diff --git a/.vs/WarmUp/v16/.suo b/.vs/WarmUp/v16/.suo new file mode 100644 index 0000000..c07d649 Binary files /dev/null and b/.vs/WarmUp/v16/.suo differ diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj new file mode 100644 index 0000000..6f3da5d --- /dev/null +++ b/Assembly-CSharp.csproj @@ -0,0 +1,663 @@ + + + + latest + + + Debug + AnyCPU + 10.0.20506 + 2.0 + + {2D3E7C9C-5949-E884-C24A-8CFB429C8A2D} + Library + Properties + Assembly-CSharp + v4.7.1 + 512 + . + + + true + full + false + Temp\bin\Debug\ + DEBUG;TRACE;UNITY_2019_4_14;UNITY_2019_4;UNITY_2019;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2019_1_OR_NEWER;UNITY_2019_2_OR_NEWER;UNITY_2019_3_OR_NEWER;UNITY_2019_4_OR_NEWER;UNITY_INCLUDE_TESTS;ENABLE_AR;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_EVENT_QUEUE;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_TEXTURE_STREAMING;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_UNITYWEBREQUEST;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;ENABLE_MANAGED_AUDIO_JOBS;INCLUDE_DYNAMIC_GI;ENABLE_MONO_BDWGC;ENABLE_SCRIPTING_GC_WBARRIERS;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_VIDEO;PLATFORM_STANDALONE;PLATFORM_STANDALONE_WIN;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;GFXDEVICE_WAITFOREVENT_MESSAGEPUMP;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_STANDARD_2_0;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_VSTU;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_DIRECTOR;ENABLE_LOCALIZATION;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_TILEMAP;ENABLE_TIMELINE;ENABLE_LEGACY_INPUT_MANAGER;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER + prompt + 4 + 0169 + False + + + pdbonly + true + Temp\bin\Release\ + prompt + 4 + 0169 + False + + + true + true + false + false + false + + + {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Unity/VSTU + Game:1 + StandaloneWindows:5 + 2019.4.14f1 + + + + + + + C:\Program Files\Unity\Hub\Editor\2019.4.14f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll + + + C:\Program Files\Unity\Hub\Editor\2019.4.14f1\Editor\Data\Managed/UnityEditor.dll + + + + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.AndroidJNIModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.DSPGraphModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputLegacyModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubsystemsModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/Managed/UnityEditor.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll + + + C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.Timeline.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.VSCode.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.2D.SpriteShape.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.2D.Path.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/UnityEngine.UI.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.Timeline.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.Rider.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.Mathematics.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.InternalAPIEngineBridge.001.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.2D.Sprite.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.2D.Common.Runtime.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.2D.SpriteShape.Runtime.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.Mathematics.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.TextMeshPro.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.2D.Common.Editor.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/Unity.InternalAPIEditorBridge.001.dll + + + C:/Users/peter/Documents/UNITY/Junction2020/WarmUpProject/WarmUp/Library/ScriptAssemblies/UnityEditor.UI.dll + + + + + + + \ No newline at end of file diff --git a/Assets/Models.meta b/Assets/Models.meta new file mode 100644 index 0000000..55ab232 --- /dev/null +++ b/Assets/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4a23ecb3c50759044872a0a1f3beb02d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Entities.meta b/Assets/Models/Entities.meta new file mode 100644 index 0000000..32cc790 --- /dev/null +++ b/Assets/Models/Entities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd212b360f4246945bfc3f3c00c277ad +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Entities/Ship.prefab b/Assets/Models/Entities/Ship.prefab new file mode 100644 index 0000000..668c1db --- /dev/null +++ b/Assets/Models/Entities/Ship.prefab @@ -0,0 +1,108 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8907911166895063140 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8907911166895063160} + - component: {fileID: 8907911166895063161} + - component: {fileID: 8907911166895063142} + - component: {fileID: 8907911166895063143} + - component: {fileID: 8907911166895063163} + m_Layer: 0 + m_Name: Ship + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8907911166895063160 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8907911166895063140} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.3410978, y: 2.0406075, z: -0.21460867} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8907911166895063161 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8907911166895063140} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8907911166895063142 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8907911166895063140} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!65 &8907911166895063143 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8907911166895063140} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &8907911166895063163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8907911166895063140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f66da1ae0490a7c4e8b891e8203598bc, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Models/Entities/Ship.prefab.meta b/Assets/Models/Entities/Ship.prefab.meta new file mode 100644 index 0000000..d3d8c81 --- /dev/null +++ b/Assets/Models/Entities/Ship.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 37404a614cf0fa54086a011cae1ab7d1 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Entities/Turret.prefab b/Assets/Models/Entities/Turret.prefab new file mode 100644 index 0000000..1ca278a --- /dev/null +++ b/Assets/Models/Entities/Turret.prefab @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6266561976849146521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7893926179847989907} + - component: {fileID: 288911498172335497} + - component: {fileID: 2301761166797747337} + m_Layer: 0 + m_Name: Turret + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7893926179847989907 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6266561976849146521} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.116814375, y: -0.77370924, z: -0.68086565} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &288911498172335497 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6266561976849146521} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 9e1e76d77f30038429a8496b5b9f173c, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.64, y: 0.64} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &2301761166797747337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6266561976849146521} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f66da1ae0490a7c4e8b891e8203598bc, type: 3} + m_Name: + m_EditorClassIdentifier: + cam: {fileID: 0} + move_speed_X: 0 + tileSize: 64 + screenBoundaryLeft: 0 + screenBoundaryRight: 0 diff --git a/Assets/Models/Entities/Turret.prefab.meta b/Assets/Models/Entities/Turret.prefab.meta new file mode 100644 index 0000000..cad6b3a --- /dev/null +++ b/Assets/Models/Entities/Turret.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 534fc51bd4992d3459de17ffb638ee78 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Sprites.meta b/Assets/Models/Sprites.meta new file mode 100644 index 0000000..86780c8 --- /dev/null +++ b/Assets/Models/Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40ab78585f288864ea55892da447f807 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Sprites/Gun.png b/Assets/Models/Sprites/Gun.png new file mode 100644 index 0000000..8eb1b1e Binary files /dev/null and b/Assets/Models/Sprites/Gun.png differ diff --git a/Assets/Models/Sprites/Gun.png.meta b/Assets/Models/Sprites/Gun.png.meta new file mode 100644 index 0000000..c5ebff7 --- /dev/null +++ b/Assets/Models/Sprites/Gun.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: f677145fb93071745a6137d218db6515 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 3 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 4 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 4 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 4 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 4 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: + - - {x: -2, y: -2} + - {x: -2, y: 2} + - {x: 2, y: 2} + - {x: 2, y: -2} + physicsShape: + - - {x: -2, y: -2} + - {x: -2, y: 2} + - {x: 2, y: 2} + - {x: 2, y: -2} + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Sprites/Textures.meta b/Assets/Models/Sprites/Textures.meta new file mode 100644 index 0000000..7f99538 --- /dev/null +++ b/Assets/Models/Sprites/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5dadf0411ab1f514f98de8bd341a94bb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Sprites/Textures/Gun.png b/Assets/Models/Sprites/Textures/Gun.png new file mode 100644 index 0000000..15acbf9 Binary files /dev/null and b/Assets/Models/Sprites/Textures/Gun.png differ diff --git a/Assets/Models/Sprites/Textures/Gun.png.meta b/Assets/Models/Sprites/Textures/Gun.png.meta new file mode 100644 index 0000000..8ee5375 --- /dev/null +++ b/Assets/Models/Sprites/Textures/Gun.png.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 9e1e76d77f30038429a8496b5b9f173c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Sprites/Textures/New Material.mat b/Assets/Models/Sprites/Textures/New Material.mat new file mode 100644 index 0000000..dabdad5 --- /dev/null +++ b/Assets/Models/Sprites/Textures/New Material.mat @@ -0,0 +1,85 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Material + m_Shader: {fileID: 10800, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: ETC1_EXTERNAL_ALPHA _ALPHATEST_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 9e1e76d77f30038429a8496b5b9f173c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - PixelSnap: 0 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnableExternalAlpha: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 1 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _Flip: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Models/Sprites/Textures/New Material.mat.meta b/Assets/Models/Sprites/Textures/New Material.mat.meta new file mode 100644 index 0000000..64894e4 --- /dev/null +++ b/Assets/Models/Sprites/Textures/New Material.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa942750741a4534d903530d370a33ba +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/Sprites/Textures/Square.png b/Assets/Models/Sprites/Textures/Square.png new file mode 100644 index 0000000..8eb1b1e Binary files /dev/null and b/Assets/Models/Sprites/Textures/Square.png differ diff --git a/Assets/Models/Sprites/Textures/Square.png.meta b/Assets/Models/Sprites/Textures/Square.png.meta new file mode 100644 index 0000000..eb3e8cf --- /dev/null +++ b/Assets/Models/Sprites/Textures/Square.png.meta @@ -0,0 +1,100 @@ +fileFormatVersion: 2 +guid: 0b9fbb76911b95d4385cdd2207f2f3c8 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 3 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 4 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 4 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: + - - {x: -2, y: -2} + - {x: -2, y: 2} + - {x: 2, y: 2} + - {x: 2, y: -2} + physicsShape: + - - {x: -2, y: -2} + - {x: -2, y: 2} + - {x: 2, y: 2} + - {x: 2, y: -2} + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes.meta b/Assets/Scenes.meta new file mode 100644 index 0000000..979d64a --- /dev/null +++ b/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97e9f70e05d8caa4998b1325373dcfa7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SpaceInvader.unity b/Assets/Scenes/SpaceInvader.unity new file mode 100644 index 0000000..ccab118 --- /dev/null +++ b/Assets/Scenes/SpaceInvader.unity @@ -0,0 +1,512 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 705507994} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &577955292 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6266561976849146521, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + m_PrefabInstance: {fileID: 4592878958339183287} + m_PrefabAsset: {fileID: 0} +--- !u!114 &577955293 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 577955292} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68a6aab529f1a764c885a7c10f718d52, type: 3} + m_Name: + m_EditorClassIdentifier: + cam: {fileID: 963194227} + input_position: {x: 0, y: 0} + player_speed: 8 + left_limit: 64 + right_limit: 800 + top_limit: 748 + bottom_limit: 64 +--- !u!1 &705507993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 705507995} + - component: {fileID: 705507994} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &705507994 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &705507995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &963194225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963194228} + - component: {fileID: 963194227} + - component: {fileID: 963194226} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &963194226 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 +--- !u!20 &963194227 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &963194228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &967745230 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 967745234} + - component: {fileID: 967745233} + - component: {fileID: 967745232} + - component: {fileID: 967745231} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!64 &967745231 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967745230} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &967745232 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967745230} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &967745233 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967745230} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &967745234 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967745230} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0.33} + m_LocalScale: {x: 10, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!1001 &4592878958339183287 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2301761166797747337, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: cam + value: + objectReference: {fileID: 963194227} + - target: {fileID: 2301761166797747337, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: move_speed_X + value: 32 + objectReference: {fileID: 0} + - target: {fileID: 6266561976849146521, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_Name + value: Turret + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalPosition.x + value: -8 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalRotation.z + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7893926179847989907, guid: 534fc51bd4992d3459de17ffb638ee78, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 2301761166797747337, guid: 534fc51bd4992d3459de17ffb638ee78, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 534fc51bd4992d3459de17ffb638ee78, type: 3} diff --git a/Assets/Scenes/SpaceInvader.unity.meta b/Assets/Scenes/SpaceInvader.unity.meta new file mode 100644 index 0000000..952bd1e --- /dev/null +++ b/Assets/Scenes/SpaceInvader.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fc0d4010bbf28b4594072e72b8655ab +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..1c6b6c4 --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9bbc95deeb9db0b4c8984b60b4b0b05a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/HelloWorld.cs b/Assets/Scripts/HelloWorld.cs new file mode 100644 index 0000000..867065e --- /dev/null +++ b/Assets/Scripts/HelloWorld.cs @@ -0,0 +1,89 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using UnityEngine; +using UnityEngine.UIElements; + +public class HelloWorld : MonoBehaviour +{ + public Camera cam; + Transform t; + + public float move_speed_X; + float vel = 0; + public int tileSize = 64; + + public float screenBoundaryLeft; + public float screenBoundaryRight; + + + void Start() + { + t = GetComponent(); + if(cam == null) + { + cam = GetComponent(); + + } + screenBoundaryRight = cam.pixelWidth; + Debug.Log("Hello Im alive !"); + } + + // Update is called once per frame + void Update() + { + + + + /// Move object left and right + + vel = 0; + + + if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) + { + + vel = -1.0f; + + } + + if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) + { + vel = 1.0f; + + } + t.position += new Vector3(vel * move_speed_X * Time.deltaTime, vel * move_speed_X * Time.deltaTime); + + ClampToScreenX(t, tileSize); + + + } + + void ClampToScreenX( Transform t, int size) + { + float currentScreenX = t.position.x; + + + Vector3 point = cam.WorldToScreenPoint(new Vector3(currentScreenX, -4, 0)); + + + // Debug.Log("Object is : " + point.x + point.y + point.z + "Pixels from the left"); + + + if(point.x < screenBoundaryLeft) + { + point.x = screenBoundaryLeft; + + } + else if (point.x > screenBoundaryRight) + { + point.x = screenBoundaryRight; + + } + + Vector3 r = cam.ScreenToWorldPoint(point); + t.position = r; + } + + +} diff --git a/Assets/Scripts/HelloWorld.cs.meta b/Assets/Scripts/HelloWorld.cs.meta new file mode 100644 index 0000000..6f95cac --- /dev/null +++ b/Assets/Scripts/HelloWorld.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f66da1ae0490a7c4e8b891e8203598bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PlayerMovement.cs b/Assets/Scripts/PlayerMovement.cs new file mode 100644 index 0000000..97d3647 --- /dev/null +++ b/Assets/Scripts/PlayerMovement.cs @@ -0,0 +1,81 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/*Junction 2020 : painless gaining */ +public class PlayerMovement : MonoBehaviour +{ + // Input for player manipulation where you plug in the external class. + public Camera cam; + public Vector2 input_position; + + public float player_speed; + + + /// Clamping Variables to keep the object on the screen. + public float left_limit; + public float right_limit; + public float top_limit; + public float bottom_limit; + // Tempory mouse input. + Vector2 mouse_position; + + + Transform player_transform; + + void Start() + { + player_transform = GetComponent(); + top_limit = cam.pixelHeight - 64; + right_limit = cam.pixelWidth - 64; + } + + // Update is called once per frame + void Update() + { + // Get Converted Screen Space position of mouse; + Vector3 point = cam.ScreenToWorldPoint( new Vector3(Input.mousePosition.x,Input.mousePosition.y,Input.mousePosition.z)); + + input_position = point; + + PlayerControl(input_position); + ClampPlayerObjectToArea(left_limit,right_limit,top_limit,bottom_limit); + } + + void PlayerControl(Vector2 input_position) + { + // Step is to control the player movement speed. + float step = player_speed * Time.deltaTime; + + // move towards moves this game object towards a target object position. + transform.position = Vector3.MoveTowards(transform.position, input_position, step); + + + /// Original move command. + // player_transform.position = new Vector3(input_position.x, input_position.y, 0.0f); + + } + + void ClampPlayerObjectToArea(float left_limit, float right_limit, float top_limit,float bottom_limit) + { + /// Get Screen space location. + Vector3 point = cam.WorldToScreenPoint(transform.position); + + + // Keep the object inside the game area. + // With the eye tracking method this can most likely be dissabled as the player wont be able to look out of the playing area. + + if (point.x < left_limit) { point = new Vector3(left_limit,point.y,point.z); } + else if (point.x > right_limit) { point = new Vector3(right_limit,point.y,point.z); } + + if (point.y > top_limit) { point = new Vector3(point.x, top_limit , point.z); } + else if (point.y < bottom_limit) { point = new Vector3(point.x, bottom_limit , point.z); } + + Vector3 r = cam.ScreenToWorldPoint(point); + transform.position = r; + + } + + + +} diff --git a/Assets/Scripts/PlayerMovement.cs.meta b/Assets/Scripts/PlayerMovement.cs.meta new file mode 100644 index 0000000..200caee --- /dev/null +++ b/Assets/Scripts/PlayerMovement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68a6aab529f1a764c885a7c10f718d52 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/APIUpdater/project-dependencies.graph b/Library/APIUpdater/project-dependencies.graph new file mode 100644 index 0000000..8620e66 Binary files /dev/null and b/Library/APIUpdater/project-dependencies.graph differ diff --git a/Library/AnnotationManager b/Library/AnnotationManager new file mode 100644 index 0000000..9b527fa Binary files /dev/null and b/Library/AnnotationManager differ diff --git a/Library/ArtifactDB b/Library/ArtifactDB new file mode 100644 index 0000000..f982855 Binary files /dev/null and b/Library/ArtifactDB differ diff --git a/Library/ArtifactDB-lock b/Library/ArtifactDB-lock new file mode 100644 index 0000000..d8ee4e4 Binary files /dev/null and b/Library/ArtifactDB-lock differ diff --git a/Library/Artifacts/00/000618361ed231485b9c023648bbbec9 b/Library/Artifacts/00/000618361ed231485b9c023648bbbec9 new file mode 100644 index 0000000..41d740e Binary files /dev/null and b/Library/Artifacts/00/000618361ed231485b9c023648bbbec9 differ diff --git a/Library/Artifacts/00/0078d7fdf4270a465e3913783f14b4d0 b/Library/Artifacts/00/0078d7fdf4270a465e3913783f14b4d0 new file mode 100644 index 0000000..691f87c Binary files /dev/null and b/Library/Artifacts/00/0078d7fdf4270a465e3913783f14b4d0 differ diff --git a/Library/Artifacts/00/00d4e2de85552144263445adcc9c7058 b/Library/Artifacts/00/00d4e2de85552144263445adcc9c7058 new file mode 100644 index 0000000..2cd4872 Binary files /dev/null and b/Library/Artifacts/00/00d4e2de85552144263445adcc9c7058 differ diff --git a/Library/Artifacts/00/00f3415eb7484a640c2c0cc13fba3f60 b/Library/Artifacts/00/00f3415eb7484a640c2c0cc13fba3f60 new file mode 100644 index 0000000..c4c5f92 Binary files /dev/null and b/Library/Artifacts/00/00f3415eb7484a640c2c0cc13fba3f60 differ diff --git a/Library/Artifacts/01/012c4e7ed80308b09d389444902dff1f b/Library/Artifacts/01/012c4e7ed80308b09d389444902dff1f new file mode 100644 index 0000000..b659762 Binary files /dev/null and b/Library/Artifacts/01/012c4e7ed80308b09d389444902dff1f differ diff --git a/Library/Artifacts/01/0161c22a92ba4ae4511bd04b1f9bf7b2 b/Library/Artifacts/01/0161c22a92ba4ae4511bd04b1f9bf7b2 new file mode 100644 index 0000000..76f25fe Binary files /dev/null and b/Library/Artifacts/01/0161c22a92ba4ae4511bd04b1f9bf7b2 differ diff --git a/Library/Artifacts/01/01688f45898e5e797689b2a89d756e5c b/Library/Artifacts/01/01688f45898e5e797689b2a89d756e5c new file mode 100644 index 0000000..a99bb31 Binary files /dev/null and b/Library/Artifacts/01/01688f45898e5e797689b2a89d756e5c differ diff --git a/Library/Artifacts/01/016a5d2ef4d0667a0404261cb1d4d369 b/Library/Artifacts/01/016a5d2ef4d0667a0404261cb1d4d369 new file mode 100644 index 0000000..ec6a16a Binary files /dev/null and b/Library/Artifacts/01/016a5d2ef4d0667a0404261cb1d4d369 differ diff --git a/Library/Artifacts/01/01805cfab3c9b67561e01de5c6661b8d b/Library/Artifacts/01/01805cfab3c9b67561e01de5c6661b8d new file mode 100644 index 0000000..f47b90c Binary files /dev/null and b/Library/Artifacts/01/01805cfab3c9b67561e01de5c6661b8d differ diff --git a/Library/Artifacts/01/019d2cb25b193f998d40db7ecd1706d2 b/Library/Artifacts/01/019d2cb25b193f998d40db7ecd1706d2 new file mode 100644 index 0000000..70f921e Binary files /dev/null and b/Library/Artifacts/01/019d2cb25b193f998d40db7ecd1706d2 differ diff --git a/Library/Artifacts/01/01dcc58705f79d74cad1410b50afefa8 b/Library/Artifacts/01/01dcc58705f79d74cad1410b50afefa8 new file mode 100644 index 0000000..4b906c2 Binary files /dev/null and b/Library/Artifacts/01/01dcc58705f79d74cad1410b50afefa8 differ diff --git a/Library/Artifacts/01/01dd65ee5c5a5d87502583def956fb93 b/Library/Artifacts/01/01dd65ee5c5a5d87502583def956fb93 new file mode 100644 index 0000000..73c2a49 Binary files /dev/null and b/Library/Artifacts/01/01dd65ee5c5a5d87502583def956fb93 differ diff --git a/Library/Artifacts/01/01de5ee350c0ece6c96020369d0470b6 b/Library/Artifacts/01/01de5ee350c0ece6c96020369d0470b6 new file mode 100644 index 0000000..5c49430 Binary files /dev/null and b/Library/Artifacts/01/01de5ee350c0ece6c96020369d0470b6 differ diff --git a/Library/Artifacts/01/01e503cea26e93691b3e6573afa101ed b/Library/Artifacts/01/01e503cea26e93691b3e6573afa101ed new file mode 100644 index 0000000..5bacd30 Binary files /dev/null and b/Library/Artifacts/01/01e503cea26e93691b3e6573afa101ed differ diff --git a/Library/Artifacts/01/01e720c451afdb7005fa8b1053362a0c b/Library/Artifacts/01/01e720c451afdb7005fa8b1053362a0c new file mode 100644 index 0000000..20a4381 Binary files /dev/null and b/Library/Artifacts/01/01e720c451afdb7005fa8b1053362a0c differ diff --git a/Library/Artifacts/02/028d4e74b778262ee634a37267838d48 b/Library/Artifacts/02/028d4e74b778262ee634a37267838d48 new file mode 100644 index 0000000..50aa936 Binary files /dev/null and b/Library/Artifacts/02/028d4e74b778262ee634a37267838d48 differ diff --git a/Library/Artifacts/02/02b4b3b7a041eb11608494a5ebcc50b2 b/Library/Artifacts/02/02b4b3b7a041eb11608494a5ebcc50b2 new file mode 100644 index 0000000..5530cfc Binary files /dev/null and b/Library/Artifacts/02/02b4b3b7a041eb11608494a5ebcc50b2 differ diff --git a/Library/Artifacts/02/02bea5befdd85a2ec0f556443632d79f b/Library/Artifacts/02/02bea5befdd85a2ec0f556443632d79f new file mode 100644 index 0000000..7ccffeb Binary files /dev/null and b/Library/Artifacts/02/02bea5befdd85a2ec0f556443632d79f differ diff --git a/Library/Artifacts/03/032fd12cd9ba6f0d95c0c083ea7bff8e b/Library/Artifacts/03/032fd12cd9ba6f0d95c0c083ea7bff8e new file mode 100644 index 0000000..74a8f0d Binary files /dev/null and b/Library/Artifacts/03/032fd12cd9ba6f0d95c0c083ea7bff8e differ diff --git a/Library/Artifacts/03/032fdb92409ca577a6f709b02f435ca6 b/Library/Artifacts/03/032fdb92409ca577a6f709b02f435ca6 new file mode 100644 index 0000000..1ac012c Binary files /dev/null and b/Library/Artifacts/03/032fdb92409ca577a6f709b02f435ca6 differ diff --git a/Library/Artifacts/03/03327a2e2403eb1b442f6734ded63d48 b/Library/Artifacts/03/03327a2e2403eb1b442f6734ded63d48 new file mode 100644 index 0000000..e7f447b Binary files /dev/null and b/Library/Artifacts/03/03327a2e2403eb1b442f6734ded63d48 differ diff --git a/Library/Artifacts/03/036190bc12e3e4d4260292248427e39a b/Library/Artifacts/03/036190bc12e3e4d4260292248427e39a new file mode 100644 index 0000000..925b8b4 Binary files /dev/null and b/Library/Artifacts/03/036190bc12e3e4d4260292248427e39a differ diff --git a/Library/Artifacts/03/0392fe6b1fd57007fda1891d16d2ce35 b/Library/Artifacts/03/0392fe6b1fd57007fda1891d16d2ce35 new file mode 100644 index 0000000..fb1015c Binary files /dev/null and b/Library/Artifacts/03/0392fe6b1fd57007fda1891d16d2ce35 differ diff --git a/Library/Artifacts/03/03b3e51ab086d784d54bd4bd2429cf62 b/Library/Artifacts/03/03b3e51ab086d784d54bd4bd2429cf62 new file mode 100644 index 0000000..0cbb040 Binary files /dev/null and b/Library/Artifacts/03/03b3e51ab086d784d54bd4bd2429cf62 differ diff --git a/Library/Artifacts/03/03e11c805267a02bb46944e7b7a9f88e b/Library/Artifacts/03/03e11c805267a02bb46944e7b7a9f88e new file mode 100644 index 0000000..298be97 Binary files /dev/null and b/Library/Artifacts/03/03e11c805267a02bb46944e7b7a9f88e differ diff --git a/Library/Artifacts/04/044a6c7395f03fcd27f8fbfbe2dab85e b/Library/Artifacts/04/044a6c7395f03fcd27f8fbfbe2dab85e new file mode 100644 index 0000000..08503df Binary files /dev/null and b/Library/Artifacts/04/044a6c7395f03fcd27f8fbfbe2dab85e differ diff --git a/Library/Artifacts/04/0457994d19af62551e46e750bf0284ec b/Library/Artifacts/04/0457994d19af62551e46e750bf0284ec new file mode 100644 index 0000000..029f51f Binary files /dev/null and b/Library/Artifacts/04/0457994d19af62551e46e750bf0284ec differ diff --git a/Library/Artifacts/04/0476bc6b2bb248e5441cbed4ebeabcbe b/Library/Artifacts/04/0476bc6b2bb248e5441cbed4ebeabcbe new file mode 100644 index 0000000..19350c4 Binary files /dev/null and b/Library/Artifacts/04/0476bc6b2bb248e5441cbed4ebeabcbe differ diff --git a/Library/Artifacts/04/04ab73de8058c9975d477f718a58857d b/Library/Artifacts/04/04ab73de8058c9975d477f718a58857d new file mode 100644 index 0000000..3728917 Binary files /dev/null and b/Library/Artifacts/04/04ab73de8058c9975d477f718a58857d differ diff --git a/Library/Artifacts/04/04f90c3d313f174b7d45d9f3c0b66713 b/Library/Artifacts/04/04f90c3d313f174b7d45d9f3c0b66713 new file mode 100644 index 0000000..9edea81 Binary files /dev/null and b/Library/Artifacts/04/04f90c3d313f174b7d45d9f3c0b66713 differ diff --git a/Library/Artifacts/05/05274241fcb221493af8228b68bbf790 b/Library/Artifacts/05/05274241fcb221493af8228b68bbf790 new file mode 100644 index 0000000..9cbc6d9 Binary files /dev/null and b/Library/Artifacts/05/05274241fcb221493af8228b68bbf790 differ diff --git a/Library/Artifacts/05/052affd0a8910f8d84a8c1254d202a17 b/Library/Artifacts/05/052affd0a8910f8d84a8c1254d202a17 new file mode 100644 index 0000000..39944ac Binary files /dev/null and b/Library/Artifacts/05/052affd0a8910f8d84a8c1254d202a17 differ diff --git a/Library/Artifacts/05/0530f828e563bfdf270137d294ccafac b/Library/Artifacts/05/0530f828e563bfdf270137d294ccafac new file mode 100644 index 0000000..3c02ff8 Binary files /dev/null and b/Library/Artifacts/05/0530f828e563bfdf270137d294ccafac differ diff --git a/Library/Artifacts/05/0543d45bea18bd1158a4b3f71dcd8a58 b/Library/Artifacts/05/0543d45bea18bd1158a4b3f71dcd8a58 new file mode 100644 index 0000000..dff54f8 Binary files /dev/null and b/Library/Artifacts/05/0543d45bea18bd1158a4b3f71dcd8a58 differ diff --git a/Library/Artifacts/05/055e70c6f791a12e38bfbd078f426a32 b/Library/Artifacts/05/055e70c6f791a12e38bfbd078f426a32 new file mode 100644 index 0000000..d1d4170 Binary files /dev/null and b/Library/Artifacts/05/055e70c6f791a12e38bfbd078f426a32 differ diff --git a/Library/Artifacts/05/05d6201cba18dce2394e66cc040b5901 b/Library/Artifacts/05/05d6201cba18dce2394e66cc040b5901 new file mode 100644 index 0000000..b20da29 Binary files /dev/null and b/Library/Artifacts/05/05d6201cba18dce2394e66cc040b5901 differ diff --git a/Library/Artifacts/05/05f60b4ff12fd541fb88fd2a1bea690b b/Library/Artifacts/05/05f60b4ff12fd541fb88fd2a1bea690b new file mode 100644 index 0000000..b23451e Binary files /dev/null and b/Library/Artifacts/05/05f60b4ff12fd541fb88fd2a1bea690b differ diff --git a/Library/Artifacts/06/060e90b45e7e66504311c0c2bce89b42 b/Library/Artifacts/06/060e90b45e7e66504311c0c2bce89b42 new file mode 100644 index 0000000..b6387e5 Binary files /dev/null and b/Library/Artifacts/06/060e90b45e7e66504311c0c2bce89b42 differ diff --git a/Library/Artifacts/06/060fbbd19f6f99211c79b3207cc640fa b/Library/Artifacts/06/060fbbd19f6f99211c79b3207cc640fa new file mode 100644 index 0000000..7c07f47 Binary files /dev/null and b/Library/Artifacts/06/060fbbd19f6f99211c79b3207cc640fa differ diff --git a/Library/Artifacts/06/0628779f8df68b100c587b3c6b1ec1d8 b/Library/Artifacts/06/0628779f8df68b100c587b3c6b1ec1d8 new file mode 100644 index 0000000..48db574 Binary files /dev/null and b/Library/Artifacts/06/0628779f8df68b100c587b3c6b1ec1d8 differ diff --git a/Library/Artifacts/06/062a2b6280602a27d6b3ddc10a1c4c4e b/Library/Artifacts/06/062a2b6280602a27d6b3ddc10a1c4c4e new file mode 100644 index 0000000..c2bea3e Binary files /dev/null and b/Library/Artifacts/06/062a2b6280602a27d6b3ddc10a1c4c4e differ diff --git a/Library/Artifacts/06/066468b772f039c2506007d2bc83d3aa b/Library/Artifacts/06/066468b772f039c2506007d2bc83d3aa new file mode 100644 index 0000000..84d2a45 Binary files /dev/null and b/Library/Artifacts/06/066468b772f039c2506007d2bc83d3aa differ diff --git a/Library/Artifacts/06/06a1c38701207418b4d6cc02f3b9fe75 b/Library/Artifacts/06/06a1c38701207418b4d6cc02f3b9fe75 new file mode 100644 index 0000000..9a7219a Binary files /dev/null and b/Library/Artifacts/06/06a1c38701207418b4d6cc02f3b9fe75 differ diff --git a/Library/Artifacts/06/06aae4c3ce5df8e567feb87440512d64 b/Library/Artifacts/06/06aae4c3ce5df8e567feb87440512d64 new file mode 100644 index 0000000..036dc44 Binary files /dev/null and b/Library/Artifacts/06/06aae4c3ce5df8e567feb87440512d64 differ diff --git a/Library/Artifacts/06/06abed7f99ad5db8317def23f062f757 b/Library/Artifacts/06/06abed7f99ad5db8317def23f062f757 new file mode 100644 index 0000000..3390dfc Binary files /dev/null and b/Library/Artifacts/06/06abed7f99ad5db8317def23f062f757 differ diff --git a/Library/Artifacts/06/06e84c0d6beeee439e285097ba9d54aa b/Library/Artifacts/06/06e84c0d6beeee439e285097ba9d54aa new file mode 100644 index 0000000..1b6dc6c Binary files /dev/null and b/Library/Artifacts/06/06e84c0d6beeee439e285097ba9d54aa differ diff --git a/Library/Artifacts/07/070709a806fc0f19b12c737f38ee5ed3 b/Library/Artifacts/07/070709a806fc0f19b12c737f38ee5ed3 new file mode 100644 index 0000000..ccfccb3 Binary files /dev/null and b/Library/Artifacts/07/070709a806fc0f19b12c737f38ee5ed3 differ diff --git a/Library/Artifacts/07/074219b9b135219d6bd524c90a169bb2 b/Library/Artifacts/07/074219b9b135219d6bd524c90a169bb2 new file mode 100644 index 0000000..0061580 Binary files /dev/null and b/Library/Artifacts/07/074219b9b135219d6bd524c90a169bb2 differ diff --git a/Library/Artifacts/07/074f38770aec8d16378515e0c49c71ba b/Library/Artifacts/07/074f38770aec8d16378515e0c49c71ba new file mode 100644 index 0000000..a663bd0 Binary files /dev/null and b/Library/Artifacts/07/074f38770aec8d16378515e0c49c71ba differ diff --git a/Library/Artifacts/07/07eee7427ee5dcd029b87bc41714cf42 b/Library/Artifacts/07/07eee7427ee5dcd029b87bc41714cf42 new file mode 100644 index 0000000..d6a6183 Binary files /dev/null and b/Library/Artifacts/07/07eee7427ee5dcd029b87bc41714cf42 differ diff --git a/Library/Artifacts/08/082d67ea255ac9b1d717994c30ee44bd b/Library/Artifacts/08/082d67ea255ac9b1d717994c30ee44bd new file mode 100644 index 0000000..d379bec Binary files /dev/null and b/Library/Artifacts/08/082d67ea255ac9b1d717994c30ee44bd differ diff --git a/Library/Artifacts/08/085341d75154d990524b1143bf843393 b/Library/Artifacts/08/085341d75154d990524b1143bf843393 new file mode 100644 index 0000000..2b7395e Binary files /dev/null and b/Library/Artifacts/08/085341d75154d990524b1143bf843393 differ diff --git a/Library/Artifacts/08/085769911e9d98d5a23d291b969626ce b/Library/Artifacts/08/085769911e9d98d5a23d291b969626ce new file mode 100644 index 0000000..f31a051 Binary files /dev/null and b/Library/Artifacts/08/085769911e9d98d5a23d291b969626ce differ diff --git a/Library/Artifacts/08/0880a58781d472df77e898f3dfd99de5 b/Library/Artifacts/08/0880a58781d472df77e898f3dfd99de5 new file mode 100644 index 0000000..55e288b Binary files /dev/null and b/Library/Artifacts/08/0880a58781d472df77e898f3dfd99de5 differ diff --git a/Library/Artifacts/08/08c9f9b57a39c1c6ee0b79c607187327 b/Library/Artifacts/08/08c9f9b57a39c1c6ee0b79c607187327 new file mode 100644 index 0000000..cc4d43e Binary files /dev/null and b/Library/Artifacts/08/08c9f9b57a39c1c6ee0b79c607187327 differ diff --git a/Library/Artifacts/08/08e351a8df6bc5e1f8aa81865a35c265 b/Library/Artifacts/08/08e351a8df6bc5e1f8aa81865a35c265 new file mode 100644 index 0000000..a3520c8 Binary files /dev/null and b/Library/Artifacts/08/08e351a8df6bc5e1f8aa81865a35c265 differ diff --git a/Library/Artifacts/09/093ad4954723f0918649b51efa8820a2 b/Library/Artifacts/09/093ad4954723f0918649b51efa8820a2 new file mode 100644 index 0000000..b648431 Binary files /dev/null and b/Library/Artifacts/09/093ad4954723f0918649b51efa8820a2 differ diff --git a/Library/Artifacts/09/0952cc918c14bc91433825713be47d46 b/Library/Artifacts/09/0952cc918c14bc91433825713be47d46 new file mode 100644 index 0000000..6e0d42c Binary files /dev/null and b/Library/Artifacts/09/0952cc918c14bc91433825713be47d46 differ diff --git a/Library/Artifacts/09/09579ecd5d934269894860666fecfb24 b/Library/Artifacts/09/09579ecd5d934269894860666fecfb24 new file mode 100644 index 0000000..a049089 Binary files /dev/null and b/Library/Artifacts/09/09579ecd5d934269894860666fecfb24 differ diff --git a/Library/Artifacts/09/09aaa85fb3c62029e6e6865d927d51a6 b/Library/Artifacts/09/09aaa85fb3c62029e6e6865d927d51a6 new file mode 100644 index 0000000..dd7c10d Binary files /dev/null and b/Library/Artifacts/09/09aaa85fb3c62029e6e6865d927d51a6 differ diff --git a/Library/Artifacts/09/09ac6172a6194d34f775821babe8fa15 b/Library/Artifacts/09/09ac6172a6194d34f775821babe8fa15 new file mode 100644 index 0000000..542588d Binary files /dev/null and b/Library/Artifacts/09/09ac6172a6194d34f775821babe8fa15 differ diff --git a/Library/Artifacts/09/09aecf9a8e918b9150e197efea1a8668 b/Library/Artifacts/09/09aecf9a8e918b9150e197efea1a8668 new file mode 100644 index 0000000..33b877f Binary files /dev/null and b/Library/Artifacts/09/09aecf9a8e918b9150e197efea1a8668 differ diff --git a/Library/Artifacts/09/09c35ff2ff484d1310c253575898275a b/Library/Artifacts/09/09c35ff2ff484d1310c253575898275a new file mode 100644 index 0000000..ef1061a Binary files /dev/null and b/Library/Artifacts/09/09c35ff2ff484d1310c253575898275a differ diff --git a/Library/Artifacts/09/09d9f1263b8808c1321b098e8739fdad b/Library/Artifacts/09/09d9f1263b8808c1321b098e8739fdad new file mode 100644 index 0000000..16da842 Binary files /dev/null and b/Library/Artifacts/09/09d9f1263b8808c1321b098e8739fdad differ diff --git a/Library/Artifacts/09/09ecb0b7a9fb941e50f63ab66a1491b9 b/Library/Artifacts/09/09ecb0b7a9fb941e50f63ab66a1491b9 new file mode 100644 index 0000000..9e932ed Binary files /dev/null and b/Library/Artifacts/09/09ecb0b7a9fb941e50f63ab66a1491b9 differ diff --git a/Library/Artifacts/09/09f010985b56c289c94987cb59c88913 b/Library/Artifacts/09/09f010985b56c289c94987cb59c88913 new file mode 100644 index 0000000..245716f Binary files /dev/null and b/Library/Artifacts/09/09f010985b56c289c94987cb59c88913 differ diff --git a/Library/Artifacts/0a/0a120f6a1e1a1bf8c72d4fcf455f88ca b/Library/Artifacts/0a/0a120f6a1e1a1bf8c72d4fcf455f88ca new file mode 100644 index 0000000..d40db9e Binary files /dev/null and b/Library/Artifacts/0a/0a120f6a1e1a1bf8c72d4fcf455f88ca differ diff --git a/Library/Artifacts/0a/0a4008662673d0fca5477eeeed4f7cd1 b/Library/Artifacts/0a/0a4008662673d0fca5477eeeed4f7cd1 new file mode 100644 index 0000000..c976764 Binary files /dev/null and b/Library/Artifacts/0a/0a4008662673d0fca5477eeeed4f7cd1 differ diff --git a/Library/Artifacts/0a/0a5da8c78dd73db6378069f237a855e5 b/Library/Artifacts/0a/0a5da8c78dd73db6378069f237a855e5 new file mode 100644 index 0000000..4caf1f3 Binary files /dev/null and b/Library/Artifacts/0a/0a5da8c78dd73db6378069f237a855e5 differ diff --git a/Library/Artifacts/0a/0a6b299a2c61468fa94b16e9b6c885b4 b/Library/Artifacts/0a/0a6b299a2c61468fa94b16e9b6c885b4 new file mode 100644 index 0000000..2aea3eb Binary files /dev/null and b/Library/Artifacts/0a/0a6b299a2c61468fa94b16e9b6c885b4 differ diff --git a/Library/Artifacts/0a/0a77a44e8c8d9f1d064832e2ad46143f b/Library/Artifacts/0a/0a77a44e8c8d9f1d064832e2ad46143f new file mode 100644 index 0000000..792cdd8 Binary files /dev/null and b/Library/Artifacts/0a/0a77a44e8c8d9f1d064832e2ad46143f differ diff --git a/Library/Artifacts/0a/0adb1e9e7a6ae94c2ce10184a211703a b/Library/Artifacts/0a/0adb1e9e7a6ae94c2ce10184a211703a new file mode 100644 index 0000000..022b193 Binary files /dev/null and b/Library/Artifacts/0a/0adb1e9e7a6ae94c2ce10184a211703a differ diff --git a/Library/Artifacts/0a/0aec2fbf0317fb0d05fb9a59169bd683 b/Library/Artifacts/0a/0aec2fbf0317fb0d05fb9a59169bd683 new file mode 100644 index 0000000..d1ad929 Binary files /dev/null and b/Library/Artifacts/0a/0aec2fbf0317fb0d05fb9a59169bd683 differ diff --git a/Library/Artifacts/0b/0b1ed2f2893b9afe104a25bac3d1825f b/Library/Artifacts/0b/0b1ed2f2893b9afe104a25bac3d1825f new file mode 100644 index 0000000..602b25b Binary files /dev/null and b/Library/Artifacts/0b/0b1ed2f2893b9afe104a25bac3d1825f differ diff --git a/Library/Artifacts/0b/0b1f94df785af91c72a77b6603fadd1d b/Library/Artifacts/0b/0b1f94df785af91c72a77b6603fadd1d new file mode 100644 index 0000000..d7e693b Binary files /dev/null and b/Library/Artifacts/0b/0b1f94df785af91c72a77b6603fadd1d differ diff --git a/Library/Artifacts/0b/0bc48ea96e5ee67d93882a4b2dd3f5b7 b/Library/Artifacts/0b/0bc48ea96e5ee67d93882a4b2dd3f5b7 new file mode 100644 index 0000000..66e8b44 Binary files /dev/null and b/Library/Artifacts/0b/0bc48ea96e5ee67d93882a4b2dd3f5b7 differ diff --git a/Library/Artifacts/0b/0be92d151b96516c0815fdfab53aa0cc b/Library/Artifacts/0b/0be92d151b96516c0815fdfab53aa0cc new file mode 100644 index 0000000..0b64ef8 Binary files /dev/null and b/Library/Artifacts/0b/0be92d151b96516c0815fdfab53aa0cc differ diff --git a/Library/Artifacts/0b/0beba6ddace43d28e0dd69d2c3d6fccd b/Library/Artifacts/0b/0beba6ddace43d28e0dd69d2c3d6fccd new file mode 100644 index 0000000..a12d85b Binary files /dev/null and b/Library/Artifacts/0b/0beba6ddace43d28e0dd69d2c3d6fccd differ diff --git a/Library/Artifacts/0c/0c18da3f6894294161571478b9bdee28 b/Library/Artifacts/0c/0c18da3f6894294161571478b9bdee28 new file mode 100644 index 0000000..327df29 Binary files /dev/null and b/Library/Artifacts/0c/0c18da3f6894294161571478b9bdee28 differ diff --git a/Library/Artifacts/0c/0c23735e55261eef5e2478dd39661c32 b/Library/Artifacts/0c/0c23735e55261eef5e2478dd39661c32 new file mode 100644 index 0000000..dc035a8 Binary files /dev/null and b/Library/Artifacts/0c/0c23735e55261eef5e2478dd39661c32 differ diff --git a/Library/Artifacts/0c/0c36605bc7dd8d0290a5cab0bf2d54c5 b/Library/Artifacts/0c/0c36605bc7dd8d0290a5cab0bf2d54c5 new file mode 100644 index 0000000..20e1401 Binary files /dev/null and b/Library/Artifacts/0c/0c36605bc7dd8d0290a5cab0bf2d54c5 differ diff --git a/Library/Artifacts/0c/0c3790321747d9667ea481719b04466b b/Library/Artifacts/0c/0c3790321747d9667ea481719b04466b new file mode 100644 index 0000000..c3794b8 Binary files /dev/null and b/Library/Artifacts/0c/0c3790321747d9667ea481719b04466b differ diff --git a/Library/Artifacts/0c/0c8b483868e2f49dbba02168d36e6b08 b/Library/Artifacts/0c/0c8b483868e2f49dbba02168d36e6b08 new file mode 100644 index 0000000..c4b0b33 Binary files /dev/null and b/Library/Artifacts/0c/0c8b483868e2f49dbba02168d36e6b08 differ diff --git a/Library/Artifacts/0c/0c93f18b8e5f9005f21ceae19588d158 b/Library/Artifacts/0c/0c93f18b8e5f9005f21ceae19588d158 new file mode 100644 index 0000000..019e876 Binary files /dev/null and b/Library/Artifacts/0c/0c93f18b8e5f9005f21ceae19588d158 differ diff --git a/Library/Artifacts/0c/0c9920fee8d98576589e83ed28e8bef5 b/Library/Artifacts/0c/0c9920fee8d98576589e83ed28e8bef5 new file mode 100644 index 0000000..e363734 Binary files /dev/null and b/Library/Artifacts/0c/0c9920fee8d98576589e83ed28e8bef5 differ diff --git a/Library/Artifacts/0c/0cbcd8193314b7aa966193213ff5481c b/Library/Artifacts/0c/0cbcd8193314b7aa966193213ff5481c new file mode 100644 index 0000000..28675e9 Binary files /dev/null and b/Library/Artifacts/0c/0cbcd8193314b7aa966193213ff5481c differ diff --git a/Library/Artifacts/0c/0cd344832470a947fd77aef332330738 b/Library/Artifacts/0c/0cd344832470a947fd77aef332330738 new file mode 100644 index 0000000..d67a926 Binary files /dev/null and b/Library/Artifacts/0c/0cd344832470a947fd77aef332330738 differ diff --git a/Library/Artifacts/0c/0cd632dc0666457f8e12618101576de3 b/Library/Artifacts/0c/0cd632dc0666457f8e12618101576de3 new file mode 100644 index 0000000..685ecff Binary files /dev/null and b/Library/Artifacts/0c/0cd632dc0666457f8e12618101576de3 differ diff --git a/Library/Artifacts/0d/0d3221a99f4f2104492fe5f18ef1d03e b/Library/Artifacts/0d/0d3221a99f4f2104492fe5f18ef1d03e new file mode 100644 index 0000000..26fe543 Binary files /dev/null and b/Library/Artifacts/0d/0d3221a99f4f2104492fe5f18ef1d03e differ diff --git a/Library/Artifacts/0d/0d4da753f08894e99f63a09c22b9faee b/Library/Artifacts/0d/0d4da753f08894e99f63a09c22b9faee new file mode 100644 index 0000000..757fdc6 Binary files /dev/null and b/Library/Artifacts/0d/0d4da753f08894e99f63a09c22b9faee differ diff --git a/Library/Artifacts/0d/0d793f518918b5b7a255ac7b97441563 b/Library/Artifacts/0d/0d793f518918b5b7a255ac7b97441563 new file mode 100644 index 0000000..f1c44ac Binary files /dev/null and b/Library/Artifacts/0d/0d793f518918b5b7a255ac7b97441563 differ diff --git a/Library/Artifacts/0d/0d7b7d099d82456f43844ae9eaa78e62 b/Library/Artifacts/0d/0d7b7d099d82456f43844ae9eaa78e62 new file mode 100644 index 0000000..3f93384 Binary files /dev/null and b/Library/Artifacts/0d/0d7b7d099d82456f43844ae9eaa78e62 differ diff --git a/Library/Artifacts/0d/0d8f63f7d53b1e43e87e45f09c1c52fa b/Library/Artifacts/0d/0d8f63f7d53b1e43e87e45f09c1c52fa new file mode 100644 index 0000000..3d23213 Binary files /dev/null and b/Library/Artifacts/0d/0d8f63f7d53b1e43e87e45f09c1c52fa differ diff --git a/Library/Artifacts/0d/0de61355159f594a8f3ab14ad65c4146 b/Library/Artifacts/0d/0de61355159f594a8f3ab14ad65c4146 new file mode 100644 index 0000000..5d5f867 Binary files /dev/null and b/Library/Artifacts/0d/0de61355159f594a8f3ab14ad65c4146 differ diff --git a/Library/Artifacts/0d/0dfa70951dcfc0b808b25d486c1b5a75 b/Library/Artifacts/0d/0dfa70951dcfc0b808b25d486c1b5a75 new file mode 100644 index 0000000..58f2208 Binary files /dev/null and b/Library/Artifacts/0d/0dfa70951dcfc0b808b25d486c1b5a75 differ diff --git a/Library/Artifacts/0e/0e0266121706e3eda59c0c561e249ede b/Library/Artifacts/0e/0e0266121706e3eda59c0c561e249ede new file mode 100644 index 0000000..f03cd16 Binary files /dev/null and b/Library/Artifacts/0e/0e0266121706e3eda59c0c561e249ede differ diff --git a/Library/Artifacts/0e/0e0803c9aa77b50e3153f36142238712 b/Library/Artifacts/0e/0e0803c9aa77b50e3153f36142238712 new file mode 100644 index 0000000..c7dfdd5 Binary files /dev/null and b/Library/Artifacts/0e/0e0803c9aa77b50e3153f36142238712 differ diff --git a/Library/Artifacts/0e/0e12a933955bc5f462bc27cf80a5eac6 b/Library/Artifacts/0e/0e12a933955bc5f462bc27cf80a5eac6 new file mode 100644 index 0000000..71a14a9 Binary files /dev/null and b/Library/Artifacts/0e/0e12a933955bc5f462bc27cf80a5eac6 differ diff --git a/Library/Artifacts/0e/0e71c4eb79eac188fbc8feaace70c239 b/Library/Artifacts/0e/0e71c4eb79eac188fbc8feaace70c239 new file mode 100644 index 0000000..98bf432 Binary files /dev/null and b/Library/Artifacts/0e/0e71c4eb79eac188fbc8feaace70c239 differ diff --git a/Library/Artifacts/0e/0eab51b4a1f543b45fdae839f8d02ef7 b/Library/Artifacts/0e/0eab51b4a1f543b45fdae839f8d02ef7 new file mode 100644 index 0000000..5c42cad Binary files /dev/null and b/Library/Artifacts/0e/0eab51b4a1f543b45fdae839f8d02ef7 differ diff --git a/Library/Artifacts/0e/0eb1ac1b92cbf916910a1e12d9e8427b b/Library/Artifacts/0e/0eb1ac1b92cbf916910a1e12d9e8427b new file mode 100644 index 0000000..041a18b Binary files /dev/null and b/Library/Artifacts/0e/0eb1ac1b92cbf916910a1e12d9e8427b differ diff --git a/Library/Artifacts/0e/0ec0064e653800f08b379f28fe1c2d94 b/Library/Artifacts/0e/0ec0064e653800f08b379f28fe1c2d94 new file mode 100644 index 0000000..49a3901 Binary files /dev/null and b/Library/Artifacts/0e/0ec0064e653800f08b379f28fe1c2d94 differ diff --git a/Library/Artifacts/0e/0ed1ecbba4d23c4c7acebba7d84de09e b/Library/Artifacts/0e/0ed1ecbba4d23c4c7acebba7d84de09e new file mode 100644 index 0000000..8406c88 Binary files /dev/null and b/Library/Artifacts/0e/0ed1ecbba4d23c4c7acebba7d84de09e differ diff --git a/Library/Artifacts/0f/0f49f43ab387c3c64619f2d28e81df11 b/Library/Artifacts/0f/0f49f43ab387c3c64619f2d28e81df11 new file mode 100644 index 0000000..9616928 Binary files /dev/null and b/Library/Artifacts/0f/0f49f43ab387c3c64619f2d28e81df11 differ diff --git a/Library/Artifacts/0f/0f6be2ff12562b2bbb21f3c9dc7a0e5a b/Library/Artifacts/0f/0f6be2ff12562b2bbb21f3c9dc7a0e5a new file mode 100644 index 0000000..29d3d03 Binary files /dev/null and b/Library/Artifacts/0f/0f6be2ff12562b2bbb21f3c9dc7a0e5a differ diff --git a/Library/Artifacts/0f/0f8d1f21f0d71d766c0e17a4cd16ed8e b/Library/Artifacts/0f/0f8d1f21f0d71d766c0e17a4cd16ed8e new file mode 100644 index 0000000..a3bf852 Binary files /dev/null and b/Library/Artifacts/0f/0f8d1f21f0d71d766c0e17a4cd16ed8e differ diff --git a/Library/Artifacts/0f/0f91783f6a0131c0527a892bf77f672e b/Library/Artifacts/0f/0f91783f6a0131c0527a892bf77f672e new file mode 100644 index 0000000..0a07fb7 Binary files /dev/null and b/Library/Artifacts/0f/0f91783f6a0131c0527a892bf77f672e differ diff --git a/Library/Artifacts/0f/0fe001385d66a578906ffc707cd656fd b/Library/Artifacts/0f/0fe001385d66a578906ffc707cd656fd new file mode 100644 index 0000000..dd7711d Binary files /dev/null and b/Library/Artifacts/0f/0fe001385d66a578906ffc707cd656fd differ diff --git a/Library/Artifacts/0f/0fe181782bf559034435dd2de79c5acc b/Library/Artifacts/0f/0fe181782bf559034435dd2de79c5acc new file mode 100644 index 0000000..33ea909 Binary files /dev/null and b/Library/Artifacts/0f/0fe181782bf559034435dd2de79c5acc differ diff --git a/Library/Artifacts/10/1000c9b5381e2945fe7bb41db04ac2d9 b/Library/Artifacts/10/1000c9b5381e2945fe7bb41db04ac2d9 new file mode 100644 index 0000000..d7028be Binary files /dev/null and b/Library/Artifacts/10/1000c9b5381e2945fe7bb41db04ac2d9 differ diff --git a/Library/Artifacts/10/102bd201e4616a57707ba67aed9aea14 b/Library/Artifacts/10/102bd201e4616a57707ba67aed9aea14 new file mode 100644 index 0000000..af1eb5d Binary files /dev/null and b/Library/Artifacts/10/102bd201e4616a57707ba67aed9aea14 differ diff --git a/Library/Artifacts/10/105da26cf09a89206b7417942dff82e9 b/Library/Artifacts/10/105da26cf09a89206b7417942dff82e9 new file mode 100644 index 0000000..3dae815 Binary files /dev/null and b/Library/Artifacts/10/105da26cf09a89206b7417942dff82e9 differ diff --git a/Library/Artifacts/10/106e9c6f933371d1366d8d9dc3fc5505 b/Library/Artifacts/10/106e9c6f933371d1366d8d9dc3fc5505 new file mode 100644 index 0000000..a5d30fb Binary files /dev/null and b/Library/Artifacts/10/106e9c6f933371d1366d8d9dc3fc5505 differ diff --git a/Library/Artifacts/10/1089f7e76e8185ae92831ba183acab1b b/Library/Artifacts/10/1089f7e76e8185ae92831ba183acab1b new file mode 100644 index 0000000..719064b Binary files /dev/null and b/Library/Artifacts/10/1089f7e76e8185ae92831ba183acab1b differ diff --git a/Library/Artifacts/10/10a34f4ca4087e4eb81fc26f6add8e43 b/Library/Artifacts/10/10a34f4ca4087e4eb81fc26f6add8e43 new file mode 100644 index 0000000..315670a Binary files /dev/null and b/Library/Artifacts/10/10a34f4ca4087e4eb81fc26f6add8e43 differ diff --git a/Library/Artifacts/10/10ea7872d6a8914cd435e97b7c7f3d65 b/Library/Artifacts/10/10ea7872d6a8914cd435e97b7c7f3d65 new file mode 100644 index 0000000..ff078b6 Binary files /dev/null and b/Library/Artifacts/10/10ea7872d6a8914cd435e97b7c7f3d65 differ diff --git a/Library/Artifacts/10/10f013787a61ae9f076a658ea7f6c9da b/Library/Artifacts/10/10f013787a61ae9f076a658ea7f6c9da new file mode 100644 index 0000000..ed2a80a Binary files /dev/null and b/Library/Artifacts/10/10f013787a61ae9f076a658ea7f6c9da differ diff --git a/Library/Artifacts/11/1111556cff22c7a776225885bfff909a b/Library/Artifacts/11/1111556cff22c7a776225885bfff909a new file mode 100644 index 0000000..ddc5f7e Binary files /dev/null and b/Library/Artifacts/11/1111556cff22c7a776225885bfff909a differ diff --git a/Library/Artifacts/11/1131acb535f5ad9cc7c9f2282a16ef39 b/Library/Artifacts/11/1131acb535f5ad9cc7c9f2282a16ef39 new file mode 100644 index 0000000..77c6a8a Binary files /dev/null and b/Library/Artifacts/11/1131acb535f5ad9cc7c9f2282a16ef39 differ diff --git a/Library/Artifacts/11/115deb910c09a8ac776fa9be75f3d1ec b/Library/Artifacts/11/115deb910c09a8ac776fa9be75f3d1ec new file mode 100644 index 0000000..349928d Binary files /dev/null and b/Library/Artifacts/11/115deb910c09a8ac776fa9be75f3d1ec differ diff --git a/Library/Artifacts/11/11680dd59e77f8cae72cd3db7f987a8d b/Library/Artifacts/11/11680dd59e77f8cae72cd3db7f987a8d new file mode 100644 index 0000000..3960807 Binary files /dev/null and b/Library/Artifacts/11/11680dd59e77f8cae72cd3db7f987a8d differ diff --git a/Library/Artifacts/11/117f4704fe4e5787598ca12cc61b0688 b/Library/Artifacts/11/117f4704fe4e5787598ca12cc61b0688 new file mode 100644 index 0000000..0499182 Binary files /dev/null and b/Library/Artifacts/11/117f4704fe4e5787598ca12cc61b0688 differ diff --git a/Library/Artifacts/11/11893022c46645582cd6743e65cbae72 b/Library/Artifacts/11/11893022c46645582cd6743e65cbae72 new file mode 100644 index 0000000..6d9b313 Binary files /dev/null and b/Library/Artifacts/11/11893022c46645582cd6743e65cbae72 differ diff --git a/Library/Artifacts/11/11a0ef26332b34499286733eb3b36cdf b/Library/Artifacts/11/11a0ef26332b34499286733eb3b36cdf new file mode 100644 index 0000000..864450e Binary files /dev/null and b/Library/Artifacts/11/11a0ef26332b34499286733eb3b36cdf differ diff --git a/Library/Artifacts/11/11b9091391c6706368593d9c9254f894 b/Library/Artifacts/11/11b9091391c6706368593d9c9254f894 new file mode 100644 index 0000000..2ae018e Binary files /dev/null and b/Library/Artifacts/11/11b9091391c6706368593d9c9254f894 differ diff --git a/Library/Artifacts/11/11bd53872d7f058073b313f9372a494c b/Library/Artifacts/11/11bd53872d7f058073b313f9372a494c new file mode 100644 index 0000000..5bd3a10 Binary files /dev/null and b/Library/Artifacts/11/11bd53872d7f058073b313f9372a494c differ diff --git a/Library/Artifacts/11/11d3d6fd1361a720e55f72e0cbb98aab b/Library/Artifacts/11/11d3d6fd1361a720e55f72e0cbb98aab new file mode 100644 index 0000000..8c7202d Binary files /dev/null and b/Library/Artifacts/11/11d3d6fd1361a720e55f72e0cbb98aab differ diff --git a/Library/Artifacts/11/11de03bd6a8754dc48faecfa83e0a11f b/Library/Artifacts/11/11de03bd6a8754dc48faecfa83e0a11f new file mode 100644 index 0000000..351d439 Binary files /dev/null and b/Library/Artifacts/11/11de03bd6a8754dc48faecfa83e0a11f differ diff --git a/Library/Artifacts/11/11f1ba345fa852f3f8e7d522d0997858 b/Library/Artifacts/11/11f1ba345fa852f3f8e7d522d0997858 new file mode 100644 index 0000000..9f0462a Binary files /dev/null and b/Library/Artifacts/11/11f1ba345fa852f3f8e7d522d0997858 differ diff --git a/Library/Artifacts/11/11f2383d4fc11de608216d5648f1b093 b/Library/Artifacts/11/11f2383d4fc11de608216d5648f1b093 new file mode 100644 index 0000000..990c177 Binary files /dev/null and b/Library/Artifacts/11/11f2383d4fc11de608216d5648f1b093 differ diff --git a/Library/Artifacts/12/124c242c2bcb74baa727bbf9e9d0aa65 b/Library/Artifacts/12/124c242c2bcb74baa727bbf9e9d0aa65 new file mode 100644 index 0000000..ea35ad0 Binary files /dev/null and b/Library/Artifacts/12/124c242c2bcb74baa727bbf9e9d0aa65 differ diff --git a/Library/Artifacts/12/1266a114bc881bf75a43dac1299dfb4a b/Library/Artifacts/12/1266a114bc881bf75a43dac1299dfb4a new file mode 100644 index 0000000..7a8606d Binary files /dev/null and b/Library/Artifacts/12/1266a114bc881bf75a43dac1299dfb4a differ diff --git a/Library/Artifacts/12/126ddcd6556907cd188b55d594912bc2 b/Library/Artifacts/12/126ddcd6556907cd188b55d594912bc2 new file mode 100644 index 0000000..424bc0b Binary files /dev/null and b/Library/Artifacts/12/126ddcd6556907cd188b55d594912bc2 differ diff --git a/Library/Artifacts/12/12869c9c63792eab066fcc016b52e0fa b/Library/Artifacts/12/12869c9c63792eab066fcc016b52e0fa new file mode 100644 index 0000000..59d73b7 Binary files /dev/null and b/Library/Artifacts/12/12869c9c63792eab066fcc016b52e0fa differ diff --git a/Library/Artifacts/12/1293f0b6932890ccfc82443968f8c574 b/Library/Artifacts/12/1293f0b6932890ccfc82443968f8c574 new file mode 100644 index 0000000..a633253 Binary files /dev/null and b/Library/Artifacts/12/1293f0b6932890ccfc82443968f8c574 differ diff --git a/Library/Artifacts/12/12a8a50c6788640ace5be38f12b54b4c b/Library/Artifacts/12/12a8a50c6788640ace5be38f12b54b4c new file mode 100644 index 0000000..94de08d Binary files /dev/null and b/Library/Artifacts/12/12a8a50c6788640ace5be38f12b54b4c differ diff --git a/Library/Artifacts/12/12aec50e2031c203da562f36fe9d26c2 b/Library/Artifacts/12/12aec50e2031c203da562f36fe9d26c2 new file mode 100644 index 0000000..bd1adc3 Binary files /dev/null and b/Library/Artifacts/12/12aec50e2031c203da562f36fe9d26c2 differ diff --git a/Library/Artifacts/12/12c0fdbeceb762de9bed3d5e72180428 b/Library/Artifacts/12/12c0fdbeceb762de9bed3d5e72180428 new file mode 100644 index 0000000..5e9ab34 Binary files /dev/null and b/Library/Artifacts/12/12c0fdbeceb762de9bed3d5e72180428 differ diff --git a/Library/Artifacts/12/12c2fa6f8c13e560e916e5e83b6da2b6 b/Library/Artifacts/12/12c2fa6f8c13e560e916e5e83b6da2b6 new file mode 100644 index 0000000..5f6978e Binary files /dev/null and b/Library/Artifacts/12/12c2fa6f8c13e560e916e5e83b6da2b6 differ diff --git a/Library/Artifacts/12/12da46848f693f6e61d3e1fae49487ba b/Library/Artifacts/12/12da46848f693f6e61d3e1fae49487ba new file mode 100644 index 0000000..c38b55e Binary files /dev/null and b/Library/Artifacts/12/12da46848f693f6e61d3e1fae49487ba differ diff --git a/Library/Artifacts/12/12deaec3ff08ca2344e6ef92c4cabdae b/Library/Artifacts/12/12deaec3ff08ca2344e6ef92c4cabdae new file mode 100644 index 0000000..4444ab3 Binary files /dev/null and b/Library/Artifacts/12/12deaec3ff08ca2344e6ef92c4cabdae differ diff --git a/Library/Artifacts/12/12eb586c0b30f25a80fab755ba508bad b/Library/Artifacts/12/12eb586c0b30f25a80fab755ba508bad new file mode 100644 index 0000000..f671105 Binary files /dev/null and b/Library/Artifacts/12/12eb586c0b30f25a80fab755ba508bad differ diff --git a/Library/Artifacts/12/12eb9593a77a967317b110cba9d674a0 b/Library/Artifacts/12/12eb9593a77a967317b110cba9d674a0 new file mode 100644 index 0000000..be0dff9 Binary files /dev/null and b/Library/Artifacts/12/12eb9593a77a967317b110cba9d674a0 differ diff --git a/Library/Artifacts/12/12faa9d8fd0661987ffc3a7e49d1b21c b/Library/Artifacts/12/12faa9d8fd0661987ffc3a7e49d1b21c new file mode 100644 index 0000000..335054c Binary files /dev/null and b/Library/Artifacts/12/12faa9d8fd0661987ffc3a7e49d1b21c differ diff --git a/Library/Artifacts/13/131b21d56a14f12ab046c3cc35f90c66 b/Library/Artifacts/13/131b21d56a14f12ab046c3cc35f90c66 new file mode 100644 index 0000000..b3c1571 Binary files /dev/null and b/Library/Artifacts/13/131b21d56a14f12ab046c3cc35f90c66 differ diff --git a/Library/Artifacts/13/133b83711a792597a918bc03baabba7d b/Library/Artifacts/13/133b83711a792597a918bc03baabba7d new file mode 100644 index 0000000..eef4c61 Binary files /dev/null and b/Library/Artifacts/13/133b83711a792597a918bc03baabba7d differ diff --git a/Library/Artifacts/13/1361355729cb70e8332a6cd97cf45ace b/Library/Artifacts/13/1361355729cb70e8332a6cd97cf45ace new file mode 100644 index 0000000..1731675 Binary files /dev/null and b/Library/Artifacts/13/1361355729cb70e8332a6cd97cf45ace differ diff --git a/Library/Artifacts/13/136d8321597bbe6775dccdf6b17baeef b/Library/Artifacts/13/136d8321597bbe6775dccdf6b17baeef new file mode 100644 index 0000000..2cb2e96 Binary files /dev/null and b/Library/Artifacts/13/136d8321597bbe6775dccdf6b17baeef differ diff --git a/Library/Artifacts/13/137f90fa3230060c9a612e3b67bbb27a b/Library/Artifacts/13/137f90fa3230060c9a612e3b67bbb27a new file mode 100644 index 0000000..e494f41 Binary files /dev/null and b/Library/Artifacts/13/137f90fa3230060c9a612e3b67bbb27a differ diff --git a/Library/Artifacts/13/138310ffa636ab3550535dd2a66502f6 b/Library/Artifacts/13/138310ffa636ab3550535dd2a66502f6 new file mode 100644 index 0000000..ad8b473 Binary files /dev/null and b/Library/Artifacts/13/138310ffa636ab3550535dd2a66502f6 differ diff --git a/Library/Artifacts/13/13926197772d64b62323310efa5e9b50 b/Library/Artifacts/13/13926197772d64b62323310efa5e9b50 new file mode 100644 index 0000000..83f2484 Binary files /dev/null and b/Library/Artifacts/13/13926197772d64b62323310efa5e9b50 differ diff --git a/Library/Artifacts/13/13bc9067645b863f59695a190ff416f5 b/Library/Artifacts/13/13bc9067645b863f59695a190ff416f5 new file mode 100644 index 0000000..3f635b4 Binary files /dev/null and b/Library/Artifacts/13/13bc9067645b863f59695a190ff416f5 differ diff --git a/Library/Artifacts/14/1410b241deff05ffd3dcd7810ab4eb82 b/Library/Artifacts/14/1410b241deff05ffd3dcd7810ab4eb82 new file mode 100644 index 0000000..2541cba Binary files /dev/null and b/Library/Artifacts/14/1410b241deff05ffd3dcd7810ab4eb82 differ diff --git a/Library/Artifacts/14/143fdbab6a2425e765122fe183374bf9 b/Library/Artifacts/14/143fdbab6a2425e765122fe183374bf9 new file mode 100644 index 0000000..a38c9b9 Binary files /dev/null and b/Library/Artifacts/14/143fdbab6a2425e765122fe183374bf9 differ diff --git a/Library/Artifacts/14/144da8be91cf290d53545f27f0965bda b/Library/Artifacts/14/144da8be91cf290d53545f27f0965bda new file mode 100644 index 0000000..8d7b06b Binary files /dev/null and b/Library/Artifacts/14/144da8be91cf290d53545f27f0965bda differ diff --git a/Library/Artifacts/14/1450901e7b4f2efd3b61ace9c68547c9 b/Library/Artifacts/14/1450901e7b4f2efd3b61ace9c68547c9 new file mode 100644 index 0000000..a68fcb8 Binary files /dev/null and b/Library/Artifacts/14/1450901e7b4f2efd3b61ace9c68547c9 differ diff --git a/Library/Artifacts/14/14aa1422e16b3de5d141a563020151e6 b/Library/Artifacts/14/14aa1422e16b3de5d141a563020151e6 new file mode 100644 index 0000000..c996988 Binary files /dev/null and b/Library/Artifacts/14/14aa1422e16b3de5d141a563020151e6 differ diff --git a/Library/Artifacts/14/14ad944bb836e2c60d524d2e7e566915 b/Library/Artifacts/14/14ad944bb836e2c60d524d2e7e566915 new file mode 100644 index 0000000..5d85913 Binary files /dev/null and b/Library/Artifacts/14/14ad944bb836e2c60d524d2e7e566915 differ diff --git a/Library/Artifacts/14/14c3ab8c980a1673ae5a73984f7ff7c0 b/Library/Artifacts/14/14c3ab8c980a1673ae5a73984f7ff7c0 new file mode 100644 index 0000000..da35bff Binary files /dev/null and b/Library/Artifacts/14/14c3ab8c980a1673ae5a73984f7ff7c0 differ diff --git a/Library/Artifacts/14/14dffbbef7b27c0233c81c9beba8158b b/Library/Artifacts/14/14dffbbef7b27c0233c81c9beba8158b new file mode 100644 index 0000000..596fa27 Binary files /dev/null and b/Library/Artifacts/14/14dffbbef7b27c0233c81c9beba8158b differ diff --git a/Library/Artifacts/15/1537e7b3a51eda78c69285fbf37e2e2f b/Library/Artifacts/15/1537e7b3a51eda78c69285fbf37e2e2f new file mode 100644 index 0000000..60016ae Binary files /dev/null and b/Library/Artifacts/15/1537e7b3a51eda78c69285fbf37e2e2f differ diff --git a/Library/Artifacts/15/15a0644f37ec48f323d286716b661f23 b/Library/Artifacts/15/15a0644f37ec48f323d286716b661f23 new file mode 100644 index 0000000..ed56465 Binary files /dev/null and b/Library/Artifacts/15/15a0644f37ec48f323d286716b661f23 differ diff --git a/Library/Artifacts/15/15a8e26fd8105a75c508cde4aa040141 b/Library/Artifacts/15/15a8e26fd8105a75c508cde4aa040141 new file mode 100644 index 0000000..0d69df5 Binary files /dev/null and b/Library/Artifacts/15/15a8e26fd8105a75c508cde4aa040141 differ diff --git a/Library/Artifacts/15/15aac4be25782abf5997b469733299f2 b/Library/Artifacts/15/15aac4be25782abf5997b469733299f2 new file mode 100644 index 0000000..fb2e067 Binary files /dev/null and b/Library/Artifacts/15/15aac4be25782abf5997b469733299f2 differ diff --git a/Library/Artifacts/15/15b12090985e0e7a18ac9dece379b247 b/Library/Artifacts/15/15b12090985e0e7a18ac9dece379b247 new file mode 100644 index 0000000..2f4bc36 Binary files /dev/null and b/Library/Artifacts/15/15b12090985e0e7a18ac9dece379b247 differ diff --git a/Library/Artifacts/15/15c04d574db1027ba8252478cbdfdef1 b/Library/Artifacts/15/15c04d574db1027ba8252478cbdfdef1 new file mode 100644 index 0000000..1c5aafc Binary files /dev/null and b/Library/Artifacts/15/15c04d574db1027ba8252478cbdfdef1 differ diff --git a/Library/Artifacts/16/1623817a4664c9ef66083add009f3a1a b/Library/Artifacts/16/1623817a4664c9ef66083add009f3a1a new file mode 100644 index 0000000..af2d9b6 Binary files /dev/null and b/Library/Artifacts/16/1623817a4664c9ef66083add009f3a1a differ diff --git a/Library/Artifacts/16/162b79eb6d1b5db88ce188c01bbfbb2b b/Library/Artifacts/16/162b79eb6d1b5db88ce188c01bbfbb2b new file mode 100644 index 0000000..0380384 Binary files /dev/null and b/Library/Artifacts/16/162b79eb6d1b5db88ce188c01bbfbb2b differ diff --git a/Library/Artifacts/16/16799c5ee3dd82c21feb9c0139a1f632 b/Library/Artifacts/16/16799c5ee3dd82c21feb9c0139a1f632 new file mode 100644 index 0000000..4e6091b Binary files /dev/null and b/Library/Artifacts/16/16799c5ee3dd82c21feb9c0139a1f632 differ diff --git a/Library/Artifacts/16/168e6e509211ddbb136265c46ae33b65 b/Library/Artifacts/16/168e6e509211ddbb136265c46ae33b65 new file mode 100644 index 0000000..fd457e2 Binary files /dev/null and b/Library/Artifacts/16/168e6e509211ddbb136265c46ae33b65 differ diff --git a/Library/Artifacts/16/169c9fd80ac8f78a60064e55d1293c08 b/Library/Artifacts/16/169c9fd80ac8f78a60064e55d1293c08 new file mode 100644 index 0000000..1ed13d8 Binary files /dev/null and b/Library/Artifacts/16/169c9fd80ac8f78a60064e55d1293c08 differ diff --git a/Library/Artifacts/16/16a353d8d5a913f70c722b1d809e304d b/Library/Artifacts/16/16a353d8d5a913f70c722b1d809e304d new file mode 100644 index 0000000..66c1011 Binary files /dev/null and b/Library/Artifacts/16/16a353d8d5a913f70c722b1d809e304d differ diff --git a/Library/Artifacts/16/16a6825a6fbb3d3ff47734623030cd88 b/Library/Artifacts/16/16a6825a6fbb3d3ff47734623030cd88 new file mode 100644 index 0000000..0464882 Binary files /dev/null and b/Library/Artifacts/16/16a6825a6fbb3d3ff47734623030cd88 differ diff --git a/Library/Artifacts/16/16bec80add25afc1510b413eb59b79db b/Library/Artifacts/16/16bec80add25afc1510b413eb59b79db new file mode 100644 index 0000000..2104494 Binary files /dev/null and b/Library/Artifacts/16/16bec80add25afc1510b413eb59b79db differ diff --git a/Library/Artifacts/16/16d859d03e428801d0705e7bc9b05f9a b/Library/Artifacts/16/16d859d03e428801d0705e7bc9b05f9a new file mode 100644 index 0000000..b848462 Binary files /dev/null and b/Library/Artifacts/16/16d859d03e428801d0705e7bc9b05f9a differ diff --git a/Library/Artifacts/16/16f6e134fee05889cd4fe8fd67f66e13 b/Library/Artifacts/16/16f6e134fee05889cd4fe8fd67f66e13 new file mode 100644 index 0000000..7244084 Binary files /dev/null and b/Library/Artifacts/16/16f6e134fee05889cd4fe8fd67f66e13 differ diff --git a/Library/Artifacts/17/1735759485e4f1ee2aa56269ffcba793 b/Library/Artifacts/17/1735759485e4f1ee2aa56269ffcba793 new file mode 100644 index 0000000..26ed746 Binary files /dev/null and b/Library/Artifacts/17/1735759485e4f1ee2aa56269ffcba793 differ diff --git a/Library/Artifacts/17/1781abb5a09c0dd9496e9c7c24068354 b/Library/Artifacts/17/1781abb5a09c0dd9496e9c7c24068354 new file mode 100644 index 0000000..9cd9b5e Binary files /dev/null and b/Library/Artifacts/17/1781abb5a09c0dd9496e9c7c24068354 differ diff --git a/Library/Artifacts/17/17dc43091492a76dbd1f7a8a560fa044 b/Library/Artifacts/17/17dc43091492a76dbd1f7a8a560fa044 new file mode 100644 index 0000000..7fe6ac2 Binary files /dev/null and b/Library/Artifacts/17/17dc43091492a76dbd1f7a8a560fa044 differ diff --git a/Library/Artifacts/17/17dccffdf453a982708a74405df9f111 b/Library/Artifacts/17/17dccffdf453a982708a74405df9f111 new file mode 100644 index 0000000..488bb8d Binary files /dev/null and b/Library/Artifacts/17/17dccffdf453a982708a74405df9f111 differ diff --git a/Library/Artifacts/18/182ed460305993c6bbde27cf16a354b9 b/Library/Artifacts/18/182ed460305993c6bbde27cf16a354b9 new file mode 100644 index 0000000..58006d4 Binary files /dev/null and b/Library/Artifacts/18/182ed460305993c6bbde27cf16a354b9 differ diff --git a/Library/Artifacts/18/183a6e99acaec4f07f6fad965be9d8d2 b/Library/Artifacts/18/183a6e99acaec4f07f6fad965be9d8d2 new file mode 100644 index 0000000..255a529 Binary files /dev/null and b/Library/Artifacts/18/183a6e99acaec4f07f6fad965be9d8d2 differ diff --git a/Library/Artifacts/18/187fb820e91f623c4e7ff41da082d79b b/Library/Artifacts/18/187fb820e91f623c4e7ff41da082d79b new file mode 100644 index 0000000..e05f80e Binary files /dev/null and b/Library/Artifacts/18/187fb820e91f623c4e7ff41da082d79b differ diff --git a/Library/Artifacts/18/18a706e353d0beafbd7f9ffd5901ef15 b/Library/Artifacts/18/18a706e353d0beafbd7f9ffd5901ef15 new file mode 100644 index 0000000..61051ea Binary files /dev/null and b/Library/Artifacts/18/18a706e353d0beafbd7f9ffd5901ef15 differ diff --git a/Library/Artifacts/18/18c5033c09b5345a1ed56b236ecb9fce b/Library/Artifacts/18/18c5033c09b5345a1ed56b236ecb9fce new file mode 100644 index 0000000..5ad7f98 Binary files /dev/null and b/Library/Artifacts/18/18c5033c09b5345a1ed56b236ecb9fce differ diff --git a/Library/Artifacts/19/1923560cfb88b4dd0c95506dfbb5e591 b/Library/Artifacts/19/1923560cfb88b4dd0c95506dfbb5e591 new file mode 100644 index 0000000..9845572 Binary files /dev/null and b/Library/Artifacts/19/1923560cfb88b4dd0c95506dfbb5e591 differ diff --git a/Library/Artifacts/19/19246850bc02d0e3ed798a8edbbe032a b/Library/Artifacts/19/19246850bc02d0e3ed798a8edbbe032a new file mode 100644 index 0000000..ee193c5 Binary files /dev/null and b/Library/Artifacts/19/19246850bc02d0e3ed798a8edbbe032a differ diff --git a/Library/Artifacts/19/192e700f836d9fc6ba06e2974b28f064 b/Library/Artifacts/19/192e700f836d9fc6ba06e2974b28f064 new file mode 100644 index 0000000..ea54394 Binary files /dev/null and b/Library/Artifacts/19/192e700f836d9fc6ba06e2974b28f064 differ diff --git a/Library/Artifacts/19/193ed4dbc84fb86a42bc56644dce82f9 b/Library/Artifacts/19/193ed4dbc84fb86a42bc56644dce82f9 new file mode 100644 index 0000000..b7324c5 Binary files /dev/null and b/Library/Artifacts/19/193ed4dbc84fb86a42bc56644dce82f9 differ diff --git a/Library/Artifacts/19/1942e18533abaa6126df05096b1d0b55 b/Library/Artifacts/19/1942e18533abaa6126df05096b1d0b55 new file mode 100644 index 0000000..2172b84 Binary files /dev/null and b/Library/Artifacts/19/1942e18533abaa6126df05096b1d0b55 differ diff --git a/Library/Artifacts/19/1949f22605d60e9c32b43d8209f0c58e b/Library/Artifacts/19/1949f22605d60e9c32b43d8209f0c58e new file mode 100644 index 0000000..5118daa Binary files /dev/null and b/Library/Artifacts/19/1949f22605d60e9c32b43d8209f0c58e differ diff --git a/Library/Artifacts/19/1954dcb94f0d9e3830204b042ea8ad93 b/Library/Artifacts/19/1954dcb94f0d9e3830204b042ea8ad93 new file mode 100644 index 0000000..81aff56 Binary files /dev/null and b/Library/Artifacts/19/1954dcb94f0d9e3830204b042ea8ad93 differ diff --git a/Library/Artifacts/19/1967e53817c16db74009c643e69f9b5e b/Library/Artifacts/19/1967e53817c16db74009c643e69f9b5e new file mode 100644 index 0000000..1e99012 Binary files /dev/null and b/Library/Artifacts/19/1967e53817c16db74009c643e69f9b5e differ diff --git a/Library/Artifacts/19/197d6e97cf9bbf747117b3e9b20e2f41 b/Library/Artifacts/19/197d6e97cf9bbf747117b3e9b20e2f41 new file mode 100644 index 0000000..4ca8547 Binary files /dev/null and b/Library/Artifacts/19/197d6e97cf9bbf747117b3e9b20e2f41 differ diff --git a/Library/Artifacts/19/197f6e543c2a7b3d08d26373e813b5a8 b/Library/Artifacts/19/197f6e543c2a7b3d08d26373e813b5a8 new file mode 100644 index 0000000..00ca102 Binary files /dev/null and b/Library/Artifacts/19/197f6e543c2a7b3d08d26373e813b5a8 differ diff --git a/Library/Artifacts/19/1997c2e934fd661d003b36145fe1da74 b/Library/Artifacts/19/1997c2e934fd661d003b36145fe1da74 new file mode 100644 index 0000000..ce307f1 Binary files /dev/null and b/Library/Artifacts/19/1997c2e934fd661d003b36145fe1da74 differ diff --git a/Library/Artifacts/19/19a83a896ca4e31324132dee4143cce1 b/Library/Artifacts/19/19a83a896ca4e31324132dee4143cce1 new file mode 100644 index 0000000..83a512b Binary files /dev/null and b/Library/Artifacts/19/19a83a896ca4e31324132dee4143cce1 differ diff --git a/Library/Artifacts/1a/1a0c57da9198e78d29dfb0d31385557b b/Library/Artifacts/1a/1a0c57da9198e78d29dfb0d31385557b new file mode 100644 index 0000000..35c9f64 Binary files /dev/null and b/Library/Artifacts/1a/1a0c57da9198e78d29dfb0d31385557b differ diff --git a/Library/Artifacts/1a/1a52f7041d46b28f7c4945ff66acab35 b/Library/Artifacts/1a/1a52f7041d46b28f7c4945ff66acab35 new file mode 100644 index 0000000..129e3ba Binary files /dev/null and b/Library/Artifacts/1a/1a52f7041d46b28f7c4945ff66acab35 differ diff --git a/Library/Artifacts/1a/1a65417e6cece73498b22c0c0d44dbe2 b/Library/Artifacts/1a/1a65417e6cece73498b22c0c0d44dbe2 new file mode 100644 index 0000000..49f87ce Binary files /dev/null and b/Library/Artifacts/1a/1a65417e6cece73498b22c0c0d44dbe2 differ diff --git a/Library/Artifacts/1a/1a845802645f314a1500573995d04c37 b/Library/Artifacts/1a/1a845802645f314a1500573995d04c37 new file mode 100644 index 0000000..0d73c00 Binary files /dev/null and b/Library/Artifacts/1a/1a845802645f314a1500573995d04c37 differ diff --git a/Library/Artifacts/1a/1aa202b14457ceb06530b79f0a722238 b/Library/Artifacts/1a/1aa202b14457ceb06530b79f0a722238 new file mode 100644 index 0000000..db546e6 Binary files /dev/null and b/Library/Artifacts/1a/1aa202b14457ceb06530b79f0a722238 differ diff --git a/Library/Artifacts/1a/1aa66b57a29dfab0d31059b1a025c22f b/Library/Artifacts/1a/1aa66b57a29dfab0d31059b1a025c22f new file mode 100644 index 0000000..10b49f1 Binary files /dev/null and b/Library/Artifacts/1a/1aa66b57a29dfab0d31059b1a025c22f differ diff --git a/Library/Artifacts/1a/1ab0779df0c05925a5fa865354eebd45 b/Library/Artifacts/1a/1ab0779df0c05925a5fa865354eebd45 new file mode 100644 index 0000000..f0846ce Binary files /dev/null and b/Library/Artifacts/1a/1ab0779df0c05925a5fa865354eebd45 differ diff --git a/Library/Artifacts/1a/1ad9538ab513a5eeae101f6b5b10583a b/Library/Artifacts/1a/1ad9538ab513a5eeae101f6b5b10583a new file mode 100644 index 0000000..315b85a Binary files /dev/null and b/Library/Artifacts/1a/1ad9538ab513a5eeae101f6b5b10583a differ diff --git a/Library/Artifacts/1b/1b1e5ee38980a6c24eef140b2526da70 b/Library/Artifacts/1b/1b1e5ee38980a6c24eef140b2526da70 new file mode 100644 index 0000000..6c6c199 Binary files /dev/null and b/Library/Artifacts/1b/1b1e5ee38980a6c24eef140b2526da70 differ diff --git a/Library/Artifacts/1b/1b27e038be4dc4fa6b099f5cedee44c4 b/Library/Artifacts/1b/1b27e038be4dc4fa6b099f5cedee44c4 new file mode 100644 index 0000000..2d089a2 Binary files /dev/null and b/Library/Artifacts/1b/1b27e038be4dc4fa6b099f5cedee44c4 differ diff --git a/Library/Artifacts/1b/1b2a869fa504f3eaf055eab0d9872c77 b/Library/Artifacts/1b/1b2a869fa504f3eaf055eab0d9872c77 new file mode 100644 index 0000000..df446a6 Binary files /dev/null and b/Library/Artifacts/1b/1b2a869fa504f3eaf055eab0d9872c77 differ diff --git a/Library/Artifacts/1b/1b65cfc6ed20df6ac9f875aac9eb7a31 b/Library/Artifacts/1b/1b65cfc6ed20df6ac9f875aac9eb7a31 new file mode 100644 index 0000000..7cfc3ce Binary files /dev/null and b/Library/Artifacts/1b/1b65cfc6ed20df6ac9f875aac9eb7a31 differ diff --git a/Library/Artifacts/1b/1b78c7ec34570e6d2342cef5fe8ee6d5 b/Library/Artifacts/1b/1b78c7ec34570e6d2342cef5fe8ee6d5 new file mode 100644 index 0000000..444e775 Binary files /dev/null and b/Library/Artifacts/1b/1b78c7ec34570e6d2342cef5fe8ee6d5 differ diff --git a/Library/Artifacts/1b/1b9f6f4abc93150f7ff07755262f4366 b/Library/Artifacts/1b/1b9f6f4abc93150f7ff07755262f4366 new file mode 100644 index 0000000..b1bbc14 Binary files /dev/null and b/Library/Artifacts/1b/1b9f6f4abc93150f7ff07755262f4366 differ diff --git a/Library/Artifacts/1b/1bb9a9b61be1ec6371c2998b0f74cd73 b/Library/Artifacts/1b/1bb9a9b61be1ec6371c2998b0f74cd73 new file mode 100644 index 0000000..12fd7f1 Binary files /dev/null and b/Library/Artifacts/1b/1bb9a9b61be1ec6371c2998b0f74cd73 differ diff --git a/Library/Artifacts/1b/1be8994c6c578ac737e21750af7fb969 b/Library/Artifacts/1b/1be8994c6c578ac737e21750af7fb969 new file mode 100644 index 0000000..4bd9090 Binary files /dev/null and b/Library/Artifacts/1b/1be8994c6c578ac737e21750af7fb969 differ diff --git a/Library/Artifacts/1b/1beaa045b53c6f0186923f3082089828 b/Library/Artifacts/1b/1beaa045b53c6f0186923f3082089828 new file mode 100644 index 0000000..de9363c Binary files /dev/null and b/Library/Artifacts/1b/1beaa045b53c6f0186923f3082089828 differ diff --git a/Library/Artifacts/1b/1bf5e114f93d4505161d3926d433ed43 b/Library/Artifacts/1b/1bf5e114f93d4505161d3926d433ed43 new file mode 100644 index 0000000..059d88c Binary files /dev/null and b/Library/Artifacts/1b/1bf5e114f93d4505161d3926d433ed43 differ diff --git a/Library/Artifacts/1c/1c1e0e2e4f923958957a9bd23e29baa2 b/Library/Artifacts/1c/1c1e0e2e4f923958957a9bd23e29baa2 new file mode 100644 index 0000000..fa85722 Binary files /dev/null and b/Library/Artifacts/1c/1c1e0e2e4f923958957a9bd23e29baa2 differ diff --git a/Library/Artifacts/1c/1c3ee62a45bb9c3b424ad50dff0c5197 b/Library/Artifacts/1c/1c3ee62a45bb9c3b424ad50dff0c5197 new file mode 100644 index 0000000..1299d16 Binary files /dev/null and b/Library/Artifacts/1c/1c3ee62a45bb9c3b424ad50dff0c5197 differ diff --git a/Library/Artifacts/1c/1c7b94b27eaaef2112eef079b8558645 b/Library/Artifacts/1c/1c7b94b27eaaef2112eef079b8558645 new file mode 100644 index 0000000..ccf7247 Binary files /dev/null and b/Library/Artifacts/1c/1c7b94b27eaaef2112eef079b8558645 differ diff --git a/Library/Artifacts/1c/1c8d1a8fcbb37b2ffc70eaab775d593d b/Library/Artifacts/1c/1c8d1a8fcbb37b2ffc70eaab775d593d new file mode 100644 index 0000000..2025cda Binary files /dev/null and b/Library/Artifacts/1c/1c8d1a8fcbb37b2ffc70eaab775d593d differ diff --git a/Library/Artifacts/1c/1c9143f5151a1433aef27d6d1321bbda b/Library/Artifacts/1c/1c9143f5151a1433aef27d6d1321bbda new file mode 100644 index 0000000..c9898d7 Binary files /dev/null and b/Library/Artifacts/1c/1c9143f5151a1433aef27d6d1321bbda differ diff --git a/Library/Artifacts/1c/1cb7030da05e25e003fbbb56a481bb0e b/Library/Artifacts/1c/1cb7030da05e25e003fbbb56a481bb0e new file mode 100644 index 0000000..d00f5e6 Binary files /dev/null and b/Library/Artifacts/1c/1cb7030da05e25e003fbbb56a481bb0e differ diff --git a/Library/Artifacts/1c/1cce3519d447097a482b5b278f5d4674 b/Library/Artifacts/1c/1cce3519d447097a482b5b278f5d4674 new file mode 100644 index 0000000..a3e3b07 Binary files /dev/null and b/Library/Artifacts/1c/1cce3519d447097a482b5b278f5d4674 differ diff --git a/Library/Artifacts/1c/1cd5a02491fa6993be930e79d847acd2 b/Library/Artifacts/1c/1cd5a02491fa6993be930e79d847acd2 new file mode 100644 index 0000000..ff13f0f Binary files /dev/null and b/Library/Artifacts/1c/1cd5a02491fa6993be930e79d847acd2 differ diff --git a/Library/Artifacts/1d/1d13af848126308c3dc8b10e15431d0f b/Library/Artifacts/1d/1d13af848126308c3dc8b10e15431d0f new file mode 100644 index 0000000..0e57611 Binary files /dev/null and b/Library/Artifacts/1d/1d13af848126308c3dc8b10e15431d0f differ diff --git a/Library/Artifacts/1d/1d19d28630eee394453ca7850b26a2d0 b/Library/Artifacts/1d/1d19d28630eee394453ca7850b26a2d0 new file mode 100644 index 0000000..cce47dd Binary files /dev/null and b/Library/Artifacts/1d/1d19d28630eee394453ca7850b26a2d0 differ diff --git a/Library/Artifacts/1d/1d220b3ba4571a95f0b843c4c2a4888d b/Library/Artifacts/1d/1d220b3ba4571a95f0b843c4c2a4888d new file mode 100644 index 0000000..c2acd14 Binary files /dev/null and b/Library/Artifacts/1d/1d220b3ba4571a95f0b843c4c2a4888d differ diff --git a/Library/Artifacts/1d/1d24bb84bf0233a72de81029adcda714 b/Library/Artifacts/1d/1d24bb84bf0233a72de81029adcda714 new file mode 100644 index 0000000..18f3f87 Binary files /dev/null and b/Library/Artifacts/1d/1d24bb84bf0233a72de81029adcda714 differ diff --git a/Library/Artifacts/1d/1d42d377e2e241e4f9ec5ac643feb337 b/Library/Artifacts/1d/1d42d377e2e241e4f9ec5ac643feb337 new file mode 100644 index 0000000..e460c11 Binary files /dev/null and b/Library/Artifacts/1d/1d42d377e2e241e4f9ec5ac643feb337 differ diff --git a/Library/Artifacts/1d/1d473a53ab209b6b8538c11c7e97f587 b/Library/Artifacts/1d/1d473a53ab209b6b8538c11c7e97f587 new file mode 100644 index 0000000..ee8fa8a Binary files /dev/null and b/Library/Artifacts/1d/1d473a53ab209b6b8538c11c7e97f587 differ diff --git a/Library/Artifacts/1d/1d7427c0a5f2d523e3849f2ade8cff7c b/Library/Artifacts/1d/1d7427c0a5f2d523e3849f2ade8cff7c new file mode 100644 index 0000000..962b084 Binary files /dev/null and b/Library/Artifacts/1d/1d7427c0a5f2d523e3849f2ade8cff7c differ diff --git a/Library/Artifacts/1d/1da326396ec17343f6a0d7d09fce3117 b/Library/Artifacts/1d/1da326396ec17343f6a0d7d09fce3117 new file mode 100644 index 0000000..368ad0e Binary files /dev/null and b/Library/Artifacts/1d/1da326396ec17343f6a0d7d09fce3117 differ diff --git a/Library/Artifacts/1d/1da4468337e46d3d03c491f4b57aa407 b/Library/Artifacts/1d/1da4468337e46d3d03c491f4b57aa407 new file mode 100644 index 0000000..8ff6d41 Binary files /dev/null and b/Library/Artifacts/1d/1da4468337e46d3d03c491f4b57aa407 differ diff --git a/Library/Artifacts/1d/1da788d11a6cbdf8aca9e9edc70d456e b/Library/Artifacts/1d/1da788d11a6cbdf8aca9e9edc70d456e new file mode 100644 index 0000000..c137e4c Binary files /dev/null and b/Library/Artifacts/1d/1da788d11a6cbdf8aca9e9edc70d456e differ diff --git a/Library/Artifacts/1d/1de643b3cff993daae626fea8bf21812 b/Library/Artifacts/1d/1de643b3cff993daae626fea8bf21812 new file mode 100644 index 0000000..b1ff76c Binary files /dev/null and b/Library/Artifacts/1d/1de643b3cff993daae626fea8bf21812 differ diff --git a/Library/Artifacts/1e/1e0dad40dcaa7b6c60182ba8f51e74df b/Library/Artifacts/1e/1e0dad40dcaa7b6c60182ba8f51e74df new file mode 100644 index 0000000..6f0babb Binary files /dev/null and b/Library/Artifacts/1e/1e0dad40dcaa7b6c60182ba8f51e74df differ diff --git a/Library/Artifacts/1e/1e314a8e14b09644c88fa2d5bfcc19a6 b/Library/Artifacts/1e/1e314a8e14b09644c88fa2d5bfcc19a6 new file mode 100644 index 0000000..c96d671 Binary files /dev/null and b/Library/Artifacts/1e/1e314a8e14b09644c88fa2d5bfcc19a6 differ diff --git a/Library/Artifacts/1e/1e765523216e2d6d0a3fb346c85d0567 b/Library/Artifacts/1e/1e765523216e2d6d0a3fb346c85d0567 new file mode 100644 index 0000000..fc0d752 Binary files /dev/null and b/Library/Artifacts/1e/1e765523216e2d6d0a3fb346c85d0567 differ diff --git a/Library/Artifacts/1e/1eab8d9ac54daa8d8cbf3a2cc27d58bb b/Library/Artifacts/1e/1eab8d9ac54daa8d8cbf3a2cc27d58bb new file mode 100644 index 0000000..13deae7 Binary files /dev/null and b/Library/Artifacts/1e/1eab8d9ac54daa8d8cbf3a2cc27d58bb differ diff --git a/Library/Artifacts/1e/1ebdb42d5593566d573386a4de7e4388 b/Library/Artifacts/1e/1ebdb42d5593566d573386a4de7e4388 new file mode 100644 index 0000000..1b7230f Binary files /dev/null and b/Library/Artifacts/1e/1ebdb42d5593566d573386a4de7e4388 differ diff --git a/Library/Artifacts/1e/1ed15bc11bd897d7e83a4f3132c95bc4 b/Library/Artifacts/1e/1ed15bc11bd897d7e83a4f3132c95bc4 new file mode 100644 index 0000000..d86a1b8 Binary files /dev/null and b/Library/Artifacts/1e/1ed15bc11bd897d7e83a4f3132c95bc4 differ diff --git a/Library/Artifacts/1f/1f0f48dc7029cfefcb0c7e0a67ba4c42 b/Library/Artifacts/1f/1f0f48dc7029cfefcb0c7e0a67ba4c42 new file mode 100644 index 0000000..058d5e0 Binary files /dev/null and b/Library/Artifacts/1f/1f0f48dc7029cfefcb0c7e0a67ba4c42 differ diff --git a/Library/Artifacts/1f/1fec442c704ddf090ea5398d42d9df79 b/Library/Artifacts/1f/1fec442c704ddf090ea5398d42d9df79 new file mode 100644 index 0000000..67ce8dd Binary files /dev/null and b/Library/Artifacts/1f/1fec442c704ddf090ea5398d42d9df79 differ diff --git a/Library/Artifacts/1f/1ffd7e78063684884c8ca02edc6cd410 b/Library/Artifacts/1f/1ffd7e78063684884c8ca02edc6cd410 new file mode 100644 index 0000000..067684b Binary files /dev/null and b/Library/Artifacts/1f/1ffd7e78063684884c8ca02edc6cd410 differ diff --git a/Library/Artifacts/20/206ce58713c5b735a882b1e5d16444fa b/Library/Artifacts/20/206ce58713c5b735a882b1e5d16444fa new file mode 100644 index 0000000..1a5e1fb Binary files /dev/null and b/Library/Artifacts/20/206ce58713c5b735a882b1e5d16444fa differ diff --git a/Library/Artifacts/20/20776421b1ae463cce94064b8f09f614 b/Library/Artifacts/20/20776421b1ae463cce94064b8f09f614 new file mode 100644 index 0000000..df0afa2 Binary files /dev/null and b/Library/Artifacts/20/20776421b1ae463cce94064b8f09f614 differ diff --git a/Library/Artifacts/20/207b54b3643b5594554aa161c9097d92 b/Library/Artifacts/20/207b54b3643b5594554aa161c9097d92 new file mode 100644 index 0000000..63d0300 Binary files /dev/null and b/Library/Artifacts/20/207b54b3643b5594554aa161c9097d92 differ diff --git a/Library/Artifacts/20/20891b8087d63dbabbee91bd903946a4 b/Library/Artifacts/20/20891b8087d63dbabbee91bd903946a4 new file mode 100644 index 0000000..2bf36d1 Binary files /dev/null and b/Library/Artifacts/20/20891b8087d63dbabbee91bd903946a4 differ diff --git a/Library/Artifacts/20/208d4932bb01ccdacebd6df94818df64 b/Library/Artifacts/20/208d4932bb01ccdacebd6df94818df64 new file mode 100644 index 0000000..fcbaca9 Binary files /dev/null and b/Library/Artifacts/20/208d4932bb01ccdacebd6df94818df64 differ diff --git a/Library/Artifacts/20/20aaadf508a6eec269717efbfaf48825 b/Library/Artifacts/20/20aaadf508a6eec269717efbfaf48825 new file mode 100644 index 0000000..0bd580b Binary files /dev/null and b/Library/Artifacts/20/20aaadf508a6eec269717efbfaf48825 differ diff --git a/Library/Artifacts/21/212ef6ecadb193ced6815b2dff6b355b b/Library/Artifacts/21/212ef6ecadb193ced6815b2dff6b355b new file mode 100644 index 0000000..b911e57 Binary files /dev/null and b/Library/Artifacts/21/212ef6ecadb193ced6815b2dff6b355b differ diff --git a/Library/Artifacts/21/218b4ab5ad84f6287d370def3e2ded8e b/Library/Artifacts/21/218b4ab5ad84f6287d370def3e2ded8e new file mode 100644 index 0000000..131dd5e Binary files /dev/null and b/Library/Artifacts/21/218b4ab5ad84f6287d370def3e2ded8e differ diff --git a/Library/Artifacts/21/21a2f14de15198be742bab500c81a2d3 b/Library/Artifacts/21/21a2f14de15198be742bab500c81a2d3 new file mode 100644 index 0000000..7ff06bf Binary files /dev/null and b/Library/Artifacts/21/21a2f14de15198be742bab500c81a2d3 differ diff --git a/Library/Artifacts/21/21aadeaad87ccbbe4bf5427d621afe57 b/Library/Artifacts/21/21aadeaad87ccbbe4bf5427d621afe57 new file mode 100644 index 0000000..2d46618 Binary files /dev/null and b/Library/Artifacts/21/21aadeaad87ccbbe4bf5427d621afe57 differ diff --git a/Library/Artifacts/22/2229e3315927134d63a36d50f895124f b/Library/Artifacts/22/2229e3315927134d63a36d50f895124f new file mode 100644 index 0000000..e246617 Binary files /dev/null and b/Library/Artifacts/22/2229e3315927134d63a36d50f895124f differ diff --git a/Library/Artifacts/22/2232b5306d25dab384c924848af7ccf1 b/Library/Artifacts/22/2232b5306d25dab384c924848af7ccf1 new file mode 100644 index 0000000..7659724 Binary files /dev/null and b/Library/Artifacts/22/2232b5306d25dab384c924848af7ccf1 differ diff --git a/Library/Artifacts/22/22392d704c8f4c0d638e4deb1770267e b/Library/Artifacts/22/22392d704c8f4c0d638e4deb1770267e new file mode 100644 index 0000000..0426c4d Binary files /dev/null and b/Library/Artifacts/22/22392d704c8f4c0d638e4deb1770267e differ diff --git a/Library/Artifacts/22/225804a7f47367e77a9e71780c86a8a4 b/Library/Artifacts/22/225804a7f47367e77a9e71780c86a8a4 new file mode 100644 index 0000000..2f96ad8 Binary files /dev/null and b/Library/Artifacts/22/225804a7f47367e77a9e71780c86a8a4 differ diff --git a/Library/Artifacts/22/22840b4caf0215a5cffaeaa259669116 b/Library/Artifacts/22/22840b4caf0215a5cffaeaa259669116 new file mode 100644 index 0000000..b545654 Binary files /dev/null and b/Library/Artifacts/22/22840b4caf0215a5cffaeaa259669116 differ diff --git a/Library/Artifacts/22/2287883c1f07714a6a3f2cac155d6054 b/Library/Artifacts/22/2287883c1f07714a6a3f2cac155d6054 new file mode 100644 index 0000000..52e59f7 Binary files /dev/null and b/Library/Artifacts/22/2287883c1f07714a6a3f2cac155d6054 differ diff --git a/Library/Artifacts/22/229a5e4349c2909671455a3fa37432cf b/Library/Artifacts/22/229a5e4349c2909671455a3fa37432cf new file mode 100644 index 0000000..eab3236 Binary files /dev/null and b/Library/Artifacts/22/229a5e4349c2909671455a3fa37432cf differ diff --git a/Library/Artifacts/22/22b9f5a48c5862a20cc989fe7042555f b/Library/Artifacts/22/22b9f5a48c5862a20cc989fe7042555f new file mode 100644 index 0000000..40030d3 Binary files /dev/null and b/Library/Artifacts/22/22b9f5a48c5862a20cc989fe7042555f differ diff --git a/Library/Artifacts/22/22cce481fe71f1d55bf04358d7dfe08f b/Library/Artifacts/22/22cce481fe71f1d55bf04358d7dfe08f new file mode 100644 index 0000000..809a28e Binary files /dev/null and b/Library/Artifacts/22/22cce481fe71f1d55bf04358d7dfe08f differ diff --git a/Library/Artifacts/22/22f073d04dfc2dfc9e4d22c3cb82c33c b/Library/Artifacts/22/22f073d04dfc2dfc9e4d22c3cb82c33c new file mode 100644 index 0000000..7211921 Binary files /dev/null and b/Library/Artifacts/22/22f073d04dfc2dfc9e4d22c3cb82c33c differ diff --git a/Library/Artifacts/23/23026c4f0d1397c952ea38778d32ebb7 b/Library/Artifacts/23/23026c4f0d1397c952ea38778d32ebb7 new file mode 100644 index 0000000..cf7eb2a Binary files /dev/null and b/Library/Artifacts/23/23026c4f0d1397c952ea38778d32ebb7 differ diff --git a/Library/Artifacts/23/231572f914c3fb28d6e33f1b6b313417 b/Library/Artifacts/23/231572f914c3fb28d6e33f1b6b313417 new file mode 100644 index 0000000..2ee1f34 Binary files /dev/null and b/Library/Artifacts/23/231572f914c3fb28d6e33f1b6b313417 differ diff --git a/Library/Artifacts/23/2321235efcea5b7a9e2ea42efb5384ff b/Library/Artifacts/23/2321235efcea5b7a9e2ea42efb5384ff new file mode 100644 index 0000000..a19eaf7 Binary files /dev/null and b/Library/Artifacts/23/2321235efcea5b7a9e2ea42efb5384ff differ diff --git a/Library/Artifacts/23/23360379e6d4dca6bc9904e905efda09 b/Library/Artifacts/23/23360379e6d4dca6bc9904e905efda09 new file mode 100644 index 0000000..84c0e52 Binary files /dev/null and b/Library/Artifacts/23/23360379e6d4dca6bc9904e905efda09 differ diff --git a/Library/Artifacts/23/2358caefff31229b2e6364e99bdc0397 b/Library/Artifacts/23/2358caefff31229b2e6364e99bdc0397 new file mode 100644 index 0000000..83757d1 Binary files /dev/null and b/Library/Artifacts/23/2358caefff31229b2e6364e99bdc0397 differ diff --git a/Library/Artifacts/23/2361f8bc5975035527bb06219816d3d3 b/Library/Artifacts/23/2361f8bc5975035527bb06219816d3d3 new file mode 100644 index 0000000..5d01054 Binary files /dev/null and b/Library/Artifacts/23/2361f8bc5975035527bb06219816d3d3 differ diff --git a/Library/Artifacts/23/23a0971864aec8be312b30a836a281ed b/Library/Artifacts/23/23a0971864aec8be312b30a836a281ed new file mode 100644 index 0000000..7ba2051 Binary files /dev/null and b/Library/Artifacts/23/23a0971864aec8be312b30a836a281ed differ diff --git a/Library/Artifacts/23/23e460c9ed0916d28ea8b491b03e472c b/Library/Artifacts/23/23e460c9ed0916d28ea8b491b03e472c new file mode 100644 index 0000000..6043828 Binary files /dev/null and b/Library/Artifacts/23/23e460c9ed0916d28ea8b491b03e472c differ diff --git a/Library/Artifacts/24/2420512b3e91a56e6ff687c90e4dfb2a b/Library/Artifacts/24/2420512b3e91a56e6ff687c90e4dfb2a new file mode 100644 index 0000000..7c457ec Binary files /dev/null and b/Library/Artifacts/24/2420512b3e91a56e6ff687c90e4dfb2a differ diff --git a/Library/Artifacts/24/24731db4ff0177b90c008b9ce6061ead b/Library/Artifacts/24/24731db4ff0177b90c008b9ce6061ead new file mode 100644 index 0000000..69e869c Binary files /dev/null and b/Library/Artifacts/24/24731db4ff0177b90c008b9ce6061ead differ diff --git a/Library/Artifacts/24/248066f7fadb045917e9a77288472bda b/Library/Artifacts/24/248066f7fadb045917e9a77288472bda new file mode 100644 index 0000000..270b00c Binary files /dev/null and b/Library/Artifacts/24/248066f7fadb045917e9a77288472bda differ diff --git a/Library/Artifacts/24/2493c9949938b9fb2c537998e2270f57 b/Library/Artifacts/24/2493c9949938b9fb2c537998e2270f57 new file mode 100644 index 0000000..b55322a Binary files /dev/null and b/Library/Artifacts/24/2493c9949938b9fb2c537998e2270f57 differ diff --git a/Library/Artifacts/24/24bc313159fd02025b560aec98c5c853 b/Library/Artifacts/24/24bc313159fd02025b560aec98c5c853 new file mode 100644 index 0000000..bddaa44 Binary files /dev/null and b/Library/Artifacts/24/24bc313159fd02025b560aec98c5c853 differ diff --git a/Library/Artifacts/24/24c07847d65cfc5e86cd9412f5ed4c95 b/Library/Artifacts/24/24c07847d65cfc5e86cd9412f5ed4c95 new file mode 100644 index 0000000..f7afa88 Binary files /dev/null and b/Library/Artifacts/24/24c07847d65cfc5e86cd9412f5ed4c95 differ diff --git a/Library/Artifacts/24/24c53ae406c245eb63a4e6f5c0c5959b b/Library/Artifacts/24/24c53ae406c245eb63a4e6f5c0c5959b new file mode 100644 index 0000000..4a6d036 Binary files /dev/null and b/Library/Artifacts/24/24c53ae406c245eb63a4e6f5c0c5959b differ diff --git a/Library/Artifacts/24/24ef9bc40b951c2335497559d4c6f1ce b/Library/Artifacts/24/24ef9bc40b951c2335497559d4c6f1ce new file mode 100644 index 0000000..dbbdaa8 Binary files /dev/null and b/Library/Artifacts/24/24ef9bc40b951c2335497559d4c6f1ce differ diff --git a/Library/Artifacts/25/250389d7b46b94d7eb7fdc97b8139115 b/Library/Artifacts/25/250389d7b46b94d7eb7fdc97b8139115 new file mode 100644 index 0000000..ab49669 Binary files /dev/null and b/Library/Artifacts/25/250389d7b46b94d7eb7fdc97b8139115 differ diff --git a/Library/Artifacts/25/251951ca549a3538561f6dbdb1fa515d b/Library/Artifacts/25/251951ca549a3538561f6dbdb1fa515d new file mode 100644 index 0000000..8690576 Binary files /dev/null and b/Library/Artifacts/25/251951ca549a3538561f6dbdb1fa515d differ diff --git a/Library/Artifacts/25/25320ba6fca70effd8fc334b9298747c b/Library/Artifacts/25/25320ba6fca70effd8fc334b9298747c new file mode 100644 index 0000000..cc7747e Binary files /dev/null and b/Library/Artifacts/25/25320ba6fca70effd8fc334b9298747c differ diff --git a/Library/Artifacts/25/2548cf7f6b59601a536b4ccc0eeb4aa2 b/Library/Artifacts/25/2548cf7f6b59601a536b4ccc0eeb4aa2 new file mode 100644 index 0000000..eccff53 Binary files /dev/null and b/Library/Artifacts/25/2548cf7f6b59601a536b4ccc0eeb4aa2 differ diff --git a/Library/Artifacts/25/25528dc3d68f3ce90bc699fec3fb7095 b/Library/Artifacts/25/25528dc3d68f3ce90bc699fec3fb7095 new file mode 100644 index 0000000..a460715 Binary files /dev/null and b/Library/Artifacts/25/25528dc3d68f3ce90bc699fec3fb7095 differ diff --git a/Library/Artifacts/25/255651bf626cb0d5e00a8d3b8ee5d285 b/Library/Artifacts/25/255651bf626cb0d5e00a8d3b8ee5d285 new file mode 100644 index 0000000..ed0ac83 Binary files /dev/null and b/Library/Artifacts/25/255651bf626cb0d5e00a8d3b8ee5d285 differ diff --git a/Library/Artifacts/25/2598b820f3bb04bcc2fb9b4d0ab31088 b/Library/Artifacts/25/2598b820f3bb04bcc2fb9b4d0ab31088 new file mode 100644 index 0000000..8f6b40c Binary files /dev/null and b/Library/Artifacts/25/2598b820f3bb04bcc2fb9b4d0ab31088 differ diff --git a/Library/Artifacts/25/2599f8bd056395013f470173812cd22a b/Library/Artifacts/25/2599f8bd056395013f470173812cd22a new file mode 100644 index 0000000..7ebc66f Binary files /dev/null and b/Library/Artifacts/25/2599f8bd056395013f470173812cd22a differ diff --git a/Library/Artifacts/25/25ab46eb7b3256d774ee0c2745f758f6 b/Library/Artifacts/25/25ab46eb7b3256d774ee0c2745f758f6 new file mode 100644 index 0000000..02c0ee7 Binary files /dev/null and b/Library/Artifacts/25/25ab46eb7b3256d774ee0c2745f758f6 differ diff --git a/Library/Artifacts/25/25cf4d4868b84e768eaed49dbcb00bbe b/Library/Artifacts/25/25cf4d4868b84e768eaed49dbcb00bbe new file mode 100644 index 0000000..85668c1 Binary files /dev/null and b/Library/Artifacts/25/25cf4d4868b84e768eaed49dbcb00bbe differ diff --git a/Library/Artifacts/25/25d39248ecb580d69bdc6acdeab982fe b/Library/Artifacts/25/25d39248ecb580d69bdc6acdeab982fe new file mode 100644 index 0000000..8351bd3 Binary files /dev/null and b/Library/Artifacts/25/25d39248ecb580d69bdc6acdeab982fe differ diff --git a/Library/Artifacts/25/25fb8ae06c23a2fcf3a1c69cfa14fdb7 b/Library/Artifacts/25/25fb8ae06c23a2fcf3a1c69cfa14fdb7 new file mode 100644 index 0000000..a59d1bd Binary files /dev/null and b/Library/Artifacts/25/25fb8ae06c23a2fcf3a1c69cfa14fdb7 differ diff --git a/Library/Artifacts/26/2604bf83e1c8c5dbe8b961433ffd2e61 b/Library/Artifacts/26/2604bf83e1c8c5dbe8b961433ffd2e61 new file mode 100644 index 0000000..e46a48a Binary files /dev/null and b/Library/Artifacts/26/2604bf83e1c8c5dbe8b961433ffd2e61 differ diff --git a/Library/Artifacts/26/2628688eb85ef2058da67257a75b4981 b/Library/Artifacts/26/2628688eb85ef2058da67257a75b4981 new file mode 100644 index 0000000..5c2fb6c Binary files /dev/null and b/Library/Artifacts/26/2628688eb85ef2058da67257a75b4981 differ diff --git a/Library/Artifacts/26/2665b3dae9c85bfc143b92c6788355d9 b/Library/Artifacts/26/2665b3dae9c85bfc143b92c6788355d9 new file mode 100644 index 0000000..0c03561 Binary files /dev/null and b/Library/Artifacts/26/2665b3dae9c85bfc143b92c6788355d9 differ diff --git a/Library/Artifacts/26/2687e2fb3e05b6ffdf8b44e8c548833e b/Library/Artifacts/26/2687e2fb3e05b6ffdf8b44e8c548833e new file mode 100644 index 0000000..87561fe Binary files /dev/null and b/Library/Artifacts/26/2687e2fb3e05b6ffdf8b44e8c548833e differ diff --git a/Library/Artifacts/26/26e764876c8e6069a764bac5f853f83d b/Library/Artifacts/26/26e764876c8e6069a764bac5f853f83d new file mode 100644 index 0000000..64e178c Binary files /dev/null and b/Library/Artifacts/26/26e764876c8e6069a764bac5f853f83d differ diff --git a/Library/Artifacts/27/270314f39b1ec413756f2a42d33b7506 b/Library/Artifacts/27/270314f39b1ec413756f2a42d33b7506 new file mode 100644 index 0000000..6227902 Binary files /dev/null and b/Library/Artifacts/27/270314f39b1ec413756f2a42d33b7506 differ diff --git a/Library/Artifacts/27/27602984c7ca3ab9fe266e08c4697f06 b/Library/Artifacts/27/27602984c7ca3ab9fe266e08c4697f06 new file mode 100644 index 0000000..a90aafb Binary files /dev/null and b/Library/Artifacts/27/27602984c7ca3ab9fe266e08c4697f06 differ diff --git a/Library/Artifacts/27/276b4e93dafa0348e546ff2676ea85a8 b/Library/Artifacts/27/276b4e93dafa0348e546ff2676ea85a8 new file mode 100644 index 0000000..014b158 Binary files /dev/null and b/Library/Artifacts/27/276b4e93dafa0348e546ff2676ea85a8 differ diff --git a/Library/Artifacts/27/27aa9f6267cbff52756d95b027ece95e b/Library/Artifacts/27/27aa9f6267cbff52756d95b027ece95e new file mode 100644 index 0000000..0495e46 Binary files /dev/null and b/Library/Artifacts/27/27aa9f6267cbff52756d95b027ece95e differ diff --git a/Library/Artifacts/27/27b8fc3a61c690abe142d3cf74d61da8 b/Library/Artifacts/27/27b8fc3a61c690abe142d3cf74d61da8 new file mode 100644 index 0000000..3780ed6 Binary files /dev/null and b/Library/Artifacts/27/27b8fc3a61c690abe142d3cf74d61da8 differ diff --git a/Library/Artifacts/28/281926d4724ea31ee16076bfcf1e0bb7 b/Library/Artifacts/28/281926d4724ea31ee16076bfcf1e0bb7 new file mode 100644 index 0000000..f2770fc Binary files /dev/null and b/Library/Artifacts/28/281926d4724ea31ee16076bfcf1e0bb7 differ diff --git a/Library/Artifacts/28/286407a34e473d302fdf735eda5c08e7 b/Library/Artifacts/28/286407a34e473d302fdf735eda5c08e7 new file mode 100644 index 0000000..a18c514 Binary files /dev/null and b/Library/Artifacts/28/286407a34e473d302fdf735eda5c08e7 differ diff --git a/Library/Artifacts/28/2870244d2b5ebd4c6f28ac01956ca8c6 b/Library/Artifacts/28/2870244d2b5ebd4c6f28ac01956ca8c6 new file mode 100644 index 0000000..4b05cdd Binary files /dev/null and b/Library/Artifacts/28/2870244d2b5ebd4c6f28ac01956ca8c6 differ diff --git a/Library/Artifacts/28/289a6c830bc6cacf90400adf49e4558a b/Library/Artifacts/28/289a6c830bc6cacf90400adf49e4558a new file mode 100644 index 0000000..98771aa Binary files /dev/null and b/Library/Artifacts/28/289a6c830bc6cacf90400adf49e4558a differ diff --git a/Library/Artifacts/28/28b31b654e2a5dd4c29d12283b360869 b/Library/Artifacts/28/28b31b654e2a5dd4c29d12283b360869 new file mode 100644 index 0000000..3140b73 Binary files /dev/null and b/Library/Artifacts/28/28b31b654e2a5dd4c29d12283b360869 differ diff --git a/Library/Artifacts/28/28b39cf5caf3e5855cbadd9e537f0c5c b/Library/Artifacts/28/28b39cf5caf3e5855cbadd9e537f0c5c new file mode 100644 index 0000000..3f15a03 Binary files /dev/null and b/Library/Artifacts/28/28b39cf5caf3e5855cbadd9e537f0c5c differ diff --git a/Library/Artifacts/28/28c36249fe2a689668bfa62c5fa468c3 b/Library/Artifacts/28/28c36249fe2a689668bfa62c5fa468c3 new file mode 100644 index 0000000..71645c7 Binary files /dev/null and b/Library/Artifacts/28/28c36249fe2a689668bfa62c5fa468c3 differ diff --git a/Library/Artifacts/28/28d64f4c7673eecc4db5ab9934b17191 b/Library/Artifacts/28/28d64f4c7673eecc4db5ab9934b17191 new file mode 100644 index 0000000..27d5242 Binary files /dev/null and b/Library/Artifacts/28/28d64f4c7673eecc4db5ab9934b17191 differ diff --git a/Library/Artifacts/29/2918ac1173809056418fa3e8f5c1566e b/Library/Artifacts/29/2918ac1173809056418fa3e8f5c1566e new file mode 100644 index 0000000..586feb6 Binary files /dev/null and b/Library/Artifacts/29/2918ac1173809056418fa3e8f5c1566e differ diff --git a/Library/Artifacts/29/291e6fa78e78b43bd309e62b4a47fa3a b/Library/Artifacts/29/291e6fa78e78b43bd309e62b4a47fa3a new file mode 100644 index 0000000..0c13e10 Binary files /dev/null and b/Library/Artifacts/29/291e6fa78e78b43bd309e62b4a47fa3a differ diff --git a/Library/Artifacts/29/29583576cf5027935294296491ac661a b/Library/Artifacts/29/29583576cf5027935294296491ac661a new file mode 100644 index 0000000..61a9c2b Binary files /dev/null and b/Library/Artifacts/29/29583576cf5027935294296491ac661a differ diff --git a/Library/Artifacts/29/2972b2823b8667bca3302f56b2498c13 b/Library/Artifacts/29/2972b2823b8667bca3302f56b2498c13 new file mode 100644 index 0000000..5a3ce33 Binary files /dev/null and b/Library/Artifacts/29/2972b2823b8667bca3302f56b2498c13 differ diff --git a/Library/Artifacts/29/297d71e9d264f83ebe6748bdeeec7f19 b/Library/Artifacts/29/297d71e9d264f83ebe6748bdeeec7f19 new file mode 100644 index 0000000..62d17a8 Binary files /dev/null and b/Library/Artifacts/29/297d71e9d264f83ebe6748bdeeec7f19 differ diff --git a/Library/Artifacts/29/298863f54983a58250ddea4f6ada464f b/Library/Artifacts/29/298863f54983a58250ddea4f6ada464f new file mode 100644 index 0000000..b9b8146 Binary files /dev/null and b/Library/Artifacts/29/298863f54983a58250ddea4f6ada464f differ diff --git a/Library/Artifacts/29/29afaf1afc7c495788878ff7541f356c b/Library/Artifacts/29/29afaf1afc7c495788878ff7541f356c new file mode 100644 index 0000000..c2ff56f Binary files /dev/null and b/Library/Artifacts/29/29afaf1afc7c495788878ff7541f356c differ diff --git a/Library/Artifacts/29/29d6a303899db1efd94f799fb41e95b0 b/Library/Artifacts/29/29d6a303899db1efd94f799fb41e95b0 new file mode 100644 index 0000000..0b0c9c1 Binary files /dev/null and b/Library/Artifacts/29/29d6a303899db1efd94f799fb41e95b0 differ diff --git a/Library/Artifacts/29/29f598483a2616983a699bcf24d36133 b/Library/Artifacts/29/29f598483a2616983a699bcf24d36133 new file mode 100644 index 0000000..7ce9ff4 Binary files /dev/null and b/Library/Artifacts/29/29f598483a2616983a699bcf24d36133 differ diff --git a/Library/Artifacts/2a/2a3f10bf521db6d390f27911aa93e501 b/Library/Artifacts/2a/2a3f10bf521db6d390f27911aa93e501 new file mode 100644 index 0000000..d1863ea Binary files /dev/null and b/Library/Artifacts/2a/2a3f10bf521db6d390f27911aa93e501 differ diff --git a/Library/Artifacts/2a/2a40cc060fc9fe26d30751d784864278 b/Library/Artifacts/2a/2a40cc060fc9fe26d30751d784864278 new file mode 100644 index 0000000..2466efd Binary files /dev/null and b/Library/Artifacts/2a/2a40cc060fc9fe26d30751d784864278 differ diff --git a/Library/Artifacts/2a/2a46da6c263fa896283ffed5cc0c65e6 b/Library/Artifacts/2a/2a46da6c263fa896283ffed5cc0c65e6 new file mode 100644 index 0000000..488f213 Binary files /dev/null and b/Library/Artifacts/2a/2a46da6c263fa896283ffed5cc0c65e6 differ diff --git a/Library/Artifacts/2a/2a4fc6e71962a80af60e19ab02c21e05 b/Library/Artifacts/2a/2a4fc6e71962a80af60e19ab02c21e05 new file mode 100644 index 0000000..b70fff4 Binary files /dev/null and b/Library/Artifacts/2a/2a4fc6e71962a80af60e19ab02c21e05 differ diff --git a/Library/Artifacts/2a/2a5eb0190a39f8840595027e9e26e377 b/Library/Artifacts/2a/2a5eb0190a39f8840595027e9e26e377 new file mode 100644 index 0000000..6255750 Binary files /dev/null and b/Library/Artifacts/2a/2a5eb0190a39f8840595027e9e26e377 differ diff --git a/Library/Artifacts/2a/2a639d2f1fb08d663f9eead7791c08bc b/Library/Artifacts/2a/2a639d2f1fb08d663f9eead7791c08bc new file mode 100644 index 0000000..0730d39 Binary files /dev/null and b/Library/Artifacts/2a/2a639d2f1fb08d663f9eead7791c08bc differ diff --git a/Library/Artifacts/2a/2a9f3ea5959137305503add33c689fb4 b/Library/Artifacts/2a/2a9f3ea5959137305503add33c689fb4 new file mode 100644 index 0000000..ee73dc6 Binary files /dev/null and b/Library/Artifacts/2a/2a9f3ea5959137305503add33c689fb4 differ diff --git a/Library/Artifacts/2a/2aab91c3fb78b378ff12c63e12fe2623 b/Library/Artifacts/2a/2aab91c3fb78b378ff12c63e12fe2623 new file mode 100644 index 0000000..5db57bb Binary files /dev/null and b/Library/Artifacts/2a/2aab91c3fb78b378ff12c63e12fe2623 differ diff --git a/Library/Artifacts/2a/2ab9d0c8595c0120c9ff93696968a0df b/Library/Artifacts/2a/2ab9d0c8595c0120c9ff93696968a0df new file mode 100644 index 0000000..3b35fc8 Binary files /dev/null and b/Library/Artifacts/2a/2ab9d0c8595c0120c9ff93696968a0df differ diff --git a/Library/Artifacts/2a/2ac14d0ccac534fdbc3ecd1c48df459a b/Library/Artifacts/2a/2ac14d0ccac534fdbc3ecd1c48df459a new file mode 100644 index 0000000..6e1f465 Binary files /dev/null and b/Library/Artifacts/2a/2ac14d0ccac534fdbc3ecd1c48df459a differ diff --git a/Library/Artifacts/2a/2aecdb2d7d43af9c8eabc2f0a7cd550a b/Library/Artifacts/2a/2aecdb2d7d43af9c8eabc2f0a7cd550a new file mode 100644 index 0000000..b732caa Binary files /dev/null and b/Library/Artifacts/2a/2aecdb2d7d43af9c8eabc2f0a7cd550a differ diff --git a/Library/Artifacts/2a/2af4e00ee70f46135b7339cd6c5d7e4d b/Library/Artifacts/2a/2af4e00ee70f46135b7339cd6c5d7e4d new file mode 100644 index 0000000..288fd25 Binary files /dev/null and b/Library/Artifacts/2a/2af4e00ee70f46135b7339cd6c5d7e4d differ diff --git a/Library/Artifacts/2b/2b68e1b3e6731659c167908fe4bf5e58 b/Library/Artifacts/2b/2b68e1b3e6731659c167908fe4bf5e58 new file mode 100644 index 0000000..a1a2ec5 Binary files /dev/null and b/Library/Artifacts/2b/2b68e1b3e6731659c167908fe4bf5e58 differ diff --git a/Library/Artifacts/2b/2b88e820f97b5b4136b3e373178e1684 b/Library/Artifacts/2b/2b88e820f97b5b4136b3e373178e1684 new file mode 100644 index 0000000..41845d6 Binary files /dev/null and b/Library/Artifacts/2b/2b88e820f97b5b4136b3e373178e1684 differ diff --git a/Library/Artifacts/2b/2bc934205710fd2a7442db35ded72b36 b/Library/Artifacts/2b/2bc934205710fd2a7442db35ded72b36 new file mode 100644 index 0000000..ca63219 Binary files /dev/null and b/Library/Artifacts/2b/2bc934205710fd2a7442db35ded72b36 differ diff --git a/Library/Artifacts/2c/2c6652c8406d1855b7e012da42b0af4d b/Library/Artifacts/2c/2c6652c8406d1855b7e012da42b0af4d new file mode 100644 index 0000000..5f7e0dd Binary files /dev/null and b/Library/Artifacts/2c/2c6652c8406d1855b7e012da42b0af4d differ diff --git a/Library/Artifacts/2c/2c77cedf48e47b5b1ddc825a5c58912f b/Library/Artifacts/2c/2c77cedf48e47b5b1ddc825a5c58912f new file mode 100644 index 0000000..766c35e Binary files /dev/null and b/Library/Artifacts/2c/2c77cedf48e47b5b1ddc825a5c58912f differ diff --git a/Library/Artifacts/2c/2c91a089ee249eb58efccaef37793514 b/Library/Artifacts/2c/2c91a089ee249eb58efccaef37793514 new file mode 100644 index 0000000..b3d0be6 Binary files /dev/null and b/Library/Artifacts/2c/2c91a089ee249eb58efccaef37793514 differ diff --git a/Library/Artifacts/2c/2ca91f637984213aab3f287234411981 b/Library/Artifacts/2c/2ca91f637984213aab3f287234411981 new file mode 100644 index 0000000..7cfac1e Binary files /dev/null and b/Library/Artifacts/2c/2ca91f637984213aab3f287234411981 differ diff --git a/Library/Artifacts/2c/2ce9edfaaf6d8ef3d0af67a54e0581b7 b/Library/Artifacts/2c/2ce9edfaaf6d8ef3d0af67a54e0581b7 new file mode 100644 index 0000000..50c744a Binary files /dev/null and b/Library/Artifacts/2c/2ce9edfaaf6d8ef3d0af67a54e0581b7 differ diff --git a/Library/Artifacts/2d/2d046856426d3c778737633c548ddb17 b/Library/Artifacts/2d/2d046856426d3c778737633c548ddb17 new file mode 100644 index 0000000..45e4dd5 Binary files /dev/null and b/Library/Artifacts/2d/2d046856426d3c778737633c548ddb17 differ diff --git a/Library/Artifacts/2d/2d13a6114d18e9678eb6ca16a3a6532a b/Library/Artifacts/2d/2d13a6114d18e9678eb6ca16a3a6532a new file mode 100644 index 0000000..7aa4f51 Binary files /dev/null and b/Library/Artifacts/2d/2d13a6114d18e9678eb6ca16a3a6532a differ diff --git a/Library/Artifacts/2d/2d15c853a2dd54457cb8407689e08fb2 b/Library/Artifacts/2d/2d15c853a2dd54457cb8407689e08fb2 new file mode 100644 index 0000000..8301f1b Binary files /dev/null and b/Library/Artifacts/2d/2d15c853a2dd54457cb8407689e08fb2 differ diff --git a/Library/Artifacts/2d/2d26fd41c7acc4484b9789790787c27a b/Library/Artifacts/2d/2d26fd41c7acc4484b9789790787c27a new file mode 100644 index 0000000..daa5a09 Binary files /dev/null and b/Library/Artifacts/2d/2d26fd41c7acc4484b9789790787c27a differ diff --git a/Library/Artifacts/2d/2d34c67b4104bcfc449886a0d2058512 b/Library/Artifacts/2d/2d34c67b4104bcfc449886a0d2058512 new file mode 100644 index 0000000..6ff8efb Binary files /dev/null and b/Library/Artifacts/2d/2d34c67b4104bcfc449886a0d2058512 differ diff --git a/Library/Artifacts/2d/2d397af2facb0ab3bd1ff80b4ac5d5dc b/Library/Artifacts/2d/2d397af2facb0ab3bd1ff80b4ac5d5dc new file mode 100644 index 0000000..4f0cd96 Binary files /dev/null and b/Library/Artifacts/2d/2d397af2facb0ab3bd1ff80b4ac5d5dc differ diff --git a/Library/Artifacts/2d/2d3b2d21b27e24a0687d7e8902f4044c b/Library/Artifacts/2d/2d3b2d21b27e24a0687d7e8902f4044c new file mode 100644 index 0000000..4935aaf Binary files /dev/null and b/Library/Artifacts/2d/2d3b2d21b27e24a0687d7e8902f4044c differ diff --git a/Library/Artifacts/2d/2d47daeab433f8c6d472ee46d31a521e b/Library/Artifacts/2d/2d47daeab433f8c6d472ee46d31a521e new file mode 100644 index 0000000..52a83f2 Binary files /dev/null and b/Library/Artifacts/2d/2d47daeab433f8c6d472ee46d31a521e differ diff --git a/Library/Artifacts/2d/2d6816c069efe4032730944ed1446dc8 b/Library/Artifacts/2d/2d6816c069efe4032730944ed1446dc8 new file mode 100644 index 0000000..76ce0e7 Binary files /dev/null and b/Library/Artifacts/2d/2d6816c069efe4032730944ed1446dc8 differ diff --git a/Library/Artifacts/2d/2d6c7ad1a495c32e7ddc9656f0572268 b/Library/Artifacts/2d/2d6c7ad1a495c32e7ddc9656f0572268 new file mode 100644 index 0000000..885121b Binary files /dev/null and b/Library/Artifacts/2d/2d6c7ad1a495c32e7ddc9656f0572268 differ diff --git a/Library/Artifacts/2d/2d800578c8211bb45229bc2d0cde29a4 b/Library/Artifacts/2d/2d800578c8211bb45229bc2d0cde29a4 new file mode 100644 index 0000000..021a313 Binary files /dev/null and b/Library/Artifacts/2d/2d800578c8211bb45229bc2d0cde29a4 differ diff --git a/Library/Artifacts/2d/2da413d3be1ebf868c6b1db65fb57023 b/Library/Artifacts/2d/2da413d3be1ebf868c6b1db65fb57023 new file mode 100644 index 0000000..dfac8c0 Binary files /dev/null and b/Library/Artifacts/2d/2da413d3be1ebf868c6b1db65fb57023 differ diff --git a/Library/Artifacts/2d/2db4c1f233ea48e930d0f0cc2b03fa1e b/Library/Artifacts/2d/2db4c1f233ea48e930d0f0cc2b03fa1e new file mode 100644 index 0000000..2537577 Binary files /dev/null and b/Library/Artifacts/2d/2db4c1f233ea48e930d0f0cc2b03fa1e differ diff --git a/Library/Artifacts/2d/2dc40698e571373c15108d428bc2685b b/Library/Artifacts/2d/2dc40698e571373c15108d428bc2685b new file mode 100644 index 0000000..ee8d78a Binary files /dev/null and b/Library/Artifacts/2d/2dc40698e571373c15108d428bc2685b differ diff --git a/Library/Artifacts/2d/2dd2a59a95a43bf7516b247440f9e57a b/Library/Artifacts/2d/2dd2a59a95a43bf7516b247440f9e57a new file mode 100644 index 0000000..53c2554 Binary files /dev/null and b/Library/Artifacts/2d/2dd2a59a95a43bf7516b247440f9e57a differ diff --git a/Library/Artifacts/2d/2deb424e52bfa507a6c4694bc6104ce2 b/Library/Artifacts/2d/2deb424e52bfa507a6c4694bc6104ce2 new file mode 100644 index 0000000..7939bf6 Binary files /dev/null and b/Library/Artifacts/2d/2deb424e52bfa507a6c4694bc6104ce2 differ diff --git a/Library/Artifacts/2d/2def1248e5a457fe7332e52226c567a7 b/Library/Artifacts/2d/2def1248e5a457fe7332e52226c567a7 new file mode 100644 index 0000000..4e14dc6 Binary files /dev/null and b/Library/Artifacts/2d/2def1248e5a457fe7332e52226c567a7 differ diff --git a/Library/Artifacts/2d/2dfe685af04e4130105c93599d234b56 b/Library/Artifacts/2d/2dfe685af04e4130105c93599d234b56 new file mode 100644 index 0000000..e3a7283 Binary files /dev/null and b/Library/Artifacts/2d/2dfe685af04e4130105c93599d234b56 differ diff --git a/Library/Artifacts/2e/2e161e30870657c4fa5fef6208e8039b b/Library/Artifacts/2e/2e161e30870657c4fa5fef6208e8039b new file mode 100644 index 0000000..dcceedf Binary files /dev/null and b/Library/Artifacts/2e/2e161e30870657c4fa5fef6208e8039b differ diff --git a/Library/Artifacts/2e/2e19b5693d4f0a4ddcdf9440be7bac47 b/Library/Artifacts/2e/2e19b5693d4f0a4ddcdf9440be7bac47 new file mode 100644 index 0000000..f4267ac Binary files /dev/null and b/Library/Artifacts/2e/2e19b5693d4f0a4ddcdf9440be7bac47 differ diff --git a/Library/Artifacts/2e/2e3aecf82820f25c465d396172ee0ceb b/Library/Artifacts/2e/2e3aecf82820f25c465d396172ee0ceb new file mode 100644 index 0000000..5f1be5c Binary files /dev/null and b/Library/Artifacts/2e/2e3aecf82820f25c465d396172ee0ceb differ diff --git a/Library/Artifacts/2e/2e6366d25792f17ac4a31df110c50f2d b/Library/Artifacts/2e/2e6366d25792f17ac4a31df110c50f2d new file mode 100644 index 0000000..f0359df Binary files /dev/null and b/Library/Artifacts/2e/2e6366d25792f17ac4a31df110c50f2d differ diff --git a/Library/Artifacts/2e/2e679b17b0b8efc7d0d4c1fc1cdae31f b/Library/Artifacts/2e/2e679b17b0b8efc7d0d4c1fc1cdae31f new file mode 100644 index 0000000..45ed57e Binary files /dev/null and b/Library/Artifacts/2e/2e679b17b0b8efc7d0d4c1fc1cdae31f differ diff --git a/Library/Artifacts/2e/2e7b70eacab6f7012a5a16b0f69bdf56 b/Library/Artifacts/2e/2e7b70eacab6f7012a5a16b0f69bdf56 new file mode 100644 index 0000000..b713163 Binary files /dev/null and b/Library/Artifacts/2e/2e7b70eacab6f7012a5a16b0f69bdf56 differ diff --git a/Library/Artifacts/2e/2e7e6a62bc2b9c1a7442052228010682 b/Library/Artifacts/2e/2e7e6a62bc2b9c1a7442052228010682 new file mode 100644 index 0000000..312af7b Binary files /dev/null and b/Library/Artifacts/2e/2e7e6a62bc2b9c1a7442052228010682 differ diff --git a/Library/Artifacts/2e/2e8a66aa1262caac54de87a4538f3b97 b/Library/Artifacts/2e/2e8a66aa1262caac54de87a4538f3b97 new file mode 100644 index 0000000..28bda87 Binary files /dev/null and b/Library/Artifacts/2e/2e8a66aa1262caac54de87a4538f3b97 differ diff --git a/Library/Artifacts/2e/2eaacffad43e22f5e8300415f6636e56 b/Library/Artifacts/2e/2eaacffad43e22f5e8300415f6636e56 new file mode 100644 index 0000000..e2bacbf Binary files /dev/null and b/Library/Artifacts/2e/2eaacffad43e22f5e8300415f6636e56 differ diff --git a/Library/Artifacts/2e/2ed64eef4953290c903646833accf1fd b/Library/Artifacts/2e/2ed64eef4953290c903646833accf1fd new file mode 100644 index 0000000..2b1affd Binary files /dev/null and b/Library/Artifacts/2e/2ed64eef4953290c903646833accf1fd differ diff --git a/Library/Artifacts/2e/2ede6af250f365011b922fd5686ac12f b/Library/Artifacts/2e/2ede6af250f365011b922fd5686ac12f new file mode 100644 index 0000000..09dae98 Binary files /dev/null and b/Library/Artifacts/2e/2ede6af250f365011b922fd5686ac12f differ diff --git a/Library/Artifacts/2e/2ee43c734f3d2c981c09437c0fe216ea b/Library/Artifacts/2e/2ee43c734f3d2c981c09437c0fe216ea new file mode 100644 index 0000000..da7a5d1 Binary files /dev/null and b/Library/Artifacts/2e/2ee43c734f3d2c981c09437c0fe216ea differ diff --git a/Library/Artifacts/2f/2f0e07adf97d2ebb4b04c37f95b0c44d b/Library/Artifacts/2f/2f0e07adf97d2ebb4b04c37f95b0c44d new file mode 100644 index 0000000..8dd2456 Binary files /dev/null and b/Library/Artifacts/2f/2f0e07adf97d2ebb4b04c37f95b0c44d differ diff --git a/Library/Artifacts/2f/2f1cb72b4271547f5cf324ac4c47d72c b/Library/Artifacts/2f/2f1cb72b4271547f5cf324ac4c47d72c new file mode 100644 index 0000000..70e5caa Binary files /dev/null and b/Library/Artifacts/2f/2f1cb72b4271547f5cf324ac4c47d72c differ diff --git a/Library/Artifacts/2f/2f598c409314086481eb12fd94578d67 b/Library/Artifacts/2f/2f598c409314086481eb12fd94578d67 new file mode 100644 index 0000000..2f75d89 Binary files /dev/null and b/Library/Artifacts/2f/2f598c409314086481eb12fd94578d67 differ diff --git a/Library/Artifacts/2f/2f5acd2149e3b2cc5bd1d9e67d013240 b/Library/Artifacts/2f/2f5acd2149e3b2cc5bd1d9e67d013240 new file mode 100644 index 0000000..3eb017f Binary files /dev/null and b/Library/Artifacts/2f/2f5acd2149e3b2cc5bd1d9e67d013240 differ diff --git a/Library/Artifacts/2f/2f8ddb3ea78b32a556947d23fd851a93 b/Library/Artifacts/2f/2f8ddb3ea78b32a556947d23fd851a93 new file mode 100644 index 0000000..20e44c7 Binary files /dev/null and b/Library/Artifacts/2f/2f8ddb3ea78b32a556947d23fd851a93 differ diff --git a/Library/Artifacts/2f/2f9e4144631ee9e8c2d94acbdeffb71a b/Library/Artifacts/2f/2f9e4144631ee9e8c2d94acbdeffb71a new file mode 100644 index 0000000..5949a7d Binary files /dev/null and b/Library/Artifacts/2f/2f9e4144631ee9e8c2d94acbdeffb71a differ diff --git a/Library/Artifacts/2f/2fb544ce88143a20124a98c8788bfea4 b/Library/Artifacts/2f/2fb544ce88143a20124a98c8788bfea4 new file mode 100644 index 0000000..3b1c8b7 Binary files /dev/null and b/Library/Artifacts/2f/2fb544ce88143a20124a98c8788bfea4 differ diff --git a/Library/Artifacts/2f/2fd02ce24774987bebcdbb704a2f539f b/Library/Artifacts/2f/2fd02ce24774987bebcdbb704a2f539f new file mode 100644 index 0000000..2cea987 Binary files /dev/null and b/Library/Artifacts/2f/2fd02ce24774987bebcdbb704a2f539f differ diff --git a/Library/Artifacts/2f/2ffdfb4061ea1ffd65fac0a3939435c8 b/Library/Artifacts/2f/2ffdfb4061ea1ffd65fac0a3939435c8 new file mode 100644 index 0000000..c4695c7 Binary files /dev/null and b/Library/Artifacts/2f/2ffdfb4061ea1ffd65fac0a3939435c8 differ diff --git a/Library/Artifacts/30/301d2a805b957408c729ce1b6d9d3f47 b/Library/Artifacts/30/301d2a805b957408c729ce1b6d9d3f47 new file mode 100644 index 0000000..162bf34 Binary files /dev/null and b/Library/Artifacts/30/301d2a805b957408c729ce1b6d9d3f47 differ diff --git a/Library/Artifacts/30/301fd2eed395c4189353dd7dde60107f b/Library/Artifacts/30/301fd2eed395c4189353dd7dde60107f new file mode 100644 index 0000000..e858d52 Binary files /dev/null and b/Library/Artifacts/30/301fd2eed395c4189353dd7dde60107f differ diff --git a/Library/Artifacts/30/3049b0bd638fc111bc305b762f306fbe b/Library/Artifacts/30/3049b0bd638fc111bc305b762f306fbe new file mode 100644 index 0000000..39d5931 Binary files /dev/null and b/Library/Artifacts/30/3049b0bd638fc111bc305b762f306fbe differ diff --git a/Library/Artifacts/30/30c36de558c38e95af42be4c94c8ca47 b/Library/Artifacts/30/30c36de558c38e95af42be4c94c8ca47 new file mode 100644 index 0000000..8735a7d Binary files /dev/null and b/Library/Artifacts/30/30c36de558c38e95af42be4c94c8ca47 differ diff --git a/Library/Artifacts/30/30d9ca95ee86b1309eb325c8fcb00c6e b/Library/Artifacts/30/30d9ca95ee86b1309eb325c8fcb00c6e new file mode 100644 index 0000000..efe1ae9 Binary files /dev/null and b/Library/Artifacts/30/30d9ca95ee86b1309eb325c8fcb00c6e differ diff --git a/Library/Artifacts/30/30e7743e3bd610c5551170d5350f027b b/Library/Artifacts/30/30e7743e3bd610c5551170d5350f027b new file mode 100644 index 0000000..2583d4a Binary files /dev/null and b/Library/Artifacts/30/30e7743e3bd610c5551170d5350f027b differ diff --git a/Library/Artifacts/31/312668af9dea74f2aa56ce565271855e b/Library/Artifacts/31/312668af9dea74f2aa56ce565271855e new file mode 100644 index 0000000..177d104 Binary files /dev/null and b/Library/Artifacts/31/312668af9dea74f2aa56ce565271855e differ diff --git a/Library/Artifacts/31/315ada3e0c1a3fd14057530e2cac0edd b/Library/Artifacts/31/315ada3e0c1a3fd14057530e2cac0edd new file mode 100644 index 0000000..cbffe31 Binary files /dev/null and b/Library/Artifacts/31/315ada3e0c1a3fd14057530e2cac0edd differ diff --git a/Library/Artifacts/31/317b8592f649e2c486d8c110f4722775 b/Library/Artifacts/31/317b8592f649e2c486d8c110f4722775 new file mode 100644 index 0000000..738220a Binary files /dev/null and b/Library/Artifacts/31/317b8592f649e2c486d8c110f4722775 differ diff --git a/Library/Artifacts/31/31bc5114ec235fb990f881cc9fc494c7 b/Library/Artifacts/31/31bc5114ec235fb990f881cc9fc494c7 new file mode 100644 index 0000000..4acba85 Binary files /dev/null and b/Library/Artifacts/31/31bc5114ec235fb990f881cc9fc494c7 differ diff --git a/Library/Artifacts/31/31beca7cb76d73dd1fd5575dea8ca112 b/Library/Artifacts/31/31beca7cb76d73dd1fd5575dea8ca112 new file mode 100644 index 0000000..546926f Binary files /dev/null and b/Library/Artifacts/31/31beca7cb76d73dd1fd5575dea8ca112 differ diff --git a/Library/Artifacts/32/321bdb0fcd5492bfed628b3efbd65363 b/Library/Artifacts/32/321bdb0fcd5492bfed628b3efbd65363 new file mode 100644 index 0000000..6429dfd Binary files /dev/null and b/Library/Artifacts/32/321bdb0fcd5492bfed628b3efbd65363 differ diff --git a/Library/Artifacts/32/3224578cc52c2d663121d7b12a6905cc b/Library/Artifacts/32/3224578cc52c2d663121d7b12a6905cc new file mode 100644 index 0000000..172a509 Binary files /dev/null and b/Library/Artifacts/32/3224578cc52c2d663121d7b12a6905cc differ diff --git a/Library/Artifacts/32/324ff5b06cd976c1f4aee6e4e5be618d b/Library/Artifacts/32/324ff5b06cd976c1f4aee6e4e5be618d new file mode 100644 index 0000000..84eb159 Binary files /dev/null and b/Library/Artifacts/32/324ff5b06cd976c1f4aee6e4e5be618d differ diff --git a/Library/Artifacts/32/3264579506ae054318d3abc566fa372b b/Library/Artifacts/32/3264579506ae054318d3abc566fa372b new file mode 100644 index 0000000..f4801c0 Binary files /dev/null and b/Library/Artifacts/32/3264579506ae054318d3abc566fa372b differ diff --git a/Library/Artifacts/32/3270b5e24dc92c48e2623939e143ec7f b/Library/Artifacts/32/3270b5e24dc92c48e2623939e143ec7f new file mode 100644 index 0000000..bfd3b9e Binary files /dev/null and b/Library/Artifacts/32/3270b5e24dc92c48e2623939e143ec7f differ diff --git a/Library/Artifacts/32/32973f34d956b0dabae256ff13a41c8c b/Library/Artifacts/32/32973f34d956b0dabae256ff13a41c8c new file mode 100644 index 0000000..8f661f2 Binary files /dev/null and b/Library/Artifacts/32/32973f34d956b0dabae256ff13a41c8c differ diff --git a/Library/Artifacts/32/32b392111233ac9dbd9bee2ba88231e8 b/Library/Artifacts/32/32b392111233ac9dbd9bee2ba88231e8 new file mode 100644 index 0000000..1b0dcee Binary files /dev/null and b/Library/Artifacts/32/32b392111233ac9dbd9bee2ba88231e8 differ diff --git a/Library/Artifacts/32/32d4837e3fd8e4435e8acae056f5ad5c b/Library/Artifacts/32/32d4837e3fd8e4435e8acae056f5ad5c new file mode 100644 index 0000000..b2ca2e0 Binary files /dev/null and b/Library/Artifacts/32/32d4837e3fd8e4435e8acae056f5ad5c differ diff --git a/Library/Artifacts/32/32fa1045ee42ffb9efb96417de89a95b b/Library/Artifacts/32/32fa1045ee42ffb9efb96417de89a95b new file mode 100644 index 0000000..49c3946 Binary files /dev/null and b/Library/Artifacts/32/32fa1045ee42ffb9efb96417de89a95b differ diff --git a/Library/Artifacts/33/3349deb6a19acff955a2b45a2606dbec b/Library/Artifacts/33/3349deb6a19acff955a2b45a2606dbec new file mode 100644 index 0000000..1483368 Binary files /dev/null and b/Library/Artifacts/33/3349deb6a19acff955a2b45a2606dbec differ diff --git a/Library/Artifacts/33/335bad2d558c113f9bb4a4456154d672 b/Library/Artifacts/33/335bad2d558c113f9bb4a4456154d672 new file mode 100644 index 0000000..6b92c51 Binary files /dev/null and b/Library/Artifacts/33/335bad2d558c113f9bb4a4456154d672 differ diff --git a/Library/Artifacts/33/3382a965eecdf89b5eb26acb1e6f55bd b/Library/Artifacts/33/3382a965eecdf89b5eb26acb1e6f55bd new file mode 100644 index 0000000..e58767d Binary files /dev/null and b/Library/Artifacts/33/3382a965eecdf89b5eb26acb1e6f55bd differ diff --git a/Library/Artifacts/33/3385164ff0f2110e465c5a303b9f4bcb b/Library/Artifacts/33/3385164ff0f2110e465c5a303b9f4bcb new file mode 100644 index 0000000..3452cc1 Binary files /dev/null and b/Library/Artifacts/33/3385164ff0f2110e465c5a303b9f4bcb differ diff --git a/Library/Artifacts/33/33beec57d7ad74409432a740f091640a b/Library/Artifacts/33/33beec57d7ad74409432a740f091640a new file mode 100644 index 0000000..2838dee Binary files /dev/null and b/Library/Artifacts/33/33beec57d7ad74409432a740f091640a differ diff --git a/Library/Artifacts/33/33c3f074a65af3fe0906e6143bd4938a b/Library/Artifacts/33/33c3f074a65af3fe0906e6143bd4938a new file mode 100644 index 0000000..da908e3 Binary files /dev/null and b/Library/Artifacts/33/33c3f074a65af3fe0906e6143bd4938a differ diff --git a/Library/Artifacts/33/33c85a05754fd1bc1304c880d1e90776 b/Library/Artifacts/33/33c85a05754fd1bc1304c880d1e90776 new file mode 100644 index 0000000..aca5124 Binary files /dev/null and b/Library/Artifacts/33/33c85a05754fd1bc1304c880d1e90776 differ diff --git a/Library/Artifacts/34/3401f569895bfe588b47919e226ce5d9 b/Library/Artifacts/34/3401f569895bfe588b47919e226ce5d9 new file mode 100644 index 0000000..5e1b483 Binary files /dev/null and b/Library/Artifacts/34/3401f569895bfe588b47919e226ce5d9 differ diff --git a/Library/Artifacts/34/341a94dc9264ad3e1b548755748d7701 b/Library/Artifacts/34/341a94dc9264ad3e1b548755748d7701 new file mode 100644 index 0000000..e294cbd Binary files /dev/null and b/Library/Artifacts/34/341a94dc9264ad3e1b548755748d7701 differ diff --git a/Library/Artifacts/34/343251472939edc9c5250462104058e1 b/Library/Artifacts/34/343251472939edc9c5250462104058e1 new file mode 100644 index 0000000..83eddcb Binary files /dev/null and b/Library/Artifacts/34/343251472939edc9c5250462104058e1 differ diff --git a/Library/Artifacts/34/347169001b4c61ecff454f84797945b8 b/Library/Artifacts/34/347169001b4c61ecff454f84797945b8 new file mode 100644 index 0000000..2cf70c8 Binary files /dev/null and b/Library/Artifacts/34/347169001b4c61ecff454f84797945b8 differ diff --git a/Library/Artifacts/34/34d180573097fa37769eaeafdf84cf33 b/Library/Artifacts/34/34d180573097fa37769eaeafdf84cf33 new file mode 100644 index 0000000..3850cb5 Binary files /dev/null and b/Library/Artifacts/34/34d180573097fa37769eaeafdf84cf33 differ diff --git a/Library/Artifacts/34/34ef35b05d598a45a77b984b96185552 b/Library/Artifacts/34/34ef35b05d598a45a77b984b96185552 new file mode 100644 index 0000000..3ba0caa Binary files /dev/null and b/Library/Artifacts/34/34ef35b05d598a45a77b984b96185552 differ diff --git a/Library/Artifacts/34/34f5db02d3be0a121484cdc8d231c846 b/Library/Artifacts/34/34f5db02d3be0a121484cdc8d231c846 new file mode 100644 index 0000000..e75eb4d Binary files /dev/null and b/Library/Artifacts/34/34f5db02d3be0a121484cdc8d231c846 differ diff --git a/Library/Artifacts/35/3503831e4a5b7c73ed72db46b43150b0 b/Library/Artifacts/35/3503831e4a5b7c73ed72db46b43150b0 new file mode 100644 index 0000000..0c7f790 Binary files /dev/null and b/Library/Artifacts/35/3503831e4a5b7c73ed72db46b43150b0 differ diff --git a/Library/Artifacts/35/354d2071148d66f402a7809a5cfc4a51 b/Library/Artifacts/35/354d2071148d66f402a7809a5cfc4a51 new file mode 100644 index 0000000..605db46 Binary files /dev/null and b/Library/Artifacts/35/354d2071148d66f402a7809a5cfc4a51 differ diff --git a/Library/Artifacts/35/354e1039a9f2643098eccc2fc61c427c b/Library/Artifacts/35/354e1039a9f2643098eccc2fc61c427c new file mode 100644 index 0000000..3d6e3c3 Binary files /dev/null and b/Library/Artifacts/35/354e1039a9f2643098eccc2fc61c427c differ diff --git a/Library/Artifacts/35/35ab59ecaa7e98215717959bb4fd9c26 b/Library/Artifacts/35/35ab59ecaa7e98215717959bb4fd9c26 new file mode 100644 index 0000000..5ee0b25 Binary files /dev/null and b/Library/Artifacts/35/35ab59ecaa7e98215717959bb4fd9c26 differ diff --git a/Library/Artifacts/35/35d7ad3baae9b01ab954261fa53623c0 b/Library/Artifacts/35/35d7ad3baae9b01ab954261fa53623c0 new file mode 100644 index 0000000..4949bc5 Binary files /dev/null and b/Library/Artifacts/35/35d7ad3baae9b01ab954261fa53623c0 differ diff --git a/Library/Artifacts/35/35eb2f0c8682e3ae45ce814c54dea864 b/Library/Artifacts/35/35eb2f0c8682e3ae45ce814c54dea864 new file mode 100644 index 0000000..16c3868 Binary files /dev/null and b/Library/Artifacts/35/35eb2f0c8682e3ae45ce814c54dea864 differ diff --git a/Library/Artifacts/36/361ecc7cf12e07f537660808035b16c2 b/Library/Artifacts/36/361ecc7cf12e07f537660808035b16c2 new file mode 100644 index 0000000..325eefb Binary files /dev/null and b/Library/Artifacts/36/361ecc7cf12e07f537660808035b16c2 differ diff --git a/Library/Artifacts/36/36271a414999dbe86b3542b35f12a54f b/Library/Artifacts/36/36271a414999dbe86b3542b35f12a54f new file mode 100644 index 0000000..dde473f Binary files /dev/null and b/Library/Artifacts/36/36271a414999dbe86b3542b35f12a54f differ diff --git a/Library/Artifacts/36/362e921f169914be7f2cf34db49d7627 b/Library/Artifacts/36/362e921f169914be7f2cf34db49d7627 new file mode 100644 index 0000000..d099d4f Binary files /dev/null and b/Library/Artifacts/36/362e921f169914be7f2cf34db49d7627 differ diff --git a/Library/Artifacts/36/36501e7a70023408d06e6757b30bcb87 b/Library/Artifacts/36/36501e7a70023408d06e6757b30bcb87 new file mode 100644 index 0000000..6147e46 Binary files /dev/null and b/Library/Artifacts/36/36501e7a70023408d06e6757b30bcb87 differ diff --git a/Library/Artifacts/36/365c72d07def68bae45f03812ea45428 b/Library/Artifacts/36/365c72d07def68bae45f03812ea45428 new file mode 100644 index 0000000..7affddc Binary files /dev/null and b/Library/Artifacts/36/365c72d07def68bae45f03812ea45428 differ diff --git a/Library/Artifacts/36/36b18550013537b0a5ed9e1d05b6d154 b/Library/Artifacts/36/36b18550013537b0a5ed9e1d05b6d154 new file mode 100644 index 0000000..7222caa Binary files /dev/null and b/Library/Artifacts/36/36b18550013537b0a5ed9e1d05b6d154 differ diff --git a/Library/Artifacts/36/36f062a0c18e3316e6032c357cd53964 b/Library/Artifacts/36/36f062a0c18e3316e6032c357cd53964 new file mode 100644 index 0000000..c8becff Binary files /dev/null and b/Library/Artifacts/36/36f062a0c18e3316e6032c357cd53964 differ diff --git a/Library/Artifacts/37/37182cae5e3b03eecbe4b6f1c4e2d571 b/Library/Artifacts/37/37182cae5e3b03eecbe4b6f1c4e2d571 new file mode 100644 index 0000000..0bda472 Binary files /dev/null and b/Library/Artifacts/37/37182cae5e3b03eecbe4b6f1c4e2d571 differ diff --git a/Library/Artifacts/37/3732481feaf57d118b3e570754dbe624 b/Library/Artifacts/37/3732481feaf57d118b3e570754dbe624 new file mode 100644 index 0000000..1a13756 Binary files /dev/null and b/Library/Artifacts/37/3732481feaf57d118b3e570754dbe624 differ diff --git a/Library/Artifacts/37/37341ff92dd6495dc9b71e1274804931 b/Library/Artifacts/37/37341ff92dd6495dc9b71e1274804931 new file mode 100644 index 0000000..5b49ea0 Binary files /dev/null and b/Library/Artifacts/37/37341ff92dd6495dc9b71e1274804931 differ diff --git a/Library/Artifacts/37/3743d9bf595c213b1860656e7b84ebef b/Library/Artifacts/37/3743d9bf595c213b1860656e7b84ebef new file mode 100644 index 0000000..61ea3cd Binary files /dev/null and b/Library/Artifacts/37/3743d9bf595c213b1860656e7b84ebef differ diff --git a/Library/Artifacts/37/3774b8849280816ded8e29992412ee83 b/Library/Artifacts/37/3774b8849280816ded8e29992412ee83 new file mode 100644 index 0000000..7e18f30 Binary files /dev/null and b/Library/Artifacts/37/3774b8849280816ded8e29992412ee83 differ diff --git a/Library/Artifacts/37/37bee9b8072e9e71f4af6ef5152ac205 b/Library/Artifacts/37/37bee9b8072e9e71f4af6ef5152ac205 new file mode 100644 index 0000000..c3028e4 Binary files /dev/null and b/Library/Artifacts/37/37bee9b8072e9e71f4af6ef5152ac205 differ diff --git a/Library/Artifacts/37/37c59abe93024dd5a6fc868867635c5f b/Library/Artifacts/37/37c59abe93024dd5a6fc868867635c5f new file mode 100644 index 0000000..cf06081 Binary files /dev/null and b/Library/Artifacts/37/37c59abe93024dd5a6fc868867635c5f differ diff --git a/Library/Artifacts/37/37fcca6461bfc0a47496c6967d4d02a2 b/Library/Artifacts/37/37fcca6461bfc0a47496c6967d4d02a2 new file mode 100644 index 0000000..8f31082 Binary files /dev/null and b/Library/Artifacts/37/37fcca6461bfc0a47496c6967d4d02a2 differ diff --git a/Library/Artifacts/38/383aa5b5931903201dbc27c9ed0b3788 b/Library/Artifacts/38/383aa5b5931903201dbc27c9ed0b3788 new file mode 100644 index 0000000..4d2ae17 Binary files /dev/null and b/Library/Artifacts/38/383aa5b5931903201dbc27c9ed0b3788 differ diff --git a/Library/Artifacts/38/385efd742b657f4cf22a05d563c13cc7 b/Library/Artifacts/38/385efd742b657f4cf22a05d563c13cc7 new file mode 100644 index 0000000..3b0def4 Binary files /dev/null and b/Library/Artifacts/38/385efd742b657f4cf22a05d563c13cc7 differ diff --git a/Library/Artifacts/38/3864b5046d096af00a87c1b01a22f57d b/Library/Artifacts/38/3864b5046d096af00a87c1b01a22f57d new file mode 100644 index 0000000..6469275 Binary files /dev/null and b/Library/Artifacts/38/3864b5046d096af00a87c1b01a22f57d differ diff --git a/Library/Artifacts/38/38674ceede9440fa867879c929cc7128 b/Library/Artifacts/38/38674ceede9440fa867879c929cc7128 new file mode 100644 index 0000000..e7bba4e Binary files /dev/null and b/Library/Artifacts/38/38674ceede9440fa867879c929cc7128 differ diff --git a/Library/Artifacts/38/38afeb9bf13001cbba0f8e0e53afe939 b/Library/Artifacts/38/38afeb9bf13001cbba0f8e0e53afe939 new file mode 100644 index 0000000..1765e1e Binary files /dev/null and b/Library/Artifacts/38/38afeb9bf13001cbba0f8e0e53afe939 differ diff --git a/Library/Artifacts/38/38cb174f9dc3e65bff9811dc9ec99365 b/Library/Artifacts/38/38cb174f9dc3e65bff9811dc9ec99365 new file mode 100644 index 0000000..d60023d Binary files /dev/null and b/Library/Artifacts/38/38cb174f9dc3e65bff9811dc9ec99365 differ diff --git a/Library/Artifacts/38/38ece29a20655176c21eaf50a5f1b48f b/Library/Artifacts/38/38ece29a20655176c21eaf50a5f1b48f new file mode 100644 index 0000000..908cb34 Binary files /dev/null and b/Library/Artifacts/38/38ece29a20655176c21eaf50a5f1b48f differ diff --git a/Library/Artifacts/39/39781d2524cf795e9f7d37b7ebfc8b08 b/Library/Artifacts/39/39781d2524cf795e9f7d37b7ebfc8b08 new file mode 100644 index 0000000..12cebf3 Binary files /dev/null and b/Library/Artifacts/39/39781d2524cf795e9f7d37b7ebfc8b08 differ diff --git a/Library/Artifacts/39/39790732c38055402bff2e56ceb97e13 b/Library/Artifacts/39/39790732c38055402bff2e56ceb97e13 new file mode 100644 index 0000000..bfd1f0f Binary files /dev/null and b/Library/Artifacts/39/39790732c38055402bff2e56ceb97e13 differ diff --git a/Library/Artifacts/39/397ef13224430f6a80ead48fba5ecf23 b/Library/Artifacts/39/397ef13224430f6a80ead48fba5ecf23 new file mode 100644 index 0000000..94b4cba Binary files /dev/null and b/Library/Artifacts/39/397ef13224430f6a80ead48fba5ecf23 differ diff --git a/Library/Artifacts/39/398bc5c4136b1ccdcdd9e670e44390c8 b/Library/Artifacts/39/398bc5c4136b1ccdcdd9e670e44390c8 new file mode 100644 index 0000000..f49156a Binary files /dev/null and b/Library/Artifacts/39/398bc5c4136b1ccdcdd9e670e44390c8 differ diff --git a/Library/Artifacts/39/39d15b1e409260b2205ede5f464ff657 b/Library/Artifacts/39/39d15b1e409260b2205ede5f464ff657 new file mode 100644 index 0000000..9408a0b Binary files /dev/null and b/Library/Artifacts/39/39d15b1e409260b2205ede5f464ff657 differ diff --git a/Library/Artifacts/39/39e2cff297b33bfd280c3eeb8e2941d8 b/Library/Artifacts/39/39e2cff297b33bfd280c3eeb8e2941d8 new file mode 100644 index 0000000..cc0184a Binary files /dev/null and b/Library/Artifacts/39/39e2cff297b33bfd280c3eeb8e2941d8 differ diff --git a/Library/Artifacts/39/39fe1e01b34d4671e5ac75a1f55fabe8 b/Library/Artifacts/39/39fe1e01b34d4671e5ac75a1f55fabe8 new file mode 100644 index 0000000..8cf6a87 Binary files /dev/null and b/Library/Artifacts/39/39fe1e01b34d4671e5ac75a1f55fabe8 differ diff --git a/Library/Artifacts/3a/3a1389c2dc27e093b402a0090aa8ea60 b/Library/Artifacts/3a/3a1389c2dc27e093b402a0090aa8ea60 new file mode 100644 index 0000000..4b8ffb2 Binary files /dev/null and b/Library/Artifacts/3a/3a1389c2dc27e093b402a0090aa8ea60 differ diff --git a/Library/Artifacts/3a/3a15732453f6169a7c94279f3860640a b/Library/Artifacts/3a/3a15732453f6169a7c94279f3860640a new file mode 100644 index 0000000..a08922f Binary files /dev/null and b/Library/Artifacts/3a/3a15732453f6169a7c94279f3860640a differ diff --git a/Library/Artifacts/3a/3a2657edc13859e72cd3e4f5bd5b6986 b/Library/Artifacts/3a/3a2657edc13859e72cd3e4f5bd5b6986 new file mode 100644 index 0000000..4585d62 Binary files /dev/null and b/Library/Artifacts/3a/3a2657edc13859e72cd3e4f5bd5b6986 differ diff --git a/Library/Artifacts/3a/3a5ac3a06427268edf2760ec66fac357 b/Library/Artifacts/3a/3a5ac3a06427268edf2760ec66fac357 new file mode 100644 index 0000000..fa92074 Binary files /dev/null and b/Library/Artifacts/3a/3a5ac3a06427268edf2760ec66fac357 differ diff --git a/Library/Artifacts/3a/3a778e25a0c0f65736fa74bd67bf1cd9 b/Library/Artifacts/3a/3a778e25a0c0f65736fa74bd67bf1cd9 new file mode 100644 index 0000000..c81944b Binary files /dev/null and b/Library/Artifacts/3a/3a778e25a0c0f65736fa74bd67bf1cd9 differ diff --git a/Library/Artifacts/3a/3a81bc487d54498a786a43e6054fd332 b/Library/Artifacts/3a/3a81bc487d54498a786a43e6054fd332 new file mode 100644 index 0000000..522f246 Binary files /dev/null and b/Library/Artifacts/3a/3a81bc487d54498a786a43e6054fd332 differ diff --git a/Library/Artifacts/3a/3a9d5deca561a7bc6dd6b8b57efb3662 b/Library/Artifacts/3a/3a9d5deca561a7bc6dd6b8b57efb3662 new file mode 100644 index 0000000..87bd72e Binary files /dev/null and b/Library/Artifacts/3a/3a9d5deca561a7bc6dd6b8b57efb3662 differ diff --git a/Library/Artifacts/3a/3a9fe27216354b54b8de7c2bb6bbd0c6 b/Library/Artifacts/3a/3a9fe27216354b54b8de7c2bb6bbd0c6 new file mode 100644 index 0000000..42dc472 Binary files /dev/null and b/Library/Artifacts/3a/3a9fe27216354b54b8de7c2bb6bbd0c6 differ diff --git a/Library/Artifacts/3a/3ae9207cc82c9731366ea439d804df8b b/Library/Artifacts/3a/3ae9207cc82c9731366ea439d804df8b new file mode 100644 index 0000000..a6fcf25 Binary files /dev/null and b/Library/Artifacts/3a/3ae9207cc82c9731366ea439d804df8b differ diff --git a/Library/Artifacts/3a/3aeb4eb905325f971ed16f1afc471d8d b/Library/Artifacts/3a/3aeb4eb905325f971ed16f1afc471d8d new file mode 100644 index 0000000..6e89ed5 Binary files /dev/null and b/Library/Artifacts/3a/3aeb4eb905325f971ed16f1afc471d8d differ diff --git a/Library/Artifacts/3b/3b1d833e842629c9933cb068258fd0b8 b/Library/Artifacts/3b/3b1d833e842629c9933cb068258fd0b8 new file mode 100644 index 0000000..c53834a Binary files /dev/null and b/Library/Artifacts/3b/3b1d833e842629c9933cb068258fd0b8 differ diff --git a/Library/Artifacts/3b/3b2f254f4ae5a12770fa34ab0f6ec4e0 b/Library/Artifacts/3b/3b2f254f4ae5a12770fa34ab0f6ec4e0 new file mode 100644 index 0000000..90b42bb Binary files /dev/null and b/Library/Artifacts/3b/3b2f254f4ae5a12770fa34ab0f6ec4e0 differ diff --git a/Library/Artifacts/3b/3b530266bf2a19efadf0f2d5229a98ce b/Library/Artifacts/3b/3b530266bf2a19efadf0f2d5229a98ce new file mode 100644 index 0000000..f87fe6c Binary files /dev/null and b/Library/Artifacts/3b/3b530266bf2a19efadf0f2d5229a98ce differ diff --git a/Library/Artifacts/3b/3b76e03cc6134422d4670a14dab598d2 b/Library/Artifacts/3b/3b76e03cc6134422d4670a14dab598d2 new file mode 100644 index 0000000..fb2def4 Binary files /dev/null and b/Library/Artifacts/3b/3b76e03cc6134422d4670a14dab598d2 differ diff --git a/Library/Artifacts/3b/3b943ac5ed378b10841ce5ea3df9268b b/Library/Artifacts/3b/3b943ac5ed378b10841ce5ea3df9268b new file mode 100644 index 0000000..be7142b Binary files /dev/null and b/Library/Artifacts/3b/3b943ac5ed378b10841ce5ea3df9268b differ diff --git a/Library/Artifacts/3b/3bc8b71d44039fe569bba4d360ecb528 b/Library/Artifacts/3b/3bc8b71d44039fe569bba4d360ecb528 new file mode 100644 index 0000000..bd096f6 Binary files /dev/null and b/Library/Artifacts/3b/3bc8b71d44039fe569bba4d360ecb528 differ diff --git a/Library/Artifacts/3b/3bd0916cd42f6ffef68f749fed9bceef b/Library/Artifacts/3b/3bd0916cd42f6ffef68f749fed9bceef new file mode 100644 index 0000000..149b81a Binary files /dev/null and b/Library/Artifacts/3b/3bd0916cd42f6ffef68f749fed9bceef differ diff --git a/Library/Artifacts/3c/3c1e68b24c69be058bab92573e06b0a0 b/Library/Artifacts/3c/3c1e68b24c69be058bab92573e06b0a0 new file mode 100644 index 0000000..6e80c0f Binary files /dev/null and b/Library/Artifacts/3c/3c1e68b24c69be058bab92573e06b0a0 differ diff --git a/Library/Artifacts/3c/3c222ea2d93d0580cc21e02887a24a78 b/Library/Artifacts/3c/3c222ea2d93d0580cc21e02887a24a78 new file mode 100644 index 0000000..2acb5a1 Binary files /dev/null and b/Library/Artifacts/3c/3c222ea2d93d0580cc21e02887a24a78 differ diff --git a/Library/Artifacts/3c/3c23a90c4f45eae3d1b5ab99a4a062db b/Library/Artifacts/3c/3c23a90c4f45eae3d1b5ab99a4a062db new file mode 100644 index 0000000..06346b8 Binary files /dev/null and b/Library/Artifacts/3c/3c23a90c4f45eae3d1b5ab99a4a062db differ diff --git a/Library/Artifacts/3c/3c5bf85ce9589d6ba599c04152d31fca b/Library/Artifacts/3c/3c5bf85ce9589d6ba599c04152d31fca new file mode 100644 index 0000000..10dd616 Binary files /dev/null and b/Library/Artifacts/3c/3c5bf85ce9589d6ba599c04152d31fca differ diff --git a/Library/Artifacts/3c/3c5fc2ee6adc9c67d2e05d6bfe1b596e b/Library/Artifacts/3c/3c5fc2ee6adc9c67d2e05d6bfe1b596e new file mode 100644 index 0000000..aa68e81 Binary files /dev/null and b/Library/Artifacts/3c/3c5fc2ee6adc9c67d2e05d6bfe1b596e differ diff --git a/Library/Artifacts/3c/3c63dea5360fe1c255a61c0d8b70766b b/Library/Artifacts/3c/3c63dea5360fe1c255a61c0d8b70766b new file mode 100644 index 0000000..6a069bd Binary files /dev/null and b/Library/Artifacts/3c/3c63dea5360fe1c255a61c0d8b70766b differ diff --git a/Library/Artifacts/3c/3c75b4969bcc2dad0f46ebca2d6689ac b/Library/Artifacts/3c/3c75b4969bcc2dad0f46ebca2d6689ac new file mode 100644 index 0000000..6d8512b Binary files /dev/null and b/Library/Artifacts/3c/3c75b4969bcc2dad0f46ebca2d6689ac differ diff --git a/Library/Artifacts/3c/3c7e6be7a7d590306dc1d09653307219 b/Library/Artifacts/3c/3c7e6be7a7d590306dc1d09653307219 new file mode 100644 index 0000000..5964801 Binary files /dev/null and b/Library/Artifacts/3c/3c7e6be7a7d590306dc1d09653307219 differ diff --git a/Library/Artifacts/3c/3c8dced30fa407e54001023558b357b5 b/Library/Artifacts/3c/3c8dced30fa407e54001023558b357b5 new file mode 100644 index 0000000..f4f378f Binary files /dev/null and b/Library/Artifacts/3c/3c8dced30fa407e54001023558b357b5 differ diff --git a/Library/Artifacts/3c/3c8e8c2d7c2920a90179727e479c5b7f b/Library/Artifacts/3c/3c8e8c2d7c2920a90179727e479c5b7f new file mode 100644 index 0000000..e2268bb Binary files /dev/null and b/Library/Artifacts/3c/3c8e8c2d7c2920a90179727e479c5b7f differ diff --git a/Library/Artifacts/3c/3cb5fa6c1d9f8c318419365236622fb1 b/Library/Artifacts/3c/3cb5fa6c1d9f8c318419365236622fb1 new file mode 100644 index 0000000..9b4c11b Binary files /dev/null and b/Library/Artifacts/3c/3cb5fa6c1d9f8c318419365236622fb1 differ diff --git a/Library/Artifacts/3c/3cb8bd0dd0387416a3c6e439eff90b14 b/Library/Artifacts/3c/3cb8bd0dd0387416a3c6e439eff90b14 new file mode 100644 index 0000000..02f99df Binary files /dev/null and b/Library/Artifacts/3c/3cb8bd0dd0387416a3c6e439eff90b14 differ diff --git a/Library/Artifacts/3c/3ccf9007523111492c8d627d665fbe27 b/Library/Artifacts/3c/3ccf9007523111492c8d627d665fbe27 new file mode 100644 index 0000000..355f18e Binary files /dev/null and b/Library/Artifacts/3c/3ccf9007523111492c8d627d665fbe27 differ diff --git a/Library/Artifacts/3c/3cf8f1ff2f7bdc4a1bd98888db8e962b b/Library/Artifacts/3c/3cf8f1ff2f7bdc4a1bd98888db8e962b new file mode 100644 index 0000000..a51cf8b Binary files /dev/null and b/Library/Artifacts/3c/3cf8f1ff2f7bdc4a1bd98888db8e962b differ diff --git a/Library/Artifacts/3d/3d1c5f6ea6a1001f2944cbff83b2f06b b/Library/Artifacts/3d/3d1c5f6ea6a1001f2944cbff83b2f06b new file mode 100644 index 0000000..da72b45 Binary files /dev/null and b/Library/Artifacts/3d/3d1c5f6ea6a1001f2944cbff83b2f06b differ diff --git a/Library/Artifacts/3d/3d2c7a6e7002cfd361b1636947e5b053 b/Library/Artifacts/3d/3d2c7a6e7002cfd361b1636947e5b053 new file mode 100644 index 0000000..62e251a Binary files /dev/null and b/Library/Artifacts/3d/3d2c7a6e7002cfd361b1636947e5b053 differ diff --git a/Library/Artifacts/3d/3d3a5bc9f869807a72c91bdc9d2b7cc7 b/Library/Artifacts/3d/3d3a5bc9f869807a72c91bdc9d2b7cc7 new file mode 100644 index 0000000..391e857 Binary files /dev/null and b/Library/Artifacts/3d/3d3a5bc9f869807a72c91bdc9d2b7cc7 differ diff --git a/Library/Artifacts/3d/3d630b977e5d612128c58fa8a32c36e1 b/Library/Artifacts/3d/3d630b977e5d612128c58fa8a32c36e1 new file mode 100644 index 0000000..7a11460 Binary files /dev/null and b/Library/Artifacts/3d/3d630b977e5d612128c58fa8a32c36e1 differ diff --git a/Library/Artifacts/3d/3da598fa08cfb9879b37424b8d3ca990 b/Library/Artifacts/3d/3da598fa08cfb9879b37424b8d3ca990 new file mode 100644 index 0000000..db0a883 Binary files /dev/null and b/Library/Artifacts/3d/3da598fa08cfb9879b37424b8d3ca990 differ diff --git a/Library/Artifacts/3d/3db3d10883cc59a5b1a53f419182747d b/Library/Artifacts/3d/3db3d10883cc59a5b1a53f419182747d new file mode 100644 index 0000000..98f5a73 Binary files /dev/null and b/Library/Artifacts/3d/3db3d10883cc59a5b1a53f419182747d differ diff --git a/Library/Artifacts/3d/3dbdc14834bb8604bb1a279662f36f4f b/Library/Artifacts/3d/3dbdc14834bb8604bb1a279662f36f4f new file mode 100644 index 0000000..24ef568 Binary files /dev/null and b/Library/Artifacts/3d/3dbdc14834bb8604bb1a279662f36f4f differ diff --git a/Library/Artifacts/3e/3e2b13f7282c0b5f9ef7e492b701646b b/Library/Artifacts/3e/3e2b13f7282c0b5f9ef7e492b701646b new file mode 100644 index 0000000..eb198cb Binary files /dev/null and b/Library/Artifacts/3e/3e2b13f7282c0b5f9ef7e492b701646b differ diff --git a/Library/Artifacts/3e/3e61efe0e0eb206b113706bb3c44f553 b/Library/Artifacts/3e/3e61efe0e0eb206b113706bb3c44f553 new file mode 100644 index 0000000..f42cddf Binary files /dev/null and b/Library/Artifacts/3e/3e61efe0e0eb206b113706bb3c44f553 differ diff --git a/Library/Artifacts/3e/3e63aa0693b152871219e337902cea39 b/Library/Artifacts/3e/3e63aa0693b152871219e337902cea39 new file mode 100644 index 0000000..d8e53df Binary files /dev/null and b/Library/Artifacts/3e/3e63aa0693b152871219e337902cea39 differ diff --git a/Library/Artifacts/3e/3e9662980825a5632afa7c374a16effe b/Library/Artifacts/3e/3e9662980825a5632afa7c374a16effe new file mode 100644 index 0000000..3910435 Binary files /dev/null and b/Library/Artifacts/3e/3e9662980825a5632afa7c374a16effe differ diff --git a/Library/Artifacts/3e/3ec3a5f7c9212e82803f398541fe776e b/Library/Artifacts/3e/3ec3a5f7c9212e82803f398541fe776e new file mode 100644 index 0000000..66b0800 Binary files /dev/null and b/Library/Artifacts/3e/3ec3a5f7c9212e82803f398541fe776e differ diff --git a/Library/Artifacts/3e/3ec4426e81931dc605d6ddfcff34c0a5 b/Library/Artifacts/3e/3ec4426e81931dc605d6ddfcff34c0a5 new file mode 100644 index 0000000..201bab3 Binary files /dev/null and b/Library/Artifacts/3e/3ec4426e81931dc605d6ddfcff34c0a5 differ diff --git a/Library/Artifacts/3e/3edd544d5d42958ae96cd328b7b29441 b/Library/Artifacts/3e/3edd544d5d42958ae96cd328b7b29441 new file mode 100644 index 0000000..f9377f4 Binary files /dev/null and b/Library/Artifacts/3e/3edd544d5d42958ae96cd328b7b29441 differ diff --git a/Library/Artifacts/3f/3f05eff81ba4052abf9506814e71e3e5 b/Library/Artifacts/3f/3f05eff81ba4052abf9506814e71e3e5 new file mode 100644 index 0000000..137ba92 Binary files /dev/null and b/Library/Artifacts/3f/3f05eff81ba4052abf9506814e71e3e5 differ diff --git a/Library/Artifacts/3f/3f1ef08dfdd9cf832ac69a11e5771eea b/Library/Artifacts/3f/3f1ef08dfdd9cf832ac69a11e5771eea new file mode 100644 index 0000000..65cf560 Binary files /dev/null and b/Library/Artifacts/3f/3f1ef08dfdd9cf832ac69a11e5771eea differ diff --git a/Library/Artifacts/3f/3f878ef34779674a3880a4f567a87ff5 b/Library/Artifacts/3f/3f878ef34779674a3880a4f567a87ff5 new file mode 100644 index 0000000..6747ee5 Binary files /dev/null and b/Library/Artifacts/3f/3f878ef34779674a3880a4f567a87ff5 differ diff --git a/Library/Artifacts/3f/3f92f7aa6fd6a645ef9c2a8238c583fa b/Library/Artifacts/3f/3f92f7aa6fd6a645ef9c2a8238c583fa new file mode 100644 index 0000000..a4d130c Binary files /dev/null and b/Library/Artifacts/3f/3f92f7aa6fd6a645ef9c2a8238c583fa differ diff --git a/Library/Artifacts/3f/3fcd33ac65176c3f001066bf09685d20 b/Library/Artifacts/3f/3fcd33ac65176c3f001066bf09685d20 new file mode 100644 index 0000000..ff5f96e Binary files /dev/null and b/Library/Artifacts/3f/3fcd33ac65176c3f001066bf09685d20 differ diff --git a/Library/Artifacts/3f/3fe35f992f6db62541f6cbc7412b98a8 b/Library/Artifacts/3f/3fe35f992f6db62541f6cbc7412b98a8 new file mode 100644 index 0000000..fee2445 Binary files /dev/null and b/Library/Artifacts/3f/3fe35f992f6db62541f6cbc7412b98a8 differ diff --git a/Library/Artifacts/3f/3ff0ece61151285b287b95561702749c b/Library/Artifacts/3f/3ff0ece61151285b287b95561702749c new file mode 100644 index 0000000..ef7c8be Binary files /dev/null and b/Library/Artifacts/3f/3ff0ece61151285b287b95561702749c differ diff --git a/Library/Artifacts/40/402744d5d73166a69c747aff798b4881 b/Library/Artifacts/40/402744d5d73166a69c747aff798b4881 new file mode 100644 index 0000000..90aeed9 Binary files /dev/null and b/Library/Artifacts/40/402744d5d73166a69c747aff798b4881 differ diff --git a/Library/Artifacts/40/4036416d3a3ec6b09d4e4f750d7aa074 b/Library/Artifacts/40/4036416d3a3ec6b09d4e4f750d7aa074 new file mode 100644 index 0000000..2134ca7 Binary files /dev/null and b/Library/Artifacts/40/4036416d3a3ec6b09d4e4f750d7aa074 differ diff --git a/Library/Artifacts/40/40566722eb2c9f8739ebd7bade9a3bcf b/Library/Artifacts/40/40566722eb2c9f8739ebd7bade9a3bcf new file mode 100644 index 0000000..d79195d Binary files /dev/null and b/Library/Artifacts/40/40566722eb2c9f8739ebd7bade9a3bcf differ diff --git a/Library/Artifacts/40/4060526106f1351562c62af7dcf020e3 b/Library/Artifacts/40/4060526106f1351562c62af7dcf020e3 new file mode 100644 index 0000000..5df178a Binary files /dev/null and b/Library/Artifacts/40/4060526106f1351562c62af7dcf020e3 differ diff --git a/Library/Artifacts/40/40a0fcfbf673d13b69bb4c2e946ce5d8 b/Library/Artifacts/40/40a0fcfbf673d13b69bb4c2e946ce5d8 new file mode 100644 index 0000000..c3d0d1c Binary files /dev/null and b/Library/Artifacts/40/40a0fcfbf673d13b69bb4c2e946ce5d8 differ diff --git a/Library/Artifacts/40/40d5022385263ea70b24096e0ee80ee5 b/Library/Artifacts/40/40d5022385263ea70b24096e0ee80ee5 new file mode 100644 index 0000000..aadfce0 Binary files /dev/null and b/Library/Artifacts/40/40d5022385263ea70b24096e0ee80ee5 differ diff --git a/Library/Artifacts/40/40efd143c8ddaaa139301193e6b51bec b/Library/Artifacts/40/40efd143c8ddaaa139301193e6b51bec new file mode 100644 index 0000000..7b66c59 Binary files /dev/null and b/Library/Artifacts/40/40efd143c8ddaaa139301193e6b51bec differ diff --git a/Library/Artifacts/41/411a14de3f1b19ad2f222e92ac3ae475 b/Library/Artifacts/41/411a14de3f1b19ad2f222e92ac3ae475 new file mode 100644 index 0000000..4a41c33 Binary files /dev/null and b/Library/Artifacts/41/411a14de3f1b19ad2f222e92ac3ae475 differ diff --git a/Library/Artifacts/41/41474f6a52a8d54f2ace0f5465d243b5 b/Library/Artifacts/41/41474f6a52a8d54f2ace0f5465d243b5 new file mode 100644 index 0000000..18b706f Binary files /dev/null and b/Library/Artifacts/41/41474f6a52a8d54f2ace0f5465d243b5 differ diff --git a/Library/Artifacts/41/4157ade204c4f070b310aca0194abafc b/Library/Artifacts/41/4157ade204c4f070b310aca0194abafc new file mode 100644 index 0000000..1868d25 Binary files /dev/null and b/Library/Artifacts/41/4157ade204c4f070b310aca0194abafc differ diff --git a/Library/Artifacts/41/41a2f9bc68a7959e97a7283448572215 b/Library/Artifacts/41/41a2f9bc68a7959e97a7283448572215 new file mode 100644 index 0000000..d612d66 Binary files /dev/null and b/Library/Artifacts/41/41a2f9bc68a7959e97a7283448572215 differ diff --git a/Library/Artifacts/41/41bf1a5122f394241802d6a492d8df07 b/Library/Artifacts/41/41bf1a5122f394241802d6a492d8df07 new file mode 100644 index 0000000..5e6fbbd Binary files /dev/null and b/Library/Artifacts/41/41bf1a5122f394241802d6a492d8df07 differ diff --git a/Library/Artifacts/41/41c467a9c9c49e0d0a2d9e5a82b67bf7 b/Library/Artifacts/41/41c467a9c9c49e0d0a2d9e5a82b67bf7 new file mode 100644 index 0000000..1339c02 Binary files /dev/null and b/Library/Artifacts/41/41c467a9c9c49e0d0a2d9e5a82b67bf7 differ diff --git a/Library/Artifacts/41/41c6c5869236961c25aec4229d604fdb b/Library/Artifacts/41/41c6c5869236961c25aec4229d604fdb new file mode 100644 index 0000000..ca295a2 Binary files /dev/null and b/Library/Artifacts/41/41c6c5869236961c25aec4229d604fdb differ diff --git a/Library/Artifacts/41/41ca25a256ad1a0c2570c6241d472941 b/Library/Artifacts/41/41ca25a256ad1a0c2570c6241d472941 new file mode 100644 index 0000000..7f741e6 Binary files /dev/null and b/Library/Artifacts/41/41ca25a256ad1a0c2570c6241d472941 differ diff --git a/Library/Artifacts/41/41d9a79dbbbc497ced7cfc28de499d55 b/Library/Artifacts/41/41d9a79dbbbc497ced7cfc28de499d55 new file mode 100644 index 0000000..9a66963 Binary files /dev/null and b/Library/Artifacts/41/41d9a79dbbbc497ced7cfc28de499d55 differ diff --git a/Library/Artifacts/42/4217cc97ae6d37b032893a26b89e70b7 b/Library/Artifacts/42/4217cc97ae6d37b032893a26b89e70b7 new file mode 100644 index 0000000..c2c86c6 Binary files /dev/null and b/Library/Artifacts/42/4217cc97ae6d37b032893a26b89e70b7 differ diff --git a/Library/Artifacts/42/4248afa1d6b4bd1e98f5fd0c9a8c36b0 b/Library/Artifacts/42/4248afa1d6b4bd1e98f5fd0c9a8c36b0 new file mode 100644 index 0000000..c581307 Binary files /dev/null and b/Library/Artifacts/42/4248afa1d6b4bd1e98f5fd0c9a8c36b0 differ diff --git a/Library/Artifacts/42/42703737c92de15d54911262efa55602 b/Library/Artifacts/42/42703737c92de15d54911262efa55602 new file mode 100644 index 0000000..68dac14 Binary files /dev/null and b/Library/Artifacts/42/42703737c92de15d54911262efa55602 differ diff --git a/Library/Artifacts/42/427f0e0a4d3979571cddb417460ae4fa b/Library/Artifacts/42/427f0e0a4d3979571cddb417460ae4fa new file mode 100644 index 0000000..c59112b Binary files /dev/null and b/Library/Artifacts/42/427f0e0a4d3979571cddb417460ae4fa differ diff --git a/Library/Artifacts/42/42aef199115ac73f464ea734ea1748c0 b/Library/Artifacts/42/42aef199115ac73f464ea734ea1748c0 new file mode 100644 index 0000000..89288ca Binary files /dev/null and b/Library/Artifacts/42/42aef199115ac73f464ea734ea1748c0 differ diff --git a/Library/Artifacts/42/42cd75f3c044a0a48c1bbbd640fc3ddd b/Library/Artifacts/42/42cd75f3c044a0a48c1bbbd640fc3ddd new file mode 100644 index 0000000..4c6ba03 Binary files /dev/null and b/Library/Artifacts/42/42cd75f3c044a0a48c1bbbd640fc3ddd differ diff --git a/Library/Artifacts/42/42d4b171c4e7281d3e4496e5d8943c9c b/Library/Artifacts/42/42d4b171c4e7281d3e4496e5d8943c9c new file mode 100644 index 0000000..ba65b23 Binary files /dev/null and b/Library/Artifacts/42/42d4b171c4e7281d3e4496e5d8943c9c differ diff --git a/Library/Artifacts/42/42e6d3e43dd895e1eb70539504e08ddb b/Library/Artifacts/42/42e6d3e43dd895e1eb70539504e08ddb new file mode 100644 index 0000000..281a6c2 Binary files /dev/null and b/Library/Artifacts/42/42e6d3e43dd895e1eb70539504e08ddb differ diff --git a/Library/Artifacts/42/42edddce4a9dbcf4d55e6fe2e4ef2d6d b/Library/Artifacts/42/42edddce4a9dbcf4d55e6fe2e4ef2d6d new file mode 100644 index 0000000..46836ed Binary files /dev/null and b/Library/Artifacts/42/42edddce4a9dbcf4d55e6fe2e4ef2d6d differ diff --git a/Library/Artifacts/43/43063e66fd9e50da99ce020d6926728d b/Library/Artifacts/43/43063e66fd9e50da99ce020d6926728d new file mode 100644 index 0000000..f179c97 Binary files /dev/null and b/Library/Artifacts/43/43063e66fd9e50da99ce020d6926728d differ diff --git a/Library/Artifacts/43/435617e8f9bb2899eaae9f05b2b39bff b/Library/Artifacts/43/435617e8f9bb2899eaae9f05b2b39bff new file mode 100644 index 0000000..bde0448 Binary files /dev/null and b/Library/Artifacts/43/435617e8f9bb2899eaae9f05b2b39bff differ diff --git a/Library/Artifacts/43/43b6ed014b9e262cdebf6b4c4a01c075 b/Library/Artifacts/43/43b6ed014b9e262cdebf6b4c4a01c075 new file mode 100644 index 0000000..81b5784 Binary files /dev/null and b/Library/Artifacts/43/43b6ed014b9e262cdebf6b4c4a01c075 differ diff --git a/Library/Artifacts/43/43f12dd76f8c054715746877e810df7c b/Library/Artifacts/43/43f12dd76f8c054715746877e810df7c new file mode 100644 index 0000000..d448d8c Binary files /dev/null and b/Library/Artifacts/43/43f12dd76f8c054715746877e810df7c differ diff --git a/Library/Artifacts/43/43f3a3e8a27deac9aa4331f5fd152530 b/Library/Artifacts/43/43f3a3e8a27deac9aa4331f5fd152530 new file mode 100644 index 0000000..08ef461 Binary files /dev/null and b/Library/Artifacts/43/43f3a3e8a27deac9aa4331f5fd152530 differ diff --git a/Library/Artifacts/44/44919ddefd86d17c716dfce8db75dbb3 b/Library/Artifacts/44/44919ddefd86d17c716dfce8db75dbb3 new file mode 100644 index 0000000..8a0579c Binary files /dev/null and b/Library/Artifacts/44/44919ddefd86d17c716dfce8db75dbb3 differ diff --git a/Library/Artifacts/44/44a681d3fbbd75d77ef33bad802183ba b/Library/Artifacts/44/44a681d3fbbd75d77ef33bad802183ba new file mode 100644 index 0000000..8aaafc2 Binary files /dev/null and b/Library/Artifacts/44/44a681d3fbbd75d77ef33bad802183ba differ diff --git a/Library/Artifacts/44/44b24fe387bbbef1f8c734b1e1deb19f b/Library/Artifacts/44/44b24fe387bbbef1f8c734b1e1deb19f new file mode 100644 index 0000000..9b43cc9 Binary files /dev/null and b/Library/Artifacts/44/44b24fe387bbbef1f8c734b1e1deb19f differ diff --git a/Library/Artifacts/44/44de0c2d60381221b770b9152573e015 b/Library/Artifacts/44/44de0c2d60381221b770b9152573e015 new file mode 100644 index 0000000..81f8e3e Binary files /dev/null and b/Library/Artifacts/44/44de0c2d60381221b770b9152573e015 differ diff --git a/Library/Artifacts/45/451ff88d0441d72891f1bd591f3b78b3 b/Library/Artifacts/45/451ff88d0441d72891f1bd591f3b78b3 new file mode 100644 index 0000000..fc5a5e7 Binary files /dev/null and b/Library/Artifacts/45/451ff88d0441d72891f1bd591f3b78b3 differ diff --git a/Library/Artifacts/45/45230813f12712d0ca45da1cd76024ff b/Library/Artifacts/45/45230813f12712d0ca45da1cd76024ff new file mode 100644 index 0000000..be4987f Binary files /dev/null and b/Library/Artifacts/45/45230813f12712d0ca45da1cd76024ff differ diff --git a/Library/Artifacts/45/4562c20301314525c819982c48916224 b/Library/Artifacts/45/4562c20301314525c819982c48916224 new file mode 100644 index 0000000..db3ca7c Binary files /dev/null and b/Library/Artifacts/45/4562c20301314525c819982c48916224 differ diff --git a/Library/Artifacts/45/456675b11c452e6b467df348326b9538 b/Library/Artifacts/45/456675b11c452e6b467df348326b9538 new file mode 100644 index 0000000..be02d68 Binary files /dev/null and b/Library/Artifacts/45/456675b11c452e6b467df348326b9538 differ diff --git a/Library/Artifacts/45/45a5d37e50a1514472722fe23e70f8ea b/Library/Artifacts/45/45a5d37e50a1514472722fe23e70f8ea new file mode 100644 index 0000000..d557766 Binary files /dev/null and b/Library/Artifacts/45/45a5d37e50a1514472722fe23e70f8ea differ diff --git a/Library/Artifacts/45/45fee3a82bade186d9cf9dacfbb1c21f b/Library/Artifacts/45/45fee3a82bade186d9cf9dacfbb1c21f new file mode 100644 index 0000000..110a73f Binary files /dev/null and b/Library/Artifacts/45/45fee3a82bade186d9cf9dacfbb1c21f differ diff --git a/Library/Artifacts/46/463a42aed77bca52799cec520b5168df b/Library/Artifacts/46/463a42aed77bca52799cec520b5168df new file mode 100644 index 0000000..2193d69 Binary files /dev/null and b/Library/Artifacts/46/463a42aed77bca52799cec520b5168df differ diff --git a/Library/Artifacts/46/46959b1279cda5c3fd09242b2908c751 b/Library/Artifacts/46/46959b1279cda5c3fd09242b2908c751 new file mode 100644 index 0000000..36fd28b Binary files /dev/null and b/Library/Artifacts/46/46959b1279cda5c3fd09242b2908c751 differ diff --git a/Library/Artifacts/46/46a1ed0f67643d374db81bc2115d94f7 b/Library/Artifacts/46/46a1ed0f67643d374db81bc2115d94f7 new file mode 100644 index 0000000..f1b4d40 Binary files /dev/null and b/Library/Artifacts/46/46a1ed0f67643d374db81bc2115d94f7 differ diff --git a/Library/Artifacts/46/46c1d4f5e92261ffb61141441d58d306 b/Library/Artifacts/46/46c1d4f5e92261ffb61141441d58d306 new file mode 100644 index 0000000..27e9860 Binary files /dev/null and b/Library/Artifacts/46/46c1d4f5e92261ffb61141441d58d306 differ diff --git a/Library/Artifacts/46/46c8b5f5d878b32a73eb290cd17dcd87 b/Library/Artifacts/46/46c8b5f5d878b32a73eb290cd17dcd87 new file mode 100644 index 0000000..48d6075 Binary files /dev/null and b/Library/Artifacts/46/46c8b5f5d878b32a73eb290cd17dcd87 differ diff --git a/Library/Artifacts/46/46f5e090cbe26bd869c885c701f8d3e6 b/Library/Artifacts/46/46f5e090cbe26bd869c885c701f8d3e6 new file mode 100644 index 0000000..6ba8285 Binary files /dev/null and b/Library/Artifacts/46/46f5e090cbe26bd869c885c701f8d3e6 differ diff --git a/Library/Artifacts/47/475e85a4682e2ea7e6650b494dafb00e b/Library/Artifacts/47/475e85a4682e2ea7e6650b494dafb00e new file mode 100644 index 0000000..8f5316c Binary files /dev/null and b/Library/Artifacts/47/475e85a4682e2ea7e6650b494dafb00e differ diff --git a/Library/Artifacts/47/4775e4a018932639704c718b097c2432 b/Library/Artifacts/47/4775e4a018932639704c718b097c2432 new file mode 100644 index 0000000..a62efa4 Binary files /dev/null and b/Library/Artifacts/47/4775e4a018932639704c718b097c2432 differ diff --git a/Library/Artifacts/47/47c291148e962877cba9308e661300a1 b/Library/Artifacts/47/47c291148e962877cba9308e661300a1 new file mode 100644 index 0000000..a5ed84b Binary files /dev/null and b/Library/Artifacts/47/47c291148e962877cba9308e661300a1 differ diff --git a/Library/Artifacts/47/47efea990f9a75e3521b7bd933f50ded b/Library/Artifacts/47/47efea990f9a75e3521b7bd933f50ded new file mode 100644 index 0000000..95c199d Binary files /dev/null and b/Library/Artifacts/47/47efea990f9a75e3521b7bd933f50ded differ diff --git a/Library/Artifacts/47/47f8d2389840cdb37c5c17c6991f7844 b/Library/Artifacts/47/47f8d2389840cdb37c5c17c6991f7844 new file mode 100644 index 0000000..25e74e8 Binary files /dev/null and b/Library/Artifacts/47/47f8d2389840cdb37c5c17c6991f7844 differ diff --git a/Library/Artifacts/48/48077d180d3a51a6ad18529a947aaaf2 b/Library/Artifacts/48/48077d180d3a51a6ad18529a947aaaf2 new file mode 100644 index 0000000..578525c Binary files /dev/null and b/Library/Artifacts/48/48077d180d3a51a6ad18529a947aaaf2 differ diff --git a/Library/Artifacts/48/48415d307964981e80cfdf4ae34b7a14 b/Library/Artifacts/48/48415d307964981e80cfdf4ae34b7a14 new file mode 100644 index 0000000..39edafc Binary files /dev/null and b/Library/Artifacts/48/48415d307964981e80cfdf4ae34b7a14 differ diff --git a/Library/Artifacts/48/48493331c579ca2cbb397c9a5b5d05a1 b/Library/Artifacts/48/48493331c579ca2cbb397c9a5b5d05a1 new file mode 100644 index 0000000..84672a6 Binary files /dev/null and b/Library/Artifacts/48/48493331c579ca2cbb397c9a5b5d05a1 differ diff --git a/Library/Artifacts/48/484c0c823702e749e12051e570babbdd b/Library/Artifacts/48/484c0c823702e749e12051e570babbdd new file mode 100644 index 0000000..3afbf4c Binary files /dev/null and b/Library/Artifacts/48/484c0c823702e749e12051e570babbdd differ diff --git a/Library/Artifacts/48/485fbebced811a81c5ea29530090a9c7 b/Library/Artifacts/48/485fbebced811a81c5ea29530090a9c7 new file mode 100644 index 0000000..bc6437d Binary files /dev/null and b/Library/Artifacts/48/485fbebced811a81c5ea29530090a9c7 differ diff --git a/Library/Artifacts/48/48ac260389203e904a2ee2291a67226d b/Library/Artifacts/48/48ac260389203e904a2ee2291a67226d new file mode 100644 index 0000000..6ec5aa8 Binary files /dev/null and b/Library/Artifacts/48/48ac260389203e904a2ee2291a67226d differ diff --git a/Library/Artifacts/48/48c5d4861de490ae45f24bc34ef7b0bc b/Library/Artifacts/48/48c5d4861de490ae45f24bc34ef7b0bc new file mode 100644 index 0000000..ced6932 Binary files /dev/null and b/Library/Artifacts/48/48c5d4861de490ae45f24bc34ef7b0bc differ diff --git a/Library/Artifacts/48/48d33cfb4b4ffdb4ee3c6c8410b2c966 b/Library/Artifacts/48/48d33cfb4b4ffdb4ee3c6c8410b2c966 new file mode 100644 index 0000000..cb60850 Binary files /dev/null and b/Library/Artifacts/48/48d33cfb4b4ffdb4ee3c6c8410b2c966 differ diff --git a/Library/Artifacts/48/48e9384a2a721d9a3f7cfcd9e74e87f0 b/Library/Artifacts/48/48e9384a2a721d9a3f7cfcd9e74e87f0 new file mode 100644 index 0000000..d2e0fbc Binary files /dev/null and b/Library/Artifacts/48/48e9384a2a721d9a3f7cfcd9e74e87f0 differ diff --git a/Library/Artifacts/49/4908f0ffd8d43359346b6b1b2245dc7c b/Library/Artifacts/49/4908f0ffd8d43359346b6b1b2245dc7c new file mode 100644 index 0000000..bf028ee Binary files /dev/null and b/Library/Artifacts/49/4908f0ffd8d43359346b6b1b2245dc7c differ diff --git a/Library/Artifacts/49/49219a6c3008bc471f63ff1c3485a364 b/Library/Artifacts/49/49219a6c3008bc471f63ff1c3485a364 new file mode 100644 index 0000000..70c8f04 Binary files /dev/null and b/Library/Artifacts/49/49219a6c3008bc471f63ff1c3485a364 differ diff --git a/Library/Artifacts/49/49349c7178172509fd565e31d169cb7e b/Library/Artifacts/49/49349c7178172509fd565e31d169cb7e new file mode 100644 index 0000000..f191520 Binary files /dev/null and b/Library/Artifacts/49/49349c7178172509fd565e31d169cb7e differ diff --git a/Library/Artifacts/49/495c01f2ecb06b560af45ba04b92d81f b/Library/Artifacts/49/495c01f2ecb06b560af45ba04b92d81f new file mode 100644 index 0000000..47533a7 Binary files /dev/null and b/Library/Artifacts/49/495c01f2ecb06b560af45ba04b92d81f differ diff --git a/Library/Artifacts/49/496161e1b829f82c9df475a358ad5259 b/Library/Artifacts/49/496161e1b829f82c9df475a358ad5259 new file mode 100644 index 0000000..cda6971 Binary files /dev/null and b/Library/Artifacts/49/496161e1b829f82c9df475a358ad5259 differ diff --git a/Library/Artifacts/49/4972bcea320fa254e84a96408f9cf250 b/Library/Artifacts/49/4972bcea320fa254e84a96408f9cf250 new file mode 100644 index 0000000..d919076 Binary files /dev/null and b/Library/Artifacts/49/4972bcea320fa254e84a96408f9cf250 differ diff --git a/Library/Artifacts/49/499bacd702d016a64fce5562b31dfd00 b/Library/Artifacts/49/499bacd702d016a64fce5562b31dfd00 new file mode 100644 index 0000000..7a56bdc Binary files /dev/null and b/Library/Artifacts/49/499bacd702d016a64fce5562b31dfd00 differ diff --git a/Library/Artifacts/49/49b5d546d682406967dd04439e30b7b8 b/Library/Artifacts/49/49b5d546d682406967dd04439e30b7b8 new file mode 100644 index 0000000..1fffc2e Binary files /dev/null and b/Library/Artifacts/49/49b5d546d682406967dd04439e30b7b8 differ diff --git a/Library/Artifacts/49/49f8cfb33e70332a6308981e363abd98 b/Library/Artifacts/49/49f8cfb33e70332a6308981e363abd98 new file mode 100644 index 0000000..7e5f6e7 Binary files /dev/null and b/Library/Artifacts/49/49f8cfb33e70332a6308981e363abd98 differ diff --git a/Library/Artifacts/49/49fea4e482b1c2dd2603b13547491899 b/Library/Artifacts/49/49fea4e482b1c2dd2603b13547491899 new file mode 100644 index 0000000..2114674 Binary files /dev/null and b/Library/Artifacts/49/49fea4e482b1c2dd2603b13547491899 differ diff --git a/Library/Artifacts/4a/4a0dcddf38526cbd581fc57c982e8b62 b/Library/Artifacts/4a/4a0dcddf38526cbd581fc57c982e8b62 new file mode 100644 index 0000000..9f559fc Binary files /dev/null and b/Library/Artifacts/4a/4a0dcddf38526cbd581fc57c982e8b62 differ diff --git a/Library/Artifacts/4a/4a1c6784e29653e9eb5e1eeeac141a7b b/Library/Artifacts/4a/4a1c6784e29653e9eb5e1eeeac141a7b new file mode 100644 index 0000000..47adc2a Binary files /dev/null and b/Library/Artifacts/4a/4a1c6784e29653e9eb5e1eeeac141a7b differ diff --git a/Library/Artifacts/4a/4a4c6b6b165f76b9ea01cec93c5797df b/Library/Artifacts/4a/4a4c6b6b165f76b9ea01cec93c5797df new file mode 100644 index 0000000..c6dbe4c Binary files /dev/null and b/Library/Artifacts/4a/4a4c6b6b165f76b9ea01cec93c5797df differ diff --git a/Library/Artifacts/4a/4a4edce817438f1c4736544ffa0b77ff b/Library/Artifacts/4a/4a4edce817438f1c4736544ffa0b77ff new file mode 100644 index 0000000..fce7763 Binary files /dev/null and b/Library/Artifacts/4a/4a4edce817438f1c4736544ffa0b77ff differ diff --git a/Library/Artifacts/4a/4a6e1ecbf4ecc77d2d6f4f4ead2073b8 b/Library/Artifacts/4a/4a6e1ecbf4ecc77d2d6f4f4ead2073b8 new file mode 100644 index 0000000..5ea9c4b Binary files /dev/null and b/Library/Artifacts/4a/4a6e1ecbf4ecc77d2d6f4f4ead2073b8 differ diff --git a/Library/Artifacts/4a/4a7c69cbd83997fe57a7f0d1858d1b50 b/Library/Artifacts/4a/4a7c69cbd83997fe57a7f0d1858d1b50 new file mode 100644 index 0000000..ca17e40 Binary files /dev/null and b/Library/Artifacts/4a/4a7c69cbd83997fe57a7f0d1858d1b50 differ diff --git a/Library/Artifacts/4a/4aefece562ee24c8e69c472e009023c6 b/Library/Artifacts/4a/4aefece562ee24c8e69c472e009023c6 new file mode 100644 index 0000000..e781169 Binary files /dev/null and b/Library/Artifacts/4a/4aefece562ee24c8e69c472e009023c6 differ diff --git a/Library/Artifacts/4b/4b057751218064e3c9f7c874eefb4a70 b/Library/Artifacts/4b/4b057751218064e3c9f7c874eefb4a70 new file mode 100644 index 0000000..e6e5814 Binary files /dev/null and b/Library/Artifacts/4b/4b057751218064e3c9f7c874eefb4a70 differ diff --git a/Library/Artifacts/4b/4b095a6a51e898b3be40a08180aa9ea7 b/Library/Artifacts/4b/4b095a6a51e898b3be40a08180aa9ea7 new file mode 100644 index 0000000..807aad2 Binary files /dev/null and b/Library/Artifacts/4b/4b095a6a51e898b3be40a08180aa9ea7 differ diff --git a/Library/Artifacts/4b/4b62b7e031efb01cf4fd5a34a20dba48 b/Library/Artifacts/4b/4b62b7e031efb01cf4fd5a34a20dba48 new file mode 100644 index 0000000..26fdca2 Binary files /dev/null and b/Library/Artifacts/4b/4b62b7e031efb01cf4fd5a34a20dba48 differ diff --git a/Library/Artifacts/4b/4b63ff330bc5f78364d33a1200b88780 b/Library/Artifacts/4b/4b63ff330bc5f78364d33a1200b88780 new file mode 100644 index 0000000..b03f73e Binary files /dev/null and b/Library/Artifacts/4b/4b63ff330bc5f78364d33a1200b88780 differ diff --git a/Library/Artifacts/4b/4b92df2004ce35dc1951f62de2f45785 b/Library/Artifacts/4b/4b92df2004ce35dc1951f62de2f45785 new file mode 100644 index 0000000..71f1c86 Binary files /dev/null and b/Library/Artifacts/4b/4b92df2004ce35dc1951f62de2f45785 differ diff --git a/Library/Artifacts/4b/4b957a52736172605fdcb1cbc8d2dbae b/Library/Artifacts/4b/4b957a52736172605fdcb1cbc8d2dbae new file mode 100644 index 0000000..f5382c0 Binary files /dev/null and b/Library/Artifacts/4b/4b957a52736172605fdcb1cbc8d2dbae differ diff --git a/Library/Artifacts/4c/4c2571e185d659e48fb0fbb3581ada42 b/Library/Artifacts/4c/4c2571e185d659e48fb0fbb3581ada42 new file mode 100644 index 0000000..a3b75a5 Binary files /dev/null and b/Library/Artifacts/4c/4c2571e185d659e48fb0fbb3581ada42 differ diff --git a/Library/Artifacts/4c/4c42c90af1c0c19bbdd5a03030aa6c3e b/Library/Artifacts/4c/4c42c90af1c0c19bbdd5a03030aa6c3e new file mode 100644 index 0000000..212a7ac Binary files /dev/null and b/Library/Artifacts/4c/4c42c90af1c0c19bbdd5a03030aa6c3e differ diff --git a/Library/Artifacts/4c/4c5daac914ccf4f3175fabb2359ced75 b/Library/Artifacts/4c/4c5daac914ccf4f3175fabb2359ced75 new file mode 100644 index 0000000..04021b4 Binary files /dev/null and b/Library/Artifacts/4c/4c5daac914ccf4f3175fabb2359ced75 differ diff --git a/Library/Artifacts/4c/4c716878c0b037318e6795ef848d7637 b/Library/Artifacts/4c/4c716878c0b037318e6795ef848d7637 new file mode 100644 index 0000000..a8eb4f8 Binary files /dev/null and b/Library/Artifacts/4c/4c716878c0b037318e6795ef848d7637 differ diff --git a/Library/Artifacts/4c/4ca7d70e7a11042b07a83be7ab716da4 b/Library/Artifacts/4c/4ca7d70e7a11042b07a83be7ab716da4 new file mode 100644 index 0000000..fdf0795 Binary files /dev/null and b/Library/Artifacts/4c/4ca7d70e7a11042b07a83be7ab716da4 differ diff --git a/Library/Artifacts/4c/4cfd60d4e2a003ec569c50a2a91c96c5 b/Library/Artifacts/4c/4cfd60d4e2a003ec569c50a2a91c96c5 new file mode 100644 index 0000000..51a9db4 Binary files /dev/null and b/Library/Artifacts/4c/4cfd60d4e2a003ec569c50a2a91c96c5 differ diff --git a/Library/Artifacts/4d/4d01f61e9576f8917b6904acf3fb5366 b/Library/Artifacts/4d/4d01f61e9576f8917b6904acf3fb5366 new file mode 100644 index 0000000..61bdf00 Binary files /dev/null and b/Library/Artifacts/4d/4d01f61e9576f8917b6904acf3fb5366 differ diff --git a/Library/Artifacts/4d/4d52aec9615c3538463c122e75719cde b/Library/Artifacts/4d/4d52aec9615c3538463c122e75719cde new file mode 100644 index 0000000..de7c873 Binary files /dev/null and b/Library/Artifacts/4d/4d52aec9615c3538463c122e75719cde differ diff --git a/Library/Artifacts/4d/4d6a2513359278e8f4bd1b8007fef153 b/Library/Artifacts/4d/4d6a2513359278e8f4bd1b8007fef153 new file mode 100644 index 0000000..ca24683 Binary files /dev/null and b/Library/Artifacts/4d/4d6a2513359278e8f4bd1b8007fef153 differ diff --git a/Library/Artifacts/4d/4d6b26f1266f13e1ff9bec5805ee391b b/Library/Artifacts/4d/4d6b26f1266f13e1ff9bec5805ee391b new file mode 100644 index 0000000..c14ca50 Binary files /dev/null and b/Library/Artifacts/4d/4d6b26f1266f13e1ff9bec5805ee391b differ diff --git a/Library/Artifacts/4d/4d721c33380a1d6cb3e355c56034f81b b/Library/Artifacts/4d/4d721c33380a1d6cb3e355c56034f81b new file mode 100644 index 0000000..d0d1b39 Binary files /dev/null and b/Library/Artifacts/4d/4d721c33380a1d6cb3e355c56034f81b differ diff --git a/Library/Artifacts/4d/4dbb2e3a393aa91ea6f5038eed68c741 b/Library/Artifacts/4d/4dbb2e3a393aa91ea6f5038eed68c741 new file mode 100644 index 0000000..bea9346 Binary files /dev/null and b/Library/Artifacts/4d/4dbb2e3a393aa91ea6f5038eed68c741 differ diff --git a/Library/Artifacts/4d/4de3583a299beb8eea62d1a7e9e94f1c b/Library/Artifacts/4d/4de3583a299beb8eea62d1a7e9e94f1c new file mode 100644 index 0000000..dd46c03 Binary files /dev/null and b/Library/Artifacts/4d/4de3583a299beb8eea62d1a7e9e94f1c differ diff --git a/Library/Artifacts/4e/4ea2a8af6e81cee847eeaff8eeccbbc1 b/Library/Artifacts/4e/4ea2a8af6e81cee847eeaff8eeccbbc1 new file mode 100644 index 0000000..724b94b Binary files /dev/null and b/Library/Artifacts/4e/4ea2a8af6e81cee847eeaff8eeccbbc1 differ diff --git a/Library/Artifacts/4e/4eaec5e1fab3107f5a98e92f1b37e1c0 b/Library/Artifacts/4e/4eaec5e1fab3107f5a98e92f1b37e1c0 new file mode 100644 index 0000000..a8cb1b6 Binary files /dev/null and b/Library/Artifacts/4e/4eaec5e1fab3107f5a98e92f1b37e1c0 differ diff --git a/Library/Artifacts/4e/4edea03e360211029e3c047ebfe8147b b/Library/Artifacts/4e/4edea03e360211029e3c047ebfe8147b new file mode 100644 index 0000000..dfdf37f Binary files /dev/null and b/Library/Artifacts/4e/4edea03e360211029e3c047ebfe8147b differ diff --git a/Library/Artifacts/4e/4edf5d766d318f18db9551df61333514 b/Library/Artifacts/4e/4edf5d766d318f18db9551df61333514 new file mode 100644 index 0000000..4f323ef Binary files /dev/null and b/Library/Artifacts/4e/4edf5d766d318f18db9551df61333514 differ diff --git a/Library/Artifacts/4f/4f4d9d070b69fb51acffb382c2f88152 b/Library/Artifacts/4f/4f4d9d070b69fb51acffb382c2f88152 new file mode 100644 index 0000000..72bb35d Binary files /dev/null and b/Library/Artifacts/4f/4f4d9d070b69fb51acffb382c2f88152 differ diff --git a/Library/Artifacts/4f/4f97722efcf8668cf0c7732c2963aaa6 b/Library/Artifacts/4f/4f97722efcf8668cf0c7732c2963aaa6 new file mode 100644 index 0000000..d88892c Binary files /dev/null and b/Library/Artifacts/4f/4f97722efcf8668cf0c7732c2963aaa6 differ diff --git a/Library/Artifacts/4f/4fe30907e74e0be89c77b225fa2bca30 b/Library/Artifacts/4f/4fe30907e74e0be89c77b225fa2bca30 new file mode 100644 index 0000000..65e8b09 Binary files /dev/null and b/Library/Artifacts/4f/4fe30907e74e0be89c77b225fa2bca30 differ diff --git a/Library/Artifacts/4f/4ff5239caafd06de8b49815f6063aafb b/Library/Artifacts/4f/4ff5239caafd06de8b49815f6063aafb new file mode 100644 index 0000000..f7d6651 Binary files /dev/null and b/Library/Artifacts/4f/4ff5239caafd06de8b49815f6063aafb differ diff --git a/Library/Artifacts/50/504b86448b8f9fec81769b085d5c09df b/Library/Artifacts/50/504b86448b8f9fec81769b085d5c09df new file mode 100644 index 0000000..215af6c Binary files /dev/null and b/Library/Artifacts/50/504b86448b8f9fec81769b085d5c09df differ diff --git a/Library/Artifacts/50/5072e062f21ccf1a4aafd069bccc3c21 b/Library/Artifacts/50/5072e062f21ccf1a4aafd069bccc3c21 new file mode 100644 index 0000000..706ddf4 Binary files /dev/null and b/Library/Artifacts/50/5072e062f21ccf1a4aafd069bccc3c21 differ diff --git a/Library/Artifacts/50/50e1b83b20d275539cfbfb7b4c26d8a8 b/Library/Artifacts/50/50e1b83b20d275539cfbfb7b4c26d8a8 new file mode 100644 index 0000000..8036b84 Binary files /dev/null and b/Library/Artifacts/50/50e1b83b20d275539cfbfb7b4c26d8a8 differ diff --git a/Library/Artifacts/51/510c6008c18cb768b370c89c0b8da17e b/Library/Artifacts/51/510c6008c18cb768b370c89c0b8da17e new file mode 100644 index 0000000..78375bf Binary files /dev/null and b/Library/Artifacts/51/510c6008c18cb768b370c89c0b8da17e differ diff --git a/Library/Artifacts/51/511874bef17596f3a239cbd6b153b998 b/Library/Artifacts/51/511874bef17596f3a239cbd6b153b998 new file mode 100644 index 0000000..ab4e8dd Binary files /dev/null and b/Library/Artifacts/51/511874bef17596f3a239cbd6b153b998 differ diff --git a/Library/Artifacts/51/511a5c9d7508555b84769245ca510635 b/Library/Artifacts/51/511a5c9d7508555b84769245ca510635 new file mode 100644 index 0000000..1b609e9 Binary files /dev/null and b/Library/Artifacts/51/511a5c9d7508555b84769245ca510635 differ diff --git a/Library/Artifacts/51/5120150f7268f02a813009f1cf46adc3 b/Library/Artifacts/51/5120150f7268f02a813009f1cf46adc3 new file mode 100644 index 0000000..3e44418 Binary files /dev/null and b/Library/Artifacts/51/5120150f7268f02a813009f1cf46adc3 differ diff --git a/Library/Artifacts/51/5120f15c534c79d0d670d785e69a7959 b/Library/Artifacts/51/5120f15c534c79d0d670d785e69a7959 new file mode 100644 index 0000000..1355de1 Binary files /dev/null and b/Library/Artifacts/51/5120f15c534c79d0d670d785e69a7959 differ diff --git a/Library/Artifacts/51/5136b666b1da14473f549259eee46e3a b/Library/Artifacts/51/5136b666b1da14473f549259eee46e3a new file mode 100644 index 0000000..f596f04 Binary files /dev/null and b/Library/Artifacts/51/5136b666b1da14473f549259eee46e3a differ diff --git a/Library/Artifacts/51/5138b9a54e8b7173d1e6fdd52bdf26f7 b/Library/Artifacts/51/5138b9a54e8b7173d1e6fdd52bdf26f7 new file mode 100644 index 0000000..701445d Binary files /dev/null and b/Library/Artifacts/51/5138b9a54e8b7173d1e6fdd52bdf26f7 differ diff --git a/Library/Artifacts/51/5164c83c6016d3fa1e6296ea392f92e2 b/Library/Artifacts/51/5164c83c6016d3fa1e6296ea392f92e2 new file mode 100644 index 0000000..9c440d2 Binary files /dev/null and b/Library/Artifacts/51/5164c83c6016d3fa1e6296ea392f92e2 differ diff --git a/Library/Artifacts/51/51ad6bba26a958f81fd19457ccc69384 b/Library/Artifacts/51/51ad6bba26a958f81fd19457ccc69384 new file mode 100644 index 0000000..4301ac7 Binary files /dev/null and b/Library/Artifacts/51/51ad6bba26a958f81fd19457ccc69384 differ diff --git a/Library/Artifacts/51/51bab4140e845954eef32251ecddb384 b/Library/Artifacts/51/51bab4140e845954eef32251ecddb384 new file mode 100644 index 0000000..0b2c4c7 Binary files /dev/null and b/Library/Artifacts/51/51bab4140e845954eef32251ecddb384 differ diff --git a/Library/Artifacts/51/51c419fd6d76d2ce5ce34d895116b8ce b/Library/Artifacts/51/51c419fd6d76d2ce5ce34d895116b8ce new file mode 100644 index 0000000..f20443d Binary files /dev/null and b/Library/Artifacts/51/51c419fd6d76d2ce5ce34d895116b8ce differ diff --git a/Library/Artifacts/51/51d61ce6d1cb4be10f0838687ce1d56a b/Library/Artifacts/51/51d61ce6d1cb4be10f0838687ce1d56a new file mode 100644 index 0000000..dd2b742 Binary files /dev/null and b/Library/Artifacts/51/51d61ce6d1cb4be10f0838687ce1d56a differ diff --git a/Library/Artifacts/51/51dab84ae5b38d0c3384ec9b8b939040 b/Library/Artifacts/51/51dab84ae5b38d0c3384ec9b8b939040 new file mode 100644 index 0000000..e1b50e5 Binary files /dev/null and b/Library/Artifacts/51/51dab84ae5b38d0c3384ec9b8b939040 differ diff --git a/Library/Artifacts/51/51f89e16d2efbe8924cee118b1b90f65 b/Library/Artifacts/51/51f89e16d2efbe8924cee118b1b90f65 new file mode 100644 index 0000000..782bf71 Binary files /dev/null and b/Library/Artifacts/51/51f89e16d2efbe8924cee118b1b90f65 differ diff --git a/Library/Artifacts/52/5239916564e3dde0963cf15603b25312 b/Library/Artifacts/52/5239916564e3dde0963cf15603b25312 new file mode 100644 index 0000000..b41a89d Binary files /dev/null and b/Library/Artifacts/52/5239916564e3dde0963cf15603b25312 differ diff --git a/Library/Artifacts/52/5241a294364d8f11313508d674eb9ade b/Library/Artifacts/52/5241a294364d8f11313508d674eb9ade new file mode 100644 index 0000000..d2c0f6c Binary files /dev/null and b/Library/Artifacts/52/5241a294364d8f11313508d674eb9ade differ diff --git a/Library/Artifacts/52/524991d50cbccc8b474e35a984e2c201 b/Library/Artifacts/52/524991d50cbccc8b474e35a984e2c201 new file mode 100644 index 0000000..abe2227 Binary files /dev/null and b/Library/Artifacts/52/524991d50cbccc8b474e35a984e2c201 differ diff --git a/Library/Artifacts/52/527a46206d7ad31c17f8fed0a75c13b7 b/Library/Artifacts/52/527a46206d7ad31c17f8fed0a75c13b7 new file mode 100644 index 0000000..847e17c Binary files /dev/null and b/Library/Artifacts/52/527a46206d7ad31c17f8fed0a75c13b7 differ diff --git a/Library/Artifacts/52/52d6c03957186ad93baa91307130383d b/Library/Artifacts/52/52d6c03957186ad93baa91307130383d new file mode 100644 index 0000000..6376fdf Binary files /dev/null and b/Library/Artifacts/52/52d6c03957186ad93baa91307130383d differ diff --git a/Library/Artifacts/53/5300a65cfe35ae6a8ad3b87fdfd865a2 b/Library/Artifacts/53/5300a65cfe35ae6a8ad3b87fdfd865a2 new file mode 100644 index 0000000..47d2f92 Binary files /dev/null and b/Library/Artifacts/53/5300a65cfe35ae6a8ad3b87fdfd865a2 differ diff --git a/Library/Artifacts/53/53097bdfad8f8ce3f42ce3f8f84c905e b/Library/Artifacts/53/53097bdfad8f8ce3f42ce3f8f84c905e new file mode 100644 index 0000000..226e819 Binary files /dev/null and b/Library/Artifacts/53/53097bdfad8f8ce3f42ce3f8f84c905e differ diff --git a/Library/Artifacts/53/530cbd600df6dd47eefa53efc37d143b b/Library/Artifacts/53/530cbd600df6dd47eefa53efc37d143b new file mode 100644 index 0000000..9a27f57 Binary files /dev/null and b/Library/Artifacts/53/530cbd600df6dd47eefa53efc37d143b differ diff --git a/Library/Artifacts/53/530e2a23ad4d42784a1546b947dcb4c3 b/Library/Artifacts/53/530e2a23ad4d42784a1546b947dcb4c3 new file mode 100644 index 0000000..ac438a1 Binary files /dev/null and b/Library/Artifacts/53/530e2a23ad4d42784a1546b947dcb4c3 differ diff --git a/Library/Artifacts/53/531e1832d19da269b5d2ff04ed6c5632 b/Library/Artifacts/53/531e1832d19da269b5d2ff04ed6c5632 new file mode 100644 index 0000000..b28332a Binary files /dev/null and b/Library/Artifacts/53/531e1832d19da269b5d2ff04ed6c5632 differ diff --git a/Library/Artifacts/53/532959fd015b75c835708a9eb6ce2580 b/Library/Artifacts/53/532959fd015b75c835708a9eb6ce2580 new file mode 100644 index 0000000..915b62b Binary files /dev/null and b/Library/Artifacts/53/532959fd015b75c835708a9eb6ce2580 differ diff --git a/Library/Artifacts/53/532f6c57e32ae5a89cf092ef18d7d425 b/Library/Artifacts/53/532f6c57e32ae5a89cf092ef18d7d425 new file mode 100644 index 0000000..62d5d31 Binary files /dev/null and b/Library/Artifacts/53/532f6c57e32ae5a89cf092ef18d7d425 differ diff --git a/Library/Artifacts/53/5330bcf4667b7ba39dacbda8a523ec1f b/Library/Artifacts/53/5330bcf4667b7ba39dacbda8a523ec1f new file mode 100644 index 0000000..ac440f4 Binary files /dev/null and b/Library/Artifacts/53/5330bcf4667b7ba39dacbda8a523ec1f differ diff --git a/Library/Artifacts/53/538c5d612f390d94094ec385fdf1e55d b/Library/Artifacts/53/538c5d612f390d94094ec385fdf1e55d new file mode 100644 index 0000000..0a080c5 Binary files /dev/null and b/Library/Artifacts/53/538c5d612f390d94094ec385fdf1e55d differ diff --git a/Library/Artifacts/53/5396438dcf85f27d8315ed35c40d13ba b/Library/Artifacts/53/5396438dcf85f27d8315ed35c40d13ba new file mode 100644 index 0000000..a08adbb Binary files /dev/null and b/Library/Artifacts/53/5396438dcf85f27d8315ed35c40d13ba differ diff --git a/Library/Artifacts/53/53b4e37a317e110c38d47c88a1cbf496 b/Library/Artifacts/53/53b4e37a317e110c38d47c88a1cbf496 new file mode 100644 index 0000000..284d25b Binary files /dev/null and b/Library/Artifacts/53/53b4e37a317e110c38d47c88a1cbf496 differ diff --git a/Library/Artifacts/53/53bec6397ddae411fc751581b45d1882 b/Library/Artifacts/53/53bec6397ddae411fc751581b45d1882 new file mode 100644 index 0000000..bf8f3c2 Binary files /dev/null and b/Library/Artifacts/53/53bec6397ddae411fc751581b45d1882 differ diff --git a/Library/Artifacts/53/53c85e67f72f414d8ccbc610f67e588b b/Library/Artifacts/53/53c85e67f72f414d8ccbc610f67e588b new file mode 100644 index 0000000..a184e92 Binary files /dev/null and b/Library/Artifacts/53/53c85e67f72f414d8ccbc610f67e588b differ diff --git a/Library/Artifacts/53/53dd7ff8cb9d26cc35f55c41565f8b71 b/Library/Artifacts/53/53dd7ff8cb9d26cc35f55c41565f8b71 new file mode 100644 index 0000000..33fd82a Binary files /dev/null and b/Library/Artifacts/53/53dd7ff8cb9d26cc35f55c41565f8b71 differ diff --git a/Library/Artifacts/53/53eb767b9d79ac8ce6ef7c85d298eeb7 b/Library/Artifacts/53/53eb767b9d79ac8ce6ef7c85d298eeb7 new file mode 100644 index 0000000..1e4456c Binary files /dev/null and b/Library/Artifacts/53/53eb767b9d79ac8ce6ef7c85d298eeb7 differ diff --git a/Library/Artifacts/53/53f16342eeeaf30aa3a5d213228da828 b/Library/Artifacts/53/53f16342eeeaf30aa3a5d213228da828 new file mode 100644 index 0000000..b918fa4 Binary files /dev/null and b/Library/Artifacts/53/53f16342eeeaf30aa3a5d213228da828 differ diff --git a/Library/Artifacts/54/540248f005dc14aca4c2284bbe135e26 b/Library/Artifacts/54/540248f005dc14aca4c2284bbe135e26 new file mode 100644 index 0000000..129ba2b Binary files /dev/null and b/Library/Artifacts/54/540248f005dc14aca4c2284bbe135e26 differ diff --git a/Library/Artifacts/54/540c5339566967a3a77b24b9cf551886 b/Library/Artifacts/54/540c5339566967a3a77b24b9cf551886 new file mode 100644 index 0000000..53273b8 Binary files /dev/null and b/Library/Artifacts/54/540c5339566967a3a77b24b9cf551886 differ diff --git a/Library/Artifacts/54/54626e67caa7b5af93c1b4ca74e46572 b/Library/Artifacts/54/54626e67caa7b5af93c1b4ca74e46572 new file mode 100644 index 0000000..9559bec Binary files /dev/null and b/Library/Artifacts/54/54626e67caa7b5af93c1b4ca74e46572 differ diff --git a/Library/Artifacts/54/549e304a588037c8be6d545319bf77c2 b/Library/Artifacts/54/549e304a588037c8be6d545319bf77c2 new file mode 100644 index 0000000..701ca8e Binary files /dev/null and b/Library/Artifacts/54/549e304a588037c8be6d545319bf77c2 differ diff --git a/Library/Artifacts/54/54e3318d23bc5dd29d4a8a13c1c381f3 b/Library/Artifacts/54/54e3318d23bc5dd29d4a8a13c1c381f3 new file mode 100644 index 0000000..8f030cb Binary files /dev/null and b/Library/Artifacts/54/54e3318d23bc5dd29d4a8a13c1c381f3 differ diff --git a/Library/Artifacts/55/550c6730f8694a16403941e0b31bf8f3 b/Library/Artifacts/55/550c6730f8694a16403941e0b31bf8f3 new file mode 100644 index 0000000..4d10611 Binary files /dev/null and b/Library/Artifacts/55/550c6730f8694a16403941e0b31bf8f3 differ diff --git a/Library/Artifacts/55/551b4ffba53ea3cf51650622c33e5b84 b/Library/Artifacts/55/551b4ffba53ea3cf51650622c33e5b84 new file mode 100644 index 0000000..24cea53 Binary files /dev/null and b/Library/Artifacts/55/551b4ffba53ea3cf51650622c33e5b84 differ diff --git a/Library/Artifacts/55/556b16fc6e1a861611fbbd0e1eafba82 b/Library/Artifacts/55/556b16fc6e1a861611fbbd0e1eafba82 new file mode 100644 index 0000000..ab92429 Binary files /dev/null and b/Library/Artifacts/55/556b16fc6e1a861611fbbd0e1eafba82 differ diff --git a/Library/Artifacts/55/557fa6555460bba4f85a82bf995edb26 b/Library/Artifacts/55/557fa6555460bba4f85a82bf995edb26 new file mode 100644 index 0000000..59bb32b Binary files /dev/null and b/Library/Artifacts/55/557fa6555460bba4f85a82bf995edb26 differ diff --git a/Library/Artifacts/55/55aa24e1bf8c4fbf1593f1d52937948a b/Library/Artifacts/55/55aa24e1bf8c4fbf1593f1d52937948a new file mode 100644 index 0000000..040ad51 Binary files /dev/null and b/Library/Artifacts/55/55aa24e1bf8c4fbf1593f1d52937948a differ diff --git a/Library/Artifacts/55/55be1103fc95458eb479a57ccfba5897 b/Library/Artifacts/55/55be1103fc95458eb479a57ccfba5897 new file mode 100644 index 0000000..895561b Binary files /dev/null and b/Library/Artifacts/55/55be1103fc95458eb479a57ccfba5897 differ diff --git a/Library/Artifacts/56/5620beab8329a41dd039ab6f1d49dcb9 b/Library/Artifacts/56/5620beab8329a41dd039ab6f1d49dcb9 new file mode 100644 index 0000000..d2980b5 Binary files /dev/null and b/Library/Artifacts/56/5620beab8329a41dd039ab6f1d49dcb9 differ diff --git a/Library/Artifacts/56/5640074fc0a1449460177db54c8ba81b b/Library/Artifacts/56/5640074fc0a1449460177db54c8ba81b new file mode 100644 index 0000000..33c22a7 Binary files /dev/null and b/Library/Artifacts/56/5640074fc0a1449460177db54c8ba81b differ diff --git a/Library/Artifacts/56/5655639470036278584fa78847cf962c b/Library/Artifacts/56/5655639470036278584fa78847cf962c new file mode 100644 index 0000000..1ea0f7d Binary files /dev/null and b/Library/Artifacts/56/5655639470036278584fa78847cf962c differ diff --git a/Library/Artifacts/56/56617105a84e4abe9572dc7db6f2ee49 b/Library/Artifacts/56/56617105a84e4abe9572dc7db6f2ee49 new file mode 100644 index 0000000..8702889 Binary files /dev/null and b/Library/Artifacts/56/56617105a84e4abe9572dc7db6f2ee49 differ diff --git a/Library/Artifacts/56/5665c54204cdeabe7a673026f94dd8da b/Library/Artifacts/56/5665c54204cdeabe7a673026f94dd8da new file mode 100644 index 0000000..8a2d5d6 Binary files /dev/null and b/Library/Artifacts/56/5665c54204cdeabe7a673026f94dd8da differ diff --git a/Library/Artifacts/56/5680095927c061b0c1a6517d8312372d b/Library/Artifacts/56/5680095927c061b0c1a6517d8312372d new file mode 100644 index 0000000..4a06773 Binary files /dev/null and b/Library/Artifacts/56/5680095927c061b0c1a6517d8312372d differ diff --git a/Library/Artifacts/56/56859d97d645eb4c930b491cd3305862 b/Library/Artifacts/56/56859d97d645eb4c930b491cd3305862 new file mode 100644 index 0000000..f9c3504 Binary files /dev/null and b/Library/Artifacts/56/56859d97d645eb4c930b491cd3305862 differ diff --git a/Library/Artifacts/56/568fe9a894e8c015f1d293e2ee1aaa8e b/Library/Artifacts/56/568fe9a894e8c015f1d293e2ee1aaa8e new file mode 100644 index 0000000..b90fa86 Binary files /dev/null and b/Library/Artifacts/56/568fe9a894e8c015f1d293e2ee1aaa8e differ diff --git a/Library/Artifacts/56/56b2e57ac90ba7886ad3144f881fcedf b/Library/Artifacts/56/56b2e57ac90ba7886ad3144f881fcedf new file mode 100644 index 0000000..989f4a0 Binary files /dev/null and b/Library/Artifacts/56/56b2e57ac90ba7886ad3144f881fcedf differ diff --git a/Library/Artifacts/56/56b397603778f25cfdbb8df1e14d14c9 b/Library/Artifacts/56/56b397603778f25cfdbb8df1e14d14c9 new file mode 100644 index 0000000..1204739 Binary files /dev/null and b/Library/Artifacts/56/56b397603778f25cfdbb8df1e14d14c9 differ diff --git a/Library/Artifacts/56/56c1dba51e07fb11cd178ee6c5c42dcf b/Library/Artifacts/56/56c1dba51e07fb11cd178ee6c5c42dcf new file mode 100644 index 0000000..4006ad9 Binary files /dev/null and b/Library/Artifacts/56/56c1dba51e07fb11cd178ee6c5c42dcf differ diff --git a/Library/Artifacts/56/56fdae2facf1440d26c9a15c35bbeb9c b/Library/Artifacts/56/56fdae2facf1440d26c9a15c35bbeb9c new file mode 100644 index 0000000..6cec613 Binary files /dev/null and b/Library/Artifacts/56/56fdae2facf1440d26c9a15c35bbeb9c differ diff --git a/Library/Artifacts/57/5718fee8fbe2397fdf4ceb3450919ace b/Library/Artifacts/57/5718fee8fbe2397fdf4ceb3450919ace new file mode 100644 index 0000000..dba900a Binary files /dev/null and b/Library/Artifacts/57/5718fee8fbe2397fdf4ceb3450919ace differ diff --git a/Library/Artifacts/57/57231a83f31c412f7f2627285365e52e b/Library/Artifacts/57/57231a83f31c412f7f2627285365e52e new file mode 100644 index 0000000..bb5f2e7 Binary files /dev/null and b/Library/Artifacts/57/57231a83f31c412f7f2627285365e52e differ diff --git a/Library/Artifacts/57/5723b804ddec5a79d98835c21ad206da b/Library/Artifacts/57/5723b804ddec5a79d98835c21ad206da new file mode 100644 index 0000000..72651b5 Binary files /dev/null and b/Library/Artifacts/57/5723b804ddec5a79d98835c21ad206da differ diff --git a/Library/Artifacts/57/572ac61fb0ca819be843182ff821cc8e b/Library/Artifacts/57/572ac61fb0ca819be843182ff821cc8e new file mode 100644 index 0000000..eaa0a10 Binary files /dev/null and b/Library/Artifacts/57/572ac61fb0ca819be843182ff821cc8e differ diff --git a/Library/Artifacts/57/576697d87de9db0964f3e31aabe2cb92 b/Library/Artifacts/57/576697d87de9db0964f3e31aabe2cb92 new file mode 100644 index 0000000..46c825f Binary files /dev/null and b/Library/Artifacts/57/576697d87de9db0964f3e31aabe2cb92 differ diff --git a/Library/Artifacts/57/5795808b25a9e85ea0c5e4a1a38f921c b/Library/Artifacts/57/5795808b25a9e85ea0c5e4a1a38f921c new file mode 100644 index 0000000..bdff37d Binary files /dev/null and b/Library/Artifacts/57/5795808b25a9e85ea0c5e4a1a38f921c differ diff --git a/Library/Artifacts/57/57a83f29eee4f00951bbdf54f529805c b/Library/Artifacts/57/57a83f29eee4f00951bbdf54f529805c new file mode 100644 index 0000000..e3907fe Binary files /dev/null and b/Library/Artifacts/57/57a83f29eee4f00951bbdf54f529805c differ diff --git a/Library/Artifacts/57/57b164c92878e57ed37a106a51aa08d4 b/Library/Artifacts/57/57b164c92878e57ed37a106a51aa08d4 new file mode 100644 index 0000000..5515022 Binary files /dev/null and b/Library/Artifacts/57/57b164c92878e57ed37a106a51aa08d4 differ diff --git a/Library/Artifacts/57/57c3bf10c8de4877a67fde51c5ff2529 b/Library/Artifacts/57/57c3bf10c8de4877a67fde51c5ff2529 new file mode 100644 index 0000000..608539f Binary files /dev/null and b/Library/Artifacts/57/57c3bf10c8de4877a67fde51c5ff2529 differ diff --git a/Library/Artifacts/58/5806d48ebe126c41c1f0ed03155a270a b/Library/Artifacts/58/5806d48ebe126c41c1f0ed03155a270a new file mode 100644 index 0000000..1a2dd26 Binary files /dev/null and b/Library/Artifacts/58/5806d48ebe126c41c1f0ed03155a270a differ diff --git a/Library/Artifacts/58/5809f76845e541036fb7ddf6724c9457 b/Library/Artifacts/58/5809f76845e541036fb7ddf6724c9457 new file mode 100644 index 0000000..ab69db4 Binary files /dev/null and b/Library/Artifacts/58/5809f76845e541036fb7ddf6724c9457 differ diff --git a/Library/Artifacts/58/585f1a088f04ca97dff07aa6d9138445 b/Library/Artifacts/58/585f1a088f04ca97dff07aa6d9138445 new file mode 100644 index 0000000..1e88a0c Binary files /dev/null and b/Library/Artifacts/58/585f1a088f04ca97dff07aa6d9138445 differ diff --git a/Library/Artifacts/58/588012c9be4ac94caa5048cc07f8fc5b b/Library/Artifacts/58/588012c9be4ac94caa5048cc07f8fc5b new file mode 100644 index 0000000..f8177b9 Binary files /dev/null and b/Library/Artifacts/58/588012c9be4ac94caa5048cc07f8fc5b differ diff --git a/Library/Artifacts/58/5887160a98a11c919881931b7a935063 b/Library/Artifacts/58/5887160a98a11c919881931b7a935063 new file mode 100644 index 0000000..02585e6 Binary files /dev/null and b/Library/Artifacts/58/5887160a98a11c919881931b7a935063 differ diff --git a/Library/Artifacts/58/5887e3841023699b6b6fcfb1d7300050 b/Library/Artifacts/58/5887e3841023699b6b6fcfb1d7300050 new file mode 100644 index 0000000..f6ee8a9 Binary files /dev/null and b/Library/Artifacts/58/5887e3841023699b6b6fcfb1d7300050 differ diff --git a/Library/Artifacts/58/58907363ccccf09397c3541198f3c667 b/Library/Artifacts/58/58907363ccccf09397c3541198f3c667 new file mode 100644 index 0000000..dc71b12 Binary files /dev/null and b/Library/Artifacts/58/58907363ccccf09397c3541198f3c667 differ diff --git a/Library/Artifacts/58/58b66da3957fa8d1b6bf9605fe2f39d2 b/Library/Artifacts/58/58b66da3957fa8d1b6bf9605fe2f39d2 new file mode 100644 index 0000000..7fbaf04 Binary files /dev/null and b/Library/Artifacts/58/58b66da3957fa8d1b6bf9605fe2f39d2 differ diff --git a/Library/Artifacts/58/58ca184cf1be70a178c03977f34c80df b/Library/Artifacts/58/58ca184cf1be70a178c03977f34c80df new file mode 100644 index 0000000..38d9440 Binary files /dev/null and b/Library/Artifacts/58/58ca184cf1be70a178c03977f34c80df differ diff --git a/Library/Artifacts/58/58f21392f5343cf5d32aa258a13d1eaa b/Library/Artifacts/58/58f21392f5343cf5d32aa258a13d1eaa new file mode 100644 index 0000000..c28b7a1 Binary files /dev/null and b/Library/Artifacts/58/58f21392f5343cf5d32aa258a13d1eaa differ diff --git a/Library/Artifacts/58/58f5b69a32d61decff32d133ea730705 b/Library/Artifacts/58/58f5b69a32d61decff32d133ea730705 new file mode 100644 index 0000000..b14c327 Binary files /dev/null and b/Library/Artifacts/58/58f5b69a32d61decff32d133ea730705 differ diff --git a/Library/Artifacts/58/58fc956dbef1366cdf7d1a636f3d3cf2 b/Library/Artifacts/58/58fc956dbef1366cdf7d1a636f3d3cf2 new file mode 100644 index 0000000..5a592d6 Binary files /dev/null and b/Library/Artifacts/58/58fc956dbef1366cdf7d1a636f3d3cf2 differ diff --git a/Library/Artifacts/59/590353cf601cc10ca80a1a0378ee027e b/Library/Artifacts/59/590353cf601cc10ca80a1a0378ee027e new file mode 100644 index 0000000..77c7868 Binary files /dev/null and b/Library/Artifacts/59/590353cf601cc10ca80a1a0378ee027e differ diff --git a/Library/Artifacts/59/591dbc5b3058ece56bb71e723dc61db6 b/Library/Artifacts/59/591dbc5b3058ece56bb71e723dc61db6 new file mode 100644 index 0000000..21d4fbf Binary files /dev/null and b/Library/Artifacts/59/591dbc5b3058ece56bb71e723dc61db6 differ diff --git a/Library/Artifacts/59/595b523ee0588e09d917e1d1dd0b5cbb b/Library/Artifacts/59/595b523ee0588e09d917e1d1dd0b5cbb new file mode 100644 index 0000000..71cfd45 Binary files /dev/null and b/Library/Artifacts/59/595b523ee0588e09d917e1d1dd0b5cbb differ diff --git a/Library/Artifacts/59/595bb7fa3ec93d9cb1900a88aa5624a2 b/Library/Artifacts/59/595bb7fa3ec93d9cb1900a88aa5624a2 new file mode 100644 index 0000000..d0eeee7 Binary files /dev/null and b/Library/Artifacts/59/595bb7fa3ec93d9cb1900a88aa5624a2 differ diff --git a/Library/Artifacts/59/596a33751b6d85d1f12b0be614f69d1e b/Library/Artifacts/59/596a33751b6d85d1f12b0be614f69d1e new file mode 100644 index 0000000..9175af0 Binary files /dev/null and b/Library/Artifacts/59/596a33751b6d85d1f12b0be614f69d1e differ diff --git a/Library/Artifacts/59/5973a6b78708cea2df1c073cbd4bb774 b/Library/Artifacts/59/5973a6b78708cea2df1c073cbd4bb774 new file mode 100644 index 0000000..cb1934f Binary files /dev/null and b/Library/Artifacts/59/5973a6b78708cea2df1c073cbd4bb774 differ diff --git a/Library/Artifacts/59/59bce682592f1ea720f85cbf9ec1ae00 b/Library/Artifacts/59/59bce682592f1ea720f85cbf9ec1ae00 new file mode 100644 index 0000000..959aa03 Binary files /dev/null and b/Library/Artifacts/59/59bce682592f1ea720f85cbf9ec1ae00 differ diff --git a/Library/Artifacts/59/59bf2356bb9d298baca7ddc3cfa211b8 b/Library/Artifacts/59/59bf2356bb9d298baca7ddc3cfa211b8 new file mode 100644 index 0000000..2b8555d Binary files /dev/null and b/Library/Artifacts/59/59bf2356bb9d298baca7ddc3cfa211b8 differ diff --git a/Library/Artifacts/59/59e0ea33e43b17d2afeb27fad421445e b/Library/Artifacts/59/59e0ea33e43b17d2afeb27fad421445e new file mode 100644 index 0000000..b359b0c Binary files /dev/null and b/Library/Artifacts/59/59e0ea33e43b17d2afeb27fad421445e differ diff --git a/Library/Artifacts/59/59ed6d354eb69e84cc8ea6b370207871 b/Library/Artifacts/59/59ed6d354eb69e84cc8ea6b370207871 new file mode 100644 index 0000000..91abfeb Binary files /dev/null and b/Library/Artifacts/59/59ed6d354eb69e84cc8ea6b370207871 differ diff --git a/Library/Artifacts/59/59f3faaffb7ae459ebc7e0760865c7bc b/Library/Artifacts/59/59f3faaffb7ae459ebc7e0760865c7bc new file mode 100644 index 0000000..e1b55ed Binary files /dev/null and b/Library/Artifacts/59/59f3faaffb7ae459ebc7e0760865c7bc differ diff --git a/Library/Artifacts/5a/5a09ce859a77c4fa9acbe4f618406ce2 b/Library/Artifacts/5a/5a09ce859a77c4fa9acbe4f618406ce2 new file mode 100644 index 0000000..f82a909 Binary files /dev/null and b/Library/Artifacts/5a/5a09ce859a77c4fa9acbe4f618406ce2 differ diff --git a/Library/Artifacts/5a/5a1b502992da49120e999cbddb512d17 b/Library/Artifacts/5a/5a1b502992da49120e999cbddb512d17 new file mode 100644 index 0000000..7d53b69 Binary files /dev/null and b/Library/Artifacts/5a/5a1b502992da49120e999cbddb512d17 differ diff --git a/Library/Artifacts/5a/5a2f90568ac82edcaf189c8675732634 b/Library/Artifacts/5a/5a2f90568ac82edcaf189c8675732634 new file mode 100644 index 0000000..6dd21b8 Binary files /dev/null and b/Library/Artifacts/5a/5a2f90568ac82edcaf189c8675732634 differ diff --git a/Library/Artifacts/5a/5a45c23f9afa9dfd341a133113bb1f7d b/Library/Artifacts/5a/5a45c23f9afa9dfd341a133113bb1f7d new file mode 100644 index 0000000..082436c Binary files /dev/null and b/Library/Artifacts/5a/5a45c23f9afa9dfd341a133113bb1f7d differ diff --git a/Library/Artifacts/5a/5a505a3822a3307f6b2918941fc67412 b/Library/Artifacts/5a/5a505a3822a3307f6b2918941fc67412 new file mode 100644 index 0000000..e52692e Binary files /dev/null and b/Library/Artifacts/5a/5a505a3822a3307f6b2918941fc67412 differ diff --git a/Library/Artifacts/5a/5a75613e06faa2b0e234e1326cc59117 b/Library/Artifacts/5a/5a75613e06faa2b0e234e1326cc59117 new file mode 100644 index 0000000..5bad79e Binary files /dev/null and b/Library/Artifacts/5a/5a75613e06faa2b0e234e1326cc59117 differ diff --git a/Library/Artifacts/5a/5a9118c772a8a3cfc371512296ba5d58 b/Library/Artifacts/5a/5a9118c772a8a3cfc371512296ba5d58 new file mode 100644 index 0000000..16d0df8 Binary files /dev/null and b/Library/Artifacts/5a/5a9118c772a8a3cfc371512296ba5d58 differ diff --git a/Library/Artifacts/5a/5ac0af79c1d1944ede9055b3423edebb b/Library/Artifacts/5a/5ac0af79c1d1944ede9055b3423edebb new file mode 100644 index 0000000..b306f9c Binary files /dev/null and b/Library/Artifacts/5a/5ac0af79c1d1944ede9055b3423edebb differ diff --git a/Library/Artifacts/5a/5ac0b506e9013442bde1abfabffda624 b/Library/Artifacts/5a/5ac0b506e9013442bde1abfabffda624 new file mode 100644 index 0000000..b16a7e4 Binary files /dev/null and b/Library/Artifacts/5a/5ac0b506e9013442bde1abfabffda624 differ diff --git a/Library/Artifacts/5a/5ae8077fa774c8faf7e021aac22e1ddd b/Library/Artifacts/5a/5ae8077fa774c8faf7e021aac22e1ddd new file mode 100644 index 0000000..b6080ce Binary files /dev/null and b/Library/Artifacts/5a/5ae8077fa774c8faf7e021aac22e1ddd differ diff --git a/Library/Artifacts/5b/5b134aea6aed6d71d6577cecaf9056b7 b/Library/Artifacts/5b/5b134aea6aed6d71d6577cecaf9056b7 new file mode 100644 index 0000000..5de9b29 Binary files /dev/null and b/Library/Artifacts/5b/5b134aea6aed6d71d6577cecaf9056b7 differ diff --git a/Library/Artifacts/5b/5b372ca947c4ce7a6be708d2e72ea9ff b/Library/Artifacts/5b/5b372ca947c4ce7a6be708d2e72ea9ff new file mode 100644 index 0000000..899f75f Binary files /dev/null and b/Library/Artifacts/5b/5b372ca947c4ce7a6be708d2e72ea9ff differ diff --git a/Library/Artifacts/5b/5b45898e75226cbea5797163f1555801 b/Library/Artifacts/5b/5b45898e75226cbea5797163f1555801 new file mode 100644 index 0000000..ba5014a Binary files /dev/null and b/Library/Artifacts/5b/5b45898e75226cbea5797163f1555801 differ diff --git a/Library/Artifacts/5b/5b4a633bf99a9a4abef3f542440e3559 b/Library/Artifacts/5b/5b4a633bf99a9a4abef3f542440e3559 new file mode 100644 index 0000000..d55c563 Binary files /dev/null and b/Library/Artifacts/5b/5b4a633bf99a9a4abef3f542440e3559 differ diff --git a/Library/Artifacts/5b/5b58f47f8ade6e1c944f572d8adf93e5 b/Library/Artifacts/5b/5b58f47f8ade6e1c944f572d8adf93e5 new file mode 100644 index 0000000..31183dd Binary files /dev/null and b/Library/Artifacts/5b/5b58f47f8ade6e1c944f572d8adf93e5 differ diff --git a/Library/Artifacts/5c/5c022076ccc1d872e6877170935a4516 b/Library/Artifacts/5c/5c022076ccc1d872e6877170935a4516 new file mode 100644 index 0000000..a8a4b1e Binary files /dev/null and b/Library/Artifacts/5c/5c022076ccc1d872e6877170935a4516 differ diff --git a/Library/Artifacts/5c/5c02a8a2241d771b14935c26eb0f0a02 b/Library/Artifacts/5c/5c02a8a2241d771b14935c26eb0f0a02 new file mode 100644 index 0000000..ef17a1e Binary files /dev/null and b/Library/Artifacts/5c/5c02a8a2241d771b14935c26eb0f0a02 differ diff --git a/Library/Artifacts/5c/5c235ed28314a264fa4d5a053d91b737 b/Library/Artifacts/5c/5c235ed28314a264fa4d5a053d91b737 new file mode 100644 index 0000000..6781084 Binary files /dev/null and b/Library/Artifacts/5c/5c235ed28314a264fa4d5a053d91b737 differ diff --git a/Library/Artifacts/5c/5c332350d98e1f044113b15167732f9f b/Library/Artifacts/5c/5c332350d98e1f044113b15167732f9f new file mode 100644 index 0000000..d7ad780 Binary files /dev/null and b/Library/Artifacts/5c/5c332350d98e1f044113b15167732f9f differ diff --git a/Library/Artifacts/5c/5c6a5248b9df8db12ad6909cdf358758 b/Library/Artifacts/5c/5c6a5248b9df8db12ad6909cdf358758 new file mode 100644 index 0000000..0573eaf Binary files /dev/null and b/Library/Artifacts/5c/5c6a5248b9df8db12ad6909cdf358758 differ diff --git a/Library/Artifacts/5c/5cbf81411d39424540fa2c07e31020ea b/Library/Artifacts/5c/5cbf81411d39424540fa2c07e31020ea new file mode 100644 index 0000000..c007f1c Binary files /dev/null and b/Library/Artifacts/5c/5cbf81411d39424540fa2c07e31020ea differ diff --git a/Library/Artifacts/5c/5ce2f31c6cf69b9c21a880cdf8cc0230 b/Library/Artifacts/5c/5ce2f31c6cf69b9c21a880cdf8cc0230 new file mode 100644 index 0000000..c63434f Binary files /dev/null and b/Library/Artifacts/5c/5ce2f31c6cf69b9c21a880cdf8cc0230 differ diff --git a/Library/Artifacts/5c/5cfa3da79aa4dab36f602655801edf3d b/Library/Artifacts/5c/5cfa3da79aa4dab36f602655801edf3d new file mode 100644 index 0000000..288c085 Binary files /dev/null and b/Library/Artifacts/5c/5cfa3da79aa4dab36f602655801edf3d differ diff --git a/Library/Artifacts/5c/5cfccbfb9b12c710184698b9996accab b/Library/Artifacts/5c/5cfccbfb9b12c710184698b9996accab new file mode 100644 index 0000000..688d94e Binary files /dev/null and b/Library/Artifacts/5c/5cfccbfb9b12c710184698b9996accab differ diff --git a/Library/Artifacts/5d/5d06e3c010f5ced81f33b48d3e81f663 b/Library/Artifacts/5d/5d06e3c010f5ced81f33b48d3e81f663 new file mode 100644 index 0000000..cae6d4c Binary files /dev/null and b/Library/Artifacts/5d/5d06e3c010f5ced81f33b48d3e81f663 differ diff --git a/Library/Artifacts/5d/5d154c11f912acc6bd142f528f1c65fa b/Library/Artifacts/5d/5d154c11f912acc6bd142f528f1c65fa new file mode 100644 index 0000000..1b21dd4 Binary files /dev/null and b/Library/Artifacts/5d/5d154c11f912acc6bd142f528f1c65fa differ diff --git a/Library/Artifacts/5d/5d191a044738227a851464aad9eb4d82 b/Library/Artifacts/5d/5d191a044738227a851464aad9eb4d82 new file mode 100644 index 0000000..a6f207f Binary files /dev/null and b/Library/Artifacts/5d/5d191a044738227a851464aad9eb4d82 differ diff --git a/Library/Artifacts/5d/5d2bc125a32df64dfb352fdd43092013 b/Library/Artifacts/5d/5d2bc125a32df64dfb352fdd43092013 new file mode 100644 index 0000000..058b430 Binary files /dev/null and b/Library/Artifacts/5d/5d2bc125a32df64dfb352fdd43092013 differ diff --git a/Library/Artifacts/5d/5d64579f669e16e3f563eab4659ef9e6 b/Library/Artifacts/5d/5d64579f669e16e3f563eab4659ef9e6 new file mode 100644 index 0000000..2ff1ce1 Binary files /dev/null and b/Library/Artifacts/5d/5d64579f669e16e3f563eab4659ef9e6 differ diff --git a/Library/Artifacts/5d/5d7966a9b7f3de6c14b53076b334c041 b/Library/Artifacts/5d/5d7966a9b7f3de6c14b53076b334c041 new file mode 100644 index 0000000..7283a86 Binary files /dev/null and b/Library/Artifacts/5d/5d7966a9b7f3de6c14b53076b334c041 differ diff --git a/Library/Artifacts/5d/5d943606fa0ec722222a02fdf0ab8529 b/Library/Artifacts/5d/5d943606fa0ec722222a02fdf0ab8529 new file mode 100644 index 0000000..e056cfb Binary files /dev/null and b/Library/Artifacts/5d/5d943606fa0ec722222a02fdf0ab8529 differ diff --git a/Library/Artifacts/5e/5e0f3777ad803f32da01aee0949e38e6 b/Library/Artifacts/5e/5e0f3777ad803f32da01aee0949e38e6 new file mode 100644 index 0000000..d1b9f78 Binary files /dev/null and b/Library/Artifacts/5e/5e0f3777ad803f32da01aee0949e38e6 differ diff --git a/Library/Artifacts/5e/5e40a9ea56e2cab5f5de8bf235e9f47e b/Library/Artifacts/5e/5e40a9ea56e2cab5f5de8bf235e9f47e new file mode 100644 index 0000000..0ff206c Binary files /dev/null and b/Library/Artifacts/5e/5e40a9ea56e2cab5f5de8bf235e9f47e differ diff --git a/Library/Artifacts/5e/5e5642743915809b9aeed90f98110da8 b/Library/Artifacts/5e/5e5642743915809b9aeed90f98110da8 new file mode 100644 index 0000000..ce2e87f Binary files /dev/null and b/Library/Artifacts/5e/5e5642743915809b9aeed90f98110da8 differ diff --git a/Library/Artifacts/5e/5e56f0205f5b440b8af1d084cdb2b086 b/Library/Artifacts/5e/5e56f0205f5b440b8af1d084cdb2b086 new file mode 100644 index 0000000..b7b2906 Binary files /dev/null and b/Library/Artifacts/5e/5e56f0205f5b440b8af1d084cdb2b086 differ diff --git a/Library/Artifacts/5e/5e8c99d6ebc71902d3bd992ff60600ae b/Library/Artifacts/5e/5e8c99d6ebc71902d3bd992ff60600ae new file mode 100644 index 0000000..cb9b2c8 Binary files /dev/null and b/Library/Artifacts/5e/5e8c99d6ebc71902d3bd992ff60600ae differ diff --git a/Library/Artifacts/5e/5eb0f4a655f8c2346e200fbba8e51e36 b/Library/Artifacts/5e/5eb0f4a655f8c2346e200fbba8e51e36 new file mode 100644 index 0000000..7111266 Binary files /dev/null and b/Library/Artifacts/5e/5eb0f4a655f8c2346e200fbba8e51e36 differ diff --git a/Library/Artifacts/5e/5ebcbd2a6df8b18c2ccf9dde72a12703 b/Library/Artifacts/5e/5ebcbd2a6df8b18c2ccf9dde72a12703 new file mode 100644 index 0000000..2f710db Binary files /dev/null and b/Library/Artifacts/5e/5ebcbd2a6df8b18c2ccf9dde72a12703 differ diff --git a/Library/Artifacts/5e/5ecc7908fa761ff764341dc3c6cdc4bf b/Library/Artifacts/5e/5ecc7908fa761ff764341dc3c6cdc4bf new file mode 100644 index 0000000..64d704c Binary files /dev/null and b/Library/Artifacts/5e/5ecc7908fa761ff764341dc3c6cdc4bf differ diff --git a/Library/Artifacts/5e/5edc57a241915cd7e718552f817082df b/Library/Artifacts/5e/5edc57a241915cd7e718552f817082df new file mode 100644 index 0000000..a5f0075 Binary files /dev/null and b/Library/Artifacts/5e/5edc57a241915cd7e718552f817082df differ diff --git a/Library/Artifacts/5f/5f0a06063540eb900ca60a6020bd539f b/Library/Artifacts/5f/5f0a06063540eb900ca60a6020bd539f new file mode 100644 index 0000000..45145ad Binary files /dev/null and b/Library/Artifacts/5f/5f0a06063540eb900ca60a6020bd539f differ diff --git a/Library/Artifacts/5f/5f19c4f2c0f0adb733a5890f8673de3e b/Library/Artifacts/5f/5f19c4f2c0f0adb733a5890f8673de3e new file mode 100644 index 0000000..c2eb6d1 Binary files /dev/null and b/Library/Artifacts/5f/5f19c4f2c0f0adb733a5890f8673de3e differ diff --git a/Library/Artifacts/5f/5f478027908f8541239a5daa72f4be83 b/Library/Artifacts/5f/5f478027908f8541239a5daa72f4be83 new file mode 100644 index 0000000..0ab9b58 Binary files /dev/null and b/Library/Artifacts/5f/5f478027908f8541239a5daa72f4be83 differ diff --git a/Library/Artifacts/5f/5f65a62cc992aac0961fda1409135a39 b/Library/Artifacts/5f/5f65a62cc992aac0961fda1409135a39 new file mode 100644 index 0000000..09a4e01 Binary files /dev/null and b/Library/Artifacts/5f/5f65a62cc992aac0961fda1409135a39 differ diff --git a/Library/Artifacts/5f/5fa2bb83bed789d7b787d96b64033c75 b/Library/Artifacts/5f/5fa2bb83bed789d7b787d96b64033c75 new file mode 100644 index 0000000..a371761 Binary files /dev/null and b/Library/Artifacts/5f/5fa2bb83bed789d7b787d96b64033c75 differ diff --git a/Library/Artifacts/5f/5fdfaa9f50264962f15968c39becf111 b/Library/Artifacts/5f/5fdfaa9f50264962f15968c39becf111 new file mode 100644 index 0000000..0210454 Binary files /dev/null and b/Library/Artifacts/5f/5fdfaa9f50264962f15968c39becf111 differ diff --git a/Library/Artifacts/5f/5ff88a90cbad93553dc0dbb29116675f b/Library/Artifacts/5f/5ff88a90cbad93553dc0dbb29116675f new file mode 100644 index 0000000..51c1655 Binary files /dev/null and b/Library/Artifacts/5f/5ff88a90cbad93553dc0dbb29116675f differ diff --git a/Library/Artifacts/60/6014073c524a321c3ccc15f99d9925a8 b/Library/Artifacts/60/6014073c524a321c3ccc15f99d9925a8 new file mode 100644 index 0000000..404f535 Binary files /dev/null and b/Library/Artifacts/60/6014073c524a321c3ccc15f99d9925a8 differ diff --git a/Library/Artifacts/60/60294720ab786cdeca64a3a79101721e b/Library/Artifacts/60/60294720ab786cdeca64a3a79101721e new file mode 100644 index 0000000..714855c Binary files /dev/null and b/Library/Artifacts/60/60294720ab786cdeca64a3a79101721e differ diff --git a/Library/Artifacts/60/602cc92546368c5c86f25ebb3113fa79 b/Library/Artifacts/60/602cc92546368c5c86f25ebb3113fa79 new file mode 100644 index 0000000..8062d00 Binary files /dev/null and b/Library/Artifacts/60/602cc92546368c5c86f25ebb3113fa79 differ diff --git a/Library/Artifacts/60/603e7b2a08ffcb3a457444c532b8fe84 b/Library/Artifacts/60/603e7b2a08ffcb3a457444c532b8fe84 new file mode 100644 index 0000000..12678f3 Binary files /dev/null and b/Library/Artifacts/60/603e7b2a08ffcb3a457444c532b8fe84 differ diff --git a/Library/Artifacts/60/605bf369348b1d035d1905d60ec4cd2f b/Library/Artifacts/60/605bf369348b1d035d1905d60ec4cd2f new file mode 100644 index 0000000..4c7d540 Binary files /dev/null and b/Library/Artifacts/60/605bf369348b1d035d1905d60ec4cd2f differ diff --git a/Library/Artifacts/60/605e835a3ea202d352f0eebd8e4a07c0 b/Library/Artifacts/60/605e835a3ea202d352f0eebd8e4a07c0 new file mode 100644 index 0000000..4d13837 Binary files /dev/null and b/Library/Artifacts/60/605e835a3ea202d352f0eebd8e4a07c0 differ diff --git a/Library/Artifacts/60/60a6077cb284d30827bf713a4659b0da b/Library/Artifacts/60/60a6077cb284d30827bf713a4659b0da new file mode 100644 index 0000000..d78eb5e Binary files /dev/null and b/Library/Artifacts/60/60a6077cb284d30827bf713a4659b0da differ diff --git a/Library/Artifacts/60/60f2f9596a0d3d6618d741d484c2ca98 b/Library/Artifacts/60/60f2f9596a0d3d6618d741d484c2ca98 new file mode 100644 index 0000000..0b7a0be Binary files /dev/null and b/Library/Artifacts/60/60f2f9596a0d3d6618d741d484c2ca98 differ diff --git a/Library/Artifacts/60/60fbf4700b3a45225298c75ad3a332d3 b/Library/Artifacts/60/60fbf4700b3a45225298c75ad3a332d3 new file mode 100644 index 0000000..7428a1e Binary files /dev/null and b/Library/Artifacts/60/60fbf4700b3a45225298c75ad3a332d3 differ diff --git a/Library/Artifacts/61/6128161485a93bc0a9952f65272be4c8 b/Library/Artifacts/61/6128161485a93bc0a9952f65272be4c8 new file mode 100644 index 0000000..fbfb78d Binary files /dev/null and b/Library/Artifacts/61/6128161485a93bc0a9952f65272be4c8 differ diff --git a/Library/Artifacts/61/61687df7f110ba4bc11f1bde68375aeb b/Library/Artifacts/61/61687df7f110ba4bc11f1bde68375aeb new file mode 100644 index 0000000..a6d79c7 Binary files /dev/null and b/Library/Artifacts/61/61687df7f110ba4bc11f1bde68375aeb differ diff --git a/Library/Artifacts/61/61689e51c47066e45a981dc63cbb7a85 b/Library/Artifacts/61/61689e51c47066e45a981dc63cbb7a85 new file mode 100644 index 0000000..c3236a7 Binary files /dev/null and b/Library/Artifacts/61/61689e51c47066e45a981dc63cbb7a85 differ diff --git a/Library/Artifacts/61/6168c874025edfda1d98054e62560619 b/Library/Artifacts/61/6168c874025edfda1d98054e62560619 new file mode 100644 index 0000000..105ad00 Binary files /dev/null and b/Library/Artifacts/61/6168c874025edfda1d98054e62560619 differ diff --git a/Library/Artifacts/61/616de8a139dd2ba6efeee9746e217c75 b/Library/Artifacts/61/616de8a139dd2ba6efeee9746e217c75 new file mode 100644 index 0000000..0ff90d7 Binary files /dev/null and b/Library/Artifacts/61/616de8a139dd2ba6efeee9746e217c75 differ diff --git a/Library/Artifacts/61/617a08761a7a63afe9c726c7aae54877 b/Library/Artifacts/61/617a08761a7a63afe9c726c7aae54877 new file mode 100644 index 0000000..401db12 Binary files /dev/null and b/Library/Artifacts/61/617a08761a7a63afe9c726c7aae54877 differ diff --git a/Library/Artifacts/61/6182e54bd4ae43099b81174651cc8211 b/Library/Artifacts/61/6182e54bd4ae43099b81174651cc8211 new file mode 100644 index 0000000..c259ca8 Binary files /dev/null and b/Library/Artifacts/61/6182e54bd4ae43099b81174651cc8211 differ diff --git a/Library/Artifacts/61/618c0a8d4198c92dcaf1df6d45ce6cf2 b/Library/Artifacts/61/618c0a8d4198c92dcaf1df6d45ce6cf2 new file mode 100644 index 0000000..742c027 Binary files /dev/null and b/Library/Artifacts/61/618c0a8d4198c92dcaf1df6d45ce6cf2 differ diff --git a/Library/Artifacts/61/61d2173b8d047c5880ddf5238c9fbce9 b/Library/Artifacts/61/61d2173b8d047c5880ddf5238c9fbce9 new file mode 100644 index 0000000..2f4bb98 Binary files /dev/null and b/Library/Artifacts/61/61d2173b8d047c5880ddf5238c9fbce9 differ diff --git a/Library/Artifacts/62/6207aeeaccef497ce18ca73760f43e17 b/Library/Artifacts/62/6207aeeaccef497ce18ca73760f43e17 new file mode 100644 index 0000000..479a10d Binary files /dev/null and b/Library/Artifacts/62/6207aeeaccef497ce18ca73760f43e17 differ diff --git a/Library/Artifacts/62/6218141cbea9736a19750137e7668b18 b/Library/Artifacts/62/6218141cbea9736a19750137e7668b18 new file mode 100644 index 0000000..b9e2756 Binary files /dev/null and b/Library/Artifacts/62/6218141cbea9736a19750137e7668b18 differ diff --git a/Library/Artifacts/62/622be480aa61b3b2cf735b528f08a772 b/Library/Artifacts/62/622be480aa61b3b2cf735b528f08a772 new file mode 100644 index 0000000..b70adcb Binary files /dev/null and b/Library/Artifacts/62/622be480aa61b3b2cf735b528f08a772 differ diff --git a/Library/Artifacts/62/6243c548820c7fe81550d5186e71cddb b/Library/Artifacts/62/6243c548820c7fe81550d5186e71cddb new file mode 100644 index 0000000..2e4f872 Binary files /dev/null and b/Library/Artifacts/62/6243c548820c7fe81550d5186e71cddb differ diff --git a/Library/Artifacts/62/627fa1dbcd77ddb931e34a19f54a5172 b/Library/Artifacts/62/627fa1dbcd77ddb931e34a19f54a5172 new file mode 100644 index 0000000..a4d5c84 Binary files /dev/null and b/Library/Artifacts/62/627fa1dbcd77ddb931e34a19f54a5172 differ diff --git a/Library/Artifacts/62/62ab46b796cd217406f505ef2b33d21f b/Library/Artifacts/62/62ab46b796cd217406f505ef2b33d21f new file mode 100644 index 0000000..549e516 Binary files /dev/null and b/Library/Artifacts/62/62ab46b796cd217406f505ef2b33d21f differ diff --git a/Library/Artifacts/62/62f128d4f429ce67390931d3c59c3ebb b/Library/Artifacts/62/62f128d4f429ce67390931d3c59c3ebb new file mode 100644 index 0000000..d90faf9 Binary files /dev/null and b/Library/Artifacts/62/62f128d4f429ce67390931d3c59c3ebb differ diff --git a/Library/Artifacts/63/630f39f021ddf4be4b23a5cd1a03f0f4 b/Library/Artifacts/63/630f39f021ddf4be4b23a5cd1a03f0f4 new file mode 100644 index 0000000..a6af978 Binary files /dev/null and b/Library/Artifacts/63/630f39f021ddf4be4b23a5cd1a03f0f4 differ diff --git a/Library/Artifacts/63/631594b3061a879bc4db78c77abe7bfa b/Library/Artifacts/63/631594b3061a879bc4db78c77abe7bfa new file mode 100644 index 0000000..6500703 Binary files /dev/null and b/Library/Artifacts/63/631594b3061a879bc4db78c77abe7bfa differ diff --git a/Library/Artifacts/63/6338e80f2c6bd149f819b7ee03c233cd b/Library/Artifacts/63/6338e80f2c6bd149f819b7ee03c233cd new file mode 100644 index 0000000..f04d031 Binary files /dev/null and b/Library/Artifacts/63/6338e80f2c6bd149f819b7ee03c233cd differ diff --git a/Library/Artifacts/63/6390c6dfdb48d644ac850ed18386995a b/Library/Artifacts/63/6390c6dfdb48d644ac850ed18386995a new file mode 100644 index 0000000..1cabbf5 Binary files /dev/null and b/Library/Artifacts/63/6390c6dfdb48d644ac850ed18386995a differ diff --git a/Library/Artifacts/63/63a5dfbdc4576cfd23de0c76d6817ad1 b/Library/Artifacts/63/63a5dfbdc4576cfd23de0c76d6817ad1 new file mode 100644 index 0000000..03021c6 Binary files /dev/null and b/Library/Artifacts/63/63a5dfbdc4576cfd23de0c76d6817ad1 differ diff --git a/Library/Artifacts/63/63ce6c29cb3e8934f60896347f2f93f6 b/Library/Artifacts/63/63ce6c29cb3e8934f60896347f2f93f6 new file mode 100644 index 0000000..a7a3b15 Binary files /dev/null and b/Library/Artifacts/63/63ce6c29cb3e8934f60896347f2f93f6 differ diff --git a/Library/Artifacts/63/63f5f56c6c896ac33e3b91506303ddfd b/Library/Artifacts/63/63f5f56c6c896ac33e3b91506303ddfd new file mode 100644 index 0000000..aafde65 Binary files /dev/null and b/Library/Artifacts/63/63f5f56c6c896ac33e3b91506303ddfd differ diff --git a/Library/Artifacts/63/63f7d2e1952113749e56cd06976a1b7a b/Library/Artifacts/63/63f7d2e1952113749e56cd06976a1b7a new file mode 100644 index 0000000..f4df520 Binary files /dev/null and b/Library/Artifacts/63/63f7d2e1952113749e56cd06976a1b7a differ diff --git a/Library/Artifacts/64/6406fc63374690540f2acb7d3b0fb516 b/Library/Artifacts/64/6406fc63374690540f2acb7d3b0fb516 new file mode 100644 index 0000000..30866fb Binary files /dev/null and b/Library/Artifacts/64/6406fc63374690540f2acb7d3b0fb516 differ diff --git a/Library/Artifacts/64/640eed45ad6895912a54cececf7f9c38 b/Library/Artifacts/64/640eed45ad6895912a54cececf7f9c38 new file mode 100644 index 0000000..85506f6 Binary files /dev/null and b/Library/Artifacts/64/640eed45ad6895912a54cececf7f9c38 differ diff --git a/Library/Artifacts/64/6418dec59cf2deb6f9da2430018399e1 b/Library/Artifacts/64/6418dec59cf2deb6f9da2430018399e1 new file mode 100644 index 0000000..72f73a7 Binary files /dev/null and b/Library/Artifacts/64/6418dec59cf2deb6f9da2430018399e1 differ diff --git a/Library/Artifacts/64/64623e1fc80b7d8032a8ce0b731116f1 b/Library/Artifacts/64/64623e1fc80b7d8032a8ce0b731116f1 new file mode 100644 index 0000000..f721ab8 Binary files /dev/null and b/Library/Artifacts/64/64623e1fc80b7d8032a8ce0b731116f1 differ diff --git a/Library/Artifacts/64/6468607caa23347dcb6ab4390c9d2415 b/Library/Artifacts/64/6468607caa23347dcb6ab4390c9d2415 new file mode 100644 index 0000000..1c7dc24 Binary files /dev/null and b/Library/Artifacts/64/6468607caa23347dcb6ab4390c9d2415 differ diff --git a/Library/Artifacts/64/649e2e1550e9dc48458233a765a0792d b/Library/Artifacts/64/649e2e1550e9dc48458233a765a0792d new file mode 100644 index 0000000..83ced0d Binary files /dev/null and b/Library/Artifacts/64/649e2e1550e9dc48458233a765a0792d differ diff --git a/Library/Artifacts/64/64c09746decd8223ff7050b826580493 b/Library/Artifacts/64/64c09746decd8223ff7050b826580493 new file mode 100644 index 0000000..32ff5e9 Binary files /dev/null and b/Library/Artifacts/64/64c09746decd8223ff7050b826580493 differ diff --git a/Library/Artifacts/64/64d05486d3896646d47baf1c78dfbc56 b/Library/Artifacts/64/64d05486d3896646d47baf1c78dfbc56 new file mode 100644 index 0000000..ff21338 Binary files /dev/null and b/Library/Artifacts/64/64d05486d3896646d47baf1c78dfbc56 differ diff --git a/Library/Artifacts/64/64e876c8f86bbb5e75687fd37eaa81b0 b/Library/Artifacts/64/64e876c8f86bbb5e75687fd37eaa81b0 new file mode 100644 index 0000000..10e741f Binary files /dev/null and b/Library/Artifacts/64/64e876c8f86bbb5e75687fd37eaa81b0 differ diff --git a/Library/Artifacts/65/6507464bbac7bfc37d941b68058c927a b/Library/Artifacts/65/6507464bbac7bfc37d941b68058c927a new file mode 100644 index 0000000..ef10a27 Binary files /dev/null and b/Library/Artifacts/65/6507464bbac7bfc37d941b68058c927a differ diff --git a/Library/Artifacts/65/650a27add09fb80494b21022f5fd6577 b/Library/Artifacts/65/650a27add09fb80494b21022f5fd6577 new file mode 100644 index 0000000..2fc1377 Binary files /dev/null and b/Library/Artifacts/65/650a27add09fb80494b21022f5fd6577 differ diff --git a/Library/Artifacts/65/652934203510e3e51d3473ee164aeb67 b/Library/Artifacts/65/652934203510e3e51d3473ee164aeb67 new file mode 100644 index 0000000..9354779 Binary files /dev/null and b/Library/Artifacts/65/652934203510e3e51d3473ee164aeb67 differ diff --git a/Library/Artifacts/65/652e6cf5dbdea4fa99938f1c98d85d4c b/Library/Artifacts/65/652e6cf5dbdea4fa99938f1c98d85d4c new file mode 100644 index 0000000..058e977 Binary files /dev/null and b/Library/Artifacts/65/652e6cf5dbdea4fa99938f1c98d85d4c differ diff --git a/Library/Artifacts/65/653aafbe39a4e386579b50823945677d b/Library/Artifacts/65/653aafbe39a4e386579b50823945677d new file mode 100644 index 0000000..6ef14c8 Binary files /dev/null and b/Library/Artifacts/65/653aafbe39a4e386579b50823945677d differ diff --git a/Library/Artifacts/65/655434ca097ce36562c4831225a38c68 b/Library/Artifacts/65/655434ca097ce36562c4831225a38c68 new file mode 100644 index 0000000..b00db1b Binary files /dev/null and b/Library/Artifacts/65/655434ca097ce36562c4831225a38c68 differ diff --git a/Library/Artifacts/65/65679ae52558a72ffc562d44a32dacfa b/Library/Artifacts/65/65679ae52558a72ffc562d44a32dacfa new file mode 100644 index 0000000..bd29461 Binary files /dev/null and b/Library/Artifacts/65/65679ae52558a72ffc562d44a32dacfa differ diff --git a/Library/Artifacts/65/65ae86d02b7cc7d4d970d406a280cb48 b/Library/Artifacts/65/65ae86d02b7cc7d4d970d406a280cb48 new file mode 100644 index 0000000..32e5e58 Binary files /dev/null and b/Library/Artifacts/65/65ae86d02b7cc7d4d970d406a280cb48 differ diff --git a/Library/Artifacts/65/65de4571fe69e04bcfbfbbb1bd461b2a b/Library/Artifacts/65/65de4571fe69e04bcfbfbbb1bd461b2a new file mode 100644 index 0000000..19e7e74 Binary files /dev/null and b/Library/Artifacts/65/65de4571fe69e04bcfbfbbb1bd461b2a differ diff --git a/Library/Artifacts/65/65e1765e177442bb7c053a43ece62971 b/Library/Artifacts/65/65e1765e177442bb7c053a43ece62971 new file mode 100644 index 0000000..ecf3bfe Binary files /dev/null and b/Library/Artifacts/65/65e1765e177442bb7c053a43ece62971 differ diff --git a/Library/Artifacts/65/65e353ac6b0f25c1f7cda7dcb9dd6080 b/Library/Artifacts/65/65e353ac6b0f25c1f7cda7dcb9dd6080 new file mode 100644 index 0000000..955d7d4 Binary files /dev/null and b/Library/Artifacts/65/65e353ac6b0f25c1f7cda7dcb9dd6080 differ diff --git a/Library/Artifacts/66/6618a33ea480ac61c334cefe955e7bd9 b/Library/Artifacts/66/6618a33ea480ac61c334cefe955e7bd9 new file mode 100644 index 0000000..67b013a Binary files /dev/null and b/Library/Artifacts/66/6618a33ea480ac61c334cefe955e7bd9 differ diff --git a/Library/Artifacts/66/66437b3b6ba936ca447fee527fd75724 b/Library/Artifacts/66/66437b3b6ba936ca447fee527fd75724 new file mode 100644 index 0000000..0508598 Binary files /dev/null and b/Library/Artifacts/66/66437b3b6ba936ca447fee527fd75724 differ diff --git a/Library/Artifacts/66/666f080ebf03ec3a1744e36f489b144c b/Library/Artifacts/66/666f080ebf03ec3a1744e36f489b144c new file mode 100644 index 0000000..d931f76 Binary files /dev/null and b/Library/Artifacts/66/666f080ebf03ec3a1744e36f489b144c differ diff --git a/Library/Artifacts/66/6671fff616a6087f8dbf2df11d5bd089 b/Library/Artifacts/66/6671fff616a6087f8dbf2df11d5bd089 new file mode 100644 index 0000000..3ddbd46 Binary files /dev/null and b/Library/Artifacts/66/6671fff616a6087f8dbf2df11d5bd089 differ diff --git a/Library/Artifacts/66/669d1803a796318556d55548c184d22a b/Library/Artifacts/66/669d1803a796318556d55548c184d22a new file mode 100644 index 0000000..3af4f7d Binary files /dev/null and b/Library/Artifacts/66/669d1803a796318556d55548c184d22a differ diff --git a/Library/Artifacts/66/66f5928ad36627139e1c423123a049b1 b/Library/Artifacts/66/66f5928ad36627139e1c423123a049b1 new file mode 100644 index 0000000..7d1d8e0 Binary files /dev/null and b/Library/Artifacts/66/66f5928ad36627139e1c423123a049b1 differ diff --git a/Library/Artifacts/66/66ff096d87430fc5fa2cfbe5aca828ce b/Library/Artifacts/66/66ff096d87430fc5fa2cfbe5aca828ce new file mode 100644 index 0000000..0944858 Binary files /dev/null and b/Library/Artifacts/66/66ff096d87430fc5fa2cfbe5aca828ce differ diff --git a/Library/Artifacts/67/67097334e26a7e96afa81114da5f00b1 b/Library/Artifacts/67/67097334e26a7e96afa81114da5f00b1 new file mode 100644 index 0000000..3303f22 Binary files /dev/null and b/Library/Artifacts/67/67097334e26a7e96afa81114da5f00b1 differ diff --git a/Library/Artifacts/67/670e4c8f13c9123456704d0df5755394 b/Library/Artifacts/67/670e4c8f13c9123456704d0df5755394 new file mode 100644 index 0000000..1a82d63 Binary files /dev/null and b/Library/Artifacts/67/670e4c8f13c9123456704d0df5755394 differ diff --git a/Library/Artifacts/67/671f5f7eb7b37e04f68312e92c1bfc3a b/Library/Artifacts/67/671f5f7eb7b37e04f68312e92c1bfc3a new file mode 100644 index 0000000..2b99824 Binary files /dev/null and b/Library/Artifacts/67/671f5f7eb7b37e04f68312e92c1bfc3a differ diff --git a/Library/Artifacts/67/6724069a93fa2271ae86dc6c12e9b848 b/Library/Artifacts/67/6724069a93fa2271ae86dc6c12e9b848 new file mode 100644 index 0000000..2badf4a Binary files /dev/null and b/Library/Artifacts/67/6724069a93fa2271ae86dc6c12e9b848 differ diff --git a/Library/Artifacts/67/6725d564f2ebde525fd4522373a31121 b/Library/Artifacts/67/6725d564f2ebde525fd4522373a31121 new file mode 100644 index 0000000..860ec35 Binary files /dev/null and b/Library/Artifacts/67/6725d564f2ebde525fd4522373a31121 differ diff --git a/Library/Artifacts/67/6782d4718744a75d664917aded9ae4ac b/Library/Artifacts/67/6782d4718744a75d664917aded9ae4ac new file mode 100644 index 0000000..044f8da Binary files /dev/null and b/Library/Artifacts/67/6782d4718744a75d664917aded9ae4ac differ diff --git a/Library/Artifacts/67/678652b176d7b85966caaa1484fcfe5f b/Library/Artifacts/67/678652b176d7b85966caaa1484fcfe5f new file mode 100644 index 0000000..f8279d6 Binary files /dev/null and b/Library/Artifacts/67/678652b176d7b85966caaa1484fcfe5f differ diff --git a/Library/Artifacts/68/680bd3102aa3da6978929cdeab109815 b/Library/Artifacts/68/680bd3102aa3da6978929cdeab109815 new file mode 100644 index 0000000..b243219 Binary files /dev/null and b/Library/Artifacts/68/680bd3102aa3da6978929cdeab109815 differ diff --git a/Library/Artifacts/68/680f70b91a05912b3c11bb210d3b361b b/Library/Artifacts/68/680f70b91a05912b3c11bb210d3b361b new file mode 100644 index 0000000..b7faec6 Binary files /dev/null and b/Library/Artifacts/68/680f70b91a05912b3c11bb210d3b361b differ diff --git a/Library/Artifacts/68/68163159b3e1a0c771da905f85fe6bd6 b/Library/Artifacts/68/68163159b3e1a0c771da905f85fe6bd6 new file mode 100644 index 0000000..501a7ce Binary files /dev/null and b/Library/Artifacts/68/68163159b3e1a0c771da905f85fe6bd6 differ diff --git a/Library/Artifacts/68/68201c38df7ba8cbcb18b44fe36367b9 b/Library/Artifacts/68/68201c38df7ba8cbcb18b44fe36367b9 new file mode 100644 index 0000000..7e20cd4 Binary files /dev/null and b/Library/Artifacts/68/68201c38df7ba8cbcb18b44fe36367b9 differ diff --git a/Library/Artifacts/68/683161bd73f1f16a6bbd78fec930baeb b/Library/Artifacts/68/683161bd73f1f16a6bbd78fec930baeb new file mode 100644 index 0000000..d80b4be Binary files /dev/null and b/Library/Artifacts/68/683161bd73f1f16a6bbd78fec930baeb differ diff --git a/Library/Artifacts/68/683ffe2fde760bd01a74d2f5685cdf21 b/Library/Artifacts/68/683ffe2fde760bd01a74d2f5685cdf21 new file mode 100644 index 0000000..9f18289 Binary files /dev/null and b/Library/Artifacts/68/683ffe2fde760bd01a74d2f5685cdf21 differ diff --git a/Library/Artifacts/68/6856c2bc9249fa67e6b41bdbe5cfc1b5 b/Library/Artifacts/68/6856c2bc9249fa67e6b41bdbe5cfc1b5 new file mode 100644 index 0000000..c104a58 Binary files /dev/null and b/Library/Artifacts/68/6856c2bc9249fa67e6b41bdbe5cfc1b5 differ diff --git a/Library/Artifacts/68/68680149f4e8fc9a417c33ad41775d50 b/Library/Artifacts/68/68680149f4e8fc9a417c33ad41775d50 new file mode 100644 index 0000000..be83f48 Binary files /dev/null and b/Library/Artifacts/68/68680149f4e8fc9a417c33ad41775d50 differ diff --git a/Library/Artifacts/68/68bf691daf9cd52ca852cb55f1a56334 b/Library/Artifacts/68/68bf691daf9cd52ca852cb55f1a56334 new file mode 100644 index 0000000..dc50965 Binary files /dev/null and b/Library/Artifacts/68/68bf691daf9cd52ca852cb55f1a56334 differ diff --git a/Library/Artifacts/69/696ec80664c885a38e8f56ff88b043c9 b/Library/Artifacts/69/696ec80664c885a38e8f56ff88b043c9 new file mode 100644 index 0000000..bde0b94 Binary files /dev/null and b/Library/Artifacts/69/696ec80664c885a38e8f56ff88b043c9 differ diff --git a/Library/Artifacts/69/699d6b64456a57d58f3a5b6d28bba7ba b/Library/Artifacts/69/699d6b64456a57d58f3a5b6d28bba7ba new file mode 100644 index 0000000..d436712 Binary files /dev/null and b/Library/Artifacts/69/699d6b64456a57d58f3a5b6d28bba7ba differ diff --git a/Library/Artifacts/69/69c7c86d2343917b7f61fd843f95fa5c b/Library/Artifacts/69/69c7c86d2343917b7f61fd843f95fa5c new file mode 100644 index 0000000..2f6071c Binary files /dev/null and b/Library/Artifacts/69/69c7c86d2343917b7f61fd843f95fa5c differ diff --git a/Library/Artifacts/69/69fe2f7bdcb853fdbef720e913dbd52e b/Library/Artifacts/69/69fe2f7bdcb853fdbef720e913dbd52e new file mode 100644 index 0000000..5be7633 Binary files /dev/null and b/Library/Artifacts/69/69fe2f7bdcb853fdbef720e913dbd52e differ diff --git a/Library/Artifacts/6a/6a09b6f178919506bb7b587f496eb360 b/Library/Artifacts/6a/6a09b6f178919506bb7b587f496eb360 new file mode 100644 index 0000000..1ce5b7c Binary files /dev/null and b/Library/Artifacts/6a/6a09b6f178919506bb7b587f496eb360 differ diff --git a/Library/Artifacts/6a/6a13407f87ffa4756dd256e84237623b b/Library/Artifacts/6a/6a13407f87ffa4756dd256e84237623b new file mode 100644 index 0000000..e3d49ec Binary files /dev/null and b/Library/Artifacts/6a/6a13407f87ffa4756dd256e84237623b differ diff --git a/Library/Artifacts/6a/6a1fe7d7f3e20622e2e405d3a1822f15 b/Library/Artifacts/6a/6a1fe7d7f3e20622e2e405d3a1822f15 new file mode 100644 index 0000000..0d86ab1 Binary files /dev/null and b/Library/Artifacts/6a/6a1fe7d7f3e20622e2e405d3a1822f15 differ diff --git a/Library/Artifacts/6a/6a2e606edf5eb28f88662706a54c5888 b/Library/Artifacts/6a/6a2e606edf5eb28f88662706a54c5888 new file mode 100644 index 0000000..a0faf4c Binary files /dev/null and b/Library/Artifacts/6a/6a2e606edf5eb28f88662706a54c5888 differ diff --git a/Library/Artifacts/6a/6a30915bdea87145acaf74baf1229d1a b/Library/Artifacts/6a/6a30915bdea87145acaf74baf1229d1a new file mode 100644 index 0000000..6a97007 Binary files /dev/null and b/Library/Artifacts/6a/6a30915bdea87145acaf74baf1229d1a differ diff --git a/Library/Artifacts/6a/6a39ad49c4d9119ec21561b77d84b566 b/Library/Artifacts/6a/6a39ad49c4d9119ec21561b77d84b566 new file mode 100644 index 0000000..570f954 Binary files /dev/null and b/Library/Artifacts/6a/6a39ad49c4d9119ec21561b77d84b566 differ diff --git a/Library/Artifacts/6a/6a681124fdb1bd570fcbae94a2f3ff49 b/Library/Artifacts/6a/6a681124fdb1bd570fcbae94a2f3ff49 new file mode 100644 index 0000000..05ed4a2 Binary files /dev/null and b/Library/Artifacts/6a/6a681124fdb1bd570fcbae94a2f3ff49 differ diff --git a/Library/Artifacts/6a/6adc046d624e0580072147592aeff54b b/Library/Artifacts/6a/6adc046d624e0580072147592aeff54b new file mode 100644 index 0000000..de4f1e2 Binary files /dev/null and b/Library/Artifacts/6a/6adc046d624e0580072147592aeff54b differ diff --git a/Library/Artifacts/6a/6adee162390cf3c421a2f862114b48e7 b/Library/Artifacts/6a/6adee162390cf3c421a2f862114b48e7 new file mode 100644 index 0000000..bbaa317 Binary files /dev/null and b/Library/Artifacts/6a/6adee162390cf3c421a2f862114b48e7 differ diff --git a/Library/Artifacts/6b/6b2820427c613a4c2971b08ecfc6a2c7 b/Library/Artifacts/6b/6b2820427c613a4c2971b08ecfc6a2c7 new file mode 100644 index 0000000..ffcdfd2 Binary files /dev/null and b/Library/Artifacts/6b/6b2820427c613a4c2971b08ecfc6a2c7 differ diff --git a/Library/Artifacts/6b/6b71e12ae88c104e4a4bfb7b690dcffa b/Library/Artifacts/6b/6b71e12ae88c104e4a4bfb7b690dcffa new file mode 100644 index 0000000..646220f Binary files /dev/null and b/Library/Artifacts/6b/6b71e12ae88c104e4a4bfb7b690dcffa differ diff --git a/Library/Artifacts/6b/6b8540dc8a0e8b31eaccd9359cebf2d2 b/Library/Artifacts/6b/6b8540dc8a0e8b31eaccd9359cebf2d2 new file mode 100644 index 0000000..790d02a Binary files /dev/null and b/Library/Artifacts/6b/6b8540dc8a0e8b31eaccd9359cebf2d2 differ diff --git a/Library/Artifacts/6b/6b9b7ef76014df861591ea5485ab728e b/Library/Artifacts/6b/6b9b7ef76014df861591ea5485ab728e new file mode 100644 index 0000000..db1807f Binary files /dev/null and b/Library/Artifacts/6b/6b9b7ef76014df861591ea5485ab728e differ diff --git a/Library/Artifacts/6b/6bcb85e9b2f9360af1bbd343733c5941 b/Library/Artifacts/6b/6bcb85e9b2f9360af1bbd343733c5941 new file mode 100644 index 0000000..4381a6e Binary files /dev/null and b/Library/Artifacts/6b/6bcb85e9b2f9360af1bbd343733c5941 differ diff --git a/Library/Artifacts/6b/6bd21a5f5818e701f63a07f70bc0edbd b/Library/Artifacts/6b/6bd21a5f5818e701f63a07f70bc0edbd new file mode 100644 index 0000000..1f9f90d Binary files /dev/null and b/Library/Artifacts/6b/6bd21a5f5818e701f63a07f70bc0edbd differ diff --git a/Library/Artifacts/6b/6bf9b5c76511e25fcd708bf075a53720 b/Library/Artifacts/6b/6bf9b5c76511e25fcd708bf075a53720 new file mode 100644 index 0000000..be386cc Binary files /dev/null and b/Library/Artifacts/6b/6bf9b5c76511e25fcd708bf075a53720 differ diff --git a/Library/Artifacts/6c/6c68999f70f27ff7c436d7d5ebec0443 b/Library/Artifacts/6c/6c68999f70f27ff7c436d7d5ebec0443 new file mode 100644 index 0000000..b810d61 Binary files /dev/null and b/Library/Artifacts/6c/6c68999f70f27ff7c436d7d5ebec0443 differ diff --git a/Library/Artifacts/6c/6c7b40d2ffaefd1268c01b022be13450 b/Library/Artifacts/6c/6c7b40d2ffaefd1268c01b022be13450 new file mode 100644 index 0000000..a9907b7 Binary files /dev/null and b/Library/Artifacts/6c/6c7b40d2ffaefd1268c01b022be13450 differ diff --git a/Library/Artifacts/6c/6c924df507920c74f1f6b75280298ea9 b/Library/Artifacts/6c/6c924df507920c74f1f6b75280298ea9 new file mode 100644 index 0000000..8952007 Binary files /dev/null and b/Library/Artifacts/6c/6c924df507920c74f1f6b75280298ea9 differ diff --git a/Library/Artifacts/6c/6cb350babe9aa57765ba621d7695183a b/Library/Artifacts/6c/6cb350babe9aa57765ba621d7695183a new file mode 100644 index 0000000..7bcf03b Binary files /dev/null and b/Library/Artifacts/6c/6cb350babe9aa57765ba621d7695183a differ diff --git a/Library/Artifacts/6c/6cc59723ed8565cd5a30af98d671c964 b/Library/Artifacts/6c/6cc59723ed8565cd5a30af98d671c964 new file mode 100644 index 0000000..483caa2 Binary files /dev/null and b/Library/Artifacts/6c/6cc59723ed8565cd5a30af98d671c964 differ diff --git a/Library/Artifacts/6c/6cd23c174b9ac28527591390be96f9dd b/Library/Artifacts/6c/6cd23c174b9ac28527591390be96f9dd new file mode 100644 index 0000000..3fabe13 Binary files /dev/null and b/Library/Artifacts/6c/6cd23c174b9ac28527591390be96f9dd differ diff --git a/Library/Artifacts/6c/6ce7e9e7e2e67abd09de93ee60a10861 b/Library/Artifacts/6c/6ce7e9e7e2e67abd09de93ee60a10861 new file mode 100644 index 0000000..d497843 Binary files /dev/null and b/Library/Artifacts/6c/6ce7e9e7e2e67abd09de93ee60a10861 differ diff --git a/Library/Artifacts/6c/6cf9b68aa8ad3324ff114591df23787e b/Library/Artifacts/6c/6cf9b68aa8ad3324ff114591df23787e new file mode 100644 index 0000000..233a554 Binary files /dev/null and b/Library/Artifacts/6c/6cf9b68aa8ad3324ff114591df23787e differ diff --git a/Library/Artifacts/6d/6d32f1c7bd13c750ca342abdde50eace b/Library/Artifacts/6d/6d32f1c7bd13c750ca342abdde50eace new file mode 100644 index 0000000..ed70915 Binary files /dev/null and b/Library/Artifacts/6d/6d32f1c7bd13c750ca342abdde50eace differ diff --git a/Library/Artifacts/6d/6d3530cd807c77c625846fe755efc21b b/Library/Artifacts/6d/6d3530cd807c77c625846fe755efc21b new file mode 100644 index 0000000..461ca09 Binary files /dev/null and b/Library/Artifacts/6d/6d3530cd807c77c625846fe755efc21b differ diff --git a/Library/Artifacts/6d/6d6bbba9800e3b0b7974e3ba7b8aca43 b/Library/Artifacts/6d/6d6bbba9800e3b0b7974e3ba7b8aca43 new file mode 100644 index 0000000..ce52bfb Binary files /dev/null and b/Library/Artifacts/6d/6d6bbba9800e3b0b7974e3ba7b8aca43 differ diff --git a/Library/Artifacts/6d/6d8a9ef4dc2f0e84a9918e7d09e0ca93 b/Library/Artifacts/6d/6d8a9ef4dc2f0e84a9918e7d09e0ca93 new file mode 100644 index 0000000..923a4ec Binary files /dev/null and b/Library/Artifacts/6d/6d8a9ef4dc2f0e84a9918e7d09e0ca93 differ diff --git a/Library/Artifacts/6d/6d8f2fb29d491f630d7b922f6cd71ac9 b/Library/Artifacts/6d/6d8f2fb29d491f630d7b922f6cd71ac9 new file mode 100644 index 0000000..dec7fd0 Binary files /dev/null and b/Library/Artifacts/6d/6d8f2fb29d491f630d7b922f6cd71ac9 differ diff --git a/Library/Artifacts/6d/6d96785c0a70e689924ee5bbfab19a9f b/Library/Artifacts/6d/6d96785c0a70e689924ee5bbfab19a9f new file mode 100644 index 0000000..577da4c Binary files /dev/null and b/Library/Artifacts/6d/6d96785c0a70e689924ee5bbfab19a9f differ diff --git a/Library/Artifacts/6e/6e1c02e77e7b8c7d9e961600af7332af b/Library/Artifacts/6e/6e1c02e77e7b8c7d9e961600af7332af new file mode 100644 index 0000000..75e1766 Binary files /dev/null and b/Library/Artifacts/6e/6e1c02e77e7b8c7d9e961600af7332af differ diff --git a/Library/Artifacts/6e/6e5aaeb49834c2c4ac2d7a2aed56751d b/Library/Artifacts/6e/6e5aaeb49834c2c4ac2d7a2aed56751d new file mode 100644 index 0000000..404c06b Binary files /dev/null and b/Library/Artifacts/6e/6e5aaeb49834c2c4ac2d7a2aed56751d differ diff --git a/Library/Artifacts/6e/6e64706d61d7fd39fa9f2169fd9af832 b/Library/Artifacts/6e/6e64706d61d7fd39fa9f2169fd9af832 new file mode 100644 index 0000000..f269b11 Binary files /dev/null and b/Library/Artifacts/6e/6e64706d61d7fd39fa9f2169fd9af832 differ diff --git a/Library/Artifacts/6e/6eb126b3d0dcd3f57c9d6c952f4bfdc1 b/Library/Artifacts/6e/6eb126b3d0dcd3f57c9d6c952f4bfdc1 new file mode 100644 index 0000000..2efd5c4 Binary files /dev/null and b/Library/Artifacts/6e/6eb126b3d0dcd3f57c9d6c952f4bfdc1 differ diff --git a/Library/Artifacts/6e/6eba9535764646a3aaabc5c9d71cd3fe b/Library/Artifacts/6e/6eba9535764646a3aaabc5c9d71cd3fe new file mode 100644 index 0000000..94132d2 Binary files /dev/null and b/Library/Artifacts/6e/6eba9535764646a3aaabc5c9d71cd3fe differ diff --git a/Library/Artifacts/6e/6ebbc067263fd16f60117b45d9673f5b b/Library/Artifacts/6e/6ebbc067263fd16f60117b45d9673f5b new file mode 100644 index 0000000..e255bde Binary files /dev/null and b/Library/Artifacts/6e/6ebbc067263fd16f60117b45d9673f5b differ diff --git a/Library/Artifacts/6e/6ece5606c0d91afb9cc6971d7156353c b/Library/Artifacts/6e/6ece5606c0d91afb9cc6971d7156353c new file mode 100644 index 0000000..41fe660 Binary files /dev/null and b/Library/Artifacts/6e/6ece5606c0d91afb9cc6971d7156353c differ diff --git a/Library/Artifacts/6f/6f856ef207f0e4b496e12508f7403ed2 b/Library/Artifacts/6f/6f856ef207f0e4b496e12508f7403ed2 new file mode 100644 index 0000000..1fda9c2 Binary files /dev/null and b/Library/Artifacts/6f/6f856ef207f0e4b496e12508f7403ed2 differ diff --git a/Library/Artifacts/6f/6faaf401de9d925a06deb01031203d44 b/Library/Artifacts/6f/6faaf401de9d925a06deb01031203d44 new file mode 100644 index 0000000..b20da55 Binary files /dev/null and b/Library/Artifacts/6f/6faaf401de9d925a06deb01031203d44 differ diff --git a/Library/Artifacts/6f/6fab6b4c6da38e4efd19139fe588580b b/Library/Artifacts/6f/6fab6b4c6da38e4efd19139fe588580b new file mode 100644 index 0000000..ede5af4 Binary files /dev/null and b/Library/Artifacts/6f/6fab6b4c6da38e4efd19139fe588580b differ diff --git a/Library/Artifacts/6f/6fbbf794908747d376df69caf274b1a4 b/Library/Artifacts/6f/6fbbf794908747d376df69caf274b1a4 new file mode 100644 index 0000000..5bb4865 Binary files /dev/null and b/Library/Artifacts/6f/6fbbf794908747d376df69caf274b1a4 differ diff --git a/Library/Artifacts/6f/6ff7cfe62eab5be0bf7b4cb2111b718c b/Library/Artifacts/6f/6ff7cfe62eab5be0bf7b4cb2111b718c new file mode 100644 index 0000000..bebb22b Binary files /dev/null and b/Library/Artifacts/6f/6ff7cfe62eab5be0bf7b4cb2111b718c differ diff --git a/Library/Artifacts/70/7004db2adf9fa3e1c16654100afd931f b/Library/Artifacts/70/7004db2adf9fa3e1c16654100afd931f new file mode 100644 index 0000000..d139b3e Binary files /dev/null and b/Library/Artifacts/70/7004db2adf9fa3e1c16654100afd931f differ diff --git a/Library/Artifacts/70/701e1151fabb58ccaa818fda39661d90 b/Library/Artifacts/70/701e1151fabb58ccaa818fda39661d90 new file mode 100644 index 0000000..9209c9a Binary files /dev/null and b/Library/Artifacts/70/701e1151fabb58ccaa818fda39661d90 differ diff --git a/Library/Artifacts/70/702baa817ac44c6f5044e54f35db6ecf b/Library/Artifacts/70/702baa817ac44c6f5044e54f35db6ecf new file mode 100644 index 0000000..4cc88d2 Binary files /dev/null and b/Library/Artifacts/70/702baa817ac44c6f5044e54f35db6ecf differ diff --git a/Library/Artifacts/70/704259112455451f177fd72de963426a b/Library/Artifacts/70/704259112455451f177fd72de963426a new file mode 100644 index 0000000..26ee7e2 Binary files /dev/null and b/Library/Artifacts/70/704259112455451f177fd72de963426a differ diff --git a/Library/Artifacts/70/7099071af3fef2105d62bee622d3369d b/Library/Artifacts/70/7099071af3fef2105d62bee622d3369d new file mode 100644 index 0000000..3dfbacb Binary files /dev/null and b/Library/Artifacts/70/7099071af3fef2105d62bee622d3369d differ diff --git a/Library/Artifacts/70/70ab0933ed6433eca7c65e2dbc4f8a37 b/Library/Artifacts/70/70ab0933ed6433eca7c65e2dbc4f8a37 new file mode 100644 index 0000000..9cd5a53 Binary files /dev/null and b/Library/Artifacts/70/70ab0933ed6433eca7c65e2dbc4f8a37 differ diff --git a/Library/Artifacts/70/70d08fde86a365e7ae1da2425e184030 b/Library/Artifacts/70/70d08fde86a365e7ae1da2425e184030 new file mode 100644 index 0000000..7b6e88c Binary files /dev/null and b/Library/Artifacts/70/70d08fde86a365e7ae1da2425e184030 differ diff --git a/Library/Artifacts/70/70d2f0347b0117af60fadff5d162d9e4 b/Library/Artifacts/70/70d2f0347b0117af60fadff5d162d9e4 new file mode 100644 index 0000000..26b095b Binary files /dev/null and b/Library/Artifacts/70/70d2f0347b0117af60fadff5d162d9e4 differ diff --git a/Library/Artifacts/70/70da5f75c29b51f7b9b103d5a17114cb b/Library/Artifacts/70/70da5f75c29b51f7b9b103d5a17114cb new file mode 100644 index 0000000..ac5deaa Binary files /dev/null and b/Library/Artifacts/70/70da5f75c29b51f7b9b103d5a17114cb differ diff --git a/Library/Artifacts/70/70e1879cf995cb4fc0846bf61fb743f0 b/Library/Artifacts/70/70e1879cf995cb4fc0846bf61fb743f0 new file mode 100644 index 0000000..3bc191f Binary files /dev/null and b/Library/Artifacts/70/70e1879cf995cb4fc0846bf61fb743f0 differ diff --git a/Library/Artifacts/70/70e65ba4084fca8104a20b4c7f43ea6c b/Library/Artifacts/70/70e65ba4084fca8104a20b4c7f43ea6c new file mode 100644 index 0000000..248e657 Binary files /dev/null and b/Library/Artifacts/70/70e65ba4084fca8104a20b4c7f43ea6c differ diff --git a/Library/Artifacts/70/70ebdb59f7f1c9243993bc5abf966bde b/Library/Artifacts/70/70ebdb59f7f1c9243993bc5abf966bde new file mode 100644 index 0000000..06ca912 Binary files /dev/null and b/Library/Artifacts/70/70ebdb59f7f1c9243993bc5abf966bde differ diff --git a/Library/Artifacts/71/71640791be58cec9d229b4f986d1cab5 b/Library/Artifacts/71/71640791be58cec9d229b4f986d1cab5 new file mode 100644 index 0000000..52e01ae Binary files /dev/null and b/Library/Artifacts/71/71640791be58cec9d229b4f986d1cab5 differ diff --git a/Library/Artifacts/71/718d466cbd36a5eaacdd1c65a4ffef9c b/Library/Artifacts/71/718d466cbd36a5eaacdd1c65a4ffef9c new file mode 100644 index 0000000..250060b Binary files /dev/null and b/Library/Artifacts/71/718d466cbd36a5eaacdd1c65a4ffef9c differ diff --git a/Library/Artifacts/71/71903b3c63be99258854dacd077fed45 b/Library/Artifacts/71/71903b3c63be99258854dacd077fed45 new file mode 100644 index 0000000..d7a964b Binary files /dev/null and b/Library/Artifacts/71/71903b3c63be99258854dacd077fed45 differ diff --git a/Library/Artifacts/71/7193aac601e66df32a2b154ed48c19f2 b/Library/Artifacts/71/7193aac601e66df32a2b154ed48c19f2 new file mode 100644 index 0000000..f1ff1e9 Binary files /dev/null and b/Library/Artifacts/71/7193aac601e66df32a2b154ed48c19f2 differ diff --git a/Library/Artifacts/71/71ac7dce63c5de4a4823c21fede02b8f b/Library/Artifacts/71/71ac7dce63c5de4a4823c21fede02b8f new file mode 100644 index 0000000..14009d1 Binary files /dev/null and b/Library/Artifacts/71/71ac7dce63c5de4a4823c21fede02b8f differ diff --git a/Library/Artifacts/71/71b1526c0c6067c0a41d4fb774971c9d b/Library/Artifacts/71/71b1526c0c6067c0a41d4fb774971c9d new file mode 100644 index 0000000..514e19b Binary files /dev/null and b/Library/Artifacts/71/71b1526c0c6067c0a41d4fb774971c9d differ diff --git a/Library/Artifacts/71/71b1cf657d94ff8b63b342602256db33 b/Library/Artifacts/71/71b1cf657d94ff8b63b342602256db33 new file mode 100644 index 0000000..3383775 Binary files /dev/null and b/Library/Artifacts/71/71b1cf657d94ff8b63b342602256db33 differ diff --git a/Library/Artifacts/71/71b4bab4ea4d3ce85aa807c3a50dc9fa b/Library/Artifacts/71/71b4bab4ea4d3ce85aa807c3a50dc9fa new file mode 100644 index 0000000..767ebe3 Binary files /dev/null and b/Library/Artifacts/71/71b4bab4ea4d3ce85aa807c3a50dc9fa differ diff --git a/Library/Artifacts/72/72044eb3138c70cff783f3b149eea61c b/Library/Artifacts/72/72044eb3138c70cff783f3b149eea61c new file mode 100644 index 0000000..8a49dcb Binary files /dev/null and b/Library/Artifacts/72/72044eb3138c70cff783f3b149eea61c differ diff --git a/Library/Artifacts/72/72d667f813ebfe9f1f9686dcb2a31bf2 b/Library/Artifacts/72/72d667f813ebfe9f1f9686dcb2a31bf2 new file mode 100644 index 0000000..9e05f68 Binary files /dev/null and b/Library/Artifacts/72/72d667f813ebfe9f1f9686dcb2a31bf2 differ diff --git a/Library/Artifacts/73/7315d757f071263932df671864889391 b/Library/Artifacts/73/7315d757f071263932df671864889391 new file mode 100644 index 0000000..fb0154b Binary files /dev/null and b/Library/Artifacts/73/7315d757f071263932df671864889391 differ diff --git a/Library/Artifacts/73/733de22011866a2ea4752db484ac5b2e b/Library/Artifacts/73/733de22011866a2ea4752db484ac5b2e new file mode 100644 index 0000000..fe8de17 Binary files /dev/null and b/Library/Artifacts/73/733de22011866a2ea4752db484ac5b2e differ diff --git a/Library/Artifacts/73/734d7b5e90f8ee3b04c9c998619223b4 b/Library/Artifacts/73/734d7b5e90f8ee3b04c9c998619223b4 new file mode 100644 index 0000000..e0af02e Binary files /dev/null and b/Library/Artifacts/73/734d7b5e90f8ee3b04c9c998619223b4 differ diff --git a/Library/Artifacts/73/7387de4767723b7a38cf854c6916b732 b/Library/Artifacts/73/7387de4767723b7a38cf854c6916b732 new file mode 100644 index 0000000..e635519 Binary files /dev/null and b/Library/Artifacts/73/7387de4767723b7a38cf854c6916b732 differ diff --git a/Library/Artifacts/73/73a1c7a35a38ff882c2980cba5cc798e b/Library/Artifacts/73/73a1c7a35a38ff882c2980cba5cc798e new file mode 100644 index 0000000..de62423 Binary files /dev/null and b/Library/Artifacts/73/73a1c7a35a38ff882c2980cba5cc798e differ diff --git a/Library/Artifacts/73/73b61786eff7a9d48a5e8dd7f02f139b b/Library/Artifacts/73/73b61786eff7a9d48a5e8dd7f02f139b new file mode 100644 index 0000000..6755c1e Binary files /dev/null and b/Library/Artifacts/73/73b61786eff7a9d48a5e8dd7f02f139b differ diff --git a/Library/Artifacts/73/73d6a34541bf0be7d477ec68db129ef2 b/Library/Artifacts/73/73d6a34541bf0be7d477ec68db129ef2 new file mode 100644 index 0000000..2c25d27 Binary files /dev/null and b/Library/Artifacts/73/73d6a34541bf0be7d477ec68db129ef2 differ diff --git a/Library/Artifacts/73/73ec5912fb878209dbdb5f18897c0e19 b/Library/Artifacts/73/73ec5912fb878209dbdb5f18897c0e19 new file mode 100644 index 0000000..5db1dda Binary files /dev/null and b/Library/Artifacts/73/73ec5912fb878209dbdb5f18897c0e19 differ diff --git a/Library/Artifacts/74/742740449b5f025ef6f38bef29e01f50 b/Library/Artifacts/74/742740449b5f025ef6f38bef29e01f50 new file mode 100644 index 0000000..8e54fb1 Binary files /dev/null and b/Library/Artifacts/74/742740449b5f025ef6f38bef29e01f50 differ diff --git a/Library/Artifacts/74/7483bfa2860e13cc5e738a69c2f3a414 b/Library/Artifacts/74/7483bfa2860e13cc5e738a69c2f3a414 new file mode 100644 index 0000000..ae69b08 Binary files /dev/null and b/Library/Artifacts/74/7483bfa2860e13cc5e738a69c2f3a414 differ diff --git a/Library/Artifacts/74/74b84aeb0abb92f8128e2858db348eb5 b/Library/Artifacts/74/74b84aeb0abb92f8128e2858db348eb5 new file mode 100644 index 0000000..d583604 Binary files /dev/null and b/Library/Artifacts/74/74b84aeb0abb92f8128e2858db348eb5 differ diff --git a/Library/Artifacts/74/74dd218bf3be6dc120c5e2eea33a964c b/Library/Artifacts/74/74dd218bf3be6dc120c5e2eea33a964c new file mode 100644 index 0000000..d7e1824 Binary files /dev/null and b/Library/Artifacts/74/74dd218bf3be6dc120c5e2eea33a964c differ diff --git a/Library/Artifacts/74/74e8ae365aed8b147044d072c55b2099 b/Library/Artifacts/74/74e8ae365aed8b147044d072c55b2099 new file mode 100644 index 0000000..a171986 Binary files /dev/null and b/Library/Artifacts/74/74e8ae365aed8b147044d072c55b2099 differ diff --git a/Library/Artifacts/74/74eb8d7146ff8644d2594e0a959b7e92 b/Library/Artifacts/74/74eb8d7146ff8644d2594e0a959b7e92 new file mode 100644 index 0000000..8fa04e3 Binary files /dev/null and b/Library/Artifacts/74/74eb8d7146ff8644d2594e0a959b7e92 differ diff --git a/Library/Artifacts/75/753c726a61c13a143a1301acf49a641f b/Library/Artifacts/75/753c726a61c13a143a1301acf49a641f new file mode 100644 index 0000000..4f17621 Binary files /dev/null and b/Library/Artifacts/75/753c726a61c13a143a1301acf49a641f differ diff --git a/Library/Artifacts/75/75512cd3ebb94df30f4b3a4361932fab b/Library/Artifacts/75/75512cd3ebb94df30f4b3a4361932fab new file mode 100644 index 0000000..aee4296 Binary files /dev/null and b/Library/Artifacts/75/75512cd3ebb94df30f4b3a4361932fab differ diff --git a/Library/Artifacts/75/7551d22d9c4bafcdde7ee76a1500442e b/Library/Artifacts/75/7551d22d9c4bafcdde7ee76a1500442e new file mode 100644 index 0000000..a2c1754 Binary files /dev/null and b/Library/Artifacts/75/7551d22d9c4bafcdde7ee76a1500442e differ diff --git a/Library/Artifacts/75/755deb604b25e2b04c6d4e4de3fe84c2 b/Library/Artifacts/75/755deb604b25e2b04c6d4e4de3fe84c2 new file mode 100644 index 0000000..1b0b909 Binary files /dev/null and b/Library/Artifacts/75/755deb604b25e2b04c6d4e4de3fe84c2 differ diff --git a/Library/Artifacts/75/758f8197211e777afdf1379dd1335134 b/Library/Artifacts/75/758f8197211e777afdf1379dd1335134 new file mode 100644 index 0000000..da5f391 Binary files /dev/null and b/Library/Artifacts/75/758f8197211e777afdf1379dd1335134 differ diff --git a/Library/Artifacts/75/759fa782a1a19355fc7154f167b8e057 b/Library/Artifacts/75/759fa782a1a19355fc7154f167b8e057 new file mode 100644 index 0000000..24b3158 Binary files /dev/null and b/Library/Artifacts/75/759fa782a1a19355fc7154f167b8e057 differ diff --git a/Library/Artifacts/75/75b6109f08f360955b92b40a77f564e8 b/Library/Artifacts/75/75b6109f08f360955b92b40a77f564e8 new file mode 100644 index 0000000..6a4f9eb Binary files /dev/null and b/Library/Artifacts/75/75b6109f08f360955b92b40a77f564e8 differ diff --git a/Library/Artifacts/75/75b66fc6c49be11f86f01b0dce5a14ad b/Library/Artifacts/75/75b66fc6c49be11f86f01b0dce5a14ad new file mode 100644 index 0000000..e4af712 Binary files /dev/null and b/Library/Artifacts/75/75b66fc6c49be11f86f01b0dce5a14ad differ diff --git a/Library/Artifacts/75/75cc5179f9c95867ebf35ccff9b1c635 b/Library/Artifacts/75/75cc5179f9c95867ebf35ccff9b1c635 new file mode 100644 index 0000000..e1b5110 Binary files /dev/null and b/Library/Artifacts/75/75cc5179f9c95867ebf35ccff9b1c635 differ diff --git a/Library/Artifacts/75/75e54163468e981b0080e1fc929f7bad b/Library/Artifacts/75/75e54163468e981b0080e1fc929f7bad new file mode 100644 index 0000000..9ab6c7a Binary files /dev/null and b/Library/Artifacts/75/75e54163468e981b0080e1fc929f7bad differ diff --git a/Library/Artifacts/76/76430bbe2e87dea9fe177a06461efb57 b/Library/Artifacts/76/76430bbe2e87dea9fe177a06461efb57 new file mode 100644 index 0000000..3d31682 Binary files /dev/null and b/Library/Artifacts/76/76430bbe2e87dea9fe177a06461efb57 differ diff --git a/Library/Artifacts/76/768950ad0a43102f28fdebad618ad0d4 b/Library/Artifacts/76/768950ad0a43102f28fdebad618ad0d4 new file mode 100644 index 0000000..0ded2d1 Binary files /dev/null and b/Library/Artifacts/76/768950ad0a43102f28fdebad618ad0d4 differ diff --git a/Library/Artifacts/76/768ae14e272da902434001777cd29855 b/Library/Artifacts/76/768ae14e272da902434001777cd29855 new file mode 100644 index 0000000..88ea193 Binary files /dev/null and b/Library/Artifacts/76/768ae14e272da902434001777cd29855 differ diff --git a/Library/Artifacts/76/769371913ae9d18bb6b8eb76573eb946 b/Library/Artifacts/76/769371913ae9d18bb6b8eb76573eb946 new file mode 100644 index 0000000..e3898c8 Binary files /dev/null and b/Library/Artifacts/76/769371913ae9d18bb6b8eb76573eb946 differ diff --git a/Library/Artifacts/76/76f3c6907468d53c9460136ae62c10d2 b/Library/Artifacts/76/76f3c6907468d53c9460136ae62c10d2 new file mode 100644 index 0000000..52dd816 Binary files /dev/null and b/Library/Artifacts/76/76f3c6907468d53c9460136ae62c10d2 differ diff --git a/Library/Artifacts/77/77045b1fa43a8fe1797bb785c1107172 b/Library/Artifacts/77/77045b1fa43a8fe1797bb785c1107172 new file mode 100644 index 0000000..64ae542 Binary files /dev/null and b/Library/Artifacts/77/77045b1fa43a8fe1797bb785c1107172 differ diff --git a/Library/Artifacts/77/770fe3ffbc571f483625e6a8559eda14 b/Library/Artifacts/77/770fe3ffbc571f483625e6a8559eda14 new file mode 100644 index 0000000..0652d1e Binary files /dev/null and b/Library/Artifacts/77/770fe3ffbc571f483625e6a8559eda14 differ diff --git a/Library/Artifacts/77/779a6e3ec8212a1b044207f506a17246 b/Library/Artifacts/77/779a6e3ec8212a1b044207f506a17246 new file mode 100644 index 0000000..2052d41 Binary files /dev/null and b/Library/Artifacts/77/779a6e3ec8212a1b044207f506a17246 differ diff --git a/Library/Artifacts/77/77cb3a699eb307601ab167c99f910878 b/Library/Artifacts/77/77cb3a699eb307601ab167c99f910878 new file mode 100644 index 0000000..5c9356a Binary files /dev/null and b/Library/Artifacts/77/77cb3a699eb307601ab167c99f910878 differ diff --git a/Library/Artifacts/77/77ef3e7a444a4c87c1d311cad88d5edc b/Library/Artifacts/77/77ef3e7a444a4c87c1d311cad88d5edc new file mode 100644 index 0000000..da4c7e1 Binary files /dev/null and b/Library/Artifacts/77/77ef3e7a444a4c87c1d311cad88d5edc differ diff --git a/Library/Artifacts/78/7808c154cf09768b6b1b29474f47efc7 b/Library/Artifacts/78/7808c154cf09768b6b1b29474f47efc7 new file mode 100644 index 0000000..9c532f8 Binary files /dev/null and b/Library/Artifacts/78/7808c154cf09768b6b1b29474f47efc7 differ diff --git a/Library/Artifacts/78/7815eca239947c8d459a9784fe581b5c b/Library/Artifacts/78/7815eca239947c8d459a9784fe581b5c new file mode 100644 index 0000000..dbdf6bf Binary files /dev/null and b/Library/Artifacts/78/7815eca239947c8d459a9784fe581b5c differ diff --git a/Library/Artifacts/78/784a4875e62b50f8374b0662a4daf310 b/Library/Artifacts/78/784a4875e62b50f8374b0662a4daf310 new file mode 100644 index 0000000..89e207b Binary files /dev/null and b/Library/Artifacts/78/784a4875e62b50f8374b0662a4daf310 differ diff --git a/Library/Artifacts/78/7885c5cd3e66705d8de8f5c9086d34f5 b/Library/Artifacts/78/7885c5cd3e66705d8de8f5c9086d34f5 new file mode 100644 index 0000000..0ff7d98 Binary files /dev/null and b/Library/Artifacts/78/7885c5cd3e66705d8de8f5c9086d34f5 differ diff --git a/Library/Artifacts/78/78b13c638d27bae0cd77e1cdc5a2bafb b/Library/Artifacts/78/78b13c638d27bae0cd77e1cdc5a2bafb new file mode 100644 index 0000000..abc62e8 Binary files /dev/null and b/Library/Artifacts/78/78b13c638d27bae0cd77e1cdc5a2bafb differ diff --git a/Library/Artifacts/78/78b3e472edc6ebd6569683bb5a5cd6ba b/Library/Artifacts/78/78b3e472edc6ebd6569683bb5a5cd6ba new file mode 100644 index 0000000..cb181bb Binary files /dev/null and b/Library/Artifacts/78/78b3e472edc6ebd6569683bb5a5cd6ba differ diff --git a/Library/Artifacts/78/78e2b24ce74684d883186aedffcf28b4 b/Library/Artifacts/78/78e2b24ce74684d883186aedffcf28b4 new file mode 100644 index 0000000..c337545 Binary files /dev/null and b/Library/Artifacts/78/78e2b24ce74684d883186aedffcf28b4 differ diff --git a/Library/Artifacts/78/78ef8df6617513dbb69a529906919cbe b/Library/Artifacts/78/78ef8df6617513dbb69a529906919cbe new file mode 100644 index 0000000..bdc80c6 Binary files /dev/null and b/Library/Artifacts/78/78ef8df6617513dbb69a529906919cbe differ diff --git a/Library/Artifacts/78/78f99c1d2b3d184a2d42f68ad4c7741a b/Library/Artifacts/78/78f99c1d2b3d184a2d42f68ad4c7741a new file mode 100644 index 0000000..f7ff250 Binary files /dev/null and b/Library/Artifacts/78/78f99c1d2b3d184a2d42f68ad4c7741a differ diff --git a/Library/Artifacts/79/7908c8658b6ed9bdd09a888ed7a9ffe1 b/Library/Artifacts/79/7908c8658b6ed9bdd09a888ed7a9ffe1 new file mode 100644 index 0000000..8274c1f Binary files /dev/null and b/Library/Artifacts/79/7908c8658b6ed9bdd09a888ed7a9ffe1 differ diff --git a/Library/Artifacts/79/7920e7d547b4c0280a278fcfecba256b b/Library/Artifacts/79/7920e7d547b4c0280a278fcfecba256b new file mode 100644 index 0000000..45efae9 Binary files /dev/null and b/Library/Artifacts/79/7920e7d547b4c0280a278fcfecba256b differ diff --git a/Library/Artifacts/79/79292ff3006d5a11d41e60bcca62c730 b/Library/Artifacts/79/79292ff3006d5a11d41e60bcca62c730 new file mode 100644 index 0000000..0e3d788 Binary files /dev/null and b/Library/Artifacts/79/79292ff3006d5a11d41e60bcca62c730 differ diff --git a/Library/Artifacts/79/7963596701837d58bf964af683fca95f b/Library/Artifacts/79/7963596701837d58bf964af683fca95f new file mode 100644 index 0000000..4300bfb Binary files /dev/null and b/Library/Artifacts/79/7963596701837d58bf964af683fca95f differ diff --git a/Library/Artifacts/79/797e8749186d99c75bf29827007b9e80 b/Library/Artifacts/79/797e8749186d99c75bf29827007b9e80 new file mode 100644 index 0000000..09c6765 Binary files /dev/null and b/Library/Artifacts/79/797e8749186d99c75bf29827007b9e80 differ diff --git a/Library/Artifacts/79/79b22b8410f3651278beb78645e845c9 b/Library/Artifacts/79/79b22b8410f3651278beb78645e845c9 new file mode 100644 index 0000000..d0086ed Binary files /dev/null and b/Library/Artifacts/79/79b22b8410f3651278beb78645e845c9 differ diff --git a/Library/Artifacts/79/79ec9924523cab891e1402fd42acd369 b/Library/Artifacts/79/79ec9924523cab891e1402fd42acd369 new file mode 100644 index 0000000..7964e9b Binary files /dev/null and b/Library/Artifacts/79/79ec9924523cab891e1402fd42acd369 differ diff --git a/Library/Artifacts/7a/7a1565143fd0c58a100c86c3e1f5c883 b/Library/Artifacts/7a/7a1565143fd0c58a100c86c3e1f5c883 new file mode 100644 index 0000000..e600be3 Binary files /dev/null and b/Library/Artifacts/7a/7a1565143fd0c58a100c86c3e1f5c883 differ diff --git a/Library/Artifacts/7a/7a1ddd4bb62494c94d9a519402133b72 b/Library/Artifacts/7a/7a1ddd4bb62494c94d9a519402133b72 new file mode 100644 index 0000000..a9fbb89 Binary files /dev/null and b/Library/Artifacts/7a/7a1ddd4bb62494c94d9a519402133b72 differ diff --git a/Library/Artifacts/7a/7a2d6f27b2ce33bc3140342adb534ce4 b/Library/Artifacts/7a/7a2d6f27b2ce33bc3140342adb534ce4 new file mode 100644 index 0000000..d0e0304 Binary files /dev/null and b/Library/Artifacts/7a/7a2d6f27b2ce33bc3140342adb534ce4 differ diff --git a/Library/Artifacts/7a/7a4e4d03f431fb8038fb13a67b3771d7 b/Library/Artifacts/7a/7a4e4d03f431fb8038fb13a67b3771d7 new file mode 100644 index 0000000..4689a8e Binary files /dev/null and b/Library/Artifacts/7a/7a4e4d03f431fb8038fb13a67b3771d7 differ diff --git a/Library/Artifacts/7a/7a83fec8f0dbbfd9354a575289388862 b/Library/Artifacts/7a/7a83fec8f0dbbfd9354a575289388862 new file mode 100644 index 0000000..4cfc848 Binary files /dev/null and b/Library/Artifacts/7a/7a83fec8f0dbbfd9354a575289388862 differ diff --git a/Library/Artifacts/7a/7ab22fa1283bff372bf0d77dad236ed0 b/Library/Artifacts/7a/7ab22fa1283bff372bf0d77dad236ed0 new file mode 100644 index 0000000..394d5f3 Binary files /dev/null and b/Library/Artifacts/7a/7ab22fa1283bff372bf0d77dad236ed0 differ diff --git a/Library/Artifacts/7a/7ac7b26e5ce41ec6378146f153369b76 b/Library/Artifacts/7a/7ac7b26e5ce41ec6378146f153369b76 new file mode 100644 index 0000000..4ff2b31 Binary files /dev/null and b/Library/Artifacts/7a/7ac7b26e5ce41ec6378146f153369b76 differ diff --git a/Library/Artifacts/7a/7ad23af1ee16ecb4557d13d411c8966e b/Library/Artifacts/7a/7ad23af1ee16ecb4557d13d411c8966e new file mode 100644 index 0000000..d70e747 Binary files /dev/null and b/Library/Artifacts/7a/7ad23af1ee16ecb4557d13d411c8966e differ diff --git a/Library/Artifacts/7b/7b0e40ec422be2d45e18dbfb1daf28a6 b/Library/Artifacts/7b/7b0e40ec422be2d45e18dbfb1daf28a6 new file mode 100644 index 0000000..8989014 Binary files /dev/null and b/Library/Artifacts/7b/7b0e40ec422be2d45e18dbfb1daf28a6 differ diff --git a/Library/Artifacts/7b/7b0f799d0b9e434fded45c2e096cba1a b/Library/Artifacts/7b/7b0f799d0b9e434fded45c2e096cba1a new file mode 100644 index 0000000..97ed355 Binary files /dev/null and b/Library/Artifacts/7b/7b0f799d0b9e434fded45c2e096cba1a differ diff --git a/Library/Artifacts/7b/7b2cfbee09b97eee464b0b2187f247c9 b/Library/Artifacts/7b/7b2cfbee09b97eee464b0b2187f247c9 new file mode 100644 index 0000000..8e9d4c5 Binary files /dev/null and b/Library/Artifacts/7b/7b2cfbee09b97eee464b0b2187f247c9 differ diff --git a/Library/Artifacts/7b/7b50a0f3f3a3fc828ea3f567cfaff46b b/Library/Artifacts/7b/7b50a0f3f3a3fc828ea3f567cfaff46b new file mode 100644 index 0000000..e540f2e Binary files /dev/null and b/Library/Artifacts/7b/7b50a0f3f3a3fc828ea3f567cfaff46b differ diff --git a/Library/Artifacts/7b/7b535ecad5e31f238961814dbd4e51e0 b/Library/Artifacts/7b/7b535ecad5e31f238961814dbd4e51e0 new file mode 100644 index 0000000..03c5f8f Binary files /dev/null and b/Library/Artifacts/7b/7b535ecad5e31f238961814dbd4e51e0 differ diff --git a/Library/Artifacts/7b/7b798a06b7b31f68ae8c9fa62bdaa34a b/Library/Artifacts/7b/7b798a06b7b31f68ae8c9fa62bdaa34a new file mode 100644 index 0000000..a0b3326 Binary files /dev/null and b/Library/Artifacts/7b/7b798a06b7b31f68ae8c9fa62bdaa34a differ diff --git a/Library/Artifacts/7b/7b945a526001ffce3b305894001ab356 b/Library/Artifacts/7b/7b945a526001ffce3b305894001ab356 new file mode 100644 index 0000000..fced6ce Binary files /dev/null and b/Library/Artifacts/7b/7b945a526001ffce3b305894001ab356 differ diff --git a/Library/Artifacts/7b/7bcf1c1dac433557299f90223a6b1796 b/Library/Artifacts/7b/7bcf1c1dac433557299f90223a6b1796 new file mode 100644 index 0000000..7ba63e2 Binary files /dev/null and b/Library/Artifacts/7b/7bcf1c1dac433557299f90223a6b1796 differ diff --git a/Library/Artifacts/7b/7bf757026c89a2a14c573912c03d0836 b/Library/Artifacts/7b/7bf757026c89a2a14c573912c03d0836 new file mode 100644 index 0000000..b00a302 Binary files /dev/null and b/Library/Artifacts/7b/7bf757026c89a2a14c573912c03d0836 differ diff --git a/Library/Artifacts/7c/7c314956cc036e18f80487bee2c71e74 b/Library/Artifacts/7c/7c314956cc036e18f80487bee2c71e74 new file mode 100644 index 0000000..7193dd0 Binary files /dev/null and b/Library/Artifacts/7c/7c314956cc036e18f80487bee2c71e74 differ diff --git a/Library/Artifacts/7c/7c62308c8e21fa3a4ab0b6fa592f4ac1 b/Library/Artifacts/7c/7c62308c8e21fa3a4ab0b6fa592f4ac1 new file mode 100644 index 0000000..f25e312 Binary files /dev/null and b/Library/Artifacts/7c/7c62308c8e21fa3a4ab0b6fa592f4ac1 differ diff --git a/Library/Artifacts/7c/7c73ddc34049c3d4e7838e21d9596ef8 b/Library/Artifacts/7c/7c73ddc34049c3d4e7838e21d9596ef8 new file mode 100644 index 0000000..8c21619 Binary files /dev/null and b/Library/Artifacts/7c/7c73ddc34049c3d4e7838e21d9596ef8 differ diff --git a/Library/Artifacts/7c/7c97c493dafce68bb2b711f1e7c82cc6 b/Library/Artifacts/7c/7c97c493dafce68bb2b711f1e7c82cc6 new file mode 100644 index 0000000..bf7b746 Binary files /dev/null and b/Library/Artifacts/7c/7c97c493dafce68bb2b711f1e7c82cc6 differ diff --git a/Library/Artifacts/7c/7ca3e1c7dce73e2fb58383d8c3dc1729 b/Library/Artifacts/7c/7ca3e1c7dce73e2fb58383d8c3dc1729 new file mode 100644 index 0000000..37038dc Binary files /dev/null and b/Library/Artifacts/7c/7ca3e1c7dce73e2fb58383d8c3dc1729 differ diff --git a/Library/Artifacts/7c/7cb77c725c31b11d780053b656af7a36 b/Library/Artifacts/7c/7cb77c725c31b11d780053b656af7a36 new file mode 100644 index 0000000..ef9ecc8 Binary files /dev/null and b/Library/Artifacts/7c/7cb77c725c31b11d780053b656af7a36 differ diff --git a/Library/Artifacts/7c/7ce688b67382b8836da285d331344520 b/Library/Artifacts/7c/7ce688b67382b8836da285d331344520 new file mode 100644 index 0000000..c9edbde Binary files /dev/null and b/Library/Artifacts/7c/7ce688b67382b8836da285d331344520 differ diff --git a/Library/Artifacts/7d/7d10673c2f45d203ee3dd605c16b1c13 b/Library/Artifacts/7d/7d10673c2f45d203ee3dd605c16b1c13 new file mode 100644 index 0000000..bd0d5ab Binary files /dev/null and b/Library/Artifacts/7d/7d10673c2f45d203ee3dd605c16b1c13 differ diff --git a/Library/Artifacts/7d/7d2b1b311591fc74b13b637f7eb260d9 b/Library/Artifacts/7d/7d2b1b311591fc74b13b637f7eb260d9 new file mode 100644 index 0000000..e7ed25e Binary files /dev/null and b/Library/Artifacts/7d/7d2b1b311591fc74b13b637f7eb260d9 differ diff --git a/Library/Artifacts/7d/7d368b2e0285d88e485733d119406519 b/Library/Artifacts/7d/7d368b2e0285d88e485733d119406519 new file mode 100644 index 0000000..9025fa5 Binary files /dev/null and b/Library/Artifacts/7d/7d368b2e0285d88e485733d119406519 differ diff --git a/Library/Artifacts/7d/7d6b4056a25c1efe91bc3b7f5b4e48fd b/Library/Artifacts/7d/7d6b4056a25c1efe91bc3b7f5b4e48fd new file mode 100644 index 0000000..578fd57 Binary files /dev/null and b/Library/Artifacts/7d/7d6b4056a25c1efe91bc3b7f5b4e48fd differ diff --git a/Library/Artifacts/7d/7d80e039324bbf779c66e72f1a1ea19b b/Library/Artifacts/7d/7d80e039324bbf779c66e72f1a1ea19b new file mode 100644 index 0000000..b38bdc7 Binary files /dev/null and b/Library/Artifacts/7d/7d80e039324bbf779c66e72f1a1ea19b differ diff --git a/Library/Artifacts/7d/7d8ad4382b54d346303ee63a4790dd06 b/Library/Artifacts/7d/7d8ad4382b54d346303ee63a4790dd06 new file mode 100644 index 0000000..e1530dd Binary files /dev/null and b/Library/Artifacts/7d/7d8ad4382b54d346303ee63a4790dd06 differ diff --git a/Library/Artifacts/7e/7e01561233644e028ea51dfa90cdfa74 b/Library/Artifacts/7e/7e01561233644e028ea51dfa90cdfa74 new file mode 100644 index 0000000..7b06c5d Binary files /dev/null and b/Library/Artifacts/7e/7e01561233644e028ea51dfa90cdfa74 differ diff --git a/Library/Artifacts/7e/7e01deeb2e0a7c62561b23668a206312 b/Library/Artifacts/7e/7e01deeb2e0a7c62561b23668a206312 new file mode 100644 index 0000000..6d05d62 Binary files /dev/null and b/Library/Artifacts/7e/7e01deeb2e0a7c62561b23668a206312 differ diff --git a/Library/Artifacts/7e/7e0366eb919c28cf375ff7c52c09f5ba b/Library/Artifacts/7e/7e0366eb919c28cf375ff7c52c09f5ba new file mode 100644 index 0000000..6f15d83 Binary files /dev/null and b/Library/Artifacts/7e/7e0366eb919c28cf375ff7c52c09f5ba differ diff --git a/Library/Artifacts/7e/7e08baef7fa56d35540dd3471d88fadf b/Library/Artifacts/7e/7e08baef7fa56d35540dd3471d88fadf new file mode 100644 index 0000000..821821c Binary files /dev/null and b/Library/Artifacts/7e/7e08baef7fa56d35540dd3471d88fadf differ diff --git a/Library/Artifacts/7e/7e1eaf16418885dca7da5f74362af89d b/Library/Artifacts/7e/7e1eaf16418885dca7da5f74362af89d new file mode 100644 index 0000000..ec22b9e Binary files /dev/null and b/Library/Artifacts/7e/7e1eaf16418885dca7da5f74362af89d differ diff --git a/Library/Artifacts/7e/7e35f9a26c910567c95d42718876c445 b/Library/Artifacts/7e/7e35f9a26c910567c95d42718876c445 new file mode 100644 index 0000000..5766c41 Binary files /dev/null and b/Library/Artifacts/7e/7e35f9a26c910567c95d42718876c445 differ diff --git a/Library/Artifacts/7e/7e4e0e6b040f6b87105a941d88d50bc9 b/Library/Artifacts/7e/7e4e0e6b040f6b87105a941d88d50bc9 new file mode 100644 index 0000000..f7e1c56 Binary files /dev/null and b/Library/Artifacts/7e/7e4e0e6b040f6b87105a941d88d50bc9 differ diff --git a/Library/Artifacts/7e/7e53ab3b37b7781420ab227455dace35 b/Library/Artifacts/7e/7e53ab3b37b7781420ab227455dace35 new file mode 100644 index 0000000..cdc61cd Binary files /dev/null and b/Library/Artifacts/7e/7e53ab3b37b7781420ab227455dace35 differ diff --git a/Library/Artifacts/7e/7e69ba6e0d1f0ed8e1f15edf32ceddc3 b/Library/Artifacts/7e/7e69ba6e0d1f0ed8e1f15edf32ceddc3 new file mode 100644 index 0000000..6e48eb3 Binary files /dev/null and b/Library/Artifacts/7e/7e69ba6e0d1f0ed8e1f15edf32ceddc3 differ diff --git a/Library/Artifacts/7e/7e6ad6f5f0496e6149210ff6bb71173a b/Library/Artifacts/7e/7e6ad6f5f0496e6149210ff6bb71173a new file mode 100644 index 0000000..6f77f8e Binary files /dev/null and b/Library/Artifacts/7e/7e6ad6f5f0496e6149210ff6bb71173a differ diff --git a/Library/Artifacts/7e/7eb5baa847139aa38a31fdac563bb617 b/Library/Artifacts/7e/7eb5baa847139aa38a31fdac563bb617 new file mode 100644 index 0000000..ed0cf9d Binary files /dev/null and b/Library/Artifacts/7e/7eb5baa847139aa38a31fdac563bb617 differ diff --git a/Library/Artifacts/7e/7ebc2b3f2809b6b72de2005d4e447f68 b/Library/Artifacts/7e/7ebc2b3f2809b6b72de2005d4e447f68 new file mode 100644 index 0000000..388f386 Binary files /dev/null and b/Library/Artifacts/7e/7ebc2b3f2809b6b72de2005d4e447f68 differ diff --git a/Library/Artifacts/7e/7ec3e85e9e747c61bc4b61a587041672 b/Library/Artifacts/7e/7ec3e85e9e747c61bc4b61a587041672 new file mode 100644 index 0000000..5a6a270 Binary files /dev/null and b/Library/Artifacts/7e/7ec3e85e9e747c61bc4b61a587041672 differ diff --git a/Library/Artifacts/7e/7ecbb035577968f92c3725e79099aa43 b/Library/Artifacts/7e/7ecbb035577968f92c3725e79099aa43 new file mode 100644 index 0000000..8256897 Binary files /dev/null and b/Library/Artifacts/7e/7ecbb035577968f92c3725e79099aa43 differ diff --git a/Library/Artifacts/7f/7f1243e8960b274a8273e3c7a3f4e209 b/Library/Artifacts/7f/7f1243e8960b274a8273e3c7a3f4e209 new file mode 100644 index 0000000..eb82eb0 Binary files /dev/null and b/Library/Artifacts/7f/7f1243e8960b274a8273e3c7a3f4e209 differ diff --git a/Library/Artifacts/7f/7f26aa7fe95961a53ba4b8938c7e85ca b/Library/Artifacts/7f/7f26aa7fe95961a53ba4b8938c7e85ca new file mode 100644 index 0000000..a8ed184 Binary files /dev/null and b/Library/Artifacts/7f/7f26aa7fe95961a53ba4b8938c7e85ca differ diff --git a/Library/Artifacts/7f/7f3a7285a24193be184e22b45b13ec92 b/Library/Artifacts/7f/7f3a7285a24193be184e22b45b13ec92 new file mode 100644 index 0000000..21a72c6 Binary files /dev/null and b/Library/Artifacts/7f/7f3a7285a24193be184e22b45b13ec92 differ diff --git a/Library/Artifacts/7f/7f3f8a6e2b2e77dbe047cb7e76db4257 b/Library/Artifacts/7f/7f3f8a6e2b2e77dbe047cb7e76db4257 new file mode 100644 index 0000000..489721f Binary files /dev/null and b/Library/Artifacts/7f/7f3f8a6e2b2e77dbe047cb7e76db4257 differ diff --git a/Library/Artifacts/7f/7f4271115a3385a2f19caf291dd39f3e b/Library/Artifacts/7f/7f4271115a3385a2f19caf291dd39f3e new file mode 100644 index 0000000..d06cadf Binary files /dev/null and b/Library/Artifacts/7f/7f4271115a3385a2f19caf291dd39f3e differ diff --git a/Library/Artifacts/7f/7f5f44c48c2c3dd9244cff611d81cfdb b/Library/Artifacts/7f/7f5f44c48c2c3dd9244cff611d81cfdb new file mode 100644 index 0000000..52c655c Binary files /dev/null and b/Library/Artifacts/7f/7f5f44c48c2c3dd9244cff611d81cfdb differ diff --git a/Library/Artifacts/7f/7f68a4b744ef711f4b21f1ab0e6e88c1 b/Library/Artifacts/7f/7f68a4b744ef711f4b21f1ab0e6e88c1 new file mode 100644 index 0000000..d489819 Binary files /dev/null and b/Library/Artifacts/7f/7f68a4b744ef711f4b21f1ab0e6e88c1 differ diff --git a/Library/Artifacts/7f/7f72e105ff3184082fe35960c7cfad32 b/Library/Artifacts/7f/7f72e105ff3184082fe35960c7cfad32 new file mode 100644 index 0000000..7c53e8f Binary files /dev/null and b/Library/Artifacts/7f/7f72e105ff3184082fe35960c7cfad32 differ diff --git a/Library/Artifacts/7f/7f91a99f39e3efd1a926ae7244ceef43 b/Library/Artifacts/7f/7f91a99f39e3efd1a926ae7244ceef43 new file mode 100644 index 0000000..bd28c43 Binary files /dev/null and b/Library/Artifacts/7f/7f91a99f39e3efd1a926ae7244ceef43 differ diff --git a/Library/Artifacts/7f/7fcb5074a2a4433c67b2a8f4a12faf9a b/Library/Artifacts/7f/7fcb5074a2a4433c67b2a8f4a12faf9a new file mode 100644 index 0000000..0399b29 Binary files /dev/null and b/Library/Artifacts/7f/7fcb5074a2a4433c67b2a8f4a12faf9a differ diff --git a/Library/Artifacts/7f/7fd02bba33e1cece3f99366619666951 b/Library/Artifacts/7f/7fd02bba33e1cece3f99366619666951 new file mode 100644 index 0000000..909a44d Binary files /dev/null and b/Library/Artifacts/7f/7fd02bba33e1cece3f99366619666951 differ diff --git a/Library/Artifacts/7f/7fe361a39eae397c9ed4d377b0356f2f b/Library/Artifacts/7f/7fe361a39eae397c9ed4d377b0356f2f new file mode 100644 index 0000000..ba8ef46 Binary files /dev/null and b/Library/Artifacts/7f/7fe361a39eae397c9ed4d377b0356f2f differ diff --git a/Library/Artifacts/7f/7fe622fc307f0b3e99f0464e4190a2f7 b/Library/Artifacts/7f/7fe622fc307f0b3e99f0464e4190a2f7 new file mode 100644 index 0000000..d51d8f9 Binary files /dev/null and b/Library/Artifacts/7f/7fe622fc307f0b3e99f0464e4190a2f7 differ diff --git a/Library/Artifacts/80/800e5ea023366b727ecedc7e5717bd94 b/Library/Artifacts/80/800e5ea023366b727ecedc7e5717bd94 new file mode 100644 index 0000000..aa3db17 Binary files /dev/null and b/Library/Artifacts/80/800e5ea023366b727ecedc7e5717bd94 differ diff --git a/Library/Artifacts/80/8018133c4adcd2216ab23ca7720f3b74 b/Library/Artifacts/80/8018133c4adcd2216ab23ca7720f3b74 new file mode 100644 index 0000000..47797df Binary files /dev/null and b/Library/Artifacts/80/8018133c4adcd2216ab23ca7720f3b74 differ diff --git a/Library/Artifacts/80/801aaaeca9edd895b53cb5c4115a0713 b/Library/Artifacts/80/801aaaeca9edd895b53cb5c4115a0713 new file mode 100644 index 0000000..6c20b5d Binary files /dev/null and b/Library/Artifacts/80/801aaaeca9edd895b53cb5c4115a0713 differ diff --git a/Library/Artifacts/80/801c086908e531785beaeeeff677d73c b/Library/Artifacts/80/801c086908e531785beaeeeff677d73c new file mode 100644 index 0000000..4d4726c Binary files /dev/null and b/Library/Artifacts/80/801c086908e531785beaeeeff677d73c differ diff --git a/Library/Artifacts/80/804e63212b2494e4835c0c7657662a47 b/Library/Artifacts/80/804e63212b2494e4835c0c7657662a47 new file mode 100644 index 0000000..ec085d3 Binary files /dev/null and b/Library/Artifacts/80/804e63212b2494e4835c0c7657662a47 differ diff --git a/Library/Artifacts/80/805d5f32bbd379c7efe3ba9b63198818 b/Library/Artifacts/80/805d5f32bbd379c7efe3ba9b63198818 new file mode 100644 index 0000000..114247a Binary files /dev/null and b/Library/Artifacts/80/805d5f32bbd379c7efe3ba9b63198818 differ diff --git a/Library/Artifacts/80/807b44a5e0607aeea2edc614a6e8e160 b/Library/Artifacts/80/807b44a5e0607aeea2edc614a6e8e160 new file mode 100644 index 0000000..c7cbdeb Binary files /dev/null and b/Library/Artifacts/80/807b44a5e0607aeea2edc614a6e8e160 differ diff --git a/Library/Artifacts/80/80842fef0f8147af8c3f6014639f3e18 b/Library/Artifacts/80/80842fef0f8147af8c3f6014639f3e18 new file mode 100644 index 0000000..21acfbe Binary files /dev/null and b/Library/Artifacts/80/80842fef0f8147af8c3f6014639f3e18 differ diff --git a/Library/Artifacts/80/80974a9e2544b4b2a4d6dc28744aa284 b/Library/Artifacts/80/80974a9e2544b4b2a4d6dc28744aa284 new file mode 100644 index 0000000..20280e2 Binary files /dev/null and b/Library/Artifacts/80/80974a9e2544b4b2a4d6dc28744aa284 differ diff --git a/Library/Artifacts/80/80a39c29d649b673b45c23238e7c269f b/Library/Artifacts/80/80a39c29d649b673b45c23238e7c269f new file mode 100644 index 0000000..0facfa6 Binary files /dev/null and b/Library/Artifacts/80/80a39c29d649b673b45c23238e7c269f differ diff --git a/Library/Artifacts/80/80e2f6a2879e1dd13576477729b4c77e b/Library/Artifacts/80/80e2f6a2879e1dd13576477729b4c77e new file mode 100644 index 0000000..60585ba Binary files /dev/null and b/Library/Artifacts/80/80e2f6a2879e1dd13576477729b4c77e differ diff --git a/Library/Artifacts/80/80fc02360272e46ba5db91214d765bbe b/Library/Artifacts/80/80fc02360272e46ba5db91214d765bbe new file mode 100644 index 0000000..f4cc508 Binary files /dev/null and b/Library/Artifacts/80/80fc02360272e46ba5db91214d765bbe differ diff --git a/Library/Artifacts/81/8158ecbece931511117b1369776fe63d b/Library/Artifacts/81/8158ecbece931511117b1369776fe63d new file mode 100644 index 0000000..78bae93 Binary files /dev/null and b/Library/Artifacts/81/8158ecbece931511117b1369776fe63d differ diff --git a/Library/Artifacts/81/815ec5a4c37eba22c922315d450cf0c2 b/Library/Artifacts/81/815ec5a4c37eba22c922315d450cf0c2 new file mode 100644 index 0000000..3660e40 Binary files /dev/null and b/Library/Artifacts/81/815ec5a4c37eba22c922315d450cf0c2 differ diff --git a/Library/Artifacts/81/819c65759dab8c8c4f996d13f71b4c8e b/Library/Artifacts/81/819c65759dab8c8c4f996d13f71b4c8e new file mode 100644 index 0000000..69ff744 Binary files /dev/null and b/Library/Artifacts/81/819c65759dab8c8c4f996d13f71b4c8e differ diff --git a/Library/Artifacts/81/81bcce20b5ebcaf6e00b73797e24c376 b/Library/Artifacts/81/81bcce20b5ebcaf6e00b73797e24c376 new file mode 100644 index 0000000..1c8e9b5 Binary files /dev/null and b/Library/Artifacts/81/81bcce20b5ebcaf6e00b73797e24c376 differ diff --git a/Library/Artifacts/81/81e451648e874e3cd12e648ec451f6c7 b/Library/Artifacts/81/81e451648e874e3cd12e648ec451f6c7 new file mode 100644 index 0000000..04b8082 Binary files /dev/null and b/Library/Artifacts/81/81e451648e874e3cd12e648ec451f6c7 differ diff --git a/Library/Artifacts/81/81fee0b64227971861641c0e5fae57ba b/Library/Artifacts/81/81fee0b64227971861641c0e5fae57ba new file mode 100644 index 0000000..7e0936a Binary files /dev/null and b/Library/Artifacts/81/81fee0b64227971861641c0e5fae57ba differ diff --git a/Library/Artifacts/82/821cf1ea5a1ce0bf4570ae45380a6bd4 b/Library/Artifacts/82/821cf1ea5a1ce0bf4570ae45380a6bd4 new file mode 100644 index 0000000..5f9ba5e Binary files /dev/null and b/Library/Artifacts/82/821cf1ea5a1ce0bf4570ae45380a6bd4 differ diff --git a/Library/Artifacts/82/822cbc17a2e99be537efb702ca267280 b/Library/Artifacts/82/822cbc17a2e99be537efb702ca267280 new file mode 100644 index 0000000..d06e973 Binary files /dev/null and b/Library/Artifacts/82/822cbc17a2e99be537efb702ca267280 differ diff --git a/Library/Artifacts/82/822d489029122ac3ce5f578be2251d08 b/Library/Artifacts/82/822d489029122ac3ce5f578be2251d08 new file mode 100644 index 0000000..83336a4 Binary files /dev/null and b/Library/Artifacts/82/822d489029122ac3ce5f578be2251d08 differ diff --git a/Library/Artifacts/82/823643b5e9662ee8db52e25d3b4a7ec5 b/Library/Artifacts/82/823643b5e9662ee8db52e25d3b4a7ec5 new file mode 100644 index 0000000..1151a85 Binary files /dev/null and b/Library/Artifacts/82/823643b5e9662ee8db52e25d3b4a7ec5 differ diff --git a/Library/Artifacts/82/82380e54e100ba89bc90ae60fd5a99ab b/Library/Artifacts/82/82380e54e100ba89bc90ae60fd5a99ab new file mode 100644 index 0000000..4c22041 Binary files /dev/null and b/Library/Artifacts/82/82380e54e100ba89bc90ae60fd5a99ab differ diff --git a/Library/Artifacts/82/825e12abb8a27440e20e9ca28c4f5bb7 b/Library/Artifacts/82/825e12abb8a27440e20e9ca28c4f5bb7 new file mode 100644 index 0000000..83fe1ad Binary files /dev/null and b/Library/Artifacts/82/825e12abb8a27440e20e9ca28c4f5bb7 differ diff --git a/Library/Artifacts/82/826f933060fc58333bd19621634d9298 b/Library/Artifacts/82/826f933060fc58333bd19621634d9298 new file mode 100644 index 0000000..ce07ef9 Binary files /dev/null and b/Library/Artifacts/82/826f933060fc58333bd19621634d9298 differ diff --git a/Library/Artifacts/82/8294f3ecb52b68004b3c049b56ca7a07 b/Library/Artifacts/82/8294f3ecb52b68004b3c049b56ca7a07 new file mode 100644 index 0000000..7abc1d6 Binary files /dev/null and b/Library/Artifacts/82/8294f3ecb52b68004b3c049b56ca7a07 differ diff --git a/Library/Artifacts/82/8296a45f0adc22c4e422a6c3e4f16a3f b/Library/Artifacts/82/8296a45f0adc22c4e422a6c3e4f16a3f new file mode 100644 index 0000000..07150b9 Binary files /dev/null and b/Library/Artifacts/82/8296a45f0adc22c4e422a6c3e4f16a3f differ diff --git a/Library/Artifacts/82/829873728555d37645844bc852ae4ed0 b/Library/Artifacts/82/829873728555d37645844bc852ae4ed0 new file mode 100644 index 0000000..a319cbf Binary files /dev/null and b/Library/Artifacts/82/829873728555d37645844bc852ae4ed0 differ diff --git a/Library/Artifacts/82/82db1cd462b4284fdb864d0b9145df2b b/Library/Artifacts/82/82db1cd462b4284fdb864d0b9145df2b new file mode 100644 index 0000000..1fa0698 Binary files /dev/null and b/Library/Artifacts/82/82db1cd462b4284fdb864d0b9145df2b differ diff --git a/Library/Artifacts/83/8301e446dc238e6da5348f69934d8152 b/Library/Artifacts/83/8301e446dc238e6da5348f69934d8152 new file mode 100644 index 0000000..ce10f7b Binary files /dev/null and b/Library/Artifacts/83/8301e446dc238e6da5348f69934d8152 differ diff --git a/Library/Artifacts/83/831f4c8b5673060c039c41fd90181e0b b/Library/Artifacts/83/831f4c8b5673060c039c41fd90181e0b new file mode 100644 index 0000000..ea4c2f3 Binary files /dev/null and b/Library/Artifacts/83/831f4c8b5673060c039c41fd90181e0b differ diff --git a/Library/Artifacts/83/833e1f8dcc5c633fd2c5d762d809b5f9 b/Library/Artifacts/83/833e1f8dcc5c633fd2c5d762d809b5f9 new file mode 100644 index 0000000..f554ecd Binary files /dev/null and b/Library/Artifacts/83/833e1f8dcc5c633fd2c5d762d809b5f9 differ diff --git a/Library/Artifacts/83/8381ce151fb5e60e29a28566792581d9 b/Library/Artifacts/83/8381ce151fb5e60e29a28566792581d9 new file mode 100644 index 0000000..f9933da Binary files /dev/null and b/Library/Artifacts/83/8381ce151fb5e60e29a28566792581d9 differ diff --git a/Library/Artifacts/83/8386112659ca643fc64a556447baca0b b/Library/Artifacts/83/8386112659ca643fc64a556447baca0b new file mode 100644 index 0000000..8436489 Binary files /dev/null and b/Library/Artifacts/83/8386112659ca643fc64a556447baca0b differ diff --git a/Library/Artifacts/83/83a43593ec482460c58dc2754ac908aa b/Library/Artifacts/83/83a43593ec482460c58dc2754ac908aa new file mode 100644 index 0000000..6c7e4f9 Binary files /dev/null and b/Library/Artifacts/83/83a43593ec482460c58dc2754ac908aa differ diff --git a/Library/Artifacts/83/83a898a09474d7cfe174d0ee341ee266 b/Library/Artifacts/83/83a898a09474d7cfe174d0ee341ee266 new file mode 100644 index 0000000..06bd8cb Binary files /dev/null and b/Library/Artifacts/83/83a898a09474d7cfe174d0ee341ee266 differ diff --git a/Library/Artifacts/83/83ae17d87a03558df08fb3453a6efc04 b/Library/Artifacts/83/83ae17d87a03558df08fb3453a6efc04 new file mode 100644 index 0000000..12f8ce3 Binary files /dev/null and b/Library/Artifacts/83/83ae17d87a03558df08fb3453a6efc04 differ diff --git a/Library/Artifacts/83/83b2c1e80a88b855937156ffcec034d8 b/Library/Artifacts/83/83b2c1e80a88b855937156ffcec034d8 new file mode 100644 index 0000000..5eb85b4 Binary files /dev/null and b/Library/Artifacts/83/83b2c1e80a88b855937156ffcec034d8 differ diff --git a/Library/Artifacts/83/83e92decfc0b153e1ddd6eec3f5f04a9 b/Library/Artifacts/83/83e92decfc0b153e1ddd6eec3f5f04a9 new file mode 100644 index 0000000..6585b75 Binary files /dev/null and b/Library/Artifacts/83/83e92decfc0b153e1ddd6eec3f5f04a9 differ diff --git a/Library/Artifacts/83/83e98391c0e54908d5806f206638d104 b/Library/Artifacts/83/83e98391c0e54908d5806f206638d104 new file mode 100644 index 0000000..3075f92 Binary files /dev/null and b/Library/Artifacts/83/83e98391c0e54908d5806f206638d104 differ diff --git a/Library/Artifacts/84/842dcd8780777414c24edcde9877dfe4 b/Library/Artifacts/84/842dcd8780777414c24edcde9877dfe4 new file mode 100644 index 0000000..47d4a3b Binary files /dev/null and b/Library/Artifacts/84/842dcd8780777414c24edcde9877dfe4 differ diff --git a/Library/Artifacts/84/8466a227a8550af96c577aa1b1c33a74 b/Library/Artifacts/84/8466a227a8550af96c577aa1b1c33a74 new file mode 100644 index 0000000..182235c Binary files /dev/null and b/Library/Artifacts/84/8466a227a8550af96c577aa1b1c33a74 differ diff --git a/Library/Artifacts/85/8553cb851a261b4209ab538507b7e87d b/Library/Artifacts/85/8553cb851a261b4209ab538507b7e87d new file mode 100644 index 0000000..376b760 Binary files /dev/null and b/Library/Artifacts/85/8553cb851a261b4209ab538507b7e87d differ diff --git a/Library/Artifacts/85/855ffa1ebba270960ca69289a054471c b/Library/Artifacts/85/855ffa1ebba270960ca69289a054471c new file mode 100644 index 0000000..8be5714 Binary files /dev/null and b/Library/Artifacts/85/855ffa1ebba270960ca69289a054471c differ diff --git a/Library/Artifacts/85/857359c0125ce2abf8d91b73653410c5 b/Library/Artifacts/85/857359c0125ce2abf8d91b73653410c5 new file mode 100644 index 0000000..52d4f88 Binary files /dev/null and b/Library/Artifacts/85/857359c0125ce2abf8d91b73653410c5 differ diff --git a/Library/Artifacts/85/8574afcdf5d64ee8cd2cb2c2e2e3a2be b/Library/Artifacts/85/8574afcdf5d64ee8cd2cb2c2e2e3a2be new file mode 100644 index 0000000..d657167 Binary files /dev/null and b/Library/Artifacts/85/8574afcdf5d64ee8cd2cb2c2e2e3a2be differ diff --git a/Library/Artifacts/85/85b588c67031442d5048a46a9d925401 b/Library/Artifacts/85/85b588c67031442d5048a46a9d925401 new file mode 100644 index 0000000..6921939 Binary files /dev/null and b/Library/Artifacts/85/85b588c67031442d5048a46a9d925401 differ diff --git a/Library/Artifacts/85/85c2f103649845f9a209b572747a29fe b/Library/Artifacts/85/85c2f103649845f9a209b572747a29fe new file mode 100644 index 0000000..9eb45b9 Binary files /dev/null and b/Library/Artifacts/85/85c2f103649845f9a209b572747a29fe differ diff --git a/Library/Artifacts/85/85c9b223384f2d321bad364b289bee33 b/Library/Artifacts/85/85c9b223384f2d321bad364b289bee33 new file mode 100644 index 0000000..2b6b177 Binary files /dev/null and b/Library/Artifacts/85/85c9b223384f2d321bad364b289bee33 differ diff --git a/Library/Artifacts/85/85dfa432d99089e3d99a6f6574685ba0 b/Library/Artifacts/85/85dfa432d99089e3d99a6f6574685ba0 new file mode 100644 index 0000000..58c3ff0 Binary files /dev/null and b/Library/Artifacts/85/85dfa432d99089e3d99a6f6574685ba0 differ diff --git a/Library/Artifacts/86/860ca18af13f7972ab02d4bdc207688a b/Library/Artifacts/86/860ca18af13f7972ab02d4bdc207688a new file mode 100644 index 0000000..5d466ca Binary files /dev/null and b/Library/Artifacts/86/860ca18af13f7972ab02d4bdc207688a differ diff --git a/Library/Artifacts/86/862618457cca4ac99478296bc70034b0 b/Library/Artifacts/86/862618457cca4ac99478296bc70034b0 new file mode 100644 index 0000000..072cdb8 Binary files /dev/null and b/Library/Artifacts/86/862618457cca4ac99478296bc70034b0 differ diff --git a/Library/Artifacts/86/863aaf0bdfea02d02e34851e9fcde990 b/Library/Artifacts/86/863aaf0bdfea02d02e34851e9fcde990 new file mode 100644 index 0000000..661cce0 Binary files /dev/null and b/Library/Artifacts/86/863aaf0bdfea02d02e34851e9fcde990 differ diff --git a/Library/Artifacts/86/864d60abf180fac0105c088358f53348 b/Library/Artifacts/86/864d60abf180fac0105c088358f53348 new file mode 100644 index 0000000..9c3f66b Binary files /dev/null and b/Library/Artifacts/86/864d60abf180fac0105c088358f53348 differ diff --git a/Library/Artifacts/86/86705b9a38dc696c7d602383a81dc5f5 b/Library/Artifacts/86/86705b9a38dc696c7d602383a81dc5f5 new file mode 100644 index 0000000..02c10c8 Binary files /dev/null and b/Library/Artifacts/86/86705b9a38dc696c7d602383a81dc5f5 differ diff --git a/Library/Artifacts/86/868a737b747d5d0ef81a9a1dcd2c5b05 b/Library/Artifacts/86/868a737b747d5d0ef81a9a1dcd2c5b05 new file mode 100644 index 0000000..07d7fc7 Binary files /dev/null and b/Library/Artifacts/86/868a737b747d5d0ef81a9a1dcd2c5b05 differ diff --git a/Library/Artifacts/86/86e8c92654ecf840b474508889c6354b b/Library/Artifacts/86/86e8c92654ecf840b474508889c6354b new file mode 100644 index 0000000..5573176 Binary files /dev/null and b/Library/Artifacts/86/86e8c92654ecf840b474508889c6354b differ diff --git a/Library/Artifacts/87/87198f8ee21461caf2ff9df0408ead27 b/Library/Artifacts/87/87198f8ee21461caf2ff9df0408ead27 new file mode 100644 index 0000000..bb2a1ba Binary files /dev/null and b/Library/Artifacts/87/87198f8ee21461caf2ff9df0408ead27 differ diff --git a/Library/Artifacts/87/871e024e6cfddeaa6138afb7e534dff6 b/Library/Artifacts/87/871e024e6cfddeaa6138afb7e534dff6 new file mode 100644 index 0000000..7b10d22 Binary files /dev/null and b/Library/Artifacts/87/871e024e6cfddeaa6138afb7e534dff6 differ diff --git a/Library/Artifacts/87/8732cd2146471f2ea0f51bf796660de1 b/Library/Artifacts/87/8732cd2146471f2ea0f51bf796660de1 new file mode 100644 index 0000000..76be313 Binary files /dev/null and b/Library/Artifacts/87/8732cd2146471f2ea0f51bf796660de1 differ diff --git a/Library/Artifacts/87/874b60bf27ddb82d1f7c5a3df2a4d436 b/Library/Artifacts/87/874b60bf27ddb82d1f7c5a3df2a4d436 new file mode 100644 index 0000000..99fb4d8 Binary files /dev/null and b/Library/Artifacts/87/874b60bf27ddb82d1f7c5a3df2a4d436 differ diff --git a/Library/Artifacts/87/87e655fc7360f7ace4760c6d32b69e1a b/Library/Artifacts/87/87e655fc7360f7ace4760c6d32b69e1a new file mode 100644 index 0000000..5cd2b47 Binary files /dev/null and b/Library/Artifacts/87/87e655fc7360f7ace4760c6d32b69e1a differ diff --git a/Library/Artifacts/87/87f0f8dbae365cdf1dffcd97e1da2907 b/Library/Artifacts/87/87f0f8dbae365cdf1dffcd97e1da2907 new file mode 100644 index 0000000..fd37791 Binary files /dev/null and b/Library/Artifacts/87/87f0f8dbae365cdf1dffcd97e1da2907 differ diff --git a/Library/Artifacts/88/8820686c17bea8e9c7ee164929ac21e7 b/Library/Artifacts/88/8820686c17bea8e9c7ee164929ac21e7 new file mode 100644 index 0000000..f239e01 Binary files /dev/null and b/Library/Artifacts/88/8820686c17bea8e9c7ee164929ac21e7 differ diff --git a/Library/Artifacts/88/8873913fc54d3997de32b7e041812bf9 b/Library/Artifacts/88/8873913fc54d3997de32b7e041812bf9 new file mode 100644 index 0000000..bbd148c Binary files /dev/null and b/Library/Artifacts/88/8873913fc54d3997de32b7e041812bf9 differ diff --git a/Library/Artifacts/88/8894c01e5a03cba9833b305a5e5d6d14 b/Library/Artifacts/88/8894c01e5a03cba9833b305a5e5d6d14 new file mode 100644 index 0000000..196a61b Binary files /dev/null and b/Library/Artifacts/88/8894c01e5a03cba9833b305a5e5d6d14 differ diff --git a/Library/Artifacts/88/88a27ad9b82f9fa04a67de55406d4a1f b/Library/Artifacts/88/88a27ad9b82f9fa04a67de55406d4a1f new file mode 100644 index 0000000..f83cc0d Binary files /dev/null and b/Library/Artifacts/88/88a27ad9b82f9fa04a67de55406d4a1f differ diff --git a/Library/Artifacts/88/88c9bb35576e1f4f1980795eabcf7478 b/Library/Artifacts/88/88c9bb35576e1f4f1980795eabcf7478 new file mode 100644 index 0000000..1568b35 Binary files /dev/null and b/Library/Artifacts/88/88c9bb35576e1f4f1980795eabcf7478 differ diff --git a/Library/Artifacts/88/88cf786b388cee002bdbb6cf38ddd143 b/Library/Artifacts/88/88cf786b388cee002bdbb6cf38ddd143 new file mode 100644 index 0000000..0f0f75a Binary files /dev/null and b/Library/Artifacts/88/88cf786b388cee002bdbb6cf38ddd143 differ diff --git a/Library/Artifacts/88/88e06600c9bf9b48e57521077c094092 b/Library/Artifacts/88/88e06600c9bf9b48e57521077c094092 new file mode 100644 index 0000000..6c75aaf Binary files /dev/null and b/Library/Artifacts/88/88e06600c9bf9b48e57521077c094092 differ diff --git a/Library/Artifacts/88/88f65b3565711c82c01eec8e532fd517 b/Library/Artifacts/88/88f65b3565711c82c01eec8e532fd517 new file mode 100644 index 0000000..c2fef33 Binary files /dev/null and b/Library/Artifacts/88/88f65b3565711c82c01eec8e532fd517 differ diff --git a/Library/Artifacts/88/88fe0e9bbaa418d281760c2be23f15bf b/Library/Artifacts/88/88fe0e9bbaa418d281760c2be23f15bf new file mode 100644 index 0000000..7133e7d Binary files /dev/null and b/Library/Artifacts/88/88fe0e9bbaa418d281760c2be23f15bf differ diff --git a/Library/Artifacts/89/8902a4a074c4e8ab9a996cc2e8a2f319 b/Library/Artifacts/89/8902a4a074c4e8ab9a996cc2e8a2f319 new file mode 100644 index 0000000..b9d71f7 Binary files /dev/null and b/Library/Artifacts/89/8902a4a074c4e8ab9a996cc2e8a2f319 differ diff --git a/Library/Artifacts/89/890f8712ffb49a9a0686b91200695bf6 b/Library/Artifacts/89/890f8712ffb49a9a0686b91200695bf6 new file mode 100644 index 0000000..625aefd Binary files /dev/null and b/Library/Artifacts/89/890f8712ffb49a9a0686b91200695bf6 differ diff --git a/Library/Artifacts/89/8911862eb79e820e65b9a77799874012 b/Library/Artifacts/89/8911862eb79e820e65b9a77799874012 new file mode 100644 index 0000000..d777237 Binary files /dev/null and b/Library/Artifacts/89/8911862eb79e820e65b9a77799874012 differ diff --git a/Library/Artifacts/89/89e87464d9bfb1d39e531ee233514044 b/Library/Artifacts/89/89e87464d9bfb1d39e531ee233514044 new file mode 100644 index 0000000..683542a Binary files /dev/null and b/Library/Artifacts/89/89e87464d9bfb1d39e531ee233514044 differ diff --git a/Library/Artifacts/89/89f0981fd4b2a9e2161e560c89383304 b/Library/Artifacts/89/89f0981fd4b2a9e2161e560c89383304 new file mode 100644 index 0000000..1b609df Binary files /dev/null and b/Library/Artifacts/89/89f0981fd4b2a9e2161e560c89383304 differ diff --git a/Library/Artifacts/8a/8a7300b0c4108306c2da2814e9bb14fb b/Library/Artifacts/8a/8a7300b0c4108306c2da2814e9bb14fb new file mode 100644 index 0000000..91106a2 Binary files /dev/null and b/Library/Artifacts/8a/8a7300b0c4108306c2da2814e9bb14fb differ diff --git a/Library/Artifacts/8a/8a9907ca198749bf8f6c6f8102a71cb1 b/Library/Artifacts/8a/8a9907ca198749bf8f6c6f8102a71cb1 new file mode 100644 index 0000000..6cc8d16 Binary files /dev/null and b/Library/Artifacts/8a/8a9907ca198749bf8f6c6f8102a71cb1 differ diff --git a/Library/Artifacts/8a/8ac802409bccae11d17dc51c7fd759f4 b/Library/Artifacts/8a/8ac802409bccae11d17dc51c7fd759f4 new file mode 100644 index 0000000..1dc938d Binary files /dev/null and b/Library/Artifacts/8a/8ac802409bccae11d17dc51c7fd759f4 differ diff --git a/Library/Artifacts/8a/8ae91b16068cbd4304ccd2fbd173c040 b/Library/Artifacts/8a/8ae91b16068cbd4304ccd2fbd173c040 new file mode 100644 index 0000000..239a9ef Binary files /dev/null and b/Library/Artifacts/8a/8ae91b16068cbd4304ccd2fbd173c040 differ diff --git a/Library/Artifacts/8b/8b023266a52ed1abcac3fc6ecc8a7532 b/Library/Artifacts/8b/8b023266a52ed1abcac3fc6ecc8a7532 new file mode 100644 index 0000000..8e0d076 Binary files /dev/null and b/Library/Artifacts/8b/8b023266a52ed1abcac3fc6ecc8a7532 differ diff --git a/Library/Artifacts/8b/8b3b4ffe9c4979ca240d857912869d47 b/Library/Artifacts/8b/8b3b4ffe9c4979ca240d857912869d47 new file mode 100644 index 0000000..52d4c63 Binary files /dev/null and b/Library/Artifacts/8b/8b3b4ffe9c4979ca240d857912869d47 differ diff --git a/Library/Artifacts/8b/8b45251ee8f9625896ef07ed3079b0ca b/Library/Artifacts/8b/8b45251ee8f9625896ef07ed3079b0ca new file mode 100644 index 0000000..528a01a Binary files /dev/null and b/Library/Artifacts/8b/8b45251ee8f9625896ef07ed3079b0ca differ diff --git a/Library/Artifacts/8b/8b60d87030d9282fea292735a10d7fb4 b/Library/Artifacts/8b/8b60d87030d9282fea292735a10d7fb4 new file mode 100644 index 0000000..a6dfd71 Binary files /dev/null and b/Library/Artifacts/8b/8b60d87030d9282fea292735a10d7fb4 differ diff --git a/Library/Artifacts/8b/8b9be67bfc4ebf16af8d55de6985dea9 b/Library/Artifacts/8b/8b9be67bfc4ebf16af8d55de6985dea9 new file mode 100644 index 0000000..f96788b Binary files /dev/null and b/Library/Artifacts/8b/8b9be67bfc4ebf16af8d55de6985dea9 differ diff --git a/Library/Artifacts/8b/8ba87693a53492a98e71ff581205f1a3 b/Library/Artifacts/8b/8ba87693a53492a98e71ff581205f1a3 new file mode 100644 index 0000000..32282d5 Binary files /dev/null and b/Library/Artifacts/8b/8ba87693a53492a98e71ff581205f1a3 differ diff --git a/Library/Artifacts/8b/8bb5e2f190d429444172f4e4ddcfaeab b/Library/Artifacts/8b/8bb5e2f190d429444172f4e4ddcfaeab new file mode 100644 index 0000000..bffb139 Binary files /dev/null and b/Library/Artifacts/8b/8bb5e2f190d429444172f4e4ddcfaeab differ diff --git a/Library/Artifacts/8b/8bbc6813bd25e2167b8c68eb60b5b3d8 b/Library/Artifacts/8b/8bbc6813bd25e2167b8c68eb60b5b3d8 new file mode 100644 index 0000000..8147eab Binary files /dev/null and b/Library/Artifacts/8b/8bbc6813bd25e2167b8c68eb60b5b3d8 differ diff --git a/Library/Artifacts/8b/8bbf97fcd2569467a1421081f8ee4eea b/Library/Artifacts/8b/8bbf97fcd2569467a1421081f8ee4eea new file mode 100644 index 0000000..83ae2cf Binary files /dev/null and b/Library/Artifacts/8b/8bbf97fcd2569467a1421081f8ee4eea differ diff --git a/Library/Artifacts/8c/8c811ffb0547e7b6bcc7ba30b7e563f2 b/Library/Artifacts/8c/8c811ffb0547e7b6bcc7ba30b7e563f2 new file mode 100644 index 0000000..55b89f0 Binary files /dev/null and b/Library/Artifacts/8c/8c811ffb0547e7b6bcc7ba30b7e563f2 differ diff --git a/Library/Artifacts/8c/8c937d0e46922291842b26dfc5caf291 b/Library/Artifacts/8c/8c937d0e46922291842b26dfc5caf291 new file mode 100644 index 0000000..e67e6b8 Binary files /dev/null and b/Library/Artifacts/8c/8c937d0e46922291842b26dfc5caf291 differ diff --git a/Library/Artifacts/8c/8ca19d5f19f114f2b50357a5e5c71f1f b/Library/Artifacts/8c/8ca19d5f19f114f2b50357a5e5c71f1f new file mode 100644 index 0000000..e28606f Binary files /dev/null and b/Library/Artifacts/8c/8ca19d5f19f114f2b50357a5e5c71f1f differ diff --git a/Library/Artifacts/8c/8ce52f7e66ac419c02661bb09c3dbdb6 b/Library/Artifacts/8c/8ce52f7e66ac419c02661bb09c3dbdb6 new file mode 100644 index 0000000..4c3287c Binary files /dev/null and b/Library/Artifacts/8c/8ce52f7e66ac419c02661bb09c3dbdb6 differ diff --git a/Library/Artifacts/8c/8cf74902f6d9d5f1c571e436985f1d5e b/Library/Artifacts/8c/8cf74902f6d9d5f1c571e436985f1d5e new file mode 100644 index 0000000..9f9f91c Binary files /dev/null and b/Library/Artifacts/8c/8cf74902f6d9d5f1c571e436985f1d5e differ diff --git a/Library/Artifacts/8d/8d0c9933aa5aaa2ba34ff8bfd905632c b/Library/Artifacts/8d/8d0c9933aa5aaa2ba34ff8bfd905632c new file mode 100644 index 0000000..27e8931 Binary files /dev/null and b/Library/Artifacts/8d/8d0c9933aa5aaa2ba34ff8bfd905632c differ diff --git a/Library/Artifacts/8d/8d311dae0119f141bd566014ecb03ebd b/Library/Artifacts/8d/8d311dae0119f141bd566014ecb03ebd new file mode 100644 index 0000000..65a9581 Binary files /dev/null and b/Library/Artifacts/8d/8d311dae0119f141bd566014ecb03ebd differ diff --git a/Library/Artifacts/8d/8d51591786e209c41bb1909e868e9c79 b/Library/Artifacts/8d/8d51591786e209c41bb1909e868e9c79 new file mode 100644 index 0000000..db3315f Binary files /dev/null and b/Library/Artifacts/8d/8d51591786e209c41bb1909e868e9c79 differ diff --git a/Library/Artifacts/8d/8d5ead831c90343c4d9697cf1bad6bd2 b/Library/Artifacts/8d/8d5ead831c90343c4d9697cf1bad6bd2 new file mode 100644 index 0000000..73db777 Binary files /dev/null and b/Library/Artifacts/8d/8d5ead831c90343c4d9697cf1bad6bd2 differ diff --git a/Library/Artifacts/8d/8d72c9da5e4417cb101d0e411a2c4076 b/Library/Artifacts/8d/8d72c9da5e4417cb101d0e411a2c4076 new file mode 100644 index 0000000..c5e8e62 Binary files /dev/null and b/Library/Artifacts/8d/8d72c9da5e4417cb101d0e411a2c4076 differ diff --git a/Library/Artifacts/8d/8dae2096403ef718eeda5c2a104d0e9b b/Library/Artifacts/8d/8dae2096403ef718eeda5c2a104d0e9b new file mode 100644 index 0000000..c10eeae Binary files /dev/null and b/Library/Artifacts/8d/8dae2096403ef718eeda5c2a104d0e9b differ diff --git a/Library/Artifacts/8d/8dba05a142eeeb62b8beffb76614cc88 b/Library/Artifacts/8d/8dba05a142eeeb62b8beffb76614cc88 new file mode 100644 index 0000000..f220c61 Binary files /dev/null and b/Library/Artifacts/8d/8dba05a142eeeb62b8beffb76614cc88 differ diff --git a/Library/Artifacts/8d/8de267c96df0c0b5e8338b932a7fd595 b/Library/Artifacts/8d/8de267c96df0c0b5e8338b932a7fd595 new file mode 100644 index 0000000..724a1f4 Binary files /dev/null and b/Library/Artifacts/8d/8de267c96df0c0b5e8338b932a7fd595 differ diff --git a/Library/Artifacts/8d/8df4d91f2c7b067af1e54886bbfb8531 b/Library/Artifacts/8d/8df4d91f2c7b067af1e54886bbfb8531 new file mode 100644 index 0000000..aac9236 Binary files /dev/null and b/Library/Artifacts/8d/8df4d91f2c7b067af1e54886bbfb8531 differ diff --git a/Library/Artifacts/8e/8e01b7d7ea2124e11521db469c2daf7a b/Library/Artifacts/8e/8e01b7d7ea2124e11521db469c2daf7a new file mode 100644 index 0000000..014bdf6 Binary files /dev/null and b/Library/Artifacts/8e/8e01b7d7ea2124e11521db469c2daf7a differ diff --git a/Library/Artifacts/8e/8e032d4e2fd818ce1f75a294aeb0b8a4 b/Library/Artifacts/8e/8e032d4e2fd818ce1f75a294aeb0b8a4 new file mode 100644 index 0000000..3963f46 Binary files /dev/null and b/Library/Artifacts/8e/8e032d4e2fd818ce1f75a294aeb0b8a4 differ diff --git a/Library/Artifacts/8e/8e119b747e1a7d04f6ae5931e2581ced b/Library/Artifacts/8e/8e119b747e1a7d04f6ae5931e2581ced new file mode 100644 index 0000000..14ded58 Binary files /dev/null and b/Library/Artifacts/8e/8e119b747e1a7d04f6ae5931e2581ced differ diff --git a/Library/Artifacts/8e/8e1f35fe74d07c6e82df86360738ae30 b/Library/Artifacts/8e/8e1f35fe74d07c6e82df86360738ae30 new file mode 100644 index 0000000..2d24146 Binary files /dev/null and b/Library/Artifacts/8e/8e1f35fe74d07c6e82df86360738ae30 differ diff --git a/Library/Artifacts/8e/8e372c5e92f7b0bfb7d0a5fef938248c b/Library/Artifacts/8e/8e372c5e92f7b0bfb7d0a5fef938248c new file mode 100644 index 0000000..8b3a729 Binary files /dev/null and b/Library/Artifacts/8e/8e372c5e92f7b0bfb7d0a5fef938248c differ diff --git a/Library/Artifacts/8e/8e40dec685546799917288059fabfbfb b/Library/Artifacts/8e/8e40dec685546799917288059fabfbfb new file mode 100644 index 0000000..cab06c7 Binary files /dev/null and b/Library/Artifacts/8e/8e40dec685546799917288059fabfbfb differ diff --git a/Library/Artifacts/8e/8e6951aa56dfc0c255d685c06e1f575a b/Library/Artifacts/8e/8e6951aa56dfc0c255d685c06e1f575a new file mode 100644 index 0000000..d3c7439 Binary files /dev/null and b/Library/Artifacts/8e/8e6951aa56dfc0c255d685c06e1f575a differ diff --git a/Library/Artifacts/8e/8ec21040d1d48980bd1b58835ffa5bb4 b/Library/Artifacts/8e/8ec21040d1d48980bd1b58835ffa5bb4 new file mode 100644 index 0000000..59f1e99 Binary files /dev/null and b/Library/Artifacts/8e/8ec21040d1d48980bd1b58835ffa5bb4 differ diff --git a/Library/Artifacts/8f/8f0ac371b7a411a94f3b1060ad376e1f b/Library/Artifacts/8f/8f0ac371b7a411a94f3b1060ad376e1f new file mode 100644 index 0000000..bca1e80 Binary files /dev/null and b/Library/Artifacts/8f/8f0ac371b7a411a94f3b1060ad376e1f differ diff --git a/Library/Artifacts/8f/8f53a95391b3dc71f41f6f8cb8c375b3 b/Library/Artifacts/8f/8f53a95391b3dc71f41f6f8cb8c375b3 new file mode 100644 index 0000000..9eef1b5 Binary files /dev/null and b/Library/Artifacts/8f/8f53a95391b3dc71f41f6f8cb8c375b3 differ diff --git a/Library/Artifacts/8f/8f7738517dc0eb2d087d1d02bc24cdb3 b/Library/Artifacts/8f/8f7738517dc0eb2d087d1d02bc24cdb3 new file mode 100644 index 0000000..9a54c54 Binary files /dev/null and b/Library/Artifacts/8f/8f7738517dc0eb2d087d1d02bc24cdb3 differ diff --git a/Library/Artifacts/8f/8fc62704a795be1e5f45fff904a417fc b/Library/Artifacts/8f/8fc62704a795be1e5f45fff904a417fc new file mode 100644 index 0000000..aa2baf7 Binary files /dev/null and b/Library/Artifacts/8f/8fc62704a795be1e5f45fff904a417fc differ diff --git a/Library/Artifacts/8f/8fcfac0a10c69f31d2443379b02e05a3 b/Library/Artifacts/8f/8fcfac0a10c69f31d2443379b02e05a3 new file mode 100644 index 0000000..0127e93 Binary files /dev/null and b/Library/Artifacts/8f/8fcfac0a10c69f31d2443379b02e05a3 differ diff --git a/Library/Artifacts/90/901cc4dcc2b6fe93b756cee0537b09e3 b/Library/Artifacts/90/901cc4dcc2b6fe93b756cee0537b09e3 new file mode 100644 index 0000000..11086c0 Binary files /dev/null and b/Library/Artifacts/90/901cc4dcc2b6fe93b756cee0537b09e3 differ diff --git a/Library/Artifacts/90/902deccc821b0362fb82eb1c6461c5a4 b/Library/Artifacts/90/902deccc821b0362fb82eb1c6461c5a4 new file mode 100644 index 0000000..0b59cf7 Binary files /dev/null and b/Library/Artifacts/90/902deccc821b0362fb82eb1c6461c5a4 differ diff --git a/Library/Artifacts/90/902f4409aea8135f660e4246b4d85afa b/Library/Artifacts/90/902f4409aea8135f660e4246b4d85afa new file mode 100644 index 0000000..9d3c694 Binary files /dev/null and b/Library/Artifacts/90/902f4409aea8135f660e4246b4d85afa differ diff --git a/Library/Artifacts/90/902fef3caeebb7658fce25fa5602c378 b/Library/Artifacts/90/902fef3caeebb7658fce25fa5602c378 new file mode 100644 index 0000000..3e0d8c1 Binary files /dev/null and b/Library/Artifacts/90/902fef3caeebb7658fce25fa5602c378 differ diff --git a/Library/Artifacts/90/9045b1068e28824febee30f06fcc1608 b/Library/Artifacts/90/9045b1068e28824febee30f06fcc1608 new file mode 100644 index 0000000..0d4593c Binary files /dev/null and b/Library/Artifacts/90/9045b1068e28824febee30f06fcc1608 differ diff --git a/Library/Artifacts/90/904db0f99935f41173742076449b1dbb b/Library/Artifacts/90/904db0f99935f41173742076449b1dbb new file mode 100644 index 0000000..8386df7 Binary files /dev/null and b/Library/Artifacts/90/904db0f99935f41173742076449b1dbb differ diff --git a/Library/Artifacts/90/9069db9fe8add6aa27f9fb042ce080bc b/Library/Artifacts/90/9069db9fe8add6aa27f9fb042ce080bc new file mode 100644 index 0000000..379b325 Binary files /dev/null and b/Library/Artifacts/90/9069db9fe8add6aa27f9fb042ce080bc differ diff --git a/Library/Artifacts/90/90785063fc8e54f1a290b1304daa64ee b/Library/Artifacts/90/90785063fc8e54f1a290b1304daa64ee new file mode 100644 index 0000000..9b94772 Binary files /dev/null and b/Library/Artifacts/90/90785063fc8e54f1a290b1304daa64ee differ diff --git a/Library/Artifacts/90/908765c134a8563736f5138316e595da b/Library/Artifacts/90/908765c134a8563736f5138316e595da new file mode 100644 index 0000000..e6e6b3d Binary files /dev/null and b/Library/Artifacts/90/908765c134a8563736f5138316e595da differ diff --git a/Library/Artifacts/90/90ae30860177bead82ead1df89bc6e25 b/Library/Artifacts/90/90ae30860177bead82ead1df89bc6e25 new file mode 100644 index 0000000..6fdb672 Binary files /dev/null and b/Library/Artifacts/90/90ae30860177bead82ead1df89bc6e25 differ diff --git a/Library/Artifacts/90/90bb67287f9764dd5ffbb0170596ebe5 b/Library/Artifacts/90/90bb67287f9764dd5ffbb0170596ebe5 new file mode 100644 index 0000000..d109a59 Binary files /dev/null and b/Library/Artifacts/90/90bb67287f9764dd5ffbb0170596ebe5 differ diff --git a/Library/Artifacts/90/90e1f2120f39f24926c79b9a0617f28a b/Library/Artifacts/90/90e1f2120f39f24926c79b9a0617f28a new file mode 100644 index 0000000..2c3cf51 Binary files /dev/null and b/Library/Artifacts/90/90e1f2120f39f24926c79b9a0617f28a differ diff --git a/Library/Artifacts/91/9105d57a2aeb11eb40b3a99585f1955b b/Library/Artifacts/91/9105d57a2aeb11eb40b3a99585f1955b new file mode 100644 index 0000000..a803fbf Binary files /dev/null and b/Library/Artifacts/91/9105d57a2aeb11eb40b3a99585f1955b differ diff --git a/Library/Artifacts/91/912c01417bacad046e58db75bc17b547 b/Library/Artifacts/91/912c01417bacad046e58db75bc17b547 new file mode 100644 index 0000000..e2fc19f Binary files /dev/null and b/Library/Artifacts/91/912c01417bacad046e58db75bc17b547 differ diff --git a/Library/Artifacts/91/91389055f9ce617811acf3682dfa8e3e b/Library/Artifacts/91/91389055f9ce617811acf3682dfa8e3e new file mode 100644 index 0000000..f7254da Binary files /dev/null and b/Library/Artifacts/91/91389055f9ce617811acf3682dfa8e3e differ diff --git a/Library/Artifacts/91/9153a85c96b5569c4e8ab7fcfb146f62 b/Library/Artifacts/91/9153a85c96b5569c4e8ab7fcfb146f62 new file mode 100644 index 0000000..547de0d Binary files /dev/null and b/Library/Artifacts/91/9153a85c96b5569c4e8ab7fcfb146f62 differ diff --git a/Library/Artifacts/91/9155aebef83e02d4387237137af95372 b/Library/Artifacts/91/9155aebef83e02d4387237137af95372 new file mode 100644 index 0000000..5c28b92 Binary files /dev/null and b/Library/Artifacts/91/9155aebef83e02d4387237137af95372 differ diff --git a/Library/Artifacts/91/915946cd254b430f520f83202db70e4f b/Library/Artifacts/91/915946cd254b430f520f83202db70e4f new file mode 100644 index 0000000..6862e3b Binary files /dev/null and b/Library/Artifacts/91/915946cd254b430f520f83202db70e4f differ diff --git a/Library/Artifacts/91/91656b605eb49c14bf551ca572273e62 b/Library/Artifacts/91/91656b605eb49c14bf551ca572273e62 new file mode 100644 index 0000000..7c86831 Binary files /dev/null and b/Library/Artifacts/91/91656b605eb49c14bf551ca572273e62 differ diff --git a/Library/Artifacts/91/9184a1d3f2dc28ef2e6a675d9ccd269a b/Library/Artifacts/91/9184a1d3f2dc28ef2e6a675d9ccd269a new file mode 100644 index 0000000..7d0807b Binary files /dev/null and b/Library/Artifacts/91/9184a1d3f2dc28ef2e6a675d9ccd269a differ diff --git a/Library/Artifacts/91/91bcfe5458a353b417557d308a9aef39 b/Library/Artifacts/91/91bcfe5458a353b417557d308a9aef39 new file mode 100644 index 0000000..6cb610f Binary files /dev/null and b/Library/Artifacts/91/91bcfe5458a353b417557d308a9aef39 differ diff --git a/Library/Artifacts/91/91e26f950819927dc9551f85229c5702 b/Library/Artifacts/91/91e26f950819927dc9551f85229c5702 new file mode 100644 index 0000000..f3a1567 Binary files /dev/null and b/Library/Artifacts/91/91e26f950819927dc9551f85229c5702 differ diff --git a/Library/Artifacts/91/91ed9ed7af94a20f1da2af43fc2cb79d b/Library/Artifacts/91/91ed9ed7af94a20f1da2af43fc2cb79d new file mode 100644 index 0000000..717e7f6 Binary files /dev/null and b/Library/Artifacts/91/91ed9ed7af94a20f1da2af43fc2cb79d differ diff --git a/Library/Artifacts/92/9217f52183497b602850e3e52f9961de b/Library/Artifacts/92/9217f52183497b602850e3e52f9961de new file mode 100644 index 0000000..593a3eb Binary files /dev/null and b/Library/Artifacts/92/9217f52183497b602850e3e52f9961de differ diff --git a/Library/Artifacts/92/92594f3edf135d7d2f46ed2567d2ab46 b/Library/Artifacts/92/92594f3edf135d7d2f46ed2567d2ab46 new file mode 100644 index 0000000..5e8510e Binary files /dev/null and b/Library/Artifacts/92/92594f3edf135d7d2f46ed2567d2ab46 differ diff --git a/Library/Artifacts/92/92639e7e55f82d566cf05fa6d5ac133a b/Library/Artifacts/92/92639e7e55f82d566cf05fa6d5ac133a new file mode 100644 index 0000000..d98880c Binary files /dev/null and b/Library/Artifacts/92/92639e7e55f82d566cf05fa6d5ac133a differ diff --git a/Library/Artifacts/92/9278ea06c86eb1ec73871e1946609594 b/Library/Artifacts/92/9278ea06c86eb1ec73871e1946609594 new file mode 100644 index 0000000..c8095ee Binary files /dev/null and b/Library/Artifacts/92/9278ea06c86eb1ec73871e1946609594 differ diff --git a/Library/Artifacts/92/92b0c3982f06ccdb57cb82f760019d6e b/Library/Artifacts/92/92b0c3982f06ccdb57cb82f760019d6e new file mode 100644 index 0000000..7c3f35c Binary files /dev/null and b/Library/Artifacts/92/92b0c3982f06ccdb57cb82f760019d6e differ diff --git a/Library/Artifacts/92/92b9528d557ff44994e722f3c6dd8310 b/Library/Artifacts/92/92b9528d557ff44994e722f3c6dd8310 new file mode 100644 index 0000000..ec23571 Binary files /dev/null and b/Library/Artifacts/92/92b9528d557ff44994e722f3c6dd8310 differ diff --git a/Library/Artifacts/92/92e49ded05e6d3b26d2f69a7d5c44017 b/Library/Artifacts/92/92e49ded05e6d3b26d2f69a7d5c44017 new file mode 100644 index 0000000..bf8c81e Binary files /dev/null and b/Library/Artifacts/92/92e49ded05e6d3b26d2f69a7d5c44017 differ diff --git a/Library/Artifacts/93/93134a83e80bcf418cd31d0ebe47dd2e b/Library/Artifacts/93/93134a83e80bcf418cd31d0ebe47dd2e new file mode 100644 index 0000000..4c7eb7e Binary files /dev/null and b/Library/Artifacts/93/93134a83e80bcf418cd31d0ebe47dd2e differ diff --git a/Library/Artifacts/93/9327012ac700654318b01bb992632ca7 b/Library/Artifacts/93/9327012ac700654318b01bb992632ca7 new file mode 100644 index 0000000..5eb806f Binary files /dev/null and b/Library/Artifacts/93/9327012ac700654318b01bb992632ca7 differ diff --git a/Library/Artifacts/93/932e760195be1e29952b74e977f84c48 b/Library/Artifacts/93/932e760195be1e29952b74e977f84c48 new file mode 100644 index 0000000..6132453 Binary files /dev/null and b/Library/Artifacts/93/932e760195be1e29952b74e977f84c48 differ diff --git a/Library/Artifacts/93/933af30c7d2a6b65ef1fcfdf344dc717 b/Library/Artifacts/93/933af30c7d2a6b65ef1fcfdf344dc717 new file mode 100644 index 0000000..6a39945 Binary files /dev/null and b/Library/Artifacts/93/933af30c7d2a6b65ef1fcfdf344dc717 differ diff --git a/Library/Artifacts/93/934c52f114ede5e0ba60a8f536185156 b/Library/Artifacts/93/934c52f114ede5e0ba60a8f536185156 new file mode 100644 index 0000000..a9290cd Binary files /dev/null and b/Library/Artifacts/93/934c52f114ede5e0ba60a8f536185156 differ diff --git a/Library/Artifacts/93/935d210a89420766bf79a565a67fc04c b/Library/Artifacts/93/935d210a89420766bf79a565a67fc04c new file mode 100644 index 0000000..5cc2c1c Binary files /dev/null and b/Library/Artifacts/93/935d210a89420766bf79a565a67fc04c differ diff --git a/Library/Artifacts/93/939963f9550578f9df6d97ba2f6c8e17 b/Library/Artifacts/93/939963f9550578f9df6d97ba2f6c8e17 new file mode 100644 index 0000000..e4f168b Binary files /dev/null and b/Library/Artifacts/93/939963f9550578f9df6d97ba2f6c8e17 differ diff --git a/Library/Artifacts/93/93e0286d74ddbe797e0bb405de49fb4e b/Library/Artifacts/93/93e0286d74ddbe797e0bb405de49fb4e new file mode 100644 index 0000000..a42e593 Binary files /dev/null and b/Library/Artifacts/93/93e0286d74ddbe797e0bb405de49fb4e differ diff --git a/Library/Artifacts/93/93e422418f874889ae4db7e2c6e62a28 b/Library/Artifacts/93/93e422418f874889ae4db7e2c6e62a28 new file mode 100644 index 0000000..7a4f965 Binary files /dev/null and b/Library/Artifacts/93/93e422418f874889ae4db7e2c6e62a28 differ diff --git a/Library/Artifacts/93/93fc3012d797b749abde15f373285520 b/Library/Artifacts/93/93fc3012d797b749abde15f373285520 new file mode 100644 index 0000000..6b71348 Binary files /dev/null and b/Library/Artifacts/93/93fc3012d797b749abde15f373285520 differ diff --git a/Library/Artifacts/93/93fe56fb0d09ba69a669ee545ec8727d b/Library/Artifacts/93/93fe56fb0d09ba69a669ee545ec8727d new file mode 100644 index 0000000..ff87ceb Binary files /dev/null and b/Library/Artifacts/93/93fe56fb0d09ba69a669ee545ec8727d differ diff --git a/Library/Artifacts/94/9450482e318155b59636b1611b886cdc b/Library/Artifacts/94/9450482e318155b59636b1611b886cdc new file mode 100644 index 0000000..3bef4a8 Binary files /dev/null and b/Library/Artifacts/94/9450482e318155b59636b1611b886cdc differ diff --git a/Library/Artifacts/94/9475a98e4e6d15d3f8f67717a0fbf690 b/Library/Artifacts/94/9475a98e4e6d15d3f8f67717a0fbf690 new file mode 100644 index 0000000..ec7a19b Binary files /dev/null and b/Library/Artifacts/94/9475a98e4e6d15d3f8f67717a0fbf690 differ diff --git a/Library/Artifacts/94/947fc9c1323babdb815a7670b0d73bc4 b/Library/Artifacts/94/947fc9c1323babdb815a7670b0d73bc4 new file mode 100644 index 0000000..2e6fe68 Binary files /dev/null and b/Library/Artifacts/94/947fc9c1323babdb815a7670b0d73bc4 differ diff --git a/Library/Artifacts/94/9485208744ffcab8bba0bf4bda5e04ee b/Library/Artifacts/94/9485208744ffcab8bba0bf4bda5e04ee new file mode 100644 index 0000000..f96455a Binary files /dev/null and b/Library/Artifacts/94/9485208744ffcab8bba0bf4bda5e04ee differ diff --git a/Library/Artifacts/94/94cf32e489bfb9d21ae543501de86095 b/Library/Artifacts/94/94cf32e489bfb9d21ae543501de86095 new file mode 100644 index 0000000..f8786b0 Binary files /dev/null and b/Library/Artifacts/94/94cf32e489bfb9d21ae543501de86095 differ diff --git a/Library/Artifacts/94/94fe1cb57b070334d5f969cc530e0d2c b/Library/Artifacts/94/94fe1cb57b070334d5f969cc530e0d2c new file mode 100644 index 0000000..13b782c Binary files /dev/null and b/Library/Artifacts/94/94fe1cb57b070334d5f969cc530e0d2c differ diff --git a/Library/Artifacts/95/95125884f70f5e6f9549aa1729c49fe5 b/Library/Artifacts/95/95125884f70f5e6f9549aa1729c49fe5 new file mode 100644 index 0000000..0a50fd2 Binary files /dev/null and b/Library/Artifacts/95/95125884f70f5e6f9549aa1729c49fe5 differ diff --git a/Library/Artifacts/95/95372dcd6b5f83457fd1776a0e99e3ae b/Library/Artifacts/95/95372dcd6b5f83457fd1776a0e99e3ae new file mode 100644 index 0000000..5b930b0 Binary files /dev/null and b/Library/Artifacts/95/95372dcd6b5f83457fd1776a0e99e3ae differ diff --git a/Library/Artifacts/95/954fddbd3459df249c4813225e727f17 b/Library/Artifacts/95/954fddbd3459df249c4813225e727f17 new file mode 100644 index 0000000..1c3158d Binary files /dev/null and b/Library/Artifacts/95/954fddbd3459df249c4813225e727f17 differ diff --git a/Library/Artifacts/95/957a9e3acbd4da6ac40e5470bcf6b565 b/Library/Artifacts/95/957a9e3acbd4da6ac40e5470bcf6b565 new file mode 100644 index 0000000..c732668 Binary files /dev/null and b/Library/Artifacts/95/957a9e3acbd4da6ac40e5470bcf6b565 differ diff --git a/Library/Artifacts/95/9593e1166e8256343ae96cec1250699e b/Library/Artifacts/95/9593e1166e8256343ae96cec1250699e new file mode 100644 index 0000000..526bf97 Binary files /dev/null and b/Library/Artifacts/95/9593e1166e8256343ae96cec1250699e differ diff --git a/Library/Artifacts/95/9599d0427ed8726aa2a4e25da69b4ad0 b/Library/Artifacts/95/9599d0427ed8726aa2a4e25da69b4ad0 new file mode 100644 index 0000000..51f8a3c Binary files /dev/null and b/Library/Artifacts/95/9599d0427ed8726aa2a4e25da69b4ad0 differ diff --git a/Library/Artifacts/95/95ae258debedd21544b4ee9dd7b17380 b/Library/Artifacts/95/95ae258debedd21544b4ee9dd7b17380 new file mode 100644 index 0000000..aa938fe Binary files /dev/null and b/Library/Artifacts/95/95ae258debedd21544b4ee9dd7b17380 differ diff --git a/Library/Artifacts/95/95b4476e75ba7c6ecfaf5c14ab78360b b/Library/Artifacts/95/95b4476e75ba7c6ecfaf5c14ab78360b new file mode 100644 index 0000000..f88a974 Binary files /dev/null and b/Library/Artifacts/95/95b4476e75ba7c6ecfaf5c14ab78360b differ diff --git a/Library/Artifacts/95/95c4ac87e3cd108dbeaea83f2c570e38 b/Library/Artifacts/95/95c4ac87e3cd108dbeaea83f2c570e38 new file mode 100644 index 0000000..b85db35 Binary files /dev/null and b/Library/Artifacts/95/95c4ac87e3cd108dbeaea83f2c570e38 differ diff --git a/Library/Artifacts/95/95cba8aa8601bbc207901467f0469ed0 b/Library/Artifacts/95/95cba8aa8601bbc207901467f0469ed0 new file mode 100644 index 0000000..a802998 Binary files /dev/null and b/Library/Artifacts/95/95cba8aa8601bbc207901467f0469ed0 differ diff --git a/Library/Artifacts/95/95d5c9be9f1bb2a2352829ede01118df b/Library/Artifacts/95/95d5c9be9f1bb2a2352829ede01118df new file mode 100644 index 0000000..bfaba94 Binary files /dev/null and b/Library/Artifacts/95/95d5c9be9f1bb2a2352829ede01118df differ diff --git a/Library/Artifacts/95/95e246fd246fe3adadf3976299182b13 b/Library/Artifacts/95/95e246fd246fe3adadf3976299182b13 new file mode 100644 index 0000000..dc2edf2 Binary files /dev/null and b/Library/Artifacts/95/95e246fd246fe3adadf3976299182b13 differ diff --git a/Library/Artifacts/95/95f2a054eb35a0072f758ba5f45b9d74 b/Library/Artifacts/95/95f2a054eb35a0072f758ba5f45b9d74 new file mode 100644 index 0000000..ecd29af Binary files /dev/null and b/Library/Artifacts/95/95f2a054eb35a0072f758ba5f45b9d74 differ diff --git a/Library/Artifacts/96/96463068f21837b99f3c58b6e1c2e1cb b/Library/Artifacts/96/96463068f21837b99f3c58b6e1c2e1cb new file mode 100644 index 0000000..2e8d087 Binary files /dev/null and b/Library/Artifacts/96/96463068f21837b99f3c58b6e1c2e1cb differ diff --git a/Library/Artifacts/96/964c7bf6adc9d536c8c057b3625bbd76 b/Library/Artifacts/96/964c7bf6adc9d536c8c057b3625bbd76 new file mode 100644 index 0000000..7739ed9 Binary files /dev/null and b/Library/Artifacts/96/964c7bf6adc9d536c8c057b3625bbd76 differ diff --git a/Library/Artifacts/96/9653bc82befbc6bf95de9863170e0f43 b/Library/Artifacts/96/9653bc82befbc6bf95de9863170e0f43 new file mode 100644 index 0000000..d47204f Binary files /dev/null and b/Library/Artifacts/96/9653bc82befbc6bf95de9863170e0f43 differ diff --git a/Library/Artifacts/96/967447ade74c8a5a483c29670fe27a33 b/Library/Artifacts/96/967447ade74c8a5a483c29670fe27a33 new file mode 100644 index 0000000..64a54c9 Binary files /dev/null and b/Library/Artifacts/96/967447ade74c8a5a483c29670fe27a33 differ diff --git a/Library/Artifacts/96/9676560024fdb1c141630bf1bffd0814 b/Library/Artifacts/96/9676560024fdb1c141630bf1bffd0814 new file mode 100644 index 0000000..926ffb7 Binary files /dev/null and b/Library/Artifacts/96/9676560024fdb1c141630bf1bffd0814 differ diff --git a/Library/Artifacts/96/967f4ea6b92f522627c6642615b53201 b/Library/Artifacts/96/967f4ea6b92f522627c6642615b53201 new file mode 100644 index 0000000..2c22687 Binary files /dev/null and b/Library/Artifacts/96/967f4ea6b92f522627c6642615b53201 differ diff --git a/Library/Artifacts/96/9681d27ce9bb1af52c05f5ff9cdc07bb b/Library/Artifacts/96/9681d27ce9bb1af52c05f5ff9cdc07bb new file mode 100644 index 0000000..9144b22 Binary files /dev/null and b/Library/Artifacts/96/9681d27ce9bb1af52c05f5ff9cdc07bb differ diff --git a/Library/Artifacts/96/968fa908a6f6e96c4184b5b1780f214f b/Library/Artifacts/96/968fa908a6f6e96c4184b5b1780f214f new file mode 100644 index 0000000..4e1442d Binary files /dev/null and b/Library/Artifacts/96/968fa908a6f6e96c4184b5b1780f214f differ diff --git a/Library/Artifacts/96/969586cb9868cbda7c498a0592f7553c b/Library/Artifacts/96/969586cb9868cbda7c498a0592f7553c new file mode 100644 index 0000000..06b6b56 Binary files /dev/null and b/Library/Artifacts/96/969586cb9868cbda7c498a0592f7553c differ diff --git a/Library/Artifacts/96/96a434dd0ccdfe4d1e1a09ba5e047aac b/Library/Artifacts/96/96a434dd0ccdfe4d1e1a09ba5e047aac new file mode 100644 index 0000000..be393c1 Binary files /dev/null and b/Library/Artifacts/96/96a434dd0ccdfe4d1e1a09ba5e047aac differ diff --git a/Library/Artifacts/96/96d097956044ed16321c914fec4966e8 b/Library/Artifacts/96/96d097956044ed16321c914fec4966e8 new file mode 100644 index 0000000..56d295b Binary files /dev/null and b/Library/Artifacts/96/96d097956044ed16321c914fec4966e8 differ diff --git a/Library/Artifacts/96/96d4ef87ee3bc8363a7d43a066c160e0 b/Library/Artifacts/96/96d4ef87ee3bc8363a7d43a066c160e0 new file mode 100644 index 0000000..34f0ba5 Binary files /dev/null and b/Library/Artifacts/96/96d4ef87ee3bc8363a7d43a066c160e0 differ diff --git a/Library/Artifacts/96/96db156442a491bc6a5e0bd67d49fedd b/Library/Artifacts/96/96db156442a491bc6a5e0bd67d49fedd new file mode 100644 index 0000000..fb0a6b7 Binary files /dev/null and b/Library/Artifacts/96/96db156442a491bc6a5e0bd67d49fedd differ diff --git a/Library/Artifacts/97/973b4631d52b67fab462fb44bd858880 b/Library/Artifacts/97/973b4631d52b67fab462fb44bd858880 new file mode 100644 index 0000000..c689ee1 Binary files /dev/null and b/Library/Artifacts/97/973b4631d52b67fab462fb44bd858880 differ diff --git a/Library/Artifacts/97/9757977ba40e7b6c3e0f501a2397de9c b/Library/Artifacts/97/9757977ba40e7b6c3e0f501a2397de9c new file mode 100644 index 0000000..319e13b Binary files /dev/null and b/Library/Artifacts/97/9757977ba40e7b6c3e0f501a2397de9c differ diff --git a/Library/Artifacts/97/97841a8c9a25204361f5377e282a9a40 b/Library/Artifacts/97/97841a8c9a25204361f5377e282a9a40 new file mode 100644 index 0000000..f7e28e4 Binary files /dev/null and b/Library/Artifacts/97/97841a8c9a25204361f5377e282a9a40 differ diff --git a/Library/Artifacts/97/979aed0981b580bbea012a15ca717183 b/Library/Artifacts/97/979aed0981b580bbea012a15ca717183 new file mode 100644 index 0000000..f75945c Binary files /dev/null and b/Library/Artifacts/97/979aed0981b580bbea012a15ca717183 differ diff --git a/Library/Artifacts/97/97b53ebbb884b1dd56777d5997fe665e b/Library/Artifacts/97/97b53ebbb884b1dd56777d5997fe665e new file mode 100644 index 0000000..1cadb95 Binary files /dev/null and b/Library/Artifacts/97/97b53ebbb884b1dd56777d5997fe665e differ diff --git a/Library/Artifacts/98/982e1bcafb9f55fbe17efa23b0035471 b/Library/Artifacts/98/982e1bcafb9f55fbe17efa23b0035471 new file mode 100644 index 0000000..afd1038 Binary files /dev/null and b/Library/Artifacts/98/982e1bcafb9f55fbe17efa23b0035471 differ diff --git a/Library/Artifacts/98/984b5fdf6f59c9b50ac6fba76c1bc3ba b/Library/Artifacts/98/984b5fdf6f59c9b50ac6fba76c1bc3ba new file mode 100644 index 0000000..ca3cef8 Binary files /dev/null and b/Library/Artifacts/98/984b5fdf6f59c9b50ac6fba76c1bc3ba differ diff --git a/Library/Artifacts/98/985425b921432db63a0a7c0027033990 b/Library/Artifacts/98/985425b921432db63a0a7c0027033990 new file mode 100644 index 0000000..b5c0b08 Binary files /dev/null and b/Library/Artifacts/98/985425b921432db63a0a7c0027033990 differ diff --git a/Library/Artifacts/98/986d56e4a272e2d1500c113ac2e9d4a5 b/Library/Artifacts/98/986d56e4a272e2d1500c113ac2e9d4a5 new file mode 100644 index 0000000..df0c70b Binary files /dev/null and b/Library/Artifacts/98/986d56e4a272e2d1500c113ac2e9d4a5 differ diff --git a/Library/Artifacts/98/98a33613446441fe89649a2e3669d347 b/Library/Artifacts/98/98a33613446441fe89649a2e3669d347 new file mode 100644 index 0000000..d2d9324 Binary files /dev/null and b/Library/Artifacts/98/98a33613446441fe89649a2e3669d347 differ diff --git a/Library/Artifacts/98/98d54a3df1a683a4792160ad06eac3bd b/Library/Artifacts/98/98d54a3df1a683a4792160ad06eac3bd new file mode 100644 index 0000000..c913dd5 Binary files /dev/null and b/Library/Artifacts/98/98d54a3df1a683a4792160ad06eac3bd differ diff --git a/Library/Artifacts/99/9923aa9cee3790d7c01e787de79c7119 b/Library/Artifacts/99/9923aa9cee3790d7c01e787de79c7119 new file mode 100644 index 0000000..6db9833 Binary files /dev/null and b/Library/Artifacts/99/9923aa9cee3790d7c01e787de79c7119 differ diff --git a/Library/Artifacts/99/994bf53d3d6fafe1da63ba19e83744f2 b/Library/Artifacts/99/994bf53d3d6fafe1da63ba19e83744f2 new file mode 100644 index 0000000..8944891 Binary files /dev/null and b/Library/Artifacts/99/994bf53d3d6fafe1da63ba19e83744f2 differ diff --git a/Library/Artifacts/99/99518ba7f492e69f29e55e1a2397ebfd b/Library/Artifacts/99/99518ba7f492e69f29e55e1a2397ebfd new file mode 100644 index 0000000..e865ff7 Binary files /dev/null and b/Library/Artifacts/99/99518ba7f492e69f29e55e1a2397ebfd differ diff --git a/Library/Artifacts/99/99673d210171b7b6d66703a241f146c8 b/Library/Artifacts/99/99673d210171b7b6d66703a241f146c8 new file mode 100644 index 0000000..8152d71 Binary files /dev/null and b/Library/Artifacts/99/99673d210171b7b6d66703a241f146c8 differ diff --git a/Library/Artifacts/99/99856435f47510ca969d437ffa645802 b/Library/Artifacts/99/99856435f47510ca969d437ffa645802 new file mode 100644 index 0000000..c6d1c5b Binary files /dev/null and b/Library/Artifacts/99/99856435f47510ca969d437ffa645802 differ diff --git a/Library/Artifacts/99/998b98a93c8d069ace6504e0520b9c2e b/Library/Artifacts/99/998b98a93c8d069ace6504e0520b9c2e new file mode 100644 index 0000000..2e4301d Binary files /dev/null and b/Library/Artifacts/99/998b98a93c8d069ace6504e0520b9c2e differ diff --git a/Library/Artifacts/99/998d96bbab9a251000317aa0acad8a19 b/Library/Artifacts/99/998d96bbab9a251000317aa0acad8a19 new file mode 100644 index 0000000..a7549a1 Binary files /dev/null and b/Library/Artifacts/99/998d96bbab9a251000317aa0acad8a19 differ diff --git a/Library/Artifacts/99/999cacb2f6d0854d22fadc90a50cafd6 b/Library/Artifacts/99/999cacb2f6d0854d22fadc90a50cafd6 new file mode 100644 index 0000000..50551e0 Binary files /dev/null and b/Library/Artifacts/99/999cacb2f6d0854d22fadc90a50cafd6 differ diff --git a/Library/Artifacts/99/999ce8269ece98490c5693fcc637363e b/Library/Artifacts/99/999ce8269ece98490c5693fcc637363e new file mode 100644 index 0000000..116b925 Binary files /dev/null and b/Library/Artifacts/99/999ce8269ece98490c5693fcc637363e differ diff --git a/Library/Artifacts/99/999ebf1ef1bacecc5de69961dfa7e1d7 b/Library/Artifacts/99/999ebf1ef1bacecc5de69961dfa7e1d7 new file mode 100644 index 0000000..4e986e9 Binary files /dev/null and b/Library/Artifacts/99/999ebf1ef1bacecc5de69961dfa7e1d7 differ diff --git a/Library/Artifacts/99/99d9dd8565a5fb504b9b7a6b3b9e76be b/Library/Artifacts/99/99d9dd8565a5fb504b9b7a6b3b9e76be new file mode 100644 index 0000000..7578470 Binary files /dev/null and b/Library/Artifacts/99/99d9dd8565a5fb504b9b7a6b3b9e76be differ diff --git a/Library/Artifacts/99/99f3b19e9491a0f4d84d5ce8090eb80c b/Library/Artifacts/99/99f3b19e9491a0f4d84d5ce8090eb80c new file mode 100644 index 0000000..1c86750 Binary files /dev/null and b/Library/Artifacts/99/99f3b19e9491a0f4d84d5ce8090eb80c differ diff --git a/Library/Artifacts/9a/9a0fd1160781bfec921e3a2b6e9cb5ed b/Library/Artifacts/9a/9a0fd1160781bfec921e3a2b6e9cb5ed new file mode 100644 index 0000000..956420c Binary files /dev/null and b/Library/Artifacts/9a/9a0fd1160781bfec921e3a2b6e9cb5ed differ diff --git a/Library/Artifacts/9a/9a436bfdbdd82948b10fba8e2e8a15aa b/Library/Artifacts/9a/9a436bfdbdd82948b10fba8e2e8a15aa new file mode 100644 index 0000000..0028927 Binary files /dev/null and b/Library/Artifacts/9a/9a436bfdbdd82948b10fba8e2e8a15aa differ diff --git a/Library/Artifacts/9a/9a4c89bec527c5efddaa79e88f912d4c b/Library/Artifacts/9a/9a4c89bec527c5efddaa79e88f912d4c new file mode 100644 index 0000000..1a5fe63 Binary files /dev/null and b/Library/Artifacts/9a/9a4c89bec527c5efddaa79e88f912d4c differ diff --git a/Library/Artifacts/9a/9a504cccf1d6d8013a38d613c4e800ed b/Library/Artifacts/9a/9a504cccf1d6d8013a38d613c4e800ed new file mode 100644 index 0000000..7c27dca Binary files /dev/null and b/Library/Artifacts/9a/9a504cccf1d6d8013a38d613c4e800ed differ diff --git a/Library/Artifacts/9a/9a5af13376a120e6bcc5207a3eadb084 b/Library/Artifacts/9a/9a5af13376a120e6bcc5207a3eadb084 new file mode 100644 index 0000000..1d0154c Binary files /dev/null and b/Library/Artifacts/9a/9a5af13376a120e6bcc5207a3eadb084 differ diff --git a/Library/Artifacts/9a/9a6268b39a3526a17981133f4733db34 b/Library/Artifacts/9a/9a6268b39a3526a17981133f4733db34 new file mode 100644 index 0000000..0966f95 Binary files /dev/null and b/Library/Artifacts/9a/9a6268b39a3526a17981133f4733db34 differ diff --git a/Library/Artifacts/9a/9a79078aa8f3f16d8ae468ceb8214195 b/Library/Artifacts/9a/9a79078aa8f3f16d8ae468ceb8214195 new file mode 100644 index 0000000..09097f8 Binary files /dev/null and b/Library/Artifacts/9a/9a79078aa8f3f16d8ae468ceb8214195 differ diff --git a/Library/Artifacts/9a/9a9132752e269ec2176f9b497c727bb7 b/Library/Artifacts/9a/9a9132752e269ec2176f9b497c727bb7 new file mode 100644 index 0000000..f185405 Binary files /dev/null and b/Library/Artifacts/9a/9a9132752e269ec2176f9b497c727bb7 differ diff --git a/Library/Artifacts/9a/9aa1a430e27f0db8847a8bac8ab62be0 b/Library/Artifacts/9a/9aa1a430e27f0db8847a8bac8ab62be0 new file mode 100644 index 0000000..5389108 Binary files /dev/null and b/Library/Artifacts/9a/9aa1a430e27f0db8847a8bac8ab62be0 differ diff --git a/Library/Artifacts/9a/9aa387597e38aadfa2fbc1059bbc76cb b/Library/Artifacts/9a/9aa387597e38aadfa2fbc1059bbc76cb new file mode 100644 index 0000000..9350cc5 Binary files /dev/null and b/Library/Artifacts/9a/9aa387597e38aadfa2fbc1059bbc76cb differ diff --git a/Library/Artifacts/9a/9aaa432af1266476d6535af0fe430caa b/Library/Artifacts/9a/9aaa432af1266476d6535af0fe430caa new file mode 100644 index 0000000..a47bfe3 Binary files /dev/null and b/Library/Artifacts/9a/9aaa432af1266476d6535af0fe430caa differ diff --git a/Library/Artifacts/9a/9aae50110ed0b7779e40214dfe7c75ac b/Library/Artifacts/9a/9aae50110ed0b7779e40214dfe7c75ac new file mode 100644 index 0000000..89ac5b9 Binary files /dev/null and b/Library/Artifacts/9a/9aae50110ed0b7779e40214dfe7c75ac differ diff --git a/Library/Artifacts/9a/9adf6edfb59f1c4c6d1cabdaea15e277 b/Library/Artifacts/9a/9adf6edfb59f1c4c6d1cabdaea15e277 new file mode 100644 index 0000000..c915cfa Binary files /dev/null and b/Library/Artifacts/9a/9adf6edfb59f1c4c6d1cabdaea15e277 differ diff --git a/Library/Artifacts/9b/9b15754c25a6b54e0884bc5f8fe3ce30 b/Library/Artifacts/9b/9b15754c25a6b54e0884bc5f8fe3ce30 new file mode 100644 index 0000000..7d7fb69 Binary files /dev/null and b/Library/Artifacts/9b/9b15754c25a6b54e0884bc5f8fe3ce30 differ diff --git a/Library/Artifacts/9b/9b40571bce0a00a72c216f10a3d3e265 b/Library/Artifacts/9b/9b40571bce0a00a72c216f10a3d3e265 new file mode 100644 index 0000000..e2e2218 Binary files /dev/null and b/Library/Artifacts/9b/9b40571bce0a00a72c216f10a3d3e265 differ diff --git a/Library/Artifacts/9b/9b5ae20d78c65eaa6877fd01e171e651 b/Library/Artifacts/9b/9b5ae20d78c65eaa6877fd01e171e651 new file mode 100644 index 0000000..9299b3e Binary files /dev/null and b/Library/Artifacts/9b/9b5ae20d78c65eaa6877fd01e171e651 differ diff --git a/Library/Artifacts/9b/9b74a74eab70666a42f553b1f038ed9f b/Library/Artifacts/9b/9b74a74eab70666a42f553b1f038ed9f new file mode 100644 index 0000000..4b1589a Binary files /dev/null and b/Library/Artifacts/9b/9b74a74eab70666a42f553b1f038ed9f differ diff --git a/Library/Artifacts/9b/9b88984bfec5c2e0f1d223dbf40201d8 b/Library/Artifacts/9b/9b88984bfec5c2e0f1d223dbf40201d8 new file mode 100644 index 0000000..3984bd6 Binary files /dev/null and b/Library/Artifacts/9b/9b88984bfec5c2e0f1d223dbf40201d8 differ diff --git a/Library/Artifacts/9b/9b917ac01edef4a22ee2935d5833a182 b/Library/Artifacts/9b/9b917ac01edef4a22ee2935d5833a182 new file mode 100644 index 0000000..15ef664 Binary files /dev/null and b/Library/Artifacts/9b/9b917ac01edef4a22ee2935d5833a182 differ diff --git a/Library/Artifacts/9b/9b9278466fdfb4eadbff81065da9f72e b/Library/Artifacts/9b/9b9278466fdfb4eadbff81065da9f72e new file mode 100644 index 0000000..d7a2915 Binary files /dev/null and b/Library/Artifacts/9b/9b9278466fdfb4eadbff81065da9f72e differ diff --git a/Library/Artifacts/9b/9bb61e4064cce20fff242d8719ec225f b/Library/Artifacts/9b/9bb61e4064cce20fff242d8719ec225f new file mode 100644 index 0000000..9353a9d Binary files /dev/null and b/Library/Artifacts/9b/9bb61e4064cce20fff242d8719ec225f differ diff --git a/Library/Artifacts/9b/9bcb356d3600a7b3562d6689ed12d737 b/Library/Artifacts/9b/9bcb356d3600a7b3562d6689ed12d737 new file mode 100644 index 0000000..b10c2af Binary files /dev/null and b/Library/Artifacts/9b/9bcb356d3600a7b3562d6689ed12d737 differ diff --git a/Library/Artifacts/9c/9c26c54b884eb459275a20ded1ce9f69 b/Library/Artifacts/9c/9c26c54b884eb459275a20ded1ce9f69 new file mode 100644 index 0000000..7000d31 Binary files /dev/null and b/Library/Artifacts/9c/9c26c54b884eb459275a20ded1ce9f69 differ diff --git a/Library/Artifacts/9c/9c6ad9b446e758579f5d50afd4b57bc5 b/Library/Artifacts/9c/9c6ad9b446e758579f5d50afd4b57bc5 new file mode 100644 index 0000000..43a78b7 Binary files /dev/null and b/Library/Artifacts/9c/9c6ad9b446e758579f5d50afd4b57bc5 differ diff --git a/Library/Artifacts/9c/9c794c37f6c8f08959de9ba2b2bf950d b/Library/Artifacts/9c/9c794c37f6c8f08959de9ba2b2bf950d new file mode 100644 index 0000000..6755192 Binary files /dev/null and b/Library/Artifacts/9c/9c794c37f6c8f08959de9ba2b2bf950d differ diff --git a/Library/Artifacts/9c/9c8a1ddf3267745addccd1523b2db5f2 b/Library/Artifacts/9c/9c8a1ddf3267745addccd1523b2db5f2 new file mode 100644 index 0000000..3ea698e Binary files /dev/null and b/Library/Artifacts/9c/9c8a1ddf3267745addccd1523b2db5f2 differ diff --git a/Library/Artifacts/9c/9c9f84d493c412ccd7f753ed29b2e4b9 b/Library/Artifacts/9c/9c9f84d493c412ccd7f753ed29b2e4b9 new file mode 100644 index 0000000..07874f8 Binary files /dev/null and b/Library/Artifacts/9c/9c9f84d493c412ccd7f753ed29b2e4b9 differ diff --git a/Library/Artifacts/9c/9cadcf0c04cee4f58ecd242b1a4766ca b/Library/Artifacts/9c/9cadcf0c04cee4f58ecd242b1a4766ca new file mode 100644 index 0000000..2f3440c Binary files /dev/null and b/Library/Artifacts/9c/9cadcf0c04cee4f58ecd242b1a4766ca differ diff --git a/Library/Artifacts/9c/9cc7e197457d768c66a16785d4fd8f53 b/Library/Artifacts/9c/9cc7e197457d768c66a16785d4fd8f53 new file mode 100644 index 0000000..4aab6e8 Binary files /dev/null and b/Library/Artifacts/9c/9cc7e197457d768c66a16785d4fd8f53 differ diff --git a/Library/Artifacts/9c/9cdf519b541453a19296fc2522df376d b/Library/Artifacts/9c/9cdf519b541453a19296fc2522df376d new file mode 100644 index 0000000..acfdd8e Binary files /dev/null and b/Library/Artifacts/9c/9cdf519b541453a19296fc2522df376d differ diff --git a/Library/Artifacts/9d/9d059f68edbee0ea1a7a90d8585cc229 b/Library/Artifacts/9d/9d059f68edbee0ea1a7a90d8585cc229 new file mode 100644 index 0000000..9ee8691 Binary files /dev/null and b/Library/Artifacts/9d/9d059f68edbee0ea1a7a90d8585cc229 differ diff --git a/Library/Artifacts/9d/9d07e2534b084201372705400ba37749 b/Library/Artifacts/9d/9d07e2534b084201372705400ba37749 new file mode 100644 index 0000000..a0a6d6d Binary files /dev/null and b/Library/Artifacts/9d/9d07e2534b084201372705400ba37749 differ diff --git a/Library/Artifacts/9d/9d1b46feb3352f49c2db544f2b5014b6 b/Library/Artifacts/9d/9d1b46feb3352f49c2db544f2b5014b6 new file mode 100644 index 0000000..289608a Binary files /dev/null and b/Library/Artifacts/9d/9d1b46feb3352f49c2db544f2b5014b6 differ diff --git a/Library/Artifacts/9d/9d42b808e412a4feb70ba52ea476f809 b/Library/Artifacts/9d/9d42b808e412a4feb70ba52ea476f809 new file mode 100644 index 0000000..06e4749 Binary files /dev/null and b/Library/Artifacts/9d/9d42b808e412a4feb70ba52ea476f809 differ diff --git a/Library/Artifacts/9d/9d597a33bcec5544079e1a515c70f911 b/Library/Artifacts/9d/9d597a33bcec5544079e1a515c70f911 new file mode 100644 index 0000000..9e67c72 Binary files /dev/null and b/Library/Artifacts/9d/9d597a33bcec5544079e1a515c70f911 differ diff --git a/Library/Artifacts/9d/9d8dd4d038b5b5a33c526df629e6c1e6 b/Library/Artifacts/9d/9d8dd4d038b5b5a33c526df629e6c1e6 new file mode 100644 index 0000000..d98fc27 Binary files /dev/null and b/Library/Artifacts/9d/9d8dd4d038b5b5a33c526df629e6c1e6 differ diff --git a/Library/Artifacts/9e/9e1555212e6f7f55ce6414d54efaf297 b/Library/Artifacts/9e/9e1555212e6f7f55ce6414d54efaf297 new file mode 100644 index 0000000..4219eab Binary files /dev/null and b/Library/Artifacts/9e/9e1555212e6f7f55ce6414d54efaf297 differ diff --git a/Library/Artifacts/9e/9e36b9703abddc8a3c98885380a832e2 b/Library/Artifacts/9e/9e36b9703abddc8a3c98885380a832e2 new file mode 100644 index 0000000..f76307d Binary files /dev/null and b/Library/Artifacts/9e/9e36b9703abddc8a3c98885380a832e2 differ diff --git a/Library/Artifacts/9e/9e4aa11df9b5b8f3e538993c60d4faca b/Library/Artifacts/9e/9e4aa11df9b5b8f3e538993c60d4faca new file mode 100644 index 0000000..c235599 Binary files /dev/null and b/Library/Artifacts/9e/9e4aa11df9b5b8f3e538993c60d4faca differ diff --git a/Library/Artifacts/9e/9e6f4ef89bf05454d678dc6b097c1e64 b/Library/Artifacts/9e/9e6f4ef89bf05454d678dc6b097c1e64 new file mode 100644 index 0000000..74da897 Binary files /dev/null and b/Library/Artifacts/9e/9e6f4ef89bf05454d678dc6b097c1e64 differ diff --git a/Library/Artifacts/9e/9e816c5420893948125e5fb2456398e5 b/Library/Artifacts/9e/9e816c5420893948125e5fb2456398e5 new file mode 100644 index 0000000..b7c01e7 Binary files /dev/null and b/Library/Artifacts/9e/9e816c5420893948125e5fb2456398e5 differ diff --git a/Library/Artifacts/9e/9eb905cd1a184fb73967e983a8ef43b8 b/Library/Artifacts/9e/9eb905cd1a184fb73967e983a8ef43b8 new file mode 100644 index 0000000..c5fd1b1 Binary files /dev/null and b/Library/Artifacts/9e/9eb905cd1a184fb73967e983a8ef43b8 differ diff --git a/Library/Artifacts/9e/9ed27d138183419472cf3b28643631a8 b/Library/Artifacts/9e/9ed27d138183419472cf3b28643631a8 new file mode 100644 index 0000000..c2ddb10 Binary files /dev/null and b/Library/Artifacts/9e/9ed27d138183419472cf3b28643631a8 differ diff --git a/Library/Artifacts/9f/9f2005e005c799adf5820b97e61a2a50 b/Library/Artifacts/9f/9f2005e005c799adf5820b97e61a2a50 new file mode 100644 index 0000000..cab09da Binary files /dev/null and b/Library/Artifacts/9f/9f2005e005c799adf5820b97e61a2a50 differ diff --git a/Library/Artifacts/9f/9f40ab3a31027ad1d21cbebe0a370483 b/Library/Artifacts/9f/9f40ab3a31027ad1d21cbebe0a370483 new file mode 100644 index 0000000..dfab243 Binary files /dev/null and b/Library/Artifacts/9f/9f40ab3a31027ad1d21cbebe0a370483 differ diff --git a/Library/Artifacts/9f/9f46d01d50fbb4ec7b2367b6fc482cfb b/Library/Artifacts/9f/9f46d01d50fbb4ec7b2367b6fc482cfb new file mode 100644 index 0000000..e905f91 Binary files /dev/null and b/Library/Artifacts/9f/9f46d01d50fbb4ec7b2367b6fc482cfb differ diff --git a/Library/Artifacts/9f/9f6b8e287f4fecd597c9c18ad5c8e2c1 b/Library/Artifacts/9f/9f6b8e287f4fecd597c9c18ad5c8e2c1 new file mode 100644 index 0000000..89bc74f Binary files /dev/null and b/Library/Artifacts/9f/9f6b8e287f4fecd597c9c18ad5c8e2c1 differ diff --git a/Library/Artifacts/9f/9fa527966812f7103f90f05c7271ed15 b/Library/Artifacts/9f/9fa527966812f7103f90f05c7271ed15 new file mode 100644 index 0000000..534495b Binary files /dev/null and b/Library/Artifacts/9f/9fa527966812f7103f90f05c7271ed15 differ diff --git a/Library/Artifacts/9f/9fa55eb221b23c52079f281534651836 b/Library/Artifacts/9f/9fa55eb221b23c52079f281534651836 new file mode 100644 index 0000000..3d30ae9 Binary files /dev/null and b/Library/Artifacts/9f/9fa55eb221b23c52079f281534651836 differ diff --git a/Library/Artifacts/9f/9fa89e0dcc440daf19b38b5ef99f5b4f b/Library/Artifacts/9f/9fa89e0dcc440daf19b38b5ef99f5b4f new file mode 100644 index 0000000..d8229fa Binary files /dev/null and b/Library/Artifacts/9f/9fa89e0dcc440daf19b38b5ef99f5b4f differ diff --git a/Library/Artifacts/9f/9fa942c5d361c79bf8d7b29ca459d804 b/Library/Artifacts/9f/9fa942c5d361c79bf8d7b29ca459d804 new file mode 100644 index 0000000..810977d Binary files /dev/null and b/Library/Artifacts/9f/9fa942c5d361c79bf8d7b29ca459d804 differ diff --git a/Library/Artifacts/9f/9faf840cc2617a119fe6ce8d1ad2d46b b/Library/Artifacts/9f/9faf840cc2617a119fe6ce8d1ad2d46b new file mode 100644 index 0000000..a4e4a9d Binary files /dev/null and b/Library/Artifacts/9f/9faf840cc2617a119fe6ce8d1ad2d46b differ diff --git a/Library/Artifacts/9f/9fb83d738e138b36da0cfded7a6a3130 b/Library/Artifacts/9f/9fb83d738e138b36da0cfded7a6a3130 new file mode 100644 index 0000000..03755ea Binary files /dev/null and b/Library/Artifacts/9f/9fb83d738e138b36da0cfded7a6a3130 differ diff --git a/Library/Artifacts/9f/9ff57d920e413bde0b35a936a8c93bfd b/Library/Artifacts/9f/9ff57d920e413bde0b35a936a8c93bfd new file mode 100644 index 0000000..c1da2f2 Binary files /dev/null and b/Library/Artifacts/9f/9ff57d920e413bde0b35a936a8c93bfd differ diff --git a/Library/Artifacts/9f/9ff70633a5939c2b668b9766c535d22a b/Library/Artifacts/9f/9ff70633a5939c2b668b9766c535d22a new file mode 100644 index 0000000..ac607d2 Binary files /dev/null and b/Library/Artifacts/9f/9ff70633a5939c2b668b9766c535d22a differ diff --git a/Library/Artifacts/a0/a0077c10bc109a2dba945d2ea442f171 b/Library/Artifacts/a0/a0077c10bc109a2dba945d2ea442f171 new file mode 100644 index 0000000..70b1700 Binary files /dev/null and b/Library/Artifacts/a0/a0077c10bc109a2dba945d2ea442f171 differ diff --git a/Library/Artifacts/a0/a0099fe55c00f4d287810663f4c6cf79 b/Library/Artifacts/a0/a0099fe55c00f4d287810663f4c6cf79 new file mode 100644 index 0000000..256aa44 Binary files /dev/null and b/Library/Artifacts/a0/a0099fe55c00f4d287810663f4c6cf79 differ diff --git a/Library/Artifacts/a0/a018c8a5440306f057d7e29ca3d753d9 b/Library/Artifacts/a0/a018c8a5440306f057d7e29ca3d753d9 new file mode 100644 index 0000000..fd9641d Binary files /dev/null and b/Library/Artifacts/a0/a018c8a5440306f057d7e29ca3d753d9 differ diff --git a/Library/Artifacts/a0/a02f0b5efa97c8d746280b58da8ba6c1 b/Library/Artifacts/a0/a02f0b5efa97c8d746280b58da8ba6c1 new file mode 100644 index 0000000..134bb37 Binary files /dev/null and b/Library/Artifacts/a0/a02f0b5efa97c8d746280b58da8ba6c1 differ diff --git a/Library/Artifacts/a0/a055a1e3667d97d0da344d7bd76081aa b/Library/Artifacts/a0/a055a1e3667d97d0da344d7bd76081aa new file mode 100644 index 0000000..d42e38f Binary files /dev/null and b/Library/Artifacts/a0/a055a1e3667d97d0da344d7bd76081aa differ diff --git a/Library/Artifacts/a0/a0781a797a6c710d686bf7b49147fa4a b/Library/Artifacts/a0/a0781a797a6c710d686bf7b49147fa4a new file mode 100644 index 0000000..cb41763 Binary files /dev/null and b/Library/Artifacts/a0/a0781a797a6c710d686bf7b49147fa4a differ diff --git a/Library/Artifacts/a0/a07950e12ecc6a0c13a04571556829c6 b/Library/Artifacts/a0/a07950e12ecc6a0c13a04571556829c6 new file mode 100644 index 0000000..e06ddbf Binary files /dev/null and b/Library/Artifacts/a0/a07950e12ecc6a0c13a04571556829c6 differ diff --git a/Library/Artifacts/a0/a0a97beb484e760694fdf1c8e42ec216 b/Library/Artifacts/a0/a0a97beb484e760694fdf1c8e42ec216 new file mode 100644 index 0000000..e6a42cd Binary files /dev/null and b/Library/Artifacts/a0/a0a97beb484e760694fdf1c8e42ec216 differ diff --git a/Library/Artifacts/a1/a113527438422d3030e6696d964b1ee1 b/Library/Artifacts/a1/a113527438422d3030e6696d964b1ee1 new file mode 100644 index 0000000..e3f71f3 Binary files /dev/null and b/Library/Artifacts/a1/a113527438422d3030e6696d964b1ee1 differ diff --git a/Library/Artifacts/a1/a12c151fee24b6607850a4fd98f98050 b/Library/Artifacts/a1/a12c151fee24b6607850a4fd98f98050 new file mode 100644 index 0000000..e1e89ee Binary files /dev/null and b/Library/Artifacts/a1/a12c151fee24b6607850a4fd98f98050 differ diff --git a/Library/Artifacts/a1/a19a32b433019b1583c6cd92efc2dab2 b/Library/Artifacts/a1/a19a32b433019b1583c6cd92efc2dab2 new file mode 100644 index 0000000..28a4967 Binary files /dev/null and b/Library/Artifacts/a1/a19a32b433019b1583c6cd92efc2dab2 differ diff --git a/Library/Artifacts/a1/a1b2a7dc4f18bfc60bdc07ce8700ba10 b/Library/Artifacts/a1/a1b2a7dc4f18bfc60bdc07ce8700ba10 new file mode 100644 index 0000000..23c8a0d Binary files /dev/null and b/Library/Artifacts/a1/a1b2a7dc4f18bfc60bdc07ce8700ba10 differ diff --git a/Library/Artifacts/a1/a1c87eea3e51c0571f0f18767e6b9736 b/Library/Artifacts/a1/a1c87eea3e51c0571f0f18767e6b9736 new file mode 100644 index 0000000..8062692 Binary files /dev/null and b/Library/Artifacts/a1/a1c87eea3e51c0571f0f18767e6b9736 differ diff --git a/Library/Artifacts/a1/a1c8a076225c0d259e03da7479ac5e47 b/Library/Artifacts/a1/a1c8a076225c0d259e03da7479ac5e47 new file mode 100644 index 0000000..b602643 Binary files /dev/null and b/Library/Artifacts/a1/a1c8a076225c0d259e03da7479ac5e47 differ diff --git a/Library/Artifacts/a1/a1e60da6cc7882e0e0cbdb358b5cde80 b/Library/Artifacts/a1/a1e60da6cc7882e0e0cbdb358b5cde80 new file mode 100644 index 0000000..0b8b11c Binary files /dev/null and b/Library/Artifacts/a1/a1e60da6cc7882e0e0cbdb358b5cde80 differ diff --git a/Library/Artifacts/a2/a2185f6770fd21f1c33b9e3452f470c6 b/Library/Artifacts/a2/a2185f6770fd21f1c33b9e3452f470c6 new file mode 100644 index 0000000..3abba38 Binary files /dev/null and b/Library/Artifacts/a2/a2185f6770fd21f1c33b9e3452f470c6 differ diff --git a/Library/Artifacts/a2/a2301b170de591959b2d6cc1a770e79d b/Library/Artifacts/a2/a2301b170de591959b2d6cc1a770e79d new file mode 100644 index 0000000..a118f3b Binary files /dev/null and b/Library/Artifacts/a2/a2301b170de591959b2d6cc1a770e79d differ diff --git a/Library/Artifacts/a2/a2402a306140423aabc5048a8cc6c7de b/Library/Artifacts/a2/a2402a306140423aabc5048a8cc6c7de new file mode 100644 index 0000000..cd0d981 Binary files /dev/null and b/Library/Artifacts/a2/a2402a306140423aabc5048a8cc6c7de differ diff --git a/Library/Artifacts/a2/a258ab5267b4143faaaa00b74916affb b/Library/Artifacts/a2/a258ab5267b4143faaaa00b74916affb new file mode 100644 index 0000000..c35ad62 Binary files /dev/null and b/Library/Artifacts/a2/a258ab5267b4143faaaa00b74916affb differ diff --git a/Library/Artifacts/a2/a29c3ded937be327039df19e44969b95 b/Library/Artifacts/a2/a29c3ded937be327039df19e44969b95 new file mode 100644 index 0000000..cdee2e0 Binary files /dev/null and b/Library/Artifacts/a2/a29c3ded937be327039df19e44969b95 differ diff --git a/Library/Artifacts/a2/a2ba6a6d0d01cbd902d43795377f90ab b/Library/Artifacts/a2/a2ba6a6d0d01cbd902d43795377f90ab new file mode 100644 index 0000000..6a50cd3 Binary files /dev/null and b/Library/Artifacts/a2/a2ba6a6d0d01cbd902d43795377f90ab differ diff --git a/Library/Artifacts/a2/a2f840ec86a24b960dcdca38ed60a2c9 b/Library/Artifacts/a2/a2f840ec86a24b960dcdca38ed60a2c9 new file mode 100644 index 0000000..e7eb86e Binary files /dev/null and b/Library/Artifacts/a2/a2f840ec86a24b960dcdca38ed60a2c9 differ diff --git a/Library/Artifacts/a3/a3034b9f8aaad43c36a9b4147d427345 b/Library/Artifacts/a3/a3034b9f8aaad43c36a9b4147d427345 new file mode 100644 index 0000000..b2edf61 Binary files /dev/null and b/Library/Artifacts/a3/a3034b9f8aaad43c36a9b4147d427345 differ diff --git a/Library/Artifacts/a3/a34aa05f59ce47d7ae587e06ef6ea633 b/Library/Artifacts/a3/a34aa05f59ce47d7ae587e06ef6ea633 new file mode 100644 index 0000000..cb1ec9d Binary files /dev/null and b/Library/Artifacts/a3/a34aa05f59ce47d7ae587e06ef6ea633 differ diff --git a/Library/Artifacts/a3/a36217047463915fb846a27f2d5d606f b/Library/Artifacts/a3/a36217047463915fb846a27f2d5d606f new file mode 100644 index 0000000..66d2441 Binary files /dev/null and b/Library/Artifacts/a3/a36217047463915fb846a27f2d5d606f differ diff --git a/Library/Artifacts/a3/a3bff6864d9185f21742a70d04202529 b/Library/Artifacts/a3/a3bff6864d9185f21742a70d04202529 new file mode 100644 index 0000000..0a587da Binary files /dev/null and b/Library/Artifacts/a3/a3bff6864d9185f21742a70d04202529 differ diff --git a/Library/Artifacts/a4/a435e78b862ed0dff0fd016c2839ef23 b/Library/Artifacts/a4/a435e78b862ed0dff0fd016c2839ef23 new file mode 100644 index 0000000..a7b9bdc Binary files /dev/null and b/Library/Artifacts/a4/a435e78b862ed0dff0fd016c2839ef23 differ diff --git a/Library/Artifacts/a4/a437e668c83a44ade9c330969239b63a b/Library/Artifacts/a4/a437e668c83a44ade9c330969239b63a new file mode 100644 index 0000000..2aa8df0 Binary files /dev/null and b/Library/Artifacts/a4/a437e668c83a44ade9c330969239b63a differ diff --git a/Library/Artifacts/a4/a46901534558ec40a738394c805cb784 b/Library/Artifacts/a4/a46901534558ec40a738394c805cb784 new file mode 100644 index 0000000..2730da5 Binary files /dev/null and b/Library/Artifacts/a4/a46901534558ec40a738394c805cb784 differ diff --git a/Library/Artifacts/a4/a47e112a710d0348598d60dac89e41c3 b/Library/Artifacts/a4/a47e112a710d0348598d60dac89e41c3 new file mode 100644 index 0000000..1248427 Binary files /dev/null and b/Library/Artifacts/a4/a47e112a710d0348598d60dac89e41c3 differ diff --git a/Library/Artifacts/a4/a4b2bfee4978ba3e610cda17ffd5b216 b/Library/Artifacts/a4/a4b2bfee4978ba3e610cda17ffd5b216 new file mode 100644 index 0000000..5e06faf Binary files /dev/null and b/Library/Artifacts/a4/a4b2bfee4978ba3e610cda17ffd5b216 differ diff --git a/Library/Artifacts/a4/a4d8aaaf76850d72cd9a9052a2a8aa84 b/Library/Artifacts/a4/a4d8aaaf76850d72cd9a9052a2a8aa84 new file mode 100644 index 0000000..648610b Binary files /dev/null and b/Library/Artifacts/a4/a4d8aaaf76850d72cd9a9052a2a8aa84 differ diff --git a/Library/Artifacts/a5/a539f7d00c041176e989c2c9c96854eb b/Library/Artifacts/a5/a539f7d00c041176e989c2c9c96854eb new file mode 100644 index 0000000..a429533 Binary files /dev/null and b/Library/Artifacts/a5/a539f7d00c041176e989c2c9c96854eb differ diff --git a/Library/Artifacts/a5/a551736837cab52f2113e75b8b6ca424 b/Library/Artifacts/a5/a551736837cab52f2113e75b8b6ca424 new file mode 100644 index 0000000..b27cb51 Binary files /dev/null and b/Library/Artifacts/a5/a551736837cab52f2113e75b8b6ca424 differ diff --git a/Library/Artifacts/a5/a570844343df9b1fa6eb333cf879d2e2 b/Library/Artifacts/a5/a570844343df9b1fa6eb333cf879d2e2 new file mode 100644 index 0000000..312c4a7 Binary files /dev/null and b/Library/Artifacts/a5/a570844343df9b1fa6eb333cf879d2e2 differ diff --git a/Library/Artifacts/a5/a5ebcc245e8575f4e4cbae8f971ef061 b/Library/Artifacts/a5/a5ebcc245e8575f4e4cbae8f971ef061 new file mode 100644 index 0000000..12d21a8 Binary files /dev/null and b/Library/Artifacts/a5/a5ebcc245e8575f4e4cbae8f971ef061 differ diff --git a/Library/Artifacts/a6/a624f312fd9c9587a097fb0ff1d10e6f b/Library/Artifacts/a6/a624f312fd9c9587a097fb0ff1d10e6f new file mode 100644 index 0000000..e5e1508 Binary files /dev/null and b/Library/Artifacts/a6/a624f312fd9c9587a097fb0ff1d10e6f differ diff --git a/Library/Artifacts/a6/a6484b3c55f334e03b72b411dacec468 b/Library/Artifacts/a6/a6484b3c55f334e03b72b411dacec468 new file mode 100644 index 0000000..243f906 Binary files /dev/null and b/Library/Artifacts/a6/a6484b3c55f334e03b72b411dacec468 differ diff --git a/Library/Artifacts/a6/a6693c477ea42dc56c65d8ba8d6f8890 b/Library/Artifacts/a6/a6693c477ea42dc56c65d8ba8d6f8890 new file mode 100644 index 0000000..771db00 Binary files /dev/null and b/Library/Artifacts/a6/a6693c477ea42dc56c65d8ba8d6f8890 differ diff --git a/Library/Artifacts/a6/a6bb25eda0d01f54961db81215e1431c b/Library/Artifacts/a6/a6bb25eda0d01f54961db81215e1431c new file mode 100644 index 0000000..3d3bc42 Binary files /dev/null and b/Library/Artifacts/a6/a6bb25eda0d01f54961db81215e1431c differ diff --git a/Library/Artifacts/a6/a6dad20eb0fa3696c530a852c9eb67cc b/Library/Artifacts/a6/a6dad20eb0fa3696c530a852c9eb67cc new file mode 100644 index 0000000..abc33e9 Binary files /dev/null and b/Library/Artifacts/a6/a6dad20eb0fa3696c530a852c9eb67cc differ diff --git a/Library/Artifacts/a7/a7106456c6eec96fbd8b1e9d903e603b b/Library/Artifacts/a7/a7106456c6eec96fbd8b1e9d903e603b new file mode 100644 index 0000000..198cc8c Binary files /dev/null and b/Library/Artifacts/a7/a7106456c6eec96fbd8b1e9d903e603b differ diff --git a/Library/Artifacts/a7/a73257752b3bb8d7ce052b37b4fac1d3 b/Library/Artifacts/a7/a73257752b3bb8d7ce052b37b4fac1d3 new file mode 100644 index 0000000..93e3e48 Binary files /dev/null and b/Library/Artifacts/a7/a73257752b3bb8d7ce052b37b4fac1d3 differ diff --git a/Library/Artifacts/a7/a749eec09e6127f26d584b2a0241fab2 b/Library/Artifacts/a7/a749eec09e6127f26d584b2a0241fab2 new file mode 100644 index 0000000..c050b3f Binary files /dev/null and b/Library/Artifacts/a7/a749eec09e6127f26d584b2a0241fab2 differ diff --git a/Library/Artifacts/a7/a768d38be71c4c28d07ef1995cdc08a9 b/Library/Artifacts/a7/a768d38be71c4c28d07ef1995cdc08a9 new file mode 100644 index 0000000..42df4ca Binary files /dev/null and b/Library/Artifacts/a7/a768d38be71c4c28d07ef1995cdc08a9 differ diff --git a/Library/Artifacts/a7/a778242f4dfafd13eb709cd255a9260c b/Library/Artifacts/a7/a778242f4dfafd13eb709cd255a9260c new file mode 100644 index 0000000..99d03c1 Binary files /dev/null and b/Library/Artifacts/a7/a778242f4dfafd13eb709cd255a9260c differ diff --git a/Library/Artifacts/a7/a780b22cbd767c210c74cee6635be932 b/Library/Artifacts/a7/a780b22cbd767c210c74cee6635be932 new file mode 100644 index 0000000..b93c146 Binary files /dev/null and b/Library/Artifacts/a7/a780b22cbd767c210c74cee6635be932 differ diff --git a/Library/Artifacts/a7/a78f8b1f5dd187c4fc3d0458df9f9b7d b/Library/Artifacts/a7/a78f8b1f5dd187c4fc3d0458df9f9b7d new file mode 100644 index 0000000..40c5eda Binary files /dev/null and b/Library/Artifacts/a7/a78f8b1f5dd187c4fc3d0458df9f9b7d differ diff --git a/Library/Artifacts/a7/a7aec1d7b8522911e243e7993a6bfc4a b/Library/Artifacts/a7/a7aec1d7b8522911e243e7993a6bfc4a new file mode 100644 index 0000000..512bae1 Binary files /dev/null and b/Library/Artifacts/a7/a7aec1d7b8522911e243e7993a6bfc4a differ diff --git a/Library/Artifacts/a7/a7d0a81952dbf09f5af0004c51fa7c3c b/Library/Artifacts/a7/a7d0a81952dbf09f5af0004c51fa7c3c new file mode 100644 index 0000000..a14c42a Binary files /dev/null and b/Library/Artifacts/a7/a7d0a81952dbf09f5af0004c51fa7c3c differ diff --git a/Library/Artifacts/a7/a7e880c2287b07bc93c13209e81f3285 b/Library/Artifacts/a7/a7e880c2287b07bc93c13209e81f3285 new file mode 100644 index 0000000..a80d7a3 Binary files /dev/null and b/Library/Artifacts/a7/a7e880c2287b07bc93c13209e81f3285 differ diff --git a/Library/Artifacts/a8/a80f8ddd2df6720f30aa766143a2a089 b/Library/Artifacts/a8/a80f8ddd2df6720f30aa766143a2a089 new file mode 100644 index 0000000..2d284a3 Binary files /dev/null and b/Library/Artifacts/a8/a80f8ddd2df6720f30aa766143a2a089 differ diff --git a/Library/Artifacts/a8/a86d30c59dabe6fa1f216b5cb5e84805 b/Library/Artifacts/a8/a86d30c59dabe6fa1f216b5cb5e84805 new file mode 100644 index 0000000..3269601 Binary files /dev/null and b/Library/Artifacts/a8/a86d30c59dabe6fa1f216b5cb5e84805 differ diff --git a/Library/Artifacts/a8/a893a3962857b8b15d43f3b395e6c2c9 b/Library/Artifacts/a8/a893a3962857b8b15d43f3b395e6c2c9 new file mode 100644 index 0000000..13e2074 Binary files /dev/null and b/Library/Artifacts/a8/a893a3962857b8b15d43f3b395e6c2c9 differ diff --git a/Library/Artifacts/a8/a8da84ec85362511d26c7a9447f8bdd5 b/Library/Artifacts/a8/a8da84ec85362511d26c7a9447f8bdd5 new file mode 100644 index 0000000..85fb23e Binary files /dev/null and b/Library/Artifacts/a8/a8da84ec85362511d26c7a9447f8bdd5 differ diff --git a/Library/Artifacts/a8/a8e479b5d9d4b11cc32be6cbb66ba9cd b/Library/Artifacts/a8/a8e479b5d9d4b11cc32be6cbb66ba9cd new file mode 100644 index 0000000..a3369a5 Binary files /dev/null and b/Library/Artifacts/a8/a8e479b5d9d4b11cc32be6cbb66ba9cd differ diff --git a/Library/Artifacts/a9/a92a51f469905c9c2c4196b7b66c4f44 b/Library/Artifacts/a9/a92a51f469905c9c2c4196b7b66c4f44 new file mode 100644 index 0000000..a2cf5e6 Binary files /dev/null and b/Library/Artifacts/a9/a92a51f469905c9c2c4196b7b66c4f44 differ diff --git a/Library/Artifacts/a9/a94ef071e98010744eb2c549aea834b7 b/Library/Artifacts/a9/a94ef071e98010744eb2c549aea834b7 new file mode 100644 index 0000000..2cf9f27 Binary files /dev/null and b/Library/Artifacts/a9/a94ef071e98010744eb2c549aea834b7 differ diff --git a/Library/Artifacts/a9/a9541a80a35ece7c789d8f43a4912111 b/Library/Artifacts/a9/a9541a80a35ece7c789d8f43a4912111 new file mode 100644 index 0000000..940032c Binary files /dev/null and b/Library/Artifacts/a9/a9541a80a35ece7c789d8f43a4912111 differ diff --git a/Library/Artifacts/a9/a978d5591743e75a62e9e6a42f0a6073 b/Library/Artifacts/a9/a978d5591743e75a62e9e6a42f0a6073 new file mode 100644 index 0000000..c5c6893 Binary files /dev/null and b/Library/Artifacts/a9/a978d5591743e75a62e9e6a42f0a6073 differ diff --git a/Library/Artifacts/a9/a9b49e661606d1eb73129cd1b75fb9df b/Library/Artifacts/a9/a9b49e661606d1eb73129cd1b75fb9df new file mode 100644 index 0000000..d0e6c34 Binary files /dev/null and b/Library/Artifacts/a9/a9b49e661606d1eb73129cd1b75fb9df differ diff --git a/Library/Artifacts/a9/a9ddd12b3b598c56d08b5a3e9933559c b/Library/Artifacts/a9/a9ddd12b3b598c56d08b5a3e9933559c new file mode 100644 index 0000000..3ec16f0 Binary files /dev/null and b/Library/Artifacts/a9/a9ddd12b3b598c56d08b5a3e9933559c differ diff --git a/Library/Artifacts/a9/a9ed5f1976085009ab3b0fba25f1bb02 b/Library/Artifacts/a9/a9ed5f1976085009ab3b0fba25f1bb02 new file mode 100644 index 0000000..12e83f4 Binary files /dev/null and b/Library/Artifacts/a9/a9ed5f1976085009ab3b0fba25f1bb02 differ diff --git a/Library/Artifacts/aa/aa0618fd67864fb7d52fc38a46395201 b/Library/Artifacts/aa/aa0618fd67864fb7d52fc38a46395201 new file mode 100644 index 0000000..cfcc188 Binary files /dev/null and b/Library/Artifacts/aa/aa0618fd67864fb7d52fc38a46395201 differ diff --git a/Library/Artifacts/aa/aa0745dec865c0dfe5882f74e18e93a1 b/Library/Artifacts/aa/aa0745dec865c0dfe5882f74e18e93a1 new file mode 100644 index 0000000..4110979 Binary files /dev/null and b/Library/Artifacts/aa/aa0745dec865c0dfe5882f74e18e93a1 differ diff --git a/Library/Artifacts/aa/aa648354bba1a81903f335aacb48eb40 b/Library/Artifacts/aa/aa648354bba1a81903f335aacb48eb40 new file mode 100644 index 0000000..f8e19c8 Binary files /dev/null and b/Library/Artifacts/aa/aa648354bba1a81903f335aacb48eb40 differ diff --git a/Library/Artifacts/aa/aaa0fe37f5a267e0f1e5ba24d3574380 b/Library/Artifacts/aa/aaa0fe37f5a267e0f1e5ba24d3574380 new file mode 100644 index 0000000..0e13aff Binary files /dev/null and b/Library/Artifacts/aa/aaa0fe37f5a267e0f1e5ba24d3574380 differ diff --git a/Library/Artifacts/aa/aaa7c43309f30565ed99331a78bd0364 b/Library/Artifacts/aa/aaa7c43309f30565ed99331a78bd0364 new file mode 100644 index 0000000..63b3bf8 Binary files /dev/null and b/Library/Artifacts/aa/aaa7c43309f30565ed99331a78bd0364 differ diff --git a/Library/Artifacts/aa/aadcf2e9e8a6626c589d1d764c49f007 b/Library/Artifacts/aa/aadcf2e9e8a6626c589d1d764c49f007 new file mode 100644 index 0000000..1719fd2 Binary files /dev/null and b/Library/Artifacts/aa/aadcf2e9e8a6626c589d1d764c49f007 differ diff --git a/Library/Artifacts/ab/ab18e8d13480cae2edb53bea194806b8 b/Library/Artifacts/ab/ab18e8d13480cae2edb53bea194806b8 new file mode 100644 index 0000000..2434f60 Binary files /dev/null and b/Library/Artifacts/ab/ab18e8d13480cae2edb53bea194806b8 differ diff --git a/Library/Artifacts/ab/ab294fd75c711ee7939100431e153037 b/Library/Artifacts/ab/ab294fd75c711ee7939100431e153037 new file mode 100644 index 0000000..bae2d27 Binary files /dev/null and b/Library/Artifacts/ab/ab294fd75c711ee7939100431e153037 differ diff --git a/Library/Artifacts/ab/ab80a83143e4bae1a89e549dea3f6a2d b/Library/Artifacts/ab/ab80a83143e4bae1a89e549dea3f6a2d new file mode 100644 index 0000000..4505b2d Binary files /dev/null and b/Library/Artifacts/ab/ab80a83143e4bae1a89e549dea3f6a2d differ diff --git a/Library/Artifacts/ab/ab942aaefb6dd45874f094a448d02cfa b/Library/Artifacts/ab/ab942aaefb6dd45874f094a448d02cfa new file mode 100644 index 0000000..d706375 Binary files /dev/null and b/Library/Artifacts/ab/ab942aaefb6dd45874f094a448d02cfa differ diff --git a/Library/Artifacts/ab/ababf08c6e637cee997f6c775893256c b/Library/Artifacts/ab/ababf08c6e637cee997f6c775893256c new file mode 100644 index 0000000..dfd9e2e Binary files /dev/null and b/Library/Artifacts/ab/ababf08c6e637cee997f6c775893256c differ diff --git a/Library/Artifacts/ab/abbd04ccc18b9762e6b686ef91652cb8 b/Library/Artifacts/ab/abbd04ccc18b9762e6b686ef91652cb8 new file mode 100644 index 0000000..ac7da43 Binary files /dev/null and b/Library/Artifacts/ab/abbd04ccc18b9762e6b686ef91652cb8 differ diff --git a/Library/Artifacts/ab/abc2a0a4c5c232579bb41a7dbfb403f7 b/Library/Artifacts/ab/abc2a0a4c5c232579bb41a7dbfb403f7 new file mode 100644 index 0000000..11dfef0 Binary files /dev/null and b/Library/Artifacts/ab/abc2a0a4c5c232579bb41a7dbfb403f7 differ diff --git a/Library/Artifacts/ab/abe919f86bf48bd72e826a53638d9355 b/Library/Artifacts/ab/abe919f86bf48bd72e826a53638d9355 new file mode 100644 index 0000000..7db6703 Binary files /dev/null and b/Library/Artifacts/ab/abe919f86bf48bd72e826a53638d9355 differ diff --git a/Library/Artifacts/ab/abf1c012ec71f544a78e5cf0144d9d2b b/Library/Artifacts/ab/abf1c012ec71f544a78e5cf0144d9d2b new file mode 100644 index 0000000..5ad8c1f Binary files /dev/null and b/Library/Artifacts/ab/abf1c012ec71f544a78e5cf0144d9d2b differ diff --git a/Library/Artifacts/ab/abfe0ca15be088b9dcfe631fe450304c b/Library/Artifacts/ab/abfe0ca15be088b9dcfe631fe450304c new file mode 100644 index 0000000..8d1da09 Binary files /dev/null and b/Library/Artifacts/ab/abfe0ca15be088b9dcfe631fe450304c differ diff --git a/Library/Artifacts/ac/ac4b4852760c7416bfed1c4226e3148d b/Library/Artifacts/ac/ac4b4852760c7416bfed1c4226e3148d new file mode 100644 index 0000000..25581c3 Binary files /dev/null and b/Library/Artifacts/ac/ac4b4852760c7416bfed1c4226e3148d differ diff --git a/Library/Artifacts/ac/ac52a9f35aa3a2115a1d805cfabc5061 b/Library/Artifacts/ac/ac52a9f35aa3a2115a1d805cfabc5061 new file mode 100644 index 0000000..73f4e85 Binary files /dev/null and b/Library/Artifacts/ac/ac52a9f35aa3a2115a1d805cfabc5061 differ diff --git a/Library/Artifacts/ac/ac79717bc4f891ad5da2a313668f0011 b/Library/Artifacts/ac/ac79717bc4f891ad5da2a313668f0011 new file mode 100644 index 0000000..f92ba09 Binary files /dev/null and b/Library/Artifacts/ac/ac79717bc4f891ad5da2a313668f0011 differ diff --git a/Library/Artifacts/ac/ac8fde61a88ef637b1a7434585fc86e8 b/Library/Artifacts/ac/ac8fde61a88ef637b1a7434585fc86e8 new file mode 100644 index 0000000..4b35164 Binary files /dev/null and b/Library/Artifacts/ac/ac8fde61a88ef637b1a7434585fc86e8 differ diff --git a/Library/Artifacts/ac/ac9b45a00c814cef693d72d914c9f106 b/Library/Artifacts/ac/ac9b45a00c814cef693d72d914c9f106 new file mode 100644 index 0000000..c62793a Binary files /dev/null and b/Library/Artifacts/ac/ac9b45a00c814cef693d72d914c9f106 differ diff --git a/Library/Artifacts/ac/acbcbaeba0b139746148892f66ef4c08 b/Library/Artifacts/ac/acbcbaeba0b139746148892f66ef4c08 new file mode 100644 index 0000000..c5e13e8 Binary files /dev/null and b/Library/Artifacts/ac/acbcbaeba0b139746148892f66ef4c08 differ diff --git a/Library/Artifacts/ac/acd3c70bdcdacfb2b006815ae838a76c b/Library/Artifacts/ac/acd3c70bdcdacfb2b006815ae838a76c new file mode 100644 index 0000000..ab4f881 Binary files /dev/null and b/Library/Artifacts/ac/acd3c70bdcdacfb2b006815ae838a76c differ diff --git a/Library/Artifacts/ac/ace4776818e7ae36021d8b6250aaeff6 b/Library/Artifacts/ac/ace4776818e7ae36021d8b6250aaeff6 new file mode 100644 index 0000000..c798106 Binary files /dev/null and b/Library/Artifacts/ac/ace4776818e7ae36021d8b6250aaeff6 differ diff --git a/Library/Artifacts/ac/acf22894a5a41de1f228dcf760f005f7 b/Library/Artifacts/ac/acf22894a5a41de1f228dcf760f005f7 new file mode 100644 index 0000000..a3a1534 Binary files /dev/null and b/Library/Artifacts/ac/acf22894a5a41de1f228dcf760f005f7 differ diff --git a/Library/Artifacts/ad/ad08f6b9a14f8393514eb57140fcf970 b/Library/Artifacts/ad/ad08f6b9a14f8393514eb57140fcf970 new file mode 100644 index 0000000..07280a4 Binary files /dev/null and b/Library/Artifacts/ad/ad08f6b9a14f8393514eb57140fcf970 differ diff --git a/Library/Artifacts/ad/ad40db2c3f251c401a10af5340bb1eee b/Library/Artifacts/ad/ad40db2c3f251c401a10af5340bb1eee new file mode 100644 index 0000000..30d7a97 Binary files /dev/null and b/Library/Artifacts/ad/ad40db2c3f251c401a10af5340bb1eee differ diff --git a/Library/Artifacts/ad/ad7b652c02e934a7a2bb8cc4d731c3ad b/Library/Artifacts/ad/ad7b652c02e934a7a2bb8cc4d731c3ad new file mode 100644 index 0000000..7296aa3 Binary files /dev/null and b/Library/Artifacts/ad/ad7b652c02e934a7a2bb8cc4d731c3ad differ diff --git a/Library/Artifacts/ad/adb3723bfce2196470b436e93c9b8fec b/Library/Artifacts/ad/adb3723bfce2196470b436e93c9b8fec new file mode 100644 index 0000000..112c9e2 Binary files /dev/null and b/Library/Artifacts/ad/adb3723bfce2196470b436e93c9b8fec differ diff --git a/Library/Artifacts/ad/adb5ce6fa65dcdb971a0e0335b9a450d b/Library/Artifacts/ad/adb5ce6fa65dcdb971a0e0335b9a450d new file mode 100644 index 0000000..fbb7ea5 Binary files /dev/null and b/Library/Artifacts/ad/adb5ce6fa65dcdb971a0e0335b9a450d differ diff --git a/Library/Artifacts/ad/add30c8ca66173b1775ea9c5d508113b b/Library/Artifacts/ad/add30c8ca66173b1775ea9c5d508113b new file mode 100644 index 0000000..12ee7d1 Binary files /dev/null and b/Library/Artifacts/ad/add30c8ca66173b1775ea9c5d508113b differ diff --git a/Library/Artifacts/ad/add3807966f73f68a10333821d37c06b b/Library/Artifacts/ad/add3807966f73f68a10333821d37c06b new file mode 100644 index 0000000..6db2149 Binary files /dev/null and b/Library/Artifacts/ad/add3807966f73f68a10333821d37c06b differ diff --git a/Library/Artifacts/ad/adfa8994699d7ad7f7f1f1cdf5f9e9c1 b/Library/Artifacts/ad/adfa8994699d7ad7f7f1f1cdf5f9e9c1 new file mode 100644 index 0000000..e8ebdb1 Binary files /dev/null and b/Library/Artifacts/ad/adfa8994699d7ad7f7f1f1cdf5f9e9c1 differ diff --git a/Library/Artifacts/ae/ae276db857a225ce52d790debc6a6f60 b/Library/Artifacts/ae/ae276db857a225ce52d790debc6a6f60 new file mode 100644 index 0000000..5879b95 Binary files /dev/null and b/Library/Artifacts/ae/ae276db857a225ce52d790debc6a6f60 differ diff --git a/Library/Artifacts/ae/ae33e47ca2c8247394a6fbf66585009f b/Library/Artifacts/ae/ae33e47ca2c8247394a6fbf66585009f new file mode 100644 index 0000000..46e2da4 Binary files /dev/null and b/Library/Artifacts/ae/ae33e47ca2c8247394a6fbf66585009f differ diff --git a/Library/Artifacts/ae/ae46497995e33102e1170315d90a89d3 b/Library/Artifacts/ae/ae46497995e33102e1170315d90a89d3 new file mode 100644 index 0000000..3963191 Binary files /dev/null and b/Library/Artifacts/ae/ae46497995e33102e1170315d90a89d3 differ diff --git a/Library/Artifacts/ae/ae487081439b62470e22aa1f78247bbc b/Library/Artifacts/ae/ae487081439b62470e22aa1f78247bbc new file mode 100644 index 0000000..a9546c6 Binary files /dev/null and b/Library/Artifacts/ae/ae487081439b62470e22aa1f78247bbc differ diff --git a/Library/Artifacts/ae/ae78cf18849eea22d15aa82cfdb15a6e b/Library/Artifacts/ae/ae78cf18849eea22d15aa82cfdb15a6e new file mode 100644 index 0000000..d196957 Binary files /dev/null and b/Library/Artifacts/ae/ae78cf18849eea22d15aa82cfdb15a6e differ diff --git a/Library/Artifacts/ae/ae8e986763ff32da713200f96e65b3e2 b/Library/Artifacts/ae/ae8e986763ff32da713200f96e65b3e2 new file mode 100644 index 0000000..991b17f Binary files /dev/null and b/Library/Artifacts/ae/ae8e986763ff32da713200f96e65b3e2 differ diff --git a/Library/Artifacts/ae/aeb91768b199e92a890f684a0c55d03e b/Library/Artifacts/ae/aeb91768b199e92a890f684a0c55d03e new file mode 100644 index 0000000..ee9ccf4 Binary files /dev/null and b/Library/Artifacts/ae/aeb91768b199e92a890f684a0c55d03e differ diff --git a/Library/Artifacts/ae/aedddd6b15053243d86c8f1bea650455 b/Library/Artifacts/ae/aedddd6b15053243d86c8f1bea650455 new file mode 100644 index 0000000..06a79b5 Binary files /dev/null and b/Library/Artifacts/ae/aedddd6b15053243d86c8f1bea650455 differ diff --git a/Library/Artifacts/ae/aef186d0eac48f95ca27891402a4439b b/Library/Artifacts/ae/aef186d0eac48f95ca27891402a4439b new file mode 100644 index 0000000..e3dffd4 Binary files /dev/null and b/Library/Artifacts/ae/aef186d0eac48f95ca27891402a4439b differ diff --git a/Library/Artifacts/ae/aef8896b5b1092cc0bed65a2e7e312fd b/Library/Artifacts/ae/aef8896b5b1092cc0bed65a2e7e312fd new file mode 100644 index 0000000..19940aa Binary files /dev/null and b/Library/Artifacts/ae/aef8896b5b1092cc0bed65a2e7e312fd differ diff --git a/Library/Artifacts/af/af3c1979c67d77bc1dfc07d522d7ac99 b/Library/Artifacts/af/af3c1979c67d77bc1dfc07d522d7ac99 new file mode 100644 index 0000000..1d715b8 Binary files /dev/null and b/Library/Artifacts/af/af3c1979c67d77bc1dfc07d522d7ac99 differ diff --git a/Library/Artifacts/af/af51ca43d82c51811c7d2c238eb6c420 b/Library/Artifacts/af/af51ca43d82c51811c7d2c238eb6c420 new file mode 100644 index 0000000..f367d9a Binary files /dev/null and b/Library/Artifacts/af/af51ca43d82c51811c7d2c238eb6c420 differ diff --git a/Library/Artifacts/af/aff3b139a925af237c865ec03aac7e74 b/Library/Artifacts/af/aff3b139a925af237c865ec03aac7e74 new file mode 100644 index 0000000..ab3c9ba Binary files /dev/null and b/Library/Artifacts/af/aff3b139a925af237c865ec03aac7e74 differ diff --git a/Library/Artifacts/b0/b000752a0730f7da66b5b63c76cfca38 b/Library/Artifacts/b0/b000752a0730f7da66b5b63c76cfca38 new file mode 100644 index 0000000..8f0ed82 Binary files /dev/null and b/Library/Artifacts/b0/b000752a0730f7da66b5b63c76cfca38 differ diff --git a/Library/Artifacts/b0/b0038fc48a3a5b52e4a6b69558c82a5e b/Library/Artifacts/b0/b0038fc48a3a5b52e4a6b69558c82a5e new file mode 100644 index 0000000..33c7ed3 Binary files /dev/null and b/Library/Artifacts/b0/b0038fc48a3a5b52e4a6b69558c82a5e differ diff --git a/Library/Artifacts/b0/b00650faa595390c3852d03e2e22dab3 b/Library/Artifacts/b0/b00650faa595390c3852d03e2e22dab3 new file mode 100644 index 0000000..160dffb Binary files /dev/null and b/Library/Artifacts/b0/b00650faa595390c3852d03e2e22dab3 differ diff --git a/Library/Artifacts/b0/b02ce5ff568be8464358df009941df74 b/Library/Artifacts/b0/b02ce5ff568be8464358df009941df74 new file mode 100644 index 0000000..f303d60 Binary files /dev/null and b/Library/Artifacts/b0/b02ce5ff568be8464358df009941df74 differ diff --git a/Library/Artifacts/b0/b065bc88370d8d898c3ec7f8d3b621c7 b/Library/Artifacts/b0/b065bc88370d8d898c3ec7f8d3b621c7 new file mode 100644 index 0000000..d48e6a1 Binary files /dev/null and b/Library/Artifacts/b0/b065bc88370d8d898c3ec7f8d3b621c7 differ diff --git a/Library/Artifacts/b0/b066bea681dce09ce59f12c41a68c8be b/Library/Artifacts/b0/b066bea681dce09ce59f12c41a68c8be new file mode 100644 index 0000000..10950b9 Binary files /dev/null and b/Library/Artifacts/b0/b066bea681dce09ce59f12c41a68c8be differ diff --git a/Library/Artifacts/b0/b0cc002bb45b625f74494627e65c224c b/Library/Artifacts/b0/b0cc002bb45b625f74494627e65c224c new file mode 100644 index 0000000..749f579 Binary files /dev/null and b/Library/Artifacts/b0/b0cc002bb45b625f74494627e65c224c differ diff --git a/Library/Artifacts/b0/b0cdecd68ec70fbb149dab208811b68f b/Library/Artifacts/b0/b0cdecd68ec70fbb149dab208811b68f new file mode 100644 index 0000000..8af919e Binary files /dev/null and b/Library/Artifacts/b0/b0cdecd68ec70fbb149dab208811b68f differ diff --git a/Library/Artifacts/b1/b118034cbf87f051b0c033bb5f048e99 b/Library/Artifacts/b1/b118034cbf87f051b0c033bb5f048e99 new file mode 100644 index 0000000..dfdf35a Binary files /dev/null and b/Library/Artifacts/b1/b118034cbf87f051b0c033bb5f048e99 differ diff --git a/Library/Artifacts/b1/b1204a220e6713d7d0c90242cfe67037 b/Library/Artifacts/b1/b1204a220e6713d7d0c90242cfe67037 new file mode 100644 index 0000000..7ab3492 Binary files /dev/null and b/Library/Artifacts/b1/b1204a220e6713d7d0c90242cfe67037 differ diff --git a/Library/Artifacts/b1/b14a398c949e4b90693d2e4776367bf5 b/Library/Artifacts/b1/b14a398c949e4b90693d2e4776367bf5 new file mode 100644 index 0000000..16a57f7 Binary files /dev/null and b/Library/Artifacts/b1/b14a398c949e4b90693d2e4776367bf5 differ diff --git a/Library/Artifacts/b1/b157f7d8c31079078c1f2e49a591fff9 b/Library/Artifacts/b1/b157f7d8c31079078c1f2e49a591fff9 new file mode 100644 index 0000000..08c1058 Binary files /dev/null and b/Library/Artifacts/b1/b157f7d8c31079078c1f2e49a591fff9 differ diff --git a/Library/Artifacts/b1/b18d983a3440c1616eba054225f1a2e9 b/Library/Artifacts/b1/b18d983a3440c1616eba054225f1a2e9 new file mode 100644 index 0000000..2a055a5 Binary files /dev/null and b/Library/Artifacts/b1/b18d983a3440c1616eba054225f1a2e9 differ diff --git a/Library/Artifacts/b1/b198cb61db44199ae5b050790d046bb2 b/Library/Artifacts/b1/b198cb61db44199ae5b050790d046bb2 new file mode 100644 index 0000000..7ca51d0 Binary files /dev/null and b/Library/Artifacts/b1/b198cb61db44199ae5b050790d046bb2 differ diff --git a/Library/Artifacts/b1/b19f2473bc9e8445cf5aa4e0a061d98e b/Library/Artifacts/b1/b19f2473bc9e8445cf5aa4e0a061d98e new file mode 100644 index 0000000..60d0045 Binary files /dev/null and b/Library/Artifacts/b1/b19f2473bc9e8445cf5aa4e0a061d98e differ diff --git a/Library/Artifacts/b1/b1b4f437b738d380629b20b9cb9285ba b/Library/Artifacts/b1/b1b4f437b738d380629b20b9cb9285ba new file mode 100644 index 0000000..1a10413 Binary files /dev/null and b/Library/Artifacts/b1/b1b4f437b738d380629b20b9cb9285ba differ diff --git a/Library/Artifacts/b1/b1c779b50e215e2db625f9e240f62b49 b/Library/Artifacts/b1/b1c779b50e215e2db625f9e240f62b49 new file mode 100644 index 0000000..fc75f50 Binary files /dev/null and b/Library/Artifacts/b1/b1c779b50e215e2db625f9e240f62b49 differ diff --git a/Library/Artifacts/b1/b1e6b2f45bf61c0fc4bc899d5a5c1c7e b/Library/Artifacts/b1/b1e6b2f45bf61c0fc4bc899d5a5c1c7e new file mode 100644 index 0000000..7579eb5 Binary files /dev/null and b/Library/Artifacts/b1/b1e6b2f45bf61c0fc4bc899d5a5c1c7e differ diff --git a/Library/Artifacts/b1/b1ecb5d1384f23d30ac131c62adc5962 b/Library/Artifacts/b1/b1ecb5d1384f23d30ac131c62adc5962 new file mode 100644 index 0000000..dc88c7b Binary files /dev/null and b/Library/Artifacts/b1/b1ecb5d1384f23d30ac131c62adc5962 differ diff --git a/Library/Artifacts/b1/b1f6e19805123ccd8f2869700321530a b/Library/Artifacts/b1/b1f6e19805123ccd8f2869700321530a new file mode 100644 index 0000000..228c10c Binary files /dev/null and b/Library/Artifacts/b1/b1f6e19805123ccd8f2869700321530a differ diff --git a/Library/Artifacts/b2/b2031abc0d8ff3a6e59788984739e6fe b/Library/Artifacts/b2/b2031abc0d8ff3a6e59788984739e6fe new file mode 100644 index 0000000..d7c7003 Binary files /dev/null and b/Library/Artifacts/b2/b2031abc0d8ff3a6e59788984739e6fe differ diff --git a/Library/Artifacts/b2/b21181584f84d9f7a9f3ff86ed30a006 b/Library/Artifacts/b2/b21181584f84d9f7a9f3ff86ed30a006 new file mode 100644 index 0000000..9073feb Binary files /dev/null and b/Library/Artifacts/b2/b21181584f84d9f7a9f3ff86ed30a006 differ diff --git a/Library/Artifacts/b2/b21d0bbae73b9aa9cdb6713eb0262f73 b/Library/Artifacts/b2/b21d0bbae73b9aa9cdb6713eb0262f73 new file mode 100644 index 0000000..53c7582 Binary files /dev/null and b/Library/Artifacts/b2/b21d0bbae73b9aa9cdb6713eb0262f73 differ diff --git a/Library/Artifacts/b2/b27a6221aebdb50149d4942752ed7a5f b/Library/Artifacts/b2/b27a6221aebdb50149d4942752ed7a5f new file mode 100644 index 0000000..5576877 Binary files /dev/null and b/Library/Artifacts/b2/b27a6221aebdb50149d4942752ed7a5f differ diff --git a/Library/Artifacts/b2/b29b13034905689cb149ac44c4812600 b/Library/Artifacts/b2/b29b13034905689cb149ac44c4812600 new file mode 100644 index 0000000..d576682 Binary files /dev/null and b/Library/Artifacts/b2/b29b13034905689cb149ac44c4812600 differ diff --git a/Library/Artifacts/b2/b2b5812e6672a28d28a072897d9b5b34 b/Library/Artifacts/b2/b2b5812e6672a28d28a072897d9b5b34 new file mode 100644 index 0000000..e6f033a Binary files /dev/null and b/Library/Artifacts/b2/b2b5812e6672a28d28a072897d9b5b34 differ diff --git a/Library/Artifacts/b2/b2d912e49753886dd6aef97d9eb929a6 b/Library/Artifacts/b2/b2d912e49753886dd6aef97d9eb929a6 new file mode 100644 index 0000000..9a01f60 Binary files /dev/null and b/Library/Artifacts/b2/b2d912e49753886dd6aef97d9eb929a6 differ diff --git a/Library/Artifacts/b2/b2fd42703b6fe319e0707fdece903ee6 b/Library/Artifacts/b2/b2fd42703b6fe319e0707fdece903ee6 new file mode 100644 index 0000000..f82a365 Binary files /dev/null and b/Library/Artifacts/b2/b2fd42703b6fe319e0707fdece903ee6 differ diff --git a/Library/Artifacts/b3/b30c0f8a155e9177d838c31281ca51a1 b/Library/Artifacts/b3/b30c0f8a155e9177d838c31281ca51a1 new file mode 100644 index 0000000..3613a1b Binary files /dev/null and b/Library/Artifacts/b3/b30c0f8a155e9177d838c31281ca51a1 differ diff --git a/Library/Artifacts/b3/b32864c86dcf54696aa9b33a2b820acc b/Library/Artifacts/b3/b32864c86dcf54696aa9b33a2b820acc new file mode 100644 index 0000000..2c29053 Binary files /dev/null and b/Library/Artifacts/b3/b32864c86dcf54696aa9b33a2b820acc differ diff --git a/Library/Artifacts/b3/b35208820a366fcc4db4e62321d78fbb b/Library/Artifacts/b3/b35208820a366fcc4db4e62321d78fbb new file mode 100644 index 0000000..6408c5b Binary files /dev/null and b/Library/Artifacts/b3/b35208820a366fcc4db4e62321d78fbb differ diff --git a/Library/Artifacts/b3/b39603cd01269dc18c2353dbac0be15c b/Library/Artifacts/b3/b39603cd01269dc18c2353dbac0be15c new file mode 100644 index 0000000..0bb5a2e Binary files /dev/null and b/Library/Artifacts/b3/b39603cd01269dc18c2353dbac0be15c differ diff --git a/Library/Artifacts/b4/b44205e59b2343dc5196d3d838206024 b/Library/Artifacts/b4/b44205e59b2343dc5196d3d838206024 new file mode 100644 index 0000000..e28b59f Binary files /dev/null and b/Library/Artifacts/b4/b44205e59b2343dc5196d3d838206024 differ diff --git a/Library/Artifacts/b4/b4812f8baeca4e90a9b5a9f0471f9a2f b/Library/Artifacts/b4/b4812f8baeca4e90a9b5a9f0471f9a2f new file mode 100644 index 0000000..e785484 Binary files /dev/null and b/Library/Artifacts/b4/b4812f8baeca4e90a9b5a9f0471f9a2f differ diff --git a/Library/Artifacts/b4/b49f91ee71e0bcda07e59a3d5f2d793a b/Library/Artifacts/b4/b49f91ee71e0bcda07e59a3d5f2d793a new file mode 100644 index 0000000..e36c34c Binary files /dev/null and b/Library/Artifacts/b4/b49f91ee71e0bcda07e59a3d5f2d793a differ diff --git a/Library/Artifacts/b4/b4baa0fd3fd4e3c6f375b1911de6ae4c b/Library/Artifacts/b4/b4baa0fd3fd4e3c6f375b1911de6ae4c new file mode 100644 index 0000000..cfc66fb Binary files /dev/null and b/Library/Artifacts/b4/b4baa0fd3fd4e3c6f375b1911de6ae4c differ diff --git a/Library/Artifacts/b4/b4ce24151bc02ab741548bcf7a19ffb9 b/Library/Artifacts/b4/b4ce24151bc02ab741548bcf7a19ffb9 new file mode 100644 index 0000000..a45069f Binary files /dev/null and b/Library/Artifacts/b4/b4ce24151bc02ab741548bcf7a19ffb9 differ diff --git a/Library/Artifacts/b4/b4dc3edd32fc0084602ceff2638e6ce5 b/Library/Artifacts/b4/b4dc3edd32fc0084602ceff2638e6ce5 new file mode 100644 index 0000000..3f050eb Binary files /dev/null and b/Library/Artifacts/b4/b4dc3edd32fc0084602ceff2638e6ce5 differ diff --git a/Library/Artifacts/b5/b50aec842cbb261b25708317eb6b2c51 b/Library/Artifacts/b5/b50aec842cbb261b25708317eb6b2c51 new file mode 100644 index 0000000..dc9e84b Binary files /dev/null and b/Library/Artifacts/b5/b50aec842cbb261b25708317eb6b2c51 differ diff --git a/Library/Artifacts/b5/b50edad82e6142ee2e677a7061dee1c5 b/Library/Artifacts/b5/b50edad82e6142ee2e677a7061dee1c5 new file mode 100644 index 0000000..5a7279f Binary files /dev/null and b/Library/Artifacts/b5/b50edad82e6142ee2e677a7061dee1c5 differ diff --git a/Library/Artifacts/b5/b50f6bd83c4e08d0b00b4f025c8aa071 b/Library/Artifacts/b5/b50f6bd83c4e08d0b00b4f025c8aa071 new file mode 100644 index 0000000..d019794 Binary files /dev/null and b/Library/Artifacts/b5/b50f6bd83c4e08d0b00b4f025c8aa071 differ diff --git a/Library/Artifacts/b5/b513a6cc60b854992fa1d4fb08c38cbc b/Library/Artifacts/b5/b513a6cc60b854992fa1d4fb08c38cbc new file mode 100644 index 0000000..93fa6d5 Binary files /dev/null and b/Library/Artifacts/b5/b513a6cc60b854992fa1d4fb08c38cbc differ diff --git a/Library/Artifacts/b5/b57ae798168e53c1b251d7223d796bd8 b/Library/Artifacts/b5/b57ae798168e53c1b251d7223d796bd8 new file mode 100644 index 0000000..3ad1fd0 Binary files /dev/null and b/Library/Artifacts/b5/b57ae798168e53c1b251d7223d796bd8 differ diff --git a/Library/Artifacts/b5/b5aea786bb76391743e873238de4fa84 b/Library/Artifacts/b5/b5aea786bb76391743e873238de4fa84 new file mode 100644 index 0000000..04738ee Binary files /dev/null and b/Library/Artifacts/b5/b5aea786bb76391743e873238de4fa84 differ diff --git a/Library/Artifacts/b5/b5c80e9565e81935352475ec5659a626 b/Library/Artifacts/b5/b5c80e9565e81935352475ec5659a626 new file mode 100644 index 0000000..aa7c4c8 Binary files /dev/null and b/Library/Artifacts/b5/b5c80e9565e81935352475ec5659a626 differ diff --git a/Library/Artifacts/b5/b5daa0851ed1d359309c15a5909da054 b/Library/Artifacts/b5/b5daa0851ed1d359309c15a5909da054 new file mode 100644 index 0000000..0c7837e Binary files /dev/null and b/Library/Artifacts/b5/b5daa0851ed1d359309c15a5909da054 differ diff --git a/Library/Artifacts/b5/b5f45a015cf3bc04ad4ae03a8ab6bbfa b/Library/Artifacts/b5/b5f45a015cf3bc04ad4ae03a8ab6bbfa new file mode 100644 index 0000000..83be593 Binary files /dev/null and b/Library/Artifacts/b5/b5f45a015cf3bc04ad4ae03a8ab6bbfa differ diff --git a/Library/Artifacts/b5/b5f5cae3cb51d8535b3e7b46bc24a93c b/Library/Artifacts/b5/b5f5cae3cb51d8535b3e7b46bc24a93c new file mode 100644 index 0000000..5a201ac Binary files /dev/null and b/Library/Artifacts/b5/b5f5cae3cb51d8535b3e7b46bc24a93c differ diff --git a/Library/Artifacts/b6/b60163eb8749ea66fb723ebecc2f90af b/Library/Artifacts/b6/b60163eb8749ea66fb723ebecc2f90af new file mode 100644 index 0000000..704c9a4 Binary files /dev/null and b/Library/Artifacts/b6/b60163eb8749ea66fb723ebecc2f90af differ diff --git a/Library/Artifacts/b6/b60358380b906601cfd794b5ce2fb696 b/Library/Artifacts/b6/b60358380b906601cfd794b5ce2fb696 new file mode 100644 index 0000000..6f92e17 Binary files /dev/null and b/Library/Artifacts/b6/b60358380b906601cfd794b5ce2fb696 differ diff --git a/Library/Artifacts/b6/b617988ca6c27e98e9f6733de72928ff b/Library/Artifacts/b6/b617988ca6c27e98e9f6733de72928ff new file mode 100644 index 0000000..e6dd60d Binary files /dev/null and b/Library/Artifacts/b6/b617988ca6c27e98e9f6733de72928ff differ diff --git a/Library/Artifacts/b6/b619a20f01995006d94497000dae3218 b/Library/Artifacts/b6/b619a20f01995006d94497000dae3218 new file mode 100644 index 0000000..b402b8e Binary files /dev/null and b/Library/Artifacts/b6/b619a20f01995006d94497000dae3218 differ diff --git a/Library/Artifacts/b6/b64355a705f90d22027b4714d8926ec4 b/Library/Artifacts/b6/b64355a705f90d22027b4714d8926ec4 new file mode 100644 index 0000000..161a6aa Binary files /dev/null and b/Library/Artifacts/b6/b64355a705f90d22027b4714d8926ec4 differ diff --git a/Library/Artifacts/b6/b64f3db3d9b1d7ddd5658aa451877203 b/Library/Artifacts/b6/b64f3db3d9b1d7ddd5658aa451877203 new file mode 100644 index 0000000..f3169df Binary files /dev/null and b/Library/Artifacts/b6/b64f3db3d9b1d7ddd5658aa451877203 differ diff --git a/Library/Artifacts/b6/b658cd57d6fa4bbd858daf0d3f976b7c b/Library/Artifacts/b6/b658cd57d6fa4bbd858daf0d3f976b7c new file mode 100644 index 0000000..45bdfdf Binary files /dev/null and b/Library/Artifacts/b6/b658cd57d6fa4bbd858daf0d3f976b7c differ diff --git a/Library/Artifacts/b7/b702f8d632dda55c48dba1a9b0f08ed9 b/Library/Artifacts/b7/b702f8d632dda55c48dba1a9b0f08ed9 new file mode 100644 index 0000000..28d53a0 Binary files /dev/null and b/Library/Artifacts/b7/b702f8d632dda55c48dba1a9b0f08ed9 differ diff --git a/Library/Artifacts/b7/b7210acfd378feeeab249ea941adb324 b/Library/Artifacts/b7/b7210acfd378feeeab249ea941adb324 new file mode 100644 index 0000000..9ce81cb Binary files /dev/null and b/Library/Artifacts/b7/b7210acfd378feeeab249ea941adb324 differ diff --git a/Library/Artifacts/b7/b76c61eca7f32038341fe35a5fa27fef b/Library/Artifacts/b7/b76c61eca7f32038341fe35a5fa27fef new file mode 100644 index 0000000..fc7cb6f Binary files /dev/null and b/Library/Artifacts/b7/b76c61eca7f32038341fe35a5fa27fef differ diff --git a/Library/Artifacts/b7/b77b681d48a7b91b06c64e4c330e03ea b/Library/Artifacts/b7/b77b681d48a7b91b06c64e4c330e03ea new file mode 100644 index 0000000..d85b5fd Binary files /dev/null and b/Library/Artifacts/b7/b77b681d48a7b91b06c64e4c330e03ea differ diff --git a/Library/Artifacts/b7/b784bf35f4a1caae66d53b39857595dd b/Library/Artifacts/b7/b784bf35f4a1caae66d53b39857595dd new file mode 100644 index 0000000..cc40512 Binary files /dev/null and b/Library/Artifacts/b7/b784bf35f4a1caae66d53b39857595dd differ diff --git a/Library/Artifacts/b7/b7b757b8715b8afb7e64e727fbd89396 b/Library/Artifacts/b7/b7b757b8715b8afb7e64e727fbd89396 new file mode 100644 index 0000000..30cde50 Binary files /dev/null and b/Library/Artifacts/b7/b7b757b8715b8afb7e64e727fbd89396 differ diff --git a/Library/Artifacts/b7/b7be73ab80deeaa6190bb0c5269a39fb b/Library/Artifacts/b7/b7be73ab80deeaa6190bb0c5269a39fb new file mode 100644 index 0000000..43174c3 Binary files /dev/null and b/Library/Artifacts/b7/b7be73ab80deeaa6190bb0c5269a39fb differ diff --git a/Library/Artifacts/b7/b7c1235e76d578a7de744099117731fb b/Library/Artifacts/b7/b7c1235e76d578a7de744099117731fb new file mode 100644 index 0000000..1150edc Binary files /dev/null and b/Library/Artifacts/b7/b7c1235e76d578a7de744099117731fb differ diff --git a/Library/Artifacts/b7/b7e018eceab4447ac30115d1f3293196 b/Library/Artifacts/b7/b7e018eceab4447ac30115d1f3293196 new file mode 100644 index 0000000..d5f28b8 Binary files /dev/null and b/Library/Artifacts/b7/b7e018eceab4447ac30115d1f3293196 differ diff --git a/Library/Artifacts/b7/b7ef996778eaa1d32f0b6a803b73f3b6 b/Library/Artifacts/b7/b7ef996778eaa1d32f0b6a803b73f3b6 new file mode 100644 index 0000000..3993dd4 Binary files /dev/null and b/Library/Artifacts/b7/b7ef996778eaa1d32f0b6a803b73f3b6 differ diff --git a/Library/Artifacts/b8/b873b636d20a991abe9d81e2654233fa b/Library/Artifacts/b8/b873b636d20a991abe9d81e2654233fa new file mode 100644 index 0000000..0629955 Binary files /dev/null and b/Library/Artifacts/b8/b873b636d20a991abe9d81e2654233fa differ diff --git a/Library/Artifacts/b8/b87c35fb7754e8b16c6ea1ee69ba4efb b/Library/Artifacts/b8/b87c35fb7754e8b16c6ea1ee69ba4efb new file mode 100644 index 0000000..b27f203 Binary files /dev/null and b/Library/Artifacts/b8/b87c35fb7754e8b16c6ea1ee69ba4efb differ diff --git a/Library/Artifacts/b8/b8d72e252519498a289113d61325a811 b/Library/Artifacts/b8/b8d72e252519498a289113d61325a811 new file mode 100644 index 0000000..bee012f Binary files /dev/null and b/Library/Artifacts/b8/b8d72e252519498a289113d61325a811 differ diff --git a/Library/Artifacts/b8/b8e3f1a265f702ca8bd0a08bda6ae53f b/Library/Artifacts/b8/b8e3f1a265f702ca8bd0a08bda6ae53f new file mode 100644 index 0000000..d746942 Binary files /dev/null and b/Library/Artifacts/b8/b8e3f1a265f702ca8bd0a08bda6ae53f differ diff --git a/Library/Artifacts/b9/b94a53f120e358606fea70c66161af18 b/Library/Artifacts/b9/b94a53f120e358606fea70c66161af18 new file mode 100644 index 0000000..11094f1 Binary files /dev/null and b/Library/Artifacts/b9/b94a53f120e358606fea70c66161af18 differ diff --git a/Library/Artifacts/b9/b9740fb6ca04efcdc5ee4629c24730ea b/Library/Artifacts/b9/b9740fb6ca04efcdc5ee4629c24730ea new file mode 100644 index 0000000..7b41e61 Binary files /dev/null and b/Library/Artifacts/b9/b9740fb6ca04efcdc5ee4629c24730ea differ diff --git a/Library/Artifacts/b9/b97cfb75a0ed82ae47bcbcb111808fd7 b/Library/Artifacts/b9/b97cfb75a0ed82ae47bcbcb111808fd7 new file mode 100644 index 0000000..0457a2e Binary files /dev/null and b/Library/Artifacts/b9/b97cfb75a0ed82ae47bcbcb111808fd7 differ diff --git a/Library/Artifacts/b9/b97f97288e41045b6b6ffd7a7728049f b/Library/Artifacts/b9/b97f97288e41045b6b6ffd7a7728049f new file mode 100644 index 0000000..41656fe Binary files /dev/null and b/Library/Artifacts/b9/b97f97288e41045b6b6ffd7a7728049f differ diff --git a/Library/Artifacts/b9/b9830cffeebf4ce3b4e7c0eb5cc3b9b8 b/Library/Artifacts/b9/b9830cffeebf4ce3b4e7c0eb5cc3b9b8 new file mode 100644 index 0000000..ce5cec5 Binary files /dev/null and b/Library/Artifacts/b9/b9830cffeebf4ce3b4e7c0eb5cc3b9b8 differ diff --git a/Library/Artifacts/b9/b992d7a7d66f4bf5d6c2873b2196cb54 b/Library/Artifacts/b9/b992d7a7d66f4bf5d6c2873b2196cb54 new file mode 100644 index 0000000..dbf0b32 Binary files /dev/null and b/Library/Artifacts/b9/b992d7a7d66f4bf5d6c2873b2196cb54 differ diff --git a/Library/Artifacts/b9/b9d0b7909e060c9106c183f36b833dc8 b/Library/Artifacts/b9/b9d0b7909e060c9106c183f36b833dc8 new file mode 100644 index 0000000..390b760 Binary files /dev/null and b/Library/Artifacts/b9/b9d0b7909e060c9106c183f36b833dc8 differ diff --git a/Library/Artifacts/b9/b9d3cec0b461dac4a74651d70f2d23f1 b/Library/Artifacts/b9/b9d3cec0b461dac4a74651d70f2d23f1 new file mode 100644 index 0000000..fd46962 Binary files /dev/null and b/Library/Artifacts/b9/b9d3cec0b461dac4a74651d70f2d23f1 differ diff --git a/Library/Artifacts/b9/b9e2a65711502b6457f3c00ed06aabbe b/Library/Artifacts/b9/b9e2a65711502b6457f3c00ed06aabbe new file mode 100644 index 0000000..dbd6459 Binary files /dev/null and b/Library/Artifacts/b9/b9e2a65711502b6457f3c00ed06aabbe differ diff --git a/Library/Artifacts/b9/b9e6c5971996349a6455d878e7f873c7 b/Library/Artifacts/b9/b9e6c5971996349a6455d878e7f873c7 new file mode 100644 index 0000000..fac3162 Binary files /dev/null and b/Library/Artifacts/b9/b9e6c5971996349a6455d878e7f873c7 differ diff --git a/Library/Artifacts/ba/ba2b917ae25d790f0bf23cad7edff96f b/Library/Artifacts/ba/ba2b917ae25d790f0bf23cad7edff96f new file mode 100644 index 0000000..2cc0ae0 Binary files /dev/null and b/Library/Artifacts/ba/ba2b917ae25d790f0bf23cad7edff96f differ diff --git a/Library/Artifacts/ba/ba30f26eab5dd099042b51834bbe6463 b/Library/Artifacts/ba/ba30f26eab5dd099042b51834bbe6463 new file mode 100644 index 0000000..df8dd6c Binary files /dev/null and b/Library/Artifacts/ba/ba30f26eab5dd099042b51834bbe6463 differ diff --git a/Library/Artifacts/ba/ba3ac1e991ab77565a0715f4762eb5e1 b/Library/Artifacts/ba/ba3ac1e991ab77565a0715f4762eb5e1 new file mode 100644 index 0000000..62f7eb7 Binary files /dev/null and b/Library/Artifacts/ba/ba3ac1e991ab77565a0715f4762eb5e1 differ diff --git a/Library/Artifacts/ba/ba5c58f30fc30875987e71cea796c569 b/Library/Artifacts/ba/ba5c58f30fc30875987e71cea796c569 new file mode 100644 index 0000000..637615a Binary files /dev/null and b/Library/Artifacts/ba/ba5c58f30fc30875987e71cea796c569 differ diff --git a/Library/Artifacts/ba/ba71c9a5012d78bb03bae62ca2af237d b/Library/Artifacts/ba/ba71c9a5012d78bb03bae62ca2af237d new file mode 100644 index 0000000..d79f617 Binary files /dev/null and b/Library/Artifacts/ba/ba71c9a5012d78bb03bae62ca2af237d differ diff --git a/Library/Artifacts/ba/ba79cf27ae2e4c51f9344929cbc79bec b/Library/Artifacts/ba/ba79cf27ae2e4c51f9344929cbc79bec new file mode 100644 index 0000000..e81fdd0 Binary files /dev/null and b/Library/Artifacts/ba/ba79cf27ae2e4c51f9344929cbc79bec differ diff --git a/Library/Artifacts/ba/ba90df166c0aa36e40e23c3536fe694f b/Library/Artifacts/ba/ba90df166c0aa36e40e23c3536fe694f new file mode 100644 index 0000000..1e444f5 Binary files /dev/null and b/Library/Artifacts/ba/ba90df166c0aa36e40e23c3536fe694f differ diff --git a/Library/Artifacts/ba/bab57c00aa966ee8600754615b045a54 b/Library/Artifacts/ba/bab57c00aa966ee8600754615b045a54 new file mode 100644 index 0000000..8e06717 Binary files /dev/null and b/Library/Artifacts/ba/bab57c00aa966ee8600754615b045a54 differ diff --git a/Library/Artifacts/ba/bac66ceeaf5d2d55c41449e1ccf45c30 b/Library/Artifacts/ba/bac66ceeaf5d2d55c41449e1ccf45c30 new file mode 100644 index 0000000..cb4677b Binary files /dev/null and b/Library/Artifacts/ba/bac66ceeaf5d2d55c41449e1ccf45c30 differ diff --git a/Library/Artifacts/ba/bae3cb5842bf842d0f4579fa40344827 b/Library/Artifacts/ba/bae3cb5842bf842d0f4579fa40344827 new file mode 100644 index 0000000..45f3fad Binary files /dev/null and b/Library/Artifacts/ba/bae3cb5842bf842d0f4579fa40344827 differ diff --git a/Library/Artifacts/ba/baf115857df28750d06a8f8280216625 b/Library/Artifacts/ba/baf115857df28750d06a8f8280216625 new file mode 100644 index 0000000..0673a1c Binary files /dev/null and b/Library/Artifacts/ba/baf115857df28750d06a8f8280216625 differ diff --git a/Library/Artifacts/ba/bafa173692edac7cb4919d56ffb7b751 b/Library/Artifacts/ba/bafa173692edac7cb4919d56ffb7b751 new file mode 100644 index 0000000..752c4e0 Binary files /dev/null and b/Library/Artifacts/ba/bafa173692edac7cb4919d56ffb7b751 differ diff --git a/Library/Artifacts/bb/bb2e7c0fdc2f4e3f52da73e2e9cc8bd2 b/Library/Artifacts/bb/bb2e7c0fdc2f4e3f52da73e2e9cc8bd2 new file mode 100644 index 0000000..8d59f4a Binary files /dev/null and b/Library/Artifacts/bb/bb2e7c0fdc2f4e3f52da73e2e9cc8bd2 differ diff --git a/Library/Artifacts/bb/bba41d567f5057feeaa3951258085d2d b/Library/Artifacts/bb/bba41d567f5057feeaa3951258085d2d new file mode 100644 index 0000000..4836bef Binary files /dev/null and b/Library/Artifacts/bb/bba41d567f5057feeaa3951258085d2d differ diff --git a/Library/Artifacts/bb/bbb09439151619722d133f2bbc8ed40d b/Library/Artifacts/bb/bbb09439151619722d133f2bbc8ed40d new file mode 100644 index 0000000..729d1de Binary files /dev/null and b/Library/Artifacts/bb/bbb09439151619722d133f2bbc8ed40d differ diff --git a/Library/Artifacts/bb/bbbeddda9c33d274346ede32ab0e024b b/Library/Artifacts/bb/bbbeddda9c33d274346ede32ab0e024b new file mode 100644 index 0000000..a34acaa Binary files /dev/null and b/Library/Artifacts/bb/bbbeddda9c33d274346ede32ab0e024b differ diff --git a/Library/Artifacts/bb/bbcf5e379e0bb8d2e2e078929f3c9552 b/Library/Artifacts/bb/bbcf5e379e0bb8d2e2e078929f3c9552 new file mode 100644 index 0000000..243107a Binary files /dev/null and b/Library/Artifacts/bb/bbcf5e379e0bb8d2e2e078929f3c9552 differ diff --git a/Library/Artifacts/bb/bbe43240070315c9197ee15d42999fe6 b/Library/Artifacts/bb/bbe43240070315c9197ee15d42999fe6 new file mode 100644 index 0000000..4d96d5f Binary files /dev/null and b/Library/Artifacts/bb/bbe43240070315c9197ee15d42999fe6 differ diff --git a/Library/Artifacts/bc/bc2dbab801d47a29fae28ca48ecdaf96 b/Library/Artifacts/bc/bc2dbab801d47a29fae28ca48ecdaf96 new file mode 100644 index 0000000..6031e4f Binary files /dev/null and b/Library/Artifacts/bc/bc2dbab801d47a29fae28ca48ecdaf96 differ diff --git a/Library/Artifacts/bc/bc33adb91e186106e521b3b6f3134ce4 b/Library/Artifacts/bc/bc33adb91e186106e521b3b6f3134ce4 new file mode 100644 index 0000000..538c189 Binary files /dev/null and b/Library/Artifacts/bc/bc33adb91e186106e521b3b6f3134ce4 differ diff --git a/Library/Artifacts/bc/bc37acfe1efde3b4ec08fa91610ddf1f b/Library/Artifacts/bc/bc37acfe1efde3b4ec08fa91610ddf1f new file mode 100644 index 0000000..c203988 Binary files /dev/null and b/Library/Artifacts/bc/bc37acfe1efde3b4ec08fa91610ddf1f differ diff --git a/Library/Artifacts/bc/bc8c22ed40e7742b3c9076cc521c5124 b/Library/Artifacts/bc/bc8c22ed40e7742b3c9076cc521c5124 new file mode 100644 index 0000000..5b60cca Binary files /dev/null and b/Library/Artifacts/bc/bc8c22ed40e7742b3c9076cc521c5124 differ diff --git a/Library/Artifacts/bc/bca96dbf4d0c2ad4af8b221ed22d86f1 b/Library/Artifacts/bc/bca96dbf4d0c2ad4af8b221ed22d86f1 new file mode 100644 index 0000000..0ab47ea Binary files /dev/null and b/Library/Artifacts/bc/bca96dbf4d0c2ad4af8b221ed22d86f1 differ diff --git a/Library/Artifacts/bc/bcc8ece8a9340551009667fb3770a3b8 b/Library/Artifacts/bc/bcc8ece8a9340551009667fb3770a3b8 new file mode 100644 index 0000000..e21ab34 Binary files /dev/null and b/Library/Artifacts/bc/bcc8ece8a9340551009667fb3770a3b8 differ diff --git a/Library/Artifacts/bd/bd10a2049c48cbc3c270fe1978fb0971 b/Library/Artifacts/bd/bd10a2049c48cbc3c270fe1978fb0971 new file mode 100644 index 0000000..b3e888f Binary files /dev/null and b/Library/Artifacts/bd/bd10a2049c48cbc3c270fe1978fb0971 differ diff --git a/Library/Artifacts/bd/bd2d47745dba1290a985893cc6513d9d b/Library/Artifacts/bd/bd2d47745dba1290a985893cc6513d9d new file mode 100644 index 0000000..9be96ff Binary files /dev/null and b/Library/Artifacts/bd/bd2d47745dba1290a985893cc6513d9d differ diff --git a/Library/Artifacts/bd/bd35816ee594f883f18273f8b0df6119 b/Library/Artifacts/bd/bd35816ee594f883f18273f8b0df6119 new file mode 100644 index 0000000..d69b954 Binary files /dev/null and b/Library/Artifacts/bd/bd35816ee594f883f18273f8b0df6119 differ diff --git a/Library/Artifacts/bd/bda57c882da5d5d89f1bb682c2bdf354 b/Library/Artifacts/bd/bda57c882da5d5d89f1bb682c2bdf354 new file mode 100644 index 0000000..6cf4ea2 Binary files /dev/null and b/Library/Artifacts/bd/bda57c882da5d5d89f1bb682c2bdf354 differ diff --git a/Library/Artifacts/bd/bde49e3705c1dda284efedc43549de74 b/Library/Artifacts/bd/bde49e3705c1dda284efedc43549de74 new file mode 100644 index 0000000..40c9183 Binary files /dev/null and b/Library/Artifacts/bd/bde49e3705c1dda284efedc43549de74 differ diff --git a/Library/Artifacts/be/be407940ca19548595fc3903d23899d7 b/Library/Artifacts/be/be407940ca19548595fc3903d23899d7 new file mode 100644 index 0000000..5397cee Binary files /dev/null and b/Library/Artifacts/be/be407940ca19548595fc3903d23899d7 differ diff --git a/Library/Artifacts/be/be4773665fd016725ce5522efd694f2a b/Library/Artifacts/be/be4773665fd016725ce5522efd694f2a new file mode 100644 index 0000000..d36cc1b Binary files /dev/null and b/Library/Artifacts/be/be4773665fd016725ce5522efd694f2a differ diff --git a/Library/Artifacts/be/be57885946e2ce9f9cded17c3dfadebf b/Library/Artifacts/be/be57885946e2ce9f9cded17c3dfadebf new file mode 100644 index 0000000..49d6f06 Binary files /dev/null and b/Library/Artifacts/be/be57885946e2ce9f9cded17c3dfadebf differ diff --git a/Library/Artifacts/be/be6c50b9c67d1590c2c9ed3fbcd84038 b/Library/Artifacts/be/be6c50b9c67d1590c2c9ed3fbcd84038 new file mode 100644 index 0000000..4f163d4 Binary files /dev/null and b/Library/Artifacts/be/be6c50b9c67d1590c2c9ed3fbcd84038 differ diff --git a/Library/Artifacts/be/beaaa48909364dc123fa701bbaac19fa b/Library/Artifacts/be/beaaa48909364dc123fa701bbaac19fa new file mode 100644 index 0000000..c622861 Binary files /dev/null and b/Library/Artifacts/be/beaaa48909364dc123fa701bbaac19fa differ diff --git a/Library/Artifacts/be/bebe831dc2cec8ae877ee2d80156bc25 b/Library/Artifacts/be/bebe831dc2cec8ae877ee2d80156bc25 new file mode 100644 index 0000000..fa35127 Binary files /dev/null and b/Library/Artifacts/be/bebe831dc2cec8ae877ee2d80156bc25 differ diff --git a/Library/Artifacts/be/bed081822fa469a2e2d4ad74f74264eb b/Library/Artifacts/be/bed081822fa469a2e2d4ad74f74264eb new file mode 100644 index 0000000..fe27e8b Binary files /dev/null and b/Library/Artifacts/be/bed081822fa469a2e2d4ad74f74264eb differ diff --git a/Library/Artifacts/bf/bf04dbec02cf2a242a87a7d02cee3d3d b/Library/Artifacts/bf/bf04dbec02cf2a242a87a7d02cee3d3d new file mode 100644 index 0000000..919fb78 Binary files /dev/null and b/Library/Artifacts/bf/bf04dbec02cf2a242a87a7d02cee3d3d differ diff --git a/Library/Artifacts/bf/bf1cfcade26aac4a0a61ceb45b5c8fc5 b/Library/Artifacts/bf/bf1cfcade26aac4a0a61ceb45b5c8fc5 new file mode 100644 index 0000000..0c56cf8 Binary files /dev/null and b/Library/Artifacts/bf/bf1cfcade26aac4a0a61ceb45b5c8fc5 differ diff --git a/Library/Artifacts/bf/bf26b89ae225379864527592ea6dc3f3 b/Library/Artifacts/bf/bf26b89ae225379864527592ea6dc3f3 new file mode 100644 index 0000000..b52178e Binary files /dev/null and b/Library/Artifacts/bf/bf26b89ae225379864527592ea6dc3f3 differ diff --git a/Library/Artifacts/bf/bf2ecfe9b6117e305884e56d9685441c b/Library/Artifacts/bf/bf2ecfe9b6117e305884e56d9685441c new file mode 100644 index 0000000..2055273 Binary files /dev/null and b/Library/Artifacts/bf/bf2ecfe9b6117e305884e56d9685441c differ diff --git a/Library/Artifacts/bf/bf459fc76eca1a1d0ce496507f3059cc b/Library/Artifacts/bf/bf459fc76eca1a1d0ce496507f3059cc new file mode 100644 index 0000000..b48ca2b Binary files /dev/null and b/Library/Artifacts/bf/bf459fc76eca1a1d0ce496507f3059cc differ diff --git a/Library/Artifacts/bf/bf69336e02a33a83c1064c0a98b31ce3 b/Library/Artifacts/bf/bf69336e02a33a83c1064c0a98b31ce3 new file mode 100644 index 0000000..09c154f Binary files /dev/null and b/Library/Artifacts/bf/bf69336e02a33a83c1064c0a98b31ce3 differ diff --git a/Library/Artifacts/bf/bf993f16c4982b3e9cebd1f7042aa95c b/Library/Artifacts/bf/bf993f16c4982b3e9cebd1f7042aa95c new file mode 100644 index 0000000..fd4981e Binary files /dev/null and b/Library/Artifacts/bf/bf993f16c4982b3e9cebd1f7042aa95c differ diff --git a/Library/Artifacts/bf/bf9bf3e35bae89fdca54c6938e134288 b/Library/Artifacts/bf/bf9bf3e35bae89fdca54c6938e134288 new file mode 100644 index 0000000..a14a5f6 Binary files /dev/null and b/Library/Artifacts/bf/bf9bf3e35bae89fdca54c6938e134288 differ diff --git a/Library/Artifacts/bf/bfe8cb190a2048078e96c3e4185cfd24 b/Library/Artifacts/bf/bfe8cb190a2048078e96c3e4185cfd24 new file mode 100644 index 0000000..e7a06e0 Binary files /dev/null and b/Library/Artifacts/bf/bfe8cb190a2048078e96c3e4185cfd24 differ diff --git a/Library/Artifacts/bf/bff1413434a59e7e41e789f11385b49d b/Library/Artifacts/bf/bff1413434a59e7e41e789f11385b49d new file mode 100644 index 0000000..5f2e6ba Binary files /dev/null and b/Library/Artifacts/bf/bff1413434a59e7e41e789f11385b49d differ diff --git a/Library/Artifacts/bf/bff3cd9629c755f7142298fd184085e9 b/Library/Artifacts/bf/bff3cd9629c755f7142298fd184085e9 new file mode 100644 index 0000000..4fe2ffc Binary files /dev/null and b/Library/Artifacts/bf/bff3cd9629c755f7142298fd184085e9 differ diff --git a/Library/Artifacts/c0/c031d8de4d03cad4a22eaf217cd42427 b/Library/Artifacts/c0/c031d8de4d03cad4a22eaf217cd42427 new file mode 100644 index 0000000..267d4a2 Binary files /dev/null and b/Library/Artifacts/c0/c031d8de4d03cad4a22eaf217cd42427 differ diff --git a/Library/Artifacts/c0/c03c5a55edb8174c8a03b88c99f2b204 b/Library/Artifacts/c0/c03c5a55edb8174c8a03b88c99f2b204 new file mode 100644 index 0000000..6cea4ef Binary files /dev/null and b/Library/Artifacts/c0/c03c5a55edb8174c8a03b88c99f2b204 differ diff --git a/Library/Artifacts/c0/c081acecccbbfd4dbe107d24402ae7bd b/Library/Artifacts/c0/c081acecccbbfd4dbe107d24402ae7bd new file mode 100644 index 0000000..26cb0d5 Binary files /dev/null and b/Library/Artifacts/c0/c081acecccbbfd4dbe107d24402ae7bd differ diff --git a/Library/Artifacts/c0/c0b3d3f40795b356a4cc423ad118dd33 b/Library/Artifacts/c0/c0b3d3f40795b356a4cc423ad118dd33 new file mode 100644 index 0000000..37d151b Binary files /dev/null and b/Library/Artifacts/c0/c0b3d3f40795b356a4cc423ad118dd33 differ diff --git a/Library/Artifacts/c0/c0c25d4d2ade855fd5815b42af5c4a3c b/Library/Artifacts/c0/c0c25d4d2ade855fd5815b42af5c4a3c new file mode 100644 index 0000000..4888b58 Binary files /dev/null and b/Library/Artifacts/c0/c0c25d4d2ade855fd5815b42af5c4a3c differ diff --git a/Library/Artifacts/c0/c0df2334b5e7abadd299329d5f3f31a0 b/Library/Artifacts/c0/c0df2334b5e7abadd299329d5f3f31a0 new file mode 100644 index 0000000..ed7b26f Binary files /dev/null and b/Library/Artifacts/c0/c0df2334b5e7abadd299329d5f3f31a0 differ diff --git a/Library/Artifacts/c0/c0f42fdb214e02319961fafa0055b1b7 b/Library/Artifacts/c0/c0f42fdb214e02319961fafa0055b1b7 new file mode 100644 index 0000000..64b5f0b Binary files /dev/null and b/Library/Artifacts/c0/c0f42fdb214e02319961fafa0055b1b7 differ diff --git a/Library/Artifacts/c1/c118e25b19367fd8b6f64bebd7a74f72 b/Library/Artifacts/c1/c118e25b19367fd8b6f64bebd7a74f72 new file mode 100644 index 0000000..d3d0411 Binary files /dev/null and b/Library/Artifacts/c1/c118e25b19367fd8b6f64bebd7a74f72 differ diff --git a/Library/Artifacts/c1/c14222668e097f4ccaffbae107cbf6f6 b/Library/Artifacts/c1/c14222668e097f4ccaffbae107cbf6f6 new file mode 100644 index 0000000..5507995 Binary files /dev/null and b/Library/Artifacts/c1/c14222668e097f4ccaffbae107cbf6f6 differ diff --git a/Library/Artifacts/c1/c15657398d6fe28fa509ebad943b8aa3 b/Library/Artifacts/c1/c15657398d6fe28fa509ebad943b8aa3 new file mode 100644 index 0000000..4b80f18 Binary files /dev/null and b/Library/Artifacts/c1/c15657398d6fe28fa509ebad943b8aa3 differ diff --git a/Library/Artifacts/c1/c16802bb9f4225db32433c119f8ab966 b/Library/Artifacts/c1/c16802bb9f4225db32433c119f8ab966 new file mode 100644 index 0000000..debb3ff Binary files /dev/null and b/Library/Artifacts/c1/c16802bb9f4225db32433c119f8ab966 differ diff --git a/Library/Artifacts/c1/c19485c0ad4cfa5b0b3ba349ecd43d82 b/Library/Artifacts/c1/c19485c0ad4cfa5b0b3ba349ecd43d82 new file mode 100644 index 0000000..54e0f29 Binary files /dev/null and b/Library/Artifacts/c1/c19485c0ad4cfa5b0b3ba349ecd43d82 differ diff --git a/Library/Artifacts/c1/c1de195072bc3423c6c10b54e6448ba7 b/Library/Artifacts/c1/c1de195072bc3423c6c10b54e6448ba7 new file mode 100644 index 0000000..5b801ce Binary files /dev/null and b/Library/Artifacts/c1/c1de195072bc3423c6c10b54e6448ba7 differ diff --git a/Library/Artifacts/c1/c1ef05cf35f9daf36d964b841e3f9340 b/Library/Artifacts/c1/c1ef05cf35f9daf36d964b841e3f9340 new file mode 100644 index 0000000..722bfe4 Binary files /dev/null and b/Library/Artifacts/c1/c1ef05cf35f9daf36d964b841e3f9340 differ diff --git a/Library/Artifacts/c1/c1f542f310e9618599602b75db07ec9b b/Library/Artifacts/c1/c1f542f310e9618599602b75db07ec9b new file mode 100644 index 0000000..6aec8a2 Binary files /dev/null and b/Library/Artifacts/c1/c1f542f310e9618599602b75db07ec9b differ diff --git a/Library/Artifacts/c2/c20352f8508eae29733641cdf5d1e7f1 b/Library/Artifacts/c2/c20352f8508eae29733641cdf5d1e7f1 new file mode 100644 index 0000000..e30f936 Binary files /dev/null and b/Library/Artifacts/c2/c20352f8508eae29733641cdf5d1e7f1 differ diff --git a/Library/Artifacts/c2/c25d40aa53d75d427be961b299599ac2 b/Library/Artifacts/c2/c25d40aa53d75d427be961b299599ac2 new file mode 100644 index 0000000..5d66413 Binary files /dev/null and b/Library/Artifacts/c2/c25d40aa53d75d427be961b299599ac2 differ diff --git a/Library/Artifacts/c2/c29491df4bbbf05a6b044d171b0aae81 b/Library/Artifacts/c2/c29491df4bbbf05a6b044d171b0aae81 new file mode 100644 index 0000000..9ce00e8 Binary files /dev/null and b/Library/Artifacts/c2/c29491df4bbbf05a6b044d171b0aae81 differ diff --git a/Library/Artifacts/c3/c30ebc14cfc35522e992120a60eed82c b/Library/Artifacts/c3/c30ebc14cfc35522e992120a60eed82c new file mode 100644 index 0000000..2013e7b Binary files /dev/null and b/Library/Artifacts/c3/c30ebc14cfc35522e992120a60eed82c differ diff --git a/Library/Artifacts/c3/c33271bdf962749ffac5a7f9e24a78cd b/Library/Artifacts/c3/c33271bdf962749ffac5a7f9e24a78cd new file mode 100644 index 0000000..9cd0846 Binary files /dev/null and b/Library/Artifacts/c3/c33271bdf962749ffac5a7f9e24a78cd differ diff --git a/Library/Artifacts/c3/c33a20e0748d76914a0cbdde0738424b b/Library/Artifacts/c3/c33a20e0748d76914a0cbdde0738424b new file mode 100644 index 0000000..6f53de8 Binary files /dev/null and b/Library/Artifacts/c3/c33a20e0748d76914a0cbdde0738424b differ diff --git a/Library/Artifacts/c3/c360cf88469ee01552a2f8e4ac2d4c10 b/Library/Artifacts/c3/c360cf88469ee01552a2f8e4ac2d4c10 new file mode 100644 index 0000000..3df2f0f Binary files /dev/null and b/Library/Artifacts/c3/c360cf88469ee01552a2f8e4ac2d4c10 differ diff --git a/Library/Artifacts/c3/c3a080ad23f380015506e3dcbe5c029f b/Library/Artifacts/c3/c3a080ad23f380015506e3dcbe5c029f new file mode 100644 index 0000000..e9eb7b8 Binary files /dev/null and b/Library/Artifacts/c3/c3a080ad23f380015506e3dcbe5c029f differ diff --git a/Library/Artifacts/c3/c3af1140aab68c8ee7f5ea4e852941d4 b/Library/Artifacts/c3/c3af1140aab68c8ee7f5ea4e852941d4 new file mode 100644 index 0000000..66e0922 Binary files /dev/null and b/Library/Artifacts/c3/c3af1140aab68c8ee7f5ea4e852941d4 differ diff --git a/Library/Artifacts/c3/c3d767e25062b4394a9de0217d56dd10 b/Library/Artifacts/c3/c3d767e25062b4394a9de0217d56dd10 new file mode 100644 index 0000000..09911a9 Binary files /dev/null and b/Library/Artifacts/c3/c3d767e25062b4394a9de0217d56dd10 differ diff --git a/Library/Artifacts/c4/c445d040cfe1c1f6c088cad69d4fcd4f b/Library/Artifacts/c4/c445d040cfe1c1f6c088cad69d4fcd4f new file mode 100644 index 0000000..5da5782 Binary files /dev/null and b/Library/Artifacts/c4/c445d040cfe1c1f6c088cad69d4fcd4f differ diff --git a/Library/Artifacts/c4/c48e95fe44747b6b46fbe53bd1498a06 b/Library/Artifacts/c4/c48e95fe44747b6b46fbe53bd1498a06 new file mode 100644 index 0000000..c004683 Binary files /dev/null and b/Library/Artifacts/c4/c48e95fe44747b6b46fbe53bd1498a06 differ diff --git a/Library/Artifacts/c5/c50323248a205e557a1ae728080de6f0 b/Library/Artifacts/c5/c50323248a205e557a1ae728080de6f0 new file mode 100644 index 0000000..f13858e Binary files /dev/null and b/Library/Artifacts/c5/c50323248a205e557a1ae728080de6f0 differ diff --git a/Library/Artifacts/c5/c504d72f55ced5fc0af6d4bcd2af12ba b/Library/Artifacts/c5/c504d72f55ced5fc0af6d4bcd2af12ba new file mode 100644 index 0000000..abeb300 Binary files /dev/null and b/Library/Artifacts/c5/c504d72f55ced5fc0af6d4bcd2af12ba differ diff --git a/Library/Artifacts/c5/c507f6e04500e3d7a9e1d995c14020e9 b/Library/Artifacts/c5/c507f6e04500e3d7a9e1d995c14020e9 new file mode 100644 index 0000000..50bd649 Binary files /dev/null and b/Library/Artifacts/c5/c507f6e04500e3d7a9e1d995c14020e9 differ diff --git a/Library/Artifacts/c5/c53c1369edc45b606967472fd0f17d7d b/Library/Artifacts/c5/c53c1369edc45b606967472fd0f17d7d new file mode 100644 index 0000000..0053aab Binary files /dev/null and b/Library/Artifacts/c5/c53c1369edc45b606967472fd0f17d7d differ diff --git a/Library/Artifacts/c5/c548040f1043f2d282c03b7ed3eb0ffa b/Library/Artifacts/c5/c548040f1043f2d282c03b7ed3eb0ffa new file mode 100644 index 0000000..7d17561 Binary files /dev/null and b/Library/Artifacts/c5/c548040f1043f2d282c03b7ed3eb0ffa differ diff --git a/Library/Artifacts/c5/c54ba9fa04ab823849b08534b80c76cd b/Library/Artifacts/c5/c54ba9fa04ab823849b08534b80c76cd new file mode 100644 index 0000000..a3af62a Binary files /dev/null and b/Library/Artifacts/c5/c54ba9fa04ab823849b08534b80c76cd differ diff --git a/Library/Artifacts/c5/c55742c31e4a79c5569d6a8eac2ef1c1 b/Library/Artifacts/c5/c55742c31e4a79c5569d6a8eac2ef1c1 new file mode 100644 index 0000000..6e5d48d Binary files /dev/null and b/Library/Artifacts/c5/c55742c31e4a79c5569d6a8eac2ef1c1 differ diff --git a/Library/Artifacts/c5/c5717e8b57523be6ac8e06f886e449fc b/Library/Artifacts/c5/c5717e8b57523be6ac8e06f886e449fc new file mode 100644 index 0000000..117f976 Binary files /dev/null and b/Library/Artifacts/c5/c5717e8b57523be6ac8e06f886e449fc differ diff --git a/Library/Artifacts/c5/c59a121549956884ae653ca292061bcc b/Library/Artifacts/c5/c59a121549956884ae653ca292061bcc new file mode 100644 index 0000000..db60274 Binary files /dev/null and b/Library/Artifacts/c5/c59a121549956884ae653ca292061bcc differ diff --git a/Library/Artifacts/c5/c5c0a8ddfe92a93198578c0419140148 b/Library/Artifacts/c5/c5c0a8ddfe92a93198578c0419140148 new file mode 100644 index 0000000..2751c5c Binary files /dev/null and b/Library/Artifacts/c5/c5c0a8ddfe92a93198578c0419140148 differ diff --git a/Library/Artifacts/c5/c5cc8ca7ba3a1a2c52c4bcee5e71d0e2 b/Library/Artifacts/c5/c5cc8ca7ba3a1a2c52c4bcee5e71d0e2 new file mode 100644 index 0000000..3e52cc0 Binary files /dev/null and b/Library/Artifacts/c5/c5cc8ca7ba3a1a2c52c4bcee5e71d0e2 differ diff --git a/Library/Artifacts/c5/c5dbfc513673ddfabf602354b2ed7ac8 b/Library/Artifacts/c5/c5dbfc513673ddfabf602354b2ed7ac8 new file mode 100644 index 0000000..5ca2585 Binary files /dev/null and b/Library/Artifacts/c5/c5dbfc513673ddfabf602354b2ed7ac8 differ diff --git a/Library/Artifacts/c5/c5f9267150164ebd7a63a33c8a038f52 b/Library/Artifacts/c5/c5f9267150164ebd7a63a33c8a038f52 new file mode 100644 index 0000000..1849e84 Binary files /dev/null and b/Library/Artifacts/c5/c5f9267150164ebd7a63a33c8a038f52 differ diff --git a/Library/Artifacts/c6/c65a0690295e516c57caa2c21ff1ed09 b/Library/Artifacts/c6/c65a0690295e516c57caa2c21ff1ed09 new file mode 100644 index 0000000..fee73af Binary files /dev/null and b/Library/Artifacts/c6/c65a0690295e516c57caa2c21ff1ed09 differ diff --git a/Library/Artifacts/c6/c65a4453ee4799328a83abb3f218ab63 b/Library/Artifacts/c6/c65a4453ee4799328a83abb3f218ab63 new file mode 100644 index 0000000..542f921 Binary files /dev/null and b/Library/Artifacts/c6/c65a4453ee4799328a83abb3f218ab63 differ diff --git a/Library/Artifacts/c6/c68d228b1129b30f85e3c8b9f65c449c b/Library/Artifacts/c6/c68d228b1129b30f85e3c8b9f65c449c new file mode 100644 index 0000000..226ef0f Binary files /dev/null and b/Library/Artifacts/c6/c68d228b1129b30f85e3c8b9f65c449c differ diff --git a/Library/Artifacts/c7/c735b26edcc2088c8348ea9b555fcb96 b/Library/Artifacts/c7/c735b26edcc2088c8348ea9b555fcb96 new file mode 100644 index 0000000..aa38a3d Binary files /dev/null and b/Library/Artifacts/c7/c735b26edcc2088c8348ea9b555fcb96 differ diff --git a/Library/Artifacts/c7/c744316bb8497bfdee95b88f2e4ba604 b/Library/Artifacts/c7/c744316bb8497bfdee95b88f2e4ba604 new file mode 100644 index 0000000..4bbe4f5 Binary files /dev/null and b/Library/Artifacts/c7/c744316bb8497bfdee95b88f2e4ba604 differ diff --git a/Library/Artifacts/c7/c74ba62d89d54302a8694b2de1b543c0 b/Library/Artifacts/c7/c74ba62d89d54302a8694b2de1b543c0 new file mode 100644 index 0000000..798243d Binary files /dev/null and b/Library/Artifacts/c7/c74ba62d89d54302a8694b2de1b543c0 differ diff --git a/Library/Artifacts/c7/c74f0136c7da11ac543c67b742f201e1 b/Library/Artifacts/c7/c74f0136c7da11ac543c67b742f201e1 new file mode 100644 index 0000000..5eefa62 Binary files /dev/null and b/Library/Artifacts/c7/c74f0136c7da11ac543c67b742f201e1 differ diff --git a/Library/Artifacts/c7/c77a484e2bf54b672d731f5854fdac3e b/Library/Artifacts/c7/c77a484e2bf54b672d731f5854fdac3e new file mode 100644 index 0000000..b3ead2b Binary files /dev/null and b/Library/Artifacts/c7/c77a484e2bf54b672d731f5854fdac3e differ diff --git a/Library/Artifacts/c7/c77dfcbffbdb5d460423b5012b45109f b/Library/Artifacts/c7/c77dfcbffbdb5d460423b5012b45109f new file mode 100644 index 0000000..5009b7e Binary files /dev/null and b/Library/Artifacts/c7/c77dfcbffbdb5d460423b5012b45109f differ diff --git a/Library/Artifacts/c7/c79552802b38010b53176cbd5be25840 b/Library/Artifacts/c7/c79552802b38010b53176cbd5be25840 new file mode 100644 index 0000000..fe97ab9 Binary files /dev/null and b/Library/Artifacts/c7/c79552802b38010b53176cbd5be25840 differ diff --git a/Library/Artifacts/c7/c7a62582a526f5e8a2952bc35c367c0d b/Library/Artifacts/c7/c7a62582a526f5e8a2952bc35c367c0d new file mode 100644 index 0000000..2672066 Binary files /dev/null and b/Library/Artifacts/c7/c7a62582a526f5e8a2952bc35c367c0d differ diff --git a/Library/Artifacts/c7/c7c4af18d8792ce56b9fe9c4bde1ed21 b/Library/Artifacts/c7/c7c4af18d8792ce56b9fe9c4bde1ed21 new file mode 100644 index 0000000..539275c Binary files /dev/null and b/Library/Artifacts/c7/c7c4af18d8792ce56b9fe9c4bde1ed21 differ diff --git a/Library/Artifacts/c7/c7c64cdc3bbe6d08f34e4965208c7a83 b/Library/Artifacts/c7/c7c64cdc3bbe6d08f34e4965208c7a83 new file mode 100644 index 0000000..038a295 Binary files /dev/null and b/Library/Artifacts/c7/c7c64cdc3bbe6d08f34e4965208c7a83 differ diff --git a/Library/Artifacts/c7/c7ed40aff24c224511643d3f7239e144 b/Library/Artifacts/c7/c7ed40aff24c224511643d3f7239e144 new file mode 100644 index 0000000..dba3cb6 Binary files /dev/null and b/Library/Artifacts/c7/c7ed40aff24c224511643d3f7239e144 differ diff --git a/Library/Artifacts/c8/c87f7b5c1f7c48aafab1ab6bf24b109a b/Library/Artifacts/c8/c87f7b5c1f7c48aafab1ab6bf24b109a new file mode 100644 index 0000000..5569e3f Binary files /dev/null and b/Library/Artifacts/c8/c87f7b5c1f7c48aafab1ab6bf24b109a differ diff --git a/Library/Artifacts/c9/c936c312fb6941f04b49531dfb336719 b/Library/Artifacts/c9/c936c312fb6941f04b49531dfb336719 new file mode 100644 index 0000000..43580da Binary files /dev/null and b/Library/Artifacts/c9/c936c312fb6941f04b49531dfb336719 differ diff --git a/Library/Artifacts/c9/c94fee7a09625cbae24b9a457c73d11b b/Library/Artifacts/c9/c94fee7a09625cbae24b9a457c73d11b new file mode 100644 index 0000000..42bc1ad Binary files /dev/null and b/Library/Artifacts/c9/c94fee7a09625cbae24b9a457c73d11b differ diff --git a/Library/Artifacts/c9/c9a8e09dccf555cf1e33aafbc954e738 b/Library/Artifacts/c9/c9a8e09dccf555cf1e33aafbc954e738 new file mode 100644 index 0000000..f72816d Binary files /dev/null and b/Library/Artifacts/c9/c9a8e09dccf555cf1e33aafbc954e738 differ diff --git a/Library/Artifacts/c9/c9adf9714ed48e4232fd019a576f4244 b/Library/Artifacts/c9/c9adf9714ed48e4232fd019a576f4244 new file mode 100644 index 0000000..eeee236 Binary files /dev/null and b/Library/Artifacts/c9/c9adf9714ed48e4232fd019a576f4244 differ diff --git a/Library/Artifacts/c9/c9c676058b9d43b8d2704601c68cf21a b/Library/Artifacts/c9/c9c676058b9d43b8d2704601c68cf21a new file mode 100644 index 0000000..68daecd Binary files /dev/null and b/Library/Artifacts/c9/c9c676058b9d43b8d2704601c68cf21a differ diff --git a/Library/Artifacts/c9/c9d39e9eecf1e307697f0aad50a52477 b/Library/Artifacts/c9/c9d39e9eecf1e307697f0aad50a52477 new file mode 100644 index 0000000..be7e56f Binary files /dev/null and b/Library/Artifacts/c9/c9d39e9eecf1e307697f0aad50a52477 differ diff --git a/Library/Artifacts/c9/c9e5c31f9a40ea4bde986f7a9ae6c448 b/Library/Artifacts/c9/c9e5c31f9a40ea4bde986f7a9ae6c448 new file mode 100644 index 0000000..272c836 Binary files /dev/null and b/Library/Artifacts/c9/c9e5c31f9a40ea4bde986f7a9ae6c448 differ diff --git a/Library/Artifacts/ca/ca39451d8aa9b46a3f9a951ee95d13a3 b/Library/Artifacts/ca/ca39451d8aa9b46a3f9a951ee95d13a3 new file mode 100644 index 0000000..f2bcb70 Binary files /dev/null and b/Library/Artifacts/ca/ca39451d8aa9b46a3f9a951ee95d13a3 differ diff --git a/Library/Artifacts/ca/ca4c127c618c5f061a6cdb51e64937b7 b/Library/Artifacts/ca/ca4c127c618c5f061a6cdb51e64937b7 new file mode 100644 index 0000000..966107e Binary files /dev/null and b/Library/Artifacts/ca/ca4c127c618c5f061a6cdb51e64937b7 differ diff --git a/Library/Artifacts/ca/ca4de5b7044b4279c5dfdf824fcd4218 b/Library/Artifacts/ca/ca4de5b7044b4279c5dfdf824fcd4218 new file mode 100644 index 0000000..7d80c6a Binary files /dev/null and b/Library/Artifacts/ca/ca4de5b7044b4279c5dfdf824fcd4218 differ diff --git a/Library/Artifacts/ca/ca75afee1e72cbd28dbc8e37cc87940e b/Library/Artifacts/ca/ca75afee1e72cbd28dbc8e37cc87940e new file mode 100644 index 0000000..f5f9001 Binary files /dev/null and b/Library/Artifacts/ca/ca75afee1e72cbd28dbc8e37cc87940e differ diff --git a/Library/Artifacts/cb/cb0891bf31f7a01982f629d24e8e8745 b/Library/Artifacts/cb/cb0891bf31f7a01982f629d24e8e8745 new file mode 100644 index 0000000..3aaf256 Binary files /dev/null and b/Library/Artifacts/cb/cb0891bf31f7a01982f629d24e8e8745 differ diff --git a/Library/Artifacts/cb/cb22b7b728b7c05792ec7ac8a5312bf7 b/Library/Artifacts/cb/cb22b7b728b7c05792ec7ac8a5312bf7 new file mode 100644 index 0000000..f4a5783 Binary files /dev/null and b/Library/Artifacts/cb/cb22b7b728b7c05792ec7ac8a5312bf7 differ diff --git a/Library/Artifacts/cb/cb5102b2576052d1c42410232f02f5c3 b/Library/Artifacts/cb/cb5102b2576052d1c42410232f02f5c3 new file mode 100644 index 0000000..e1636f1 Binary files /dev/null and b/Library/Artifacts/cb/cb5102b2576052d1c42410232f02f5c3 differ diff --git a/Library/Artifacts/cb/cb5c299189de6f1ffb2eaa55cfe300bf b/Library/Artifacts/cb/cb5c299189de6f1ffb2eaa55cfe300bf new file mode 100644 index 0000000..2686c90 Binary files /dev/null and b/Library/Artifacts/cb/cb5c299189de6f1ffb2eaa55cfe300bf differ diff --git a/Library/Artifacts/cb/cb86d0fdd5fc298825d6e6275ec9342b b/Library/Artifacts/cb/cb86d0fdd5fc298825d6e6275ec9342b new file mode 100644 index 0000000..efaa050 Binary files /dev/null and b/Library/Artifacts/cb/cb86d0fdd5fc298825d6e6275ec9342b differ diff --git a/Library/Artifacts/cb/cb8738671411e3d3f4ba5b9684f4e71c b/Library/Artifacts/cb/cb8738671411e3d3f4ba5b9684f4e71c new file mode 100644 index 0000000..5ff097e Binary files /dev/null and b/Library/Artifacts/cb/cb8738671411e3d3f4ba5b9684f4e71c differ diff --git a/Library/Artifacts/cb/cb8c48ecb6ff36e31f577f04eb18fe67 b/Library/Artifacts/cb/cb8c48ecb6ff36e31f577f04eb18fe67 new file mode 100644 index 0000000..26804c1 Binary files /dev/null and b/Library/Artifacts/cb/cb8c48ecb6ff36e31f577f04eb18fe67 differ diff --git a/Library/Artifacts/cb/cb8e63a559ac519824d6381344d7b990 b/Library/Artifacts/cb/cb8e63a559ac519824d6381344d7b990 new file mode 100644 index 0000000..aff8b62 Binary files /dev/null and b/Library/Artifacts/cb/cb8e63a559ac519824d6381344d7b990 differ diff --git a/Library/Artifacts/cb/cbae3560326b96c5ef1e7dd3540a7b94 b/Library/Artifacts/cb/cbae3560326b96c5ef1e7dd3540a7b94 new file mode 100644 index 0000000..ff53521 Binary files /dev/null and b/Library/Artifacts/cb/cbae3560326b96c5ef1e7dd3540a7b94 differ diff --git a/Library/Artifacts/cb/cbdce979506be75c0560a4775ee03f06 b/Library/Artifacts/cb/cbdce979506be75c0560a4775ee03f06 new file mode 100644 index 0000000..8be7db0 Binary files /dev/null and b/Library/Artifacts/cb/cbdce979506be75c0560a4775ee03f06 differ diff --git a/Library/Artifacts/cb/cbf4210718cb93148a32b02416e1ef41 b/Library/Artifacts/cb/cbf4210718cb93148a32b02416e1ef41 new file mode 100644 index 0000000..62928c2 Binary files /dev/null and b/Library/Artifacts/cb/cbf4210718cb93148a32b02416e1ef41 differ diff --git a/Library/Artifacts/cc/cc081b838f80038886bbb895e74bd199 b/Library/Artifacts/cc/cc081b838f80038886bbb895e74bd199 new file mode 100644 index 0000000..a7b546a Binary files /dev/null and b/Library/Artifacts/cc/cc081b838f80038886bbb895e74bd199 differ diff --git a/Library/Artifacts/cc/cc0e9b0fe94c00fa99bb362d344235d5 b/Library/Artifacts/cc/cc0e9b0fe94c00fa99bb362d344235d5 new file mode 100644 index 0000000..519163e Binary files /dev/null and b/Library/Artifacts/cc/cc0e9b0fe94c00fa99bb362d344235d5 differ diff --git a/Library/Artifacts/cc/cc49651bf3a1ea7592f9860f2fadb3bc b/Library/Artifacts/cc/cc49651bf3a1ea7592f9860f2fadb3bc new file mode 100644 index 0000000..03f8b16 Binary files /dev/null and b/Library/Artifacts/cc/cc49651bf3a1ea7592f9860f2fadb3bc differ diff --git a/Library/Artifacts/cc/cc5230245f1f2eee073e67d775256021 b/Library/Artifacts/cc/cc5230245f1f2eee073e67d775256021 new file mode 100644 index 0000000..894b3c9 Binary files /dev/null and b/Library/Artifacts/cc/cc5230245f1f2eee073e67d775256021 differ diff --git a/Library/Artifacts/cc/cc560b1ad442059bfc16481b61ddf843 b/Library/Artifacts/cc/cc560b1ad442059bfc16481b61ddf843 new file mode 100644 index 0000000..ebdbdba Binary files /dev/null and b/Library/Artifacts/cc/cc560b1ad442059bfc16481b61ddf843 differ diff --git a/Library/Artifacts/cc/cc59b04ba593bcc0ffc62e92e40b48ee b/Library/Artifacts/cc/cc59b04ba593bcc0ffc62e92e40b48ee new file mode 100644 index 0000000..39269fe Binary files /dev/null and b/Library/Artifacts/cc/cc59b04ba593bcc0ffc62e92e40b48ee differ diff --git a/Library/Artifacts/cc/cc85a7371b00fe9e70bae0d107e8f0b3 b/Library/Artifacts/cc/cc85a7371b00fe9e70bae0d107e8f0b3 new file mode 100644 index 0000000..95988a0 Binary files /dev/null and b/Library/Artifacts/cc/cc85a7371b00fe9e70bae0d107e8f0b3 differ diff --git a/Library/Artifacts/cc/cc9c6f5512871feb2b33672c8edeb875 b/Library/Artifacts/cc/cc9c6f5512871feb2b33672c8edeb875 new file mode 100644 index 0000000..7e4ddcd Binary files /dev/null and b/Library/Artifacts/cc/cc9c6f5512871feb2b33672c8edeb875 differ diff --git a/Library/Artifacts/cc/cca4f293c7cd51176fbd8e8f326c36fe b/Library/Artifacts/cc/cca4f293c7cd51176fbd8e8f326c36fe new file mode 100644 index 0000000..28ea11e Binary files /dev/null and b/Library/Artifacts/cc/cca4f293c7cd51176fbd8e8f326c36fe differ diff --git a/Library/Artifacts/cc/ccd61a952f0a6a90f9744960eb1056c9 b/Library/Artifacts/cc/ccd61a952f0a6a90f9744960eb1056c9 new file mode 100644 index 0000000..2438470 Binary files /dev/null and b/Library/Artifacts/cc/ccd61a952f0a6a90f9744960eb1056c9 differ diff --git a/Library/Artifacts/cc/ccdc5c593e739f91fd90713b99710f73 b/Library/Artifacts/cc/ccdc5c593e739f91fd90713b99710f73 new file mode 100644 index 0000000..6e74f2a Binary files /dev/null and b/Library/Artifacts/cc/ccdc5c593e739f91fd90713b99710f73 differ diff --git a/Library/Artifacts/cd/cd075ce171918afd0074d94778b9fec9 b/Library/Artifacts/cd/cd075ce171918afd0074d94778b9fec9 new file mode 100644 index 0000000..578b99c Binary files /dev/null and b/Library/Artifacts/cd/cd075ce171918afd0074d94778b9fec9 differ diff --git a/Library/Artifacts/cd/cd09abf6fedca002279dd92b45c97508 b/Library/Artifacts/cd/cd09abf6fedca002279dd92b45c97508 new file mode 100644 index 0000000..dba23cb Binary files /dev/null and b/Library/Artifacts/cd/cd09abf6fedca002279dd92b45c97508 differ diff --git a/Library/Artifacts/cd/cd6e60ceef1c37c50a39c1d62da100c4 b/Library/Artifacts/cd/cd6e60ceef1c37c50a39c1d62da100c4 new file mode 100644 index 0000000..b2c2e10 Binary files /dev/null and b/Library/Artifacts/cd/cd6e60ceef1c37c50a39c1d62da100c4 differ diff --git a/Library/Artifacts/cd/cd7286b4eca9cbf5f740d07955a7bdc1 b/Library/Artifacts/cd/cd7286b4eca9cbf5f740d07955a7bdc1 new file mode 100644 index 0000000..939f2fd Binary files /dev/null and b/Library/Artifacts/cd/cd7286b4eca9cbf5f740d07955a7bdc1 differ diff --git a/Library/Artifacts/cd/cd99f957c86d1eff69ab6fe71250ebb2 b/Library/Artifacts/cd/cd99f957c86d1eff69ab6fe71250ebb2 new file mode 100644 index 0000000..ac763ec Binary files /dev/null and b/Library/Artifacts/cd/cd99f957c86d1eff69ab6fe71250ebb2 differ diff --git a/Library/Artifacts/cd/cd9dfc819a3d6233044a3bb9ac8be177 b/Library/Artifacts/cd/cd9dfc819a3d6233044a3bb9ac8be177 new file mode 100644 index 0000000..c538078 Binary files /dev/null and b/Library/Artifacts/cd/cd9dfc819a3d6233044a3bb9ac8be177 differ diff --git a/Library/Artifacts/cd/cda40e14d6b8ea031b673231ede05901 b/Library/Artifacts/cd/cda40e14d6b8ea031b673231ede05901 new file mode 100644 index 0000000..a0041f9 Binary files /dev/null and b/Library/Artifacts/cd/cda40e14d6b8ea031b673231ede05901 differ diff --git a/Library/Artifacts/cd/cdc00e08f105d8b44889372ea5921601 b/Library/Artifacts/cd/cdc00e08f105d8b44889372ea5921601 new file mode 100644 index 0000000..36881c6 Binary files /dev/null and b/Library/Artifacts/cd/cdc00e08f105d8b44889372ea5921601 differ diff --git a/Library/Artifacts/cd/cdd06ca54553a0cbe49f4fb2f15a25d3 b/Library/Artifacts/cd/cdd06ca54553a0cbe49f4fb2f15a25d3 new file mode 100644 index 0000000..d8731b7 Binary files /dev/null and b/Library/Artifacts/cd/cdd06ca54553a0cbe49f4fb2f15a25d3 differ diff --git a/Library/Artifacts/cd/cddffbbe1f72bc80da135c8dec97c022 b/Library/Artifacts/cd/cddffbbe1f72bc80da135c8dec97c022 new file mode 100644 index 0000000..a59628a Binary files /dev/null and b/Library/Artifacts/cd/cddffbbe1f72bc80da135c8dec97c022 differ diff --git a/Library/Artifacts/ce/ce0c911c5ef95b8c22b54fbc9c0b9b23 b/Library/Artifacts/ce/ce0c911c5ef95b8c22b54fbc9c0b9b23 new file mode 100644 index 0000000..346e2e8 Binary files /dev/null and b/Library/Artifacts/ce/ce0c911c5ef95b8c22b54fbc9c0b9b23 differ diff --git a/Library/Artifacts/ce/ce1b591a4616490881b5cc885c4b92db b/Library/Artifacts/ce/ce1b591a4616490881b5cc885c4b92db new file mode 100644 index 0000000..2eb4439 Binary files /dev/null and b/Library/Artifacts/ce/ce1b591a4616490881b5cc885c4b92db differ diff --git a/Library/Artifacts/ce/ce1dd9154e7e68426f31fb7aa781c942 b/Library/Artifacts/ce/ce1dd9154e7e68426f31fb7aa781c942 new file mode 100644 index 0000000..74d654a Binary files /dev/null and b/Library/Artifacts/ce/ce1dd9154e7e68426f31fb7aa781c942 differ diff --git a/Library/Artifacts/ce/ce1fe057d5ddf51c72fa0593cf89c315 b/Library/Artifacts/ce/ce1fe057d5ddf51c72fa0593cf89c315 new file mode 100644 index 0000000..c8f45b7 Binary files /dev/null and b/Library/Artifacts/ce/ce1fe057d5ddf51c72fa0593cf89c315 differ diff --git a/Library/Artifacts/ce/ce402f1cb2f0a5fb2074e901bb6a304c b/Library/Artifacts/ce/ce402f1cb2f0a5fb2074e901bb6a304c new file mode 100644 index 0000000..d488523 Binary files /dev/null and b/Library/Artifacts/ce/ce402f1cb2f0a5fb2074e901bb6a304c differ diff --git a/Library/Artifacts/ce/ce47cf02a9a3d827f3d5d1a0875cbcf5 b/Library/Artifacts/ce/ce47cf02a9a3d827f3d5d1a0875cbcf5 new file mode 100644 index 0000000..a233021 Binary files /dev/null and b/Library/Artifacts/ce/ce47cf02a9a3d827f3d5d1a0875cbcf5 differ diff --git a/Library/Artifacts/ce/ceb94ce8efd883ef1a1de7bb598bc17d b/Library/Artifacts/ce/ceb94ce8efd883ef1a1de7bb598bc17d new file mode 100644 index 0000000..263f40d Binary files /dev/null and b/Library/Artifacts/ce/ceb94ce8efd883ef1a1de7bb598bc17d differ diff --git a/Library/Artifacts/ce/cebe6aec43cd7abcf9fc5c6cc5dcb2c6 b/Library/Artifacts/ce/cebe6aec43cd7abcf9fc5c6cc5dcb2c6 new file mode 100644 index 0000000..ef02aa1 Binary files /dev/null and b/Library/Artifacts/ce/cebe6aec43cd7abcf9fc5c6cc5dcb2c6 differ diff --git a/Library/Artifacts/ce/cedb381654ea98cd653692dcb1b51a3c b/Library/Artifacts/ce/cedb381654ea98cd653692dcb1b51a3c new file mode 100644 index 0000000..ba49064 Binary files /dev/null and b/Library/Artifacts/ce/cedb381654ea98cd653692dcb1b51a3c differ diff --git a/Library/Artifacts/ce/cee435b29135acab27a41c8de2141d93 b/Library/Artifacts/ce/cee435b29135acab27a41c8de2141d93 new file mode 100644 index 0000000..55deb61 Binary files /dev/null and b/Library/Artifacts/ce/cee435b29135acab27a41c8de2141d93 differ diff --git a/Library/Artifacts/cf/cf2a417c9053bba74242c6cb3f60bef7 b/Library/Artifacts/cf/cf2a417c9053bba74242c6cb3f60bef7 new file mode 100644 index 0000000..7056f53 Binary files /dev/null and b/Library/Artifacts/cf/cf2a417c9053bba74242c6cb3f60bef7 differ diff --git a/Library/Artifacts/cf/cf537481c67d46df24076fe5474b63bd b/Library/Artifacts/cf/cf537481c67d46df24076fe5474b63bd new file mode 100644 index 0000000..81a6f41 Binary files /dev/null and b/Library/Artifacts/cf/cf537481c67d46df24076fe5474b63bd differ diff --git a/Library/Artifacts/cf/cf8911caa2fe9c679649da273c047bd2 b/Library/Artifacts/cf/cf8911caa2fe9c679649da273c047bd2 new file mode 100644 index 0000000..2f2101e Binary files /dev/null and b/Library/Artifacts/cf/cf8911caa2fe9c679649da273c047bd2 differ diff --git a/Library/Artifacts/cf/cfa3ea0eaa285e73554e887c4f10901e b/Library/Artifacts/cf/cfa3ea0eaa285e73554e887c4f10901e new file mode 100644 index 0000000..67b5792 Binary files /dev/null and b/Library/Artifacts/cf/cfa3ea0eaa285e73554e887c4f10901e differ diff --git a/Library/Artifacts/cf/cfbfab15dcfbd43ecf63cee654714591 b/Library/Artifacts/cf/cfbfab15dcfbd43ecf63cee654714591 new file mode 100644 index 0000000..333cba0 Binary files /dev/null and b/Library/Artifacts/cf/cfbfab15dcfbd43ecf63cee654714591 differ diff --git a/Library/Artifacts/cf/cfeec26daf9920af56683848487f0991 b/Library/Artifacts/cf/cfeec26daf9920af56683848487f0991 new file mode 100644 index 0000000..31e080f Binary files /dev/null and b/Library/Artifacts/cf/cfeec26daf9920af56683848487f0991 differ diff --git a/Library/Artifacts/d0/d044fdf3dffc3d843e9d41e184585ef7 b/Library/Artifacts/d0/d044fdf3dffc3d843e9d41e184585ef7 new file mode 100644 index 0000000..d1b9f2f Binary files /dev/null and b/Library/Artifacts/d0/d044fdf3dffc3d843e9d41e184585ef7 differ diff --git a/Library/Artifacts/d0/d058b87661988e43599fcabb1aef5232 b/Library/Artifacts/d0/d058b87661988e43599fcabb1aef5232 new file mode 100644 index 0000000..b6018ef Binary files /dev/null and b/Library/Artifacts/d0/d058b87661988e43599fcabb1aef5232 differ diff --git a/Library/Artifacts/d0/d07e8b14a947970e30774e30f3a7ef06 b/Library/Artifacts/d0/d07e8b14a947970e30774e30f3a7ef06 new file mode 100644 index 0000000..22ded6f Binary files /dev/null and b/Library/Artifacts/d0/d07e8b14a947970e30774e30f3a7ef06 differ diff --git a/Library/Artifacts/d0/d09ef26c6badd62cdd230f3a9b7ee1e1 b/Library/Artifacts/d0/d09ef26c6badd62cdd230f3a9b7ee1e1 new file mode 100644 index 0000000..71e15d1 Binary files /dev/null and b/Library/Artifacts/d0/d09ef26c6badd62cdd230f3a9b7ee1e1 differ diff --git a/Library/Artifacts/d0/d0a6badd303c4075c897fdab1354269e b/Library/Artifacts/d0/d0a6badd303c4075c897fdab1354269e new file mode 100644 index 0000000..e535b4e Binary files /dev/null and b/Library/Artifacts/d0/d0a6badd303c4075c897fdab1354269e differ diff --git a/Library/Artifacts/d0/d0d283686eca7a74ada89613fbeaf6c7 b/Library/Artifacts/d0/d0d283686eca7a74ada89613fbeaf6c7 new file mode 100644 index 0000000..b5f0a6f Binary files /dev/null and b/Library/Artifacts/d0/d0d283686eca7a74ada89613fbeaf6c7 differ diff --git a/Library/Artifacts/d0/d0dbf67f0eb9fbe22c0e1c763f06a8de b/Library/Artifacts/d0/d0dbf67f0eb9fbe22c0e1c763f06a8de new file mode 100644 index 0000000..3694570 Binary files /dev/null and b/Library/Artifacts/d0/d0dbf67f0eb9fbe22c0e1c763f06a8de differ diff --git a/Library/Artifacts/d0/d0def1b116e70a5d6acd35fa89a9724a b/Library/Artifacts/d0/d0def1b116e70a5d6acd35fa89a9724a new file mode 100644 index 0000000..f10bade Binary files /dev/null and b/Library/Artifacts/d0/d0def1b116e70a5d6acd35fa89a9724a differ diff --git a/Library/Artifacts/d0/d0e257b4019c6ad1eac6eb992ab11797 b/Library/Artifacts/d0/d0e257b4019c6ad1eac6eb992ab11797 new file mode 100644 index 0000000..90cd91e Binary files /dev/null and b/Library/Artifacts/d0/d0e257b4019c6ad1eac6eb992ab11797 differ diff --git a/Library/Artifacts/d1/d113ba7c6a06be3c094ec9f967976d83 b/Library/Artifacts/d1/d113ba7c6a06be3c094ec9f967976d83 new file mode 100644 index 0000000..907b859 Binary files /dev/null and b/Library/Artifacts/d1/d113ba7c6a06be3c094ec9f967976d83 differ diff --git a/Library/Artifacts/d1/d12d20f80ca3479325e3fd02c65697f7 b/Library/Artifacts/d1/d12d20f80ca3479325e3fd02c65697f7 new file mode 100644 index 0000000..34dea22 Binary files /dev/null and b/Library/Artifacts/d1/d12d20f80ca3479325e3fd02c65697f7 differ diff --git a/Library/Artifacts/d1/d1564f13dc2c4fb727b0a09feebeb57e b/Library/Artifacts/d1/d1564f13dc2c4fb727b0a09feebeb57e new file mode 100644 index 0000000..e2867e7 Binary files /dev/null and b/Library/Artifacts/d1/d1564f13dc2c4fb727b0a09feebeb57e differ diff --git a/Library/Artifacts/d1/d157bc6161596740824c110f63037004 b/Library/Artifacts/d1/d157bc6161596740824c110f63037004 new file mode 100644 index 0000000..961d5a2 Binary files /dev/null and b/Library/Artifacts/d1/d157bc6161596740824c110f63037004 differ diff --git a/Library/Artifacts/d1/d15a894ac1f1973291ec9d4a622d858f b/Library/Artifacts/d1/d15a894ac1f1973291ec9d4a622d858f new file mode 100644 index 0000000..8f39e56 Binary files /dev/null and b/Library/Artifacts/d1/d15a894ac1f1973291ec9d4a622d858f differ diff --git a/Library/Artifacts/d1/d172a6a97d854029a3d37bf1c23901ec b/Library/Artifacts/d1/d172a6a97d854029a3d37bf1c23901ec new file mode 100644 index 0000000..6fffee7 Binary files /dev/null and b/Library/Artifacts/d1/d172a6a97d854029a3d37bf1c23901ec differ diff --git a/Library/Artifacts/d1/d180c9314f5df9f6aeec8c0f395b24b5 b/Library/Artifacts/d1/d180c9314f5df9f6aeec8c0f395b24b5 new file mode 100644 index 0000000..48afa29 Binary files /dev/null and b/Library/Artifacts/d1/d180c9314f5df9f6aeec8c0f395b24b5 differ diff --git a/Library/Artifacts/d1/d1810877d3825666edb7345ca54eb770 b/Library/Artifacts/d1/d1810877d3825666edb7345ca54eb770 new file mode 100644 index 0000000..e75fb25 Binary files /dev/null and b/Library/Artifacts/d1/d1810877d3825666edb7345ca54eb770 differ diff --git a/Library/Artifacts/d1/d1c54e7486ed21ded52c90174c1a6a98 b/Library/Artifacts/d1/d1c54e7486ed21ded52c90174c1a6a98 new file mode 100644 index 0000000..b8c6195 Binary files /dev/null and b/Library/Artifacts/d1/d1c54e7486ed21ded52c90174c1a6a98 differ diff --git a/Library/Artifacts/d1/d1e0486f3113545e7dfdc2d37c79e8c2 b/Library/Artifacts/d1/d1e0486f3113545e7dfdc2d37c79e8c2 new file mode 100644 index 0000000..869aaf4 Binary files /dev/null and b/Library/Artifacts/d1/d1e0486f3113545e7dfdc2d37c79e8c2 differ diff --git a/Library/Artifacts/d2/d22ae05e7fdb71a6af31c2058ea76ac7 b/Library/Artifacts/d2/d22ae05e7fdb71a6af31c2058ea76ac7 new file mode 100644 index 0000000..6ebf7f1 Binary files /dev/null and b/Library/Artifacts/d2/d22ae05e7fdb71a6af31c2058ea76ac7 differ diff --git a/Library/Artifacts/d2/d240e6a504b45bec55c0d168943244b1 b/Library/Artifacts/d2/d240e6a504b45bec55c0d168943244b1 new file mode 100644 index 0000000..ef04a52 Binary files /dev/null and b/Library/Artifacts/d2/d240e6a504b45bec55c0d168943244b1 differ diff --git a/Library/Artifacts/d2/d264629d91e2300ea85e89f097906dfa b/Library/Artifacts/d2/d264629d91e2300ea85e89f097906dfa new file mode 100644 index 0000000..33e9f26 Binary files /dev/null and b/Library/Artifacts/d2/d264629d91e2300ea85e89f097906dfa differ diff --git a/Library/Artifacts/d2/d270251b048331579b253101e21754d2 b/Library/Artifacts/d2/d270251b048331579b253101e21754d2 new file mode 100644 index 0000000..68ea8b4 Binary files /dev/null and b/Library/Artifacts/d2/d270251b048331579b253101e21754d2 differ diff --git a/Library/Artifacts/d2/d2c8521b77cbb22aaa7eac7404dd1ddf b/Library/Artifacts/d2/d2c8521b77cbb22aaa7eac7404dd1ddf new file mode 100644 index 0000000..ec458fd Binary files /dev/null and b/Library/Artifacts/d2/d2c8521b77cbb22aaa7eac7404dd1ddf differ diff --git a/Library/Artifacts/d2/d2e587e5b6c625fae1a2add4bdfc1c8a b/Library/Artifacts/d2/d2e587e5b6c625fae1a2add4bdfc1c8a new file mode 100644 index 0000000..9d09404 Binary files /dev/null and b/Library/Artifacts/d2/d2e587e5b6c625fae1a2add4bdfc1c8a differ diff --git a/Library/Artifacts/d2/d2e80fdac8598bdb24de62c902c44736 b/Library/Artifacts/d2/d2e80fdac8598bdb24de62c902c44736 new file mode 100644 index 0000000..a285d47 Binary files /dev/null and b/Library/Artifacts/d2/d2e80fdac8598bdb24de62c902c44736 differ diff --git a/Library/Artifacts/d3/d318ab8129949c21a3c2a3b1f0d04fb9 b/Library/Artifacts/d3/d318ab8129949c21a3c2a3b1f0d04fb9 new file mode 100644 index 0000000..258bab1 Binary files /dev/null and b/Library/Artifacts/d3/d318ab8129949c21a3c2a3b1f0d04fb9 differ diff --git a/Library/Artifacts/d3/d32c030df4667c27dc42e99948a287b9 b/Library/Artifacts/d3/d32c030df4667c27dc42e99948a287b9 new file mode 100644 index 0000000..75b0f88 Binary files /dev/null and b/Library/Artifacts/d3/d32c030df4667c27dc42e99948a287b9 differ diff --git a/Library/Artifacts/d3/d34f53d00aefc775c5327278cb0a5bc9 b/Library/Artifacts/d3/d34f53d00aefc775c5327278cb0a5bc9 new file mode 100644 index 0000000..706912b Binary files /dev/null and b/Library/Artifacts/d3/d34f53d00aefc775c5327278cb0a5bc9 differ diff --git a/Library/Artifacts/d3/d35e013c61292002d1632fa11386a488 b/Library/Artifacts/d3/d35e013c61292002d1632fa11386a488 new file mode 100644 index 0000000..10debbd Binary files /dev/null and b/Library/Artifacts/d3/d35e013c61292002d1632fa11386a488 differ diff --git a/Library/Artifacts/d3/d3e120e760d4ff77b28acf6ebbbb4348 b/Library/Artifacts/d3/d3e120e760d4ff77b28acf6ebbbb4348 new file mode 100644 index 0000000..9870e54 Binary files /dev/null and b/Library/Artifacts/d3/d3e120e760d4ff77b28acf6ebbbb4348 differ diff --git a/Library/Artifacts/d4/d40f57679420e867dc83ca5f60a59466 b/Library/Artifacts/d4/d40f57679420e867dc83ca5f60a59466 new file mode 100644 index 0000000..75ec283 Binary files /dev/null and b/Library/Artifacts/d4/d40f57679420e867dc83ca5f60a59466 differ diff --git a/Library/Artifacts/d4/d43ee1941724d897e7862af37395e589 b/Library/Artifacts/d4/d43ee1941724d897e7862af37395e589 new file mode 100644 index 0000000..6d773c1 Binary files /dev/null and b/Library/Artifacts/d4/d43ee1941724d897e7862af37395e589 differ diff --git a/Library/Artifacts/d4/d444cce598ca1723937b6ecb00ec294d b/Library/Artifacts/d4/d444cce598ca1723937b6ecb00ec294d new file mode 100644 index 0000000..8f65398 Binary files /dev/null and b/Library/Artifacts/d4/d444cce598ca1723937b6ecb00ec294d differ diff --git a/Library/Artifacts/d4/d447ef7bd44e5b20cfb42611e078f667 b/Library/Artifacts/d4/d447ef7bd44e5b20cfb42611e078f667 new file mode 100644 index 0000000..47a941c Binary files /dev/null and b/Library/Artifacts/d4/d447ef7bd44e5b20cfb42611e078f667 differ diff --git a/Library/Artifacts/d4/d44d0fd6d208dff07d2655850fb6d402 b/Library/Artifacts/d4/d44d0fd6d208dff07d2655850fb6d402 new file mode 100644 index 0000000..030c253 Binary files /dev/null and b/Library/Artifacts/d4/d44d0fd6d208dff07d2655850fb6d402 differ diff --git a/Library/Artifacts/d4/d45a88e43ed35822be4e02734223b684 b/Library/Artifacts/d4/d45a88e43ed35822be4e02734223b684 new file mode 100644 index 0000000..676d163 Binary files /dev/null and b/Library/Artifacts/d4/d45a88e43ed35822be4e02734223b684 differ diff --git a/Library/Artifacts/d4/d465e7731925fd091e4491580bc999a4 b/Library/Artifacts/d4/d465e7731925fd091e4491580bc999a4 new file mode 100644 index 0000000..7d67f1a Binary files /dev/null and b/Library/Artifacts/d4/d465e7731925fd091e4491580bc999a4 differ diff --git a/Library/Artifacts/d4/d478837105becb6cdbaee3d9d2d7d198 b/Library/Artifacts/d4/d478837105becb6cdbaee3d9d2d7d198 new file mode 100644 index 0000000..fc250a1 Binary files /dev/null and b/Library/Artifacts/d4/d478837105becb6cdbaee3d9d2d7d198 differ diff --git a/Library/Artifacts/d4/d47c3077ac516161d356e8a67ea29809 b/Library/Artifacts/d4/d47c3077ac516161d356e8a67ea29809 new file mode 100644 index 0000000..440c115 Binary files /dev/null and b/Library/Artifacts/d4/d47c3077ac516161d356e8a67ea29809 differ diff --git a/Library/Artifacts/d4/d47fe72d0d5ae9636fb9c8b8951c3702 b/Library/Artifacts/d4/d47fe72d0d5ae9636fb9c8b8951c3702 new file mode 100644 index 0000000..f472d31 Binary files /dev/null and b/Library/Artifacts/d4/d47fe72d0d5ae9636fb9c8b8951c3702 differ diff --git a/Library/Artifacts/d4/d4e2547b82b32d8396f1c6ccab964ae8 b/Library/Artifacts/d4/d4e2547b82b32d8396f1c6ccab964ae8 new file mode 100644 index 0000000..ac1391f Binary files /dev/null and b/Library/Artifacts/d4/d4e2547b82b32d8396f1c6ccab964ae8 differ diff --git a/Library/Artifacts/d5/d523e289682c763d54b993b930c7e35a b/Library/Artifacts/d5/d523e289682c763d54b993b930c7e35a new file mode 100644 index 0000000..4a32244 Binary files /dev/null and b/Library/Artifacts/d5/d523e289682c763d54b993b930c7e35a differ diff --git a/Library/Artifacts/d5/d524191b5b15d1a6dd00e65fc50d0181 b/Library/Artifacts/d5/d524191b5b15d1a6dd00e65fc50d0181 new file mode 100644 index 0000000..fd3b417 Binary files /dev/null and b/Library/Artifacts/d5/d524191b5b15d1a6dd00e65fc50d0181 differ diff --git a/Library/Artifacts/d5/d565b03570fda08571e33c65b8c86aec b/Library/Artifacts/d5/d565b03570fda08571e33c65b8c86aec new file mode 100644 index 0000000..48e3e1b Binary files /dev/null and b/Library/Artifacts/d5/d565b03570fda08571e33c65b8c86aec differ diff --git a/Library/Artifacts/d5/d5678ef9b26c2878fa74a20c31b0a5d6 b/Library/Artifacts/d5/d5678ef9b26c2878fa74a20c31b0a5d6 new file mode 100644 index 0000000..6a2a6c3 Binary files /dev/null and b/Library/Artifacts/d5/d5678ef9b26c2878fa74a20c31b0a5d6 differ diff --git a/Library/Artifacts/d5/d5cd0e8f53ee976a3a65573a7482e5a1 b/Library/Artifacts/d5/d5cd0e8f53ee976a3a65573a7482e5a1 new file mode 100644 index 0000000..e5a2ffa Binary files /dev/null and b/Library/Artifacts/d5/d5cd0e8f53ee976a3a65573a7482e5a1 differ diff --git a/Library/Artifacts/d6/d60db3254352a70494895484cc0029d9 b/Library/Artifacts/d6/d60db3254352a70494895484cc0029d9 new file mode 100644 index 0000000..59b6818 Binary files /dev/null and b/Library/Artifacts/d6/d60db3254352a70494895484cc0029d9 differ diff --git a/Library/Artifacts/d6/d619d01038b56b8b76e939443a0bc47f b/Library/Artifacts/d6/d619d01038b56b8b76e939443a0bc47f new file mode 100644 index 0000000..ecdd7a2 Binary files /dev/null and b/Library/Artifacts/d6/d619d01038b56b8b76e939443a0bc47f differ diff --git a/Library/Artifacts/d6/d61dfed1f1f45319ed30db112086d4f0 b/Library/Artifacts/d6/d61dfed1f1f45319ed30db112086d4f0 new file mode 100644 index 0000000..61e5d68 Binary files /dev/null and b/Library/Artifacts/d6/d61dfed1f1f45319ed30db112086d4f0 differ diff --git a/Library/Artifacts/d6/d66754ffa55f9f617bf700a6636d5c29 b/Library/Artifacts/d6/d66754ffa55f9f617bf700a6636d5c29 new file mode 100644 index 0000000..4403cd0 Binary files /dev/null and b/Library/Artifacts/d6/d66754ffa55f9f617bf700a6636d5c29 differ diff --git a/Library/Artifacts/d6/d682b7596cbda0b38927733530bc4c6f b/Library/Artifacts/d6/d682b7596cbda0b38927733530bc4c6f new file mode 100644 index 0000000..76b8775 Binary files /dev/null and b/Library/Artifacts/d6/d682b7596cbda0b38927733530bc4c6f differ diff --git a/Library/Artifacts/d6/d69bbc4a330aeacc08c1c85cb4130306 b/Library/Artifacts/d6/d69bbc4a330aeacc08c1c85cb4130306 new file mode 100644 index 0000000..a207ea9 Binary files /dev/null and b/Library/Artifacts/d6/d69bbc4a330aeacc08c1c85cb4130306 differ diff --git a/Library/Artifacts/d6/d69df34c230ba87abf6cffbb4f488240 b/Library/Artifacts/d6/d69df34c230ba87abf6cffbb4f488240 new file mode 100644 index 0000000..23ef29c Binary files /dev/null and b/Library/Artifacts/d6/d69df34c230ba87abf6cffbb4f488240 differ diff --git a/Library/Artifacts/d6/d6b600287d530dc75cd0e769fbe70be8 b/Library/Artifacts/d6/d6b600287d530dc75cd0e769fbe70be8 new file mode 100644 index 0000000..7e2d7c8 Binary files /dev/null and b/Library/Artifacts/d6/d6b600287d530dc75cd0e769fbe70be8 differ diff --git a/Library/Artifacts/d6/d6c1a05b2cb5a80091873b6718f567d2 b/Library/Artifacts/d6/d6c1a05b2cb5a80091873b6718f567d2 new file mode 100644 index 0000000..6ef4080 Binary files /dev/null and b/Library/Artifacts/d6/d6c1a05b2cb5a80091873b6718f567d2 differ diff --git a/Library/Artifacts/d6/d6f6713a43b0385628e66af957d8ee1f b/Library/Artifacts/d6/d6f6713a43b0385628e66af957d8ee1f new file mode 100644 index 0000000..85d4225 Binary files /dev/null and b/Library/Artifacts/d6/d6f6713a43b0385628e66af957d8ee1f differ diff --git a/Library/Artifacts/d7/d70175c056567bb863f9f7e97451bae8 b/Library/Artifacts/d7/d70175c056567bb863f9f7e97451bae8 new file mode 100644 index 0000000..4e619ef Binary files /dev/null and b/Library/Artifacts/d7/d70175c056567bb863f9f7e97451bae8 differ diff --git a/Library/Artifacts/d7/d71aeb6ddae8e78068ff3e8542ebd6db b/Library/Artifacts/d7/d71aeb6ddae8e78068ff3e8542ebd6db new file mode 100644 index 0000000..7b11b78 Binary files /dev/null and b/Library/Artifacts/d7/d71aeb6ddae8e78068ff3e8542ebd6db differ diff --git a/Library/Artifacts/d7/d7431bf1a7add8dbb83103299b21854f b/Library/Artifacts/d7/d7431bf1a7add8dbb83103299b21854f new file mode 100644 index 0000000..33bace9 Binary files /dev/null and b/Library/Artifacts/d7/d7431bf1a7add8dbb83103299b21854f differ diff --git a/Library/Artifacts/d7/d7530208adb34002bc71feb2d15718e9 b/Library/Artifacts/d7/d7530208adb34002bc71feb2d15718e9 new file mode 100644 index 0000000..5b9af7f Binary files /dev/null and b/Library/Artifacts/d7/d7530208adb34002bc71feb2d15718e9 differ diff --git a/Library/Artifacts/d7/d76914368349d27080681c30bf622b12 b/Library/Artifacts/d7/d76914368349d27080681c30bf622b12 new file mode 100644 index 0000000..b4911b6 Binary files /dev/null and b/Library/Artifacts/d7/d76914368349d27080681c30bf622b12 differ diff --git a/Library/Artifacts/d7/d77a56de2b6225548bd1d3c618f7e889 b/Library/Artifacts/d7/d77a56de2b6225548bd1d3c618f7e889 new file mode 100644 index 0000000..40859b2 Binary files /dev/null and b/Library/Artifacts/d7/d77a56de2b6225548bd1d3c618f7e889 differ diff --git a/Library/Artifacts/d7/d7c328192bd2310d5d62a7d0c8846df5 b/Library/Artifacts/d7/d7c328192bd2310d5d62a7d0c8846df5 new file mode 100644 index 0000000..58a8bcc Binary files /dev/null and b/Library/Artifacts/d7/d7c328192bd2310d5d62a7d0c8846df5 differ diff --git a/Library/Artifacts/d7/d7f245a7faab19d513e59e6cc21a4721 b/Library/Artifacts/d7/d7f245a7faab19d513e59e6cc21a4721 new file mode 100644 index 0000000..c95f5cb Binary files /dev/null and b/Library/Artifacts/d7/d7f245a7faab19d513e59e6cc21a4721 differ diff --git a/Library/Artifacts/d8/d809e4df677894ae022645d63c44a633 b/Library/Artifacts/d8/d809e4df677894ae022645d63c44a633 new file mode 100644 index 0000000..b5dce4c Binary files /dev/null and b/Library/Artifacts/d8/d809e4df677894ae022645d63c44a633 differ diff --git a/Library/Artifacts/d8/d816321fec31885aa019cf8e80689b72 b/Library/Artifacts/d8/d816321fec31885aa019cf8e80689b72 new file mode 100644 index 0000000..e3b8f4d Binary files /dev/null and b/Library/Artifacts/d8/d816321fec31885aa019cf8e80689b72 differ diff --git a/Library/Artifacts/d8/d8377b01bdaf94fe8711b91340ba5735 b/Library/Artifacts/d8/d8377b01bdaf94fe8711b91340ba5735 new file mode 100644 index 0000000..a26923a Binary files /dev/null and b/Library/Artifacts/d8/d8377b01bdaf94fe8711b91340ba5735 differ diff --git a/Library/Artifacts/d8/d84264e9e5745e304497b729dfdffdb2 b/Library/Artifacts/d8/d84264e9e5745e304497b729dfdffdb2 new file mode 100644 index 0000000..41ac906 Binary files /dev/null and b/Library/Artifacts/d8/d84264e9e5745e304497b729dfdffdb2 differ diff --git a/Library/Artifacts/d8/d865471111f8524c427ad010d2123dae b/Library/Artifacts/d8/d865471111f8524c427ad010d2123dae new file mode 100644 index 0000000..8164d76 Binary files /dev/null and b/Library/Artifacts/d8/d865471111f8524c427ad010d2123dae differ diff --git a/Library/Artifacts/d8/d8c7cec304eeaec2b3b25a09d6e4a2da b/Library/Artifacts/d8/d8c7cec304eeaec2b3b25a09d6e4a2da new file mode 100644 index 0000000..a5319c1 Binary files /dev/null and b/Library/Artifacts/d8/d8c7cec304eeaec2b3b25a09d6e4a2da differ diff --git a/Library/Artifacts/d8/d8f43c4b7897f1405274998b85046708 b/Library/Artifacts/d8/d8f43c4b7897f1405274998b85046708 new file mode 100644 index 0000000..cf10307 Binary files /dev/null and b/Library/Artifacts/d8/d8f43c4b7897f1405274998b85046708 differ diff --git a/Library/Artifacts/d9/d90bb74cd375720a3014621423003457 b/Library/Artifacts/d9/d90bb74cd375720a3014621423003457 new file mode 100644 index 0000000..e241eed Binary files /dev/null and b/Library/Artifacts/d9/d90bb74cd375720a3014621423003457 differ diff --git a/Library/Artifacts/d9/d9563c28b9d4b28c44ccdb3f09fa918f b/Library/Artifacts/d9/d9563c28b9d4b28c44ccdb3f09fa918f new file mode 100644 index 0000000..af6c310 Binary files /dev/null and b/Library/Artifacts/d9/d9563c28b9d4b28c44ccdb3f09fa918f differ diff --git a/Library/Artifacts/d9/d9636358f29c433f3ef87b8d65029c58 b/Library/Artifacts/d9/d9636358f29c433f3ef87b8d65029c58 new file mode 100644 index 0000000..5d788cc Binary files /dev/null and b/Library/Artifacts/d9/d9636358f29c433f3ef87b8d65029c58 differ diff --git a/Library/Artifacts/d9/d9a6027decdaeccbaac5f39a86ef3ef2 b/Library/Artifacts/d9/d9a6027decdaeccbaac5f39a86ef3ef2 new file mode 100644 index 0000000..ca17b3c Binary files /dev/null and b/Library/Artifacts/d9/d9a6027decdaeccbaac5f39a86ef3ef2 differ diff --git a/Library/Artifacts/d9/d9ac716f4ceac682cdd6ff046e021c26 b/Library/Artifacts/d9/d9ac716f4ceac682cdd6ff046e021c26 new file mode 100644 index 0000000..6342767 Binary files /dev/null and b/Library/Artifacts/d9/d9ac716f4ceac682cdd6ff046e021c26 differ diff --git a/Library/Artifacts/d9/d9afef5e1a050e3eb53cf00e0514ca5b b/Library/Artifacts/d9/d9afef5e1a050e3eb53cf00e0514ca5b new file mode 100644 index 0000000..6ceedea Binary files /dev/null and b/Library/Artifacts/d9/d9afef5e1a050e3eb53cf00e0514ca5b differ diff --git a/Library/Artifacts/d9/d9b82ddfeda54a24993a705d5f9e88ca b/Library/Artifacts/d9/d9b82ddfeda54a24993a705d5f9e88ca new file mode 100644 index 0000000..54bb6e4 Binary files /dev/null and b/Library/Artifacts/d9/d9b82ddfeda54a24993a705d5f9e88ca differ diff --git a/Library/Artifacts/da/da022e2a7c9f01733de333a81e0aa0a8 b/Library/Artifacts/da/da022e2a7c9f01733de333a81e0aa0a8 new file mode 100644 index 0000000..c0ea9d9 Binary files /dev/null and b/Library/Artifacts/da/da022e2a7c9f01733de333a81e0aa0a8 differ diff --git a/Library/Artifacts/da/da115953161002020359d2ab1293f0e4 b/Library/Artifacts/da/da115953161002020359d2ab1293f0e4 new file mode 100644 index 0000000..8a8b3ad Binary files /dev/null and b/Library/Artifacts/da/da115953161002020359d2ab1293f0e4 differ diff --git a/Library/Artifacts/da/da289dc29b3e6fcd2297761e9e1f3d5c b/Library/Artifacts/da/da289dc29b3e6fcd2297761e9e1f3d5c new file mode 100644 index 0000000..220c30e Binary files /dev/null and b/Library/Artifacts/da/da289dc29b3e6fcd2297761e9e1f3d5c differ diff --git a/Library/Artifacts/da/da4b61262e9cd5ef058a2b5736cbdb0c b/Library/Artifacts/da/da4b61262e9cd5ef058a2b5736cbdb0c new file mode 100644 index 0000000..50304a6 Binary files /dev/null and b/Library/Artifacts/da/da4b61262e9cd5ef058a2b5736cbdb0c differ diff --git a/Library/Artifacts/da/da58d48662f6e4c7fc7800f8d3bf6b0c b/Library/Artifacts/da/da58d48662f6e4c7fc7800f8d3bf6b0c new file mode 100644 index 0000000..4b3fca8 Binary files /dev/null and b/Library/Artifacts/da/da58d48662f6e4c7fc7800f8d3bf6b0c differ diff --git a/Library/Artifacts/da/da775dc4a5f955ca660fe4eb4fc25ff0 b/Library/Artifacts/da/da775dc4a5f955ca660fe4eb4fc25ff0 new file mode 100644 index 0000000..53058bc Binary files /dev/null and b/Library/Artifacts/da/da775dc4a5f955ca660fe4eb4fc25ff0 differ diff --git a/Library/Artifacts/da/da8ab26618bcd32bbb1849d28a0ce2b4 b/Library/Artifacts/da/da8ab26618bcd32bbb1849d28a0ce2b4 new file mode 100644 index 0000000..00b3698 Binary files /dev/null and b/Library/Artifacts/da/da8ab26618bcd32bbb1849d28a0ce2b4 differ diff --git a/Library/Artifacts/da/da8c410c822bcb6866d98a8ce316c6a7 b/Library/Artifacts/da/da8c410c822bcb6866d98a8ce316c6a7 new file mode 100644 index 0000000..49cd71d Binary files /dev/null and b/Library/Artifacts/da/da8c410c822bcb6866d98a8ce316c6a7 differ diff --git a/Library/Artifacts/da/dab5b34e9ab80671611afbac3e448f46 b/Library/Artifacts/da/dab5b34e9ab80671611afbac3e448f46 new file mode 100644 index 0000000..8e0fc44 Binary files /dev/null and b/Library/Artifacts/da/dab5b34e9ab80671611afbac3e448f46 differ diff --git a/Library/Artifacts/da/dabd4a297cacaa35dfb59eb82d9e223e b/Library/Artifacts/da/dabd4a297cacaa35dfb59eb82d9e223e new file mode 100644 index 0000000..b20d0d6 Binary files /dev/null and b/Library/Artifacts/da/dabd4a297cacaa35dfb59eb82d9e223e differ diff --git a/Library/Artifacts/da/dac9cc4796ecf424b8c6ac70d6958b04 b/Library/Artifacts/da/dac9cc4796ecf424b8c6ac70d6958b04 new file mode 100644 index 0000000..d7e8a8a Binary files /dev/null and b/Library/Artifacts/da/dac9cc4796ecf424b8c6ac70d6958b04 differ diff --git a/Library/Artifacts/da/daeb54ff6e3b274bd6e2828055fe346e b/Library/Artifacts/da/daeb54ff6e3b274bd6e2828055fe346e new file mode 100644 index 0000000..b848419 Binary files /dev/null and b/Library/Artifacts/da/daeb54ff6e3b274bd6e2828055fe346e differ diff --git a/Library/Artifacts/da/daf20046425c8a1e991133210972eda5 b/Library/Artifacts/da/daf20046425c8a1e991133210972eda5 new file mode 100644 index 0000000..a7234cf Binary files /dev/null and b/Library/Artifacts/da/daf20046425c8a1e991133210972eda5 differ diff --git a/Library/Artifacts/da/daf258cdf1315291dd9a8d03be1a5b2a b/Library/Artifacts/da/daf258cdf1315291dd9a8d03be1a5b2a new file mode 100644 index 0000000..cf09079 Binary files /dev/null and b/Library/Artifacts/da/daf258cdf1315291dd9a8d03be1a5b2a differ diff --git a/Library/Artifacts/db/db64f2f4fe81be4f712f914c182b7555 b/Library/Artifacts/db/db64f2f4fe81be4f712f914c182b7555 new file mode 100644 index 0000000..a0fa57a Binary files /dev/null and b/Library/Artifacts/db/db64f2f4fe81be4f712f914c182b7555 differ diff --git a/Library/Artifacts/db/db74519c0b5f22368630a729b888b3b4 b/Library/Artifacts/db/db74519c0b5f22368630a729b888b3b4 new file mode 100644 index 0000000..d6c8623 Binary files /dev/null and b/Library/Artifacts/db/db74519c0b5f22368630a729b888b3b4 differ diff --git a/Library/Artifacts/db/db7e3c0232ae6b075a814ce3ab35af4a b/Library/Artifacts/db/db7e3c0232ae6b075a814ce3ab35af4a new file mode 100644 index 0000000..4ddbd92 Binary files /dev/null and b/Library/Artifacts/db/db7e3c0232ae6b075a814ce3ab35af4a differ diff --git a/Library/Artifacts/db/dbb2d604b284aaa896fe99350a21ddc7 b/Library/Artifacts/db/dbb2d604b284aaa896fe99350a21ddc7 new file mode 100644 index 0000000..e252e55 Binary files /dev/null and b/Library/Artifacts/db/dbb2d604b284aaa896fe99350a21ddc7 differ diff --git a/Library/Artifacts/dc/dc0d675f7d01b71ca9af1123871b6710 b/Library/Artifacts/dc/dc0d675f7d01b71ca9af1123871b6710 new file mode 100644 index 0000000..ff8cbee Binary files /dev/null and b/Library/Artifacts/dc/dc0d675f7d01b71ca9af1123871b6710 differ diff --git a/Library/Artifacts/dc/dc34e17582f64e3b4066704a85ce3a90 b/Library/Artifacts/dc/dc34e17582f64e3b4066704a85ce3a90 new file mode 100644 index 0000000..df7045d Binary files /dev/null and b/Library/Artifacts/dc/dc34e17582f64e3b4066704a85ce3a90 differ diff --git a/Library/Artifacts/dc/dc442119e67e14ea43e42724d98e6625 b/Library/Artifacts/dc/dc442119e67e14ea43e42724d98e6625 new file mode 100644 index 0000000..1f61cf8 Binary files /dev/null and b/Library/Artifacts/dc/dc442119e67e14ea43e42724d98e6625 differ diff --git a/Library/Artifacts/dc/dc7a404fd60b03b90329ead9b6a122c1 b/Library/Artifacts/dc/dc7a404fd60b03b90329ead9b6a122c1 new file mode 100644 index 0000000..585545e Binary files /dev/null and b/Library/Artifacts/dc/dc7a404fd60b03b90329ead9b6a122c1 differ diff --git a/Library/Artifacts/dc/dcd9952bd52f9ebd1b5410bb147b42cb b/Library/Artifacts/dc/dcd9952bd52f9ebd1b5410bb147b42cb new file mode 100644 index 0000000..325ad2f Binary files /dev/null and b/Library/Artifacts/dc/dcd9952bd52f9ebd1b5410bb147b42cb differ diff --git a/Library/Artifacts/dc/dce128479bf94f8b6a1eb4626fbcc30b b/Library/Artifacts/dc/dce128479bf94f8b6a1eb4626fbcc30b new file mode 100644 index 0000000..236b8a9 Binary files /dev/null and b/Library/Artifacts/dc/dce128479bf94f8b6a1eb4626fbcc30b differ diff --git a/Library/Artifacts/dd/dd163285e7a5088d5d7f966cf585a7e5 b/Library/Artifacts/dd/dd163285e7a5088d5d7f966cf585a7e5 new file mode 100644 index 0000000..9b3c2a4 Binary files /dev/null and b/Library/Artifacts/dd/dd163285e7a5088d5d7f966cf585a7e5 differ diff --git a/Library/Artifacts/dd/dd353c4e4dd84f7825d5253004aa2a80 b/Library/Artifacts/dd/dd353c4e4dd84f7825d5253004aa2a80 new file mode 100644 index 0000000..af9302b Binary files /dev/null and b/Library/Artifacts/dd/dd353c4e4dd84f7825d5253004aa2a80 differ diff --git a/Library/Artifacts/dd/dd5613a6e25f049a583082dc7ff43d17 b/Library/Artifacts/dd/dd5613a6e25f049a583082dc7ff43d17 new file mode 100644 index 0000000..2c7e5d3 Binary files /dev/null and b/Library/Artifacts/dd/dd5613a6e25f049a583082dc7ff43d17 differ diff --git a/Library/Artifacts/dd/dd59c653ae4a6e02fb471b96238ec97b b/Library/Artifacts/dd/dd59c653ae4a6e02fb471b96238ec97b new file mode 100644 index 0000000..965c0bd Binary files /dev/null and b/Library/Artifacts/dd/dd59c653ae4a6e02fb471b96238ec97b differ diff --git a/Library/Artifacts/dd/dd7b12535a770c7e1a0805820438525f b/Library/Artifacts/dd/dd7b12535a770c7e1a0805820438525f new file mode 100644 index 0000000..f3a2e7f Binary files /dev/null and b/Library/Artifacts/dd/dd7b12535a770c7e1a0805820438525f differ diff --git a/Library/Artifacts/dd/dd865af7daf20c3d196de97a7ef2a0bc b/Library/Artifacts/dd/dd865af7daf20c3d196de97a7ef2a0bc new file mode 100644 index 0000000..d11f32e Binary files /dev/null and b/Library/Artifacts/dd/dd865af7daf20c3d196de97a7ef2a0bc differ diff --git a/Library/Artifacts/dd/dd9d0c7b0b67812e3c6d13ee7a0539c1 b/Library/Artifacts/dd/dd9d0c7b0b67812e3c6d13ee7a0539c1 new file mode 100644 index 0000000..83da10d Binary files /dev/null and b/Library/Artifacts/dd/dd9d0c7b0b67812e3c6d13ee7a0539c1 differ diff --git a/Library/Artifacts/dd/dda57711489888130ffd17590d05bbbc b/Library/Artifacts/dd/dda57711489888130ffd17590d05bbbc new file mode 100644 index 0000000..8224767 Binary files /dev/null and b/Library/Artifacts/dd/dda57711489888130ffd17590d05bbbc differ diff --git a/Library/Artifacts/dd/dda9f999ffe5e7065474365acb147d79 b/Library/Artifacts/dd/dda9f999ffe5e7065474365acb147d79 new file mode 100644 index 0000000..1850e60 Binary files /dev/null and b/Library/Artifacts/dd/dda9f999ffe5e7065474365acb147d79 differ diff --git a/Library/Artifacts/dd/ddba00f98e25505787ed008220c2d56c b/Library/Artifacts/dd/ddba00f98e25505787ed008220c2d56c new file mode 100644 index 0000000..4bd64c8 Binary files /dev/null and b/Library/Artifacts/dd/ddba00f98e25505787ed008220c2d56c differ diff --git a/Library/Artifacts/dd/dde59a8dd36f08a205f05cc171d51901 b/Library/Artifacts/dd/dde59a8dd36f08a205f05cc171d51901 new file mode 100644 index 0000000..4b11672 Binary files /dev/null and b/Library/Artifacts/dd/dde59a8dd36f08a205f05cc171d51901 differ diff --git a/Library/Artifacts/de/de029445cf9aa0e3a53d8c8e164c91c2 b/Library/Artifacts/de/de029445cf9aa0e3a53d8c8e164c91c2 new file mode 100644 index 0000000..03b9c5e Binary files /dev/null and b/Library/Artifacts/de/de029445cf9aa0e3a53d8c8e164c91c2 differ diff --git a/Library/Artifacts/de/de070373be966a074d3032ed32afda32 b/Library/Artifacts/de/de070373be966a074d3032ed32afda32 new file mode 100644 index 0000000..127a103 Binary files /dev/null and b/Library/Artifacts/de/de070373be966a074d3032ed32afda32 differ diff --git a/Library/Artifacts/de/de2d892a7b5c44b5124acbe86eeb5e06 b/Library/Artifacts/de/de2d892a7b5c44b5124acbe86eeb5e06 new file mode 100644 index 0000000..f35fc5f Binary files /dev/null and b/Library/Artifacts/de/de2d892a7b5c44b5124acbe86eeb5e06 differ diff --git a/Library/Artifacts/de/de67f5216d8889be60392af8ff5c99fd b/Library/Artifacts/de/de67f5216d8889be60392af8ff5c99fd new file mode 100644 index 0000000..0256049 Binary files /dev/null and b/Library/Artifacts/de/de67f5216d8889be60392af8ff5c99fd differ diff --git a/Library/Artifacts/de/de7580d00b1203d86d89a6a48cae1fb7 b/Library/Artifacts/de/de7580d00b1203d86d89a6a48cae1fb7 new file mode 100644 index 0000000..855376b Binary files /dev/null and b/Library/Artifacts/de/de7580d00b1203d86d89a6a48cae1fb7 differ diff --git a/Library/Artifacts/de/dea41d6451bc8284825f58143e53b601 b/Library/Artifacts/de/dea41d6451bc8284825f58143e53b601 new file mode 100644 index 0000000..d26e9dd Binary files /dev/null and b/Library/Artifacts/de/dea41d6451bc8284825f58143e53b601 differ diff --git a/Library/Artifacts/de/debe60cdeb964851d2b8a082613ac528 b/Library/Artifacts/de/debe60cdeb964851d2b8a082613ac528 new file mode 100644 index 0000000..8909dcb Binary files /dev/null and b/Library/Artifacts/de/debe60cdeb964851d2b8a082613ac528 differ diff --git a/Library/Artifacts/de/dec62326e6cfb0c09e95cc6a88b7e4aa b/Library/Artifacts/de/dec62326e6cfb0c09e95cc6a88b7e4aa new file mode 100644 index 0000000..6e42b5b Binary files /dev/null and b/Library/Artifacts/de/dec62326e6cfb0c09e95cc6a88b7e4aa differ diff --git a/Library/Artifacts/de/deed50de669ee541a3b131e3b8b0adfc b/Library/Artifacts/de/deed50de669ee541a3b131e3b8b0adfc new file mode 100644 index 0000000..233fcfa Binary files /dev/null and b/Library/Artifacts/de/deed50de669ee541a3b131e3b8b0adfc differ diff --git a/Library/Artifacts/df/df02c6691e6104bb7f293e5309e1b5f5 b/Library/Artifacts/df/df02c6691e6104bb7f293e5309e1b5f5 new file mode 100644 index 0000000..3021b2a Binary files /dev/null and b/Library/Artifacts/df/df02c6691e6104bb7f293e5309e1b5f5 differ diff --git a/Library/Artifacts/df/df09a9370142eeefdd88ccb0759d7792 b/Library/Artifacts/df/df09a9370142eeefdd88ccb0759d7792 new file mode 100644 index 0000000..51df0bf Binary files /dev/null and b/Library/Artifacts/df/df09a9370142eeefdd88ccb0759d7792 differ diff --git a/Library/Artifacts/df/df0bcfa54e9f56cc95ce6993b2d6f4d6 b/Library/Artifacts/df/df0bcfa54e9f56cc95ce6993b2d6f4d6 new file mode 100644 index 0000000..08e9ee9 Binary files /dev/null and b/Library/Artifacts/df/df0bcfa54e9f56cc95ce6993b2d6f4d6 differ diff --git a/Library/Artifacts/df/df21b404d8803ce24302145fbb82db15 b/Library/Artifacts/df/df21b404d8803ce24302145fbb82db15 new file mode 100644 index 0000000..a3ee373 Binary files /dev/null and b/Library/Artifacts/df/df21b404d8803ce24302145fbb82db15 differ diff --git a/Library/Artifacts/df/df497d53d15903a90aa122624bf56019 b/Library/Artifacts/df/df497d53d15903a90aa122624bf56019 new file mode 100644 index 0000000..2676356 Binary files /dev/null and b/Library/Artifacts/df/df497d53d15903a90aa122624bf56019 differ diff --git a/Library/Artifacts/df/df5f79169b9cc55191681ac23850d826 b/Library/Artifacts/df/df5f79169b9cc55191681ac23850d826 new file mode 100644 index 0000000..4d124a6 Binary files /dev/null and b/Library/Artifacts/df/df5f79169b9cc55191681ac23850d826 differ diff --git a/Library/Artifacts/df/dfcaec55d43d2fa449e11761f16bffb1 b/Library/Artifacts/df/dfcaec55d43d2fa449e11761f16bffb1 new file mode 100644 index 0000000..98ccfde Binary files /dev/null and b/Library/Artifacts/df/dfcaec55d43d2fa449e11761f16bffb1 differ diff --git a/Library/Artifacts/df/dff19d3e9cf019f71a5b1677cea4d278 b/Library/Artifacts/df/dff19d3e9cf019f71a5b1677cea4d278 new file mode 100644 index 0000000..6ef61be Binary files /dev/null and b/Library/Artifacts/df/dff19d3e9cf019f71a5b1677cea4d278 differ diff --git a/Library/Artifacts/e0/e011d1d3c1e09cd69c7f4d41792fc947 b/Library/Artifacts/e0/e011d1d3c1e09cd69c7f4d41792fc947 new file mode 100644 index 0000000..da55413 Binary files /dev/null and b/Library/Artifacts/e0/e011d1d3c1e09cd69c7f4d41792fc947 differ diff --git a/Library/Artifacts/e0/e047a399a92fafadcfe216b82a25088e b/Library/Artifacts/e0/e047a399a92fafadcfe216b82a25088e new file mode 100644 index 0000000..987c3d6 Binary files /dev/null and b/Library/Artifacts/e0/e047a399a92fafadcfe216b82a25088e differ diff --git a/Library/Artifacts/e0/e08a37c7cf51388d4d288a9c0b35968e b/Library/Artifacts/e0/e08a37c7cf51388d4d288a9c0b35968e new file mode 100644 index 0000000..9cdf64c Binary files /dev/null and b/Library/Artifacts/e0/e08a37c7cf51388d4d288a9c0b35968e differ diff --git a/Library/Artifacts/e0/e0ed63de54c81cf7b1d411bc1c43e911 b/Library/Artifacts/e0/e0ed63de54c81cf7b1d411bc1c43e911 new file mode 100644 index 0000000..0613511 Binary files /dev/null and b/Library/Artifacts/e0/e0ed63de54c81cf7b1d411bc1c43e911 differ diff --git a/Library/Artifacts/e0/e0f82c64023226584fa1a678abbac4eb b/Library/Artifacts/e0/e0f82c64023226584fa1a678abbac4eb new file mode 100644 index 0000000..40d98b7 Binary files /dev/null and b/Library/Artifacts/e0/e0f82c64023226584fa1a678abbac4eb differ diff --git a/Library/Artifacts/e1/e11f2cd7c9f0c88401d806e17645fa58 b/Library/Artifacts/e1/e11f2cd7c9f0c88401d806e17645fa58 new file mode 100644 index 0000000..0df71d6 Binary files /dev/null and b/Library/Artifacts/e1/e11f2cd7c9f0c88401d806e17645fa58 differ diff --git a/Library/Artifacts/e1/e142fce4759fcc6a2439c516917d41fa b/Library/Artifacts/e1/e142fce4759fcc6a2439c516917d41fa new file mode 100644 index 0000000..8028abe Binary files /dev/null and b/Library/Artifacts/e1/e142fce4759fcc6a2439c516917d41fa differ diff --git a/Library/Artifacts/e1/e16b932165dbb3558cc1437bd5fa1fee b/Library/Artifacts/e1/e16b932165dbb3558cc1437bd5fa1fee new file mode 100644 index 0000000..16c257a Binary files /dev/null and b/Library/Artifacts/e1/e16b932165dbb3558cc1437bd5fa1fee differ diff --git a/Library/Artifacts/e1/e16bb4d98688b3d502a100f105aa402f b/Library/Artifacts/e1/e16bb4d98688b3d502a100f105aa402f new file mode 100644 index 0000000..5b687ca Binary files /dev/null and b/Library/Artifacts/e1/e16bb4d98688b3d502a100f105aa402f differ diff --git a/Library/Artifacts/e1/e18e16278ce99c688d9173285e79e4a6 b/Library/Artifacts/e1/e18e16278ce99c688d9173285e79e4a6 new file mode 100644 index 0000000..e8deca4 Binary files /dev/null and b/Library/Artifacts/e1/e18e16278ce99c688d9173285e79e4a6 differ diff --git a/Library/Artifacts/e1/e1a370a356f822154ab899b7c5231ca8 b/Library/Artifacts/e1/e1a370a356f822154ab899b7c5231ca8 new file mode 100644 index 0000000..2fc6be4 Binary files /dev/null and b/Library/Artifacts/e1/e1a370a356f822154ab899b7c5231ca8 differ diff --git a/Library/Artifacts/e1/e1a7053512772e4800fa2f9e08206a07 b/Library/Artifacts/e1/e1a7053512772e4800fa2f9e08206a07 new file mode 100644 index 0000000..6964fc4 Binary files /dev/null and b/Library/Artifacts/e1/e1a7053512772e4800fa2f9e08206a07 differ diff --git a/Library/Artifacts/e1/e1a793ba29787004f60d3a39a627a702 b/Library/Artifacts/e1/e1a793ba29787004f60d3a39a627a702 new file mode 100644 index 0000000..99c22cc Binary files /dev/null and b/Library/Artifacts/e1/e1a793ba29787004f60d3a39a627a702 differ diff --git a/Library/Artifacts/e1/e1ebd77f5c7d9fc30bfef002d72fea5f b/Library/Artifacts/e1/e1ebd77f5c7d9fc30bfef002d72fea5f new file mode 100644 index 0000000..020f11e Binary files /dev/null and b/Library/Artifacts/e1/e1ebd77f5c7d9fc30bfef002d72fea5f differ diff --git a/Library/Artifacts/e2/e21f6982afb207da54c4939ec7ff0342 b/Library/Artifacts/e2/e21f6982afb207da54c4939ec7ff0342 new file mode 100644 index 0000000..88ce432 Binary files /dev/null and b/Library/Artifacts/e2/e21f6982afb207da54c4939ec7ff0342 differ diff --git a/Library/Artifacts/e2/e2397afc970ffdb0e91612b378c639b4 b/Library/Artifacts/e2/e2397afc970ffdb0e91612b378c639b4 new file mode 100644 index 0000000..a27deb6 Binary files /dev/null and b/Library/Artifacts/e2/e2397afc970ffdb0e91612b378c639b4 differ diff --git a/Library/Artifacts/e2/e268aa5912220c9f7adc0aac7e3dbcca b/Library/Artifacts/e2/e268aa5912220c9f7adc0aac7e3dbcca new file mode 100644 index 0000000..5814821 Binary files /dev/null and b/Library/Artifacts/e2/e268aa5912220c9f7adc0aac7e3dbcca differ diff --git a/Library/Artifacts/e2/e29a3a387cf60ed6047043c6f5905e29 b/Library/Artifacts/e2/e29a3a387cf60ed6047043c6f5905e29 new file mode 100644 index 0000000..f2cb514 Binary files /dev/null and b/Library/Artifacts/e2/e29a3a387cf60ed6047043c6f5905e29 differ diff --git a/Library/Artifacts/e2/e2e3d7f51c96fc8e44a3fb5aef35243f b/Library/Artifacts/e2/e2e3d7f51c96fc8e44a3fb5aef35243f new file mode 100644 index 0000000..779d74a Binary files /dev/null and b/Library/Artifacts/e2/e2e3d7f51c96fc8e44a3fb5aef35243f differ diff --git a/Library/Artifacts/e2/e2e48ed3324dac02b53874c2bcb23cd0 b/Library/Artifacts/e2/e2e48ed3324dac02b53874c2bcb23cd0 new file mode 100644 index 0000000..a7d8f5c Binary files /dev/null and b/Library/Artifacts/e2/e2e48ed3324dac02b53874c2bcb23cd0 differ diff --git a/Library/Artifacts/e3/e37e0735a4b835ebb369e2f7467875b0 b/Library/Artifacts/e3/e37e0735a4b835ebb369e2f7467875b0 new file mode 100644 index 0000000..9949d9d Binary files /dev/null and b/Library/Artifacts/e3/e37e0735a4b835ebb369e2f7467875b0 differ diff --git a/Library/Artifacts/e3/e39802f60bc11f9f576e45401e8e0f63 b/Library/Artifacts/e3/e39802f60bc11f9f576e45401e8e0f63 new file mode 100644 index 0000000..5151a58 Binary files /dev/null and b/Library/Artifacts/e3/e39802f60bc11f9f576e45401e8e0f63 differ diff --git a/Library/Artifacts/e3/e3b1084fe49d99bded4b0a4658cc60d9 b/Library/Artifacts/e3/e3b1084fe49d99bded4b0a4658cc60d9 new file mode 100644 index 0000000..3fdae87 Binary files /dev/null and b/Library/Artifacts/e3/e3b1084fe49d99bded4b0a4658cc60d9 differ diff --git a/Library/Artifacts/e3/e3b162c950b5c4a2949e78011cf3f9ba b/Library/Artifacts/e3/e3b162c950b5c4a2949e78011cf3f9ba new file mode 100644 index 0000000..4faeb57 Binary files /dev/null and b/Library/Artifacts/e3/e3b162c950b5c4a2949e78011cf3f9ba differ diff --git a/Library/Artifacts/e3/e3d3139b6ad5bdb7f048a270906cba37 b/Library/Artifacts/e3/e3d3139b6ad5bdb7f048a270906cba37 new file mode 100644 index 0000000..22d029c Binary files /dev/null and b/Library/Artifacts/e3/e3d3139b6ad5bdb7f048a270906cba37 differ diff --git a/Library/Artifacts/e4/e402fea84f0fc92b46ef50466ab24a45 b/Library/Artifacts/e4/e402fea84f0fc92b46ef50466ab24a45 new file mode 100644 index 0000000..6873ee3 Binary files /dev/null and b/Library/Artifacts/e4/e402fea84f0fc92b46ef50466ab24a45 differ diff --git a/Library/Artifacts/e4/e41ed7b878c15cf903a4f5f872409bab b/Library/Artifacts/e4/e41ed7b878c15cf903a4f5f872409bab new file mode 100644 index 0000000..5b0ee85 Binary files /dev/null and b/Library/Artifacts/e4/e41ed7b878c15cf903a4f5f872409bab differ diff --git a/Library/Artifacts/e4/e436b572e777a7429ce92ede14d15e5c b/Library/Artifacts/e4/e436b572e777a7429ce92ede14d15e5c new file mode 100644 index 0000000..e7fd9fd Binary files /dev/null and b/Library/Artifacts/e4/e436b572e777a7429ce92ede14d15e5c differ diff --git a/Library/Artifacts/e4/e4579f3bd5f1487a582b5a167f230dcf b/Library/Artifacts/e4/e4579f3bd5f1487a582b5a167f230dcf new file mode 100644 index 0000000..8009959 Binary files /dev/null and b/Library/Artifacts/e4/e4579f3bd5f1487a582b5a167f230dcf differ diff --git a/Library/Artifacts/e4/e45f2e9501e6ccbb68e39ccf00f7042f b/Library/Artifacts/e4/e45f2e9501e6ccbb68e39ccf00f7042f new file mode 100644 index 0000000..3438643 Binary files /dev/null and b/Library/Artifacts/e4/e45f2e9501e6ccbb68e39ccf00f7042f differ diff --git a/Library/Artifacts/e4/e4680308fe168a3eab4bdcb07cd9dd4c b/Library/Artifacts/e4/e4680308fe168a3eab4bdcb07cd9dd4c new file mode 100644 index 0000000..b9942a7 Binary files /dev/null and b/Library/Artifacts/e4/e4680308fe168a3eab4bdcb07cd9dd4c differ diff --git a/Library/Artifacts/e4/e47fe372d1a412d962ad26ca216d6572 b/Library/Artifacts/e4/e47fe372d1a412d962ad26ca216d6572 new file mode 100644 index 0000000..9d423e9 Binary files /dev/null and b/Library/Artifacts/e4/e47fe372d1a412d962ad26ca216d6572 differ diff --git a/Library/Artifacts/e4/e482f1e7c7702be50180855bc6e3eec9 b/Library/Artifacts/e4/e482f1e7c7702be50180855bc6e3eec9 new file mode 100644 index 0000000..2b22de1 Binary files /dev/null and b/Library/Artifacts/e4/e482f1e7c7702be50180855bc6e3eec9 differ diff --git a/Library/Artifacts/e4/e48f320f79d7e3a4d9574dc8fb4c87df b/Library/Artifacts/e4/e48f320f79d7e3a4d9574dc8fb4c87df new file mode 100644 index 0000000..47d1ac2 Binary files /dev/null and b/Library/Artifacts/e4/e48f320f79d7e3a4d9574dc8fb4c87df differ diff --git a/Library/Artifacts/e4/e4d29cadb79fe164871f4635b6374811 b/Library/Artifacts/e4/e4d29cadb79fe164871f4635b6374811 new file mode 100644 index 0000000..62926e4 Binary files /dev/null and b/Library/Artifacts/e4/e4d29cadb79fe164871f4635b6374811 differ diff --git a/Library/Artifacts/e4/e4e2abe248ce60fe60e5adcbaec43189 b/Library/Artifacts/e4/e4e2abe248ce60fe60e5adcbaec43189 new file mode 100644 index 0000000..575871b Binary files /dev/null and b/Library/Artifacts/e4/e4e2abe248ce60fe60e5adcbaec43189 differ diff --git a/Library/Artifacts/e4/e4fcda140aaed3d91718bec7aff0de24 b/Library/Artifacts/e4/e4fcda140aaed3d91718bec7aff0de24 new file mode 100644 index 0000000..cde6276 Binary files /dev/null and b/Library/Artifacts/e4/e4fcda140aaed3d91718bec7aff0de24 differ diff --git a/Library/Artifacts/e5/e512ffebddf26fdde80c7a6ea65b14ac b/Library/Artifacts/e5/e512ffebddf26fdde80c7a6ea65b14ac new file mode 100644 index 0000000..d80c544 Binary files /dev/null and b/Library/Artifacts/e5/e512ffebddf26fdde80c7a6ea65b14ac differ diff --git a/Library/Artifacts/e5/e5541520080577cf9597adcabdbfab04 b/Library/Artifacts/e5/e5541520080577cf9597adcabdbfab04 new file mode 100644 index 0000000..9a12a85 Binary files /dev/null and b/Library/Artifacts/e5/e5541520080577cf9597adcabdbfab04 differ diff --git a/Library/Artifacts/e5/e5701d2d8a2922368cf64adc6929aab3 b/Library/Artifacts/e5/e5701d2d8a2922368cf64adc6929aab3 new file mode 100644 index 0000000..0358802 Binary files /dev/null and b/Library/Artifacts/e5/e5701d2d8a2922368cf64adc6929aab3 differ diff --git a/Library/Artifacts/e5/e59120ee316e042fe3e1167d60718d31 b/Library/Artifacts/e5/e59120ee316e042fe3e1167d60718d31 new file mode 100644 index 0000000..d8a92da Binary files /dev/null and b/Library/Artifacts/e5/e59120ee316e042fe3e1167d60718d31 differ diff --git a/Library/Artifacts/e5/e59b73eda3438ae0a94758a9f268a1e4 b/Library/Artifacts/e5/e59b73eda3438ae0a94758a9f268a1e4 new file mode 100644 index 0000000..51b3d0a Binary files /dev/null and b/Library/Artifacts/e5/e59b73eda3438ae0a94758a9f268a1e4 differ diff --git a/Library/Artifacts/e5/e5c11f282d0c4027ad2b88584ec91ed6 b/Library/Artifacts/e5/e5c11f282d0c4027ad2b88584ec91ed6 new file mode 100644 index 0000000..3dcc08d Binary files /dev/null and b/Library/Artifacts/e5/e5c11f282d0c4027ad2b88584ec91ed6 differ diff --git a/Library/Artifacts/e5/e5c436067f6dddc612c5258cbb9e8c86 b/Library/Artifacts/e5/e5c436067f6dddc612c5258cbb9e8c86 new file mode 100644 index 0000000..8f14ae5 Binary files /dev/null and b/Library/Artifacts/e5/e5c436067f6dddc612c5258cbb9e8c86 differ diff --git a/Library/Artifacts/e5/e5e3b121a5a552b9ff1824cecb1eb203 b/Library/Artifacts/e5/e5e3b121a5a552b9ff1824cecb1eb203 new file mode 100644 index 0000000..62dd10f Binary files /dev/null and b/Library/Artifacts/e5/e5e3b121a5a552b9ff1824cecb1eb203 differ diff --git a/Library/Artifacts/e6/e62d1285cd5a54ce38defacde8629a65 b/Library/Artifacts/e6/e62d1285cd5a54ce38defacde8629a65 new file mode 100644 index 0000000..337931f Binary files /dev/null and b/Library/Artifacts/e6/e62d1285cd5a54ce38defacde8629a65 differ diff --git a/Library/Artifacts/e6/e643b3a88cf2d05d3731a8d23e104e1d b/Library/Artifacts/e6/e643b3a88cf2d05d3731a8d23e104e1d new file mode 100644 index 0000000..9cb681a Binary files /dev/null and b/Library/Artifacts/e6/e643b3a88cf2d05d3731a8d23e104e1d differ diff --git a/Library/Artifacts/e6/e65b5df4d1b6412971579debf7e26684 b/Library/Artifacts/e6/e65b5df4d1b6412971579debf7e26684 new file mode 100644 index 0000000..9bf42de Binary files /dev/null and b/Library/Artifacts/e6/e65b5df4d1b6412971579debf7e26684 differ diff --git a/Library/Artifacts/e6/e6aa4208c4cb0e46b4a42c82a71a4385 b/Library/Artifacts/e6/e6aa4208c4cb0e46b4a42c82a71a4385 new file mode 100644 index 0000000..c78a3fc Binary files /dev/null and b/Library/Artifacts/e6/e6aa4208c4cb0e46b4a42c82a71a4385 differ diff --git a/Library/Artifacts/e6/e6d695595df90dd9a7ab0546b75afe47 b/Library/Artifacts/e6/e6d695595df90dd9a7ab0546b75afe47 new file mode 100644 index 0000000..b9010f4 Binary files /dev/null and b/Library/Artifacts/e6/e6d695595df90dd9a7ab0546b75afe47 differ diff --git a/Library/Artifacts/e6/e6e81b6ce1c79e943c13330bb063f654 b/Library/Artifacts/e6/e6e81b6ce1c79e943c13330bb063f654 new file mode 100644 index 0000000..d4f2cbd Binary files /dev/null and b/Library/Artifacts/e6/e6e81b6ce1c79e943c13330bb063f654 differ diff --git a/Library/Artifacts/e6/e6ebaf50789db400a111ac54eb48b184 b/Library/Artifacts/e6/e6ebaf50789db400a111ac54eb48b184 new file mode 100644 index 0000000..5982ce5 Binary files /dev/null and b/Library/Artifacts/e6/e6ebaf50789db400a111ac54eb48b184 differ diff --git a/Library/Artifacts/e7/e70032f2b00c8643b7875d5700c9d9be b/Library/Artifacts/e7/e70032f2b00c8643b7875d5700c9d9be new file mode 100644 index 0000000..8ce81eb Binary files /dev/null and b/Library/Artifacts/e7/e70032f2b00c8643b7875d5700c9d9be differ diff --git a/Library/Artifacts/e7/e715de29b4663e73e0702987943de46e b/Library/Artifacts/e7/e715de29b4663e73e0702987943de46e new file mode 100644 index 0000000..ebca04e Binary files /dev/null and b/Library/Artifacts/e7/e715de29b4663e73e0702987943de46e differ diff --git a/Library/Artifacts/e7/e72046b14e5279886f965b0dcd0276dc b/Library/Artifacts/e7/e72046b14e5279886f965b0dcd0276dc new file mode 100644 index 0000000..2b3cc41 Binary files /dev/null and b/Library/Artifacts/e7/e72046b14e5279886f965b0dcd0276dc differ diff --git a/Library/Artifacts/e7/e7946d3b13f5631642938620e87ff497 b/Library/Artifacts/e7/e7946d3b13f5631642938620e87ff497 new file mode 100644 index 0000000..ed76679 Binary files /dev/null and b/Library/Artifacts/e7/e7946d3b13f5631642938620e87ff497 differ diff --git a/Library/Artifacts/e7/e7eca72270c20506585893f261d3e1a1 b/Library/Artifacts/e7/e7eca72270c20506585893f261d3e1a1 new file mode 100644 index 0000000..0ffdb5f Binary files /dev/null and b/Library/Artifacts/e7/e7eca72270c20506585893f261d3e1a1 differ diff --git a/Library/Artifacts/e8/e8194503f58f07da5a97290070b0df24 b/Library/Artifacts/e8/e8194503f58f07da5a97290070b0df24 new file mode 100644 index 0000000..aabd9df Binary files /dev/null and b/Library/Artifacts/e8/e8194503f58f07da5a97290070b0df24 differ diff --git a/Library/Artifacts/e8/e8298fe1ecbb7d625399693d224f34d1 b/Library/Artifacts/e8/e8298fe1ecbb7d625399693d224f34d1 new file mode 100644 index 0000000..2b98a7a Binary files /dev/null and b/Library/Artifacts/e8/e8298fe1ecbb7d625399693d224f34d1 differ diff --git a/Library/Artifacts/e8/e87d7f549cbddaefec98b1fd620445ef b/Library/Artifacts/e8/e87d7f549cbddaefec98b1fd620445ef new file mode 100644 index 0000000..aa60cfb Binary files /dev/null and b/Library/Artifacts/e8/e87d7f549cbddaefec98b1fd620445ef differ diff --git a/Library/Artifacts/e8/e8a22e0487800516c739822b52fc1c1e b/Library/Artifacts/e8/e8a22e0487800516c739822b52fc1c1e new file mode 100644 index 0000000..8a66cd8 Binary files /dev/null and b/Library/Artifacts/e8/e8a22e0487800516c739822b52fc1c1e differ diff --git a/Library/Artifacts/e8/e8a4f63a84a1f5737e8075476a5436a3 b/Library/Artifacts/e8/e8a4f63a84a1f5737e8075476a5436a3 new file mode 100644 index 0000000..d7c82af Binary files /dev/null and b/Library/Artifacts/e8/e8a4f63a84a1f5737e8075476a5436a3 differ diff --git a/Library/Artifacts/e8/e8e1b2159a899f5b988af21d4c3851ee b/Library/Artifacts/e8/e8e1b2159a899f5b988af21d4c3851ee new file mode 100644 index 0000000..6bec911 Binary files /dev/null and b/Library/Artifacts/e8/e8e1b2159a899f5b988af21d4c3851ee differ diff --git a/Library/Artifacts/e9/e90032c72b8fd03f8557a7358834dc3a b/Library/Artifacts/e9/e90032c72b8fd03f8557a7358834dc3a new file mode 100644 index 0000000..3c343e9 Binary files /dev/null and b/Library/Artifacts/e9/e90032c72b8fd03f8557a7358834dc3a differ diff --git a/Library/Artifacts/e9/e912482b35d3b54d755bec134a4c4510 b/Library/Artifacts/e9/e912482b35d3b54d755bec134a4c4510 new file mode 100644 index 0000000..363c863 Binary files /dev/null and b/Library/Artifacts/e9/e912482b35d3b54d755bec134a4c4510 differ diff --git a/Library/Artifacts/e9/e91a422edda9d4c4d4b7140aa0247383 b/Library/Artifacts/e9/e91a422edda9d4c4d4b7140aa0247383 new file mode 100644 index 0000000..1fa4ce4 Binary files /dev/null and b/Library/Artifacts/e9/e91a422edda9d4c4d4b7140aa0247383 differ diff --git a/Library/Artifacts/e9/e91e2b23b6ca407721d6f0bd4c911d48 b/Library/Artifacts/e9/e91e2b23b6ca407721d6f0bd4c911d48 new file mode 100644 index 0000000..21234db Binary files /dev/null and b/Library/Artifacts/e9/e91e2b23b6ca407721d6f0bd4c911d48 differ diff --git a/Library/Artifacts/e9/e9205c3fbc91c9bbc8f4b42e547b77c9 b/Library/Artifacts/e9/e9205c3fbc91c9bbc8f4b42e547b77c9 new file mode 100644 index 0000000..bb51d99 Binary files /dev/null and b/Library/Artifacts/e9/e9205c3fbc91c9bbc8f4b42e547b77c9 differ diff --git a/Library/Artifacts/e9/e94b8266e42044658c3292d5c33e1bab b/Library/Artifacts/e9/e94b8266e42044658c3292d5c33e1bab new file mode 100644 index 0000000..dfcf5ee Binary files /dev/null and b/Library/Artifacts/e9/e94b8266e42044658c3292d5c33e1bab differ diff --git a/Library/Artifacts/e9/e94f185a99f59900af11920bfdce0b60 b/Library/Artifacts/e9/e94f185a99f59900af11920bfdce0b60 new file mode 100644 index 0000000..2201d31 Binary files /dev/null and b/Library/Artifacts/e9/e94f185a99f59900af11920bfdce0b60 differ diff --git a/Library/Artifacts/e9/e952ff1458781e6355c7b0ccd3a13044 b/Library/Artifacts/e9/e952ff1458781e6355c7b0ccd3a13044 new file mode 100644 index 0000000..719b941 Binary files /dev/null and b/Library/Artifacts/e9/e952ff1458781e6355c7b0ccd3a13044 differ diff --git a/Library/Artifacts/e9/e954176b01afd58852f260274fc6f4a9 b/Library/Artifacts/e9/e954176b01afd58852f260274fc6f4a9 new file mode 100644 index 0000000..c500531 Binary files /dev/null and b/Library/Artifacts/e9/e954176b01afd58852f260274fc6f4a9 differ diff --git a/Library/Artifacts/e9/e979717ea76c64799d132b80055c574c b/Library/Artifacts/e9/e979717ea76c64799d132b80055c574c new file mode 100644 index 0000000..c48f4fb Binary files /dev/null and b/Library/Artifacts/e9/e979717ea76c64799d132b80055c574c differ diff --git a/Library/Artifacts/e9/e981844c742e6b1829283add73866743 b/Library/Artifacts/e9/e981844c742e6b1829283add73866743 new file mode 100644 index 0000000..5ae31fc Binary files /dev/null and b/Library/Artifacts/e9/e981844c742e6b1829283add73866743 differ diff --git a/Library/Artifacts/e9/e9865f7c24cf998dc451068f941f2952 b/Library/Artifacts/e9/e9865f7c24cf998dc451068f941f2952 new file mode 100644 index 0000000..e186c27 Binary files /dev/null and b/Library/Artifacts/e9/e9865f7c24cf998dc451068f941f2952 differ diff --git a/Library/Artifacts/e9/e99cbc5ee06fcf8bb6eec53c46053545 b/Library/Artifacts/e9/e99cbc5ee06fcf8bb6eec53c46053545 new file mode 100644 index 0000000..ba6f650 Binary files /dev/null and b/Library/Artifacts/e9/e99cbc5ee06fcf8bb6eec53c46053545 differ diff --git a/Library/Artifacts/e9/e9b4712582d273d36a33d296d7278b65 b/Library/Artifacts/e9/e9b4712582d273d36a33d296d7278b65 new file mode 100644 index 0000000..6cf3f9e Binary files /dev/null and b/Library/Artifacts/e9/e9b4712582d273d36a33d296d7278b65 differ diff --git a/Library/Artifacts/e9/e9c1eba0924c4ad6e652f819df3b11ee b/Library/Artifacts/e9/e9c1eba0924c4ad6e652f819df3b11ee new file mode 100644 index 0000000..1fde536 Binary files /dev/null and b/Library/Artifacts/e9/e9c1eba0924c4ad6e652f819df3b11ee differ diff --git a/Library/Artifacts/e9/e9c86ce15f609fe83a8e3930499802ea b/Library/Artifacts/e9/e9c86ce15f609fe83a8e3930499802ea new file mode 100644 index 0000000..8d77f66 Binary files /dev/null and b/Library/Artifacts/e9/e9c86ce15f609fe83a8e3930499802ea differ diff --git a/Library/Artifacts/ea/ea1ccf4f23550a11257b276f4c7fec35 b/Library/Artifacts/ea/ea1ccf4f23550a11257b276f4c7fec35 new file mode 100644 index 0000000..32329be Binary files /dev/null and b/Library/Artifacts/ea/ea1ccf4f23550a11257b276f4c7fec35 differ diff --git a/Library/Artifacts/ea/ea4930b1428760db8886df94dd0efced b/Library/Artifacts/ea/ea4930b1428760db8886df94dd0efced new file mode 100644 index 0000000..1aa53e7 Binary files /dev/null and b/Library/Artifacts/ea/ea4930b1428760db8886df94dd0efced differ diff --git a/Library/Artifacts/ea/ead5a5550ceecb4c2b0327c5afbe3236 b/Library/Artifacts/ea/ead5a5550ceecb4c2b0327c5afbe3236 new file mode 100644 index 0000000..6eaa065 Binary files /dev/null and b/Library/Artifacts/ea/ead5a5550ceecb4c2b0327c5afbe3236 differ diff --git a/Library/Artifacts/ea/eadd2a6b48717a2c99becb87ccc96b1d b/Library/Artifacts/ea/eadd2a6b48717a2c99becb87ccc96b1d new file mode 100644 index 0000000..b953ae0 Binary files /dev/null and b/Library/Artifacts/ea/eadd2a6b48717a2c99becb87ccc96b1d differ diff --git a/Library/Artifacts/ea/eaee5bf783dc2da0543d23c03e9132eb b/Library/Artifacts/ea/eaee5bf783dc2da0543d23c03e9132eb new file mode 100644 index 0000000..3a6bf82 Binary files /dev/null and b/Library/Artifacts/ea/eaee5bf783dc2da0543d23c03e9132eb differ diff --git a/Library/Artifacts/eb/eb187095c04337026f813ae49c047377 b/Library/Artifacts/eb/eb187095c04337026f813ae49c047377 new file mode 100644 index 0000000..040e7c3 Binary files /dev/null and b/Library/Artifacts/eb/eb187095c04337026f813ae49c047377 differ diff --git a/Library/Artifacts/eb/eb26022456ac60c57efb43851fb3807b b/Library/Artifacts/eb/eb26022456ac60c57efb43851fb3807b new file mode 100644 index 0000000..d6bc7cc Binary files /dev/null and b/Library/Artifacts/eb/eb26022456ac60c57efb43851fb3807b differ diff --git a/Library/Artifacts/eb/eb2ef1ef7ccecc64b09ce4b0f4e94ed5 b/Library/Artifacts/eb/eb2ef1ef7ccecc64b09ce4b0f4e94ed5 new file mode 100644 index 0000000..a93caf9 Binary files /dev/null and b/Library/Artifacts/eb/eb2ef1ef7ccecc64b09ce4b0f4e94ed5 differ diff --git a/Library/Artifacts/eb/eb65298b10a9c5593cc55b4be481195e b/Library/Artifacts/eb/eb65298b10a9c5593cc55b4be481195e new file mode 100644 index 0000000..a2d0c57 Binary files /dev/null and b/Library/Artifacts/eb/eb65298b10a9c5593cc55b4be481195e differ diff --git a/Library/Artifacts/eb/eb6b12299ad6c9a1209d2a1a7dc4e8e1 b/Library/Artifacts/eb/eb6b12299ad6c9a1209d2a1a7dc4e8e1 new file mode 100644 index 0000000..9937b2d Binary files /dev/null and b/Library/Artifacts/eb/eb6b12299ad6c9a1209d2a1a7dc4e8e1 differ diff --git a/Library/Artifacts/eb/eb85952ac28c483420afcac2dbf15e56 b/Library/Artifacts/eb/eb85952ac28c483420afcac2dbf15e56 new file mode 100644 index 0000000..dc68e3a Binary files /dev/null and b/Library/Artifacts/eb/eb85952ac28c483420afcac2dbf15e56 differ diff --git a/Library/Artifacts/eb/eb9ab0dd04f3441e0675fbbda1591b8d b/Library/Artifacts/eb/eb9ab0dd04f3441e0675fbbda1591b8d new file mode 100644 index 0000000..f16b3b4 Binary files /dev/null and b/Library/Artifacts/eb/eb9ab0dd04f3441e0675fbbda1591b8d differ diff --git a/Library/Artifacts/eb/eba831ddea614d283810d99a1203a183 b/Library/Artifacts/eb/eba831ddea614d283810d99a1203a183 new file mode 100644 index 0000000..e854c4d Binary files /dev/null and b/Library/Artifacts/eb/eba831ddea614d283810d99a1203a183 differ diff --git a/Library/Artifacts/eb/ebb04b3fdd7b8ac60629526377fc8e32 b/Library/Artifacts/eb/ebb04b3fdd7b8ac60629526377fc8e32 new file mode 100644 index 0000000..8f9b7b6 Binary files /dev/null and b/Library/Artifacts/eb/ebb04b3fdd7b8ac60629526377fc8e32 differ diff --git a/Library/Artifacts/ec/ec0d08f09ebcfa6a7296ddeb04919e9e b/Library/Artifacts/ec/ec0d08f09ebcfa6a7296ddeb04919e9e new file mode 100644 index 0000000..b0911e1 Binary files /dev/null and b/Library/Artifacts/ec/ec0d08f09ebcfa6a7296ddeb04919e9e differ diff --git a/Library/Artifacts/ec/ec29629e9b4ef8dece298f0234469a27 b/Library/Artifacts/ec/ec29629e9b4ef8dece298f0234469a27 new file mode 100644 index 0000000..ebcdb1f Binary files /dev/null and b/Library/Artifacts/ec/ec29629e9b4ef8dece298f0234469a27 differ diff --git a/Library/Artifacts/ec/ec324142b98f1b50a85515e23eea79b5 b/Library/Artifacts/ec/ec324142b98f1b50a85515e23eea79b5 new file mode 100644 index 0000000..c95b175 Binary files /dev/null and b/Library/Artifacts/ec/ec324142b98f1b50a85515e23eea79b5 differ diff --git a/Library/Artifacts/ec/ec5ea3da9b3f05a050ac09b7b2719d86 b/Library/Artifacts/ec/ec5ea3da9b3f05a050ac09b7b2719d86 new file mode 100644 index 0000000..440f721 Binary files /dev/null and b/Library/Artifacts/ec/ec5ea3da9b3f05a050ac09b7b2719d86 differ diff --git a/Library/Artifacts/ec/ec7fe1bba55f57a510c334a34df1792c b/Library/Artifacts/ec/ec7fe1bba55f57a510c334a34df1792c new file mode 100644 index 0000000..89295e3 Binary files /dev/null and b/Library/Artifacts/ec/ec7fe1bba55f57a510c334a34df1792c differ diff --git a/Library/Artifacts/ec/eccd8b2b2796cea95307b1fc97928bae b/Library/Artifacts/ec/eccd8b2b2796cea95307b1fc97928bae new file mode 100644 index 0000000..f1fd97d Binary files /dev/null and b/Library/Artifacts/ec/eccd8b2b2796cea95307b1fc97928bae differ diff --git a/Library/Artifacts/ec/ecd929a2d9ac5c99be91a9efdabc12e2 b/Library/Artifacts/ec/ecd929a2d9ac5c99be91a9efdabc12e2 new file mode 100644 index 0000000..476ba87 Binary files /dev/null and b/Library/Artifacts/ec/ecd929a2d9ac5c99be91a9efdabc12e2 differ diff --git a/Library/Artifacts/ec/ecf573f0acffd36f9d0aacd6c6b403b6 b/Library/Artifacts/ec/ecf573f0acffd36f9d0aacd6c6b403b6 new file mode 100644 index 0000000..b37fdec Binary files /dev/null and b/Library/Artifacts/ec/ecf573f0acffd36f9d0aacd6c6b403b6 differ diff --git a/Library/Artifacts/ec/ecfb102ba541169e583bba21658c9850 b/Library/Artifacts/ec/ecfb102ba541169e583bba21658c9850 new file mode 100644 index 0000000..f31e6de Binary files /dev/null and b/Library/Artifacts/ec/ecfb102ba541169e583bba21658c9850 differ diff --git a/Library/Artifacts/ed/ed12d52e7992cf22e09224aa1d1b2432 b/Library/Artifacts/ed/ed12d52e7992cf22e09224aa1d1b2432 new file mode 100644 index 0000000..c3ca23b Binary files /dev/null and b/Library/Artifacts/ed/ed12d52e7992cf22e09224aa1d1b2432 differ diff --git a/Library/Artifacts/ed/ed13d336d7f1f72684b3da163355a6da b/Library/Artifacts/ed/ed13d336d7f1f72684b3da163355a6da new file mode 100644 index 0000000..0e9a0e2 Binary files /dev/null and b/Library/Artifacts/ed/ed13d336d7f1f72684b3da163355a6da differ diff --git a/Library/Artifacts/ed/ed50c2b2958b357a42e2128b1df76e67 b/Library/Artifacts/ed/ed50c2b2958b357a42e2128b1df76e67 new file mode 100644 index 0000000..0e3fbff Binary files /dev/null and b/Library/Artifacts/ed/ed50c2b2958b357a42e2128b1df76e67 differ diff --git a/Library/Artifacts/ed/ed54b9da243ce1073630233a6fee5545 b/Library/Artifacts/ed/ed54b9da243ce1073630233a6fee5545 new file mode 100644 index 0000000..10a5d76 Binary files /dev/null and b/Library/Artifacts/ed/ed54b9da243ce1073630233a6fee5545 differ diff --git a/Library/Artifacts/ed/edb3356d1e57d3bcb98809c63844fd27 b/Library/Artifacts/ed/edb3356d1e57d3bcb98809c63844fd27 new file mode 100644 index 0000000..5664169 Binary files /dev/null and b/Library/Artifacts/ed/edb3356d1e57d3bcb98809c63844fd27 differ diff --git a/Library/Artifacts/ed/edc3199698c6a5692d24e3e7fbcda0b2 b/Library/Artifacts/ed/edc3199698c6a5692d24e3e7fbcda0b2 new file mode 100644 index 0000000..fa33f4a Binary files /dev/null and b/Library/Artifacts/ed/edc3199698c6a5692d24e3e7fbcda0b2 differ diff --git a/Library/Artifacts/ed/edfe03d54aa7d7c216e0d3116edd26f5 b/Library/Artifacts/ed/edfe03d54aa7d7c216e0d3116edd26f5 new file mode 100644 index 0000000..f1d9a80 Binary files /dev/null and b/Library/Artifacts/ed/edfe03d54aa7d7c216e0d3116edd26f5 differ diff --git a/Library/Artifacts/ee/ee10b5ac47e170fd029e76a0321cf66b b/Library/Artifacts/ee/ee10b5ac47e170fd029e76a0321cf66b new file mode 100644 index 0000000..f8ab03e Binary files /dev/null and b/Library/Artifacts/ee/ee10b5ac47e170fd029e76a0321cf66b differ diff --git a/Library/Artifacts/ee/ee4524ef191d273dd30faf2ca368b53e b/Library/Artifacts/ee/ee4524ef191d273dd30faf2ca368b53e new file mode 100644 index 0000000..b1c4060 Binary files /dev/null and b/Library/Artifacts/ee/ee4524ef191d273dd30faf2ca368b53e differ diff --git a/Library/Artifacts/ee/eeaa122fd887620e8ba99cc0694a2408 b/Library/Artifacts/ee/eeaa122fd887620e8ba99cc0694a2408 new file mode 100644 index 0000000..436596a Binary files /dev/null and b/Library/Artifacts/ee/eeaa122fd887620e8ba99cc0694a2408 differ diff --git a/Library/Artifacts/ee/eeaf473161c17c47e19616925887ccb7 b/Library/Artifacts/ee/eeaf473161c17c47e19616925887ccb7 new file mode 100644 index 0000000..ea8c17f Binary files /dev/null and b/Library/Artifacts/ee/eeaf473161c17c47e19616925887ccb7 differ diff --git a/Library/Artifacts/ee/eec7aa99ab80a36678aa0dd0e56536fb b/Library/Artifacts/ee/eec7aa99ab80a36678aa0dd0e56536fb new file mode 100644 index 0000000..d34e608 Binary files /dev/null and b/Library/Artifacts/ee/eec7aa99ab80a36678aa0dd0e56536fb differ diff --git a/Library/Artifacts/ef/ef3d75099db784a5409b1a63b2af8588 b/Library/Artifacts/ef/ef3d75099db784a5409b1a63b2af8588 new file mode 100644 index 0000000..75ede81 Binary files /dev/null and b/Library/Artifacts/ef/ef3d75099db784a5409b1a63b2af8588 differ diff --git a/Library/Artifacts/ef/ef7b50f0469ac55a6d854273277d211b b/Library/Artifacts/ef/ef7b50f0469ac55a6d854273277d211b new file mode 100644 index 0000000..40dc974 Binary files /dev/null and b/Library/Artifacts/ef/ef7b50f0469ac55a6d854273277d211b differ diff --git a/Library/Artifacts/ef/ef8c5761073d7fffdd2f7c2a31e153f1 b/Library/Artifacts/ef/ef8c5761073d7fffdd2f7c2a31e153f1 new file mode 100644 index 0000000..51d3fb4 Binary files /dev/null and b/Library/Artifacts/ef/ef8c5761073d7fffdd2f7c2a31e153f1 differ diff --git a/Library/Artifacts/ef/ef9ab995ee2a57d9e1bba30594d7bc53 b/Library/Artifacts/ef/ef9ab995ee2a57d9e1bba30594d7bc53 new file mode 100644 index 0000000..79c1e9a Binary files /dev/null and b/Library/Artifacts/ef/ef9ab995ee2a57d9e1bba30594d7bc53 differ diff --git a/Library/Artifacts/ef/efb1a3453ccefe83aa4b543063c58d8b b/Library/Artifacts/ef/efb1a3453ccefe83aa4b543063c58d8b new file mode 100644 index 0000000..f2d854d Binary files /dev/null and b/Library/Artifacts/ef/efb1a3453ccefe83aa4b543063c58d8b differ diff --git a/Library/Artifacts/ef/efbedb70dd418d92cfb67c7d9ed1c0eb b/Library/Artifacts/ef/efbedb70dd418d92cfb67c7d9ed1c0eb new file mode 100644 index 0000000..020f2fd Binary files /dev/null and b/Library/Artifacts/ef/efbedb70dd418d92cfb67c7d9ed1c0eb differ diff --git a/Library/Artifacts/ef/efe084376d767de155061c1d910fc693 b/Library/Artifacts/ef/efe084376d767de155061c1d910fc693 new file mode 100644 index 0000000..f415621 Binary files /dev/null and b/Library/Artifacts/ef/efe084376d767de155061c1d910fc693 differ diff --git a/Library/Artifacts/f0/f023600c9d16023dc8f5f1e42206cb59 b/Library/Artifacts/f0/f023600c9d16023dc8f5f1e42206cb59 new file mode 100644 index 0000000..588f39b Binary files /dev/null and b/Library/Artifacts/f0/f023600c9d16023dc8f5f1e42206cb59 differ diff --git a/Library/Artifacts/f0/f03442c85f86d558403ed8658b754bed b/Library/Artifacts/f0/f03442c85f86d558403ed8658b754bed new file mode 100644 index 0000000..9b21b25 Binary files /dev/null and b/Library/Artifacts/f0/f03442c85f86d558403ed8658b754bed differ diff --git a/Library/Artifacts/f0/f0388ce27d963c7fabdf4b1d6f12f3e5 b/Library/Artifacts/f0/f0388ce27d963c7fabdf4b1d6f12f3e5 new file mode 100644 index 0000000..6230050 Binary files /dev/null and b/Library/Artifacts/f0/f0388ce27d963c7fabdf4b1d6f12f3e5 differ diff --git a/Library/Artifacts/f0/f04f4b82b224a6e876b8328332721bb5 b/Library/Artifacts/f0/f04f4b82b224a6e876b8328332721bb5 new file mode 100644 index 0000000..9126d10 Binary files /dev/null and b/Library/Artifacts/f0/f04f4b82b224a6e876b8328332721bb5 differ diff --git a/Library/Artifacts/f0/f052c4af7e31dbe8d088df31641f96d7 b/Library/Artifacts/f0/f052c4af7e31dbe8d088df31641f96d7 new file mode 100644 index 0000000..6df9fcf Binary files /dev/null and b/Library/Artifacts/f0/f052c4af7e31dbe8d088df31641f96d7 differ diff --git a/Library/Artifacts/f0/f05b3052d3a1f2c4e2e47be84237eded b/Library/Artifacts/f0/f05b3052d3a1f2c4e2e47be84237eded new file mode 100644 index 0000000..e1eb0e3 Binary files /dev/null and b/Library/Artifacts/f0/f05b3052d3a1f2c4e2e47be84237eded differ diff --git a/Library/Artifacts/f0/f0661ad83e3d376f3b23b41e8e81636b b/Library/Artifacts/f0/f0661ad83e3d376f3b23b41e8e81636b new file mode 100644 index 0000000..fdbd55f Binary files /dev/null and b/Library/Artifacts/f0/f0661ad83e3d376f3b23b41e8e81636b differ diff --git a/Library/Artifacts/f0/f09a1277c85fde1ad9bc11421c3fb209 b/Library/Artifacts/f0/f09a1277c85fde1ad9bc11421c3fb209 new file mode 100644 index 0000000..3a05730 Binary files /dev/null and b/Library/Artifacts/f0/f09a1277c85fde1ad9bc11421c3fb209 differ diff --git a/Library/Artifacts/f0/f0c30d79fdeb2f54d9632526ffd929a9 b/Library/Artifacts/f0/f0c30d79fdeb2f54d9632526ffd929a9 new file mode 100644 index 0000000..e3fe140 Binary files /dev/null and b/Library/Artifacts/f0/f0c30d79fdeb2f54d9632526ffd929a9 differ diff --git a/Library/Artifacts/f0/f0dc46f1b9e4100b340fa869d067ad9a b/Library/Artifacts/f0/f0dc46f1b9e4100b340fa869d067ad9a new file mode 100644 index 0000000..6e792ae Binary files /dev/null and b/Library/Artifacts/f0/f0dc46f1b9e4100b340fa869d067ad9a differ diff --git a/Library/Artifacts/f0/f0f980bebe2af8e0a1e00e57e4f5bcfa b/Library/Artifacts/f0/f0f980bebe2af8e0a1e00e57e4f5bcfa new file mode 100644 index 0000000..b94f9c0 Binary files /dev/null and b/Library/Artifacts/f0/f0f980bebe2af8e0a1e00e57e4f5bcfa differ diff --git a/Library/Artifacts/f1/f11c8642b935b924e865e84ee2b35499 b/Library/Artifacts/f1/f11c8642b935b924e865e84ee2b35499 new file mode 100644 index 0000000..c1b5d55 Binary files /dev/null and b/Library/Artifacts/f1/f11c8642b935b924e865e84ee2b35499 differ diff --git a/Library/Artifacts/f1/f147f22655dd347ae1e32accdd74e3a5 b/Library/Artifacts/f1/f147f22655dd347ae1e32accdd74e3a5 new file mode 100644 index 0000000..502dee7 Binary files /dev/null and b/Library/Artifacts/f1/f147f22655dd347ae1e32accdd74e3a5 differ diff --git a/Library/Artifacts/f1/f16a7dbf1e503d80b5fc4c9981aff65f b/Library/Artifacts/f1/f16a7dbf1e503d80b5fc4c9981aff65f new file mode 100644 index 0000000..8f6f57c Binary files /dev/null and b/Library/Artifacts/f1/f16a7dbf1e503d80b5fc4c9981aff65f differ diff --git a/Library/Artifacts/f1/f1ac08e48411f7b06fe4af16fb4d9db5 b/Library/Artifacts/f1/f1ac08e48411f7b06fe4af16fb4d9db5 new file mode 100644 index 0000000..bd13f39 Binary files /dev/null and b/Library/Artifacts/f1/f1ac08e48411f7b06fe4af16fb4d9db5 differ diff --git a/Library/Artifacts/f1/f1b1f6e8f1d1195649ac6fa2b5b44d0f b/Library/Artifacts/f1/f1b1f6e8f1d1195649ac6fa2b5b44d0f new file mode 100644 index 0000000..7f5d6d1 Binary files /dev/null and b/Library/Artifacts/f1/f1b1f6e8f1d1195649ac6fa2b5b44d0f differ diff --git a/Library/Artifacts/f1/f1d5bc8ba2e5c765680753da145621ad b/Library/Artifacts/f1/f1d5bc8ba2e5c765680753da145621ad new file mode 100644 index 0000000..87656b4 Binary files /dev/null and b/Library/Artifacts/f1/f1d5bc8ba2e5c765680753da145621ad differ diff --git a/Library/Artifacts/f2/f22f7ace7e11e9bb2ba7fbfad7737902 b/Library/Artifacts/f2/f22f7ace7e11e9bb2ba7fbfad7737902 new file mode 100644 index 0000000..ace19c8 Binary files /dev/null and b/Library/Artifacts/f2/f22f7ace7e11e9bb2ba7fbfad7737902 differ diff --git a/Library/Artifacts/f2/f2445a46b330b122df0b4db275384b3f b/Library/Artifacts/f2/f2445a46b330b122df0b4db275384b3f new file mode 100644 index 0000000..7b58ce3 Binary files /dev/null and b/Library/Artifacts/f2/f2445a46b330b122df0b4db275384b3f differ diff --git a/Library/Artifacts/f2/f277b50581f63204c040448db99f0bd2 b/Library/Artifacts/f2/f277b50581f63204c040448db99f0bd2 new file mode 100644 index 0000000..690d4ed Binary files /dev/null and b/Library/Artifacts/f2/f277b50581f63204c040448db99f0bd2 differ diff --git a/Library/Artifacts/f2/f2b9eaa5b66159dc98f34fcdadc2178e b/Library/Artifacts/f2/f2b9eaa5b66159dc98f34fcdadc2178e new file mode 100644 index 0000000..cd2de65 Binary files /dev/null and b/Library/Artifacts/f2/f2b9eaa5b66159dc98f34fcdadc2178e differ diff --git a/Library/Artifacts/f2/f2d65da7ef5fa19d0cfe8bbfd3d58e76 b/Library/Artifacts/f2/f2d65da7ef5fa19d0cfe8bbfd3d58e76 new file mode 100644 index 0000000..dab921e Binary files /dev/null and b/Library/Artifacts/f2/f2d65da7ef5fa19d0cfe8bbfd3d58e76 differ diff --git a/Library/Artifacts/f3/f30f1a9569f6df2eee0f2c8948b344e8 b/Library/Artifacts/f3/f30f1a9569f6df2eee0f2c8948b344e8 new file mode 100644 index 0000000..780bf78 Binary files /dev/null and b/Library/Artifacts/f3/f30f1a9569f6df2eee0f2c8948b344e8 differ diff --git a/Library/Artifacts/f3/f331e99b3be83812269a4df1d820e749 b/Library/Artifacts/f3/f331e99b3be83812269a4df1d820e749 new file mode 100644 index 0000000..046aa8a Binary files /dev/null and b/Library/Artifacts/f3/f331e99b3be83812269a4df1d820e749 differ diff --git a/Library/Artifacts/f3/f34be6b602c1b6da799150ee20c65d00 b/Library/Artifacts/f3/f34be6b602c1b6da799150ee20c65d00 new file mode 100644 index 0000000..a777095 Binary files /dev/null and b/Library/Artifacts/f3/f34be6b602c1b6da799150ee20c65d00 differ diff --git a/Library/Artifacts/f3/f35b5a925cf0ad4e02f21c6eca8cfd0f b/Library/Artifacts/f3/f35b5a925cf0ad4e02f21c6eca8cfd0f new file mode 100644 index 0000000..9b37518 Binary files /dev/null and b/Library/Artifacts/f3/f35b5a925cf0ad4e02f21c6eca8cfd0f differ diff --git a/Library/Artifacts/f3/f36b38906c3b66e54118d717f8742186 b/Library/Artifacts/f3/f36b38906c3b66e54118d717f8742186 new file mode 100644 index 0000000..8bd4c1b Binary files /dev/null and b/Library/Artifacts/f3/f36b38906c3b66e54118d717f8742186 differ diff --git a/Library/Artifacts/f3/f36d295d11fca5885755859eb8186594 b/Library/Artifacts/f3/f36d295d11fca5885755859eb8186594 new file mode 100644 index 0000000..66b66ae Binary files /dev/null and b/Library/Artifacts/f3/f36d295d11fca5885755859eb8186594 differ diff --git a/Library/Artifacts/f3/f38048b402a061c5166261257972ba82 b/Library/Artifacts/f3/f38048b402a061c5166261257972ba82 new file mode 100644 index 0000000..7555a3a Binary files /dev/null and b/Library/Artifacts/f3/f38048b402a061c5166261257972ba82 differ diff --git a/Library/Artifacts/f3/f395ba7bf61dfb28600b61bcca89e12a b/Library/Artifacts/f3/f395ba7bf61dfb28600b61bcca89e12a new file mode 100644 index 0000000..2c47b8d Binary files /dev/null and b/Library/Artifacts/f3/f395ba7bf61dfb28600b61bcca89e12a differ diff --git a/Library/Artifacts/f3/f39c896f9c64036fd640e1124706bc2b b/Library/Artifacts/f3/f39c896f9c64036fd640e1124706bc2b new file mode 100644 index 0000000..150731a Binary files /dev/null and b/Library/Artifacts/f3/f39c896f9c64036fd640e1124706bc2b differ diff --git a/Library/Artifacts/f3/f3a12d7e756bf9b3b424961dc432fdb6 b/Library/Artifacts/f3/f3a12d7e756bf9b3b424961dc432fdb6 new file mode 100644 index 0000000..d0313e6 Binary files /dev/null and b/Library/Artifacts/f3/f3a12d7e756bf9b3b424961dc432fdb6 differ diff --git a/Library/Artifacts/f3/f3c39b00bea5beb877613c618d3bd2d8 b/Library/Artifacts/f3/f3c39b00bea5beb877613c618d3bd2d8 new file mode 100644 index 0000000..66c930f Binary files /dev/null and b/Library/Artifacts/f3/f3c39b00bea5beb877613c618d3bd2d8 differ diff --git a/Library/Artifacts/f3/f3fc01f1a69b830d0eea69f726edae2d b/Library/Artifacts/f3/f3fc01f1a69b830d0eea69f726edae2d new file mode 100644 index 0000000..ee37e37 Binary files /dev/null and b/Library/Artifacts/f3/f3fc01f1a69b830d0eea69f726edae2d differ diff --git a/Library/Artifacts/f4/f41c894a64238b23c50915c295af9295 b/Library/Artifacts/f4/f41c894a64238b23c50915c295af9295 new file mode 100644 index 0000000..d704ad7 Binary files /dev/null and b/Library/Artifacts/f4/f41c894a64238b23c50915c295af9295 differ diff --git a/Library/Artifacts/f4/f46d395ffbc74fcb4a68101fad81fb37 b/Library/Artifacts/f4/f46d395ffbc74fcb4a68101fad81fb37 new file mode 100644 index 0000000..df70a49 Binary files /dev/null and b/Library/Artifacts/f4/f46d395ffbc74fcb4a68101fad81fb37 differ diff --git a/Library/Artifacts/f4/f4711da9b4d9a1afd0ddfe351262ecbe b/Library/Artifacts/f4/f4711da9b4d9a1afd0ddfe351262ecbe new file mode 100644 index 0000000..83334a7 Binary files /dev/null and b/Library/Artifacts/f4/f4711da9b4d9a1afd0ddfe351262ecbe differ diff --git a/Library/Artifacts/f4/f47827b384af4fe60e9ace11edd0cce9 b/Library/Artifacts/f4/f47827b384af4fe60e9ace11edd0cce9 new file mode 100644 index 0000000..fbdfe63 Binary files /dev/null and b/Library/Artifacts/f4/f47827b384af4fe60e9ace11edd0cce9 differ diff --git a/Library/Artifacts/f4/f4e7df9d6dcc2580fe5628acbfacc80f b/Library/Artifacts/f4/f4e7df9d6dcc2580fe5628acbfacc80f new file mode 100644 index 0000000..b4574e0 Binary files /dev/null and b/Library/Artifacts/f4/f4e7df9d6dcc2580fe5628acbfacc80f differ diff --git a/Library/Artifacts/f4/f4fc0f07b3a7555b43022b2eef3c61ba b/Library/Artifacts/f4/f4fc0f07b3a7555b43022b2eef3c61ba new file mode 100644 index 0000000..2ac83c9 Binary files /dev/null and b/Library/Artifacts/f4/f4fc0f07b3a7555b43022b2eef3c61ba differ diff --git a/Library/Artifacts/f5/f509544b1ca8b3c8a35cd00d36726ac0 b/Library/Artifacts/f5/f509544b1ca8b3c8a35cd00d36726ac0 new file mode 100644 index 0000000..b6892e1 Binary files /dev/null and b/Library/Artifacts/f5/f509544b1ca8b3c8a35cd00d36726ac0 differ diff --git a/Library/Artifacts/f5/f52446b5668861041357cced3ae00755 b/Library/Artifacts/f5/f52446b5668861041357cced3ae00755 new file mode 100644 index 0000000..cde2e04 Binary files /dev/null and b/Library/Artifacts/f5/f52446b5668861041357cced3ae00755 differ diff --git a/Library/Artifacts/f5/f5320a5eb5e456843ce6f657a4a56c69 b/Library/Artifacts/f5/f5320a5eb5e456843ce6f657a4a56c69 new file mode 100644 index 0000000..ab3541c Binary files /dev/null and b/Library/Artifacts/f5/f5320a5eb5e456843ce6f657a4a56c69 differ diff --git a/Library/Artifacts/f5/f57ae4f39e224e1cc74af1ab4bd5bd90 b/Library/Artifacts/f5/f57ae4f39e224e1cc74af1ab4bd5bd90 new file mode 100644 index 0000000..0f038df Binary files /dev/null and b/Library/Artifacts/f5/f57ae4f39e224e1cc74af1ab4bd5bd90 differ diff --git a/Library/Artifacts/f5/f57c8e76981f6f46d9bbc48ee7f56814 b/Library/Artifacts/f5/f57c8e76981f6f46d9bbc48ee7f56814 new file mode 100644 index 0000000..b49e708 Binary files /dev/null and b/Library/Artifacts/f5/f57c8e76981f6f46d9bbc48ee7f56814 differ diff --git a/Library/Artifacts/f5/f581213bcb9d0727c53a588ad1962988 b/Library/Artifacts/f5/f581213bcb9d0727c53a588ad1962988 new file mode 100644 index 0000000..a16ffbc Binary files /dev/null and b/Library/Artifacts/f5/f581213bcb9d0727c53a588ad1962988 differ diff --git a/Library/Artifacts/f5/f58c847777e3ab096a0430d9bdc10d03 b/Library/Artifacts/f5/f58c847777e3ab096a0430d9bdc10d03 new file mode 100644 index 0000000..6c42e89 Binary files /dev/null and b/Library/Artifacts/f5/f58c847777e3ab096a0430d9bdc10d03 differ diff --git a/Library/Artifacts/f5/f591beebbe49213776c38c8fb33bc124 b/Library/Artifacts/f5/f591beebbe49213776c38c8fb33bc124 new file mode 100644 index 0000000..11f765e Binary files /dev/null and b/Library/Artifacts/f5/f591beebbe49213776c38c8fb33bc124 differ diff --git a/Library/Artifacts/f5/f5a532a3d66bb94a862faf43485f6d9d b/Library/Artifacts/f5/f5a532a3d66bb94a862faf43485f6d9d new file mode 100644 index 0000000..0ae0b3e Binary files /dev/null and b/Library/Artifacts/f5/f5a532a3d66bb94a862faf43485f6d9d differ diff --git a/Library/Artifacts/f5/f5ac06ab1c5c713a73df4bcb7bc38cbb b/Library/Artifacts/f5/f5ac06ab1c5c713a73df4bcb7bc38cbb new file mode 100644 index 0000000..675935c Binary files /dev/null and b/Library/Artifacts/f5/f5ac06ab1c5c713a73df4bcb7bc38cbb differ diff --git a/Library/Artifacts/f5/f5ad51e94c1d3c8c1d1146d3359ae42e b/Library/Artifacts/f5/f5ad51e94c1d3c8c1d1146d3359ae42e new file mode 100644 index 0000000..bd25510 Binary files /dev/null and b/Library/Artifacts/f5/f5ad51e94c1d3c8c1d1146d3359ae42e differ diff --git a/Library/Artifacts/f5/f5b3e7ad24fc8ad48b12e91e73b7b256 b/Library/Artifacts/f5/f5b3e7ad24fc8ad48b12e91e73b7b256 new file mode 100644 index 0000000..72aa236 Binary files /dev/null and b/Library/Artifacts/f5/f5b3e7ad24fc8ad48b12e91e73b7b256 differ diff --git a/Library/Artifacts/f5/f5c4fa80c70126fba5f8dc08d9cddcfe b/Library/Artifacts/f5/f5c4fa80c70126fba5f8dc08d9cddcfe new file mode 100644 index 0000000..3b1c9ef Binary files /dev/null and b/Library/Artifacts/f5/f5c4fa80c70126fba5f8dc08d9cddcfe differ diff --git a/Library/Artifacts/f5/f5d7616191958bd14a7acf5c29d15641 b/Library/Artifacts/f5/f5d7616191958bd14a7acf5c29d15641 new file mode 100644 index 0000000..c10239a Binary files /dev/null and b/Library/Artifacts/f5/f5d7616191958bd14a7acf5c29d15641 differ diff --git a/Library/Artifacts/f5/f5ecae7e63c0162eb4692b8df57f9fac b/Library/Artifacts/f5/f5ecae7e63c0162eb4692b8df57f9fac new file mode 100644 index 0000000..275f52d Binary files /dev/null and b/Library/Artifacts/f5/f5ecae7e63c0162eb4692b8df57f9fac differ diff --git a/Library/Artifacts/f6/f61f7d9c36e9e5d6a45fdbe56ffeefbf b/Library/Artifacts/f6/f61f7d9c36e9e5d6a45fdbe56ffeefbf new file mode 100644 index 0000000..3db36f1 Binary files /dev/null and b/Library/Artifacts/f6/f61f7d9c36e9e5d6a45fdbe56ffeefbf differ diff --git a/Library/Artifacts/f6/f621d2844a16a428e500c5dcd4fce6cd b/Library/Artifacts/f6/f621d2844a16a428e500c5dcd4fce6cd new file mode 100644 index 0000000..671a178 Binary files /dev/null and b/Library/Artifacts/f6/f621d2844a16a428e500c5dcd4fce6cd differ diff --git a/Library/Artifacts/f6/f634b182f80388dfb25e3ab89f58e049 b/Library/Artifacts/f6/f634b182f80388dfb25e3ab89f58e049 new file mode 100644 index 0000000..84d1879 Binary files /dev/null and b/Library/Artifacts/f6/f634b182f80388dfb25e3ab89f58e049 differ diff --git a/Library/Artifacts/f6/f6789b6675ba253d74108516642b0718 b/Library/Artifacts/f6/f6789b6675ba253d74108516642b0718 new file mode 100644 index 0000000..2e1a768 Binary files /dev/null and b/Library/Artifacts/f6/f6789b6675ba253d74108516642b0718 differ diff --git a/Library/Artifacts/f6/f686aa70af55abb5ecab28683900f340 b/Library/Artifacts/f6/f686aa70af55abb5ecab28683900f340 new file mode 100644 index 0000000..4af9f80 Binary files /dev/null and b/Library/Artifacts/f6/f686aa70af55abb5ecab28683900f340 differ diff --git a/Library/Artifacts/f6/f6bdc28b29b2b911cab8161150684ece b/Library/Artifacts/f6/f6bdc28b29b2b911cab8161150684ece new file mode 100644 index 0000000..e9750ec Binary files /dev/null and b/Library/Artifacts/f6/f6bdc28b29b2b911cab8161150684ece differ diff --git a/Library/Artifacts/f6/f6c36daa4ac165837af35ed3c8443e99 b/Library/Artifacts/f6/f6c36daa4ac165837af35ed3c8443e99 new file mode 100644 index 0000000..f41461a Binary files /dev/null and b/Library/Artifacts/f6/f6c36daa4ac165837af35ed3c8443e99 differ diff --git a/Library/Artifacts/f6/f6cea8bc65843d8c5f6d6c0db4027170 b/Library/Artifacts/f6/f6cea8bc65843d8c5f6d6c0db4027170 new file mode 100644 index 0000000..d830155 Binary files /dev/null and b/Library/Artifacts/f6/f6cea8bc65843d8c5f6d6c0db4027170 differ diff --git a/Library/Artifacts/f6/f6e8f3f9f9658ae6b93b3a493842e0dc b/Library/Artifacts/f6/f6e8f3f9f9658ae6b93b3a493842e0dc new file mode 100644 index 0000000..cb60ddf Binary files /dev/null and b/Library/Artifacts/f6/f6e8f3f9f9658ae6b93b3a493842e0dc differ diff --git a/Library/Artifacts/f7/f7274cf6ca8b359c12d58e6e7e7408f4 b/Library/Artifacts/f7/f7274cf6ca8b359c12d58e6e7e7408f4 new file mode 100644 index 0000000..4e07cce Binary files /dev/null and b/Library/Artifacts/f7/f7274cf6ca8b359c12d58e6e7e7408f4 differ diff --git a/Library/Artifacts/f7/f748fa4c5db71839d6c3f9258f843dcd b/Library/Artifacts/f7/f748fa4c5db71839d6c3f9258f843dcd new file mode 100644 index 0000000..b5c51ac Binary files /dev/null and b/Library/Artifacts/f7/f748fa4c5db71839d6c3f9258f843dcd differ diff --git a/Library/Artifacts/f7/f77fa3f771de198fb5ed5407547a939b b/Library/Artifacts/f7/f77fa3f771de198fb5ed5407547a939b new file mode 100644 index 0000000..96a7833 Binary files /dev/null and b/Library/Artifacts/f7/f77fa3f771de198fb5ed5407547a939b differ diff --git a/Library/Artifacts/f7/f7938962ea8e5c28944245d32739cec9 b/Library/Artifacts/f7/f7938962ea8e5c28944245d32739cec9 new file mode 100644 index 0000000..698137b Binary files /dev/null and b/Library/Artifacts/f7/f7938962ea8e5c28944245d32739cec9 differ diff --git a/Library/Artifacts/f7/f7bed52099cbde874e3ca9e71b4c5527 b/Library/Artifacts/f7/f7bed52099cbde874e3ca9e71b4c5527 new file mode 100644 index 0000000..4c49f22 Binary files /dev/null and b/Library/Artifacts/f7/f7bed52099cbde874e3ca9e71b4c5527 differ diff --git a/Library/Artifacts/f8/f866131522e0eef5d06524cb88734eb7 b/Library/Artifacts/f8/f866131522e0eef5d06524cb88734eb7 new file mode 100644 index 0000000..6d98e17 Binary files /dev/null and b/Library/Artifacts/f8/f866131522e0eef5d06524cb88734eb7 differ diff --git a/Library/Artifacts/f8/f86b75e0b8679da355fc8f24f470c7b9 b/Library/Artifacts/f8/f86b75e0b8679da355fc8f24f470c7b9 new file mode 100644 index 0000000..de99818 Binary files /dev/null and b/Library/Artifacts/f8/f86b75e0b8679da355fc8f24f470c7b9 differ diff --git a/Library/Artifacts/f8/f8af9587b0bb46b3896d6a0ec737fa5c b/Library/Artifacts/f8/f8af9587b0bb46b3896d6a0ec737fa5c new file mode 100644 index 0000000..26ddd40 Binary files /dev/null and b/Library/Artifacts/f8/f8af9587b0bb46b3896d6a0ec737fa5c differ diff --git a/Library/Artifacts/f8/f8bc2a481eb6fa97d662bf85436ab7be b/Library/Artifacts/f8/f8bc2a481eb6fa97d662bf85436ab7be new file mode 100644 index 0000000..58c70f1 Binary files /dev/null and b/Library/Artifacts/f8/f8bc2a481eb6fa97d662bf85436ab7be differ diff --git a/Library/Artifacts/f8/f8c2dba26200c96ea7bd86f6fcaa24f8 b/Library/Artifacts/f8/f8c2dba26200c96ea7bd86f6fcaa24f8 new file mode 100644 index 0000000..d6c09bb Binary files /dev/null and b/Library/Artifacts/f8/f8c2dba26200c96ea7bd86f6fcaa24f8 differ diff --git a/Library/Artifacts/f8/f8d03883b15a203850b64fe344683879 b/Library/Artifacts/f8/f8d03883b15a203850b64fe344683879 new file mode 100644 index 0000000..7804dc9 Binary files /dev/null and b/Library/Artifacts/f8/f8d03883b15a203850b64fe344683879 differ diff --git a/Library/Artifacts/f8/f8d8ece94358476e06141f68cd161fca b/Library/Artifacts/f8/f8d8ece94358476e06141f68cd161fca new file mode 100644 index 0000000..eaa9496 Binary files /dev/null and b/Library/Artifacts/f8/f8d8ece94358476e06141f68cd161fca differ diff --git a/Library/Artifacts/f8/f8de8a90e1217f2d205bf977cb0ed299 b/Library/Artifacts/f8/f8de8a90e1217f2d205bf977cb0ed299 new file mode 100644 index 0000000..36ba5a8 Binary files /dev/null and b/Library/Artifacts/f8/f8de8a90e1217f2d205bf977cb0ed299 differ diff --git a/Library/Artifacts/f9/f9075ce0f07b40dfddb2790f6e1c2eb5 b/Library/Artifacts/f9/f9075ce0f07b40dfddb2790f6e1c2eb5 new file mode 100644 index 0000000..0b0c07a Binary files /dev/null and b/Library/Artifacts/f9/f9075ce0f07b40dfddb2790f6e1c2eb5 differ diff --git a/Library/Artifacts/f9/f91f42b150f3ff94dfa990434dc363a1 b/Library/Artifacts/f9/f91f42b150f3ff94dfa990434dc363a1 new file mode 100644 index 0000000..2da06f3 Binary files /dev/null and b/Library/Artifacts/f9/f91f42b150f3ff94dfa990434dc363a1 differ diff --git a/Library/Artifacts/f9/f934ad3ec259e442045763fa27043bf7 b/Library/Artifacts/f9/f934ad3ec259e442045763fa27043bf7 new file mode 100644 index 0000000..b5c6836 Binary files /dev/null and b/Library/Artifacts/f9/f934ad3ec259e442045763fa27043bf7 differ diff --git a/Library/Artifacts/f9/f95b606e817bf7c53d3ae749e7b7e98f b/Library/Artifacts/f9/f95b606e817bf7c53d3ae749e7b7e98f new file mode 100644 index 0000000..8e0411c Binary files /dev/null and b/Library/Artifacts/f9/f95b606e817bf7c53d3ae749e7b7e98f differ diff --git a/Library/Artifacts/f9/f9873f9d1d6269a504d0914bffded3f6 b/Library/Artifacts/f9/f9873f9d1d6269a504d0914bffded3f6 new file mode 100644 index 0000000..110a388 Binary files /dev/null and b/Library/Artifacts/f9/f9873f9d1d6269a504d0914bffded3f6 differ diff --git a/Library/Artifacts/f9/f98bffcb635022a4b09e1ae0a97a980b b/Library/Artifacts/f9/f98bffcb635022a4b09e1ae0a97a980b new file mode 100644 index 0000000..1053ea9 Binary files /dev/null and b/Library/Artifacts/f9/f98bffcb635022a4b09e1ae0a97a980b differ diff --git a/Library/Artifacts/f9/f9e259f60df81bd5505c20503881fd5a b/Library/Artifacts/f9/f9e259f60df81bd5505c20503881fd5a new file mode 100644 index 0000000..c7d027f Binary files /dev/null and b/Library/Artifacts/f9/f9e259f60df81bd5505c20503881fd5a differ diff --git a/Library/Artifacts/fa/fa13ff7030df33e84cd4f977e1d74367 b/Library/Artifacts/fa/fa13ff7030df33e84cd4f977e1d74367 new file mode 100644 index 0000000..8cde246 Binary files /dev/null and b/Library/Artifacts/fa/fa13ff7030df33e84cd4f977e1d74367 differ diff --git a/Library/Artifacts/fa/fa260c57ec970635992f4a9424d4bdb5 b/Library/Artifacts/fa/fa260c57ec970635992f4a9424d4bdb5 new file mode 100644 index 0000000..05000c0 Binary files /dev/null and b/Library/Artifacts/fa/fa260c57ec970635992f4a9424d4bdb5 differ diff --git a/Library/Artifacts/fa/fa3c438e1bf814ac99b99753d54f216f b/Library/Artifacts/fa/fa3c438e1bf814ac99b99753d54f216f new file mode 100644 index 0000000..da4230a Binary files /dev/null and b/Library/Artifacts/fa/fa3c438e1bf814ac99b99753d54f216f differ diff --git a/Library/Artifacts/fa/fa5a771aabffdef6909d37fa4db6e045 b/Library/Artifacts/fa/fa5a771aabffdef6909d37fa4db6e045 new file mode 100644 index 0000000..f1bf222 Binary files /dev/null and b/Library/Artifacts/fa/fa5a771aabffdef6909d37fa4db6e045 differ diff --git a/Library/Artifacts/fa/fa61e6e5b3bef77b6e939111e083b9ba b/Library/Artifacts/fa/fa61e6e5b3bef77b6e939111e083b9ba new file mode 100644 index 0000000..6950ca1 Binary files /dev/null and b/Library/Artifacts/fa/fa61e6e5b3bef77b6e939111e083b9ba differ diff --git a/Library/Artifacts/fa/fa8516820a9de7b09ade6a2c1980e9c5 b/Library/Artifacts/fa/fa8516820a9de7b09ade6a2c1980e9c5 new file mode 100644 index 0000000..e8d4cf0 Binary files /dev/null and b/Library/Artifacts/fa/fa8516820a9de7b09ade6a2c1980e9c5 differ diff --git a/Library/Artifacts/fa/faafb2fc3be02fec46cfa5c129fd57b6 b/Library/Artifacts/fa/faafb2fc3be02fec46cfa5c129fd57b6 new file mode 100644 index 0000000..f9dff94 Binary files /dev/null and b/Library/Artifacts/fa/faafb2fc3be02fec46cfa5c129fd57b6 differ diff --git a/Library/Artifacts/fa/fad4d0eaeae112d867393eecf09817e7 b/Library/Artifacts/fa/fad4d0eaeae112d867393eecf09817e7 new file mode 100644 index 0000000..b4ef869 Binary files /dev/null and b/Library/Artifacts/fa/fad4d0eaeae112d867393eecf09817e7 differ diff --git a/Library/Artifacts/fa/faef19ed19f14ecfc10cafbb5daaad2a b/Library/Artifacts/fa/faef19ed19f14ecfc10cafbb5daaad2a new file mode 100644 index 0000000..3eacc9b Binary files /dev/null and b/Library/Artifacts/fa/faef19ed19f14ecfc10cafbb5daaad2a differ diff --git a/Library/Artifacts/fb/fb1bcd7d1e818f5fe02aa66dc10cc568 b/Library/Artifacts/fb/fb1bcd7d1e818f5fe02aa66dc10cc568 new file mode 100644 index 0000000..5a00744 Binary files /dev/null and b/Library/Artifacts/fb/fb1bcd7d1e818f5fe02aa66dc10cc568 differ diff --git a/Library/Artifacts/fb/fb28fecb3006b33a2f063e943b0c541f b/Library/Artifacts/fb/fb28fecb3006b33a2f063e943b0c541f new file mode 100644 index 0000000..e797a79 Binary files /dev/null and b/Library/Artifacts/fb/fb28fecb3006b33a2f063e943b0c541f differ diff --git a/Library/Artifacts/fb/fb3715ec43d9a47d2952038fe7390c13 b/Library/Artifacts/fb/fb3715ec43d9a47d2952038fe7390c13 new file mode 100644 index 0000000..8ec9514 Binary files /dev/null and b/Library/Artifacts/fb/fb3715ec43d9a47d2952038fe7390c13 differ diff --git a/Library/Artifacts/fb/fb874f55026f1e9f26dabcf95d6ffa88 b/Library/Artifacts/fb/fb874f55026f1e9f26dabcf95d6ffa88 new file mode 100644 index 0000000..35a7c8d Binary files /dev/null and b/Library/Artifacts/fb/fb874f55026f1e9f26dabcf95d6ffa88 differ diff --git a/Library/Artifacts/fb/fba9ad5491b6d898fce1fe53d0be55c5 b/Library/Artifacts/fb/fba9ad5491b6d898fce1fe53d0be55c5 new file mode 100644 index 0000000..f776394 Binary files /dev/null and b/Library/Artifacts/fb/fba9ad5491b6d898fce1fe53d0be55c5 differ diff --git a/Library/Artifacts/fb/fbc5e91d446ac7dbe557bf245993b7fe b/Library/Artifacts/fb/fbc5e91d446ac7dbe557bf245993b7fe new file mode 100644 index 0000000..1dab193 Binary files /dev/null and b/Library/Artifacts/fb/fbc5e91d446ac7dbe557bf245993b7fe differ diff --git a/Library/Artifacts/fb/fbca8473f4f3d70cdaef9ebe86afdd99 b/Library/Artifacts/fb/fbca8473f4f3d70cdaef9ebe86afdd99 new file mode 100644 index 0000000..f6b144e Binary files /dev/null and b/Library/Artifacts/fb/fbca8473f4f3d70cdaef9ebe86afdd99 differ diff --git a/Library/Artifacts/fc/fc21b75380498a90ad77b9132d695f7f b/Library/Artifacts/fc/fc21b75380498a90ad77b9132d695f7f new file mode 100644 index 0000000..7bd0ef1 Binary files /dev/null and b/Library/Artifacts/fc/fc21b75380498a90ad77b9132d695f7f differ diff --git a/Library/Artifacts/fc/fc48da9c34252edadc275d9971a2ae0c b/Library/Artifacts/fc/fc48da9c34252edadc275d9971a2ae0c new file mode 100644 index 0000000..182a6b7 Binary files /dev/null and b/Library/Artifacts/fc/fc48da9c34252edadc275d9971a2ae0c differ diff --git a/Library/Artifacts/fc/fc6feb7626df851817e1612c43a23680 b/Library/Artifacts/fc/fc6feb7626df851817e1612c43a23680 new file mode 100644 index 0000000..966aac2 Binary files /dev/null and b/Library/Artifacts/fc/fc6feb7626df851817e1612c43a23680 differ diff --git a/Library/Artifacts/fc/fc8309ffc1c4a8169caa79bc0e5d2228 b/Library/Artifacts/fc/fc8309ffc1c4a8169caa79bc0e5d2228 new file mode 100644 index 0000000..ac294c5 Binary files /dev/null and b/Library/Artifacts/fc/fc8309ffc1c4a8169caa79bc0e5d2228 differ diff --git a/Library/Artifacts/fc/fca04877491fd10f84a09edde14fb1e3 b/Library/Artifacts/fc/fca04877491fd10f84a09edde14fb1e3 new file mode 100644 index 0000000..fcbf4b3 Binary files /dev/null and b/Library/Artifacts/fc/fca04877491fd10f84a09edde14fb1e3 differ diff --git a/Library/Artifacts/fc/fcaed8eaeec067c4f0f2f0977abc0880 b/Library/Artifacts/fc/fcaed8eaeec067c4f0f2f0977abc0880 new file mode 100644 index 0000000..c1a6178 Binary files /dev/null and b/Library/Artifacts/fc/fcaed8eaeec067c4f0f2f0977abc0880 differ diff --git a/Library/Artifacts/fc/fcde2f099116ec8bb200d4a154addb51 b/Library/Artifacts/fc/fcde2f099116ec8bb200d4a154addb51 new file mode 100644 index 0000000..e44344f Binary files /dev/null and b/Library/Artifacts/fc/fcde2f099116ec8bb200d4a154addb51 differ diff --git a/Library/Artifacts/fc/fcdfb7812bd1a4bebee19eb52fc5d9f4 b/Library/Artifacts/fc/fcdfb7812bd1a4bebee19eb52fc5d9f4 new file mode 100644 index 0000000..88756f2 Binary files /dev/null and b/Library/Artifacts/fc/fcdfb7812bd1a4bebee19eb52fc5d9f4 differ diff --git a/Library/Artifacts/fc/fcefe457280e1b20bf2912badccf6bf8 b/Library/Artifacts/fc/fcefe457280e1b20bf2912badccf6bf8 new file mode 100644 index 0000000..5da373d Binary files /dev/null and b/Library/Artifacts/fc/fcefe457280e1b20bf2912badccf6bf8 differ diff --git a/Library/Artifacts/fc/fcf1c14afe811ba15944673a2b6b6b9d b/Library/Artifacts/fc/fcf1c14afe811ba15944673a2b6b6b9d new file mode 100644 index 0000000..8043187 Binary files /dev/null and b/Library/Artifacts/fc/fcf1c14afe811ba15944673a2b6b6b9d differ diff --git a/Library/Artifacts/fd/fd2a81067d5d2299383169fbc2134698 b/Library/Artifacts/fd/fd2a81067d5d2299383169fbc2134698 new file mode 100644 index 0000000..07cc3df Binary files /dev/null and b/Library/Artifacts/fd/fd2a81067d5d2299383169fbc2134698 differ diff --git a/Library/Artifacts/fd/fd401bdc5162953d2c83f0a691fd4341 b/Library/Artifacts/fd/fd401bdc5162953d2c83f0a691fd4341 new file mode 100644 index 0000000..e1a864f Binary files /dev/null and b/Library/Artifacts/fd/fd401bdc5162953d2c83f0a691fd4341 differ diff --git a/Library/Artifacts/fd/fd65dd07ff08a21f8e1670ae6e68d864 b/Library/Artifacts/fd/fd65dd07ff08a21f8e1670ae6e68d864 new file mode 100644 index 0000000..0784779 Binary files /dev/null and b/Library/Artifacts/fd/fd65dd07ff08a21f8e1670ae6e68d864 differ diff --git a/Library/Artifacts/fd/fd68cdba13683dfc6ba0c079c1fa64d5 b/Library/Artifacts/fd/fd68cdba13683dfc6ba0c079c1fa64d5 new file mode 100644 index 0000000..f84dac5 Binary files /dev/null and b/Library/Artifacts/fd/fd68cdba13683dfc6ba0c079c1fa64d5 differ diff --git a/Library/Artifacts/fd/fd95a31d009c9d08807adf3d356b8c2d b/Library/Artifacts/fd/fd95a31d009c9d08807adf3d356b8c2d new file mode 100644 index 0000000..05ebdac Binary files /dev/null and b/Library/Artifacts/fd/fd95a31d009c9d08807adf3d356b8c2d differ diff --git a/Library/Artifacts/fd/fdb1c6aa939bd8d5ee7bebefcc742c14 b/Library/Artifacts/fd/fdb1c6aa939bd8d5ee7bebefcc742c14 new file mode 100644 index 0000000..576b742 Binary files /dev/null and b/Library/Artifacts/fd/fdb1c6aa939bd8d5ee7bebefcc742c14 differ diff --git a/Library/Artifacts/fd/fdb5b470b73e390f5dab657e0d2a05ab b/Library/Artifacts/fd/fdb5b470b73e390f5dab657e0d2a05ab new file mode 100644 index 0000000..aa42e50 Binary files /dev/null and b/Library/Artifacts/fd/fdb5b470b73e390f5dab657e0d2a05ab differ diff --git a/Library/Artifacts/fe/fe1f819d5a79abf8f58bcbeca35213e3 b/Library/Artifacts/fe/fe1f819d5a79abf8f58bcbeca35213e3 new file mode 100644 index 0000000..5d8b623 Binary files /dev/null and b/Library/Artifacts/fe/fe1f819d5a79abf8f58bcbeca35213e3 differ diff --git a/Library/Artifacts/fe/fe4aaee1d7631f2424c0ba7063cb5999 b/Library/Artifacts/fe/fe4aaee1d7631f2424c0ba7063cb5999 new file mode 100644 index 0000000..78ad29d Binary files /dev/null and b/Library/Artifacts/fe/fe4aaee1d7631f2424c0ba7063cb5999 differ diff --git a/Library/Artifacts/fe/fe4fb432679057cf621b511cbd04f467 b/Library/Artifacts/fe/fe4fb432679057cf621b511cbd04f467 new file mode 100644 index 0000000..c2cef80 Binary files /dev/null and b/Library/Artifacts/fe/fe4fb432679057cf621b511cbd04f467 differ diff --git a/Library/Artifacts/fe/fe66c92876a1d7b87e462ef8dee85148 b/Library/Artifacts/fe/fe66c92876a1d7b87e462ef8dee85148 new file mode 100644 index 0000000..e7fa03c Binary files /dev/null and b/Library/Artifacts/fe/fe66c92876a1d7b87e462ef8dee85148 differ diff --git a/Library/Artifacts/fe/fe86c9b147b33f848ee013ac784d0e16 b/Library/Artifacts/fe/fe86c9b147b33f848ee013ac784d0e16 new file mode 100644 index 0000000..240a6a9 Binary files /dev/null and b/Library/Artifacts/fe/fe86c9b147b33f848ee013ac784d0e16 differ diff --git a/Library/Artifacts/fe/fe91fe2966c2341d06259b15c300e3b0 b/Library/Artifacts/fe/fe91fe2966c2341d06259b15c300e3b0 new file mode 100644 index 0000000..a50863e Binary files /dev/null and b/Library/Artifacts/fe/fe91fe2966c2341d06259b15c300e3b0 differ diff --git a/Library/Artifacts/fe/fec2c0b167580118292f97a592230bf0 b/Library/Artifacts/fe/fec2c0b167580118292f97a592230bf0 new file mode 100644 index 0000000..455ec08 Binary files /dev/null and b/Library/Artifacts/fe/fec2c0b167580118292f97a592230bf0 differ diff --git a/Library/Artifacts/fe/fee062c88e4ad90b393b8e13e561ecec b/Library/Artifacts/fe/fee062c88e4ad90b393b8e13e561ecec new file mode 100644 index 0000000..124ca65 Binary files /dev/null and b/Library/Artifacts/fe/fee062c88e4ad90b393b8e13e561ecec differ diff --git a/Library/Artifacts/ff/ff0a59fe788cf2be643ac243da6762c1 b/Library/Artifacts/ff/ff0a59fe788cf2be643ac243da6762c1 new file mode 100644 index 0000000..8a9340e Binary files /dev/null and b/Library/Artifacts/ff/ff0a59fe788cf2be643ac243da6762c1 differ diff --git a/Library/Artifacts/ff/ff47b1b2f93218bee583c92542510735 b/Library/Artifacts/ff/ff47b1b2f93218bee583c92542510735 new file mode 100644 index 0000000..5e3c113 Binary files /dev/null and b/Library/Artifacts/ff/ff47b1b2f93218bee583c92542510735 differ diff --git a/Library/Artifacts/ff/ff4cc592f6ccb1035d43f9a044c3de0c b/Library/Artifacts/ff/ff4cc592f6ccb1035d43f9a044c3de0c new file mode 100644 index 0000000..87d7a41 Binary files /dev/null and b/Library/Artifacts/ff/ff4cc592f6ccb1035d43f9a044c3de0c differ diff --git a/Library/Artifacts/ff/ff691b97fc4e2d772d5cec5ec21a35c2 b/Library/Artifacts/ff/ff691b97fc4e2d772d5cec5ec21a35c2 new file mode 100644 index 0000000..0d9c071 Binary files /dev/null and b/Library/Artifacts/ff/ff691b97fc4e2d772d5cec5ec21a35c2 differ diff --git a/Library/Artifacts/ff/ff952d21c86561917afc9249c47ddb19 b/Library/Artifacts/ff/ff952d21c86561917afc9249c47ddb19 new file mode 100644 index 0000000..fad5801 Binary files /dev/null and b/Library/Artifacts/ff/ff952d21c86561917afc9249c47ddb19 differ diff --git a/Library/Artifacts/ff/ffb8219353652d190cb1731ae4a934b2 b/Library/Artifacts/ff/ffb8219353652d190cb1731ae4a934b2 new file mode 100644 index 0000000..4f49b7d Binary files /dev/null and b/Library/Artifacts/ff/ffb8219353652d190cb1731ae4a934b2 differ diff --git a/Library/Artifacts/ff/ffd91a05ea75ae743c2a028e9cf09781 b/Library/Artifacts/ff/ffd91a05ea75ae743c2a028e9cf09781 new file mode 100644 index 0000000..63d7437 Binary files /dev/null and b/Library/Artifacts/ff/ffd91a05ea75ae743c2a028e9cf09781 differ diff --git a/Library/Artifacts/ff/ffe2d1d8e1814076c9c99580ff53eab3 b/Library/Artifacts/ff/ffe2d1d8e1814076c9c99580ff53eab3 new file mode 100644 index 0000000..386614d Binary files /dev/null and b/Library/Artifacts/ff/ffe2d1d8e1814076c9c99580ff53eab3 differ diff --git a/Library/Artifacts/ff/ffed9d82af1bbe5b8b7bc1fca5d103c5 b/Library/Artifacts/ff/ffed9d82af1bbe5b8b7bc1fca5d103c5 new file mode 100644 index 0000000..95e30b5 Binary files /dev/null and b/Library/Artifacts/ff/ffed9d82af1bbe5b8b7bc1fca5d103c5 differ diff --git a/Library/AssetImportState b/Library/AssetImportState new file mode 100644 index 0000000..21c67d7 --- /dev/null +++ b/Library/AssetImportState @@ -0,0 +1 @@ +-2;0;0;0;-1 \ No newline at end of file diff --git a/Library/BuildPlayer.prefs b/Library/BuildPlayer.prefs new file mode 100644 index 0000000..e69de29 diff --git a/Library/BuildSettings.asset b/Library/BuildSettings.asset new file mode 100644 index 0000000..8417ce8 Binary files /dev/null and b/Library/BuildSettings.asset differ diff --git a/Library/CurrentLayout-default.dwlt b/Library/CurrentLayout-default.dwlt new file mode 100644 index 0000000..3693400 --- /dev/null +++ b/Library/CurrentLayout-default.dwlt @@ -0,0 +1,689 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_PixelRect: + serializedVersion: 2 + x: 0 + y: 45 + width: 2560 + height: 1391 + m_ShowMode: 4 + m_Title: + m_RootView: {fileID: 6} + m_MinSize: {x: 950, y: 300} + m_MaxSize: {x: 10000, y: 10000} +--- !u!114 &2 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 9} + - {fileID: 3} + m_Position: + serializedVersion: 2 + x: 0 + y: 30 + width: 2560 + height: 1341 + m_MinSize: {x: 683, y: 492} + m_MaxSize: {x: 14004, y: 14042} + vertical: 0 + controlID: 615 +--- !u!114 &3 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 2041 + y: 0 + width: 519 + height: 1341 + m_MinSize: {x: 277, y: 71} + m_MaxSize: {x: 4002, y: 4021} + m_ActualView: {fileID: 14} + m_Panes: + - {fileID: 14} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &4 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 505 + height: 811 + m_MinSize: {x: 202, y: 221} + m_MaxSize: {x: 4002, y: 4021} + m_ActualView: {fileID: 15} + m_Panes: + - {fileID: 15} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &5 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 811 + width: 2041 + height: 530 + m_MinSize: {x: 232, y: 271} + m_MaxSize: {x: 10002, y: 10021} + m_ActualView: {fileID: 13} + m_Panes: + - {fileID: 13} + - {fileID: 18} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &6 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 7} + - {fileID: 2} + - {fileID: 8} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 2560 + height: 1391 + m_MinSize: {x: 950, y: 300} + m_MaxSize: {x: 10000, y: 10000} +--- !u!114 &7 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 2560 + height: 30 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} + m_LastLoadedLayoutName: Default +--- !u!114 &8 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 1371 + width: 2560 + height: 20 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} +--- !u!114 &9 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 10} + - {fileID: 5} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 2041 + height: 1341 + m_MinSize: {x: 406, y: 492} + m_MaxSize: {x: 10002, y: 14042} + vertical: 1 + controlID: 547 +--- !u!114 &10 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 4} + - {fileID: 11} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 2041 + height: 811 + m_MinSize: {x: 406, y: 221} + m_MaxSize: {x: 8006, y: 4021} + vertical: 0 + controlID: 548 +--- !u!114 &11 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 505 + y: 0 + width: 1536 + height: 811 + m_MinSize: {x: 204, y: 221} + m_MaxSize: {x: 4004, y: 4021} + m_ActualView: {fileID: 16} + m_Panes: + - {fileID: 16} + - {fileID: 17} + - {fileID: 12} + m_Selected: 0 + m_LastSelected: 1 +--- !u!114 &12 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12111, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 400, y: 100} + m_MaxSize: {x: 2048, y: 2048} + m_TitleContent: + m_Text: Asset Store + m_Image: {fileID: 357073275683767465, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 468 + y: 181 + width: 973 + height: 501 +--- !u!114 &13 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 230, y: 250} + m_MaxSize: {x: 10000, y: 10000} + m_TitleContent: + m_Text: Project + m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 0 + y: 905 + width: 2039 + height: 509 + m_SearchFilter: + m_NameFilter: + m_ClassNames: [] + m_AssetLabels: [] + m_AssetBundleNames: [] + m_VersionControlStates: [] + m_ReferencingInstanceIDs: + m_ScenePaths: [] + m_ShowAllHits: 0 + m_SearchArea: 0 + m_Folders: + - Assets + m_ViewMode: 1 + m_StartGridSize: 64 + m_LastFolders: + - Assets + m_LastFoldersGridSize: -1 + m_LastProjectPath: /Users/danielbrauer/Unity Projects/New Unity Project 20 + m_IsLocked: 0 + m_FolderTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: b0230000 + m_LastClickedID: 9136 + m_ExpandedIDs: 00000000b023000000ca9a3bffffff7f + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_SearchString: + m_ColumnWidths: [] + m_AssetTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 00000000b023000000ca9a3bffffff7f + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_SearchString: + m_ColumnWidths: [] + m_ListAreaState: + m_SelectedInstanceIDs: + m_LastClickedInstanceID: 0 + m_HadKeyboardFocusLastEvent: 0 + m_ExpandedInstanceIDs: c6230000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_NewAssetIndexInList: -1 + m_ScrollPosition: {x: 0, y: 0} + m_GridSize: 64 + m_DirectoriesAreaWidth: 115 +--- !u!114 &14 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Inspector + m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 2043 + y: 94 + width: 517 + height: 1320 + m_ScrollPosition: {x: 0, y: 0} + m_InspectorMode: 0 + m_PreviewResizer: + m_CachedPref: 160 + m_ControlHash: -371814159 + m_PrefName: Preview_InspectorPreview + m_PreviewWindow: {fileID: 0} +--- !u!114 &15 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Hierarchy + m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 0 + y: 94 + width: 503 + height: 790 + m_TreeViewState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 00000000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 0 + m_ClientGUIView: {fileID: 0} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_SearchString: + m_ColumnWidths: [] + m_ExpandedScenes: [] + m_CurrenRootInstanceID: 0 + m_Locked: 0 + m_CurrentSortingName: TransformSorting +--- !u!114 &16 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 1 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Scene + m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 32 + m_Pos: + serializedVersion: 2 + x: 507 + y: 94 + width: 1532 + height: 790 + m_SceneLighting: 1 + lastFramingTime: 0 + m_2DMode: 0 + m_isRotationLocked: 0 + m_AudioPlay: 0 + m_Position: + m_Target: {x: 0, y: 0, z: 0} + speed: 2 + m_Value: {x: 0, y: 0, z: 0} + m_RenderMode: 0 + m_SceneViewState: + showFog: 1 + showMaterialUpdate: 0 + showSkybox: 1 + showFlares: 1 + showImageEffects: 1 + grid: + xGrid: + m_Target: 0 + speed: 2 + m_Value: 0 + yGrid: + m_Target: 1 + speed: 2 + m_Value: 1 + zGrid: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Rotation: + m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + speed: 2 + m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + m_Size: + m_Target: 10 + speed: 2 + m_Value: 10 + m_Ortho: + m_Target: 0 + speed: 2 + m_Value: 0 + m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0} + m_LastSceneViewOrtho: 0 + m_ReplacementShader: {fileID: 0} + m_ReplacementString: + m_LastLockedObject: {fileID: 0} + m_ViewIsLockedToObject: 0 +--- !u!114 &17 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 1 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Game + m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 32 + m_Pos: + serializedVersion: 2 + x: 507 + y: 94 + width: 1532 + height: 790 + m_MaximizeOnPlay: 0 + m_Gizmos: 0 + m_Stats: 0 + m_SelectedSizes: 000000000000000000000000000000000000000000000000000000000000000000000000 + m_TargetDisplay: 0 + m_ZoomArea: + m_HRangeLocked: 0 + m_VRangeLocked: 0 + m_HBaseRangeMin: -383 + m_HBaseRangeMax: 383 + m_VBaseRangeMin: -193.25 + m_VBaseRangeMax: 193.25 + m_HAllowExceedBaseRangeMin: 1 + m_HAllowExceedBaseRangeMax: 1 + m_VAllowExceedBaseRangeMin: 1 + m_VAllowExceedBaseRangeMax: 1 + m_ScaleWithWindow: 0 + m_HSlider: 0 + m_VSlider: 0 + m_IgnoreScrollWheelUntilClicked: 0 + m_EnableMouseInput: 1 + m_EnableSliderZoom: 0 + m_UniformScale: 1 + m_UpDirection: 1 + m_DrawArea: + serializedVersion: 2 + x: 0 + y: 17 + width: 1532 + height: 773 + m_Scale: {x: 2, y: 2} + m_Translation: {x: 766, y: 386.5} + m_MarginLeft: 0 + m_MarginRight: 0 + m_MarginTop: 0 + m_MarginBottom: 0 + m_LastShownAreaInsideMargins: + serializedVersion: 2 + x: -383 + y: -193.25 + width: 766 + height: 386.5 + m_MinimalGUI: 1 + m_defaultScale: 2 + m_TargetTexture: {fileID: 0} + m_CurrentColorSpace: 1 + m_LastWindowPixelSize: {x: 3064, y: 1580} + m_ClearInEditMode: 1 + m_NoCameraWarning: 1 +--- !u!114 &18 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Console + m_Image: {fileID: 111653112392082826, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 8 + y: 718 + width: 1366 + height: 308 diff --git a/Library/CurrentMaximizeLayout.dwlt b/Library/CurrentMaximizeLayout.dwlt new file mode 100644 index 0000000..6d1864d --- /dev/null +++ b/Library/CurrentMaximizeLayout.dwlt @@ -0,0 +1,672 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 3} + - {fileID: 13} + m_Position: + serializedVersion: 2 + x: 0 + y: 30 + width: 1904 + height: 934 + m_MinSize: {x: 679, y: 342} + m_MaxSize: {x: 12004, y: 8042} + vertical: 0 + controlID: 7012 +--- !u!114 &2 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Game + m_Image: {fileID: -6423792434712278376, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 209 + y: 81 + width: 1315 + height: 641 + m_ViewDataDictionary: {fileID: 0} + m_SerializedViewNames: [] + m_SerializedViewValues: [] + m_SerializedCustomFieldsNames: [] + m_SerializedCustomFieldsValues: [] + m_PlayModeViewName: GameView + m_ShowGizmos: 0 + m_TargetDisplay: 0 + m_ClearColor: {r: 0, g: 0, b: 0, a: 0} + m_TargetSize: {x: 1024, y: 768} + m_TextureFilterMode: 0 + m_TextureHideFlags: 61 + m_RenderIMGUI: 1 + m_MaximizeOnPlay: 1 + m_UseMipMap: 0 + m_VSyncEnabled: 0 + m_Gizmos: 0 + m_Stats: 0 + m_SelectedSizes: 06000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_ZoomArea: + m_HRangeLocked: 0 + m_VRangeLocked: 0 + hZoomLockedByDefault: 0 + vZoomLockedByDefault: 0 + m_HBaseRangeMin: -512 + m_HBaseRangeMax: 512 + m_VBaseRangeMin: -384 + m_VBaseRangeMax: 384 + m_HAllowExceedBaseRangeMin: 1 + m_HAllowExceedBaseRangeMax: 1 + m_VAllowExceedBaseRangeMin: 1 + m_VAllowExceedBaseRangeMax: 1 + m_ScaleWithWindow: 0 + m_HSlider: 0 + m_VSlider: 0 + m_IgnoreScrollWheelUntilClicked: 0 + m_EnableMouseInput: 1 + m_EnableSliderZoomHorizontal: 0 + m_EnableSliderZoomVertical: 0 + m_UniformScale: 1 + m_UpDirection: 1 + m_DrawArea: + serializedVersion: 2 + x: 0 + y: 21 + width: 1315 + height: 620 + m_Scale: {x: 0.8072917, y: 0.8072917} + m_Translation: {x: 657.5, y: 310} + m_MarginLeft: 0 + m_MarginRight: 0 + m_MarginTop: 0 + m_MarginBottom: 0 + m_LastShownAreaInsideMargins: + serializedVersion: 2 + x: -814.4516 + y: -384 + width: 1628.9032 + height: 768 + m_MinimalGUI: 1 + m_defaultScale: 0.8072917 + m_LastWindowPixelSize: {x: 1315, y: 641} + m_ClearInEditMode: 1 + m_NoCameraWarning: 1 + m_LowResolutionForAspectRatios: 01000000000000000000 + m_XRRenderMode: 0 + m_RenderTexture: {fileID: 0} +--- !u!114 &3 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 4} + - {fileID: 10} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1518 + height: 934 + m_MinSize: {x: 403, y: 342} + m_MaxSize: {x: 8003, y: 8042} + vertical: 1 + controlID: 7013 +--- !u!114 &4 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 5} + - {fileID: 7} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1518 + height: 662 + m_MinSize: {x: 403, y: 221} + m_MaxSize: {x: 8003, y: 4021} + vertical: 0 + controlID: 7014 +--- !u!114 &5 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 201 + height: 662 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_ActualView: {fileID: 6} + m_Panes: + - {fileID: 6} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &6 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Hierarchy + m_Image: {fileID: 7966133145522015247, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 8 + y: 81 + width: 200 + height: 641 + m_ViewDataDictionary: {fileID: 0} + m_SceneHierarchy: + m_TreeViewState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 20f7ffffc2f7ffff + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 0 + m_ClientGUIView: {fileID: 5} + m_SearchString: + m_ExpandedScenes: [] + m_CurrenRootInstanceID: 0 + m_LockTracker: + m_IsLocked: 0 + m_CurrentSortingName: TransformSorting + m_WindowGUID: a4d0f07d85699134e82147a3b11deedd +--- !u!114 &7 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: GameView + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 201 + y: 0 + width: 1317 + height: 662 + m_MinSize: {x: 202, y: 221} + m_MaxSize: {x: 4002, y: 4021} + m_ActualView: {fileID: 2} + m_Panes: + - {fileID: 8} + - {fileID: 2} + - {fileID: 9} + m_Selected: 1 + m_LastSelected: 0 +--- !u!114 &8 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Scene + m_Image: {fileID: 2593428753322112591, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 209 + y: 81 + width: 1315 + height: 641 + m_ViewDataDictionary: {fileID: 0} + m_ShowContextualTools: 0 + m_WindowGUID: 12eb4c7e7e9246b4bad987d5446baa90 + m_Gizmos: 1 + m_SceneIsLit: 1 + m_SceneLighting: 1 + m_2DMode: 0 + m_isRotationLocked: 0 + m_PlayAudio: 0 + m_AudioPlay: 0 + m_Position: + m_Target: {x: 6.8627615, y: 1.9820986, z: 1.2093239} + speed: 2 + m_Value: {x: 6.8627615, y: 1.9820986, z: 1.2093239} + m_RenderMode: 0 + m_CameraMode: + drawMode: 0 + name: Shaded + section: Shading Mode + m_ValidateTrueMetals: 0 + m_DoValidateTrueMetals: 0 + m_ExposureSliderValue: 0 + m_ExposureSliderMax: 10 + m_SceneViewState: + showFog: 1 + showMaterialUpdate: 0 + showSkybox: 1 + showFlares: 1 + showImageEffects: 1 + showParticleSystems: 1 + m_Grid: + xGrid: + m_Fade: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0} + yGrid: + m_Fade: + m_Target: 1 + speed: 2 + m_Value: 1 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 1, y: 1} + zGrid: + m_Fade: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0} + m_ShowGrid: 1 + m_GridAxis: 1 + m_gridOpacity: 0.5 + m_Rotation: + m_Target: {x: -0.16871262, y: -0.057038333, z: 0.009780103, w: -0.9839709} + speed: 2 + m_Value: {x: -0.16871163, y: -0.057038, z: 0.0097800465, w: -0.98396516} + m_Size: + m_Target: 14.215945 + speed: 2 + m_Value: 14.215945 + m_Ortho: + m_Target: 0 + speed: 2 + m_Value: 0 + m_CameraSettings: + m_Speed: 1 + m_SpeedNormalized: 0.5 + m_SpeedMin: 0.01 + m_SpeedMax: 2 + m_EasingEnabled: 1 + m_EasingDuration: 0.4 + m_AccelerationEnabled: 1 + m_FieldOfViewHorizontalOrVertical: 60 + m_NearClip: 0.03 + m_FarClip: 10000 + m_DynamicClip: 1 + m_OcclusionCulling: 0 + m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0} + m_LastSceneViewOrtho: 0 + m_ReplacementShader: {fileID: 0} + m_ReplacementString: + m_SceneVisActive: 1 + m_LastLockedObject: {fileID: 0} + m_ViewIsLockedToObject: 0 +--- !u!114 &9 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12111, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 400, y: 100} + m_MaxSize: {x: 2048, y: 2048} + m_TitleContent: + m_Text: Asset Store + m_Image: {fileID: -8693916549880196297, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 468 + y: 181 + width: 973 + height: 501 + m_ViewDataDictionary: {fileID: 0} +--- !u!114 &10 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: ConsoleWindow + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 662 + width: 1518 + height: 272 + m_MinSize: {x: 101, y: 121} + m_MaxSize: {x: 4001, y: 4021} + m_ActualView: {fileID: 12} + m_Panes: + - {fileID: 11} + - {fileID: 12} + m_Selected: 1 + m_LastSelected: 0 +--- !u!114 &11 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 230, y: 250} + m_MaxSize: {x: 10000, y: 10000} + m_TitleContent: + m_Text: Project + m_Image: {fileID: -5467254957812901981, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 8 + y: 743 + width: 1517 + height: 251 + m_ViewDataDictionary: {fileID: 0} + m_SearchFilter: + m_NameFilter: + m_ClassNames: [] + m_AssetLabels: [] + m_AssetBundleNames: [] + m_VersionControlStates: [] + m_SoftLockControlStates: [] + m_ReferencingInstanceIDs: + m_SceneHandles: + m_ShowAllHits: 0 + m_SkipHidden: 0 + m_SearchArea: 1 + m_Folders: + - Assets/Scripts + m_ViewMode: 1 + m_StartGridSize: 64 + m_LastFolders: + - Assets/Scripts + m_LastFoldersGridSize: -1 + m_LastProjectPath: C:\Users\peter\Documents\UNITY\Junction2020\WarmUpProject\WarmUp + m_LockTracker: + m_IsLocked: 0 + m_FolderTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: 54360000 + m_LastClickedID: 13908 + m_ExpandedIDs: 000000004836000000ca9a3b + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_AssetTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 000000004836000000ca9a3b + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_ListAreaState: + m_SelectedInstanceIDs: 1cf7ffff + m_LastClickedInstanceID: -2276 + m_HadKeyboardFocusLastEvent: 0 + m_ExpandedInstanceIDs: c6230000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 10} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_NewAssetIndexInList: -1 + m_ScrollPosition: {x: 0, y: 0} + m_GridSize: 64 + m_SkipHiddenPackages: 0 + m_DirectoriesAreaWidth: 115 +--- !u!114 &12 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Console + m_Image: {fileID: -4327648978806127646, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 8 + y: 743 + width: 1517 + height: 251 + m_ViewDataDictionary: {fileID: 0} +--- !u!114 &13 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 1518 + y: 0 + width: 386 + height: 934 + m_MinSize: {x: 276, y: 71} + m_MaxSize: {x: 4001, y: 4021} + m_ActualView: {fileID: 14} + m_Panes: + - {fileID: 14} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &14 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Inspector + m_Image: {fileID: -2667387946076563598, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 1526 + y: 81 + width: 385 + height: 913 + m_ViewDataDictionary: {fileID: 0} + m_OpenAddComponentMenu: 0 + m_ObjectsLockedBeforeSerialization: [] + m_InstanceIDsLockedBeforeSerialization: + m_LockTracker: + m_IsLocked: 0 + m_PreviewResizer: + m_CachedPref: 160 + m_ControlHash: -371814159 + m_PrefName: Preview_InspectorPreview + m_PreviewWindow: {fileID: 0} + m_LastInspectedObjectInstanceID: -2276 + m_LastVerticalScrollValue: 0 diff --git a/Library/EditorInstance.json b/Library/EditorInstance.json new file mode 100644 index 0000000..0563d5a --- /dev/null +++ b/Library/EditorInstance.json @@ -0,0 +1,6 @@ +{ + "process_id" : 29528, + "version" : "2019.4.14f1", + "app_path" : "C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Unity.exe", + "app_contents_path" : "C:/Program Files/Unity/Hub/Editor/2019.4.14f1/Editor/Data" +} \ No newline at end of file diff --git a/Library/EditorOnlyScriptingSettings.json b/Library/EditorOnlyScriptingSettings.json new file mode 100644 index 0000000..8e1824c --- /dev/null +++ b/Library/EditorOnlyScriptingSettings.json @@ -0,0 +1 @@ +{"m_DefineSymbols":[],"m_AllowUnsafeCode":false} \ No newline at end of file diff --git a/Library/EditorSnapSettings.asset b/Library/EditorSnapSettings.asset new file mode 100644 index 0000000..7a90624 --- /dev/null +++ b/Library/EditorSnapSettings.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 13954, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_SnapEnabled: 0 + m_SnapSettings: + m_SnapValue: {x: 0.25, y: 0.25, z: 0.25} + m_SnapMultiplier: {x: 2048, y: 2048, z: 2048} + m_Rotation: 15 + m_Scale: 1 diff --git a/Library/EditorUserBuildSettings.asset b/Library/EditorUserBuildSettings.asset new file mode 100644 index 0000000..e965da9 Binary files /dev/null and b/Library/EditorUserBuildSettings.asset differ diff --git a/Library/EditorUserSettings.asset b/Library/EditorUserSettings.asset new file mode 100644 index 0000000..4681d1d --- /dev/null +++ b/Library/EditorUserSettings.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!162 &1 +EditorUserSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_ConfigSettings: + vcSharedLogLevel: + value: 0d5e400f0650 + flags: 0 + m_VCAutomaticAdd: 1 + m_VCDebugCom: 0 + m_VCDebugCmd: 0 + m_VCDebugOut: 0 + m_SemanticMergeMode: 2 + m_VCShowFailedCheckout: 1 + m_VCOverwriteFailedCheckoutAssets: 1 + m_VCOverlayIcons: 1 + m_VCAllowAsyncUpdate: 0 diff --git a/Library/InspectorExpandedItems.asset b/Library/InspectorExpandedItems.asset new file mode 100644 index 0000000..eef7479 Binary files /dev/null and b/Library/InspectorExpandedItems.asset differ diff --git a/Library/LastSceneManagerSetup.txt b/Library/LastSceneManagerSetup.txt new file mode 100644 index 0000000..668c4a1 --- /dev/null +++ b/Library/LastSceneManagerSetup.txt @@ -0,0 +1,5 @@ +sceneSetups: +- path: Assets/Scenes/SpaceInvader.unity + isLoaded: 1 + isActive: 1 + isSubScene: 0 diff --git a/Library/LibraryFormatVersion.txt b/Library/LibraryFormatVersion.txt new file mode 100644 index 0000000..6185f09 --- /dev/null +++ b/Library/LibraryFormatVersion.txt @@ -0,0 +1,2 @@ +unityRebuildLibraryVersion: 11 +unityForwardCompatibleVersion: 40 diff --git a/Library/MonoManager.asset b/Library/MonoManager.asset new file mode 100644 index 0000000..1e0965d Binary files /dev/null and b/Library/MonoManager.asset differ diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/CHANGELOG.md b/Library/PackageCache/com.unity.2d.common@2.0.2/CHANGELOG.md new file mode 100644 index 0000000..151ab17 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/CHANGELOG.md @@ -0,0 +1,32 @@ +# Changelog + +## [2.0.2] - 2019-08-09 +### Added +- Add Seconday Texture settings into TextureSettings for TextureGenerator +- Add related test packages + +## [2.0.1] - 2019-07-13 +### Changed +- Mark package to support Unity 2019.3.0a10 onwards. + +## [2.0.0] - 2019-6-17 +### Added +- Drop preview tag. +- Remove experimental namespace + +## [1.2.0-preview.2] - 2019-6-4 +### Added +- Remove Image Packer Debug Window +- Move tests out of package + +## [1.2.0-preview.1] - 2019-2-20 +### Added +- Update for Unity 2019.2 support. + +## [1.1.0-preview.2] - 2019-3-18 +### Added +- Remove deprecated call to Unity internal API + +## [1.1.0-preview.1] - 2019-1-25 +### Added +- Added versioning for CI. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/CHANGELOG.md.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/CHANGELOG.md.meta new file mode 100644 index 0000000..08b4fbd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1791df116968841c6bc27470d2ebeaa8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Documentation~/Common.md b/Library/PackageCache/com.unity.2d.common@2.0.2/Documentation~/Common.md new file mode 100644 index 0000000..35945b6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Documentation~/Common.md @@ -0,0 +1,5 @@ +2D Common + +# Overview + +This package contains shared code used by various 2D projects such as SpriteShape, Animation etc.. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor.meta new file mode 100644 index 0000000..2ef3f91 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f07558e3f18214421b184e32d188624c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/AssemblyInfo.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/AssemblyInfo.cs new file mode 100644 index 0000000..bef8924 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("Unity.2D.Common.Tests.EditorTests")] +[assembly: InternalsVisibleTo("Unity.2D.PsdImporter.Editor")] diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/AssemblyInfo.cs.meta new file mode 100644 index 0000000..93c1bb8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb006e3fa37420b42b3673eef90cd4b3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker.meta new file mode 100644 index 0000000..9e55b96 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 534fa0647f988416eafbba143e1ff174 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackNode.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackNode.cs new file mode 100644 index 0000000..1a749a7 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackNode.cs @@ -0,0 +1,213 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Common +{ + internal interface IImagePackNodeVisitor + { + void Visit(ImagePackNode node); + } + + class CollectEmptyNodePositionVisitor : IImagePackNodeVisitor + { + public List emptyAreas = new List(); + public void Visit(ImagePackNode node) + { + if (node.imageId == -1) + { + emptyAreas.Add(node.rect); + } + } + } + + class CollectPackNodePositionVisitor : IImagePackNodeVisitor + { + public CollectPackNodePositionVisitor() + { + positions = new Vector2Int[0]; + } + + public void Visit(ImagePackNode node) + { + if (node.imageId != -1) + { + if (positions.Length < node.imageId + 1) + { + var p = positions; + Array.Resize(ref p, node.imageId + 1); + positions = p; + } + + positions[node.imageId].x = node.rect.x; + positions[node.imageId].y = node.rect.y; + } + } + + public Vector2Int[] positions { get; private set; } + } + + internal class ImagePackNode + { + public ImagePackNode left; + public ImagePackNode right; + public RectInt rect; + public Vector2Int imageWidth; + public int imageId = -1; + + public void AcceptVisitor(IImagePackNodeVisitor visitor) + { + visitor.Visit(this); + if (left != null) + left.AcceptVisitor(visitor); + if (right != null) + right.AcceptVisitor(visitor); + } + + public void AdjustSize(int oriWidth, int oriHeight, int deltaW, int deltaH, out int adjustx, out int adjusty) + { + adjustx = adjusty = 0; + int adjustXleft = 0, adjustYleft = 0, adjustXRight = 0, adjustYRight = 0; + if (imageId == -1 || left == null) + { + if (rect.x + rect.width == oriWidth) + { + rect.width += deltaW; + adjustx = deltaW; + } + if (rect.y + rect.height == oriHeight) + { + rect.height += deltaH; + adjusty = deltaH; + } + } + else + { + left.AdjustSize(oriWidth, oriHeight, deltaW, deltaH, out adjustXleft, out adjustYleft); + right.AdjustSize(oriWidth, oriHeight, deltaW, deltaH, out adjustXRight, out adjustYRight); + + adjustx = Mathf.Max(adjustXleft, adjustXRight); + rect.width += adjustx; + adjusty = Mathf.Max(adjustYleft, adjustYRight); + rect.height += adjusty; + } + } + + public bool TryInsert(ImagePacker.ImagePackRect insert, int padding, out Vector2Int remainingSpace) + { + remainingSpace = Vector2Int.zero; + int insertWidth = insert.rect.width + padding * 2; + int insertHeight = insert.rect.height + padding * 2; + if (insertWidth > rect.width || insertHeight > rect.height) + return false; + + if (imageId == -1) + { + remainingSpace.x = rect.width - insertWidth; + remainingSpace.y = rect.height - insertHeight; + } + else + { + Vector2Int spaceLeft, spaceRight; + bool insertLeft, insertRight; + ImagePackNode tryLeft, tryRight; + tryLeft = left; + tryRight = right; + if (left == null && !SplitRects(this, insert, padding, out tryLeft, out tryRight)) + { + return false; + } + + insertLeft = tryLeft.TryInsert(insert, padding, out spaceLeft); + insertRight = tryRight.TryInsert(insert, padding, out spaceRight); + if (insertLeft && insertRight) + { + remainingSpace = spaceLeft.sqrMagnitude < spaceRight.sqrMagnitude ? spaceLeft : spaceRight; + } + else if (insertLeft) + remainingSpace = spaceLeft; + else if (insertRight) + remainingSpace = spaceRight; + else + return false; + } + + return true; + } + + static bool SplitRects(ImagePackNode node, ImagePacker.ImagePackRect insert, int padding, out ImagePackNode left, out ImagePackNode right) + { + // Find the best way to split the rect based on a new rect + left = right = null; + var tryRects = new[] + { + new ImagePackNode(), new ImagePackNode(), + new ImagePackNode(), new ImagePackNode() + }; + + tryRects[0].rect = new RectInt(node.rect.x + node.imageWidth.x, node.rect.y, node.rect.width - node.imageWidth.x, node.rect.height); + tryRects[1].rect = new RectInt(node.rect.x, node.rect.y + node.imageWidth.y, node.imageWidth.x, node.rect.height - node.imageWidth.y); + tryRects[2].rect = new RectInt(node.rect.x, node.rect.y + node.imageWidth.y, node.rect.width, node.rect.height - node.imageWidth.y); + tryRects[3].rect = new RectInt(node.rect.x + node.imageWidth.x, node.rect.y, node.rect.width - node.imageWidth.x, node.imageWidth.y); + float smallestSpace = float.MinValue; + for (int i = 0; i < tryRects.GetLength(0); ++i) + { + //for (int j = 0; j < tryRects.GetLength(1); ++j) + { + Vector2Int newSpaceLeft; + if (tryRects[i].TryInsert(insert, padding, out newSpaceLeft)) + { + if (smallestSpace < newSpaceLeft.sqrMagnitude) + { + smallestSpace = newSpaceLeft.sqrMagnitude; + int index = i / 2 * 2; + left = tryRects[index]; + right = tryRects[index + 1]; + } + } + } + } + return left != null; + } + + public bool Insert(ImagePacker.ImagePackRect insert, int padding) + { + int insertWidth = insert.rect.width + padding * 2; + int insertHeight = insert.rect.height + padding * 2; + if (insertWidth > rect.width || insertHeight > rect.height) + return false; + + if (imageId == -1) + { + imageId = insert.index; + imageWidth = new Vector2Int(insertWidth, insertHeight); + } + else + { + if (left == null && !SplitRects(this, insert, padding, out left, out right)) + { + return false; + } + // We assign to the node that has a better fit for the image + Vector2Int spaceLeft, spaceRight; + bool insertLeft, insertRight; + insertLeft = left.TryInsert(insert, padding, out spaceLeft); + insertRight = right.TryInsert(insert, padding, out spaceRight); + if (insertLeft && insertRight) + { + if (spaceLeft.sqrMagnitude < spaceRight.sqrMagnitude) + left.Insert(insert, padding); + else + right.Insert(insert, padding); + } + else if (insertLeft) + left.Insert(insert, padding); + else if (insertRight) + right.Insert(insert, padding); + else + return false; + } + return true; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackNode.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackNode.cs.meta new file mode 100644 index 0000000..bc44c42 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 488b804e650114066b55d51eefc85775 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePacker.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePacker.cs new file mode 100644 index 0000000..142ccbc --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePacker.cs @@ -0,0 +1,193 @@ +//#define PACKING_DEBUG + +using System; +using UnityEngine; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; + +namespace UnityEditor.U2D.Common +{ + internal static class ImagePacker + { + /// + /// Given an array of rects, the method returns an array of rects arranged within outPackedWidth and outPackedHeight + /// + /// Rects to pack + /// Padding between each rect + /// Rects arranged within outPackedWidth and outPackedHeight + /// Width of the packed rects + /// Height of the packed rects + public static void Pack(RectInt[] rects, int padding, out RectInt[] outPackedRects, out int outPackedWidth, out int outPackedHeight) + { + var packNode = InternalPack(rects, padding); + outPackedWidth = packNode.rect.width; + outPackedHeight = packNode.rect.height; + var visitor = new CollectPackNodePositionVisitor(); + packNode.AcceptVisitor(visitor); + + outPackedRects = new RectInt[rects.Length]; + for (int i = 0; i < rects.Length; ++i) + outPackedRects[i] = new RectInt(visitor.positions[i].x + padding, visitor.positions[i].y + padding, rects[i].width, rects[i].height); +#if PACKING_DEBUG + var emptyNodeCollector = new CollectEmptyNodePositionVisitor(); + packNode.AcceptVisitor(emptyNodeCollector); + Array.Resize(ref outPackedRects, rects.Length + emptyNodeCollector.emptyAreas.Count); + for (int i = rects.Length; i < outPackedRects.Length; ++i) + outPackedRects[i] = emptyNodeCollector.emptyAreas[i - rects.Length]; +#endif + } + + /// + /// Packs image buffer into a single buffer. Image buffers are assumed to be 4 bytes per pixel in RGBA format + /// + /// Image buffers to pack + /// Image buffers width + /// Image buffers height + /// Padding between each packed image + /// Packed image buffer + /// Packed image buffer's width + /// Packed iamge buffer's height + /// Location of each image buffers in the packed buffer + /// Translation data from image original buffer to packed buffer + public static void Pack(NativeArray[] buffers, int width, int height, int padding, out NativeArray outPackedBuffer, out int outPackedBufferWidth, out int outPackedBufferHeight, out RectInt[] outPackedRect, out Vector2Int[] outUVTransform) + { + UnityEngine.Profiling.Profiler.BeginSample("Pack"); + // Determine the area that contains data in the buffer + outPackedBuffer = default(NativeArray); + try + { + var tightRects = FindTightRectJob.Execute(buffers, width, height); + Pack(tightRects, padding, out outPackedRect, out outPackedBufferWidth, out outPackedBufferHeight); + outUVTransform = new Vector2Int[tightRects.Length]; + for (int i = 0; i < outUVTransform.Length; ++i) + { + outUVTransform[i] = new Vector2Int(outPackedRect[i].x - tightRects[i].x, outPackedRect[i].y - tightRects[i].y); + } + outPackedBuffer = new NativeArray(outPackedBufferWidth * outPackedBufferHeight, Allocator.Temp); + + Blit(outPackedBuffer, outPackedRect, outPackedBufferWidth, buffers, tightRects, width, padding); + } + catch (Exception ex) + { + if (outPackedBuffer.IsCreated) + outPackedBuffer.Dispose(); + throw ex; + } + finally + { + UnityEngine.Profiling.Profiler.EndSample(); + } + } + + static ImagePackNode InternalPack(RectInt[] rects, int padding) + { + if (rects == null || rects.Length == 0) + return new ImagePackNode() { rect = new RectInt(0, 0, 0, 0)}; + var sortedRects = new ImagePackRect[rects.Length]; + for (int i = 0; i < rects.Length; ++i) + { + sortedRects[i] = new ImagePackRect(); + sortedRects[i].rect = rects[i]; + sortedRects[i].index = i; + } + Array.Sort(sortedRects); + var root = new ImagePackNode(); + root.rect = new RectInt(0, 0, (int)NextPowerOfTwo((ulong)rects[0].width), (int)NextPowerOfTwo((ulong)rects[0].height)); + + for (int i = 0; i < rects.Length; ++i) + { + if (!root.Insert(sortedRects[i], padding)) // we can't fit + { + int newWidth = root.rect.width , newHeight = root.rect.height; + if (root.rect.width < root.rect.height) + newWidth = (int)NextPowerOfTwo((ulong)root.rect.width + 1); + else + newHeight = (int)NextPowerOfTwo((ulong)root.rect.height + 1); + // Reset all packing and try again + root = new ImagePackNode(); + root.rect = new RectInt(0, 0, newWidth, newHeight); + i = -1; + } + } + return root; + } + + public static unsafe void Blit(NativeArray buffer, RectInt[] blitToArea, int bufferbytesPerRow, NativeArray[] originalBuffer, RectInt[] blitFromArea, int bytesPerRow, int padding) + { + UnityEngine.Profiling.Profiler.BeginSample("Blit"); + + var c = (Color32*)buffer.GetUnsafePtr(); + for (int bufferIndex = 0; bufferIndex < blitToArea.Length && bufferIndex < originalBuffer.Length && bufferIndex < blitFromArea.Length; ++bufferIndex) + { + var b = (Color32*)originalBuffer[bufferIndex].GetUnsafeReadOnlyPtr(); + var rectFrom = blitFromArea[bufferIndex]; + var rectTo = blitToArea[bufferIndex]; + for (int i = 0; i < rectFrom.height; ++i) + { + for (int j = 0; j < rectFrom.width; ++j) + { + Color32 cc = b[(rectFrom.y + i) * bytesPerRow + rectFrom.x + j]; + c[((rectTo.y + i) * bufferbytesPerRow) + rectTo.x + j] = cc; + } + } + } + +#if PACKING_DEBUG + var emptyColors = new Color32[] + { + new Color32((byte)255, (byte)0, (byte)0, (byte)255), + new Color32((byte)255, (byte)255, (byte)0, (byte)255), + new Color32((byte)255, (byte)0, (byte)255, (byte)255), + new Color32((byte)255, (byte)255, (byte)255, (byte)255), + new Color32((byte)0, (byte)255, (byte)0, (byte)255), + new Color32((byte)0, (byte)0, (byte)255, (byte)255) + }; + + for (int k = originalBuffer.Length; k < blitToArea.Length; ++k) + { + var rectFrom = blitToArea[k]; + for (int i = 0; i < rectFrom.height; ++i) + { + for (int j = 0; j < rectFrom.width; ++j) + { + c[((rectFrom.y + i) * bufferbytesPerRow) + rectFrom.x + j] = + emptyColors[k % emptyColors.Length]; + } + } + } +#endif + UnityEngine.Profiling.Profiler.EndSample(); + } + + internal static ulong NextPowerOfTwo(ulong v) + { + v -= 1; + v |= v >> 16; + v |= v >> 8; + v |= v >> 4; + v |= v >> 2; + v |= v >> 1; + return v + 1; + } + + internal class ImagePackRect : IComparable + { + public RectInt rect; + public int index; + + public int CompareTo(ImagePackRect obj) + { + var lhsArea = rect.width * rect.height; + var rhsArea = obj.rect.width * obj.rect.height; + if (lhsArea > rhsArea) + return -1; + if (lhsArea < rhsArea) + return 1; + if (index < obj.index) + return -1; + + return 1; + } + } + } +} diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePacker.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePacker.cs.meta new file mode 100644 index 0000000..0c5f0b3 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePacker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6ea81e02715034d7e81c7c8e6f5e3329 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackerDebugEditor.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackerDebugEditor.cs new file mode 100644 index 0000000..5f0431c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackerDebugEditor.cs @@ -0,0 +1,300 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor.U2D.Sprites; +using UnityEditorInternal; +using UnityEngine; +using UnityEngine.UIElements; +using Object = UnityEngine.Object; + +namespace UnityEditor.U2D.Common +{ + internal class ImagePackerDebugEditor : EditorWindow + { + [MenuItem("internal:Window/2D/Common/Image Packer Debug Editor")] + static void Launch() + { + var window = EditorWindow.GetWindow(); + var pos = window.position; + pos.height = pos.width = 400; + window.position = pos; + window.Show(); + } + + ReorderableList m_ReorderableList; + ImagePacker.ImagePackRect[] m_PackingRect = null; + List m_PackRects = new List(); + RectInt[] m_PackResult = null; + SpriteRect[] m_SpriteRects = null; + Texture2D m_Texture; + int m_TextureActualWidth = 0; + int m_TextureActualHeight = 0; + int m_PackWidth = 0; + int m_PackHeight = 0; + int m_Padding = 0; + Vector2 m_ConfigScroll = Vector2.zero; + float m_Zoom = 1; + IMGUIContainer m_PackArea; + int m_PackStep = -1; + protected const float k_MinZoomPercentage = 0.9f; + protected const float k_WheelZoomSpeed = 0.03f; + protected const float k_MouseZoomSpeed = 0.005f; + + void OnEnable() + { + var visualContainer = new VisualElement() + { + name = "Container", + style = + { + flexGrow = 1, + flexDirection = FlexDirection.Row + } + }; + this.rootVisualElement.Add(visualContainer); + + var imgui = new IMGUIContainer(OnConfigGUI) + { + name = "Config", + style = + { + width = 300 + } + }; + + visualContainer.Add(imgui); + + m_PackArea = new IMGUIContainer(OnImagePackerGUI) + { + name = "ImagePacker", + style = + { + flexGrow = 1, + } + }; + visualContainer.Add(m_PackArea); + SetupConfigGUI(); + } + + void SetupConfigGUI() + { + m_ReorderableList = new ReorderableList(m_PackRects, typeof(RectInt), false, false, true, true); + m_ReorderableList.elementHeightCallback = (int index) => + { + return EditorGUIUtility.singleLineHeight * 2 + 6; + }; + m_ReorderableList.drawElementCallback = DrawListElement; + + m_ReorderableList.onAddCallback = (list) => + { + m_PackRects.Add(new RectInt()); + }; + m_ReorderableList.onRemoveCallback = (list) => + { + m_PackRects.RemoveAt(list.index); + }; + } + + void DrawListElement(Rect rect, int index, bool isactive, bool isfocused) + { + var rectInt = m_PackRects[index]; + var name = m_SpriteRects == null || index >= m_SpriteRects.Length ? index.ToString() : m_SpriteRects[index]. + name; + rectInt.size = EditorGUI.Vector2IntField(rect, name, rectInt.size); + m_PackRects[index] = rectInt; + } + + void OnConfigGUI() + { + EditorGUILayout.BeginVertical(); + m_ConfigScroll = EditorGUILayout.BeginScrollView(m_ConfigScroll); + m_ReorderableList.DoLayoutList(); + EditorGUILayout.EndScrollView(); + GUILayout.FlexibleSpace(); + + m_PackStep = EditorGUILayout.IntSlider("Step", m_PackStep, 0, m_PackRects.Count); + EditorGUI.BeginChangeCheck(); + m_Texture = EditorGUILayout.ObjectField(new GUIContent("Texture"), (Object)m_Texture, typeof(Texture2D), false) as Texture2D; + if (EditorGUI.EndChangeCheck()) + UpdateSpriteRect(); + m_Padding = EditorGUILayout.IntField("Padding", m_Padding); + EditorGUILayout.BeginHorizontal(); + if (GUILayout.Button("<<")) + { + m_PackStep = m_PackStep <= 0 ? 0 : m_PackStep - 1; + Pack(); + } + if (GUILayout.Button("Pack")) + Pack(); + if (GUILayout.Button(">>")) + { + m_PackStep = m_PackStep > m_PackRects.Count ? m_PackRects.Count : m_PackStep + 1; + Pack(); + } + if (GUILayout.Button("Clear")) + { + m_PackRects.Clear(); + m_Texture = null; + m_PackingRect = null; + m_PackResult = null; + m_SpriteRects = null; + } + + EditorGUILayout.EndHorizontal(); + EditorGUILayout.EndVertical(); + } + + void UpdateSpriteRect() + { + var dataProvider = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(m_Texture)) as ISpriteEditorDataProvider; + if (dataProvider == null) + return; + dataProvider.InitSpriteEditorDataProvider(); + dataProvider.GetDataProvider().GetTextureActualWidthAndHeight(out m_TextureActualWidth, out m_TextureActualHeight); + m_SpriteRects = dataProvider.GetDataProvider().GetSpriteRects(); + m_PackRects.Clear(); + m_PackRects.AddRange(m_SpriteRects.Select(x => new RectInt((int)x.rect.x, (int)x.rect.y, (int)x.rect.width, (int)x.rect.height))); + m_PackResult = null; + m_PackStep = m_PackRects.Count; + } + + void Pack() + { + int count = m_PackStep > 0 && m_PackStep < m_PackRects.Count ? m_PackStep : m_PackRects.Count; + m_PackingRect = new ImagePacker.ImagePackRect[m_PackRects.Count]; + for (int i = 0; i < m_PackRects.Count; ++i) + { + m_PackingRect[i] = new ImagePacker.ImagePackRect() + { + rect = m_PackRects[i], + index = i + }; + } + Array.Sort(m_PackingRect); + ImagePacker.Pack(m_PackingRect.Take(count).Select(x => x.rect).ToArray(), m_Padding, out m_PackResult, out m_PackWidth, out m_PackHeight); + } + + void DrawLabel(Rect rect, string label) + { + rect.position = Handles.matrix.MultiplyPoint(rect.position); + GUI.Label(rect, label); + } + + void OnImagePackerGUI() + { + if (m_PackResult == null) + return; + HandleZoom(); + var oldMatrix = Handles.matrix; + SetupHandlesMatrix(); + Handles.DrawSolidRectangleWithOutline(new Rect(0, 0, m_PackWidth, m_PackHeight), Color.gray, Color.black); + DrawLabel(new Rect(0, 0, m_PackWidth, m_PackHeight), m_PackWidth + "x" + m_PackHeight); + + int index = 0; + + foreach (var rect in m_PackResult) + { + Handles.DrawSolidRectangleWithOutline(new Rect(rect.x, rect.y, rect.width, rect.height), Color.white, Color.black); + var rect1 = new Rect(rect.x, rect.y + rect.height * 0.5f, rect.width, EditorGUIUtility.singleLineHeight); + DrawLabel(rect1, m_PackingRect[index].index.ToString()); + ++index; + } + + index = 0; + if (m_Texture != null && m_SpriteRects != null) + { + var material = new Material(Shader.Find("Sprites/Default")); + material.mainTexture = m_Texture; + material.SetPass(0); + + int mouseOverIndex = -1; + GL.PushMatrix(); + GL.LoadIdentity(); + GL.MultMatrix(GUI.matrix * Handles.matrix); + GL.Begin(GL.QUADS); + for (int i = 0; i < m_PackResult.Length; ++i) + { + index = m_PackingRect[i].index; + if (index >= m_SpriteRects.Length) + continue; + var rect = m_PackResult[i]; + GL.TexCoord(new Vector3(m_SpriteRects[index].rect.x / m_TextureActualWidth, m_SpriteRects[index].rect.y / m_TextureActualHeight, 0)); + GL.Vertex(new Vector3(rect.x, rect.y, 0)); + GL.TexCoord(new Vector3(m_SpriteRects[index].rect.xMax / m_TextureActualWidth, m_SpriteRects[index].rect.y / m_TextureActualHeight, 0)); + GL.Vertex(new Vector3(rect.x + rect.width, rect.y, 0)); + GL.TexCoord(new Vector3(m_SpriteRects[index].rect.xMax / m_TextureActualWidth, m_SpriteRects[index].rect.yMax / m_TextureActualHeight, 0)); + GL.Vertex(new Vector3(rect.x + rect.width, rect.y + rect.height, 0)); + GL.TexCoord(new Vector3(m_SpriteRects[index].rect.x / m_TextureActualWidth, m_SpriteRects[index].rect.yMax / m_TextureActualHeight, 0)); + GL.Vertex(new Vector3(rect.x, rect.y + rect.height, 0)); + var m = Handles.matrix.inverse.MultiplyPoint(Event.current.mousePosition); + if (rect.Contains(new Vector2Int((int)m.x, (int)m.y))) + { + mouseOverIndex = index; + } + ++index; + } + + GL.End(); + GL.PopMatrix(); + if (mouseOverIndex >= 0) + { + var text = new GUIContent(m_SpriteRects[mouseOverIndex].name + " " + index); + var length = EditorStyles.textArea.CalcSize(text); + var rect1 = new Rect(m_PackResult[mouseOverIndex].x, m_PackResult[mouseOverIndex].y + m_PackResult[mouseOverIndex].height * 0.5f, length.x, length.y); + rect1.position = Handles.matrix.MultiplyPoint(rect1.position); + if (Event.current.type == EventType.Repaint) + EditorStyles.textArea.Draw(rect1, text, false, false, false, false); + } + } + + Handles.matrix = oldMatrix; + } + + void SetupHandlesMatrix() + { + Vector3 handlesPos = new Vector3(0, m_PackHeight * m_Zoom, 0f); + Vector3 handlesScale = new Vector3(m_Zoom, -m_Zoom, 1f); + Handles.matrix = Matrix4x4.TRS(handlesPos, Quaternion.identity, handlesScale); + } + + protected void HandleZoom() + { + bool zoomMode = Event.current.alt && Event.current.button == 1; + if (zoomMode) + { + EditorGUIUtility.AddCursorRect(m_PackArea.worldBound, MouseCursor.Zoom); + } + + if ( + ((Event.current.type == EventType.MouseUp || Event.current.type == EventType.MouseDown) && zoomMode) || + ((Event.current.type == EventType.KeyUp || Event.current.type == EventType.KeyDown) && Event.current.keyCode == KeyCode.LeftAlt) + ) + { + Repaint(); + } + + if (Event.current.type == EventType.ScrollWheel || (Event.current.type == EventType.MouseDrag && Event.current.alt && Event.current.button == 1)) + { + float zoomMultiplier = 1f - Event.current.delta.y * (Event.current.type == EventType.ScrollWheel ? k_WheelZoomSpeed : -k_MouseZoomSpeed); + + // Clamp zoom + float wantedZoom = m_Zoom * zoomMultiplier; + + float currentZoom = Mathf.Clamp(wantedZoom, GetMinZoom(), 1); + + if (currentZoom != m_Zoom) + { + m_Zoom = currentZoom; + Event.current.Use(); + } + } + } + + protected float GetMinZoom() + { + if (m_Texture == null) + return 1.0f; + return Mathf.Min(m_PackArea.worldBound.width / m_PackWidth, m_PackArea.worldBound.height / m_PackHeight, 0.05f) * k_MinZoomPercentage; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackerDebugEditor.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackerDebugEditor.cs.meta new file mode 100644 index 0000000..d66fd88 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/ImagePackerDebugEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 13c5c1934f6f927419763b01ff95ed74 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/Jobs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/Jobs.meta new file mode 100644 index 0000000..99b677a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/Jobs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 55c552c82618a429ebc328c8ba27b416 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/Jobs/FindTightRectJob.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/Jobs/FindTightRectJob.cs new file mode 100644 index 0000000..91be9af --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/Jobs/FindTightRectJob.cs @@ -0,0 +1,59 @@ +using System; +using UnityEngine; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Jobs; + +namespace UnityEditor.U2D.Common +{ + public struct FindTightRectJob : IJobParallelFor + { + [ReadOnly] + [DeallocateOnJobCompletion] + NativeArray m_Buffers; + [ReadOnly] + int m_Width; + [ReadOnly] + int m_Height; + NativeArray m_Output; + + public unsafe void Execute(int index) + { + var rect = new RectInt(m_Width, m_Height, 0, 0); + var color = (Color32*)m_Buffers[index].ToPointer(); + for (int i = 0; i < m_Height; ++i) + { + for (int j = 0; j < m_Width; ++j) + { + if (color->a != 0) + { + rect.x = Mathf.Min(j, rect.x); + rect.y = Mathf.Min(i, rect.y); + rect.width = Mathf.Max(j, rect.width); + rect.height = Mathf.Max(i, rect.height); + } + ++color; + } + } + rect.width = Mathf.Max(0, rect.width - rect.x + 1); + rect.height = Mathf.Max(0, rect.height - rect.y + 1); + m_Output[index] = rect; + } + + public static unsafe RectInt[] Execute(NativeArray[] buffers, int width, int height) + { + var job = new FindTightRectJob(); + job.m_Buffers = new NativeArray(buffers.Length, Allocator.TempJob); + for (int i = 0; i < buffers.Length; ++i) + job.m_Buffers[i] = new IntPtr(buffers[i].GetUnsafeReadOnlyPtr()); + job.m_Output = new NativeArray(buffers.Length, Allocator.TempJob); + job.m_Width = width; + job.m_Height = height; + // Ensure all jobs are completed before we return since we don't own the buffers + job.Schedule(buffers.Length, 1).Complete(); + var rects = job.m_Output.ToArray(); + job.m_Output.Dispose(); + return rects; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/Jobs/FindTightRectJob.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/Jobs/FindTightRectJob.cs.meta new file mode 100644 index 0000000..b2c55fa --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/ImagePacker/Jobs/FindTightRectJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9b3eb1ded0fb747809431ebbd42aa4f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge.meta new file mode 100644 index 0000000..e457711 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d59d6a57d3f6f4f17bbf31e5a13966e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/AssemblyInfo.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/AssemblyInfo.cs new file mode 100644 index 0000000..34a46f3 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/AssemblyInfo.cs @@ -0,0 +1,6 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Unity.2D.Animation.Editor")] +[assembly: InternalsVisibleTo("Unity.2D.SpriteShape.Editor")] +[assembly: InternalsVisibleTo("Unity.2D.SpriteShape.EditorTests")] +[assembly: InternalsVisibleTo("Unity.2D.PsdImporter.Editor")] diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/AssemblyInfo.cs.meta new file mode 100644 index 0000000..dfc4b74 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7fc947ed5e1e2b141bd741eca43b418c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalBridgeDef.asmdef b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalBridgeDef.asmdef new file mode 100644 index 0000000..7af87ef --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalBridgeDef.asmdef @@ -0,0 +1,17 @@ +{ + "name": "Unity.InternalAPIEditorBridge.001", + "references": [ + "Unity.2D.Sprite.Editor" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalBridgeDef.asmdef.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalBridgeDef.asmdef.meta new file mode 100644 index 0000000..efb1c03 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalBridgeDef.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ce6baade223984afda3f24c7fca12584 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalEditorBridge.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalEditorBridge.cs new file mode 100644 index 0000000..4cae2c6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalEditorBridge.cs @@ -0,0 +1,106 @@ +using System; +using System.Reflection; +using UnityEditor.ShortcutManagement; +using UnityEditor.U2D.Sprites; +using UnityEngine; +using UnityEngine.Events; + +namespace UnityEditor.U2D.Common +{ + internal static class InternalEditorBridge + { + public static void RenderSortingLayerFields(SerializedProperty order, SerializedProperty layer) + { + SortingLayerEditorUtility.RenderSortingLayerFields(order, layer); + } + + public static void RepaintImmediately(EditorWindow window) + { + window.RepaintImmediately(); + } + + public static ISpriteEditorDataProvider GetISpriteEditorDataProviderFromPath(string importedAsset) + { + return AssetImporter.GetAtPath(importedAsset) as ISpriteEditorDataProvider; + } + + public static void GenerateOutline(Texture2D texture, Rect rect, float detail, byte alphaTolerance, bool holeDetection, out Vector2[][] paths) + { + UnityEditor.Sprites.SpriteUtility.GenerateOutline(texture, rect, detail, alphaTolerance, holeDetection, out paths); + } + + public static bool DoesHardwareSupportsFullNPOT() + { + return ShaderUtil.hardwareSupportsFullNPOT; + } + + public static Texture2D CreateTemporaryDuplicate(Texture2D tex, int width, int height) + { + return UnityEditor.SpriteUtility.CreateTemporaryDuplicate(tex, width, height); + } + + public static void ShowSpriteEditorWindow() + { + SpriteUtilityWindow.ShowSpriteEditorWindow(); + } + + public static void ApplyWireMaterial() + { + HandleUtility.ApplyWireMaterial(); + } + + public static void ResetSpriteEditorView(ISpriteEditor spriteEditor) + { + if (spriteEditor != null) + { + Type t = spriteEditor.GetType(); + var zoom = t.GetField("m_Zoom", BindingFlags.Instance | BindingFlags.NonPublic); + if (zoom != null) + { + zoom.SetValue(spriteEditor, -1); + } + + var scrollPosition = t.GetField("m_ScrollPosition", BindingFlags.Instance | BindingFlags.NonPublic); + if (scrollPosition != null) + { + scrollPosition.SetValue(spriteEditor, new Vector2()); + } + } + } + + public class ShortcutContext : IShortcutToolContext + { + public Func isActive; + public bool active + { + get + { + if (isActive != null) + return isActive(); + return true; + } + } + public object context { get; set; } + } + + public static void RegisterShortcutContext(ShortcutContext context) + { + ShortcutIntegration.instance.contextManager.RegisterToolContext(context); + } + + public static void UnregisterShortcutContext(ShortcutContext context) + { + ShortcutIntegration.instance.contextManager.DeregisterToolContext(context); + } + + public static void AddEditorApplicationProjectLoadedCallback(UnityAction callback) + { + EditorApplication.projectWasLoaded += callback; + } + + public static void RemoveEditorApplicationProjectLoadedCallback(UnityAction callback) + { + EditorApplication.projectWasLoaded -= callback; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalEditorBridge.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalEditorBridge.cs.meta new file mode 100644 index 0000000..600c5bc --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/InternalBridge/InternalEditorBridge.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b410f2c9e86a44d35992f15c05361b29 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/TextureGenerator.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/TextureGenerator.meta new file mode 100644 index 0000000..b22e673 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/TextureGenerator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f190f89354fdfb5479d5f291d8cb8182 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/TextureGenerator/TextureGeneratorHelper.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/TextureGenerator/TextureGeneratorHelper.cs new file mode 100644 index 0000000..e14db9f --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/TextureGenerator/TextureGeneratorHelper.cs @@ -0,0 +1,594 @@ +using System; +using Unity.Collections; +using UnityEditor.Experimental.AssetImporters; +using UnityEngine; + +namespace UnityEditor.U2D.Common +{ + internal interface ITextureSettings + { + void FillTextureGenerationSettings(ref TextureGenerationSettings settings); + } + + + [Serializable] + internal class TextureSettings : ITextureSettings + { + [SerializeField] + bool m_ColorTexture; + [SerializeField] + bool m_Readable; + [SerializeField] + TextureImporterNPOTScale m_NPOTScale; + [SerializeField] + FilterMode m_FilterMode; + [SerializeField] + int m_Aniso; + [SerializeField] + bool m_EnablePostProcessor; + [SerializeField] + SecondarySpriteTexture[] m_SecondaryTextures; + + public TextureSettings() + { + colorTexture = true; + readable = false; + npotScale = TextureImporterNPOTScale.None; + filterMode = FilterMode.Bilinear; + aniso = 1; + } + + public TextureSettings(string assetPath, bool enablePostProcessor, bool colorTexture, bool readable, TextureImporterNPOTScale npotScale, FilterMode filterMode, int aniso, bool sourceContainsAlpha, bool sourceWasHDR) + { + this.assetPath = assetPath; + this.enablePostProcessor = enablePostProcessor; + this.colorTexture = colorTexture; + this.readable = readable; + this.npotScale = npotScale; + this.filterMode = filterMode; + this.aniso = aniso; + this.containsAlpha = sourceContainsAlpha; + this.hdr = sourceWasHDR; + } + + public bool colorTexture { get { return m_ColorTexture; } set { m_ColorTexture = value; } } //sRGBTexture + public bool readable { get { return m_Readable; } set { m_Readable = value; } } + public TextureImporterNPOTScale npotScale { get { return m_NPOTScale; } set { m_NPOTScale = value; } } + public FilterMode filterMode { get { return m_FilterMode; } set { m_FilterMode = value; } } + public int aniso + { + get { return m_Aniso; } + set { m_Aniso = value; } + } + public bool enablePostProcessor + { + get { return m_EnablePostProcessor; } + set { m_EnablePostProcessor = value; } + } + + public string assetPath { get; set; } + public bool containsAlpha { get; set; } + public bool hdr { get; set; } + + public SecondarySpriteTexture[] secondaryTextures { get { return m_SecondaryTextures;} set { m_SecondaryTextures = value; } } + + void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) + { + settings.textureImporterSettings.sRGBTexture = colorTexture; + settings.textureImporterSettings.readable = readable; + settings.textureImporterSettings.npotScale = npotScale; + settings.textureImporterSettings.filterMode = filterMode; + settings.textureImporterSettings.aniso = aniso; + settings.assetPath = assetPath; + settings.enablePostProcessor = enablePostProcessor; + settings.sourceTextureInformation.containsAlpha = containsAlpha; + settings.sourceTextureInformation.hdr = hdr; + settings.secondarySpriteTextures = secondaryTextures; + } + } + + [Serializable] + internal class TextureSpriteSettings : ITextureSettings + { + [SerializeField] + string m_PackingTag; + public string packingTag + { + get { return m_PackingTag; } + set { m_PackingTag = value; } + } + + [SerializeField] + float m_PixelsPerUnit; + public float pixelsPerUnit + { + get { return m_PixelsPerUnit; } + set { m_PixelsPerUnit = value; } + } + + [SerializeField] + SpriteMeshType m_MeshType; + public SpriteMeshType meshType + { + get { return m_MeshType; } + set { m_MeshType = value; } + } + + [SerializeField] + uint m_ExtrudeEdges; + public uint extrudeEdges + { + get { return m_ExtrudeEdges; } + set { m_ExtrudeEdges = value; } + } + + public bool qualifyForPacking { get; set; } + public SpriteImportData[] spriteSheetData { get; set; } + + public TextureSpriteSettings() + { + packingTag = ""; + pixelsPerUnit = 100; + meshType = SpriteMeshType.Tight; + extrudeEdges = 1; + } + + public TextureSpriteSettings(string packingTag, int pixelsPerUnit, SpriteMeshType meshType, uint extrudeEdges, bool qualifyForPacking, SpriteImportData[] spriteSheetData = null) + { + this.packingTag = packingTag; + this.pixelsPerUnit = pixelsPerUnit; + this.meshType = meshType; + this.extrudeEdges = extrudeEdges; + this.qualifyForPacking = qualifyForPacking; + this.spriteSheetData = spriteSheetData; + } + + void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) + { + settings.textureImporterSettings.spritePixelsPerUnit = pixelsPerUnit; + settings.textureImporterSettings.spriteMeshType = meshType; + settings.textureImporterSettings.spriteExtrude = extrudeEdges; + settings.spritePackingTag = packingTag; + settings.qualifyForSpritePacking = qualifyForPacking; + settings.spriteImportData = spriteSheetData; + } + } + + [Serializable] + internal class TextureWrapSettings : ITextureSettings + { + [SerializeField] + TextureWrapMode m_WrapMode; + [SerializeField] + TextureWrapMode m_WrapModeU; + [SerializeField] + TextureWrapMode m_WrapModeV; + [SerializeField] + TextureWrapMode m_WrapModeW; + + public TextureWrapSettings() + { + wrapMode = wrapModeU = wrapModeV = wrapModeW = TextureWrapMode.Repeat; + } + + public TextureWrapSettings(TextureWrapMode wrapMpde, TextureWrapMode wrapModeU, TextureWrapMode wrapModeV, TextureWrapMode wrapModeW) + { + this.wrapMode = wrapMode; + this.wrapModeU = wrapModeU; + this.wrapModeV = wrapModeV; + this.wrapModeW = wrapModeW; + } + + public TextureWrapMode wrapMode { get { return m_WrapMode; } set { m_WrapMode = value; } } + public TextureWrapMode wrapModeU { get { return m_WrapModeU; } set { m_WrapModeU = value; } } + public TextureWrapMode wrapModeV { get { return m_WrapModeV; } set { m_WrapModeV = value; } } + public TextureWrapMode wrapModeW { get { return m_WrapModeW; } set { m_WrapModeW = value; } } + + void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) + { + settings.textureImporterSettings.wrapMode = wrapMode; + settings.textureImporterSettings.wrapModeU = wrapModeU; + settings.textureImporterSettings.wrapModeV = wrapModeV; + settings.textureImporterSettings.wrapModeW = wrapModeW; + } + } + + [Serializable] + internal class TextureAlphaSettings : ITextureSettings + { + [SerializeField] + float m_AlphaTolerance; + public float alphaTolerance + { + get { return m_AlphaTolerance; } + set { m_AlphaTolerance = value; } + } + + [SerializeField] + TextureImporterAlphaSource m_AlphaSource; + public TextureImporterAlphaSource alphaSource + { + get { return m_AlphaSource; } + set { m_AlphaSource = value; } + } + + public TextureAlphaSettings() + { + alphaTolerance = 0.5f; + alphaSource = TextureImporterAlphaSource.FromInput; + } + + public TextureAlphaSettings(TextureImporterAlphaSource alphaSource, float alphaTolerance) + { + this.alphaTolerance = alphaTolerance; + this.alphaSource = alphaSource; + } + + void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) + { + settings.textureImporterSettings.alphaIsTransparency = alphaSource != TextureImporterAlphaSource.None; + settings.textureImporterSettings.alphaSource = alphaSource; + settings.textureImporterSettings.alphaTestReferenceValue = alphaTolerance; + } + } + + [Serializable] + internal class TextureMipmapSettings : ITextureSettings + { + [SerializeField] + TextureImporterMipFilter m_Filter; + public TextureImporterMipFilter filter + { + get { return m_Filter; } + set { m_Filter = value; } + } + + [SerializeField] + bool m_BorderMipmap; + public bool borderMipmap + { + get { return m_BorderMipmap; } + set { m_BorderMipmap = value; } + } + + [SerializeField] + bool m_Fadeout; + public bool fadeout + { + get { return m_Fadeout; } + set { m_Fadeout = value; } + } + + [SerializeField] + bool m_PreserveCoverage; + public bool preserveCoverage + { + get { return m_PreserveCoverage; } + set { m_PreserveCoverage = value; } + } + + [SerializeField] + int m_FadeDistanceStart; + public int fadeDistanceStart + { + get { return m_FadeDistanceStart; } + set { m_FadeDistanceStart = value; } + } + + [SerializeField] + int m_FadeDistanceEnd; + public int fadeDistanceEnd + { + get { return m_FadeDistanceEnd; } + set { m_FadeDistanceEnd = value; } + } + + public TextureMipmapSettings() + { + filter = TextureImporterMipFilter.BoxFilter; + borderMipmap = false; + fadeout = false; + preserveCoverage = false; + fadeDistanceStart = 1; + fadeDistanceEnd = 3; + } + + public TextureMipmapSettings(TextureImporterMipFilter filter, bool borderMipmap, bool fadeout, bool preserveCoverage, int fadeDistanceStart, int fadeDistanceEnd) + { + this.filter = filter; + this.borderMipmap = borderMipmap; + this.fadeout = fadeout; + this.preserveCoverage = preserveCoverage; + this.fadeDistanceStart = fadeDistanceStart; + this.fadeDistanceEnd = fadeDistanceEnd; + } + + void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) + { + settings.textureImporterSettings.mipmapEnabled = true; + settings.textureImporterSettings.mipmapFilter = filter; + settings.textureImporterSettings.borderMipmap = borderMipmap; + settings.textureImporterSettings.fadeOut = fadeout; + settings.textureImporterSettings.mipmapFadeDistanceStart = fadeDistanceStart; + settings.textureImporterSettings.mipmapFadeDistanceEnd = fadeDistanceEnd; + settings.textureImporterSettings.mipMapsPreserveCoverage = preserveCoverage; + } + } + + [Serializable] + internal class TextureNormalSettings : ITextureSettings + { + [SerializeField] + TextureImporterNormalFilter m_Filter; + public TextureImporterNormalFilter filter + { + get { return m_Filter; } + set { m_Filter = value; } + } + + [SerializeField] + bool m_GenerateFromGrayScale; + public bool generateFromGrayScale + { + get { return m_GenerateFromGrayScale; } + set { m_GenerateFromGrayScale = value; } + } + + [SerializeField] + float m_Bumpiness; + public float bumpiness + { + get { return m_Bumpiness; } + set { m_Bumpiness = value; } + } + + public TextureNormalSettings() + { + filter = TextureImporterNormalFilter.Standard; + generateFromGrayScale = false; + bumpiness = 0.25f; + } + + public TextureNormalSettings(TextureImporterNormalFilter filter, bool generateFromGrayScale, float bumpiness) + { + this.filter = filter; + this.generateFromGrayScale = generateFromGrayScale; + this.bumpiness = bumpiness; + } + + void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) + { + settings.textureImporterSettings.normalMapFilter = filter; + settings.textureImporterSettings.convertToNormalMap = generateFromGrayScale; + settings.textureImporterSettings.heightmapScale = bumpiness; + } + } + + // If this is provided, textureType will be cubemap + [Serializable] + internal class TextureCubemapSettings : ITextureSettings + { + [SerializeField] + TextureImporterCubemapConvolution m_Convolution; + public TextureImporterCubemapConvolution convolution + { + get { return m_Convolution; } + set { m_Convolution = value; } + } + + [SerializeField] + TextureImporterGenerateCubemap m_Mode; + public TextureImporterGenerateCubemap mode + { + get { return m_Mode; } + set { m_Mode = value; } + } + + [SerializeField] + bool m_Seamless; + public bool seamless + { + get { return m_Seamless; } + set { m_Seamless = value; } + } + public TextureCubemapSettings() + { + convolution = TextureImporterCubemapConvolution.None; + mode = TextureImporterGenerateCubemap.AutoCubemap; + seamless = false; + } + + public TextureCubemapSettings(TextureImporterCubemapConvolution convolution, TextureImporterGenerateCubemap mode, bool seamless) + { + this.convolution = convolution; + this.mode = mode; + this.seamless = seamless; + } + + void ITextureSettings.FillTextureGenerationSettings(ref TextureGenerationSettings settings) + { + settings.textureImporterSettings.textureShape = TextureImporterShape.TextureCube; + settings.textureImporterSettings.cubemapConvolution = convolution; + settings.textureImporterSettings.generateCubemap = mode; + settings.textureImporterSettings.seamlessCubemap = seamless; + } + } + + internal static class TextureGeneratorHelper + { + public static TextureGenerationOutput GenerateTextureSprite(NativeArray buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, + TextureSpriteSettings spriteSettings, TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureWrapSettings wrapSettings = null) + { + if (alphaSettings == null) + alphaSettings = new TextureAlphaSettings(TextureImporterAlphaSource.FromInput, 0.5f); + if (wrapSettings == null) + wrapSettings = new TextureWrapSettings(TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp); + + return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Sprite, platformSettings, settings, spriteSettings, alphaSettings, mipmapSettings, wrapSettings); + } + + public static TextureGenerationOutput GenerateLightmap(NativeArray buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, + TextureMipmapSettings mipmapSettings = null, TextureWrapSettings wrapSettings = null) + { + settings.colorTexture = true; + return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Lightmap, platformSettings, settings, mipmapSettings, wrapSettings); + } + + public static TextureGenerationOutput GenerateCookie(NativeArray buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, + TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureCubemapSettings cubemapSettings = null, TextureWrapSettings wrapSettings = null) + { + return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Cookie, platformSettings, settings, alphaSettings, mipmapSettings, cubemapSettings, wrapSettings); + } + + public static TextureGenerationOutput GenerateNormalMap(NativeArray buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, + TextureNormalSettings normalSettings, TextureMipmapSettings mipmapSettings = null, TextureCubemapSettings cubemapSettings = null, TextureWrapSettings wrapSettings = null) + { + settings.colorTexture = false; + return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.NormalMap, platformSettings, settings, normalSettings, mipmapSettings, cubemapSettings, wrapSettings); + } + + public static TextureGenerationOutput GenerateTextureGUI(NativeArray buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, + TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureWrapSettings wrapSettings = null) + { + settings.colorTexture = false; + if (wrapSettings == null) + wrapSettings = new TextureWrapSettings(TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp); + return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.GUI, platformSettings, settings, alphaSettings, mipmapSettings, wrapSettings); + } + + public static TextureGenerationOutput GenerateTextureSingleChannel(NativeArray buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, + TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureCubemapSettings cubemapSettings = null, TextureWrapSettings wrapSettings = null) + { + settings.colorTexture = false; + return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.SingleChannel, platformSettings, settings, alphaSettings, mipmapSettings, cubemapSettings, wrapSettings); + } + + public static TextureGenerationOutput GenerateTextureCursor(NativeArray buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, + TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureWrapSettings wrapSettings = null) + { + if (alphaSettings == null) + alphaSettings = new TextureAlphaSettings(TextureImporterAlphaSource.FromInput, 0.5f); + if (wrapSettings == null) + wrapSettings = new TextureWrapSettings(TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp, TextureWrapMode.Clamp); + + return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Cursor, platformSettings, settings, alphaSettings, mipmapSettings, wrapSettings); + } + + public static TextureGenerationOutput GenerateTextureDefault(NativeArray buffer, int bufferWidth, int bufferHeight, TextureSettings settings, TextureImporterPlatformSettings platformSettings, + TextureAlphaSettings alphaSettings = null, TextureMipmapSettings mipmapSettings = null, TextureCubemapSettings cubemapSettings = null, TextureWrapSettings wrapSettings = null) + { + if (mipmapSettings == null) + mipmapSettings = new TextureMipmapSettings(TextureImporterMipFilter.BoxFilter, false, false, false, 1, 3); + + return GenerateTexture(buffer, bufferWidth, bufferHeight, TextureImporterType.Default, platformSettings, settings, alphaSettings, mipmapSettings, cubemapSettings, wrapSettings); + } + + static TextureGenerationOutput GenerateTexture(NativeArray imageBuffer, int imageBufferWidth, int imageBufferHeight, TextureImporterType type, TextureImporterPlatformSettings platformSettings, params ITextureSettings[] otherSettings) + { + var textureGenerationSettings = new TextureGenerationSettings(); + textureGenerationSettings.platformSettings = platformSettings; + + textureGenerationSettings.sourceTextureInformation = new SourceTextureInformation(); + textureGenerationSettings.sourceTextureInformation.height = imageBufferHeight; + textureGenerationSettings.sourceTextureInformation.width = imageBufferWidth; + + textureGenerationSettings.textureImporterSettings = new TextureImporterSettings(); + textureGenerationSettings.textureImporterSettings.textureType = type; + textureGenerationSettings.textureImporterSettings.textureShape = TextureImporterShape.Texture2D; + + textureGenerationSettings.textureImporterSettings.alphaIsTransparency = false; + textureGenerationSettings.textureImporterSettings.convertToNormalMap = false; + textureGenerationSettings.textureImporterSettings.mipmapEnabled = false; + textureGenerationSettings.textureImporterSettings.sRGBTexture = true; + textureGenerationSettings.textureImporterSettings.readable = false; + textureGenerationSettings.textureImporterSettings.fadeOut = false; + textureGenerationSettings.textureImporterSettings.wrapMode = TextureWrapMode.Repeat; + textureGenerationSettings.textureImporterSettings.wrapModeU = TextureWrapMode.Repeat; + textureGenerationSettings.textureImporterSettings.wrapModeV = TextureWrapMode.Repeat; + textureGenerationSettings.textureImporterSettings.wrapModeW = TextureWrapMode.Repeat; + + foreach (var otherSetting in otherSettings) + { + if (otherSetting != null) + otherSetting.FillTextureGenerationSettings(ref textureGenerationSettings); + } + return TextureGenerator.GenerateTexture(textureGenerationSettings, imageBuffer); + } + + static public TextureSettings ExtractTextureSettings(this TextureImporterSettings tis) + { + var ts = new TextureSettings(); + ts.colorTexture = tis.sRGBTexture; + ts.readable = tis.readable; + ts.npotScale = tis.npotScale; + ts.filterMode = tis.filterMode; + ts.aniso = tis.aniso; + return ts; + } + + static public TextureSpriteSettings ExtractTextureSpriteSettings(this TextureImporterSettings tis) + { + var ts = new TextureSpriteSettings(); + ts.pixelsPerUnit = tis.spritePixelsPerUnit; + ts.meshType = tis.spriteMeshType; + ts.extrudeEdges = tis.spriteExtrude; + return ts; + } + + static public TextureWrapSettings ExtractTextureWrapSettings(this TextureImporterSettings tis) + { + var ts = new TextureWrapSettings(); + ts.wrapMode = tis.wrapMode; + ts.wrapModeU = tis.wrapModeU; + ts.wrapModeV = tis.wrapModeV; + ts.wrapModeW = tis.wrapModeW; + return ts; + } + + static public TextureAlphaSettings ExtractTextureAlphaSettings(this TextureImporterSettings settings) + { + if (settings.alphaIsTransparency == false) + return null; + + var ts = new TextureAlphaSettings(); + ts.alphaSource = settings.alphaSource; + ts.alphaTolerance = settings.alphaTestReferenceValue; + return ts; + } + + static public TextureMipmapSettings ExtractTextureMipmapSettings(this TextureImporterSettings settings) + { + if (!settings.mipmapEnabled) + return null; + + var ts = new TextureMipmapSettings(); + ts.filter = settings.mipmapFilter; + ts.borderMipmap = settings.borderMipmap; + ts.fadeout = settings.fadeOut; + ts.fadeDistanceStart = settings.mipmapFadeDistanceStart; + ts.fadeDistanceEnd = settings.mipmapFadeDistanceEnd; + ts.preserveCoverage = settings.mipMapsPreserveCoverage; + return ts; + } + + static public TextureNormalSettings ExtractTextureNormalSettings(this TextureImporterSettings settings) + { + var ts = new TextureNormalSettings(); + ts.filter = settings.normalMapFilter; + ts.generateFromGrayScale = settings.convertToNormalMap; + ts.bumpiness = settings.heightmapScale; + return ts; + } + + static public TextureCubemapSettings ExtractTextureCubemapSettings(this TextureImporterSettings settings) + { + if (settings.textureShape != TextureImporterShape.TextureCube) + return null; + var ts = new TextureCubemapSettings(); + ts.convolution = settings.cubemapConvolution; + ts.mode = settings.generateCubemap; + ts.seamless = settings.seamlessCubemap; + return ts; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/TextureGenerator/TextureGeneratorHelper.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/TextureGenerator/TextureGeneratorHelper.cs.meta new file mode 100644 index 0000000..71b769f --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/TextureGenerator/TextureGeneratorHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4f814197752ea84db033f3822b113b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/Unity.2D.Common.Editor.asmdef b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/Unity.2D.Common.Editor.asmdef new file mode 100644 index 0000000..d2e8bc8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/Unity.2D.Common.Editor.asmdef @@ -0,0 +1,17 @@ +{ + "name": "Unity.2D.Common.Editor", + "references": [ + "Unity.2D.Common.Runtime", + "Unity.2D.Sprite.Editor" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/Unity.2D.Common.Editor.asmdef.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/Unity.2D.Common.Editor.asmdef.meta new file mode 100644 index 0000000..822f07d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Editor/Unity.2D.Common.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bd2461be96e5f744bbe6bdbc5276eb61 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/LICENSE.md b/Library/PackageCache/com.unity.2d.common@2.0.2/LICENSE.md new file mode 100644 index 0000000..bb55c56 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/LICENSE.md @@ -0,0 +1,31 @@ +**Unity Companion Package License v1.0 ("_License_")** + +Copyright © 2019 Unity Technologies ApS ("**_Unity_**") + +Unity hereby grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available with this License ("**_Software_**"), subject to the following terms and conditions: + +1. *Unity Companion Use Only*. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity development engine software license ("**_Engine License_**"). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted. + +1. *No Modification of Engine License*. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way. + +1. *Ownership & Grant Back to You*. + + 3.1. You own your content. In this License, "derivative works" means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); “derivative works” of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content. + + 3.2. Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity. + + 3.3. You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License. + +1. *Trademarks*. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates ("**_Trademarks_**"). Descriptive uses of Trademarks are permitted; see, for example, Unity’s Branding Usage Guidelines at [https://unity3d.com/public-relations/brand](https://unity3d.com/public-relations/brand). + +1. *Notices & Third-Party Rights*. This License, including the copyright notice above, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity "third-party notices" or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms. + +1. *DISCLAIMER, LIMITATION OF LIABILITY*. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +1. *USE IS ACCEPTANCE and License Versions*. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License. + +1. *Use in Compliance with Law and Termination*. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License. + +1. *Severability*. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect. + +1. *Governing Law and Venue*. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License ("**_Dispute_**"). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/LICENSE.md.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/LICENSE.md.meta new file mode 100644 index 0000000..de9433d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c3b59bc98951d4f7ea2ad99b77e35f03 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/README.md b/Library/PackageCache/com.unity.2d.common@2.0.2/README.md new file mode 100644 index 0000000..e6f267e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/README.md @@ -0,0 +1,4 @@ +2D Shared Code + +- Triangle.net - a Unity friendly version of the triangle.net used to generate geometry. +- ImagePacker - fits a list of textures or rects into a bigger rect. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/README.md.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/README.md.meta new file mode 100644 index 0000000..1cb516b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fef9ee9b48f7a45aaa6991afe5f95a2b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime.meta new file mode 100644 index 0000000..ea6b7fa --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f5e03422df3a442089f65a1856ece1b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/AssemblyInfo.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/AssemblyInfo.cs new file mode 100644 index 0000000..d09de88 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/AssemblyInfo.cs @@ -0,0 +1 @@ +using System.Runtime.CompilerServices; diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/AssemblyInfo.cs.meta new file mode 100644 index 0000000..158d03b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb006e3fa37420b42b3673eef90cd4b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge.meta new file mode 100644 index 0000000..2765828 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de9233595819db54faa3b4122efb128c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/AssemblyInfo.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/AssemblyInfo.cs new file mode 100644 index 0000000..3050713 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/AssemblyInfo.cs @@ -0,0 +1,5 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Unity.2D.Animation.Runtime")] +[assembly: InternalsVisibleTo("Unity.2D.Animation.Editor")] +[assembly: InternalsVisibleTo("Unity.2D.IK.Editor")] diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/AssemblyInfo.cs.meta new file mode 100644 index 0000000..12cd95a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 031a31877f2d04a4dac4146c804dbde9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalBridgeDef.asmdef b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalBridgeDef.asmdef new file mode 100644 index 0000000..9454e18 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalBridgeDef.asmdef @@ -0,0 +1,7 @@ +{ + "name": "Unity.InternalAPIEngineBridge.001", + "references": [], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalBridgeDef.asmdef.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalBridgeDef.asmdef.meta new file mode 100644 index 0000000..9badbe4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalBridgeDef.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e4b228dab700203488a7c7d474a25838 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalEngineBridge.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalEngineBridge.cs new file mode 100644 index 0000000..84d0127 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalEngineBridge.cs @@ -0,0 +1,58 @@ +using UnityEngine.UIElements; +using Unity.Collections; + +namespace UnityEngine.U2D.Common +{ + internal static class InternalEngineBridge + { + public static void SetLocalAABB(SpriteRenderer spriteRenderer, Bounds aabb) + { + spriteRenderer.SetLocalAABB(aabb); + } + + public static void SetDeformableBuffer(SpriteRenderer spriteRenderer, NativeArray src) + { + spriteRenderer.SetDeformableBuffer(src); + } + + public static Vector2 GUIUnclip(Vector2 v) + { + return GUIClip.Unclip(v); + } + + public static Rect GetGUIClipTopMostRect() + { + return GUIClip.topmostRect; + } + + public static Rect GetGUIClipTopRect() + { + return GUIClip.GetTopRect(); + } + +#if UNITY_EDITOR + public static void SetLocalEulerHint(Transform t) + { + t.SetLocalEulerHint(t.GetLocalEulerAngles(t.rotationOrder)); + } + + public static bool IsChecked(this VisualElement element) + { + return (element.pseudoStates & PseudoStates.Checked) == PseudoStates.Checked; + } + + public static void SetChecked(this VisualElement element, bool isChecked) + { + if (isChecked) + { + element.pseudoStates |= PseudoStates.Checked; + } + else + { + element.pseudoStates &= ~PseudoStates.Checked; + } + } + +#endif + } +} diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalEngineBridge.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalEngineBridge.cs.meta new file mode 100644 index 0000000..f42fe5b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/InternalBridge/InternalEngineBridge.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74d5c6e86f4a1214ca6e9737086f7468 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/Unity.2D.Common.Runtime.asmdef b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/Unity.2D.Common.Runtime.asmdef new file mode 100644 index 0000000..71e344d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/Unity.2D.Common.Runtime.asmdef @@ -0,0 +1,6 @@ +{ + "name": "Unity.2D.Common.Runtime", + "references": [], + "includePlatforms": [], + "excludePlatforms": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/Unity.2D.Common.Runtime.asmdef.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/Unity.2D.Common.Runtime.asmdef.meta new file mode 100644 index 0000000..49238ef --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Runtime/Unity.2D.Common.Runtime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c3352a8bbbe14fb4ab52ae7bfff927ea +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Tests.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests.meta new file mode 100644 index 0000000..5239a32 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e1b9d7367fd994e26a0a18b0461837b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor.meta new file mode 100644 index 0000000..58c38a3 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2656f45e60a1c4b389f74073613dd37e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/PlaceholderTests.cs b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/PlaceholderTests.cs new file mode 100644 index 0000000..d404bd4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/PlaceholderTests.cs @@ -0,0 +1,16 @@ +using NUnit.Framework; + + +namespace UnityEditor.Experimental.U2D.Commons.Tests +{ + public class Placeholder + { + [Test] + public void PlaceHolderTest() + { + // Use the Assert class to test conditions. + Assert.Pass("This is a placeholder to ensure we have at least one test."); + } + } + +} diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/PlaceholderTests.cs.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/PlaceholderTests.cs.meta new file mode 100644 index 0000000..3ef0f94 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/PlaceholderTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ae1953898c2e4565a0a2b0af0a10985 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/Unity.2D.Common.EditorTests.asmdef b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/Unity.2D.Common.EditorTests.asmdef new file mode 100644 index 0000000..b4745e7 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/Unity.2D.Common.EditorTests.asmdef @@ -0,0 +1,18 @@ +{ + "name": "Unity.2D.Common.EditorTests", + "references": [ + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "optionalUnityReferences": [ + "TestAssemblies" + ], + "autoReferenced": false, + "defineConstraints": [ + ], + "versionDefines": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/Unity.2D.Common.EditorTests.asmdef.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/Unity.2D.Common.EditorTests.asmdef.meta new file mode 100644 index 0000000..c17be22 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/Tests/Editor/Unity.2D.Common.EditorTests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 03bfc083748b8452197dde3b8ea7fbba +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/package.json b/Library/PackageCache/com.unity.2d.common@2.0.2/package.json new file mode 100644 index 0000000..64626a2 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/package.json @@ -0,0 +1,23 @@ +{ + "name": "com.unity.2d.common", + "displayName": "2D Common", + "version": "2.0.2", + "unity": "2019.3", + "unityRelease": "0a13", + "description": "2D Common is a package that contains shared functionalities that are used by most of the other 2D packages.", + "keywords": [ + "2d" + ], + "category": "2D", + "dependencies": { + "com.unity.2d.sprite": "1.0.0" + }, + "relatedPackages": { + "com.unity.2d.common.tests": "2.0.2" + }, + "repository": { + "type": "git", + "url": "git@github.cds.internal.unity3d.com:unity/2d.git", + "revision": "4119d66437811a18e6b884479b21e365529bfdf1" + } +} diff --git a/Library/PackageCache/com.unity.2d.common@2.0.2/package.json.meta b/Library/PackageCache/com.unity.2d.common@2.0.2/package.json.meta new file mode 100644 index 0000000..c8aa6cc --- /dev/null +++ b/Library/PackageCache/com.unity.2d.common@2.0.2/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 68f1917ec3cac45b080c26153375c2bb +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/CHANGELOG.md b/Library/PackageCache/com.unity.2d.path@2.0.6/CHANGELOG.md new file mode 100644 index 0000000..6164492 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/CHANGELOG.md @@ -0,0 +1,36 @@ +# Changelog +## [2.0.6] - 2020-07-17 +### Changed +- Snapping Control Points and Tangents use Global Move Snap settings. + +## [2.0.5] - 2020-05-08 +### Changed +- Added return for Path tool usage change. + +## [2.0.4] - 2019-10-27 +### Fixed +- Added missing meta file + +## [2.0.3] - 2019-10-02 +### Fixed +- Removed resources + +## [2.0.2] - 2019-07-24 +### Added +- Add related test packages + +## [2.0.1] - 2019-07-13 +### Changed +- Mark package to support Unity 2019.3.0a10 onwards. + +## [2.0.0] - 2019-06-19 +### Changed. +- Stable Version. + +## [1.0.0-preview.3] - 2019-06-14 +### Fixed +- Fix undo on select point. + +## [1.0.0-preview.1] - 2019-04-22 +### Added +- Initial Version. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/CHANGELOG.md.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/CHANGELOG.md.meta new file mode 100644 index 0000000..a8d8eb8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c1b975030cb01fa4fb63b07dc5584b12 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Documentation~/2DPath.md b/Library/PackageCache/com.unity.2d.path@2.0.6/Documentation~/2DPath.md new file mode 100644 index 0000000..6159dab --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Documentation~/2DPath.md @@ -0,0 +1,3 @@ +# Introduction + +2D Path provides a set of tools to edit polygons and b-splines in custom EditorWindow and the SceneView. diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor.meta new file mode 100644 index 0000000..78864d2 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ebb15515f9c03364089baa7120b54453 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath.meta new file mode 100644 index 0000000..3b49c09 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c69472069f4ff5e4b9db75c91210288f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/BezierUtility.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/BezierUtility.cs new file mode 100644 index 0000000..1c5e1a1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/BezierUtility.cs @@ -0,0 +1,223 @@ +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public static class BezierUtility + { + static Vector3[] s_TempPoints = new Vector3[3]; + + public static Vector3 BezierPoint(Vector3 startPosition, Vector3 startTangent, Vector3 endTangent, Vector3 endPosition, float t) + { + float s = 1.0f - t; + return startPosition * s * s * s + startTangent * s * s * t * 3.0f + endTangent * s * t * t * 3.0f + endPosition * t * t * t; + } + + public static Vector3 ClosestPointOnCurve(Vector3 point, Vector3 startPosition, Vector3 endPosition, Vector3 startTangent, Vector3 endTangent, out float t) + { + Vector3 startToEnd = endPosition - startPosition; + Vector3 startToTangent = (startTangent - startPosition); + Vector3 endToTangent = (endTangent - endPosition); + + float sqrError = 0.001f; + + if (Colinear(startToTangent, startToEnd, sqrError) && Colinear(endToTangent, startToEnd, sqrError)) + return ClosestPointToSegment(point, startPosition, endPosition, out t); + + Vector3 leftStartPosition; + Vector3 leftEndPosition; + Vector3 leftStartTangent; + Vector3 leftEndTangent; + + Vector3 rightStartPosition; + Vector3 rightEndPosition; + Vector3 rightStartTangent; + Vector3 rightEndTangent; + + float leftStartT = 0f; + float leftEndT = 0.5f; + float rightStartT = 0.5f; + float rightEndT = 1f; + + SplitBezier(0.5f, startPosition, endPosition, startTangent, endTangent, + out leftStartPosition, out leftEndPosition, out leftStartTangent, out leftEndTangent, + out rightStartPosition, out rightEndPosition, out rightStartTangent, out rightEndTangent); + + Vector3 pointLeft = ClosestPointOnCurveIterative(point, leftStartPosition, leftEndPosition, leftStartTangent, leftEndTangent, sqrError, ref leftStartT, ref leftEndT); + Vector3 pointRight = ClosestPointOnCurveIterative(point, rightStartPosition, rightEndPosition, rightStartTangent, rightEndTangent, sqrError, ref rightStartT, ref rightEndT); + + if ((point - pointLeft).sqrMagnitude < (point - pointRight).sqrMagnitude) + { + t = leftStartT; + return pointLeft; + } + + t = rightStartT; + return pointRight; + } + + public static Vector3 ClosestPointOnCurveFast(Vector3 point, Vector3 startPosition, Vector3 endPosition, Vector3 startTangent, Vector3 endTangent, out float t) + { + float sqrError = 0.001f; + float startT = 0f; + float endT = 1f; + + Vector3 closestPoint = ClosestPointOnCurveIterative(point, startPosition, endPosition, startTangent, endTangent, sqrError, ref startT, ref endT); + + t = startT; + + return closestPoint; + } + + private static Vector3 ClosestPointOnCurveIterative(Vector3 point, Vector3 startPosition, Vector3 endPosition, Vector3 startTangent, Vector3 endTangent, float sqrError, ref float startT, ref float endT) + { + while ((startPosition - endPosition).sqrMagnitude > sqrError) + { + Vector3 startToEnd = endPosition - startPosition; + Vector3 startToTangent = (startTangent - startPosition); + Vector3 endToTangent = (endTangent - endPosition); + + if (Colinear(startToTangent, startToEnd, sqrError) && Colinear(endToTangent, startToEnd, sqrError)) + { + float t; + Vector3 closestPoint = ClosestPointToSegment(point, startPosition, endPosition, out t); + t *= (endT - startT); + startT += t; + endT -= t; + return closestPoint; + } + + Vector3 leftStartPosition; + Vector3 leftEndPosition; + Vector3 leftStartTangent; + Vector3 leftEndTangent; + + Vector3 rightStartPosition; + Vector3 rightEndPosition; + Vector3 rightStartTangent; + Vector3 rightEndTangent; + + SplitBezier(0.5f, startPosition, endPosition, startTangent, endTangent, + out leftStartPosition, out leftEndPosition, out leftStartTangent, out leftEndTangent, + out rightStartPosition, out rightEndPosition, out rightStartTangent, out rightEndTangent); + + s_TempPoints[0] = leftStartPosition; + s_TempPoints[1] = leftStartTangent; + s_TempPoints[2] = leftEndTangent; + + float sqrDistanceLeft = SqrDistanceToPolyLine(point, s_TempPoints); + + s_TempPoints[0] = rightEndPosition; + s_TempPoints[1] = rightEndTangent; + s_TempPoints[2] = rightStartTangent; + + float sqrDistanceRight = SqrDistanceToPolyLine(point, s_TempPoints); + + if (sqrDistanceLeft < sqrDistanceRight) + { + startPosition = leftStartPosition; + endPosition = leftEndPosition; + startTangent = leftStartTangent; + endTangent = leftEndTangent; + + endT -= (endT - startT) * 0.5f; + } + else + { + startPosition = rightStartPosition; + endPosition = rightEndPosition; + startTangent = rightStartTangent; + endTangent = rightEndTangent; + + startT += (endT - startT) * 0.5f; + } + } + + return endPosition; + } + + public static void SplitBezier(float t, Vector3 startPosition, Vector3 endPosition, Vector3 startRightTangent, Vector3 endLeftTangent, + out Vector3 leftStartPosition, out Vector3 leftEndPosition, out Vector3 leftStartTangent, out Vector3 leftEndTangent, + out Vector3 rightStartPosition, out Vector3 rightEndPosition, out Vector3 rightStartTangent, out Vector3 rightEndTangent) + { + Vector3 tangent0 = (startRightTangent - startPosition); + Vector3 tangent1 = (endLeftTangent - endPosition); + Vector3 tangentEdge = (endLeftTangent - startRightTangent); + + Vector3 tangentPoint0 = startPosition + tangent0 * t; + Vector3 tangentPoint1 = endPosition + tangent1 * (1f - t); + Vector3 tangentEdgePoint = startRightTangent + tangentEdge * t; + + Vector3 newTangent0 = tangentPoint0 + (tangentEdgePoint - tangentPoint0) * t; + Vector3 newTangent1 = tangentPoint1 + (tangentEdgePoint - tangentPoint1) * (1f - t); + Vector3 newTangentEdge = newTangent1 - newTangent0; + + Vector3 bezierPoint = newTangent0 + newTangentEdge * t; + + leftStartPosition = startPosition; + leftEndPosition = bezierPoint; + leftStartTangent = tangentPoint0; + leftEndTangent = newTangent0; + + rightStartPosition = bezierPoint; + rightEndPosition = endPosition; + rightStartTangent = newTangent1; + rightEndTangent = tangentPoint1; + } + + private static Vector3 ClosestPointToSegment(Vector3 point, Vector3 segmentStart, Vector3 segmentEnd, out float t) + { + Vector3 relativePoint = point - segmentStart; + Vector3 segment = (segmentEnd - segmentStart); + Vector3 segmentDirection = segment.normalized; + float length = segment.magnitude; + + float dot = Vector3.Dot(relativePoint, segmentDirection); + + if (dot <= 0f) + dot = 0f; + else if (dot >= length) + dot = length; + + t = dot / length; + + return segmentStart + segment * t; + } + + private static float SqrDistanceToPolyLine(Vector3 point, Vector3[] points) + { + float minDistance = float.MaxValue; + + for (int i = 0; i < points.Length - 1; ++i) + { + float distance = SqrDistanceToSegment(point, points[i], points[i + 1]); + + if (distance < minDistance) + minDistance = distance; + } + + return minDistance; + } + + private static float SqrDistanceToSegment(Vector3 point, Vector3 segmentStart, Vector3 segmentEnd) + { + Vector3 relativePoint = point - segmentStart; + Vector3 segment = (segmentEnd - segmentStart); + Vector3 segmentDirection = segment.normalized; + float length = segment.magnitude; + + float dot = Vector3.Dot(relativePoint, segmentDirection); + + if (dot <= 0f) + return (point - segmentStart).sqrMagnitude; + else if (dot >= length) + return (point - segmentEnd).sqrMagnitude; + + return Vector3.Cross(relativePoint, segmentDirection).sqrMagnitude; + } + + private static bool Colinear(Vector3 v1, Vector3 v2, float error = 0.0001f) + { + return Mathf.Abs(v1.x * v2.y - v1.y * v2.x + v1.x * v2.z - v1.z * v2.x + v1.y * v2.z - v1.z * v2.y) < error; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/BezierUtility.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/BezierUtility.cs.meta new file mode 100644 index 0000000..5dd06fd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/BezierUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7539b6de552451b409d8d2f8657251c6 +timeCreated: 1505799796 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ControlPoint.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ControlPoint.cs new file mode 100644 index 0000000..3e260d9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ControlPoint.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public enum TangentMode + { + Linear = 0, + Continuous = 1, + Broken = 2 + } + + [Serializable] + public struct TangentCache + { + public Vector3 leftTangent; + public Vector3 rightTangent; + } + + [Serializable] + public struct ControlPoint + { + public Vector3 position; + public Vector3 localLeftTangent; + public Vector3 localRightTangent; + public TangentMode tangentMode; + public TangentCache continuousCache; + public TangentCache brokenCache; + public bool mirrorLeft; + + public Vector3 leftTangent + { + get { return localLeftTangent + position; } + set { localLeftTangent = value - position; } + } + + public Vector3 rightTangent + { + get { return localRightTangent + position; } + set { localRightTangent = value - position; } + } + + public void StoreTangents() + { + if (tangentMode == TangentMode.Continuous) + { + continuousCache.leftTangent = localLeftTangent; + continuousCache.rightTangent = localRightTangent; + } + else if (tangentMode == TangentMode.Broken) + { + brokenCache.leftTangent = localLeftTangent; + brokenCache.rightTangent = localRightTangent; + } + } + + public void RestoreTangents() + { + if (tangentMode == TangentMode.Continuous) + { + localLeftTangent = continuousCache.leftTangent; + localRightTangent = continuousCache.rightTangent; + } + else if (tangentMode == TangentMode.Broken) + { + localLeftTangent = brokenCache.leftTangent; + localRightTangent = brokenCache.rightTangent; + } + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ControlPoint.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ControlPoint.cs.meta new file mode 100644 index 0000000..588afdd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ControlPoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e22e7e2cce9e9346a8291ccf224487a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePath.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePath.cs new file mode 100644 index 0000000..7aa6abc --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePath.cs @@ -0,0 +1,147 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + [Serializable] + public class EditablePath : IEditablePath + { + [SerializeField] + private ShapeType m_ShapeType; + [SerializeField] + private IndexedSelection m_Selection = new IndexedSelection(); + [SerializeField] + private List m_ControlPoints = new List(); + [SerializeField] + private bool m_IsOpenEnded; + private Matrix4x4 m_LocalToWorldMatrix = Matrix4x4.identity; + private Matrix4x4 m_WorldToLocalMatrix = Matrix4x4.identity; + private Vector3 m_Forward = Vector3.forward; + private Vector3 m_Up = Vector3.up; + private Vector3 m_Right = Vector3.right; + + public ShapeType shapeType + { + get { return m_ShapeType; } + set { m_ShapeType = value; } + } + + public IUndoObject undoObject { get; set; } + + public Matrix4x4 localToWorldMatrix + { + get { return m_LocalToWorldMatrix; } + set + { + m_LocalToWorldMatrix = value; + m_WorldToLocalMatrix = value.inverse; + } + } + + public Vector3 forward + { + get { return m_Forward; } + set { m_Forward = value; } + } + + public Vector3 up + { + get { return m_Up; } + set { m_Up = value; } + } + + public Vector3 right + { + get { return m_Right; } + set { m_Right = value; } + } + + public Matrix4x4 worldToLocalMatrix + { + get { return m_WorldToLocalMatrix; } + } + + public bool isOpenEnded + { + get + { + if (pointCount < 3) + return true; + + return m_IsOpenEnded; + } + set { m_IsOpenEnded = value; } + } + + public ISelection selection + { + get { return m_Selection; } + } + + public int pointCount + { + get { return m_ControlPoints.Count; } + } + + public ControlPoint GetPoint(int index) + { + return TransformPoint(localToWorldMatrix, m_ControlPoints[index]); + } + + public void SetPoint(int index, ControlPoint controlPoint) + { + m_ControlPoints[index] = TransformPoint(worldToLocalMatrix, controlPoint); + } + + public void AddPoint(ControlPoint controlPoint) + { + m_ControlPoints.Insert(pointCount, TransformPoint(worldToLocalMatrix, controlPoint)); + } + + public void InsertPoint(int index, ControlPoint controlPoint) + { + m_ControlPoints.Insert(index, TransformPoint(worldToLocalMatrix, controlPoint)); + } + + public void RemovePoint(int index) + { + m_ControlPoints.RemoveAt(index); + } + + public void Clear() + { + m_ControlPoints.Clear(); + } + + private ControlPoint TransformPoint(Matrix4x4 transformMatrix, ControlPoint controlPoint) + { + if (transformMatrix == Matrix4x4.identity) + return controlPoint; + + var newControlPoint = new ControlPoint() + { + position = transformMatrix.MultiplyPoint3x4(controlPoint.position), + tangentMode = controlPoint.tangentMode, + continuousCache = controlPoint.continuousCache, + brokenCache = controlPoint.brokenCache, + mirrorLeft = controlPoint.mirrorLeft + }; + + newControlPoint.rightTangent = transformMatrix.MultiplyPoint3x4(controlPoint.rightTangent); + newControlPoint.leftTangent = transformMatrix.MultiplyPoint3x4(controlPoint.leftTangent); + + return newControlPoint; + } + + public bool Select(ISelector selector) + { + var changed = false; + + for (var i = 0; i < pointCount; ++i) + changed |= selection.Select(i, selector.Select(GetPoint(i).position)); + + return changed; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePath.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePath.cs.meta new file mode 100644 index 0000000..31dc052 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc93dba6e70bb8044a38eeb19db22669 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathController.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathController.cs new file mode 100644 index 0000000..80c2bf8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathController.cs @@ -0,0 +1,259 @@ +using System; +using System.Linq; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public class EditablePathController : IEditablePathController + { + private ISnapping m_Snapping = new Snapping(); + + public IEditablePath editablePath { get; set; } + public IEditablePath closestEditablePath { get { return editablePath; } } + + public ISnapping snapping + { + get { return m_Snapping; } + set { m_Snapping = value; } + } + + public bool enableSnapping { get; set; } + + public void RegisterUndo(string name) + { + if (editablePath.undoObject != null) + editablePath.undoObject.RegisterUndo(name); + } + + public void ClearSelection() + { + editablePath.selection.Clear(); + } + + public void SelectPoint(int index, bool select) + { + editablePath.selection.Select(index, select); + } + + public void CreatePoint(int index, Vector3 position) + { + ClearSelection(); + + if (editablePath.shapeType == ShapeType.Polygon) + { + editablePath.InsertPoint(index + 1, new ControlPoint() { position = position }); + } + else if (editablePath.shapeType == ShapeType.Spline) + { + var nextIndex = NextIndex(index); + var currentPoint = editablePath.GetPoint(index); + var nextPoint = editablePath.GetPoint(nextIndex); + + float t; + var closestPoint = BezierUtility.ClosestPointOnCurve( + position, + currentPoint.position, + nextPoint.position, + GetRightTangentPosition(index), + GetLeftTangentPosition(nextIndex), + out t); + + Vector3 leftStartPosition; + Vector3 leftEndPosition; + Vector3 leftStartTangent; + Vector3 leftEndTangent; + + Vector3 rightStartPosition; + Vector3 rightEndPosition; + Vector3 rightStartTangent; + Vector3 rightEndTangent; + + BezierUtility.SplitBezier(t, currentPoint.position, nextPoint.position, GetRightTangentPosition(index), GetLeftTangentPosition(nextIndex), + out leftStartPosition, out leftEndPosition, out leftStartTangent, out leftEndTangent, + out rightStartPosition, out rightEndPosition, out rightStartTangent, out rightEndTangent); + + var newPointIndex = index + 1; + var newPoint = new ControlPoint() + { + position = closestPoint, + leftTangent = leftEndTangent, + rightTangent = rightStartTangent, + tangentMode = TangentMode.Continuous + }; + + currentPoint.rightTangent = leftStartTangent; + nextPoint.leftTangent = rightEndTangent; + + if (currentPoint.tangentMode == TangentMode.Linear && nextPoint.tangentMode == TangentMode.Linear) + { + newPoint.tangentMode = TangentMode.Linear; + newPoint.localLeftTangent = Vector3.zero; + newPoint.localRightTangent = Vector3.zero; + currentPoint.localRightTangent = Vector3.zero; + nextPoint.localLeftTangent = Vector3.zero; + } + else + { + if (currentPoint.tangentMode == TangentMode.Linear) + currentPoint.tangentMode = TangentMode.Broken; + + if (nextPoint.tangentMode == TangentMode.Linear) + nextPoint.tangentMode = TangentMode.Broken; + } + + editablePath.SetPoint(index, currentPoint); + editablePath.SetPoint(nextIndex, nextPoint); + editablePath.InsertPoint(newPointIndex, newPoint); + } + } + + public void RemoveSelectedPoints() + { + var minPointCount = editablePath.isOpenEnded ? 2 : 3; + + if (editablePath.pointCount > minPointCount) + { + var indices = editablePath.selection.elements.OrderByDescending( i => i); + + foreach (var index in indices) + if (editablePath.pointCount > minPointCount) + editablePath.RemovePoint(index); + + ClearSelection(); + } + } + + public void MoveSelectedPoints(Vector3 delta) + { + delta = Vector3.ProjectOnPlane(delta, editablePath.forward); + + for (var i = 0; i < editablePath.pointCount; ++i) + { + if (editablePath.selection.Contains(i)) + { + var controlPoint = editablePath.GetPoint(i); + controlPoint.position += delta; + editablePath.SetPoint(i, controlPoint); + } + } + } + + public void MoveEdge(int index, Vector3 delta) + { + if (editablePath.isOpenEnded && index == editablePath.pointCount - 1) + return; + + var controlPoint = editablePath.GetPoint(index); + controlPoint.position += delta; + editablePath.SetPoint(index, controlPoint); + controlPoint = NextControlPoint(index); + controlPoint.position += delta; + editablePath.SetPoint(NextIndex(index), controlPoint); + } + + public void SetLeftTangent(int index, Vector3 position, bool setToLinear, bool mirror, Vector3 cachedRightTangent, TangentMode cachedTangentMode) + { + var controlPoint = editablePath.GetPoint(index); + controlPoint.tangentMode = cachedTangentMode; + controlPoint.leftTangent = position; + controlPoint.mirrorLeft = false; + + if (setToLinear) + { + controlPoint.leftTangent = controlPoint.position; + controlPoint.rightTangent = cachedRightTangent; + } + else if (controlPoint.tangentMode == TangentMode.Continuous || mirror) + { + var magnitude = controlPoint.localRightTangent.magnitude; + + if (mirror) + magnitude = controlPoint.localLeftTangent.magnitude; + + controlPoint.localRightTangent = magnitude * -controlPoint.localLeftTangent.normalized; + } + + editablePath.SetPoint(index, controlPoint); + editablePath.UpdateTangentMode(index); + } + + public void SetRightTangent(int index, Vector3 position, bool setToLinear, bool mirror, Vector3 cachedLeftTangent, TangentMode cachedTangentMode) + { + var controlPoint = editablePath.GetPoint(index); + controlPoint.tangentMode = cachedTangentMode; + controlPoint.rightTangent = position; + controlPoint.mirrorLeft = true; + + if (setToLinear) + { + controlPoint.rightTangent = controlPoint.position; + controlPoint.leftTangent = cachedLeftTangent; + } + else if (controlPoint.tangentMode == TangentMode.Continuous || mirror) + { + var magnitude = controlPoint.localLeftTangent.magnitude; + + if (mirror) + magnitude = controlPoint.localRightTangent.magnitude; + + controlPoint.localLeftTangent = magnitude * -controlPoint.localRightTangent.normalized; + } + + editablePath.SetPoint(index, controlPoint); + editablePath.UpdateTangentMode(index); + } + + public void ClearClosestPath() { } + public void AddClosestPath(float distance) { } + + private Vector3 GetLeftTangentPosition(int index) + { + var isLinear = Mathf.Approximately(editablePath.GetPoint(index).localLeftTangent.sqrMagnitude, 0f); + + if (isLinear) + { + var position = editablePath.GetPoint(index).position; + var prevPosition = PrevControlPoint(index).position; + + return (1f / 3f) * (prevPosition - position) + position; + } + + return editablePath.GetPoint(index).leftTangent; + } + + private Vector3 GetRightTangentPosition(int index) + { + var isLinear = Mathf.Approximately(editablePath.GetPoint(index).localRightTangent.sqrMagnitude, 0f); + + if (isLinear) + { + var position = editablePath.GetPoint(index).position; + var nextPosition = NextControlPoint(index).position; + + return (1f / 3f) * (nextPosition - position) + position; + } + + return editablePath.GetPoint(index).rightTangent; + } + + private int NextIndex(int index) + { + return EditablePathUtility.Mod(index + 1, editablePath.pointCount); + } + + private ControlPoint NextControlPoint(int index) + { + return editablePath.GetPoint(NextIndex(index)); + } + + private int PrevIndex(int index) + { + return EditablePathUtility.Mod(index - 1, editablePath.pointCount); + } + + private ControlPoint PrevControlPoint(int index) + { + return editablePath.GetPoint(PrevIndex(index)); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathController.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathController.cs.meta new file mode 100644 index 0000000..76fa8f9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e097fcf51266c654f8f8ef2c431a91d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathExtensions.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathExtensions.cs new file mode 100644 index 0000000..260a1d2 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathExtensions.cs @@ -0,0 +1,275 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public static class EditablePathExtensions + { + public static Polygon ToPolygon(this IEditablePath path) + { + var polygon = new Polygon() + { + isOpenEnded = path.isOpenEnded, + points = new Vector3[path.pointCount] + }; + + for (var i = 0; i < path.pointCount; ++i) + polygon.points[i] = path.GetPoint(i).position; + + return polygon; + } + + public static Spline ToSpline(this IEditablePath path) + { + var count = path.pointCount * 3; + + if (path.isOpenEnded) + count -= 2; + + var spline = new Spline() + { + isOpenEnded = path.isOpenEnded, + points = new Vector3[count] + }; + + for (var i = 0; i < path.pointCount; ++i) + { + var point = path.GetPoint(i); + + spline.points[i*3] = point.position; + + if (i * 3 + 1 < count) + { + var nextIndex = EditablePathUtility.Mod(i+1, path.pointCount); + + spline.points[i*3 + 1] = path.CalculateRightTangent(i); + spline.points[i*3 + 2] = path.CalculateLeftTangent(nextIndex); + } + } + + return spline; + } + + public static Vector3 CalculateLocalLeftTangent(this IEditablePath path, int index) + { + return path.CalculateLeftTangent(index) - path.GetPoint(index).position; + } + + public static Vector3 CalculateLeftTangent(this IEditablePath path, int index) + { + var point = path.GetPoint(index); + var isTangentLinear = point.localLeftTangent == Vector3.zero; + var isEndpoint = path.isOpenEnded && index == 0; + var tangent = point.leftTangent; + + if (isEndpoint) + return point.position; + + if (isTangentLinear) + { + var prevPoint = path.GetPrevPoint(index); + var v = prevPoint.position - point.position; + tangent = point.position + v.normalized * (v.magnitude / 3f); + } + + return tangent; + } + + public static Vector3 CalculateLocalRightTangent(this IEditablePath path, int index) + { + return path.CalculateRightTangent(index) - path.GetPoint(index).position; + } + + public static Vector3 CalculateRightTangent(this IEditablePath path, int index) + { + var point = path.GetPoint(index); + var isTangentLinear = point.localRightTangent == Vector3.zero; + var isEndpoint = path.isOpenEnded && index == path.pointCount - 1; + var tangent = point.rightTangent; + + if (isEndpoint) + return point.position; + + if (isTangentLinear) + { + var nextPoint = path.GetNextPoint(index); + var v = nextPoint.position - point.position; + tangent = point.position + v.normalized * (v.magnitude / 3f); + } + + return tangent; + } + + public static ControlPoint GetPrevPoint(this IEditablePath path, int index) + { + return path.GetPoint(EditablePathUtility.Mod(index - 1, path.pointCount)); + } + + public static ControlPoint GetNextPoint(this IEditablePath path, int index) + { + return path.GetPoint(EditablePathUtility.Mod(index + 1, path.pointCount)); + } + + public static void UpdateTangentMode(this IEditablePath path, int index) + { + var localToWorldMatrix = path.localToWorldMatrix; + path.localToWorldMatrix = Matrix4x4.identity; + + var controlPoint = path.GetPoint(index); + var isLeftTangentLinear = controlPoint.localLeftTangent == Vector3.zero; + var isRightTangentLinear = controlPoint.localRightTangent == Vector3.zero; + + if (isLeftTangentLinear && isRightTangentLinear) + controlPoint.tangentMode = TangentMode.Linear; + else if (isLeftTangentLinear || isRightTangentLinear) + controlPoint.tangentMode = TangentMode.Broken; + else if (controlPoint.tangentMode != TangentMode.Continuous) + controlPoint.tangentMode = TangentMode.Broken; + + controlPoint.StoreTangents(); + path.SetPoint(index, controlPoint); + path.localToWorldMatrix = localToWorldMatrix; + } + + public static void UpdateTangentsFromMode(this IEditablePath path) + { + const float kEpsilon = 0.001f; + + var localToWorldMatrix = path.localToWorldMatrix; + path.localToWorldMatrix = Matrix4x4.identity; + + for (var i = 0; i < path.pointCount; ++i) + { + var controlPoint = path.GetPoint(i); + + if (controlPoint.tangentMode == TangentMode.Linear) + { + controlPoint.localLeftTangent = Vector3.zero; + controlPoint.localRightTangent = Vector3.zero; + } + else if (controlPoint.tangentMode == TangentMode.Broken) + { + var isLeftEndpoint = path.isOpenEnded && i == 0; + var prevPoint = path.GetPrevPoint(i); + var nextPoint = path.GetNextPoint(i); + + var liniarLeftPosition = (prevPoint.position - controlPoint.position) / 3f; + var isLeftTangentLinear = isLeftEndpoint || (controlPoint.localLeftTangent - liniarLeftPosition).sqrMagnitude < kEpsilon; + + if (isLeftTangentLinear) + controlPoint.localLeftTangent = Vector3.zero; + + var isRightEndpoint = path.isOpenEnded && i == path.pointCount-1; + var liniarRightPosition = (nextPoint.position - controlPoint.position) / 3f; + var isRightTangentLinear = isRightEndpoint || (controlPoint.localRightTangent - liniarRightPosition).sqrMagnitude < kEpsilon; + + if (isRightTangentLinear) + controlPoint.localRightTangent = Vector3.zero; + + if (isLeftTangentLinear && isRightTangentLinear) + controlPoint.tangentMode = TangentMode.Linear; + } + else if (controlPoint.tangentMode == TangentMode.Continuous) + { + //TODO: ensure tangent continuity + } + + controlPoint.StoreTangents(); + path.SetPoint(i, controlPoint); + } + + path.localToWorldMatrix = localToWorldMatrix; + } + + public static void SetTangentMode(this IEditablePath path, int index, TangentMode tangentMode) + { + var localToWorldMatrix = path.localToWorldMatrix; + path.localToWorldMatrix = Matrix4x4.identity; + + var controlPoint = path.GetPoint(index); + var isEndpoint = path.isOpenEnded && (index == 0 || index == path.pointCount - 1); + var oldTangentMode = controlPoint.tangentMode; + + controlPoint.tangentMode = tangentMode; + controlPoint.RestoreTangents(); + + if (tangentMode == TangentMode.Linear) + { + controlPoint.localLeftTangent = Vector3.zero; + controlPoint.localRightTangent = Vector3.zero; + } + else if (tangentMode == TangentMode.Continuous && !isEndpoint) + { + var isLeftLinear = controlPoint.localLeftTangent == Vector3.zero; + var isRightLinear = controlPoint.localRightTangent == Vector3.zero; + var tangentDotProduct = Vector3.Dot(controlPoint.localLeftTangent.normalized, controlPoint.localRightTangent.normalized); + var isContinous = tangentDotProduct < 0f && (tangentDotProduct + 1) < 0.001f; + var isLinear = isLeftLinear && isRightLinear; + + if ((isLinear || oldTangentMode == TangentMode.Broken) && !isContinous) + { + var prevPoint = path.GetPrevPoint(index); + var nextPoint = path.GetNextPoint(index); + var vLeft = prevPoint.position - controlPoint.position; + var vRight = nextPoint.position - controlPoint.position; + var rightDirection = Vector3.Cross(Vector3.Cross(vLeft, vRight), vLeft.normalized + vRight.normalized).normalized; + var scale = 1f / 3f; + + if (isLeftLinear) + controlPoint.localLeftTangent = vLeft.magnitude * scale * -rightDirection; + else + controlPoint.localLeftTangent = controlPoint.localLeftTangent.magnitude * -rightDirection; + + if (isRightLinear) + controlPoint.localRightTangent = vRight.magnitude * scale * rightDirection; + else + controlPoint.localRightTangent = controlPoint.localRightTangent.magnitude * rightDirection; + } + } + else + { + var isLeftLinear = controlPoint.localLeftTangent == Vector3.zero; + var isRightLinear = controlPoint.localRightTangent == Vector3.zero; + + if (isLeftLinear || isRightLinear) + { + if (isLeftLinear) + controlPoint.localLeftTangent = path.CalculateLocalLeftTangent(index); + + if (isRightLinear) + controlPoint.localRightTangent = path.CalculateLocalRightTangent(index); + } + } + + controlPoint.StoreTangents(); + path.SetPoint(index, controlPoint); + path.localToWorldMatrix = localToWorldMatrix; + } + + public static void MirrorTangent(this IEditablePath path, int index) + { + var localToWorldMatrix = path.localToWorldMatrix; + path.localToWorldMatrix = Matrix4x4.identity; + + var controlPoint = path.GetPoint(index); + + if (controlPoint.tangentMode == TangentMode.Linear) + return; + + if (!Mathf.Approximately((controlPoint.localLeftTangent + controlPoint.localRightTangent).sqrMagnitude, 0f)) + { + if (controlPoint.mirrorLeft) + controlPoint.localLeftTangent = -controlPoint.localRightTangent; + else + controlPoint.localRightTangent = -controlPoint.localLeftTangent; + + controlPoint.StoreTangents(); + path.SetPoint(index, controlPoint); + } + + path.localToWorldMatrix = localToWorldMatrix; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathExtensions.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathExtensions.cs.meta new file mode 100644 index 0000000..d4fddab --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 118640352bf706b49aa5ece0cf51b03c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathUtility.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathUtility.cs new file mode 100644 index 0000000..f9acbdf --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathUtility.cs @@ -0,0 +1,14 @@ +using UnityEngine; +using UnityEditor; + +namespace UnityEditor.U2D.Path +{ + public class EditablePathUtility + { + public static int Mod(int x, int m) + { + int r = x % m; + return r < 0 ? r + m : r; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathUtility.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathUtility.cs.meta new file mode 100644 index 0000000..3bf61ff --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/EditablePathUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 136ca6dbbd8b9704cb676d8e400f8096 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePath.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePath.cs new file mode 100644 index 0000000..10fee18 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePath.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public interface IEditablePath : ISelectable + { + ShapeType shapeType { get; set; } + IUndoObject undoObject { get; set; } + ISelection selection { get; } + Matrix4x4 localToWorldMatrix { get; set; } + Vector3 forward { get; set; } + Vector3 up { get; set; } + Vector3 right { get; set; } + bool isOpenEnded { get; set; } + int pointCount { get; } + ControlPoint GetPoint(int index); + void SetPoint(int index, ControlPoint controlPoint); + void AddPoint(ControlPoint controlPoint); + void InsertPoint(int index, ControlPoint controlPoint); + void RemovePoint(int index); + void Clear(); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePath.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePath.cs.meta new file mode 100644 index 0000000..f5cbfba --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5db033e7b440e254688b2fcca87e6a59 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePathController.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePathController.cs new file mode 100644 index 0000000..4dae077 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePathController.cs @@ -0,0 +1,24 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public interface IEditablePathController + { + IEditablePath editablePath { get; set; } + IEditablePath closestEditablePath { get; } + ISnapping snapping { get; set; } + bool enableSnapping { get; set; } + void RegisterUndo(string name); + void ClearSelection(); + void SelectPoint(int index, bool select); + void CreatePoint(int index, Vector3 position); + void RemoveSelectedPoints(); + void MoveSelectedPoints(Vector3 delta); + void MoveEdge(int index, Vector3 delta); + void SetLeftTangent(int index, Vector3 position, bool setToLinear, bool mirror, Vector3 cachedRightTangent, TangentMode cachedTangentMode); + void SetRightTangent(int index, Vector3 position, bool setToLinear, bool mirror, Vector3 cachedLeftTangent, TangentMode cachedTangentMode); + void ClearClosestPath(); + void AddClosestPath(float distance); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePathController.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePathController.cs.meta new file mode 100644 index 0000000..df64cff --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IEditablePathController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2416be64a5db15c4eb742e5f086682c3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ISnapping.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ISnapping.cs new file mode 100644 index 0000000..4a4b970 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ISnapping.cs @@ -0,0 +1,10 @@ +using UnityEngine; +using UnityEditor; + +namespace UnityEditor.U2D.Path +{ + public interface ISnapping + { + T Snap(T value); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ISnapping.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ISnapping.cs.meta new file mode 100644 index 0000000..ba078dd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/ISnapping.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: f15c4dfafb6d6d544ab56d8cfca74d07 +timeCreated: 1505113416 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IUndoObject.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IUndoObject.cs new file mode 100644 index 0000000..fd4a5e4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IUndoObject.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public interface IUndoObject + { + void RegisterUndo(string name); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IUndoObject.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IUndoObject.cs.meta new file mode 100644 index 0000000..0237105 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/IUndoObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 55ba72d694e736b428394820f9ca8f24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/MultipleEditablePathController.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/MultipleEditablePathController.cs new file mode 100644 index 0000000..2c19e70 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/MultipleEditablePathController.cs @@ -0,0 +1,153 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public class MultipleEditablePathController : IEditablePathController + { + private IEditablePathController m_Controller = new EditablePathController(); + private List m_Paths = new List(); + private float m_ClosestDistance = float.MaxValue; + private IEditablePath m_ClosestPath; + + public IEditablePath editablePath + { + get { return m_Controller.editablePath; } + set { m_Controller.editablePath = value; } + } + + public IEditablePath closestEditablePath { get; private set; } + + public ISnapping snapping + { + get { return m_Controller.snapping; } + set { m_Controller.snapping = value; } + } + + public bool enableSnapping + { + get { return m_Controller.enableSnapping; } + set { m_Controller.enableSnapping = value; } + } + + public void ClearPaths() + { + m_Paths.Clear(); + } + + public void AddPath(IEditablePath path) + { + if (!m_Paths.Contains(path)) + m_Paths.Add(path); + } + + public void RemovePath(IEditablePath path) + { + m_Paths.Remove(path); + } + + public void RegisterUndo(string name) + { + var current = editablePath; + + ForEach((s) => + { + editablePath = s; + m_Controller.RegisterUndo(name); + }); + + editablePath = current; + } + + public void ClearSelection() + { + var current = editablePath; + + ForEach((s) => + { + editablePath = s; + m_Controller.ClearSelection(); + }); + + editablePath = current; + } + + public void SelectPoint(int index, bool select) + { + m_Controller.SelectPoint(index, select); + } + + public void CreatePoint(int index, Vector3 position) + { + m_Controller.CreatePoint(index, position); + } + + public void RemoveSelectedPoints() + { + var current = editablePath; + + ForEach((s) => + { + editablePath = s; + m_Controller.RemoveSelectedPoints(); + }); + + editablePath = current; + } + + public void MoveSelectedPoints(Vector3 delta) + { + var current = editablePath; + + ForEach((s) => + { + editablePath = s; + m_Controller.MoveSelectedPoints(delta); + }); + + editablePath = current; + } + + public void MoveEdge(int index, Vector3 delta) + { + m_Controller.MoveEdge(index, delta); + } + + public void SetLeftTangent(int index, Vector3 position, bool setToLinear, bool mirror, Vector3 cachedRightTangent, TangentMode cachedTangentMode) + { + m_Controller.SetLeftTangent(index, position, setToLinear, mirror, cachedRightTangent, cachedTangentMode); + } + + public void SetRightTangent(int index, Vector3 position, bool setToLinear, bool mirror, Vector3 cachedLeftTangent, TangentMode cachedTangentMode) + { + m_Controller.SetRightTangent(index, position, setToLinear, mirror, cachedLeftTangent, cachedTangentMode); + } + + public void ClearClosestPath() + { + m_ClosestDistance = float.MaxValue; + closestEditablePath = null; + } + + public void AddClosestPath(float distance) + { + if (distance <= m_ClosestDistance) + { + m_ClosestDistance = distance; + closestEditablePath = editablePath; + } + } + + private void ForEach(Action action) + { + foreach(var path in m_Paths) + { + if (path == null) + continue; + + action(path); + } + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/MultipleEditablePathController.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/MultipleEditablePathController.cs.meta new file mode 100644 index 0000000..17a72fb --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/MultipleEditablePathController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e9b894eff389bc4b914e86801e4cb25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/Snapping.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/Snapping.cs new file mode 100644 index 0000000..0dd8837 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/Snapping.cs @@ -0,0 +1,21 @@ +using UnityEngine; +using UnityEditor; + +namespace UnityEditor.U2D.Path +{ + public class Snapping : ISnapping + { + public Vector3 Snap(Vector3 position) + { + return new Vector3( + Snap(position.x, EditorSnapSettings.move.x), + Snap(position.y, EditorSnapSettings.move.y), + position.z); + } + + private float Snap(float value, float snap) + { + return Mathf.Round(value / snap) * snap; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/Snapping.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/Snapping.cs.meta new file mode 100644 index 0000000..38c276a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditablePath/Snapping.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 729f75e79f7b4da458ab89bf1f36dc90 +timeCreated: 1505113416 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool.meta new file mode 100644 index 0000000..f88bddf --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 47fb61e2873922c4893faa7eff277f25 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/AssemblyInfo.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/AssemblyInfo.cs new file mode 100644 index 0000000..fef72da --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("Unity.2D.SpriteShape.Editor")] diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/AssemblyInfo.cs.meta new file mode 100644 index 0000000..45ec7b1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8de732c98460ec4ca63677f37beb1e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePath.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePath.cs new file mode 100644 index 0000000..a2aece1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePath.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public class GenericScriptablePath : ScriptablePath + { + [SerializeField] + private List m_Data = new List(); + + public T[] data + { + get { return m_Data.ToArray(); } + set + { + if (value.Length != pointCount) + throw new Exception("Custom data count does not match control point count"); + + m_Data.Clear(); + m_Data.AddRange(value); + } + } + + public override void Clear() + { + base.Clear(); + + m_Data.Clear(); + } + + public override void AddPoint(ControlPoint controlPoint) + { + base.AddPoint(controlPoint); + + m_Data.Add(Create()); + } + + public override void InsertPoint(int index, ControlPoint controlPoint) + { + base.InsertPoint(index, controlPoint); + + m_Data.Insert(index, Create()); + } + + public override void RemovePoint(int index) + { + base.RemovePoint(index); + + Destroy(m_Data[index]); + + m_Data.RemoveAt(index); + } + + public T GetData(int index) + { + return m_Data[index]; + } + + public void SetData(int index, T data) + { + m_Data[index] = data; + } + + protected virtual T Create() + { + return Activator.CreateInstance(); + } + + protected virtual void Destroy(T data) { } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePath.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePath.cs.meta new file mode 100644 index 0000000..8583ec0 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91ab30a448166b74e99d488f537bfc67 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePathInspector.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePathInspector.cs new file mode 100644 index 0000000..b9966a9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePathInspector.cs @@ -0,0 +1,120 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.EditorTools; + +namespace UnityEditor.U2D.Path +{ + public class GenericScriptablePathInspector : ScriptablePathInspector where U : ScriptableData + { + private List m_DataObjects = new List(); + private List m_SelectedDataObjects = new List(); + private Editor m_CachedEditor = null; + + private void OnEnable() + { + PrepareDataObjects(); + } + + private void OnDestroy() + { + DestroyDataObjects(); + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + DoCustomDataInspector(); + } + + protected void DoCustomDataInspector() + { + PrepareDataObjects(); + + if (m_SelectedDataObjects.Count > 0) + { + CreateCachedEditor(m_SelectedDataObjects.ToArray(), null, ref m_CachedEditor); + + EditorGUI.BeginChangeCheck(); + + m_CachedEditor.OnInspectorGUI(); + + if (EditorGUI.EndChangeCheck()) + SetDataObjects(); + } + } + + private void PrepareDataObjects() + { + var elementCount = 0; + + m_SelectedDataObjects.Clear(); + + foreach(var path in paths) + elementCount += path.pointCount; + + while (m_DataObjects.Count < elementCount) + CreateDataObject(); + + var index = 0; + foreach(var path in paths) + { + var genericPath = path as GenericScriptablePath; + var customDataArray = genericPath.data; + var length = customDataArray.Length; + + for (var i = 0; i < length; ++i) + { + var dataObject = m_DataObjects[index + i]; + dataObject.data = customDataArray[i]; + + if (path.selection.Contains(i)) + { + dataObject.owner = path.owner; + dataObject.index = i; + m_SelectedDataObjects.Add(dataObject); + } + } + + index += length; + } + } + + private void SetDataObjects() + { + var index = 0; + foreach(var path in paths) + { + var genericPath = path as GenericScriptablePath; + var customDataArray = genericPath.data; + var length = customDataArray.Length; + + for (var i = 0; i < length; ++i) + customDataArray[i] = m_DataObjects[index + i].data; + + genericPath.data = customDataArray; + + index += length; + } + } + + private U CreateDataObject() + { + var dataObject = ScriptableObject.CreateInstance(); + m_DataObjects.Add(dataObject); + return dataObject; + } + + private void DestroyDataObjects() + { + foreach (var customDataObject in m_DataObjects) + DestroyImmediate(customDataObject); + + m_DataObjects.Clear(); + m_SelectedDataObjects.Clear(); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePathInspector.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePathInspector.cs.meta new file mode 100644 index 0000000..7132e9a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/GenericScriptablePathInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8d7f8780c69f9742b827ffd638225fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathComponentEditor.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathComponentEditor.cs new file mode 100644 index 0000000..ee0f05a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathComponentEditor.cs @@ -0,0 +1,123 @@ +using System; +using System.Linq; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.EditorTools; + +namespace UnityEditor.U2D.Path +{ + public abstract class PathComponentEditor : Editor where T : ScriptablePath + { + private static class Contents + { + public static readonly GUIContent snappingLabel = new GUIContent("Snapping", "Snap points using the snap settings"); + } + + private Editor m_CachedEditor = null; + + // Returns true on Changed. + internal bool DoEditButtonChecked(GUIContent icon, string label) where U : PathEditorTool + { + const float kButtonWidth = 33; + const float kButtonHeight = 23; + const float k_SpaceBetweenLabelAndButton = 5; + var buttonStyle = new GUIStyle("EditModeSingleButton"); + + var rect = EditorGUILayout.GetControlRect(true, kButtonHeight, buttonStyle); + var buttonRect = new Rect(rect.xMin + EditorGUIUtility.labelWidth, rect.yMin, kButtonWidth, kButtonHeight); + + var labelContent = new GUIContent(label); + var labelSize = GUI.skin.label.CalcSize(labelContent); + + var labelRect = new Rect( + buttonRect.xMax + k_SpaceBetweenLabelAndButton, + rect.yMin + (rect.height - labelSize.y) * .5f, + labelSize.x, + rect.height); + + bool hasChanged = false; + using (new EditorGUI.DisabledGroupScope(!EditorToolManager.IsAvailable())) + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + var isActive = GUI.Toggle(buttonRect, EditorToolManager.IsActiveTool(), icon, buttonStyle); + + GUI.Label(labelRect, label); + + if (check.changed) + { + if (isActive) + EditorTools.EditorTools.SetActiveTool(); + else + EditorTools.EditorTools.RestorePreviousTool(); + hasChanged = true; + } + } + } + return hasChanged; + } + + protected void DoEditButton(GUIContent icon, string label) where U : PathEditorTool + { + DoEditButtonChecked(icon, label); + } + + protected void DoPathInspector() where U : PathEditorTool + { + if (EditorToolManager.IsActiveTool() && EditorToolManager.IsAvailable()) + { + var paths = EditorToolManager.GetEditorTool().paths; + + CreateCachedEditor(paths, null, ref m_CachedEditor); + + if (m_CachedEditor == null) //Needed to avoid a nullref on exiting playmode + return; + + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_CachedEditor.OnInspectorGUI(); + + if (check.changed) + EditorToolManager.GetEditorTool().SetShapes(); + } + } + } + + protected void DoSnappingInspector() where U : PathEditorTool + { + if (EditorToolManager.IsActiveTool() && EditorToolManager.IsAvailable()) + { + var tool = EditorToolManager.GetEditorTool(); + tool.enableSnapping = EditorGUILayout.Toggle(Contents.snappingLabel, tool.enableSnapping); + } + } + + protected void DoOpenEndedInspector(SerializedProperty isOpenEndedProperty) where U : PathEditorTool + { + serializedObject.Update(); + + using (var check = new EditorGUI.ChangeCheckScope()) + { + EditorGUILayout.PropertyField(isOpenEndedProperty); + + if (check.changed) + { + if (EditorToolManager.IsActiveTool() && EditorToolManager.IsAvailable()) + { + var paths = EditorToolManager.GetEditorTool().paths; + + foreach (var path in paths) + { + path.undoObject.RegisterUndo("Set Open Ended"); + path.isOpenEnded = isOpenEndedProperty.boolValue; + } + } + } + } + + serializedObject.ApplyModifiedProperties(); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathComponentEditor.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathComponentEditor.cs.meta new file mode 100644 index 0000000..c6dba04 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathComponentEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79c3c0b6ebc836f438b76a34f04dd076 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorTool.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorTool.cs new file mode 100644 index 0000000..6cd3f04 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorTool.cs @@ -0,0 +1,494 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.EditorTools; +using UnityEditor.U2D.Path.GUIFramework; +using UnityObject = UnityEngine.Object; + +namespace UnityEditor.U2D.Path +{ + public static class PathEditorToolContents + { + internal static readonly GUIContent shapeToolIcon = IconContent("ShapeTool", "Start editing the Shape in the Scene View."); + internal static readonly GUIContent shapeToolPro = IconContent("ShapeToolPro", "Start editing the Shape in the Scene View."); + + internal static GUIContent IconContent(string name, string tooltip = null) + { + return new GUIContent(AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/" + name + ".png"), tooltip); + } + + public static GUIContent icon + { + get + { + if (EditorGUIUtility.isProSkin) + return shapeToolPro; + + return shapeToolIcon; + } + } + } + + internal interface IDuringSceneGuiTool + { + void DuringSceneGui(SceneView sceneView); + bool IsAvailable(); + } + + [InitializeOnLoad] + internal class EditorToolManager + { + private static List m_Tools = new List(); + + static EditorToolManager() + { + SceneView.duringSceneGui += DuringSceneGui; + } + + internal static void Add(IDuringSceneGuiTool tool) + { + if (!m_Tools.Contains(tool) && tool is EditorTool) + m_Tools.Add(tool); + } + + internal static void Remove(IDuringSceneGuiTool tool) + { + if (m_Tools.Contains(tool)) + m_Tools.Remove(tool); + } + + internal static bool IsActiveTool() where T : EditorTool + { + return EditorTools.EditorTools.activeToolType.Equals(typeof(T)); + } + + internal static bool IsAvailable() where T : EditorTool + { + var tool = GetEditorTool(); + + if (tool != null) + return tool.IsAvailable(); + + return false; + } + + internal static T GetEditorTool() where T : EditorTool + { + foreach(var tool in m_Tools) + { + if (tool.GetType().Equals(typeof(T))) + return tool as T; + } + + return null; + } + + private static void DuringSceneGui(SceneView sceneView) + { + foreach (var tool in m_Tools) + { + if (tool.IsAvailable() && EditorTools.EditorTools.IsActiveTool(tool as EditorTool)) + tool.DuringSceneGui(sceneView); + } + } + } + + public abstract class PathEditorTool : EditorTool, IDuringSceneGuiTool where T : ScriptablePath + { + private Dictionary m_Paths = new Dictionary(); + private IGUIState m_GUIState = new GUIState(); + private Dictionary m_PathEditors = new Dictionary(); + private Dictionary m_SerializedObjects = new Dictionary(); + private MultipleEditablePathController m_Controller = new MultipleEditablePathController(); + private PointRectSelector m_RectSelector = new PointRectSelector(); + private bool m_IsActive = false; + + internal T[] paths + { + get { return m_Paths.Values.ToArray(); } + } + + public bool enableSnapping + { + get { return m_Controller.enableSnapping; } + set { m_Controller.enableSnapping = value; } + } + + public override GUIContent toolbarIcon + { + get { return PathEditorToolContents.icon; } + } + + public override bool IsAvailable() + { + return targets.Count() > 0; + } + + public T GetPath(UnityObject targetObject) + { + var path = default(T); + m_Paths.TryGetValue(targetObject, out path); + return path; + } + + public void SetPath(UnityObject target) + { + var path = GetPath(target); + path.localToWorldMatrix = Matrix4x4.identity; + + var undoName = Undo.GetCurrentGroupName(); + var serializedObject = GetSerializedObject(target); + + serializedObject.UpdateIfRequiredOrScript(); + + SetShape(path, serializedObject); + + Undo.SetCurrentGroupName(undoName); + } + + private void RepaintInspectors() + { + var editorWindows = Resources.FindObjectsOfTypeAll(); + + foreach (var editorWindow in editorWindows) + { + if (editorWindow.titleContent.text == "Inspector") + editorWindow.Repaint(); + } + } + + private void OnEnable() + { + m_IsActive = false; + EditorToolManager.Add(this); + + SetupRectSelector(); + HandleActivation(); + + EditorTools.EditorTools.activeToolChanged += HandleActivation; + } + + private void OnDestroy() + { + EditorToolManager.Remove(this); + + EditorTools.EditorTools.activeToolChanged -= HandleActivation; + UnregisterCallbacks(); + } + + private void HandleActivation() + { + if (m_IsActive == false && EditorTools.EditorTools.IsActiveTool(this)) + Activate(); + else if (m_IsActive) + Deactivate(); + } + + private void Activate() + { + m_IsActive = true; + RegisterCallbacks(); + InitializeCache(); + OnActivate(); + } + + private void Deactivate() + { + OnDeactivate(); + DestroyCache(); + UnregisterCallbacks(); + m_IsActive = false; + } + + private void RegisterCallbacks() + { + UnregisterCallbacks(); + Selection.selectionChanged += SelectionChanged; + EditorApplication.playModeStateChanged += PlayModeStateChanged; + Undo.undoRedoPerformed += UndoRedoPerformed; + } + + private void UnregisterCallbacks() + { + Selection.selectionChanged -= SelectionChanged; + EditorApplication.playModeStateChanged -= PlayModeStateChanged; + Undo.undoRedoPerformed -= UndoRedoPerformed; + } + + private void DestroyCache() + { + foreach (var pair in m_Paths) + { + var path = pair.Value; + + if (path != null) + { + Undo.ClearUndo(path); + UnityObject.DestroyImmediate(path); + } + } + m_Paths.Clear(); + m_Controller.ClearPaths(); + m_PathEditors.Clear(); + m_SerializedObjects.Clear(); + } + + private void UndoRedoPerformed() + { + ForEachTarget((target) => + { + var path = GetPath(target); + + if (!path.modified) + InitializePath(target); + }); + } + + private void SelectionChanged() + { + InitializeCache(); + } + + private void PlayModeStateChanged(PlayModeStateChange stateChange) + { + if (stateChange == PlayModeStateChange.EnteredEditMode) + EditorApplication.delayCall += () => { InitializeCache(); }; //HACK: At this point target is null. Let's wait to next frame to refresh. + } + + private void SetupRectSelector() + { + m_RectSelector.onSelectionBegin = BeginSelection; + m_RectSelector.onSelectionChanged = UpdateSelection; + m_RectSelector.onSelectionEnd = EndSelection; + } + + private void ForEachTarget(Action action) + { + foreach(var target in targets) + { + if (target == null) + continue; + + action(target); + } + } + + private void InitializeCache() + { + m_Controller.ClearPaths(); + + ForEachTarget((target) => + { + var path = GetOrCreatePath(target); + var pointCount = path.pointCount; + + InitializePath(target); + + if (pointCount != path.pointCount) + path.selection.Clear(); + + CreatePathEditor(target); + + m_Controller.AddPath(path); + }); + } + + private void InitializePath(UnityObject target) + { + IShape shape = null; + ControlPoint[] controlPoints = null; + + try + { + shape = GetShape(target); + controlPoints = shape.ToControlPoints(); + } + catch (Exception e) + { + Debug.LogError(e.Message); + } + + var path = GetPath(target); + path.Clear(); + + if (shape != null && controlPoints != null) + { + path.localToWorldMatrix = Matrix4x4.identity; + path.shapeType = shape.type; + path.isOpenEnded = shape.isOpenEnded; + + foreach (var controlPoint in controlPoints) + path.AddPoint(controlPoint); + } + + Initialize(path, GetSerializedObject(target)); + } + + private T GetOrCreatePath(UnityObject targetObject) + { + var path = GetPath(targetObject); + + if (path == null) + { + path = ScriptableObject.CreateInstance(); + path.owner = targetObject; + m_Paths[targetObject] = path; + } + + return path; + } + + private PathEditor GetPathEditor(UnityObject target) + { + PathEditor pathEditor; + m_PathEditors.TryGetValue(target, out pathEditor); + return pathEditor; + } + + private void CreatePathEditor(UnityObject target) + { + var pathEditor = new PathEditor(); + pathEditor.controller = m_Controller; + pathEditor.drawerOverride = GetCustomDrawer(target); + m_PathEditors[target] = pathEditor; + } + + private SerializedObject GetSerializedObject(UnityObject target) + { + var serializedObject = default(SerializedObject); + + if (!m_SerializedObjects.TryGetValue(target, out serializedObject)) + { + serializedObject = new SerializedObject(target); + m_SerializedObjects[target] = serializedObject; + } + + return serializedObject; + } + + void IDuringSceneGuiTool.DuringSceneGui(SceneView sceneView) + { + if (m_GUIState.eventType == EventType.Layout) + m_Controller.ClearClosestPath(); + + m_RectSelector.OnGUI(); + + bool changed = false; + + ForEachTarget((target) => + { + var path = GetPath(target); + + if (path != null) + { + path.localToWorldMatrix = GetLocalToWorldMatrix(target); + path.forward = GetForward(target); + path.up = GetUp(target); + path.right = GetRight(target); + m_Controller.editablePath = path; + + using (var check = new EditorGUI.ChangeCheckScope()) + { + var pathEditor = GetPathEditor(target); + pathEditor.linearTangentIsZero = GetLinearTangentIsZero(target); + pathEditor.OnGUI(); + OnCustomGUI(path); + changed |= check.changed; + } + } + }); + + if (changed) + { + SetShapes(); + RepaintInspectors(); + } + } + + private void BeginSelection(ISelector selector, bool isAdditive) + { + m_Controller.RegisterUndo("Selection"); + + if (isAdditive) + { + ForEachTarget((target) => + { + var path = GetPath(target); + path.selection.BeginSelection(); + }); + } + else + { + UpdateSelection(selector); + } + } + + private void UpdateSelection(ISelector selector) + { + var repaintInspectors = false; + + ForEachTarget((target) => + { + var path = GetPath(target); + + repaintInspectors |= path.Select(selector); + }); + + if (repaintInspectors) + RepaintInspectors(); + } + + private void EndSelection(ISelector selector) + { + ForEachTarget((target) => + { + var path = GetPath(target); + path.selection.EndSelection(true); + }); + } + + internal void SetShapes() + { + ForEachTarget((target) => + { + SetPath(target); + }); + } + + private Transform GetTransform(UnityObject target) + { + return (target as Component).transform; + } + + private Matrix4x4 GetLocalToWorldMatrix(UnityObject target) + { + return GetTransform(target).localToWorldMatrix; + } + + private Vector3 GetForward(UnityObject target) + { + return GetTransform(target).forward; + } + + private Vector3 GetUp(UnityObject target) + { + return GetTransform(target).up; + } + + private Vector3 GetRight(UnityObject target) + { + return GetTransform(target).right; + } + + protected abstract IShape GetShape(UnityObject target); + protected virtual void Initialize(T path, SerializedObject serializedObject) { } + protected abstract void SetShape(T path, SerializedObject serializedObject); + protected virtual void OnActivate() { } + protected virtual void OnDeactivate() { } + protected virtual void OnCustomGUI(T path) { } + protected virtual bool GetLinearTangentIsZero(UnityObject target) { return false; } + protected virtual IDrawer GetCustomDrawer(UnityObject target) { return null; } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorTool.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorTool.cs.meta new file mode 100644 index 0000000..6b8afd1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 320732be5a65ff84ea451c5bf9700876 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorToolExtensions.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorToolExtensions.cs new file mode 100644 index 0000000..7836b30 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorToolExtensions.cs @@ -0,0 +1,108 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.EditorTools; +using UnityEditor.U2D.Path.GUIFramework; +using UnityObject = UnityEngine.Object; + +namespace UnityEditor.U2D.Path +{ + public static class PathEditorToolExtensions + { + public static void CycleTangentMode(this PathEditorTool pathEditorTool) where T : ScriptablePath + { + var first = true; + var mixed = false; + var tangentMode = TangentMode.Linear; + var targets = pathEditorTool.targets; + + foreach(var target in targets) + { + var path = pathEditorTool.GetPath(target); + + if (path.selection.Count == 0) + continue; + + for (var i = 0; i < path.pointCount; ++i) + { + if (!path.selection.Contains(i)) + continue; + + var point = path.GetPoint(i); + + if (first) + { + first = false; + tangentMode = point.tangentMode; + } + else if (point.tangentMode != tangentMode) + { + mixed = true; + break; + } + } + + if (mixed) + break; + } + + if (mixed) + tangentMode = TangentMode.Linear; + else + tangentMode = GetNextTangentMode(tangentMode); + + foreach(var target in targets) + { + var path = pathEditorTool.GetPath(target); + + if (path.selection.Count == 0) + continue; + + path.undoObject.RegisterUndo("Cycle Tangent Mode"); + + for (var i = 0; i < path.pointCount; ++i) + { + if (!path.selection.Contains(i)) + continue; + + path.SetTangentMode(i, tangentMode); + } + + pathEditorTool.SetPath(target); + } + } + + public static void MirrorTangent(this PathEditorTool pathEditorTool) where T : ScriptablePath + { + var targets = pathEditorTool.targets; + + foreach(var target in targets) + { + var path = pathEditorTool.GetPath(target); + + if (path.selection.Count == 0) + continue; + + path.undoObject.RegisterUndo("Mirror Tangents"); + + for (var i = 0; i < path.pointCount; ++i) + { + if (!path.selection.Contains(i)) + continue; + + path.MirrorTangent(i); + } + + pathEditorTool.SetPath(target); + } + } + + private static TangentMode GetNextTangentMode(TangentMode tangentMode) + { + return (TangentMode)((((int)tangentMode) + 1) % Enum.GetValues(typeof(TangentMode)).Length); + } + } + +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorToolExtensions.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorToolExtensions.cs.meta new file mode 100644 index 0000000..a446107 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/PathEditorToolExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 94a1e3e609709aa4f9106a9aeea179f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptableData.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptableData.cs new file mode 100644 index 0000000..a79b7fc --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptableData.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityObject = UnityEngine.Object; + +namespace UnityEditor.U2D.Path +{ + public class ScriptableData : ScriptableObject + { + [SerializeField] + private T m_Data; + public UnityObject owner { get; set; } + public int index { get; set; } + + public T data + { + get { return m_Data; } + set { m_Data = value; } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptableData.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptableData.cs.meta new file mode 100644 index 0000000..9372043 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptableData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ae511f1b2818bc54f87b84a327b16f71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePath.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePath.cs new file mode 100644 index 0000000..283cd94 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePath.cs @@ -0,0 +1,118 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.EditorTools; +using UnityObject = UnityEngine.Object; + +namespace UnityEditor.U2D.Path +{ + public class ScriptablePath : ScriptableObject, IEditablePath, IUndoObject + { + [SerializeField] + private EditablePath m_EditablePath = new EditablePath(); + [SerializeField] + private bool m_Modified = false; + + internal bool modified + { + get { return m_Modified; } + } + + internal UnityObject owner { get; set; } + + public ShapeType shapeType + { + get { return m_EditablePath.shapeType; } + set { m_EditablePath.shapeType = value; } + } + + public IUndoObject undoObject + { + get { return this; } + set { } + } + + public ISelection selection + { + get { return m_EditablePath.selection; } + } + + public Matrix4x4 localToWorldMatrix + { + get { return m_EditablePath.localToWorldMatrix; } + set { m_EditablePath.localToWorldMatrix = value; } + } + + public Vector3 forward + { + get { return m_EditablePath.forward; } + set { m_EditablePath.forward = value; } + } + + public Vector3 up + { + get { return m_EditablePath.up; } + set { m_EditablePath.up = value; } + } + + public Vector3 right + { + get { return m_EditablePath.right; } + set { m_EditablePath.right = value; } + } + + public bool isOpenEnded + { + get { return m_EditablePath.isOpenEnded; } + set { m_EditablePath.isOpenEnded = value; } + } + + public int pointCount + { + get { return m_EditablePath.pointCount; } + } + + public bool Select(ISelector selector) + { + return m_EditablePath.Select(selector); + } + + public virtual void Clear() + { + m_EditablePath.Clear(); + } + + public virtual ControlPoint GetPoint(int index) + { + return m_EditablePath.GetPoint(index); + } + + public virtual void SetPoint(int index, ControlPoint controlPoint) + { + m_EditablePath.SetPoint(index, controlPoint); + } + + public virtual void AddPoint(ControlPoint controlPoint) + { + m_EditablePath.AddPoint(controlPoint); + } + + public virtual void InsertPoint(int index, ControlPoint controlPoint) + { + m_EditablePath.InsertPoint(index, controlPoint); + } + + public virtual void RemovePoint(int index) + { + m_EditablePath.RemovePoint(index); + } + + void IUndoObject.RegisterUndo(string name) + { + Undo.RegisterCompleteObjectUndo(this, name); + m_Modified = true; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePath.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePath.cs.meta new file mode 100644 index 0000000..f2adfb7 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c208d96210d896247a45095d5fa9bf09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePathInspector.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePathInspector.cs new file mode 100644 index 0000000..06b2592 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePathInspector.cs @@ -0,0 +1,233 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace UnityEditor.U2D.Path +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(ScriptablePath), true)] + public class ScriptablePathInspector : Editor + { + private static class Contents + { + public static readonly GUIContent linearIcon = IconContent("TangentLinear", "TangentLinearPro", "Linear"); + public static readonly GUIContent continuousIcon = IconContent("TangentContinuous", "TangentContinuousPro", "Continuous"); + public static readonly GUIContent brokenIcon = IconContent("TangentBroken", "TangentBrokenPro", "Broken"); + public static readonly GUIContent positionLabel = new GUIContent("Position", "Position of the Control Point"); + public static readonly GUIContent enableSnapLabel = new GUIContent("Snapping", "Snap points using the snap settings"); + public static readonly GUIContent tangentModeLabel = new GUIContent("Tangent Mode"); + public static readonly GUIContent pointLabel = new GUIContent("Point"); + + + private static GUIContent IconContent(string name, string tooltip = null) + { + return new GUIContent(AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/" + name + ".png"), tooltip); + } + + private static GUIContent IconContent(string personal, string pro, string tooltip) + { + if (EditorGUIUtility.isProSkin) + return IconContent(pro, tooltip); + + return IconContent(personal, tooltip); + } + } + + private List m_Paths = null; + private bool m_Dragged = false; + + protected List paths + { + get + { + if (m_Paths == null) + m_Paths = targets.Select( t => t as ScriptablePath).ToList(); + + return m_Paths; + } + } + + public override void OnInspectorGUI() + { + DoTangentModeInspector(); + DoPositionInspector(); + } + + protected void DoTangentModeInspector() + { + if (!IsAnyShapeType(ShapeType.Spline)) + return; + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel(Contents.tangentModeLabel); + + using (new EditorGUI.DisabledGroupScope(!IsAnyPointSelected())) + { + if (DoToggle(GetToggleStateFromTangentMode(TangentMode.Linear), Contents.linearIcon)) + SetMixedTangentMode(TangentMode.Linear); + + if (DoToggle(GetToggleStateFromTangentMode(TangentMode.Continuous), Contents.continuousIcon)) + SetMixedTangentMode(TangentMode.Continuous); + + if (DoToggle(GetToggleStateFromTangentMode(TangentMode.Broken), Contents.brokenIcon)) + SetMixedTangentMode(TangentMode.Broken); + } + + EditorGUILayout.EndHorizontal(); + } + + protected void DoPositionInspector() + { + var showMixedValue = EditorGUI.showMixedValue; + var wideMode = EditorGUIUtility.wideMode; + + var position = Vector3.zero; + var isMixed = GetMixedPosition(out position); + + EditorGUI.showMixedValue = isMixed; + EditorGUIUtility.wideMode = true; + + using (new EditorGUI.DisabledGroupScope(!IsAnyPointSelected())) + { + if (GUIUtility.hotControl == 0) + m_Dragged = false; + + EditorGUI.BeginChangeCheck(); + + var delta = EditorGUILayout.Vector2Field(Contents.positionLabel, position) - (Vector2)position; + + if (EditorGUI.EndChangeCheck()) + { + if (m_Dragged == false) + { + foreach(var path in paths) + path.undoObject.RegisterUndo("Point Position"); + + m_Dragged = true; + } + + SetMixedDeltaPosition(delta); + } + } + + EditorGUI.showMixedValue = showMixedValue; + EditorGUIUtility.wideMode = wideMode; + } + + private bool DoToggle(bool value, GUIContent icon) + { + const float kButtonWidth = 33f; + const float kButtonHeight = 23f; + var buttonStyle = new GUIStyle("EditModeSingleButton"); + + var changed = false; + using (var check = new EditorGUI.ChangeCheckScope()) + { + value = GUILayout.Toggle(value, icon, buttonStyle, GUILayout.Width(kButtonWidth), GUILayout.Height(kButtonHeight)); + changed = check.changed; + } + + return value && changed; + } + + private bool GetToggleStateFromTangentMode(TangentMode mode) + { + foreach(var path in paths) + { + var selection = path.selection; + + foreach (var index in selection.elements) + if (path.GetPoint(index).tangentMode != mode) + return false; + } + + return true; + } + + private void SetMixedTangentMode(TangentMode tangentMode) + { + foreach(var path in paths) + { + path.undoObject.RegisterUndo("Tangent Mode"); + + foreach (var index in path.selection.elements) + path.SetTangentMode(index, tangentMode); + } + + SceneView.RepaintAll(); + } + + private bool GetMixedPosition(out Vector3 position) + { + var first = true; + position = Vector3.zero; + + foreach(var path in paths) + { + var selection = path.selection; + var matrix = path.localToWorldMatrix; + + path.localToWorldMatrix = Matrix4x4.identity; + + foreach (var index in selection.elements) + { + var controlPoint = path.GetPoint(index); + + if (first) + { + position = controlPoint.position; + first = false; + } + else if (position != controlPoint.position) + { + return true; + } + } + + path.localToWorldMatrix = matrix; + } + + return false; + } + + private void SetMixedDeltaPosition(Vector3 delta) + { + foreach(var path in paths) + { + var selection = path.selection; + var matrix = path.localToWorldMatrix; + + path.localToWorldMatrix = Matrix4x4.identity; + + foreach (var index in selection.elements) + { + var controlPoint = path.GetPoint(index); + controlPoint.position += delta; + path.SetPoint(index, controlPoint); + } + + path.localToWorldMatrix = matrix; + } + } + + private bool IsAnyShapeType(ShapeType shapeType) + { + foreach(var path in paths) + if (path.shapeType == shapeType) + return true; + + return false; + } + + protected bool IsAnyPointSelected() + { + foreach(var path in paths) + if (path.selection.Count > 0) + return true; + + return false; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePathInspector.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePathInspector.cs.meta new file mode 100644 index 0000000..8846f0a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/EditorTool/ScriptablePathInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c5abda88d831f347a177bb63ff287b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles.meta new file mode 100644 index 0000000..0791be9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ef3a2c79978afd74ebaa435c12615c7c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path.meta new file mode 100644 index 0000000..0970dac --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cbe8f28ead47977409438cd59447d211 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointHovered.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointHovered.png new file mode 100644 index 0000000..4290cde Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointHovered.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointHovered.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointHovered.png.meta new file mode 100644 index 0000000..0b67250 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointHovered.png.meta @@ -0,0 +1,112 @@ +fileFormatVersion: 2 +guid: eaa90b7bb801a1144b58c4926d95ad6a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 357346b6d26030047a52ccb34ccb2886 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointNormal.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointNormal.png new file mode 100644 index 0000000..30b4ced Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointNormal.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointNormal.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointNormal.png.meta new file mode 100644 index 0000000..8f1e4ff --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointNormal.png.meta @@ -0,0 +1,112 @@ +fileFormatVersion: 2 +guid: 514bcbaba91a4704599b5b170200682a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 36cdba5fd2caa914892902a32774cdb8 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointPreview.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointPreview.png new file mode 100644 index 0000000..a41c595 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointPreview.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointPreview.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointPreview.png.meta new file mode 100644 index 0000000..afe71e0 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointPreview.png.meta @@ -0,0 +1,112 @@ +fileFormatVersion: 2 +guid: 1d3a30b709ec7b94ab8997b21eae5849 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 52d8d99422b17e64bb6ba5d2dadd70b8 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointSelected.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointSelected.png new file mode 100644 index 0000000..b03847c Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointSelected.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointSelected.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointSelected.png.meta new file mode 100644 index 0000000..ed8ea87 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/pointSelected.png.meta @@ -0,0 +1,112 @@ +fileFormatVersion: 2 +guid: 9becc394fda44db46ad1fbff4a9cfdcb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 91172ab64c40f144eb1defedd68e7218 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/tangentNormal.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/tangentNormal.png new file mode 100644 index 0000000..e9d76cf Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/tangentNormal.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/tangentNormal.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/tangentNormal.png.meta new file mode 100644 index 0000000..01ac901 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/Path/tangentNormal.png.meta @@ -0,0 +1,123 @@ +fileFormatVersion: 2 +guid: 0ece669b27aea44439cadb539418c627 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: eff7069ffebc20e47b1b8409488587d1 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeTool.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeTool.png new file mode 100644 index 0000000..bb0ceed Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeTool.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeTool.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeTool.png.meta new file mode 100644 index 0000000..7f52e78 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeTool.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 0601759dc49769849996e4dae10a2204 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 7d56a60e2671206419ca3f0fd4afcc25 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeToolPro.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeToolPro.png new file mode 100644 index 0000000..3e9c93b Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeToolPro.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeToolPro.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeToolPro.png.meta new file mode 100644 index 0000000..dc758ef --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/ShapeToolPro.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 20ac412813dce2241a95fcf2dad05436 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 3ec3e0affb347e74d962381e838269f3 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBroken.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBroken.png new file mode 100644 index 0000000..7900ebf Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBroken.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBroken.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBroken.png.meta new file mode 100644 index 0000000..53c500c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBroken.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: b370d25fdf6f8914287e27c0c3dede6a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 11161a62eb582114f995922f83b5d391 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBrokenPro.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBrokenPro.png new file mode 100644 index 0000000..8868e1d Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBrokenPro.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBrokenPro.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBrokenPro.png.meta new file mode 100644 index 0000000..66a8f8d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentBrokenPro.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 3f0215e89d05b544d907d3a7d34fab63 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: cbd45795318e3a543936d9b2e6e50606 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuous.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuous.png new file mode 100644 index 0000000..d84a8c1 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuous.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuous.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuous.png.meta new file mode 100644 index 0000000..4aabde1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuous.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 229e750703f3e824ca71ddd16a5e36be +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 89b1ca0030b965c4f82777d37f1e12bc + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuousPro.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuousPro.png new file mode 100644 index 0000000..2ae8cb4 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuousPro.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuousPro.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuousPro.png.meta new file mode 100644 index 0000000..570aea9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentContinuousPro.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 8d4a2ded892e27742bb6d4d263639dff +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 65e01b4dd520e304083281f74ebff12e + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinear.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinear.png new file mode 100644 index 0000000..b4d89b8 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinear.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinear.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinear.png.meta new file mode 100644 index 0000000..d997bad --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinear.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: a728d9332cba5f448a36350199dc573b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 62f46dae558c8a74da5ce1603e2ef2a8 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinearPro.png b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinearPro.png new file mode 100644 index 0000000..67d12a3 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinearPro.png differ diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinearPro.png.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinearPro.png.meta new file mode 100644 index 0000000..020e815 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Handles/TangentLinearPro.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: cafc16189f045f445bad6f5eb9e13541 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 8426c25057e87a249bbaaea6173778ab + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI.meta new file mode 100644 index 0000000..01f9565 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 66ae7362289f12c4d8da3f9f04cf4984 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/CreatePointAction.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/CreatePointAction.cs new file mode 100644 index 0000000..32a69bd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/CreatePointAction.cs @@ -0,0 +1,48 @@ +using System; +using UnityEngine; +using UnityEditor.U2D.Path.GUIFramework; + +namespace UnityEditor.U2D.Path +{ + public class CreatePointAction : ClickAction + { + private Control m_PointControl; + + public Func guiToWorld; + public Action onCreatePoint; + public CreatePointAction(Control pointControl, Control edgeControl) : base(edgeControl, 0, false) + { + m_PointControl = pointControl; + } + + protected override void OnTrigger(IGUIState guiState) + { + base.OnTrigger(guiState); + + var index = hoveredControl.layoutData.index; + var position = GetMousePositionWorld(guiState); + + if (onCreatePoint != null) + onCreatePoint(index, position); + + guiState.nearestControl = m_PointControl.ID; + + var data = m_PointControl.layoutData; + data.index = index + 1; + data.position = position; + data.distance = 0f; + + m_PointControl.layoutData = data; + + guiState.changed = true; + } + + private Vector3 GetMousePositionWorld(IGUIState guiState) + { + if (guiToWorld != null) + return guiToWorld(guiState, guiState.mousePosition); + + return guiState.GUIToWorld(guiState.mousePosition, hoveredControl.layoutData.forward, hoveredControl.layoutData.position); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/CreatePointAction.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/CreatePointAction.cs.meta new file mode 100644 index 0000000..bdb7c0b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/CreatePointAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed2cb354a5d670f4881c41d7d2fc6a45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/Drawer.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/Drawer.cs new file mode 100644 index 0000000..485e4fd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/Drawer.cs @@ -0,0 +1,118 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.U2D.Path.GUIFramework; + +namespace UnityEditor.U2D.Path +{ + public class Drawer : IDrawer + { + internal class Styles + { + public readonly GUIStyle pointNormalStyle; + public readonly GUIStyle pointHoveredStyle; + public readonly GUIStyle pointSelectedStyle; + public readonly GUIStyle pointPreviewStyle; + public readonly GUIStyle tangentNormalStyle; + public readonly GUIStyle tangentHoveredStyle; + + public Styles() + { + var pointNormal = AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/pointNormal.png"); + var pointHovered = AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/pointHovered.png"); + var pointSelected = AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/pointSelected.png"); + var pointPreview = AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/pointPreview.png"); + var tangentNormal = AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/tangentNormal.png"); + + pointNormalStyle = CreateStyle(AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/pointNormal.png"), Vector2.one * 12f); + pointHoveredStyle = CreateStyle(AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/pointHovered.png"), Vector2.one * 12f); + pointSelectedStyle = CreateStyle(AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/pointSelected.png"), Vector2.one * 12f); + pointPreviewStyle = CreateStyle(AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/pointPreview.png"), Vector2.one * 12f); + tangentNormalStyle = CreateStyle(AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/tangentNormal.png"), Vector2.one * 8f); + tangentHoveredStyle = CreateStyle(AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.path/Editor/Handles/Path/pointHovered.png"), Vector2.one * 10f); + } + + private GUIStyle CreateStyle(Texture2D texture, Vector2 size) + { + var guiStyle = new GUIStyle(); + guiStyle.normal.background = texture; + guiStyle.fixedWidth = size.x; + guiStyle.fixedHeight = size.y; + + return guiStyle; + } + } + + private IGUIState m_GUIState = new GUIState(); + private Styles m_Styles; + private Styles styles + { + get + { + if (m_Styles == null) + m_Styles = new Styles(); + + return m_Styles; + } + } + + public void DrawCreatePointPreview(Vector3 position) + { + DrawGUIStyleCap(0, position, Quaternion.identity, m_GUIState.GetHandleSize(position), styles.pointPreviewStyle); + } + + public void DrawPoint(Vector3 position) + { + DrawGUIStyleCap(0, position, Quaternion.identity, m_GUIState.GetHandleSize(position), styles.pointNormalStyle); + } + + public void DrawPointHovered(Vector3 position) + { + DrawGUIStyleCap(0, position, Quaternion.identity, m_GUIState.GetHandleSize(position), styles.pointHoveredStyle); + } + + public void DrawPointSelected(Vector3 position) + { + DrawGUIStyleCap(0, position, Quaternion.identity, m_GUIState.GetHandleSize(position), styles.pointSelectedStyle); + } + + public void DrawLine(Vector3 p1, Vector3 p2, float width, Color color) + { + Handles.color = color; + Handles.DrawAAPolyLine(width, new Vector3[] { p1, p2 }); + } + + public void DrawBezier(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, float width, Color color) + { + Handles.color = color; + Handles.DrawBezier(p1, p4, p2, p3, color, null, width); + } + + public void DrawTangent(Vector3 position, Vector3 tangent) + { + DrawLine(position, tangent, 3f, Color.yellow); + DrawGUIStyleCap(0, tangent, Quaternion.identity, m_GUIState.GetHandleSize(tangent), styles.tangentNormalStyle); + } + + + private void DrawGUIStyleCap(int controlID, Vector3 position, Quaternion rotation, float size, GUIStyle guiStyle) + { + if (Camera.current && Vector3.Dot(position - Camera.current.transform.position, Camera.current.transform.forward) < 0f) + return; + + Handles.BeginGUI(); + guiStyle.Draw(GetGUIStyleRect(guiStyle, position), GUIContent.none, controlID); + Handles.EndGUI(); + } + + private Rect GetGUIStyleRect(GUIStyle style, Vector3 position) + { + Vector2 vector = HandleUtility.WorldToGUIPoint(position); + + float fixedWidth = style.fixedWidth; + float fixedHeight = style.fixedHeight; + + return new Rect(vector.x - fixedWidth / 2f, vector.y - fixedHeight / 2f, fixedWidth, fixedHeight); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/Drawer.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/Drawer.cs.meta new file mode 100644 index 0000000..03edbff --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/Drawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b31573f9ab124c47b5e877a88088db1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework.meta new file mode 100644 index 0000000..c15dd07 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33e44f9d4edce8344a708573c37ebe4a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/ClickAction.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/ClickAction.cs new file mode 100644 index 0000000..5e0fa7e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/ClickAction.cs @@ -0,0 +1,52 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public class ClickAction : HoveredControlAction + { + private int m_Button; + private bool m_UseEvent; + public int clickCount = 1; + public Action onClick; + private int m_ClickCounter = 0; + + public ClickAction(Control control, int button, bool useEvent = true) : base(control) + { + m_Button = button; + m_UseEvent = useEvent; + } + + protected override bool GetTriggerContidtion(IGUIState guiState) + { + if (guiState.mouseButton == m_Button && guiState.eventType == EventType.MouseDown) + { + if (guiState.clickCount == 1) + m_ClickCounter = 0; + + ++m_ClickCounter; + + if (m_ClickCounter == clickCount) + return true; + } + + return false; + } + + protected override void OnTrigger(IGUIState guiState) + { + base.OnTrigger(guiState); + + if (onClick != null) + onClick(guiState, hoveredControl); + + if (m_UseEvent) + guiState.UseEvent(); + } + + protected override bool GetFinishContidtion(IGUIState guiState) + { + return true; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/ClickAction.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/ClickAction.cs.meta new file mode 100644 index 0000000..f0d3a3a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/ClickAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 175bf12750eca384fa2ece4cd8f67cd4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/CommandAction.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/CommandAction.cs new file mode 100644 index 0000000..9de95d7 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/CommandAction.cs @@ -0,0 +1,46 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public class CommandAction : GUIAction + { + private string m_CommandName; + + public Action onCommand; + + public CommandAction(string commandName) + { + m_CommandName = commandName; + } + + protected override bool GetTriggerContidtion(IGUIState guiState) + { + if (guiState.eventType == EventType.ValidateCommand && guiState.commandName == m_CommandName) + { + guiState.UseEvent(); + return true; + } + + return false; + } + + protected override bool GetFinishContidtion(IGUIState guiState) + { + if (guiState.eventType == EventType.ExecuteCommand && guiState.commandName == m_CommandName) + { + guiState.UseEvent(); + + return true; + } + + return false; + } + + protected override void OnFinish(IGUIState guiState) + { + if (onCommand != null) + onCommand(guiState); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/CommandAction.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/CommandAction.cs.meta new file mode 100644 index 0000000..f172c26 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/CommandAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8d8b17ba93dfad489ee2c2ff2546fb0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/Control.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/Control.cs new file mode 100644 index 0000000..2183cf8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/Control.cs @@ -0,0 +1,152 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public abstract class Control + { + private string m_Name; + private int m_NameHashCode; + private int m_ID; + private LayoutData m_LayoutData; + private int m_ActionID = -1; + private LayoutData m_HotLayoutData; + + public string name + { + get { return m_Name; } + } + + public int ID + { + get { return m_ID; } + } + + public int actionID + { + get { return m_ActionID; } + } + + public LayoutData layoutData + { + get { return m_LayoutData; } + set { m_LayoutData = value; } + } + + public LayoutData hotLayoutData + { + get { return m_HotLayoutData; } + } + + public Control(string name) + { + m_Name = name; + m_NameHashCode = name.GetHashCode(); + } + + public void GetControl(IGUIState guiState) + { + m_ID = guiState.GetControlID(m_NameHashCode, FocusType.Passive); + } + + internal void SetActionID(int actionID) + { + m_ActionID = actionID; + m_HotLayoutData = m_LayoutData; + } + + public void BeginLayout(IGUIState guiState) + { + Debug.Assert(guiState.eventType == EventType.Layout); + + m_LayoutData = OnBeginLayout(LayoutData.zero, guiState); + } + + public void Layout(IGUIState guiState) + { + Debug.Assert(guiState.eventType == EventType.Layout); + + for (var i = 0; i < GetCount(); ++i) + { + if (guiState.hotControl == actionID && hotLayoutData.index == i) + continue; + + var layoutData = new LayoutData() + { + index = i, + position = GetPosition(guiState, i), + distance = GetDistance(guiState, i), + forward = GetForward(guiState, i), + up = GetUp(guiState, i), + right = GetRight(guiState, i), + userData = GetUserData(guiState, i) + }; + + m_LayoutData = LayoutData.Nearest(m_LayoutData, layoutData); + } + } + + public void EndLayout(IGUIState guiState) + { + Debug.Assert(guiState.eventType == EventType.Layout); + + OnEndLayout(guiState); + } + + public void Repaint(IGUIState guiState) + { + for (var i = 0; i < GetCount(); ++i) + OnRepaint(guiState, i); + } + + protected virtual LayoutData OnBeginLayout(LayoutData data, IGUIState guiState) + { + return data; + } + + protected virtual void OnEndLayout(IGUIState guiState) + { + + } + + protected virtual void OnRepaint(IGUIState guiState, int index) + { + + } + + protected virtual int GetCount() + { + return 1; + } + + protected virtual Vector3 GetPosition(IGUIState guiState, int index) + { + return Vector3.zero; + } + + protected virtual Vector3 GetForward(IGUIState guiState, int index) + { + return Vector3.forward; + } + + protected virtual Vector3 GetUp(IGUIState guiState, int index) + { + return Vector3.up; + } + + protected virtual Vector3 GetRight(IGUIState guiState, int index) + { + return Vector3.right; + } + + protected virtual float GetDistance(IGUIState guiState, int index) + { + return layoutData.distance; + } + + protected virtual object GetUserData(IGUIState guiState, int index) + { + return null; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/Control.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/Control.cs.meta new file mode 100644 index 0000000..64f6fba --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/Control.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ab9c1eea0b4cc74bbee507825f10d5a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/DefaultControl.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/DefaultControl.cs new file mode 100644 index 0000000..fa6aa96 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/DefaultControl.cs @@ -0,0 +1,20 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public abstract class DefaultControl : Control + { + public static readonly float kPickDistance = 5f; + + public DefaultControl(string name) : base(name) + { + } + + protected override LayoutData OnBeginLayout(LayoutData data, IGUIState guiState) + { + data.distance = kPickDistance; + return data; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/DefaultControl.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/DefaultControl.cs.meta new file mode 100644 index 0000000..f1981c6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/DefaultControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4dc9a9d2bfd656d4cb3ccb675fe0a426 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIAction.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIAction.cs new file mode 100644 index 0000000..3e15436 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIAction.cs @@ -0,0 +1,112 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public abstract class GUIAction + { + private int m_ID = -1; + + public Func enable; + public Func enableRepaint; + public Func repaintOnMouseMove; + public Action onPreRepaint; + public Action onRepaint; + + public int ID + { + get { return m_ID; } + } + + public void OnGUI(IGUIState guiState) + { + m_ID = guiState.GetControlID(GetType().GetHashCode(), FocusType.Passive); + + if (guiState.hotControl == 0 && IsEnabled(guiState) && CanTrigger(guiState) && GetTriggerContidtion(guiState)) + { + guiState.hotControl = ID; + OnTrigger(guiState); + } + + if (guiState.hotControl == ID) + { + if (GetFinishContidtion(guiState)) + { + OnFinish(guiState); + guiState.hotControl = 0; + } + else + { + OnPerform(guiState); + } + } + + if (guiState.eventType == EventType.Repaint && IsRepaintEnabled(guiState)) + Repaint(guiState); + } + + public bool IsEnabled(IGUIState guiState) + { + if (enable != null) + return enable(guiState, this); + + return true; + } + + public bool IsRepaintEnabled(IGUIState guiState) + { + if (!IsEnabled(guiState)) + return false; + + if (enableRepaint != null) + return enableRepaint(guiState, this); + + return true; + } + + public void PreRepaint(IGUIState guiState) + { + Debug.Assert(guiState.eventType == EventType.Repaint); + + if (IsEnabled(guiState) && onPreRepaint != null) + onPreRepaint(guiState, this); + } + + private void Repaint(IGUIState guiState) + { + Debug.Assert(guiState.eventType == EventType.Repaint); + + if (onRepaint != null) + onRepaint(guiState, this); + } + + internal bool IsRepaintOnMouseMoveEnabled(IGUIState guiState) + { + if (!IsEnabled(guiState) || !IsRepaintEnabled(guiState)) + return false; + + if (repaintOnMouseMove != null) + return repaintOnMouseMove(guiState, this); + + return false; + } + + protected abstract bool GetFinishContidtion(IGUIState guiState); + protected abstract bool GetTriggerContidtion(IGUIState guiState); + protected virtual bool CanTrigger(IGUIState guiState) { return true; } + protected virtual void OnTrigger(IGUIState guiState) + { + + } + + protected virtual void OnPerform(IGUIState guiState) + { + + } + + protected virtual void OnFinish(IGUIState guiState) + { + + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIAction.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIAction.cs.meta new file mode 100644 index 0000000..c1b39e4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f11e220b90636b42bf596fb50ccdb6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIState.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIState.cs new file mode 100644 index 0000000..781bd3b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIState.cs @@ -0,0 +1,156 @@ +using UnityEngine; +using UnityEditor; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public class GUIState : IGUIState + { + private Handles.CapFunction nullCap = (int c, Vector3 p , Quaternion r, float s, EventType ev) => {}; + + public Vector2 mousePosition + { + get { return Event.current.mousePosition; } + } + + public int mouseButton + { + get { return Event.current.button; } + } + + public int clickCount + { + get { return Event.current.clickCount; } + set { Event.current.clickCount = Mathf.Max(0, value); } + } + + public bool isShiftDown + { + get { return Event.current.shift; } + } + + public bool isAltDown + { + get { return Event.current.alt; } + } + + public bool isActionKeyDown + { + get { return EditorGUI.actionKey; } + } + + public KeyCode keyCode + { + get { return Event.current.keyCode; } + } + + public EventType eventType + { + get { return Event.current.type; } + } + + public string commandName + { + get { return Event.current.commandName; } + } + + public int nearestControl + { + get { return HandleUtility.nearestControl; } + set { HandleUtility.nearestControl = value; } + } + + public int hotControl + { + get { return GUIUtility.hotControl; } + set { GUIUtility.hotControl = value; } + } + + public bool changed + { + get { return GUI.changed; } + set { GUI.changed = value; } + } + + public int GetControlID(int hint, FocusType focusType) + { + return GUIUtility.GetControlID(hint, focusType); + } + + public void AddControl(int controlID, float distance) + { + HandleUtility.AddControl(controlID, distance); + } + + public bool Slider(int id, SliderData sliderData, out Vector3 newPosition) + { + if (mouseButton == 0 && eventType == EventType.MouseDown) + { + hotControl = 0; + nearestControl = id; + } + + EditorGUI.BeginChangeCheck(); + newPosition = Handles.Slider2D(id, sliderData.position, sliderData.forward, sliderData.right, sliderData.up, 1f, nullCap, Vector2.zero); + return EditorGUI.EndChangeCheck(); + } + + public void UseEvent() + { + Event.current.Use(); + } + + public void Repaint() + { + HandleUtility.Repaint(); + } + + public bool HasCurrentCamera() + { + return Camera.current != null; + } + + public float GetHandleSize(Vector3 position) + { + var scale = HasCurrentCamera() ? 0.01f : 0.05f; + return HandleUtility.GetHandleSize(position) * scale; + } + + public float DistanceToSegment(Vector3 p1, Vector3 p2) + { + p1 = HandleUtility.WorldToGUIPoint(p1); + p2 = HandleUtility.WorldToGUIPoint(p2); + + return HandleUtility.DistancePointToLineSegment(Event.current.mousePosition, p1, p2); + } + + public float DistanceToCircle(Vector3 center, float radius) + { + return HandleUtility.DistanceToCircle(center, radius); + } + + public Vector3 GUIToWorld(Vector2 guiPosition, Vector3 planeNormal, Vector3 planePos) + { + Vector3 worldPos = Handles.inverseMatrix.MultiplyPoint(guiPosition); + + if (Camera.current) + { + Ray ray = HandleUtility.GUIPointToWorldRay(guiPosition); + + planeNormal = Handles.matrix.MultiplyVector(planeNormal); + + planePos = Handles.matrix.MultiplyPoint(planePos); + + Plane plane = new Plane(planeNormal, planePos); + + float distance = 0f; + + if (plane.Raycast(ray, out distance)) + { + worldPos = Handles.inverseMatrix.MultiplyPoint(ray.GetPoint(distance)); + } + } + + return worldPos; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIState.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIState.cs.meta new file mode 100644 index 0000000..4054e1d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUIState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a6ffe588dbbb4714695514536c29df95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUISystem.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUISystem.cs new file mode 100644 index 0000000..c124f33 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUISystem.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public class GUISystem + { + private readonly int kControlIDCheckHashCode = "ControlIDCheckHashCode".GetHashCode(); + + private List m_Controls = new List(); + private List m_Actions = new List(); + private IGUIState m_GUIState; + private int m_PrevNearestControl = -1; + private LayoutData m_PrevNearestLayoutData = LayoutData.zero; + private int m_ControlIDCheck = -1; + + public GUISystem(IGUIState guiState) + { + m_GUIState = guiState; + } + + public void AddControl(Control control) + { + if (control == null) + throw new NullReferenceException("Control is null"); + + m_Controls.Add(control); + } + + public void RemoveControl(Control control) + { + m_Controls.Remove(control); + } + + public void AddAction(GUIAction action) + { + if (action == null) + throw new NullReferenceException("Action is null"); + + m_Actions.Add(action); + } + + public void RemoveAction(GUIAction action) + { + m_Actions.Remove(action); + } + + public void OnGUI() + { + var controlIDCheck = m_GUIState.GetControlID(kControlIDCheckHashCode, FocusType.Passive); + + if (m_GUIState.eventType == EventType.Layout) + m_ControlIDCheck = controlIDCheck; + else if (m_GUIState.eventType != EventType.Used && m_ControlIDCheck != controlIDCheck) + Debug.LogWarning("GetControlID at event " + m_GUIState.eventType + " returns a controlID different from the one in Layout event"); + + var nearestLayoutData = LayoutData.zero; + + foreach (var control in m_Controls) + control.GetControl(m_GUIState); + + if (m_GUIState.eventType == EventType.Layout) + { + foreach (var control in m_Controls) + control.BeginLayout(m_GUIState); + + foreach (var control in m_Controls) + { + control.Layout(m_GUIState); + nearestLayoutData = LayoutData.Nearest(nearestLayoutData, control.layoutData); + } + + foreach (var control in m_Controls) + m_GUIState.AddControl(control.ID, control.layoutData.distance); + + foreach (var control in m_Controls) + control.EndLayout(m_GUIState); + + if (m_PrevNearestControl == m_GUIState.nearestControl) + { + if (nearestLayoutData.index != m_PrevNearestLayoutData.index) + m_GUIState.Repaint(); + } + else + { + m_PrevNearestControl = m_GUIState.nearestControl; + m_GUIState.Repaint(); + } + + m_PrevNearestLayoutData = nearestLayoutData; + } + + if (m_GUIState.eventType == EventType.Repaint) + { + foreach (var action in m_Actions) + if (action.IsRepaintEnabled(m_GUIState)) + action.PreRepaint(m_GUIState); + + foreach (var control in m_Controls) + control.Repaint(m_GUIState); + } + + var repaintOnMouseMove = false; + + foreach (var action in m_Actions) + { + if (IsMouseMoveEvent()) + repaintOnMouseMove |= action.IsRepaintOnMouseMoveEnabled(m_GUIState); + + action.OnGUI(m_GUIState); + } + + if (repaintOnMouseMove) + m_GUIState.Repaint(); + } + + private bool IsMouseMoveEvent() + { + return m_GUIState.eventType == EventType.MouseMove || m_GUIState.eventType == EventType.MouseDrag; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUISystem.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUISystem.cs.meta new file mode 100644 index 0000000..5e6daf9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GUISystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be957506ccdeb4a4789fd53667da3649 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericControl.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericControl.cs new file mode 100644 index 0000000..07fe92c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericControl.cs @@ -0,0 +1,99 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public class GenericControl : Control + { + public Func onBeginLayout; + public Action onEndLayout; + public Action onRepaint; + public Func count; + public Func position; + public Func distance; + public Func forward; + public Func up; + public Func right; + public Func userData; + + public GenericControl(string name) : base(name) + { + } + + protected override int GetCount() + { + if (count != null) + return count(); + + return base.GetCount(); + } + + protected override void OnEndLayout(IGUIState guiState) + { + if (onEndLayout != null) + onEndLayout(guiState); + } + + protected override void OnRepaint(IGUIState guiState, int index) + { + if (onRepaint != null) + onRepaint(guiState, this, index); + } + + protected override LayoutData OnBeginLayout(LayoutData data, IGUIState guiState) + { + if (onBeginLayout != null) + return onBeginLayout(guiState); + + return data; + } + + protected override Vector3 GetPosition(IGUIState guiState, int index) + { + if (position != null) + return position(index); + + return base.GetPosition(guiState,index); + } + + protected override float GetDistance(IGUIState guiState, int index) + { + if (distance != null) + return distance(guiState, index); + + return base.GetDistance(guiState, index); + } + + protected override Vector3 GetForward(IGUIState guiState, int index) + { + if (forward != null) + return forward(index); + + return base.GetForward(guiState,index); + } + + protected override Vector3 GetUp(IGUIState guiState, int index) + { + if (up != null) + return up(index); + + return base.GetUp(guiState,index); + } + + protected override Vector3 GetRight(IGUIState guiState, int index) + { + if (right != null) + return right(index); + + return base.GetRight(guiState,index); + } + + protected override object GetUserData(IGUIState guiState, int index) + { + if (userData != null) + return userData(index); + + return base.GetUserData(guiState,index); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericControl.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericControl.cs.meta new file mode 100644 index 0000000..792b6ee --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 42c4e70b47496ce448cebce5780a4a58 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericDefaultControl.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericDefaultControl.cs new file mode 100644 index 0000000..e34b007 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericDefaultControl.cs @@ -0,0 +1,58 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public class GenericDefaultControl : DefaultControl + { + public Func position; + public Func forward; + public Func up; + public Func right; + public Func userData; + + public GenericDefaultControl(string name) : base(name) + { + } + + protected override Vector3 GetPosition(IGUIState guiState, int index) + { + if (position != null) + return position(guiState); + + return base.GetPosition(guiState, index); + } + + protected override Vector3 GetForward(IGUIState guiState, int index) + { + if (forward != null) + return forward(guiState); + + return base.GetForward(guiState, index); + } + + protected override Vector3 GetUp(IGUIState guiState, int index) + { + if (up != null) + return up(guiState); + + return base.GetUp(guiState, index); + } + + protected override Vector3 GetRight(IGUIState guiState, int index) + { + if (right != null) + return right(guiState); + + return base.GetRight(guiState, index); + } + + protected override object GetUserData(IGUIState guiState, int index) + { + if (userData != null) + return userData(guiState); + + return base.GetUserData(guiState, index); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericDefaultControl.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericDefaultControl.cs.meta new file mode 100644 index 0000000..50042f2 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/GenericDefaultControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95695db3b2c152a4699bcb541136dc49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/HoveredControlAction.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/HoveredControlAction.cs new file mode 100644 index 0000000..8101779 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/HoveredControlAction.cs @@ -0,0 +1,30 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public abstract class HoveredControlAction : GUIAction + { + private Control m_HoveredControl; + + public Control hoveredControl + { + get { return m_HoveredControl; } + } + + public HoveredControlAction(Control control) + { + m_HoveredControl = control; + } + + protected override bool CanTrigger(IGUIState guiState) + { + return guiState.nearestControl == hoveredControl.ID; + } + + protected override void OnTrigger(IGUIState guiState) + { + m_HoveredControl.SetActionID(ID); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/HoveredControlAction.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/HoveredControlAction.cs.meta new file mode 100644 index 0000000..4035a13 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/HoveredControlAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f0a8a8dd05c56b141ab6abfd7ec9055e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/IGUIState.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/IGUIState.cs new file mode 100644 index 0000000..2af4b0e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/IGUIState.cs @@ -0,0 +1,41 @@ +using UnityEngine; +using UnityEditor; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public struct SliderData + { + public Vector3 position; + public Vector3 forward; + public Vector3 up; + public Vector3 right; + + public static readonly SliderData zero = new SliderData() { position = Vector3.zero, forward = Vector3.forward, up = Vector3.up, right = Vector3.right }; + } + + public interface IGUIState + { + Vector2 mousePosition { get; } + int mouseButton { get; } + int clickCount { get; set; } + bool isShiftDown { get; } + bool isAltDown { get; } + bool isActionKeyDown { get; } + KeyCode keyCode { get; } + EventType eventType { get; } + string commandName { get; } + int nearestControl { get; set; } + int hotControl { get; set; } + bool changed { get; set; } + int GetControlID(int hint, FocusType focusType); + void AddControl(int controlID, float distance); + bool Slider(int id, SliderData sliderData, out Vector3 newPosition); + void UseEvent(); + void Repaint(); + bool HasCurrentCamera(); + float GetHandleSize(Vector3 position); + float DistanceToSegment(Vector3 p1, Vector3 p2); + float DistanceToCircle(Vector3 center, float radius); + Vector3 GUIToWorld(Vector2 guiPosition, Vector3 planeNormal, Vector3 planePos); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/IGUIState.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/IGUIState.cs.meta new file mode 100644 index 0000000..01a5892 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/IGUIState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d72956f1b6eff1a459c9103dcae8bfef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/LayoutData.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/LayoutData.cs new file mode 100644 index 0000000..38e064a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/LayoutData.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public struct LayoutData + { + public int index; + public float distance; + public Vector3 position; + public Vector3 forward; + public Vector3 up; + public Vector3 right; + public object userData; + + public static readonly LayoutData zero = new LayoutData() { index = 0, distance = float.MaxValue, position = Vector3.zero, forward = Vector3.forward, up = Vector3.up, right = Vector3.right }; + + public static LayoutData Nearest(LayoutData currentData, LayoutData newData) + { + if (newData.distance <= currentData.distance) + return newData; + + return currentData; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/LayoutData.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/LayoutData.cs.meta new file mode 100644 index 0000000..9f108e9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/LayoutData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6aa087efd8b80a948a0b4273603bc269 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/SliderAction.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/SliderAction.cs new file mode 100644 index 0000000..9466b4c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/SliderAction.cs @@ -0,0 +1,60 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D.Path.GUIFramework +{ + public class SliderAction : ClickAction + { + private SliderData m_SliderData; + + public Action onSliderBegin; + public Action onSliderChanged; + public Action onSliderEnd; + + public SliderAction(Control control) : base(control, 0, false) + { + } + + protected override bool GetFinishContidtion(IGUIState guiState) + { + return guiState.eventType == EventType.MouseUp && guiState.mouseButton == 0; + } + + + protected override void OnTrigger(IGUIState guiState) + { + base.OnTrigger(guiState); + + m_SliderData.position = hoveredControl.hotLayoutData.position; + m_SliderData.forward = hoveredControl.hotLayoutData.forward; + m_SliderData.right = hoveredControl.hotLayoutData.right; + m_SliderData.up = hoveredControl.hotLayoutData.up; + + if (onSliderBegin != null) + onSliderBegin(guiState, hoveredControl, m_SliderData.position); + } + + protected override void OnFinish(IGUIState guiState) + { + if (onSliderEnd != null) + onSliderEnd(guiState, hoveredControl, m_SliderData.position); + + guiState.UseEvent(); + guiState.Repaint(); + } + + protected override void OnPerform(IGUIState guiState) + { + Vector3 newPosition; + var changed = guiState.Slider(ID, m_SliderData, out newPosition); + + if (changed) + { + m_SliderData.position = newPosition; + + if (onSliderChanged != null) + onSliderChanged(guiState, hoveredControl, newPosition); + } + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/SliderAction.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/SliderAction.cs.meta new file mode 100644 index 0000000..f0b560b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/GUIFramework/SliderAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6e0d9eacb9684e46b55a1fe312301e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/IDrawer.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/IDrawer.cs new file mode 100644 index 0000000..90e7a29 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/IDrawer.cs @@ -0,0 +1,15 @@ +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public interface IDrawer + { + void DrawCreatePointPreview(Vector3 position); + void DrawPoint(Vector3 position); + void DrawPointHovered(Vector3 position); + void DrawPointSelected(Vector3 position); + void DrawLine(Vector3 p1, Vector3 p2, float width, Color color); + void DrawBezier(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, float width, Color color); + void DrawTangent(Vector3 position, Vector3 tangent); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/IDrawer.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/IDrawer.cs.meta new file mode 100644 index 0000000..85be081 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/IDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a38d8ca070072b4f82fca33e7316cc0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/PathEditor.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/PathEditor.cs new file mode 100644 index 0000000..c410863 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/PathEditor.cs @@ -0,0 +1,537 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.U2D.Path.GUIFramework; + +namespace UnityEditor.U2D.Path +{ + public class PathEditor + { + const float kSnappingDistance = 15f; + const string kDeleteCommandName = "Delete"; + const string kSoftDeleteCommandName = "SoftDelete"; + public IEditablePathController controller { get; set; } + public bool linearTangentIsZero { get; set; } + private IDrawer m_Drawer = new Drawer(); + private IDrawer m_DrawerOverride; + private GUISystem m_GUISystem; + + public IDrawer drawerOverride { get; set; } + + private IDrawer drawer + { + get + { + if (drawerOverride != null) + return drawerOverride; + + return m_Drawer; + } + } + + public PathEditor() : this(new GUISystem(new GUIState())) { } + + public PathEditor(GUISystem guiSystem) + { + m_GUISystem = guiSystem; + + var m_PointControl = new GenericControl("Point") + { + count = GetPointCount, + distance = (guiState, i) => + { + var position = GetPoint(i).position; + return guiState.DistanceToCircle(position, guiState.GetHandleSize(position) * 10f); + }, + position = (i) => { return GetPoint(i).position; }, + forward = (i) => { return GetForward(); }, + up = (i) => { return GetUp(); }, + right = (i) => { return GetRight(); }, + onRepaint = DrawPoint + }; + + var m_EdgeControl = new GenericControl("Edge") + { + count = GetEdgeCount, + distance = DistanceToEdge, + position = (i) => { return GetPoint(i).position; }, + forward = (i) => { return GetForward(); }, + up = (i) => { return GetUp(); }, + right = (i) => { return GetRight(); }, + onRepaint = DrawEdge + }; + m_EdgeControl.onEndLayout = (guiState) => { controller.AddClosestPath(m_EdgeControl.layoutData.distance); }; + + var m_LeftTangentControl = new GenericControl("LeftTangent") + { + count = () => + { + if (GetShapeType() != ShapeType.Spline) + return 0; + + return GetPointCount(); + }, + distance = (guiState, i) => + { + if (linearTangentIsZero && GetPoint(i).tangentMode == TangentMode.Linear) + return float.MaxValue; + + if (!IsSelected(i) || IsOpenEnded() && i == 0) + return float.MaxValue; + + var position = GetLeftTangent(i); + return guiState.DistanceToCircle(position, guiState.GetHandleSize(position) * 10f); + }, + position = (i) => { return GetLeftTangent(i); }, + forward = (i) => { return GetForward(); }, + up = (i) => { return GetUp(); }, + right = (i) => { return GetRight(); }, + onRepaint = (guiState, control, i) => + { + if (!IsSelected(i) || IsOpenEnded() && i == 0) + return; + + var point = GetPoint(i); + + if (linearTangentIsZero && point.tangentMode == TangentMode.Linear) + return; + + var position = point.position; + var leftTangent = GetLeftTangent(i); + + drawer.DrawTangent(position, leftTangent); + } + }; + + var m_RightTangentControl = new GenericControl("RightTangent") + { + count = () => + { + if (GetShapeType() != ShapeType.Spline) + return 0; + + return GetPointCount(); + }, + distance = (guiState, i) => + { + if (linearTangentIsZero && GetPoint(i).tangentMode == TangentMode.Linear) + return float.MaxValue; + + if (!IsSelected(i) || IsOpenEnded() && i == GetPointCount()-1) + return float.MaxValue; + + var position = GetRightTangent(i); + return guiState.DistanceToCircle(position, guiState.GetHandleSize(position) * 10f); + }, + position = (i) => { return GetRightTangent(i); }, + forward = (i) => { return GetForward(); }, + up = (i) => { return GetUp(); }, + right = (i) => { return GetRight(); }, + onRepaint = (guiState, control, i) => + { + if (!IsSelected(i) || IsOpenEnded() && i == GetPointCount()-1) + return; + + var point = GetPoint(i); + + if (linearTangentIsZero && point.tangentMode == TangentMode.Linear) + return; + + var position = point.position; + var rightTangent = GetRightTangent(i); + + drawer.DrawTangent(position, rightTangent); + } + }; + + var m_CreatePointAction = new CreatePointAction(m_PointControl, m_EdgeControl) + { + enable = (guiState, action) => !IsAltDown(guiState) && !guiState.isActionKeyDown && controller.closestEditablePath == controller.editablePath, + enableRepaint = (guiState, action) => EnableCreatePointRepaint(guiState, m_PointControl, m_LeftTangentControl, m_RightTangentControl), + repaintOnMouseMove = (guiState, action) => true, + guiToWorld = GUIToWorld, + onCreatePoint = (index, position) => + { + controller.RegisterUndo("Create Point"); + controller.CreatePoint(index, position); + }, + onPreRepaint = (guiState, action) => + { + if (GetPointCount() > 0) + { + var position = ClosestPointInEdge(guiState, guiState.mousePosition, m_EdgeControl.layoutData.index); + drawer.DrawCreatePointPreview(position); + } + } + }; + + Action removePoints = (guiState) => + { + controller.RegisterUndo("Remove Point"); + controller.RemoveSelectedPoints(); + guiState.changed = true; + }; + + var m_RemovePointAction1 = new CommandAction(kDeleteCommandName) + { + enable = (guiState, action) => { return GetSelectedPointCount() > 0; }, + onCommand = removePoints + }; + + var m_RemovePointAction2 = new CommandAction(kSoftDeleteCommandName) + { + enable = (guiState, action) => { return GetSelectedPointCount() > 0; }, + onCommand = removePoints + }; + + var dragged = false; + var m_MovePointAction = new SliderAction(m_PointControl) + { + enable = (guiState, action) => !IsAltDown(guiState), + onClick = (guiState, control) => + { + dragged = false; + var index = control.layoutData.index; + + if (!IsSelected(index)) + { + controller.RegisterUndo("Selection"); + + if (!guiState.isActionKeyDown) + controller.ClearSelection(); + + controller.SelectPoint(index, true); + guiState.changed = true; + } + }, + onSliderChanged = (guiState, control, position) => + { + var index = control.hotLayoutData.index; + var delta = SnapIfNeeded(position) - GetPoint(index).position; + + if (!dragged) + { + controller.RegisterUndo("Move Point"); + dragged = true; + } + + controller.MoveSelectedPoints(delta); + } + }; + + var m_MoveEdgeAction = new SliderAction(m_EdgeControl) + { + enable = (guiState, action) => !IsAltDown(guiState) && guiState.isActionKeyDown, + onSliderBegin = (guiState, control, position) => + { + dragged = false; + + }, + onSliderChanged = (guiState, control, position) => + { + var index = control.hotLayoutData.index; + var delta = position - GetPoint(index).position; + + if (!dragged) + { + controller.RegisterUndo("Move Edge"); + dragged = true; + } + + controller.MoveEdge(index, delta); + } + }; + + var cachedRightTangent = Vector3.zero; + var cachedLeftTangent = Vector3.zero; + var cachedTangentMode = TangentMode.Linear; + + var m_MoveLeftTangentAction = new SliderAction(m_LeftTangentControl) + { + enable = (guiState, action) => !IsAltDown(guiState), + onSliderBegin = (guiState, control, position) => + { + dragged = false; + var point = GetPoint(control.hotLayoutData.index); + cachedRightTangent = point.rightTangent; + cachedTangentMode = point.tangentMode; + }, + onSliderChanged = (guiState, control, position) => + { + var index = control.hotLayoutData.index; + var setToLinear = m_PointControl.distance(guiState, index) <= DefaultControl.kPickDistance; + + if (!dragged) + { + controller.RegisterUndo("Move Tangent"); + dragged = true; + } + + position = SnapIfNeeded(position); + controller.SetLeftTangent(index, position, setToLinear, guiState.isShiftDown, cachedRightTangent, cachedTangentMode); + + } + }; + + var m_MoveRightTangentAction = new SliderAction(m_RightTangentControl) + { + enable = (guiState, action) => !IsAltDown(guiState), + onSliderBegin = (guiState, control, position) => + { + dragged = false; + var point = GetPoint(control.hotLayoutData.index); + cachedLeftTangent = point.leftTangent; + cachedTangentMode = point.tangentMode; + }, + onSliderChanged = (guiState, control, position) => + { + var index = control.hotLayoutData.index; + var setToLinear = m_PointControl.distance(guiState, index) <= DefaultControl.kPickDistance; + + if (!dragged) + { + controller.RegisterUndo("Move Tangent"); + dragged = true; + } + + position = SnapIfNeeded(position); + controller.SetRightTangent(index, position, setToLinear, guiState.isShiftDown, cachedLeftTangent, cachedTangentMode); + } + }; + + m_GUISystem.AddControl(m_EdgeControl); + m_GUISystem.AddControl(m_PointControl); + m_GUISystem.AddControl(m_LeftTangentControl); + m_GUISystem.AddControl(m_RightTangentControl); + m_GUISystem.AddAction(m_CreatePointAction); + m_GUISystem.AddAction(m_RemovePointAction1); + m_GUISystem.AddAction(m_RemovePointAction2); + m_GUISystem.AddAction(m_MovePointAction); + m_GUISystem.AddAction(m_MoveEdgeAction); + m_GUISystem.AddAction(m_MoveLeftTangentAction); + m_GUISystem.AddAction(m_MoveRightTangentAction); + } + + public void OnGUI() + { + m_GUISystem.OnGUI(); + } + + private bool IsAltDown(IGUIState guiState) + { + return guiState.hotControl == 0 && guiState.isAltDown; + } + + private ControlPoint GetPoint(int index) + { + return controller.editablePath.GetPoint(index); + } + + private int GetPointCount() + { + return controller.editablePath.pointCount; + } + + private int GetEdgeCount() + { + if (controller.editablePath.isOpenEnded) + return controller.editablePath.pointCount - 1; + + return controller.editablePath.pointCount; + } + + private int GetSelectedPointCount() + { + return controller.editablePath.selection.Count; + } + + private bool IsSelected(int index) + { + return controller.editablePath.selection.Contains(index); + } + + private Vector3 GetForward() + { + return controller.editablePath.forward; + } + + private Vector3 GetUp() + { + return controller.editablePath.up; + } + + private Vector3 GetRight() + { + return controller.editablePath.right; + } + + private Matrix4x4 GetLocalToWorldMatrix() + { + return controller.editablePath.localToWorldMatrix; + } + + private ShapeType GetShapeType() + { + return controller.editablePath.shapeType; + } + + private bool IsOpenEnded() + { + return controller.editablePath.isOpenEnded; + } + + private Vector3 GetLeftTangent(int index) + { + if (linearTangentIsZero) + return GetPoint(index).leftTangent; + + return controller.editablePath.CalculateLeftTangent(index); + } + + private Vector3 GetRightTangent(int index) + { + if (linearTangentIsZero) + return GetPoint(index).rightTangent; + + return controller.editablePath.CalculateRightTangent(index); + } + + private int NextIndex(int index) + { + return EditablePathUtility.Mod(index + 1, GetPointCount()); + } + + private ControlPoint NextControlPoint(int index) + { + return GetPoint(NextIndex(index)); + } + + private int PrevIndex(int index) + { + return EditablePathUtility.Mod(index - 1, GetPointCount()); + } + + private ControlPoint PrevControlPoint(int index) + { + return GetPoint(PrevIndex(index)); + } + + private Vector3 ClosestPointInEdge(IGUIState guiState, Vector2 mousePosition, int index) + { + if (GetShapeType() == ShapeType.Polygon) + { + var p0 = GetPoint(index).position; + var p1 = NextControlPoint(index).position; + var mouseWorldPosition = GUIToWorld(guiState, mousePosition); + + var dir1 = (mouseWorldPosition - p0); + var dir2 = (p1 - p0); + + return Mathf.Clamp01(Vector3.Dot(dir1, dir2.normalized) / dir2.magnitude) * dir2 + p0; + } + else if (GetShapeType() == ShapeType.Spline) + { + var nextIndex = NextIndex(index); + float t; + return BezierUtility.ClosestPointOnCurve( + GUIToWorld(guiState, mousePosition), + GetPoint(index).position, + GetPoint(nextIndex).position, + GetRightTangent(index), + GetLeftTangent(nextIndex), + out t); + } + + return Vector3.zero; + } + + private float DistanceToEdge(IGUIState guiState, int index) + { + if (GetShapeType() == ShapeType.Polygon) + { + return guiState.DistanceToSegment(GetPoint(index).position, NextControlPoint(index).position); + } + else if (GetShapeType() == ShapeType.Spline) + { + var closestPoint = ClosestPointInEdge(guiState, guiState.mousePosition, index); + var closestPoint2 = HandleUtility.WorldToGUIPoint(closestPoint); + + return (closestPoint2 - guiState.mousePosition).magnitude; + } + + return float.MaxValue; + } + + private Vector3 GUIToWorld(IGUIState guiState, Vector2 position) + { + return guiState.GUIToWorld(position, GetForward(), GetLocalToWorldMatrix().MultiplyPoint3x4(Vector3.zero)); + } + + private void DrawPoint(IGUIState guiState, Control control, int index) + { + var position = GetPoint(index).position; + + if (guiState.hotControl == control.actionID && control.hotLayoutData.index == index || IsSelected(index)) + drawer.DrawPointSelected(position); + else if (guiState.hotControl == 0 && guiState.nearestControl == control.ID && !IsAltDown(guiState) && control.layoutData.index == index) + drawer.DrawPointHovered(position); + else + drawer.DrawPoint(position); + } + + private void DrawEdge(IGUIState guiState, Control control, int index) + { + if (GetShapeType() == ShapeType.Polygon) + { + var nextIndex = NextIndex(index); + var color = Color.white; + + if(guiState.nearestControl == control.ID && control.layoutData.index == index && guiState.hotControl == 0 && !IsAltDown(guiState)) + color = Color.yellow; + + drawer.DrawLine(GetPoint(index).position, GetPoint(nextIndex).position, 5f, color); + } + else if (GetShapeType() == ShapeType.Spline) + { + var nextIndex = NextIndex(index); + var color = Color.white; + + if(guiState.nearestControl == control.ID && control.layoutData.index == index && guiState.hotControl == 0 && !IsAltDown(guiState)) + color = Color.yellow; + + drawer.DrawBezier( + GetPoint(index).position, + GetRightTangent(index), + GetLeftTangent(nextIndex), + GetPoint(nextIndex).position, + 5f, + color); + } + } + + private bool EnableCreatePointRepaint(IGUIState guiState, Control pointControl, Control leftTangentControl, Control rightTangentControl) + { + return guiState.nearestControl != pointControl.ID && + guiState.hotControl == 0 && + (guiState.nearestControl != leftTangentControl.ID) && + (guiState.nearestControl != rightTangentControl.ID); + } + + private Vector3 SnapIfNeeded(Vector3 position) + { + if (!controller.enableSnapping || controller.snapping == null) + return position; + + var guiPosition = HandleUtility.WorldToGUIPoint(position); + var snappedGuiPosition = HandleUtility.WorldToGUIPoint(controller.snapping.Snap(position)); + var sqrDistance = (guiPosition - snappedGuiPosition).sqrMagnitude; + + if (sqrDistance < kSnappingDistance * kSnappingDistance) + position = controller.snapping.Snap(position); + + return position; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/PathEditor.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/PathEditor.cs.meta new file mode 100644 index 0000000..4586745 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/PathEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20eb80169ce2c0944aca58413fc34b1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/RectSelector.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/RectSelector.cs new file mode 100644 index 0000000..5f2a12c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/RectSelector.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.U2D.Path.GUIFramework; + +namespace UnityEditor.U2D.Path +{ + public abstract class RectSelector : ISelector + { + public class Styles + { + public readonly GUIStyle selectionRectStyle; + + public Styles() + { + selectionRectStyle = GUI.skin.FindStyle("selectionRect"); + } + } + + public Action, bool> onSelectionBegin; + public Action> onSelectionChanged; + public Action> onSelectionEnd; + + private GUISystem m_GUISystem; + private Control m_RectSelectorControl; + private GUIAction m_RectSelectAction; + private Rect m_GUIRect; + private Styles m_Styles; + + public Rect guiRect + { + get { return m_GUIRect; } + } + + private Styles styles + { + get + { + if (m_Styles == null) + m_Styles = new Styles(); + + return m_Styles; + } + } + + public RectSelector() : this(new GUISystem(new GUIState())) { } + + public RectSelector(GUISystem guiSystem) + { + m_GUISystem = guiSystem; + + m_RectSelectorControl = new GenericDefaultControl("RectSelector"); + + var start = Vector2.zero; + var rectEnd = Vector2.zero; + m_RectSelectAction = new SliderAction(m_RectSelectorControl) + { + enable = (guiState, action) => !IsAltDown(guiState), + enableRepaint = (guiState, action) => + { + var size = start - rectEnd; + return size != Vector2.zero && guiState.hotControl == action.ID; + }, + onSliderBegin = (guiState, control, position) => + { + start = guiState.mousePosition; + rectEnd = guiState.mousePosition; + m_GUIRect = FromToRect(start, rectEnd); + + if (onSelectionBegin != null) + onSelectionBegin(this, guiState.isShiftDown); + }, + onSliderChanged = (guiState, control, position) => + { + rectEnd = guiState.mousePosition; + m_GUIRect = FromToRect(start, rectEnd); + + if (onSelectionChanged != null) + onSelectionChanged(this); + }, + onSliderEnd = (guiState, control, position) => + { + if (onSelectionEnd != null) + onSelectionEnd(this); + }, + onRepaint = (guiState, action) => + { + Handles.BeginGUI(); + styles.selectionRectStyle.Draw(m_GUIRect, GUIContent.none, false, false, false, false); + Handles.EndGUI(); + } + }; + + m_GUISystem.AddControl(m_RectSelectorControl); + m_GUISystem.AddAction(m_RectSelectAction); + } + + private bool IsAltDown(IGUIState guiState) + { + return guiState.hotControl == 0 && guiState.isAltDown; + } + + private Rect FromToRect(Vector2 start, Vector2 end) + { + Rect r = new Rect(start.x, start.y, end.x - start.x, end.y - start.y); + if (r.width < 0) + { + r.x += r.width; + r.width = -r.width; + } + if (r.height < 0) + { + r.y += r.height; + r.height = -r.height; + } + return r; + } + + public void OnGUI() + { + m_GUISystem.OnGUI(); + } + + bool ISelector.Select(T element) + { + return Select(element); + } + + protected abstract bool Select(T element); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/RectSelector.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/RectSelector.cs.meta new file mode 100644 index 0000000..a2c38cf --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/IMGUI/RectSelector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24a6adab990cd9541b5ad6343eb12b32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection.meta new file mode 100644 index 0000000..9c81d38 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e0614749a5c834c4eb996eeca8643b5e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelectable.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelectable.cs new file mode 100644 index 0000000..473a4c5 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelectable.cs @@ -0,0 +1,7 @@ +namespace UnityEditor.U2D.Path +{ + public interface ISelectable + { + bool Select(ISelector selector); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelectable.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelectable.cs.meta new file mode 100644 index 0000000..05deb93 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelectable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: af7c69fdafb90db42be665ce2428476b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelection.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelection.cs new file mode 100644 index 0000000..44ddf72 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelection.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; + +namespace UnityEditor.U2D.Path +{ + public interface ISelection + { + int Count { get; } + T activeElement { get; set; } + T[] elements { get; set; } + void Clear(); + void BeginSelection(); + void EndSelection(bool select); + bool Select(T element, bool select); + bool Contains(T element); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelection.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelection.cs.meta new file mode 100644 index 0000000..5b7a749 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fef25bfe400c1dc4ea71788dc419233c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelector.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelector.cs new file mode 100644 index 0000000..2e0cb8d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelector.cs @@ -0,0 +1,7 @@ +namespace UnityEditor.U2D.Path +{ + public interface ISelector + { + bool Select(T element); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelector.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelector.cs.meta new file mode 100644 index 0000000..d8bd06d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/ISelector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2ed850d38afdc6249bc0d68517fdd655 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/IndexedSelection.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/IndexedSelection.cs new file mode 100644 index 0000000..2b20e5b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/IndexedSelection.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace UnityEditor.U2D.Path +{ + [Serializable] + internal class IndexedSelection : SerializableSelection + { + protected override int GetInvalidElement() { return -1; } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/IndexedSelection.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/IndexedSelection.cs.meta new file mode 100644 index 0000000..5fffe73 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/IndexedSelection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2730041e9cc62f34e88271bda57ed4b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/PointRectSelector.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/PointRectSelector.cs new file mode 100644 index 0000000..3a1b365 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/PointRectSelector.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using UnityEditor; + +namespace UnityEditor.U2D.Path +{ + public class PointRectSelector : RectSelector + { + protected override bool Select(Vector3 element) + { + return guiRect.Contains(HandleUtility.WorldToGUIPoint(element), true); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/PointRectSelector.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/PointRectSelector.cs.meta new file mode 100644 index 0000000..790ebfb --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/PointRectSelector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3bd49dfc036db0943a9ebe4981dad845 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/SerializableSelection.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/SerializableSelection.cs new file mode 100644 index 0000000..a003454 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/SerializableSelection.cs @@ -0,0 +1,143 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +namespace UnityEditor.U2D.Path +{ + [Serializable] + internal abstract class SerializableSelection : ISelection, ISerializationCallbackReceiver + { + internal readonly static int kInvalidID = -1; + + [SerializeField] + private T[] m_Keys = new T[0]; + + private HashSet m_Selection = new HashSet(); + private HashSet m_TemporalSelection = new HashSet(); + private bool m_SelectionInProgress = false; + + public int Count + { + get { return m_Selection.Count + m_TemporalSelection.Count; } + } + + public T activeElement + { + get { return First(); } + set + { + Clear(); + Select(value, true); + } + } + + public T[] elements + { + get + { + var set = m_Selection; + + if (m_SelectionInProgress) + { + var union = new HashSet(m_Selection); + union.UnionWith(m_TemporalSelection); + set = union; + } + + return new List(set).ToArray(); + } + set + { + Clear(); + foreach(var element in value) + Select(element, true); + } + } + + protected abstract T GetInvalidElement(); + + public void Clear() + { + GetSelection().Clear(); + } + + public void BeginSelection() + { + m_SelectionInProgress = true; + Clear(); + } + + public void EndSelection(bool select) + { + m_SelectionInProgress = false; + + if (select) + m_Selection.UnionWith(m_TemporalSelection); + else + m_Selection.ExceptWith(m_TemporalSelection); + + m_TemporalSelection.Clear(); + } + + public bool Select(T element, bool select) + { + var changed = false; + + if(EqualityComparer.Default.Equals(element, GetInvalidElement())) + return changed; + + if (select) + changed = GetSelection().Add(element); + else if (Contains(element)) + changed = GetSelection().Remove(element); + + return changed; + } + + public bool Contains(T element) + { + return m_Selection.Contains(element) || m_TemporalSelection.Contains(element); + } + + private HashSet GetSelection() + { + if (m_SelectionInProgress) + return m_TemporalSelection; + + return m_Selection; + } + + private T First() + { + T element = First(m_Selection); + + if(EqualityComparer.Default.Equals(element, GetInvalidElement())) + element = First(m_TemporalSelection); + + return element; + } + + private T First(HashSet set) + { + if(set.Count == 0) + return GetInvalidElement(); + + using (var enumerator = set.GetEnumerator()) + { + Debug.Assert(enumerator.MoveNext()); + return enumerator.Current; + } + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + m_Keys = new List(m_Selection).ToArray(); + } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + elements = m_Keys; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/SerializableSelection.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/SerializableSelection.cs.meta new file mode 100644 index 0000000..c322f80 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Selection/SerializableSelection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c56d5585e26d15248804809e7a014452 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes.meta new file mode 100644 index 0000000..e6ca705 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4334e2aedb1fa4848b2c1503ffe7578f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/IShape.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/IShape.cs new file mode 100644 index 0000000..de3c4ac --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/IShape.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public enum ShapeType + { + Polygon, + Spline + } + + public interface IShape + { + ShapeType type { get; } + bool isOpenEnded { get; } + ControlPoint[] ToControlPoints(); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/IShape.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/IShape.cs.meta new file mode 100644 index 0000000..40d6cdd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/IShape.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a73e62a38f3eed47b8b72483a21b750 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Polygon.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Polygon.cs new file mode 100644 index 0000000..bf7495d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Polygon.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public struct Polygon : IShape + { + public bool isOpenEnded; + + public Vector3[] points; + + ShapeType IShape.type => ShapeType.Polygon; + + bool IShape.isOpenEnded => isOpenEnded; + + ControlPoint[] IShape.ToControlPoints() + { + if (points == null) + throw new NullReferenceException("Points array is null"); + + var controlPoints = new List(); + + foreach (var point in points) + { + controlPoints.Add(new ControlPoint() { position = point }); + } + + return controlPoints.ToArray(); + } + + public static Polygon empty = new Polygon() { isOpenEnded = true, points = new Vector3[0] }; + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Polygon.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Polygon.cs.meta new file mode 100644 index 0000000..418101e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Polygon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ab23b6f3169984a4c87cbc3f7fe44ca6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/ShapeExtensions.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/ShapeExtensions.cs new file mode 100644 index 0000000..9e0fc59 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/ShapeExtensions.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public static class ShapeExtensions + { + public static Polygon ToPolygon(this Vector3[] points, bool isOpenEnded) + { + return new Polygon() + { + isOpenEnded = isOpenEnded, + points = points + }; + } + + public static Spline ToSpline(this Vector3[] points, bool isOpenEnded) + { + if (!points.IsSpline(isOpenEnded) && points.IsSpline(!isOpenEnded)) + { + var pointList = new List(points); + + if (isOpenEnded) + { + while (pointList.Count % 3 != 1) + pointList.RemoveAt(pointList.Count-1); + + points = pointList.ToArray(); + } + else + { + var last = pointList[pointList.Count-1]; + var first = pointList[0]; + var v = first - last; + + pointList.Add(last + v.normalized * (v.magnitude / 3f)); + pointList.Add(first - v.normalized * (v.magnitude / 3f)); + + points = pointList.ToArray(); + } + } + + if (!points.IsSpline(isOpenEnded)) + throw new Exception("The provided control point array can't conform a Spline."); + + return new Spline() + { + isOpenEnded = isOpenEnded, + points = points + }; + } + + public static bool IsSpline(this Vector3[] points, bool isOpenEnded) + { + if (points.Length < 4) + return false; + + if (isOpenEnded && points.Length % 3 != 1) + return false; + + if (!isOpenEnded && points.Length % 3 != 0) + return false; + + return true; + } + + public static Spline ToSpline(this Polygon polygon) + { + var newPointCount = polygon.points.Length * 3; + + if (polygon.isOpenEnded) + newPointCount = (polygon.points.Length - 1) * 3 + 1; + + var newPoints = new Vector3[newPointCount]; + var controlPoints = polygon.points; + var pointCount = controlPoints.Length; + + for (var i = 0; i < pointCount; ++i) + { + var nextIndex = (i + 1) % pointCount; + var point = controlPoints[i]; + var v = controlPoints[nextIndex] - point; + + newPoints[i * 3] = point; + + if (i * 3 + 2 < newPointCount) + { + newPoints[i * 3 + 1] = point + v / 3f; + newPoints[i * 3 + 2] = point + v * 2f / 3f; + } + } + + return new Spline() + { + isOpenEnded = polygon.isOpenEnded, + points = newPoints + }; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/ShapeExtensions.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/ShapeExtensions.cs.meta new file mode 100644 index 0000000..90005f8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/ShapeExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a27db178f5cab64491b34ed346797d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Spline.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Spline.cs new file mode 100644 index 0000000..1f108f7 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Spline.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.U2D.Path +{ + public struct Spline : IShape + { + public bool isOpenEnded; + + public Vector3[] points; + + ShapeType IShape.type => ShapeType.Spline; + + bool IShape.isOpenEnded => isOpenEnded; + + ControlPoint[] IShape.ToControlPoints() + { + if (points == null) + throw new NullReferenceException("Points array is null"); + + if (!points.IsSpline(isOpenEnded)) + throw new Exception("The provided control point array can't conform a Spline."); + + var controlPoints = new List(); + var leftTangent = Vector3.zero; + var rightTangent = Vector3.zero; + var pointCount = points.Length; + + for (var i = 0; i < pointCount; i += 3) + { + if (i == 0) + { + if (isOpenEnded) + leftTangent = points[0]; + else + leftTangent = points[EditablePathUtility.Mod(-1, pointCount)]; + } + + if (i == pointCount - 1 && isOpenEnded) + rightTangent = points[i]; + else + rightTangent = points[i+1]; + + + controlPoints.Add( + new ControlPoint() + { + position = points[i], + leftTangent = leftTangent, + rightTangent = rightTangent, + tangentMode = TangentMode.Broken + }); + + if (i == pointCount - 1 && isOpenEnded) + leftTangent = Vector3.zero; + else + leftTangent = points[i+2]; + } + + pointCount = controlPoints.Count; + + for (var i = 0; i < pointCount; ++i) + { + var prevIndex = EditablePathUtility.Mod(i-1, pointCount); + var nextIndex = EditablePathUtility.Mod(i+1, pointCount); + var controlPoint = controlPoints[i]; + var prevControlPoint = controlPoints[prevIndex]; + var nextControlPoint = controlPoints[nextIndex]; + + var liniarLeftPosition = (prevControlPoint.position - controlPoint.position) / 3f; + var isLeftTangentLinear = (controlPoint.localLeftTangent - liniarLeftPosition).sqrMagnitude < 0.001f; + + if (isLeftTangentLinear) + controlPoint.localLeftTangent = Vector3.zero; + + var liniarRightPosition = (nextControlPoint.position - controlPoint.position) / 3f; + var isRightTangentLinear = (controlPoint.localRightTangent - liniarRightPosition).sqrMagnitude < 0.001f; + + if (isRightTangentLinear) + controlPoint.localRightTangent = Vector3.zero; + + var tangentDotProduct = Vector3.Dot(controlPoint.localLeftTangent.normalized, controlPoint.localRightTangent.normalized); + var isContinous = tangentDotProduct < 0f && (tangentDotProduct + 1) * (tangentDotProduct + 1) < 0.001f; + + if (isLeftTangentLinear && isRightTangentLinear) + controlPoint.tangentMode = TangentMode.Linear; + else if (isLeftTangentLinear || isRightTangentLinear) + controlPoint.tangentMode = TangentMode.Broken; + else if (isContinous) + controlPoint.tangentMode = TangentMode.Continuous; + + controlPoints[i] = controlPoint; + } + + return controlPoints.ToArray(); + } + + public static Spline empty = new Spline() { isOpenEnded = true, points = new Vector3[0] }; + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Spline.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Spline.cs.meta new file mode 100644 index 0000000..19cd50f --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Shapes/Spline.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03c61de02af9d914c9cc9dd9f1174223 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Unity.2D.Path.Editor.asmdef b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Unity.2D.Path.Editor.asmdef new file mode 100644 index 0000000..7b6525c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Unity.2D.Path.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "Unity.2D.Path.Editor", + "references": [], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Unity.2D.Path.Editor.asmdef.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Unity.2D.Path.Editor.asmdef.meta new file mode 100644 index 0000000..fe7ef0a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Editor/Unity.2D.Path.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4237adb6ac177124b8f4a94835b7b455 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/LICENSE.md b/Library/PackageCache/com.unity.2d.path@2.0.6/LICENSE.md new file mode 100644 index 0000000..f5190b1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/LICENSE.md @@ -0,0 +1,29 @@ +com.unity.2d.path copyright © 2020 Unity Technologies ApS + +Unity hereby grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available with this License ("**_Software_**"), subject to the following terms and conditions: + +1. *Unity Companion Use Only*. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity development engine software license ("**_Engine License_**"). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted. + +1. *No Modification of Engine License*. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way. + +1. *Ownership & Grant Back to You*. + + 3.1. You own your content. In this License, "derivative works" means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); “derivative works” of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content. + + 3.2. Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity. + + 3.3. You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License. + +1. *Trademarks*. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates ("**_Trademarks_**"). Descriptive uses of Trademarks are permitted; see, for example, Unity’s Branding Usage Guidelines at [https://unity3d.com/public-relations/brand](https://unity3d.com/public-relations/brand). + +1. *Notices & Third-Party Rights*. This License, including the copyright notice above, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity "third-party notices" or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms. + +1. *DISCLAIMER, LIMITATION OF LIABILITY*. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +1. *USE IS ACCEPTANCE and License Versions*. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License. + +1. *Use in Compliance with Law and Termination*. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License. + +1. *Severability*. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect. + +1. *Governing Law and Venue*. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License ("**_Dispute_**"). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/LICENSE.md.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/LICENSE.md.meta new file mode 100644 index 0000000..be78839 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c58d2241e3155534f8b33d65e5d22627 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/QAReport.md b/Library/PackageCache/com.unity.2d.path@2.0.6/QAReport.md new file mode 100644 index 0000000..bd67b23 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/QAReport.md @@ -0,0 +1,22 @@ +# QA Report +Use this file to outline the test strategy for this package. + +## QA Owner: [*Add Name*] + +## Test strategy +*Use this section to describe how this feature was tested.* +* A link to the Test Plan (Test Rails, other) +* Results from the package's editor and runtime test suite. +* Link to automated test results (if any) +* Manual test Results, [here's an example](https://docs.google.com/spreadsheets/d/12A76U5Gf969w10KL4Ik0wC1oFIBDUoRrqIvQgD18TFo/edit#gid=0) +* Scenario test week outcome +* etc. + +## Package Status +Use this section to describe: +* package stability +* known bugs, issues +* performance metrics, +* etc + +In other words, a general feeling on the health of this package. diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/QAReport.md.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/QAReport.md.meta new file mode 100644 index 0000000..e10e373 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/QAReport.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c80b5e4271e88c94284e7c000b34347e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/README.md b/Library/PackageCache/com.unity.2d.path@2.0.6/README.md new file mode 100644 index 0000000..9b98377 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/README.md @@ -0,0 +1 @@ +Shape Editor \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/README.md.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/README.md.meta new file mode 100644 index 0000000..aab3840 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 309a434075c14ea4f9464daf8ff9b997 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Tests.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests.meta new file mode 100644 index 0000000..d34f6d5 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a1eb330a613ceea45af21585e08fd0bd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/PlaceholderTests.cs b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/PlaceholderTests.cs new file mode 100644 index 0000000..2c6fb33 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/PlaceholderTests.cs @@ -0,0 +1,10 @@ +using NUnit.Framework; + +public class PathPlaceholder +{ + [Test] + public void PlaceHolderTest() + { + Assert.Pass("Path tests are in a separate package."); + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/PlaceholderTests.cs.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/PlaceholderTests.cs.meta new file mode 100644 index 0000000..bc44071 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/PlaceholderTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 685b325483700af4abc5c9b7b9d97757 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/Unity.2D.Path.Tests.asmdef b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/Unity.2D.Path.Tests.asmdef new file mode 100644 index 0000000..375d352 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/Unity.2D.Path.Tests.asmdef @@ -0,0 +1,22 @@ +{ + "name": "Unity.2D.Path.Tests", + "references": [ + "Unity.2D.Path.Editor", + "UnityEditor.TestRunner" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/Unity.2D.Path.Tests.asmdef.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/Unity.2D.Path.Tests.asmdef.meta new file mode 100644 index 0000000..34039d2 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/Tests/Unity.2D.Path.Tests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6d12c3e51f4c89149908f5b37ad1301c +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/package.json b/Library/PackageCache/com.unity.2d.path@2.0.6/package.json new file mode 100644 index 0000000..17c18c6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/package.json @@ -0,0 +1,24 @@ +{ + "name": "com.unity.2d.path", + "version": "2.0.6", + "unity": "2019.4", + "unityRelease": "0a10", + "displayName": "2D Path", + "description": "2D Path provides tooling to edit shapes (polygons and Bézier splines) in EditorWindows and the SceneView.", + "category": "2D", + "keywords": [ + "2d", + "path" + ], + "relatedPackages": { + "com.unity.2d.path.tests": "2.0.6" + }, + "upmCi": { + "footprint": "3fa2e8a1fdf91a55cb66b6e3e1d09bae7e744b86" + }, + "repository": { + "url": "https://github.cds.internal.unity3d.com/unity/2d.git", + "type": "git", + "revision": "3dd60315414ba10db42e8629a9a74d37929aca1b" + } +} diff --git a/Library/PackageCache/com.unity.2d.path@2.0.6/package.json.meta b/Library/PackageCache/com.unity.2d.path@2.0.6/package.json.meta new file mode 100644 index 0000000..60b0e06 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.path@2.0.6/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 990785fe75c54584ab4201a3e20e1655 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/CHANGELOG.md b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/CHANGELOG.md new file mode 100644 index 0000000..93d86f6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/CHANGELOG.md @@ -0,0 +1,226 @@ +# Changelog + +## [3.0.14] - 2020-08-31 +### Fixed + +- 1271231 Sprite Variant Window does not appear in Sprite Shape Controller Component when selecting a Spline +- 1268305 Unable to add item on Resetting the Preset of the SpriteShapeProfile + +## [3.0.13] - 2020-07-17 +### Changed +- If Geometry is baked using SpriteShapeGeometryCache, do not check for dirty once data is updated to prevent GC. +- Updated Help Section to point to the correct URLs. + +### Fixed +- 1242910 Unable to add item on Resetting the Preset of the SpriteShapeProfile +- 1260990 Exception thrown continuously when Undo operation is performed with sprites are assigned earlier +- 1263318 BakeCollider requires GC every frame even when there are no changes in SpriteShape + +## [3.0.12] - 2020-05-28 +### Added +- Added BakeMesh to save generated geometry data. +- Sample script GenerateSpriteShapes.cs to demonstrate force generating invisible SpriteShapes on runtime scene load. + +### Fixed +- 1248171 Error occurs when unselecting Cache Geometry for Sprite Shape prefab +- 1240380 OnGUI in SpriteShapeController creates GC allocs. +- 1242531 InvalidOperationException thrown continuously on adding "Sprite Shape Controller" Component to a Sprite object +- 1242533 "A Native Collection has not been disposed, resulting in a memory leak" is thrown when 2D Sprite Shape Controller is added. + +## [3.0.11] - 2020-04-20 +### Changed +- Added warning when a valid SpriteShape profile is not set. +- Code cleanup. + +## [3.0.10] - 2020-03-06 +### Fixed +- 1220091 SpriteShapeController leaks memory when zero control points are used +- 1216990 Colliders should also respect Pivot property of Edge Sprites. +- 1225366 Ensure SpriteShape are not generated when not in view on Runtime. + +## [3.0.9] - 2020-02-11 +### Changed +- Improved Memory Allocations. + +### Fixed +- Fixed OnDrawGizmos to Get/Release RenderTexture through CommandBuffer. + +## [3.0.8] - 2019-12-02 +### Changed +- Updated License file +- Updated Third Party Notices file +- Changed how Samples are installed into user's project + +### Fixed +- Fixed where the last point of the Sprite Shape does not behave correctly when using Continuous Points in a closed shape (case 1184721) + +## [3.0.7] - 2019-10-27 +### Fixed +- Added missing meta file + +### Changed +- Update com.unity.2d.path package dependency + +## [3.0.6] - 2019-09-27 +### Added +- Added support to set CornerAngleThreshold. +- Burst is now enabled for performance boost. +### Fixed +- Fix (Case 1041062) Inputting Point Position manually causes mesh to not conform to the spline +- Fix GC in confirming Spline Extras sample. +- Fix hash Validation errors. +- Removed resources from Packages. + +## [3.0.5] - 2019-09-05 +### Fixed +- Fix (Case 1159767) Error generated when using a default sprite for Corner sprite or Angle Range sprite in Sprite Shape Profile +- Fix (Case 1178579) "ArgumentOutofRangeException" is thrown and SpriteShapeProfile freezes on reset + +## [3.0.4] - 2019-08-09 +### Added +- Added tangent channel support for proper 2D lighting in URP. + +## [3.0.3] - 2019-07-24 +### Added +- Add related test packages + +## [3.0.2] - 2019-07-13 +### Changed +- Update to latest Mathematics package version + +## [3.0.1] - 2019-07-13 +### Changed +- Mark package to support Unity 2019.3.0a10 onwards. + +## [3.0.0] - 2019-06-19 +### Changed +- Stable Version. +- Remove experimental namespace. + +## [2.1.0-preview.8] - 2019-06-12 +### Changed +- Fix (Case 1152342) The first point of the Sprite Shape does not behave correctly when using Continuous Points +- Fix (Case 1160009) Edge and Polygon Collider does not seem to follow the spriteshape for some broken mirrored tangent points +- Fix (Case 1157201) Edge Sprite Material changed when using a fill texture that is already an edge sprite on spriteshape +- Fix (Case 1162134) Open ended Spriteshape renders the fill texture instead of the range sprite + +## [2.1.0-preview.7] - 2019-06-02 +### Changed +- Fix Variant Selection. + +## [2.1.0-preview.6] - 2019-06-02 +### Changed +- Fix Null reference exception caused by SplineEditorCache changes. +- Fill Inspector changes due to Path integration. + +## [2.1.0-preview.4] - 2019-05-28 +### Changed +- Upgrade Mathematics package. +- Use path editor. + +## [2.1.0-preview.2] - 2019-05-13 +### Changed +- Initial version for 2019.2 +- Update for common package. + +## [2.0.0-preview.8] - 2019-05-16 +### Fixed +- Fixed issue when sprites are re-ordered in Angle Range. +- Updated Samples. + +## [2.0.0-preview.7] - 2019-05-10 +### Fixed +- Version Update and fixes. + +## [2.0.0-preview.6] - 2019-05-08 +### Fixed +- Added Sprite Variant Selector. +- Fix Variant Bug (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-6#post-4480936) +- Fix (Case 1146747) SpriteShape generating significant GC allocations every frame (OnWillRenderObject) + +## [2.0.0-preview.5] - 2019-04-18 +### Fixed +- Shape angle does not show the accurate sprite on certain parts of the shape. +- SpriteShape - Unable to use the Depth buffer (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-6#post-4413142) + +## [2.0.0-preview.4] - 2019-03-28 +### Changed +- Disable burst for now until we have a final release. + +## [2.0.0-preview.3] - 2019-03-25 +### Fixed +- Update Common version. + +## [2.0.0-preview.2] - 2019-03-08 +### Fixed +- Fix Edge Case Scenario where Vertices along Continuous segment could be duplicated.. +- Ensure that Collider uses a valid Sprite on Generation. + +## [2.0.0-preview.1] - 2019-02-27 +### Changed +- Updated version. + +## [1.1.0-preview.1] - 2019-02-10 +### Added +- Spriteshape tessellation code is re-implemented in C# Jobs and utilizes Burst for Performance. +- Added Mirrored and Non-Mirrored continous Tangent mode. +- Simplified Collider Generation support and is part of C# Job/Burst for performance. +- Added Shortcut Keys (for setting Tangentmode, Sprite Variant and Mirror Tangent). +- Ability to drag Spriteshape Profile form Project view to Hierarchy to create Sprite Shape in Scene. +- Simplified Corner mode for Points and is now enabled by default. +- Added Stretch UV support for Fill Area. +- Added Color property to SpriteShapeRenderer. + +### Fixed +- SpriteShapeController shows wrong Sprites after deleting a sprite from the top angle range. +- Empty SpriteShapeController still seem to show the previous Spriteshape drawcalls +- Streched Sprites are generated in between non Linked Points +- Corners sprites are no longer usable if user only sets the corners for the bottom +- Sprites in SpriteShape still shows even after user deletes the SpriteShape Profile +- SpriteShape doesn't update Point Positions visually at runtime for Builds +- Spriteshape Colliders does not update in scene immediately +- Fixed constant Mesh baking (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-4#post-3925789) +- Fixed Bounds generation issue (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-5#post-4079857) +- Sprite Shape Profile component breaks when creating range +- Fixed when sprite is updated in the sprite editor, the spriteshape is not updated. +- Fixed cases where Spline Edit is disabled even when points are selected. (https://forum.unity.com/threads/spriteshape-preview-package.522575/#post-3436940) +- Sprite with SpriteShapeBody Shader gets graphical artifacts when rotating the camera. +- When multiple SpriteShapes are selected, Edit Spline button is now disabled. (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-3#post-3764413) +- Fixed texelSize property (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-4#post-3877081) +- Fixed Collider generation for different quality levels. (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-4#post-3956062) +- Fixed Framing Issues (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-5#post-4137214) +- Fixed Collider generation for Offsets (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-5#post-4149841) +- Fixed Collider generation for different Heights (https://forum.unity.com/threads/spriteshape-preview-package.522575/page-5#post-4190116) + +### Changed +- SpriteShape Asset parameters WorldSpace UV, PixelPerUnit have been moved to SpriteShapeController properties. +- Collider generation has been simplified and aligns well with the generated geometry (different height, corners etc.) + +### Removed +- Remove redundant parameters BevelCutoff and BevelSize that can be done by simply modifying source spline. + +## [1.0.12-preview.1] - 2018-08-03 +### Added +- Fix issue where Point Positions do not update visually at runtime for Builds + +## [1.0.11-preview] - 2018-06-20 +### Added +- Fix Spriteshape does not update when Sprites are reimported. +- Fix SpriteShapeController in Scene view shows a different sprite when user reapplies a Sprite import settings +- Fix Editor Crashed when user adjusts the "Bevel Cutoff" value +- Fix Crash when changing Spline Control Points for a Sprite Shape Controller in debug Inspector +- Fix SpriteShape generation when End-points are Broken. +- Fix cases where the UV continuity is broken even when the Control point is continous. + +## [1.0.10-preview] - 2018-04-12 +### Added +- Version number format changed to -preview + +## [0.1.0] - 2017-11-20 +### Added +- Bezier Spline Shape +- Corner Sprites +- Edge variations +- Point scale +- SpriteShapeRenderer with support for masking +- Auto update collision shape diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/CHANGELOG.md.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/CHANGELOG.md.meta new file mode 100644 index 0000000..af39786 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3909d2eb8b6444c6f972a20db7914b89 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/SSCollision.md b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/SSCollision.md new file mode 100644 index 0000000..c2d6d95 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/SSCollision.md @@ -0,0 +1,14 @@ +# Enabling Collision + +Attach a __Collider 2D__ component to your Sprite Shape to enable the Collider properties in the __Sprite Shape Controller.__ Only the __Edge__ and __Polygon Collider 2D__ components can be used with __Sprite Shapes__. + +![Attaching a Collider component](images/v1.1-Collider.png) + +The Collider mesh automatically updates itself to the shape of the Sprite Shape when attached. See the Collider section of the [Sprite Shape Controller](SSController.md) page for more details about the Sprite Shape Collider options. + +By default, the Collider mesh is automatically reshaped to match the Sprite Shape every time it is edited. To make manual edits to the Collider mesh directly, first disable both __Update Collider__ and __Optimize Collider__ in the __Sprite Shape Controller's__ Collider settings to prevent the Controller from updating the Collider mesh automatically and overriding your manual edits. + +![Disabling the Collider options](images/v1.1-ColliderOptionsDisable.png) + +You can now edit the Collider mesh independent of the shape of the __Sprite Shape.__ + diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/SSController.md b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/SSController.md new file mode 100644 index 0000000..373b810 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/SSController.md @@ -0,0 +1,103 @@ +# Sprite Shape Controller + +The __Sprite Shape Controller__ component is automatically attached to the GameObject created when a __Sprite Shape Profile__ is dragged into the Scene. You edit the shape of the Sprite Shape's outline through the Controller's settings. The Controller displays different settings depending on different conditions. + +## Property Settings - Default + +The default component settings below are displayed when Edit Spline is not enabled. + +![Sprite Shape Controller property settings](images/2019_3_SSController_noedit.png) + +| __Property__ | __Function__ | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| __Profile__ | Select the __Sprite Shape Profile__ used by this Sprite Shape. | +| __Edit Spline__ | Enable ![](images/PropertyImage1.png) to make the Control Points of the Sprite Shape visible and editable. | +| __Spline__ | - | +| __Detail__ | Select the tessellation quality of the rendered Sprite Shape mesh. High/Medium/Low Quality options available. | +| __Open Ended__ | Disable to connect both ends of the Sprite Shape together to form an enclosed Shape. Enable to leave both ends of the Sprite Shape unconnected. | +| __Adaptive UV__ | Enabled by default. When enabled, Unity attempts to seamlessly tile the Sprites along the Sprite Shape path by deforming the Sprites to between Control Points. Disable this property to tile Sprites with no deformation and at their exact width. Sprites may appear cutoff if the space between Control Points is shorter than the width of the Sprite. | +| __Fill__ | - | +| __Stretch UV__ | Enable this setting to have Unity stretch the UV of the Fill texture across the Full Rect of the Sprite Shape. | +| __Pixels Per Unit__ (only available when Stretch UV is disabled) | This values affect the appearance of the Fill texture of the Sprite Shape. This value affects the scale of the Fill texture, with higher values reducing the size of the texture. The default value is 100. | +| __World Space UV__ (only available when __Stretch UV__ is disabled) | Enable to apply the Fill texture according to the World Space UV, instead of per GameObject UV. | + +### With Edit Spline enabled and a Control Point selected + +Enable __Edit Spline__ in the Controller settings to make Control Points on the Sprite Shape visible and editable. Selecting a Control Point enables the following additional Controller settings. + +![With a Control Point selected](images/enable_tangents.png) + +| __Point__ | - | +| ------------------------------------------------------- | ------------------------------------------------------------ | +| __Tangent Mode__ | Select one of three __Point Modes__ to change the way tangents on Control Points are edited. | +| ![](images/2D_SpriteShape_7.png)__Linear__ | No curve is formed between the Control Point and its neighboring points. | +| ![](images/2D_SpriteShape_8.png)__Continuous Mirrored__ | Two tangents appear on opposite sides of the Control Point, and the spline between the Control Point and its neighbors becomes curved. Adjust the tangents to change the shape of the curve. The angle between the two tangents is always 180 degrees in this mode. | +| ![](images/2D_SpriteShape_9.png)__Broken Mirrored__ | Two tangents appear on opposite sides of the Control Point, and the spline between the Control Point and its neighbors becomes curved. Adjust the tangents to change the shape of the curve. The length and angle of the tangents can be adjusted independently in this mood. | +| __Position__ | The local x and y coordinates of a selected Control Point. | +| __Height__ | Increase or decrease the height of Sprites at the Control Point by a factor of 0.1 to 4. | +| __Corner__ | Sets whether Corner Sprites are rendered at Control Points. Set to __Automatic__ by default. | +| __Disabled__ | The selected Control Point does not automatically render a Control Point. | +| __Automatic__ | The Control Point displays the assigned Corner Sprite, if both it and its neighbors are in __Linear Point Mode__. | +| __Sprite Variant__ | Select the __Sprite Variant__ from the visual Variant selector. Press __N__ to cycle through all available Variants for the Control Point. | +| __Snapping__ | Enable to snap Control Points according the Project's Snap settings. | + +### Additional Collider settings + +Add either the __Polygon Collider 2D__ or __Edge Collider 2D__ component to the __Sprite Shape__ to enable additional __Collider__ settings in the __Sprite Shape Controller__. See the [Enabling Collision](SSCollision.md) page for more details about enabling Colliders with Sprite Shapes. + +![Collider settings](images/2019_3_SSController_collider.png) + +| Collider | - | +| --------------------- | ------------------------------------------------------------ | +| __Update Collider__ | Enabled by Default. Enable this option to have the Collider mesh be updated to the Sprite Shape's current shape as the Sprite Shape is edited. Disable if you are editing the Collider mesh separately from the Sprite Shape and to use a custom Collider mesh. | +| __Offset__ | Select the amount to extrude the Collider mesh towards the edge of the Sprite Shape. The range is from -0.5 to 0.5, starting at 0 by default. | +| __Optimize Collider__ | Enabled by default. Enable to have Unity optimize the Collider mesh by cleaning up extra control points that are co-linear. Disable this option when editing the Collider mesh separately from the Sprite Shape to prevent Unity from affecting the custom Collider mesh. | +| __Detail__ | Sets the tessellation quality of the rendered Collider. High/Medium/Low Quality options available. | + + + +## Editing the Spline + +To edit the mesh outline of the __Sprite Shape__, click the __Edit Spline__ button to make the Shape's spline and its __Control Points__ become visible and editable. + +![Edit Spline enabled](images/UpdatedEditSpline_2019-3.png) + +When __Edit Spline__ is enabled, move the Control Points of the Sprite Shape to adjust its overall shape and size. Add additional Control Points by clicking on the spline in between Control Points. Press the __Del/Delete__ key to remove the currently selected Control Point. + +![Control Point added to spline](images/2D_SpriteShape_032.png) + +With a Control Point selected, cycle through the __Point Modes __by pressing the __M__ key. To change the __Mode__ of multiple Control Points at once, ensure that all selected Control Points are the same __Mode__ first before cycling or selecting another __Mode__. + +To change the Sprite Variant currently displayed at a selected Control Point, press the __N__ key to cycle through all available Variants. + +All shortcut keys can be rebound under the Shortcut menu (menu: __Edit > Shortcuts... > SpriteShape Editing__). + +## Point Modes + +When a Control Point is selected, its __Point Mode__ can be one of three modes- __Linear__, __Mirrored__, and __Non-Mirrored__. + +The __Point Mode__ determines the behavior of the tangents that are used to adjust the spline between Control Points. Each Control Point can be set to a specific Point Mode and contain its own settings. + +### Linear Point Mode + +In __Linear Point Mode__, there are no tangents to control the curve between the Control Point and its neighbors, curves are not formed between Control Points and Sprites may overlap if they intersect. + +Adjust which Sprite is displayed when two or more intersect by adjusting their __Order__ value in the [Sprite Shape Profile's](SSProfile.md) __Angle Range__ settings. + +![Linear Point Mode](images/2D_SpriteShape_034.png) + +### Continuous Mirrored Point Mode + +In __Continuous Mirrored Point Mode__, tangents appear on both sides of the selected Control Point to create a curve between the Control Point and its neighbors. Adjust the shape of the curve with the tangents. In this mode, the angle between the tangents is always maintained at 180 degrees although their lengths from the can vary. + +Press __B__ to mirror the length of the last edited tangent onto the opposite tangent. + +![Mirrored Point Mode](images/2D_SpriteShape_033.png) + +### Broken Mirrored Point Mode + +In __Broken Mirrored Point Mode__, tangents appear on both sides of the selected Control Point to create a curve between the Control Point and its neighbors. Adjust the shape of the curve with the tangents. In this mode, the length and angle of each tangent can be adjusted independently. + +Press __B__ to mirror the length of the last edited tangent onto the opposite tangent. In this mode, pressing __B__ also causes the angle of the opposite tangent to become exactly 180 degrees from the last edited tangent. + +![Non-Mirrored Mode](images/2D_SpriteShape_036.png) \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/SSProfile.md b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/SSProfile.md new file mode 100644 index 0000000..38506c4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/SSProfile.md @@ -0,0 +1,95 @@ +# Sprite Shape Profile + +The __Sprite Shape Profile__ contains the settings that determine which Sprites that appear on a Sprite Shape at specific Angle Ranges, as well as other display settings. You can use the same Profile for multiple __Sprite Shapes__ in a Scene. + +Create a __Sprite Shape Profile__ from the Editor main menu (menu: __Assets > Create > Sprite Shape Profile__), and select from the two available options: __Open Shape__ and __Closed Shape__. + +![](images/v1.1-SSProfile.png) + +| **Property** | **Function** | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| **Control Points** | - | +| **Use Sprite Borders** | Enable to draw the **Sprite Borders** of a Sprite at the Control Point. Define the **Sprite Borders** in the **Sprite Editor**. | +| **Fill** | - | +| **Texture** | Set the Texture to be used as a Fill to this field. Has no effect if the **Open Ended** property in the **Sprite Shape Controller** settings is enabled. | +| **Offset** | Determines the border offset at the edges of the Fill texture. | +| ![Angle Range tool](images/v1.1-AngleRange.png)**Angle Ranges (tool)** | Use this tool to create Angle Ranges and assign Sprites to those ranges. | +| **Start (degrees)** | Enter the starting angle for the selected Angle Range in degrees. | +| **End (degrees)** | Enter the ending angle for the selected Angle Range in degrees. | +| **Order** | Determines the display priority when Sprites intersect. Sprites with higher values are rendered above lower ones. | +| **Sprites** | List of Sprites assigned to the selected Angle Range. Displays a list of all Sprites assigned to the selected Angle Range. The order of Sprites in the list determines their **Sprite Variant** number, starting from zero at the top of the list. The first Sprite at the top of the list is the Sprite displayed by default at a Control Point. | +| **Corners** | - | +| *** All Corner options** | Assign specific Sprites to be displayed on the Sprite Shape at the respective corners. Refer to the documentation on [Corner Sprites]() for more information. | + +## Open Shape + +![Open Shape Profile preset](C:\Users\Sam\Documents\GitHub\com.unity.2d.spriteshape\Documentation~\images\OpenShapeProfile.png) + +Use the __Open Shape__ preset Profile to create Shapes made from a single edge outline with tiled Sprites along its edge. This preset is ideal for creating level elements such as platforms. + +![Example of an Open Shape](images/2D_SpriteShape_024.png) + +Drag the Open Shape Profile into the Scene view to automatically generate a Sprite Shape with __Open Ended__ enabled in its __Sprite Shape Controller__ settings. + +## Closed Shape + +![Closed Shape Profile preset](images/ClosedShapeProfile.png) + +Use the __Closed Shape__ preset Profile to create Shapes that encompass an enclosed area. The Closed Sprite Shape can display and tile a Fill texture in the enclosed area, if a Fill texture is set in its Profile settings. Use this preset to create large solid filled Shapes that are ideal for backgrounds or large platforms. + +![Closed Shape square](images/v1.1-ClosedShapeSquare.png) + +Drag the Closed Shape Profile into the Scene view to automatically generate a Sprite Shape with __Open Ended__ disabled in its __Sprite Shape Controller__ settings. The Closed Shape Profile's preset Angle Ranges create a square Sprite Shape by default. + +A key feature of the __Sprite Shape Profile__ is the Angle Ranges tool. Assigning an Angle Range determines what Sprite is displayed at specific angles, as the Sprite Shape is deformed in the Scene. + +## Creating Angle Ranges + +### Method 1: + +To create an Angle Range, click the __Create Range__ button at the bottom of the Angle Ranges tool: + +![The 'Create Range'button](images/2D_SpriteShape_014.png) + +The __Create Range__ button is only visible if the __Preview Handle__ is over an area without an Angle Range (see the example image below). + +![Selecting the preview handle](images/2D_SpriteShape_015.png) + +### Method 2: + +Another way is to hover your cursor over an empty area of the Angle Range circle. An outline appears to show the possible default angle range. Click to create this Angle Range. + +![Angle Range outline](images/2D_SpriteShape_017.png) + +### Editing the Angle Range degrees + +The range covered by the currently selected Angle Range is displayed at the bottom of the tool. + +![Enter Angle Range values](images/2D_SpriteShape_018.png) + +You can edit a range by entering new values into __Start__ and __End__, or drag either endpoint of the tool to the desired angles. A range cannot be extended into an existing neighboring range. To delete an Angle Range, select the range and then press the __Del/Delete__ key. + +## Assigning Sprites + +After creating the Angle Ranges, the next step is to assign Sprites to those ranges. The __Sprites__ list is found beneath the __Angle Ranges__ tool. It lists all the Sprites assigned to the selected range. + +![Sprite List](images/2D_SpriteShape_019.png) + +To add Sprites to the list, click the __+__ icon to insert a new row to the list. Click the circle icon next to the empty row to open the __Object Picker__ window, which displays all available Sprites in the project. + +![Adding a row to the list](images/2D_SpriteShape_020.png) + +You can also drag a Sprite directly onto a row to add it to the list. The Sprite at the top of the list is the default Sprite displayed on the Sprite Shape. Refer to the other Sprites in the list by their [Sprite Variant](SSController.md) number. See the [Sprite Shape Controller](SSController.md) page for more details. + +![Drag and drop Sprites to the row to add to the list](images/2D_SpriteShape_021.png) + +Drag the leftmost ends of the rows up or down to reorder the list, which changes the __Sprite Variant__ numbers of the Sprites accordingly. + +## Previewing Sprites of multiple Angle Ranges + +After assigning Sprites to multiple __Angle Ranges__, rotate the Preview Handle around the Angle Range tool to preview the Sprites assigned those ranges. + +![Previewing one range](images/2D_SpriteShape_022.png) + +![Previewing the other range](images/2D_SpriteShape_023.png) + diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/TableOfContents.md b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/TableOfContents.md new file mode 100644 index 0000000..f618b00 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/TableOfContents.md @@ -0,0 +1,5 @@ +* [Overview](index.md) +* [Sprite Shape Profile](SSProfile.md) +* [Sprite Shape Controller](SSController.md) +* [Enabling Collision](SSCollision.md) + diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2019_3_SSController_collider.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2019_3_SSController_collider.png new file mode 100644 index 0000000..7647538 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2019_3_SSController_collider.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2019_3_SSController_noedit.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2019_3_SSController_noedit.png new file mode 100644 index 0000000..150339c Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2019_3_SSController_noedit.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_010.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_010.png new file mode 100644 index 0000000..262c6b4 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_010.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_011.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_011.png new file mode 100644 index 0000000..f208c8c Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_011.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_012.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_012.png new file mode 100644 index 0000000..d2fb9e2 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_012.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_013.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_013.png new file mode 100644 index 0000000..be0df3b Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_013.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_014.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_014.png new file mode 100644 index 0000000..e577a83 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_014.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_015.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_015.png new file mode 100644 index 0000000..3bba172 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_015.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_016.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_016.png new file mode 100644 index 0000000..21caccb Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_016.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_017.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_017.png new file mode 100644 index 0000000..f50cbbe Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_017.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_018.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_018.png new file mode 100644 index 0000000..d97ffea Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_018.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_019.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_019.png new file mode 100644 index 0000000..9034f36 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_019.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_020.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_020.png new file mode 100644 index 0000000..fbb47da Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_020.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_021.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_021.png new file mode 100644 index 0000000..c58198e Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_021.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_022.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_022.png new file mode 100644 index 0000000..5ed7064 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_022.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_023.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_023.png new file mode 100644 index 0000000..8608052 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_023.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_024.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_024.png new file mode 100644 index 0000000..262c6b4 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_024.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_025.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_025.png new file mode 100644 index 0000000..02f0aa0 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_025.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_026.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_026.png new file mode 100644 index 0000000..096a327 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_026.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_027.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_027.png new file mode 100644 index 0000000..ef85dd9 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_027.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_028.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_028.png new file mode 100644 index 0000000..b4ae571 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_028.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_029.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_029.png new file mode 100644 index 0000000..3c0a5f8 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_029.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_030.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_030.png new file mode 100644 index 0000000..9f15b2e Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_030.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_031.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_031.png new file mode 100644 index 0000000..5d39adf Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_031.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_032.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_032.png new file mode 100644 index 0000000..4c7f6fa Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_032.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_033.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_033.png new file mode 100644 index 0000000..7006ac6 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_033.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_034.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_034.png new file mode 100644 index 0000000..c0b751b Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_034.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_035.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_035.png new file mode 100644 index 0000000..9cc3a28 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_035.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_036.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_036.png new file mode 100644 index 0000000..bb4a920 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_036.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_037.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_037.png new file mode 100644 index 0000000..26cdc6c Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_037.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_038.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_038.png new file mode 100644 index 0000000..d27a1d1 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_038.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_039.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_039.png new file mode 100644 index 0000000..455ef1b Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_039.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_040.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_040.png new file mode 100644 index 0000000..01c048f Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_040.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_041.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_041.png new file mode 100644 index 0000000..15cbcf1 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_041.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_042.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_042.png new file mode 100644 index 0000000..751523e Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_042.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_043.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_043.png new file mode 100644 index 0000000..2f26aa4 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_043.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_044.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_044.png new file mode 100644 index 0000000..c922526 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_044.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_045.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_045.png new file mode 100644 index 0000000..22ca738 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_045.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_046.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_046.png new file mode 100644 index 0000000..ced9409 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_046.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_047.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_047.png new file mode 100644 index 0000000..888c2a5 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_047.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_048.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_048.png new file mode 100644 index 0000000..a7eac37 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_048.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_049.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_049.png new file mode 100644 index 0000000..cf97ef2 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_049.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_1.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_1.png new file mode 100644 index 0000000..a6acf9b Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_1.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_2.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_2.png new file mode 100644 index 0000000..e5706fd Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_2.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_3.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_3.png new file mode 100644 index 0000000..6f01a2c Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_3.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_4.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_4.png new file mode 100644 index 0000000..31585a3 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_4.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_5.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_5.png new file mode 100644 index 0000000..ca7a771 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_5.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_6.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_6.png new file mode 100644 index 0000000..8ca7d74 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_6.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_7.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_7.png new file mode 100644 index 0000000..c522107 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_7.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_8.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_8.png new file mode 100644 index 0000000..e01f5bf Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_8.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_9.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_9.png new file mode 100644 index 0000000..08f1bbd Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/2D_SpriteShape_9.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/ClosedShapeProfile.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/ClosedShapeProfile.png new file mode 100644 index 0000000..46b1d6d Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/ClosedShapeProfile.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/OpenShapeProfile.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/OpenShapeProfile.png new file mode 100644 index 0000000..e30bb88 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/OpenShapeProfile.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/PropertyImage1.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/PropertyImage1.png new file mode 100644 index 0000000..a55e655 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/PropertyImage1.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/UpdatedEditSpline_2019-3.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/UpdatedEditSpline_2019-3.png new file mode 100644 index 0000000..884816a Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/UpdatedEditSpline_2019-3.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/enable_tangents.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/enable_tangents.png new file mode 100644 index 0000000..f78c3d9 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/enable_tangents.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-AngleRange.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-AngleRange.png new file mode 100644 index 0000000..6dcfefe Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-AngleRange.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-ClosedShapeSquare.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-ClosedShapeSquare.png new file mode 100644 index 0000000..5cfd469 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-ClosedShapeSquare.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-Collider.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-Collider.png new file mode 100644 index 0000000..c584521 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-Collider.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-ColliderOptionsDisable.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-ColliderOptionsDisable.png new file mode 100644 index 0000000..169afdd Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-ColliderOptionsDisable.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-ColliderwOptions.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-ColliderwOptions.png new file mode 100644 index 0000000..10f2b22 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-ColliderwOptions.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-EditSpline.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-EditSpline.png new file mode 100644 index 0000000..5aeac9a Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-EditSpline.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSControllerCP.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSControllerCP.png new file mode 100644 index 0000000..b9454c6 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSControllerCP.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSControllerCollider.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSControllerCollider.png new file mode 100644 index 0000000..999bc11 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSControllerCollider.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSControllerSettings.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSControllerSettings.png new file mode 100644 index 0000000..c7c683b Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSControllerSettings.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSProfile.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSProfile.png new file mode 100644 index 0000000..a06b0e5 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-SSProfile.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-UpdatedEditSpline.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-UpdatedEditSpline.png new file mode 100644 index 0000000..efdf9a2 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-UpdatedEditSpline.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-WorkingExam.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-WorkingExam.png new file mode 100644 index 0000000..da6d71a Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-WorkingExam.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-shortcuts.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-shortcuts.png new file mode 100644 index 0000000..d6626c2 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/images/v1.1-shortcuts.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/index.md b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/index.md new file mode 100644 index 0000000..5443400 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Documentation~/index.md @@ -0,0 +1,39 @@ +# 2D Sprite Shape + +## Overview + +The __Sprite Shape__ is a flexible and powerful world building Asset that features Sprite tiling along a shape's outline that automatically deforms and swaps Sprites based on the angle of the outline. Additionally, you can assign a Fill texture to a Sprite Shape to create filled shapes with tiled textures as backgrounds or other large level-building props. + +The following are examples of Sprite Shapes used to construct different parts of various levels. + +![](images/2D_SpriteShape_1.png) + +![](images/2D_SpriteShape_2.png) + +![](images/2D_SpriteShape_3.png) + + + +Sprite Shapes comprise of two parts - the [Sprite Shape Profile](SSProfile.md) Asset, and the [Sprite Shape Controller](SSController.md) component. The Sprite Shape Profile contains the angle settings and Sprites used by the Sprite Shape, and you edit the Sprite Shape's outline with the Sprite Shape Controller component. + +## Importing Sprites for Sprite Shapes + +We recommend using the following settings when importing Sprites for a Sprite Shape: + +1. [Texture Type](https://docs.unity3d.com/Manual/TextureTypes.html#Sprite) - Set this to __Sprite (2D and UI)__. Other texture types are not supported for Sprite Shapes. +2. __Sprite Mode__ - Set this to __Single__ if the texture contains only a single Sprite. +3. __Mesh Type__ - Set this to __Full Rect__. + +## Sprite Shape Workflow + +Create __Sprite Shapes__ in following the steps: + +1. Create a __Sprite Shape Profile__ from the main menu (menu: __Assets > Create > Sprite Shape Profile__). Select from the two available options: + - [Open Shape](SSProfile.html#open-shape) + - [Closed Shape](SSProfile.html#closed-shape) +2. Create [Angle Ranges](SSProfile.html#creating-angle-ranges) and [assign Sprites](SSProfile.html#assigning-sprites) in the __Sprite Shape Profile__. +3. Drag the __Sprite Shape Profile__ into the Scene to automatically generate a __Sprite Shape__ GameObject based on that Profile. + - You can create a Sprite Shape GameObject without a Profile from the main menu (menu: __GameObject > 2D Object > Sprite Shape__). Then select a Sprite Shape Profile in the __Sprite Shape Controller__'s __Profile__ settings. The same Profile can be used by multiple Sprite Shapes. +4. Edit the outline of the Sprite Shape with the [Sprite Shape Controller](SSController.md) component settings. +5. Enable [Physics2D](https://docs.unity3d.com/Manual/class-Physics2DManager.html) interactions for your Sprite Shapes by attaching a [Collider](SSCollision.md) component. + diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor.meta new file mode 100644 index 0000000..d0a45fe --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4103ad8b83780496d93e0fabf89b806e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeController.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeController.cs new file mode 100644 index 0000000..47e6ed2 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeController.cs @@ -0,0 +1,400 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.U2D; + +namespace UnityEditor.U2D.SpriteShape +{ + public interface IAngleRangeCache + { + List angleRanges { get; } + int selectedIndex { get; set; } + float previewAngle { get; set; } + void RegisterUndo(string name); + } + + public class AngleRangeController + { + public event Action selectionChanged = () => { }; + public IAngleRangeCache cache { get; set; } + public IAngleRangeView view { get; set; } + public float angleOffset { get; set; } + public float radius { get; set; } + public Rect rect { get; set; } + public bool snap { get; set; } + public Color gradientMin { get; set; } + public Color gradientMid { get; set; } + public Color gradientMax { get; set; } + + public AngleRange selectedAngleRange + { + get + { + Debug.Assert(cache != null); + + AngleRange angleRange = null; + + if (cache.selectedIndex >= 0 && cache.selectedIndex < cache.angleRanges.Count) + return cache.angleRanges[cache.selectedIndex]; + + return angleRange; + } + } + + private AngleRange hoveredAngleRange + { + get + { + Debug.Assert(cache != null); + Debug.Assert(view != null); + + AngleRange angleRange = null; + + if (view.hoveredRangeIndex >= 0 && view.hoveredRangeIndex < cache.angleRanges.Count) + return cache.angleRanges[view.hoveredRangeIndex]; + + return angleRange; + } + } + + public void OnGUI() + { + Debug.Assert(cache != null); + + view.SetupLayout(rect, angleOffset, radius); + + DoAngleRanges(); + HandleSelectAngleRange(); + HandleCreateRange(); + HandlePreviewSelector(); + HandleRemoveRange(); + } + + private void DoAngleRanges() + { + var removeInvalid = false; + + if (view.IsActionTriggering(AngleRangeAction.ModifyRange)) + cache.RegisterUndo("Modify Range"); + + if (view.IsActionFinishing(AngleRangeAction.ModifyRange)) + removeInvalid = true; + + var index = 0; + foreach (var angleRange in cache.angleRanges) + { + var start = angleRange.start; + var end = angleRange.end; + var isSelected = selectedAngleRange != null && selectedAngleRange == angleRange; + + if (view.DoAngleRange(index, rect, radius, angleOffset, ref start, ref end, snap, !isSelected, gradientMin, gradientMid, gradientMax)) + SetRange(angleRange, start, end); + + ++index; + } + + if (removeInvalid) + RemoveInvalidRanges(); + } + + public void RemoveInvalidRanges() + { + var toDelete = new List(); + + foreach (var angleRange in cache.angleRanges) + { + var start = angleRange.start; + var end = angleRange.end; + + if (start >= end) + toDelete.Add(angleRange); + } + + foreach (var angleRange in toDelete) + cache.angleRanges.Remove(angleRange); + + if (toDelete.Count > 0) + { + SetSelectedIndexFromPreviewAngle(); + view.Repaint(); + } + } + + private void HandleSelectAngleRange() + { + int newSelected; + if (view.DoSelectAngleRange(cache.selectedIndex, out newSelected)) + { + cache.RegisterUndo("Select Angle Range"); + cache.previewAngle = view.GetAngleFromPosition(rect, angleOffset); + SelectIndex(newSelected); + } + + if (view.IsActionActive(AngleRangeAction.SelectRange)) + { + if (hoveredAngleRange == null) + return; + + view.DrawAngleRangeOutline(rect, hoveredAngleRange.start, hoveredAngleRange.end, angleOffset, radius); + } + } + + private void HandleCreateRange() + { + if (!view.IsActionActive(AngleRangeAction.CreateRange)) + return; + + var angle = view.GetAngleFromPosition(rect, angleOffset); + var start = 0f; + var end = 0f; + var canCreate = GetNewRangeBounds(angle, out start, out end); + + if (canCreate && view.DoCreateRange(rect, radius, angleOffset, start, end)) + { + CreateRangeAtAngle(angle); + cache.previewAngle = angle; + SetSelectedIndexFromPreviewAngle(); + } + } + + private void HandlePreviewSelector() + { + if (view.IsActionTriggering(AngleRangeAction.ModifySelector)) + cache.RegisterUndo("Set Preview Angle"); + + float newAngle; + if (view.DoSelector(rect, angleOffset, radius, cache.previewAngle, out newAngle)) + { + if (selectedAngleRange == null) + newAngle = Mathf.Repeat(newAngle + 180f, 360f) - 180f; + + cache.previewAngle = newAngle; + SetSelectedIndexFromPreviewAngle(); + } + } + + private void SetSelectedIndexFromPreviewAngle() + { + var index = SpriteShapeEditorUtility.GetRangeIndexFromAngle(cache.angleRanges, cache.previewAngle); + SelectIndex(index); + } + + private void SelectIndex(int index) + { + view.RequestFocusIndex(index); + + if (cache.selectedIndex == index) + return; + + cache.selectedIndex = index; + selectionChanged(); + } + + private void ClampPreviewAngle(float start, float end, float prevStart, float prevEnd) + { + var angle = cache.previewAngle; + + if (prevStart < start) + { + var a1 = Mathf.Repeat(angle - prevStart, 360f); + var a2 = Mathf.Repeat(angle - start, 360f); + + if (a1 < a2) + angle = Mathf.Min(start, end); + } + else if (prevEnd > end) + { + var a1 = Mathf.Repeat(prevEnd - angle, 360f); + var a2 = Mathf.Repeat(end - angle, 360f); + + if (a1 < a2) + angle = Mathf.Max(start, end); + } + + cache.previewAngle = angle; + } + + private void HandleRemoveRange() + { + if (view.DoRemoveRange()) + { + cache.RegisterUndo("Remove Range"); + cache.angleRanges.RemoveAt(cache.selectedIndex); + SelectIndex(-1); + } + } + + public void CreateRange() + { + CreateRangeAtAngle(cache.previewAngle); + } + + private void CreateRangeAtAngle(float angle) + { + var start = 0f; + var end = 0f; + + if (GetNewRangeBounds(angle, out start, out end)) + { + cache.RegisterUndo("Create Range"); + + var angleRange = new AngleRange(); + angleRange.start = start; + angleRange.end = end; + + cache.angleRanges.Add(angleRange); + + ValidateRange(angleRange); + SetSelectedIndexFromPreviewAngle(); + } + } + + public void SetRange(AngleRange angleRange, float start, float end) + { + var prevStart = angleRange.start; + var prevEnd = angleRange.end; + + angleRange.start = start; + angleRange.end = end; + + ValidateRange(angleRange, prevStart, prevEnd); + + if (angleRange == selectedAngleRange) + ClampPreviewAngle(start, end, prevStart, prevEnd); + } + + private bool GetNewRangeBounds(float angle, out float emptyRangeStart, out float emptyRangeEnd) + { + angle = Mathf.Repeat(angle + 180f, 360f) - 180f; + + emptyRangeStart = float.MinValue; + emptyRangeEnd = float.MaxValue; + + if (GetAngleRangeAt(angle) != null) + return false; + + FindMinMax(out emptyRangeEnd, out emptyRangeStart); + + if (angle < emptyRangeStart) + emptyRangeStart -= 360f; + + if (angle > emptyRangeEnd) + emptyRangeEnd += 360f; + + foreach (var angleRange in cache.angleRanges) + { + var start = angleRange.start; + var end = angleRange.end; + + if (angle > end) + emptyRangeStart = Mathf.Max(emptyRangeStart, end); + + if (angle < start) + emptyRangeEnd = Mathf.Min(emptyRangeEnd, start); + } + + var rangeLength = emptyRangeEnd - emptyRangeStart; + + if (rangeLength > 90f) + { + emptyRangeStart = Mathf.Max(angle - 45f, emptyRangeStart); + emptyRangeEnd = Mathf.Min(angle + 45f, emptyRangeEnd); + } + + return true; + } + + private AngleRange GetAngleRangeAt(float angle) + { + foreach (var angleRange in cache.angleRanges) + { + var start = angleRange.start; + var end = angleRange.end; + var range = end - start; + + var angle2 = Mathf.Repeat(angle - start, 360f); + + if (angle2 >= 0f && angle2 <= range) + return angleRange; + } + + return null; + } + + private void FindMinMax(out float min, out float max) + { + min = float.MaxValue; + max = float.MinValue; + + foreach (var angleRange in cache.angleRanges) + { + min = Mathf.Min(angleRange.start, min); + max = Mathf.Max(angleRange.end, max); + } + } + + private void ValidateRange(AngleRange range) + { + ValidateRange(range, range.start, range.end); + } + + private void ValidateRange(AngleRange angleRange, float prevStart, float prevEnd) + { + var start = angleRange.start; + var end = angleRange.end; + + foreach (var otherRange in cache.angleRanges) + { + var otherStart = otherRange.start; + var otherEnd = otherRange.end; + + if (otherRange == angleRange) + { + if ((start > 180f && end > 180f) || (start < -180f && end < -180f)) + { + start = Mathf.Repeat(start + 180f, 360f) - 180f; + end = Mathf.Repeat(end + 180f, 360f) - 180f; + } + + otherStart = start + 360f; + otherEnd = end - 360f; + } + + ValidateRangeStartEnd(ref start, ref end, prevStart, prevEnd, otherStart, otherEnd); + } + + angleRange.start = start; + angleRange.end = end; + } + + private void ValidateRangeStartEnd(ref float start, ref float end, float prevStart, float prevEnd, float otherStart, float otherEnd) + { + var min = Mathf.Min(start, otherStart); + var max = Mathf.Max(end, otherEnd); + + start -= min; + end -= min; + otherStart -= min; + otherEnd -= min; + prevStart -= min; + prevEnd -= min; + + if (prevEnd != end) + end = Mathf.Clamp(end, start, otherStart >= start ? otherStart : 360f); + + start += min - max; + end += min - max; + otherStart += min - max; + otherEnd += min - max; + prevStart += min - max; + prevEnd += min - max; + + if (prevStart != start) + start = Mathf.Clamp(start, otherEnd <= end ? otherEnd : -360f, end); + + start += max; + end += max; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeController.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeController.cs.meta new file mode 100644 index 0000000..c4c81c6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeController.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a31658f0a7411474fa4e2be61c4f9df2 +timeCreated: 1503758178 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeGUI.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeGUI.cs new file mode 100644 index 0000000..4e06146 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeGUI.cs @@ -0,0 +1,137 @@ +using UnityEditor; +using UnityEngine; +using UnityEditor.Sprites; +using System.Collections; +using System.Collections.Generic; + +namespace UnityEditor.U2D +{ + public class AngleRangeGUI + { + public static readonly int kLeftHandleHashCode = "LeftHandle".GetHashCode(); + public static readonly int kRightHandleHashCode = "RightHandle".GetHashCode(); + public const float kRangeWidth = 10f; + + public static void AngleRangeField(Rect rect, ref float start, ref float end, float angleOffset, float radius, bool snap, bool drawLine, bool drawCircle, Color rangeColor) + { + var leftId = GUIUtility.GetControlID(kLeftHandleHashCode, FocusType.Passive); + var rightId = GUIUtility.GetControlID(kRightHandleHashCode, FocusType.Passive); + AngleRangeField(rect, leftId, rightId, ref start, ref end, angleOffset, radius, snap, drawLine, drawCircle, rangeColor); + } + + public static void AngleRangeField(Rect rect, int leftHandleID, int rightHandleID, ref float start, ref float end, float angleOffset, float radius, bool snap, bool drawLine, bool drawCircle, Color rangeColor) + { + Color activeColor = Handles.color; + + if (Event.current.type == EventType.Repaint) + { + float range = end - start; + + Color color = Handles.color; + Handles.color = rangeColor; + if (range < 0f) + Handles.color = Color.red; + + SpriteShapeHandleUtility.DrawSolidArc(rect.center, Vector3.forward, Quaternion.AngleAxis(start + angleOffset, Vector3.forward) * Vector3.right, range, radius, kRangeWidth); + Handles.color = color; + } + + EditorGUI.BeginChangeCheck(); + + float handleSize = 15f; + + start = AngleField(rect, leftHandleID, start, angleOffset, new Vector2(-3.5f, -7.5f), start + angleOffset + 90f, handleSize, radius, snap, drawLine, drawCircle, SpriteShapeHandleUtility.RangeLeftCap); + + if (EditorGUI.EndChangeCheck()) + start = Mathf.Clamp(start, end - 360f, end); + + EditorGUI.BeginChangeCheck(); + + end = AngleField(rect, rightHandleID, end, angleOffset, new Vector2(3.5f, -7.5f), end + angleOffset + 90f, handleSize, radius, snap, drawLine, false, SpriteShapeHandleUtility.RangeRightCap); + + if (EditorGUI.EndChangeCheck()) + end = Mathf.Clamp(end, end, start + 360f); + + Handles.color = activeColor; + } + + public static void AngleRangeField(Rect rect, SerializedProperty startProperty, SerializedProperty endProperty, float angleOffset, float radius, bool snap, bool drawLine, bool drawCircle, Color rangeColor) + { + var start = startProperty.floatValue; + var end = endProperty.floatValue; + + EditorGUI.BeginChangeCheck(); + AngleRangeField(rect, ref start, ref end, angleOffset, radius, snap, drawLine, drawCircle, rangeColor); + if (EditorGUI.EndChangeCheck()) + { + startProperty.floatValue = start; + endProperty.floatValue = end; + } + } + + public static void AngleField(int id, SerializedProperty property, float angleOffset, Vector2 handleOffset, float handleAngle, float handleSize, float radius, bool snap, bool drawLine, bool drawCircle, Handles.CapFunction drawCapFunction) + { + EditorGUI.BeginChangeCheck(); + float value = AngleField(id, property.floatValue, angleOffset, handleOffset, handleAngle, handleSize, radius, snap, drawLine, drawCircle, drawCapFunction); + if (EditorGUI.EndChangeCheck()) + { + property.floatValue = value; + } + } + + public static void AngleField(Rect r, int id, SerializedProperty property, float angleOffset, Vector2 handleOffset, float handleAngle, float handleSize, float radius, bool snap, bool drawLine, bool drawCircle, Handles.CapFunction drawCapFunction) + { + EditorGUI.BeginChangeCheck(); + float value = AngleField(r, id, property.floatValue, angleOffset, handleOffset, handleAngle, handleSize, radius, snap, drawLine, drawCircle, drawCapFunction); + if (EditorGUI.EndChangeCheck()) + { + property.floatValue = value; + } + } + + public static float AngleField(int id, float angle, float angleOffset, Vector2 handleOffset, float handleAngle, float radius, float handleSize, bool snap, bool drawLine, bool drawCircle, Handles.CapFunction drawCapFunction) + { + Rect rect = EditorGUILayout.GetControlRect(false, radius * 2f); + return AngleField(rect, id, angle, angleOffset, handleOffset, handleAngle, radius, handleSize, snap, drawLine, drawCircle, drawCapFunction); + } + + public static float AngleField(Rect rect, int id, float angle, float angleOffset, Vector2 handleOffset, float handleAngle, float handleSize, float radius, bool snap, bool drawLine, bool drawCircle, Handles.CapFunction drawCapFunction) + { + float offsetedAngle = angle + angleOffset; + Vector2 pos = new Vector2(Mathf.Cos(offsetedAngle * Mathf.Deg2Rad), Mathf.Sin(offsetedAngle * Mathf.Deg2Rad)) * radius + rect.center; + + if (Event.current.type == EventType.Repaint) + { + if (drawCircle) + Handles.DrawWireDisc(rect.center, Vector3.forward, radius); + + if (drawLine) + Handles.DrawLine(rect.center, pos); + } + + if (GUI.enabled) + { + EditorGUI.BeginChangeCheck(); + + Quaternion rotation = Quaternion.AngleAxis(handleAngle, Vector3.forward); + Vector2 posNew = SpriteShapeHandleUtility.Slider2D(id, pos, rotation * handleOffset, rotation, handleSize, drawCapFunction); + + if (EditorGUI.EndChangeCheck()) + { + Vector2 v1 = pos - rect.center; + Vector2 v2 = posNew - rect.center; + + float angleDirection = Mathf.Sign(Vector3.Dot(Vector3.forward, Vector3.Cross(v1, v2))); + float angleIncrement = Vector2.Angle(v1, v2); + + angle += angleIncrement * angleDirection; + + if (snap) + angle = Mathf.RoundToInt(angle); + } + } + + return angle; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeGUI.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeGUI.cs.meta new file mode 100644 index 0000000..6bd8528 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeGUI.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c5b7a6d3ca9063e4faeefb6613a86c7c +timeCreated: 1503758178 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeView.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeView.cs new file mode 100644 index 0000000..0957d7a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeView.cs @@ -0,0 +1,336 @@ +using UnityEditor; +using UnityEngine; +using UnityEditor.Sprites; +using System.Collections; +using System.Collections.Generic; + +namespace UnityEditor.U2D +{ + public enum AngleRangeAction + { + SelectRange, + ModifyRange, + CreateRange, + ModifySelector, + RemoveRange, + } + + public interface IAngleRangeView + { + int hoveredRangeIndex { get; } + + void RequestFocusIndex(int index); + float GetAngleFromPosition(Rect rect, float angleOffset); + void Repaint(); + void SetupLayout(Rect rect, float angleOffset, float radius); + bool DoAngleRange(int index, Rect rect, float radius, float angleOffset, ref float start, ref float end, bool snap, bool disabled, Color gradientMin, Color gradientMid, Color gradientMax); + bool DoSelectAngleRange(int currentSelected, out int newSelected); + bool DoCreateRange(Rect rect, float radius, float angleOffset, float start, float end); + void DoCreateRangeTooltip(); + bool DoSelector(Rect rect, float angleOffset, float radius, float angle, out float newAngle); + bool DoRemoveRange(); + bool IsActionActive(AngleRangeAction action); + bool IsActionTriggering(AngleRangeAction action); + bool IsActionFinishing(AngleRangeAction action); + void DrawAngleRangeOutline(Rect rect, float start, float end, float angleOffset, float radius); + } + + public class AngleRangeView : IAngleRangeView + { + const string kDeleteCommandName = "Delete"; + const string kSoftDeleteCommandName = "SoftDelete"; + static readonly int kAngleRangeHashCode = "AngleRange".GetHashCode(); + static readonly int kCreateRangeHashCode = "CreateRange".GetHashCode(); + static readonly int kSelectorHashCode = "Selector".GetHashCode(); + + private static Color kHightlightColor = new Color(0.25f, 0.5f, 1.0f); + private static Color kNoKeboardFocusColor = new Color(0.3f, 0.5f, 0.65f); + + private static class Contents + { + public static readonly GUIContent addRangeTooltip = new GUIContent("", "Click to add a new range"); + } + + private int m_FocusedRangeControlID = -1; + private int m_HoveredRangeIndex = -1; + private int m_HoveredRangeID = -1; + private int m_HoveredHandleID = -1; + private int m_HotHandleID = -1; + private int m_CreateRangeControlID = -1; + private int m_SelectorControlID = -1; + private int m_RequestFocusIndex = -1; + + public int hoveredRangeIndex { get { return m_HoveredRangeIndex; } } + + public void RequestFocusIndex(int index) + { + GUIUtility.keyboardControl = 0; + m_RequestFocusIndex = index; + } + + public float GetAngleFromPosition(Rect rect, float angleOffset) + { + return Mathf.RoundToInt(SpriteShapeHandleUtility.PosToAngle(Event.current.mousePosition, rect.center, -angleOffset)); + } + + public void Repaint() + { + HandleUtility.Repaint(); + } + + public void SetupLayout(Rect rect, float angleOffset, float radius) + { + m_CreateRangeControlID = GUIUtility.GetControlID(kCreateRangeHashCode, FocusType.Passive); + m_SelectorControlID = GUIUtility.GetControlID(kSelectorHashCode, FocusType.Passive); + + LayoutCreateRange(rect, angleOffset, radius); + + if (Event.current.type == EventType.Layout) + { + m_HoveredRangeIndex = -1; + m_HoveredRangeID = -1; + m_HoveredHandleID = -1; + + if (GUIUtility.hotControl == 0) + { + m_HotHandleID = -1; + } + } + } + + private void LayoutCreateRange(Rect rect, float angleOffset, float radius) + { + if (Event.current.type == EventType.Layout) + { + var mousePosition = Event.current.mousePosition; + var distance = SpriteShapeHandleUtility.DistanceToArcWidth(mousePosition, rect.center, 0f, 360f, radius, AngleRangeGUI.kRangeWidth, angleOffset); + + HandleUtility.AddControl(m_CreateRangeControlID, distance); + } + } + + public bool DoAngleRange(int index, Rect rect, float radius, float angleOffset, ref float start, ref float end, bool snap, bool disabled, Color gradientMin, Color gradientMid, Color gradientMax) + { + var changed = false; + + var controlID = GUIUtility.GetControlID(kAngleRangeHashCode, FocusType.Passive); + var leftHandleId = GUIUtility.GetControlID(AngleRangeGUI.kLeftHandleHashCode, FocusType.Passive); + var rightHandleId = GUIUtility.GetControlID(AngleRangeGUI.kRightHandleHashCode, FocusType.Passive); + + if (Event.current.type == EventType.Layout) + { + var distance = SpriteShapeHandleUtility.DistanceToArcWidth(Event.current.mousePosition, rect.center, start, end, radius, AngleRangeGUI.kRangeWidth, angleOffset); + HandleUtility.AddControl(controlID, distance); + + if (HandleUtility.nearestControl == controlID) + { + m_HoveredRangeIndex = index; + m_HoveredRangeID = controlID; + } + } + + if (IsActionTriggering(AngleRangeAction.ModifyRange)) + { + m_HotHandleID = m_HoveredHandleID; + GrabKeyboardFocus(controlID); + } + + if (m_RequestFocusIndex == index) + { + GrabKeyboardFocus(controlID); + + if (Event.current.type == EventType.Repaint) + m_RequestFocusIndex = -1; + } + + using (new EditorGUI.DisabledScope(disabled)) + { + var midAngle = (end - start) * 0.5f + start; + var t = 2f * (midAngle + 180f) / 360f; + var color = gradientMin; + + if (t < 1f) + color = Color.Lerp(gradientMin, gradientMid, t); + else + color = Color.Lerp(gradientMid, gradientMax, t - 1f); + + if (!disabled) + { + color = kNoKeboardFocusColor; + + if (HasKeyboardFocus()) + color = kHightlightColor; + } + + EditorGUI.BeginChangeCheck(); + + AngleRangeGUI.AngleRangeField(rect, leftHandleId, rightHandleId, ref start, ref end, angleOffset, radius, snap, false, false, color); + + changed = EditorGUI.EndChangeCheck(); + } + + //Extra Layout from handles + if (Event.current.type == EventType.Layout && + (HandleUtility.nearestControl == leftHandleId || HandleUtility.nearestControl == rightHandleId)) + { + m_HoveredRangeIndex = index; + m_HoveredRangeID = controlID; + m_HoveredHandleID = HandleUtility.nearestControl; + } + + return changed; + } + + public bool DoSelectAngleRange(int currentSelected, out int newSelected) + { + newSelected = currentSelected; + + if (IsActionTriggering(AngleRangeAction.SelectRange)) + { + newSelected = m_HoveredRangeIndex; + GUI.changed = true; + Repaint(); + + HandleUtility.nearestControl = m_SelectorControlID; + + return true; + } + + return false; + } + + public bool DoCreateRange(Rect rect, float radius, float angleOffset, float start, float end) + { + if (IsActionTriggering(AngleRangeAction.CreateRange)) + { + GUI.changed = true; + HandleUtility.nearestControl = m_SelectorControlID; + return true; + } + + if (IsActionActive(AngleRangeAction.CreateRange)) + { + DrawAngleRangeOutline(rect, start, end, angleOffset, radius); + + if (Event.current.type == EventType.MouseMove) + Repaint(); + } + + return false; + } + + public void DoCreateRangeTooltip() + { + if (IsActionActive(AngleRangeAction.CreateRange)) + { + var mousePosition = Event.current.mousePosition; + EditorGUI.LabelField(new Rect(mousePosition, new Vector2(1f, 20f)), Contents.addRangeTooltip); + } + } + + public bool DoSelector(Rect rect, float angleOffset, float radius, float angle, out float newAngle) + { + EditorGUI.BeginChangeCheck(); + newAngle = AngleRangeGUI.AngleField(rect, m_SelectorControlID, angle, angleOffset, Vector2.down * 7.5f, angle, 15f, radius - AngleRangeGUI.kRangeWidth, true, true, false, SpriteShapeHandleUtility.PlayHeadCap); + return EditorGUI.EndChangeCheck(); + } + + public bool DoRemoveRange() + { + EventType eventType = Event.current.type; + + if (IsActionTriggering(AngleRangeAction.RemoveRange)) + { + Event.current.Use(); + GUI.changed = true; + + return true; + } + + return false; + } + + public bool IsActionActive(AngleRangeAction action) + { + if (GUIUtility.hotControl != 0) + return false; + + if (action == AngleRangeAction.SelectRange) + return HandleUtility.nearestControl == m_HoveredRangeID; + + if (action == AngleRangeAction.ModifyRange) + return HandleUtility.nearestControl == m_HoveredHandleID; + + if (action == AngleRangeAction.CreateRange) + return HandleUtility.nearestControl == m_CreateRangeControlID; + + if (action == AngleRangeAction.ModifySelector) + return HandleUtility.nearestControl == m_SelectorControlID; + + if (action == AngleRangeAction.RemoveRange) + return HasKeyboardFocus(); + + return false; + } + + public bool IsActionHot(AngleRangeAction action) + { + if (GUIUtility.hotControl == 0) + return false; + + if (action == AngleRangeAction.ModifyRange) + return GUIUtility.hotControl == m_HotHandleID; + + return false; + } + + public bool IsActionTriggering(AngleRangeAction action) + { + if (!IsActionActive(action)) + return false; + + EventType eventType = Event.current.type; + + if (action == AngleRangeAction.RemoveRange) + { + if ((eventType == EventType.ValidateCommand || eventType == EventType.ExecuteCommand) + && (Event.current.commandName == kSoftDeleteCommandName || Event.current.commandName == kDeleteCommandName)) + { + if (eventType == EventType.ExecuteCommand) + return true; + + Event.current.Use(); + } + + return false; + } + + return eventType == EventType.MouseDown && Event.current.button == 0; + } + + public bool IsActionFinishing(AngleRangeAction action) + { + if (!IsActionHot(action)) + return false; + + return (Event.current.type == EventType.MouseUp && Event.current.button == 0) || Event.current.type == EventType.Ignore; + } + + public void DrawAngleRangeOutline(Rect rect, float start, float end, float angleOffset, float radius) + { + if (Event.current.type == EventType.Repaint) + SpriteShapeHandleUtility.DrawRangeOutline(start, end, angleOffset, rect.center, radius, AngleRangeGUI.kRangeWidth - 1f); + } + + private void GrabKeyboardFocus(int controlID) + { + m_FocusedRangeControlID = controlID; + GUIUtility.keyboardControl = controlID; + } + + private bool HasKeyboardFocus() + { + return GUIUtility.keyboardControl == m_FocusedRangeControlID; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeView.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeView.cs.meta new file mode 100644 index 0000000..0fae2a0 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/AngleRangeView.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 56b5f4e1cb3304201b11247e0fb1eec7 +timeCreated: 1503758178 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/ContextMenu.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/ContextMenu.cs new file mode 100644 index 0000000..8ceae92 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/ContextMenu.cs @@ -0,0 +1,43 @@ +using UnityEngine; +using UnityEngine.U2D; +using UnityEditor.U2D.SpriteShape; + +namespace UnityEditor.U2D +{ + public class ContextMenu + { + private static AngleRange CreateAngleRange(float start, float end, int order) + { + AngleRange angleRange = new AngleRange(); + + angleRange.start = start; + angleRange.end = end; + angleRange.order = order; + + return angleRange; + } + + [MenuItem("Assets/Create/Sprite Shape Profile/Open Shape", false, 358)] + public static void CreateNewSpriteStrip() + { + UnityEngine.U2D.SpriteShape newSpriteShape = SpriteShapeEditorUtility.CreateSpriteShapeAsset(); + newSpriteShape.angleRanges.Add(CreateAngleRange(-180.0f, 180.0f, 0)); + } + + [MenuItem("Assets/Create/Sprite Shape Profile/Closed Shape", false, 359)] + public static void CreateNewSpriteShape() + { + UnityEngine.U2D.SpriteShape newSpriteShape = SpriteShapeEditorUtility.CreateSpriteShapeAsset(); + newSpriteShape.angleRanges.Add(CreateAngleRange(-45.0f, 45.0f, 4)); + newSpriteShape.angleRanges.Add(CreateAngleRange(-135.0f, -45.0f, 3)); + newSpriteShape.angleRanges.Add(CreateAngleRange(135.0f, 225.0f, 2)); + newSpriteShape.angleRanges.Add(CreateAngleRange(45.0f, 135.0f, 1)); + } + + [MenuItem("GameObject/2D Object/Sprite Shape")] + internal static void CreateSpriteShapeEmpty() + { + SpriteShapeEditorUtility.SetShapeFromAsset(SpriteShapeEditorUtility.CreateSpriteShapeControllerFromSelection()); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/ContextMenu.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/ContextMenu.cs.meta new file mode 100644 index 0000000..4a52297 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/ContextMenu.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 98a4cc9d9dadb844e8669b0665d53897 +timeCreated: 1503992201 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/EditorSpriteGUIUtility.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/EditorSpriteGUIUtility.cs new file mode 100644 index 0000000..51b6a87 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/EditorSpriteGUIUtility.cs @@ -0,0 +1,236 @@ +using UnityEditor; +using UnityEngine; +using UnityEditor.Sprites; +using System.Collections; +using System.Collections.Generic; + +namespace UnityEditor.U2D +{ + public static class EditorSpriteGUIUtility + { + public enum FitMode + { + BestFit, + FitHorizontal, + FitVertical, + Fill, + Tiled + } + + private static Material s_SpriteMaterial; + public static Material spriteMaterial + { + get + { + if (s_SpriteMaterial == null) + { + s_SpriteMaterial = new Material(Shader.Find("Hidden/InternalSpritesInspector")); + s_SpriteMaterial.hideFlags = HideFlags.DontSave; + } + s_SpriteMaterial.SetFloat("_AdjustLinearForGamma", PlayerSettings.colorSpace == ColorSpace.Linear ? 1.0f : 0.0f); + return s_SpriteMaterial; + } + } + + public static Texture GetOriginalSpriteTexture(Sprite sprite) + { + return UnityEditor.Sprites.SpriteUtility.GetSpriteTexture(sprite, false); + } + + public static Vector2[] GetOriginalSpriteUvs(Sprite sprite) + { + return UnityEditor.Sprites.SpriteUtility.GetSpriteUVs(sprite, false); + } + + public static void DrawSpriteInRectPrepare(Rect rect, Sprite sprite, FitMode fitMode, bool excludeBorders, bool forceQuad, Mesh mesh) + { + var vertices = new List(); + var uvs = new List(); + var indices = new List(); + mesh.Clear(); + + if (!sprite) + { + mesh.UploadMeshData(false); + return; + } + + Vector2 scale = Vector2.one; + Rect spriteRect = sprite.textureRect; + Vector2 bottomLeftBorderOffset = sprite.rect.position + new Vector2(sprite.border.x, sprite.border.y) - spriteRect.position; + Vector2 topRightBorderOffset = new Vector2(sprite.border.z, sprite.border.w) + (spriteRect.position + spriteRect.size) - (sprite.rect.position + sprite.rect.size); + + if (excludeBorders) + { + forceQuad = true; + spriteRect.position = spriteRect.position + bottomLeftBorderOffset; + spriteRect.size = spriteRect.size - bottomLeftBorderOffset - topRightBorderOffset; + } + + bool tiled = false; + + if (fitMode == FitMode.Tiled) + { + tiled = true; + forceQuad = true; + fitMode = FitMode.BestFit; + } + + if (fitMode == FitMode.BestFit) + { + float spriteRatio = spriteRect.width / spriteRect.height; + float frameRatio = rect.width / rect.height; + + if (spriteRatio < frameRatio) + fitMode = FitMode.FitVertical; + else + fitMode = FitMode.FitHorizontal; + } + + if (fitMode == FitMode.FitHorizontal) + scale = Vector2.one * (rect.width / spriteRect.width); + + if (fitMode == FitMode.FitVertical) + scale = Vector2.one * (rect.height / spriteRect.height); + + if (fitMode == FitMode.Fill) + { + scale.x = rect.width / spriteRect.width; + scale.y = rect.height / spriteRect.height; + } + + Texture spriteTexture = GetOriginalSpriteTexture(sprite); + if (spriteTexture == null) + return; + + if (forceQuad) + { + Vector2 uvScale = new Vector2(1f / spriteTexture.width, 1f / spriteTexture.height); + Vector2 uvPos = Vector2.Scale(spriteRect.position, uvScale); + Vector2 uvSize = Vector2.Scale(spriteRect.size, uvScale); + Vector2 uv0 = uvPos; + Vector2 uv1 = uvPos + Vector2.up * uvSize.y; + Vector2 uv2 = uvPos + Vector2.right * uvSize.x; + Vector2 uv3 = uvPos + uvSize; + Vector3 v0 = new Vector3(uv0.x * spriteTexture.width - spriteRect.position.x - spriteRect.width * 0.5f, uv0.y * spriteTexture.height - spriteRect.position.y - spriteRect.height * 0.5f, 0f); + Vector3 v1 = new Vector3(uv1.x * spriteTexture.width - spriteRect.position.x - spriteRect.width * 0.5f, uv1.y * spriteTexture.height - spriteRect.position.y - spriteRect.height * 0.5f, 0f); + Vector3 v2 = new Vector3(uv2.x * spriteTexture.width - spriteRect.position.x - spriteRect.width * 0.5f, uv2.y * spriteTexture.height - spriteRect.position.y - spriteRect.height * 0.5f, 0f); + Vector3 v3 = new Vector3(uv3.x * spriteTexture.width - spriteRect.position.x - spriteRect.width * 0.5f, uv3.y * spriteTexture.height - spriteRect.position.y - spriteRect.height * 0.5f, 0f); + v0 = Vector3.Scale(v0, scale); + v1 = Vector3.Scale(v1, scale); + v2 = Vector3.Scale(v2, scale); + v3 = Vector3.Scale(v3, scale); + + //TODO: Support vertical tiling when horizontal fitted + if (tiled && fitMode == FitMode.FitVertical) + { + Vector2 scaledRectSize = Vector2.Scale(rect.size, new Vector2(1f / scale.x, 1f / scale.y)); + float halfDistanceToFill = (scaledRectSize.x - spriteRect.width) * 0.5f; + int halfFillSegmentCount = (int)Mathf.Ceil(halfDistanceToFill / spriteRect.width); + int segmentCount = halfFillSegmentCount * 2 + 1; + int vertexCount = segmentCount * 4; + + vertices.Capacity = vertexCount; + uvs.Capacity = vertexCount; + indices.Capacity = vertexCount; + + Vector3 offset = Vector3.zero; + Vector3 offsetStep = Vector3.Scale(Vector3.right * spriteRect.width, scale); + + float distanceStep = spriteRect.width; + float distanceToFill = halfDistanceToFill + distanceStep; + + int vertexIndex = 0; + + for (int i = 0; i <= halfFillSegmentCount; ++i) + { + float t = Mathf.Clamp01(distanceToFill / spriteRect.width); + + uvs.Add(uv0); + uvs.Add(uv1); + uvs.Add(Vector3.Lerp(uv0, uv2, t)); + uvs.Add(Vector3.Lerp(uv1, uv3, t)); + + vertices.Add(v0 + offset); + vertices.Add(v1 + offset); + vertices.Add(Vector3.Lerp(v0, v2, t) + offset); + vertices.Add(Vector3.Lerp(v1, v3, t) + offset); + + indices.Add(vertexIndex); + indices.Add(vertexIndex + 2); + indices.Add(vertexIndex + 1); + indices.Add(vertexIndex + 2); + indices.Add(vertexIndex + 3); + indices.Add(vertexIndex + 1); + + vertexIndex += 4; + + if (i > 0) + { + uvs.Add(Vector2.Lerp(uv0, uv2, 1f - t)); + uvs.Add(Vector2.Lerp(uv1, uv3, 1f - t)); + uvs.Add(uv2); + uvs.Add(uv3); + + vertices.Add(Vector3.Lerp(v0, v2, 1f - t) - offset); + vertices.Add(Vector3.Lerp(v1, v3, 1f - t) - offset); + vertices.Add(v2 - offset); + vertices.Add(v3 - offset); + + indices.Add(vertexIndex); + indices.Add(vertexIndex + 2); + indices.Add(vertexIndex + 1); + indices.Add(vertexIndex + 2); + indices.Add(vertexIndex + 3); + indices.Add(vertexIndex + 1); + + vertexIndex += 4; + } + + offset += offsetStep; + distanceToFill -= distanceStep; + } + } + else + { + vertices.AddRange(new Vector3[] { v0, v1, v2, v3 }); + uvs.AddRange(new Vector2[] { uv0, uv1, uv2, uv3 }); + indices.AddRange(new int[] { 0, 2, 1, 2, 3, 1 }); + } + } + else + { + ushort[] triangles = sprite.triangles; + indices.Capacity = triangles.Length; + + for (int i = 0; i < triangles.Length; ++i) + indices.Add((int)triangles[i]); + + uvs.AddRange(GetOriginalSpriteUvs(sprite)); + vertices.Capacity = uvs.Count; + + for (int i = 0; i < uvs.Count; ++i) + { + Vector3 v = new Vector3(uvs[i].x * spriteTexture.width - spriteRect.position.x - spriteRect.width * 0.5f, uvs[i].y * spriteTexture.height - spriteRect.position.y - spriteRect.height * 0.5f, 0f); + vertices.Add(Vector3.Scale(v, scale)); + } + } + + mesh.SetVertices(vertices); + mesh.SetUVs(0, uvs); + mesh.SetTriangles(indices, 0); + mesh.UploadMeshData(false); + } + + public static void DrawMesh(Mesh mesh, Material material, Vector3 position, Quaternion rotation, Vector3 scale) + { + if (Event.current.type != EventType.Repaint) + return; + + Matrix4x4 matrix = new Matrix4x4(); + matrix.SetTRS(position, rotation, scale); + material.SetPass(0); + Graphics.DrawMeshNow(mesh, matrix); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/EditorSpriteGUIUtility.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/EditorSpriteGUIUtility.cs.meta new file mode 100644 index 0000000..ee15bfc --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/EditorSpriteGUIUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: aff60f81fc1eab749a82103779466d07 +timeCreated: 1503758178 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles.meta new file mode 100644 index 0000000..d342355 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15cbf89e8ba92694cb870a55b60f1b81 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/Shaders.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/Shaders.meta new file mode 100644 index 0000000..76d77ca --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2ba760cb26319f14f86529637445de30 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/Shaders/Sprites-Inspector.shader b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/Shaders/Sprites-Inspector.shader new file mode 100644 index 0000000..f742697 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/Shaders/Sprites-Inspector.shader @@ -0,0 +1,83 @@ +// Texture is forced to be in Gamma space regardless of the active ColorSpace. +Shader "Hidden/InternalSpritesInspector" +{ + Properties + { + [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} + _Color("Tint", Color) = (1, 1, 1, 1) + [MaterialToggle] PixelSnap("Pixel snap", Float) = 0 + } + + SubShader + { + Tags + { + "Queue" = "Transparent" + "IgnoreProjector" = "True" + "RenderType" = "Transparent" + "PreviewType" = "Plane" + "CanUseSpriteAtlas" = "True" + } + + Cull Off + Lighting Off + ZWrite Off + Fog{ Mode Off } + Blend SrcAlpha OneMinusSrcAlpha + + Pass + { + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile DUMMY PIXELSNAP_ON + #include "UnityCG.cginc" + + uniform bool _AdjustLinearForGamma; + + struct appdata_t + { + float4 vertex : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + struct v2f + { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + half2 texcoord : TEXCOORD0; + float2 clipUV : TEXCOORD1; + }; + + fixed4 _Color; + uniform float4x4 unity_GUIClipTextureMatrix; + + v2f vert(appdata_t IN) + { + float3 screenUV = UnityObjectToViewPos(IN.vertex); + v2f OUT; + OUT.vertex = UnityObjectToClipPos(IN.vertex); + OUT.texcoord = IN.texcoord; + OUT.color = IN.color * _Color; + OUT.clipUV = mul(unity_GUIClipTextureMatrix, float4(screenUV.xy, 0, 1.0)); + return OUT; + } + + sampler2D _MainTex; + sampler2D _GUIClipTexture; + + fixed4 frag(v2f IN) : COLOR + { + fixed4 col = tex2D(_MainTex, IN.texcoord); + fixed alpha = col.a; + if (_AdjustLinearForGamma) + col.rgb = LinearToGammaSpace(col.rgb); + col.a = alpha * tex2D(_GUIClipTexture, IN.clipUV).a; + return col * IN.color; + } + ENDCG + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/Shaders/Sprites-Inspector.shader.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/Shaders/Sprites-Inspector.shader.meta new file mode 100644 index 0000000..d1674d4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/Shaders/Sprites-Inspector.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 603d454d711fe784cba9ce08dd22b881 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_leftrange.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_leftrange.png new file mode 100644 index 0000000..b51dacc Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_leftrange.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_leftrange.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_leftrange.png.meta new file mode 100644 index 0000000..5d7b9e0 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_leftrange.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 9417efc47083f4a1598c1966a6345cdb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_playhead.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_playhead.png new file mode 100644 index 0000000..0216154 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_playhead.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_playhead.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_playhead.png.meta new file mode 100644 index 0000000..5e6b8de --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_playhead.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 9ea72647c24be493ba6f15a9cd2a24ae +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_rightrange.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_rightrange.png new file mode 100644 index 0000000..ce9a393 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_rightrange.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_rightrange.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_rightrange.png.meta new file mode 100644 index 0000000..08e2474 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Handles/ss_rightrange.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: ee5df01235032491c8b180741ea820fe +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons.meta new file mode 100644 index 0000000..b8c3c06 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 574ba49617df66b40a29fe7f0b185aab +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShape@64.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShape@64.png new file mode 100644 index 0000000..4c8cf48 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShape@64.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShape@64.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShape@64.png.meta new file mode 100644 index 0000000..78054c3 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShape@64.png.meta @@ -0,0 +1,107 @@ +fileFormatVersion: 2 +guid: 0a9a0f36a52ce7f4d813fbf5d8f76a1c +timeCreated: 1505457322 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 1 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShapeController@64.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShapeController@64.png new file mode 100644 index 0000000..0583e78 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShapeController@64.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShapeController@64.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShapeController@64.png.meta new file mode 100644 index 0000000..ecc9564 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Icons/SpriteShapeController@64.png.meta @@ -0,0 +1,107 @@ +fileFormatVersion: 2 +guid: d1508e1dc42abb745b24c8891a614d2a +timeCreated: 1505457322 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 1 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SceneDragAndDrop.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SceneDragAndDrop.cs new file mode 100644 index 0000000..4682b83 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SceneDragAndDrop.cs @@ -0,0 +1,244 @@ +using UnityEngine; +using UnityEngine.U2D; +using System.Collections.Generic; +using UnityEditor.Experimental.SceneManagement; +using UnityEditor.U2D.SpriteShape; +using Object = UnityEngine.Object; + +namespace UnityEditor.U2D +{ + [InitializeOnLoad] + public static class SceneDragAndDrop + { + static SceneDragAndDrop() + { +#if UNITY_2019_1_OR_NEWER + SceneView.duringSceneGui += OnSceneGUI; + EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI; +#else + SceneView.onSceneGUIDelegate += OnSceneGUI; +#endif + } + + static class Contents + { + public static readonly string createString = "Create Sprite Shape"; + } + + static List s_SceneDragObjects; + static DragType s_DragType; + enum DragType { NotInitialized, CreateMultiple } + + public delegate string ShowFileDialogDelegate(string title, string defaultName, string extension, string message, string defaultPath); + + static void OnSceneGUI(SceneView sceneView) + { + HandleSceneDrag(sceneView, Event.current, DragAndDrop.objectReferences, DragAndDrop.paths); + } + + public static GameObject Create(UnityEngine.U2D.SpriteShape shape, Vector3 position, SceneView sceneView) + { + string name = string.IsNullOrEmpty(shape.name) ? "New SpriteShapeController" : shape.name; + name = GameObjectUtility.GetUniqueNameForSibling(null, name); + GameObject go = new GameObject(name); + + SpriteShapeController shapeController = go.AddComponent(); + shapeController.spriteShape = shape; + go.transform.position = position; + go.hideFlags = HideFlags.HideAndDontSave; + + return go; + } + + static void OnHierarchyGUI(int instanceID, Rect rect) + { + HandleSceneDrag(null, Event.current, DragAndDrop.objectReferences, null); + } + + static List GetSpriteShapeFromPathsOrObjects(Object[] objects, string[] paths, EventType currentEventType) + { + List result = new List(); + + foreach (Object obj in objects) + { + if (AssetDatabase.Contains(obj)) + { + if (obj is UnityEngine.U2D.SpriteShape) + result.Add(obj as UnityEngine.U2D.SpriteShape); + } + } + return result; + } + + static void HandleSceneDrag(SceneView sceneView, Event evt, Object[] objectReferences, string[] paths) + { + if (evt.type != EventType.DragUpdated && evt.type != EventType.DragPerform && evt.type != EventType.DragExited) + return; + + switch (evt.type) + { + case EventType.DragUpdated: + { + DragType newDragType = DragType.CreateMultiple; + + if (s_DragType != newDragType || s_SceneDragObjects == null) + // Either this is first time we are here OR evt.alt changed during drag + { + if (ExistingAssets(objectReferences)) // External drag with images that are not in the project + { + List assets = GetSpriteShapeFromPathsOrObjects(objectReferences, paths, + evt.type); + + if (assets.Count == 0) + return; + + if (s_DragType != DragType.NotInitialized) + // evt.alt changed during drag, so we need to cleanup and start over + CleanUp(true); + + s_DragType = newDragType; + CreateSceneDragObjects(assets); + } + } + + if (s_SceneDragObjects != null) + { + if (sceneView != null) + PositionSceneDragObjects(s_SceneDragObjects, sceneView, evt.mousePosition); + + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + evt.Use(); + } + } + break; + case EventType.DragPerform: + { + List assets = GetSpriteShapeFromPathsOrObjects(objectReferences, paths, evt.type); + + if (assets.Count > 0 && s_SceneDragObjects != null) + { + // For external drags, we have delayed all creation to DragPerform because only now we have the imported sprite assets + if (s_SceneDragObjects.Count == 0) + { + CreateSceneDragObjects(assets); + if (sceneView != null) + PositionSceneDragObjects(s_SceneDragObjects, sceneView, evt.mousePosition); + } + + var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + + foreach (GameObject dragGO in s_SceneDragObjects) + { + if (prefabStage != null) + { + var parTransform = Selection.activeTransform != null + ? Selection.activeTransform + : prefabStage.prefabContentsRoot.transform; + dragGO.transform.SetParent(parTransform, true); + } + + Undo.RegisterCreatedObjectUndo(dragGO, "Create Shape"); + dragGO.hideFlags = HideFlags.None; + } + + Selection.objects = s_SceneDragObjects.ToArray(); + + CleanUp(false); + evt.Use(); + } + } + break; + case EventType.DragExited: + { + if (s_SceneDragObjects != null) + { + CleanUp(true); + evt.Use(); + } + } + break; + } + } + + static void PositionSceneDragObjects(List objects, SceneView sceneView, Vector2 mousePosition) + { + Vector3 position = Vector3.zero; + position = HandleUtility.GUIPointToWorldRay(mousePosition).GetPoint(10); + if (sceneView.in2DMode) + { + position.z = 0f; + } + else + { + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + object hit = HandleUtility.RaySnap(HandleUtility.GUIPointToWorldRay(mousePosition)); + if (hit != null) + { + RaycastHit rh = (RaycastHit)hit; + position = rh.point; + } + } + + foreach (GameObject gameObject in objects) + { + gameObject.transform.position = position; + } + } + + static void CreateSceneDragObjects(List shapes) + { + if (s_SceneDragObjects == null) + s_SceneDragObjects = new List(); + + if (s_DragType == DragType.CreateMultiple) + { + foreach (UnityEngine.U2D.SpriteShape sprite in shapes) + s_SceneDragObjects.Add(CreateDragGO(sprite, Vector3.zero)); + } + else + { + s_SceneDragObjects.Add(CreateDragGO(shapes[0], Vector3.zero)); + } + } + + static void CleanUp(bool deleteTempSceneObject) + { + if (deleteTempSceneObject) + { + foreach (GameObject gameObject in s_SceneDragObjects) + Object.DestroyImmediate(gameObject, false); + } + + if (s_SceneDragObjects != null) + { + s_SceneDragObjects.Clear(); + s_SceneDragObjects = null; + } + + s_DragType = DragType.NotInitialized; + } + + static bool ExistingAssets(Object[] objects) + { + foreach (Object obj in objects) + { + if (AssetDatabase.Contains(obj)) + return true; + } + return false; + } + + static GameObject CreateDragGO(UnityEngine.U2D.SpriteShape spriteShape, Vector3 position) + { + SpriteShapeController spriteShapeController = SpriteShapeEditorUtility.CreateSpriteShapeController(spriteShape); + GameObject gameObject = spriteShapeController.gameObject; + gameObject.transform.position = position; + gameObject.hideFlags = HideFlags.HideAndDontSave; + spriteShapeController.spriteShape = spriteShape; + + SpriteShapeEditorUtility.SetShapeFromAsset(spriteShapeController); + + return gameObject; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SceneDragAndDrop.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SceneDragAndDrop.cs.meta new file mode 100644 index 0000000..93ffae7 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SceneDragAndDrop.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: cd24657e741f79a4685b9a4a0b23b5b5 +timeCreated: 1504685300 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteSelector.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteSelector.cs new file mode 100644 index 0000000..8af8466 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteSelector.cs @@ -0,0 +1,312 @@ +using System; +using UnityEngine; + +namespace UnityEditor.U2D +{ + internal class SpriteSelector + { + int m_SelectedSprite = 0; + Sprite[] m_SpriteList = null; + Texture[] m_Thumbnails; + Vector2 m_ScrollPos; + + public int selectedIndex + { + get { return m_SelectedSprite; } + set { m_SelectedSprite = value; } + } + internal static class Styles + { + public static GUIStyle gridList = "GridList"; + public static GUIContent spriteList = EditorGUIUtility.TrTextContent("Sprite Variant"); + public static GUIContent missingSprites = EditorGUIUtility.TrTextContent("No brushes defined."); + public static GUIStyle localGrid = null; + } + public SpriteSelector() + { + m_SpriteList = null; + } + + public void UpdateSprites(Sprite[] sprites) + { + m_SpriteList = sprites; + UpdateSelection(0); + } + + public void UpdateSelection(int newSelectedBrush) + { + m_SelectedSprite = newSelectedBrush; + } + + private static int CalcTotalHorizSpacing(int xCount, GUIStyle style, GUIStyle firstStyle, GUIStyle midStyle, GUIStyle lastStyle) + { + if (xCount < 2) + return 0; + if (xCount == 2) + return Mathf.Max(firstStyle.margin.right, lastStyle.margin.left); + + int internalSpace = Mathf.Max(midStyle.margin.left, midStyle.margin.right); + return Mathf.Max(firstStyle.margin.right, midStyle.margin.left) + Mathf.Max(midStyle.margin.right, lastStyle.margin.left) + internalSpace * (xCount - 3); + } + + // Helper function: Get all mouse rects + private static Rect[] CalcMouseRects(Rect position, GUIContent[] contents, int xCount, float elemWidth, float elemHeight, GUIStyle style, GUIStyle firstStyle, GUIStyle midStyle, GUIStyle lastStyle, bool addBorders, GUI.ToolbarButtonSize buttonSize) + { + int count = contents.Length; + int x = 0; + float xPos = position.xMin, yPos = position.yMin; + GUIStyle currentStyle = style; + Rect[] retval = new Rect[count]; + if (count > 1) + currentStyle = firstStyle; + for (int i = 0; i < count; i++) + { + float w = 0; + switch (buttonSize) + { + case GUI.ToolbarButtonSize.Fixed: + w = elemWidth; + break; + case GUI.ToolbarButtonSize.FitToContents: + w = currentStyle.CalcSize(contents[i]).x; + break; + } + + if (!addBorders) + retval[i] = new Rect(xPos, yPos, w, elemHeight); + else + retval[i] = currentStyle.margin.Add(new Rect(xPos, yPos, w, elemHeight)); + + //we round the values to the dpi-aware pixel grid + retval[i] = GUIUtility.AlignRectToDevice(retval[i]); + + GUIStyle nextStyle = midStyle; + if (i == count - 2 || i == xCount - 2) + nextStyle = lastStyle; + + xPos = retval[i].xMax + Mathf.Max(currentStyle.margin.right, nextStyle.margin.left); + + x++; + if (x >= xCount) + { + x = 0; + yPos += elemHeight + Mathf.Max(style.margin.top, style.margin.bottom); + xPos = position.xMin; + nextStyle = firstStyle; + } + + currentStyle = nextStyle; + } + return retval; + } + + static void DrawRectangleOutline(Rect rect, Color color) + { + Color currentColor = Handles.color; + Handles.color = color; + + // Draw viewport outline + Vector3[] points = new Vector3[5]; + points[0] = new Vector3(rect.x, rect.y, 0.0f); + points[1] = new Vector3(rect.x + rect.width, rect.y, 0.0f); + points[2] = new Vector3(rect.x + rect.width, rect.y + rect.height, 0.0f); + points[3] = new Vector3(rect.x, rect.y + rect.height, 0.0f); + points[4] = new Vector3(rect.x, rect.y, 0.0f); + Handles.DrawPolyLine(points); + + Handles.color = currentColor; + } + + // Make a button grid + private static int DoButtonGrid(Rect position, int selected, GUIContent[] contents, string[] controlNames, int xCount, GUIStyle style, GUIStyle firstStyle, GUIStyle midStyle, GUIStyle lastStyle, GUI.ToolbarButtonSize buttonSize, bool[] contentsEnabled = null) + { + int count = contents.Length; + if (count == 0) + return selected; + if (xCount <= 0) + { + Debug.LogWarning("You are trying to create a SelectionGrid with zero or less elements to be displayed in the horizontal direction. Set xCount to a positive value."); + return selected; + } + + if (contentsEnabled != null && contentsEnabled.Length != count) + throw new ArgumentException("contentsEnabled"); + + // Figure out how large each element should be + int rows = count / xCount; + if (count % xCount != 0) + rows++; + + float totalHorizSpacing = CalcTotalHorizSpacing(xCount, style, firstStyle, midStyle, lastStyle); + float totalVerticalSpacing = Mathf.Max(style.margin.top, style.margin.bottom) * (rows - 1); + float elemWidth = (position.width - totalHorizSpacing) / xCount; + float elemHeight = (position.height - totalVerticalSpacing) / rows; + + if (style.fixedWidth != 0) + elemWidth = style.fixedWidth; + if (style.fixedHeight != 0) + elemHeight = style.fixedHeight; + + Rect[] buttonRects = CalcMouseRects(position, contents, xCount, elemWidth, elemHeight, style, firstStyle, midStyle, lastStyle, false, buttonSize); + GUIStyle selectedButtonStyle = null; + int selectedButtonID = 0; + for (int buttonIndex = 0; buttonIndex < count; ++buttonIndex) + { + bool wasEnabled = GUI.enabled; + GUI.enabled &= (contentsEnabled == null || contentsEnabled[buttonIndex]); + var buttonRect = buttonRects[buttonIndex]; + var content = contents[buttonIndex]; + + if (controlNames != null) + GUI.SetNextControlName(controlNames[buttonIndex]); + var id = GUIUtility.GetControlID("ButtonGrid".GetHashCode(), FocusType.Passive, buttonRect); + if (buttonIndex == selected) + selectedButtonID = id; + + switch (Event.current.GetTypeForControl(id)) + { + case EventType.MouseDown: + if (buttonRect.Contains(Event.current.mousePosition)) + { + GUIUtility.hotControl = id; + Event.current.Use(); + } + break; + case EventType.MouseDrag: + if (GUIUtility.hotControl == id) + Event.current.Use(); + break; + case EventType.MouseUp: + if (GUIUtility.hotControl == id) + { + GUIUtility.hotControl = 0; + Event.current.Use(); + + GUI.changed = true; + return buttonIndex; + } + break; + case EventType.Repaint: + var buttonStyle = count == 1 ? style : (buttonIndex == 0 ? firstStyle : (buttonIndex == count - 1 ? lastStyle : midStyle)); + var isSelected = selected == buttonIndex; + + if (!isSelected) + { + GUI.DrawTexture(buttonRect, content.image, ScaleMode.ScaleToFit, true); + GUI.Label(new Rect(buttonRect.x, buttonRect.y, 32, 32), buttonIndex.ToString()); + } + else + selectedButtonStyle = buttonStyle; + break; + } + + GUI.enabled = wasEnabled; + } + + // draw selected button at the end so it overflows nicer + if (selectedButtonStyle != null) + { + var buttonRect = buttonRects[selected]; + var content = contents[selected]; + var wasEnabled = GUI.enabled; + GUI.enabled &= (contentsEnabled == null || contentsEnabled[selected]); + + GUI.DrawTexture(new Rect(buttonRect.x + 4, buttonRect.y + 4, buttonRect.width - 8, buttonRect.height - 8), content.image, ScaleMode.ScaleToFit, true); + DrawRectangleOutline(buttonRect, GUI.skin.settings.selectionColor); + GUI.Label(new Rect(buttonRect.x, buttonRect.y, 32, 32), selected.ToString()); + GUI.enabled = wasEnabled; + } + + return selected; + } + + // Get Temp Texture Contents for Sprites. + private static GUIContent[] Temp(Texture[] images) + { + GUIContent[] retval = new GUIContent[images.Length]; + for (int i = 0; i < images.Length; i++) + { + retval[i] = new GUIContent(images[i]); + } + return retval; + } + + public Sprite GetActiveSprite() + { + if (m_SelectedSprite >= m_SpriteList.Length) + m_SelectedSprite = 0; + return m_SpriteList[m_SelectedSprite]; + } + + public bool ShowGUI(int selectedIndex) + { + bool repaint = false; + if (m_SpriteList == null || m_SpriteList.Length == 0) + return false; + int approxSize = 64; + int approxHolderSize = 66; + + if (Styles.localGrid == null) + { + Styles.localGrid = new GUIStyle(Styles.gridList); + Styles.localGrid.fixedWidth = approxSize; + Styles.localGrid.fixedHeight = approxSize; + } + m_SelectedSprite = (selectedIndex > m_SpriteList.Length) ? 0 : selectedIndex; + + EditorGUILayout.BeginHorizontal(); + { + GUILayout.Label(Styles.spriteList, EditorStyles.label, GUILayout.Width(EditorGUIUtility.labelWidth - 5)); + + int cviewwidth = (int)(EditorGUIUtility.currentViewWidth - EditorGUIUtility.labelWidth - approxSize); + int columns = (int)(cviewwidth) / approxSize; + columns = columns == 0 ? 1 : columns; + int rows = (int)Mathf.Ceil((m_SpriteList.Length + columns - 1) / columns); + int lyColumns = (rows == 1) ? (approxHolderSize): (approxHolderSize * 2); + + GUILayout.BeginVertical("box", new GUILayoutOption[] { GUILayout.Height(lyColumns) } ); + { + m_ScrollPos = EditorGUILayout.BeginScrollView(m_ScrollPos, new GUILayoutOption[] { GUILayout.Height(lyColumns) }); + int newBrush = SpriteSelectionGrid(m_SelectedSprite, m_SpriteList, approxSize, Styles.localGrid, Styles.missingSprites, columns, rows); + if (newBrush != m_SelectedSprite) + { + UpdateSelection(newBrush); + repaint = true; + } + EditorGUILayout.EndScrollView(); + } + GUILayout.EndVertical(); + } + EditorGUILayout.EndHorizontal(); + EditorGUILayout.Space(); + return repaint; + } + + int SpriteSelectionGrid(int selected, Sprite[] sprites, int approxSize, GUIStyle style, GUIContent emptyString, int columns, int rows) + { + int retval = 0; + if (sprites.Length != 0) + { + Rect r = GUILayoutUtility.GetRect((float)columns * approxSize, (float)rows * approxSize); + Event evt = Event.current; + if (evt.type == EventType.MouseDown && evt.clickCount == 2 && r.Contains(evt.mousePosition)) + evt.Use(); + + m_Thumbnails = PreviewTexturesFromSprites(sprites); + retval = DoButtonGrid(r, selected, Temp(m_Thumbnails), null, (int)columns, style, style, style, style, GUI.ToolbarButtonSize.FitToContents); + } + else + GUILayout.Label(emptyString); + return retval; + } + + + internal static Texture[] PreviewTexturesFromSprites(Sprite[] sprites) + { + Texture[] retval = new Texture[sprites.Length]; + for (int i = 0; i < sprites.Length; i++) + retval[i] = AssetPreview.GetAssetPreview(sprites[i]) ?? Texture2D.whiteTexture; + return retval; + } + } +} //namespace diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteSelector.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteSelector.cs.meta new file mode 100644 index 0000000..e570bf4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteSelector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: efd5d361c5243f44093e56522f66225a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAnalytics.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAnalytics.cs new file mode 100644 index 0000000..8e34c59 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAnalytics.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using UnityEngine.Analytics; +using UnityEngine; +using UnityEngine.U2D; +using UnityEngine.Events; + +namespace UnityEditor.U2D +{ + + internal class SpriteShapeAnalyticsEvents + { + public class SpriteShapeEvent : UnityEvent { } + public class SpriteShapeRendererEvent : UnityEvent { } + + private SpriteShapeEvent m_SpriteShape = new SpriteShapeEvent(); + private SpriteShapeRendererEvent m_SpriteShapeRenderer = new SpriteShapeRendererEvent(); + + public virtual SpriteShapeEvent spriteShapeEvent { get { return m_SpriteShape; } } + public virtual SpriteShapeRendererEvent spriteShapeRendererEvent { get { return m_SpriteShapeRenderer; } } + } + + [Serializable] + enum SpriteShapeAnalyticsEventType + { + SpriteShapeProfileCreated = 0, + SpriteShapeRendererCreated = 1 + } + + [Serializable] + struct SpriteShapeAnalyticsEvent + { + [SerializeField] + public SpriteShapeAnalyticsEventType sub_type; + [SerializeField] + public string data; + } + + internal interface ISpriteShapeAnalyticsStorage + { + AnalyticsResult SendUsageEvent(SpriteShapeAnalyticsEvent evt); + void Dispose(); + } + + internal static class SpriteShapeAnalyticConstant + { + public const int k_MaxEventsPerHour = 1000; + public const int k_MaxNumberOfElements = 1000; + } + + [Serializable] + internal class SpriteShapeAnalytics + { + const int k_SpriteShapeEventElementCount = 2; + ISpriteShapeAnalyticsStorage m_AnalyticsStorage; + [SerializeField] + SpriteShapeAnalyticsEvents m_EventBus = null; + + internal SpriteShapeAnalyticsEvents eventBus + { + get + { + if (m_EventBus == null) + m_EventBus = new SpriteShapeAnalyticsEvents(); + return m_EventBus; + } + } + + public SpriteShapeAnalytics(ISpriteShapeAnalyticsStorage analyticsStorage) + { + m_AnalyticsStorage = analyticsStorage; + eventBus.spriteShapeEvent.AddListener(OnSpriteShapeCreated); + eventBus.spriteShapeRendererEvent.AddListener(OnSpriteShapeRendererCreated); + } + + public void Dispose() + { + eventBus.spriteShapeEvent.RemoveListener(OnSpriteShapeCreated); + eventBus.spriteShapeRendererEvent.RemoveListener(OnSpriteShapeRendererCreated); + m_AnalyticsStorage.Dispose(); + } + + void OnSpriteShapeCreated(UnityEngine.U2D.SpriteShape shape) + { + SendUsageEvent(new SpriteShapeAnalyticsEvent() + { + sub_type = SpriteShapeAnalyticsEventType.SpriteShapeProfileCreated, + data = "" + }); + } + + void OnSpriteShapeRendererCreated(SpriteShapeRenderer renderer) + { + SendUsageEvent(new SpriteShapeAnalyticsEvent() + { + sub_type = SpriteShapeAnalyticsEventType.SpriteShapeRendererCreated, + data = "" + }); + } + + public void SendUsageEvent(SpriteShapeAnalyticsEvent evt) + { + m_AnalyticsStorage.SendUsageEvent(evt); + } + + } + + // For testing. + internal class SpriteShapeJsonAnalyticsStorage : ISpriteShapeAnalyticsStorage + { + [Serializable] + struct SpriteShapeToolEvents + { + [SerializeField] + public List events; + } + + SpriteShapeToolEvents m_TotalEvents = new SpriteShapeToolEvents() + { + events = new List() + }; + + public AnalyticsResult SendUsageEvent(SpriteShapeAnalyticsEvent evt) + { + m_TotalEvents.events.Add(evt); + return AnalyticsResult.Ok; + } + + public void Dispose() + { + try + { + string file = string.Format("analytics_{0}.json", System.DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss")); + if (System.IO.File.Exists(file)) + System.IO.File.Delete(file); + System.IO.File.WriteAllText(file, JsonUtility.ToJson(m_TotalEvents, true)); + } + catch (Exception ex) + { + Debug.Log(ex); + } + finally + { + m_TotalEvents.events.Clear(); + } + } + } + + [InitializeOnLoad] + internal class SpriteShapeUnityAnalyticsStorage : ISpriteShapeAnalyticsStorage + { + const string k_VendorKey = "unity.2d.spriteshape"; + const int k_Version = 1; + + public SpriteShapeUnityAnalyticsStorage() + { + EditorAnalytics.RegisterEventWithLimit("u2dSpriteShapeToolUsage", SpriteShapeAnalyticConstant.k_MaxEventsPerHour, SpriteShapeAnalyticConstant.k_MaxNumberOfElements, k_VendorKey, k_Version); + } + + public AnalyticsResult SendUsageEvent(SpriteShapeAnalyticsEvent evt) + { + return EditorAnalytics.SendEventWithLimit("u2dSpriteShapeToolUsage", evt, k_Version); + } + + public void Dispose() { } + } + +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAnalytics.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAnalytics.cs.meta new file mode 100644 index 0000000..03a196c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAnalytics.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d38d0857bee3b54084cf5988bf12db1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAssetPostProcessor.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAssetPostProcessor.cs new file mode 100644 index 0000000..07ed342 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAssetPostProcessor.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using UnityEngine.U2D; +using UnityEditor; + +namespace UnityEditor.U2D +{ + public class SpriteShapeAssetPostProcessor : AssetPostprocessor + { + static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) + { + if (importedAssets.Length > 0) + { + GameObject[] allGOs = UnityEngine.Object.FindObjectsOfType(); + foreach (GameObject go in allGOs) + { + if (!go.activeInHierarchy) + continue; + SpriteShapeController sc = go.GetComponent(); + if (sc != null) + sc.RefreshSpriteShape(); + } + } + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAssetPostProcessor.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAssetPostProcessor.cs.meta new file mode 100644 index 0000000..de48d2d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeAssetPostProcessor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: b9102a9258b50f949a55f81945829f85 +timeCreated: 1504669359 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeControllerEditor.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeControllerEditor.cs new file mode 100644 index 0000000..2ec01ae --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeControllerEditor.cs @@ -0,0 +1,602 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.U2D; +using UnityEditor; +using UnityEditor.U2D.SpriteShapeInternal; +using UnityEditor.U2D.Common; +using UnityEditor.AnimatedValues; +using UnityEditor.U2D.Path; +using UnityEngine.SceneManagement; + +namespace UnityEditor.U2D +{ + + [CustomEditor(typeof(SpriteShapeController))] + [CanEditMultipleObjects] + internal class SpriteShapeControllerEditor : PathComponentEditor + { + private static class Contents + { + public static readonly GUIContent splineLabel = new GUIContent("Spline"); + public static readonly string editSplineLabel = "Edit Spline"; + public static readonly GUIContent fillLabel = new GUIContent("Fill"); + public static readonly GUIContent colliderLabel = new GUIContent("Collider"); + public static readonly GUIContent fillPixelPerUnitLabel = new GUIContent("Pixel Per Unit", "Pixel Per Unit for fill texture."); + public static readonly GUIContent spriteShapeProfile = new GUIContent("Profile", "The SpriteShape Profile to render"); + public static readonly GUIContent materialLabel = new GUIContent("Material", "Material to be used by SpriteRenderer"); + public static readonly GUIContent colorLabel = new GUIContent("Color", "Rendering color for the Sprite graphic"); + public static readonly GUIContent metaDataLabel = new GUIContent("Meta Data", "SpriteShape specific controlpoint data"); + public static readonly GUIContent showComponentsLabel = new GUIContent("Show Render Stuff", "Show Renderer Components."); + public static readonly GUIContent[] splineDetailOptions = { new GUIContent("High Quality"), new GUIContent("Medium Quality"), new GUIContent("Low Quality") }; + public static readonly GUIContent splineDetail = new GUIContent("Detail", "Tessellation Quality for rendering."); + public static readonly GUIContent openEndedLabel = new GUIContent("Open Ended", "Is the path open ended or closed."); + public static readonly GUIContent adaptiveUVLabel = new GUIContent("Adaptive UV", "Allow Adaptive UV Generation"); + public static readonly GUIContent enableTangentsLabel = new GUIContent("Enable Tangents", "Enable Tangents for 2D Lighting."); + public static readonly GUIContent worldUVLabel = new GUIContent("Worldspace UV", "Generate UV for world space."); + public static readonly GUIContent stretchUVLabel = new GUIContent("Stretch UV", "Stretch the Fill UV to full Rect."); + public static readonly GUIContent stretchTilingLabel = new GUIContent("Stretch Tiling", "Stretch Tiling Count."); + public static readonly GUIContent colliderDetail = new GUIContent("Detail", "Tessellation Quality on the collider."); + public static readonly GUIContent cornerThresholdDetail = new GUIContent("Corner Threshold", "Corner angle threshold below which corners wont be placed."); + public static readonly GUIContent colliderOffset = new GUIContent("Offset", "Extrude collider distance."); + public static readonly GUIContent updateColliderLabel = new GUIContent("Update Collider", "Update Collider as you edit SpriteShape"); + public static readonly GUIContent optimizeColliderLabel = new GUIContent("Optimize Collider", "Cleanup planar self-intersections and optimize collider points"); + public static readonly GUIContent optimizeGeometryLabel = new GUIContent("Optimize Geometry", "Simplify geometry"); + public static readonly GUIContent cacheGeometryLabel = new GUIContent("Cache Geometry", "Bake geometry data. This will save geometry data on editor and load it on runtime instead of generating."); + } + + private SerializedProperty m_SpriteShapeProp; + private SerializedProperty m_SplineDetailProp; + private SerializedProperty m_IsOpenEndedProp; + private SerializedProperty m_AdaptiveUVProp; + private SerializedProperty m_StretchUVProp; + private SerializedProperty m_StretchTilingProp; + private SerializedProperty m_WorldSpaceUVProp; + private SerializedProperty m_FillPixelPerUnitProp; + private SerializedProperty m_CornerAngleThresholdProp; + + private SerializedProperty m_ColliderAutoUpdate; + private SerializedProperty m_ColliderDetailProp; + private SerializedProperty m_ColliderOffsetProp; + + private SerializedProperty m_OptimizeColliderProp; + private SerializedProperty m_OptimizeGeometryProp; + private SerializedProperty m_EnableTangentsProp; + private SerializedProperty m_GeometryCachedProp; + + private int m_CollidersCount = 0; + + private int[] m_QualityValues = new int[] { (int)QualityDetail.High, (int)QualityDetail.Mid, (int)QualityDetail.Low }; + readonly AnimBool m_ShowStretchOption = new AnimBool(); + readonly AnimBool m_ShowNonStretchOption = new AnimBool(); + private struct ShapeSegment + { + public int start; + public int end; + public int angleRange; + }; + + private struct ShapeAngleRange + { + public float start; + public float end; + public int order; + public int index; + }; + + int m_SelectedPoint = -1; + int m_SelectedAngleRange = -1; + int m_SpriteShapeHashCode = 0; + int m_SplineHashCode = 0; + List m_ShapeSegments = new List(); + SpriteSelector spriteSelector = new SpriteSelector(); + + private SpriteShapeController m_SpriteShapeController + { + get { return target as SpriteShapeController; } + } + + private void OnEnable() + { + if (target == null) + return; + + m_SpriteShapeProp = serializedObject.FindProperty("m_SpriteShape"); + m_SplineDetailProp = serializedObject.FindProperty("m_SplineDetail"); + m_IsOpenEndedProp = serializedObject.FindProperty("m_Spline").FindPropertyRelative("m_IsOpenEnded"); + m_AdaptiveUVProp = serializedObject.FindProperty("m_AdaptiveUV"); + m_StretchUVProp = serializedObject.FindProperty("m_StretchUV"); + m_StretchTilingProp = serializedObject.FindProperty("m_StretchTiling"); + m_WorldSpaceUVProp = serializedObject.FindProperty("m_WorldSpaceUV"); + m_FillPixelPerUnitProp = serializedObject.FindProperty("m_FillPixelPerUnit"); + m_CornerAngleThresholdProp = serializedObject.FindProperty("m_CornerAngleThreshold"); + + m_ColliderAutoUpdate = serializedObject.FindProperty("m_UpdateCollider"); + m_ColliderDetailProp = serializedObject.FindProperty("m_ColliderDetail"); + m_ColliderOffsetProp = serializedObject.FindProperty("m_ColliderOffset"); + m_OptimizeColliderProp = serializedObject.FindProperty("m_OptimizeCollider"); + m_OptimizeGeometryProp = serializedObject.FindProperty("m_OptimizeGeometry"); + m_EnableTangentsProp = serializedObject.FindProperty("m_EnableTangents"); + m_GeometryCachedProp = serializedObject.FindProperty("m_GeometryCached"); + + m_ShowStretchOption.valueChanged.AddListener(Repaint); + m_ShowStretchOption.value = ShouldShowStretchOption(); + + m_ShowNonStretchOption.valueChanged.AddListener(Repaint); + m_ShowNonStretchOption.value = !ShouldShowStretchOption(); + } + + private bool OnCollidersAddedOrRemoved() + { + PolygonCollider2D polygonCollider = m_SpriteShapeController.polygonCollider; + EdgeCollider2D edgeCollider = m_SpriteShapeController.edgeCollider; + int collidersCount = 0; + + if (polygonCollider != null) + collidersCount = collidersCount + 1; + if (edgeCollider != null) + collidersCount = collidersCount + 1; + + if (collidersCount != m_CollidersCount) + { + m_CollidersCount = collidersCount; + return true; + } + return false; + } + + public void DrawHeader(GUIContent content) + { + EditorGUILayout.LabelField(content, EditorStyles.boldLabel); + } + + private bool ShouldShowStretchOption() + { + return m_StretchUVProp.boolValue; + } + + static bool WithinRange(ShapeAngleRange angleRange, float inputAngle) + { + float range = angleRange.end - angleRange.start; + float angle = Mathf.Repeat(inputAngle - angleRange.start, 360f); + angle = (angle == 360.0f) ? 0 : angle; + return (angle >= 0f && angle <= range); + } + + static int RangeFromAngle(List angleRanges, float angle) + { + foreach (var range in angleRanges) + { + if (WithinRange(range, angle)) + return range.index; + } + + return -1; + } + + private List GetAngleRangeSorted(UnityEngine.U2D.SpriteShape ss) + { + List angleRanges = new List(); + int i = 0; + foreach (var angleRange in ss.angleRanges) + { + ShapeAngleRange sar = new ShapeAngleRange() { start = angleRange.start, end = angleRange.end, order = angleRange.order, index = i }; + angleRanges.Add(sar); + i++; + } + angleRanges.Sort((a, b) => a.order.CompareTo(b.order)); + return angleRanges; + } + + private void GenerateSegments(SpriteShapeController sc, List angleRanges) + { + var controlPointCount = sc.spline.GetPointCount(); + var angleRangeIndices = new int[controlPointCount]; + ShapeSegment activeSegment = new ShapeSegment() { start = -1, end = -1, angleRange = -1 }; + m_ShapeSegments.Clear(); + + for (int i = 0; i < controlPointCount; ++i) + { + var actv = i; + var next = SplineUtility.NextIndex(actv, controlPointCount); + var pos1 = sc.spline.GetPosition(actv); + var pos2 = sc.spline.GetPosition(next); + bool continueStrip = (sc.spline.GetTangentMode(actv) == ShapeTangentMode.Continuous), edgeUpdated = false; + float angle = 0; + if (false == continueStrip || activeSegment.start == -1) + angle = SplineUtility.SlopeAngle(pos1, pos2) + 90.0f; + + next = (!sc.spline.isOpenEnded && next == 0) ? (actv + 1) : next; + int mn = (actv < next) ? actv : next; + int mx = (actv > next) ? actv : next; + + var anglerange = RangeFromAngle(angleRanges, angle); + angleRangeIndices[actv] = anglerange; + if (anglerange == -1) + { + activeSegment = new ShapeSegment() { start = mn, end = mx, angleRange = anglerange }; + m_ShapeSegments.Add(activeSegment); + continue; + } + + // Check for Segments. Also check if the Segment Start has been resolved. Otherwise simply start with the next one + if (activeSegment.start != -1) + continueStrip = continueStrip && (angleRangeIndices[activeSegment.start] != -1); + + bool canContinue = (actv != (controlPointCount - 1)) || (!sc.spline.isOpenEnded && (actv == (controlPointCount - 1))); + if (continueStrip && canContinue) + { + for (int s = 0; s < m_ShapeSegments.Count; ++s) + { + activeSegment = m_ShapeSegments[s]; + if (activeSegment.start - mn == 1) + { + edgeUpdated = true; + activeSegment.start = mn; + m_ShapeSegments[s] = activeSegment; + break; + } + if (mx - activeSegment.end == 1) + { + edgeUpdated = true; + activeSegment.end = mx; + m_ShapeSegments[s] = activeSegment; + break; + } + } + } + + if (!edgeUpdated) + { + activeSegment.start = mn; + activeSegment.end = mx; + activeSegment.angleRange = anglerange; + m_ShapeSegments.Add(activeSegment); + } + + } + } + + private int GetAngleRange(SpriteShapeController sc, int point, ref int startPoint) + { + int angleRange = -1; + startPoint = point; + for (int i = 0; i < m_ShapeSegments.Count; ++i) + { + if (point >= m_ShapeSegments[i].start && point < m_ShapeSegments[i].end) + { + angleRange = m_ShapeSegments[i].angleRange; + startPoint = point; // m_ShapeSegments[i].start; + if (angleRange >= sc.spriteShape.angleRanges.Count) + angleRange = 0; + break; + } + } + return angleRange; + } + + private void UpdateSegments() + { + var sc = target as SpriteShapeController; + + // Either SpriteShape Asset or SpriteShape Data has changed. + if (m_SpriteShapeHashCode != sc.spriteShapeHashCode || m_SplineHashCode != sc.splineHashCode) + { + List angleRanges = GetAngleRangeSorted(sc.spriteShape); + GenerateSegments(sc, angleRanges); + m_SpriteShapeHashCode = sc.spriteShapeHashCode; + m_SplineHashCode = sc.splineHashCode; + m_SelectedPoint = -1; + } + } + + private int ResolveSpriteIndex(List spriteIndices, ISelection selection, ref List startPoints) + { + var spriteIndexValue = spriteIndices.FirstOrDefault(); + var sc = target as SpriteShapeController; + var spline = sc.spline; + + if (sc == null || sc.spriteShape == null) + return -1; + UpdateSegments(); + + if (sc.spriteShape != null) + { + if (selection.Count == 1) + { + m_SelectedAngleRange = GetAngleRange(sc, selection.elements[0], ref m_SelectedPoint); + startPoints.Add(m_SelectedPoint); + spriteIndexValue = spline.GetSpriteIndex(m_SelectedPoint); + } + else + { + m_SelectedAngleRange = -1; + foreach (var index in selection.elements) + { + int startPoint = index; + int angleRange = GetAngleRange(sc, index, ref startPoint); + if (m_SelectedAngleRange != -1 && angleRange != m_SelectedAngleRange) + { + m_SelectedAngleRange = -1; + break; + } + startPoints.Add(startPoint); + m_SelectedAngleRange = angleRange; + } + } + } + + if (m_SelectedAngleRange != -1) + spriteSelector.UpdateSprites(sc.spriteShape.angleRanges[m_SelectedAngleRange].sprites.ToArray()); + else + spriteIndexValue = -1; + return spriteIndexValue; + } + + public int GetAngleRange(int index) + { + int startPoint = 0; + var sc = target as SpriteShapeController; + UpdateSegments(); + return GetAngleRange(sc, index, ref startPoint); + } + + public override void OnInspectorGUI() + { + var updateCollider = false; + EditorGUI.BeginChangeCheck(); + + serializedObject.Update(); + EditorGUILayout.PropertyField(m_SpriteShapeProp, Contents.spriteShapeProfile); + + var hasEditToolChanged = DoEditButtonChecked(PathEditorToolContents.icon, Contents.editSplineLabel); + if (hasEditToolChanged && !EditorTools.EditorTools.activeToolType.Equals(typeof(SpriteShapeEditorTool))) + SpriteShapeUpdateCache.UpdateCache(targets); + + DoPathInspector(); + var pathTool = SpriteShapeEditorTool.activeSpriteShapeEditorTool; + + if (Selection.gameObjects.Length == 1 && pathTool != null) + { + + var sc = target as SpriteShapeController; + var path = pathTool.GetPath(sc); + if (path != null) + { + + var selection = path.selection; + + if (selection.Count > 0) + { + + var spline = sc.spline; + var spriteIndices = new List(); + + List startPoints = new List(); + foreach (int index in selection.elements) + spriteIndices.Add(spline.GetSpriteIndex(index)); + + var spriteIndexValue = ResolveSpriteIndex(spriteIndices, selection, ref startPoints); + if (spriteIndexValue != -1) + { + EditorGUI.BeginChangeCheck(); + + spriteSelector.ShowGUI(spriteIndexValue); + + if (EditorGUI.EndChangeCheck()) + { + foreach (var index in startPoints) + { + var data = path.GetData(index); + data.spriteIndex = spriteSelector.selectedIndex; + path.SetData(index, data); + } + pathTool.SetPath(target); + } + } + EditorGUILayout.Space(); + } + } + } + + DoSnappingInspector(); + + EditorGUILayout.Space(); + DrawHeader(Contents.splineLabel); + + EditorGUILayout.IntPopup(m_SplineDetailProp, Contents.splineDetailOptions, m_QualityValues, Contents.splineDetail); + serializedObject.ApplyModifiedProperties(); + + DoOpenEndedInspector(m_IsOpenEndedProp); + + serializedObject.Update(); + EditorGUILayout.PropertyField(m_AdaptiveUVProp, Contents.adaptiveUVLabel); + if (!m_IsOpenEndedProp.boolValue) + EditorGUILayout.PropertyField(m_OptimizeGeometryProp, Contents.optimizeGeometryLabel); + EditorGUILayout.PropertyField(m_EnableTangentsProp, Contents.enableTangentsLabel); + + if (EditorTools.EditorTools.activeToolType == typeof(SpriteShapeEditorTool)) + { + // Cache Geometry is only editable for Scene Objects or when in Prefab Isolation Mode. + if (Selection.gameObjects.Length == 1 && Selection.transforms.Contains(Selection.gameObjects[0].transform)) + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_GeometryCachedProp, Contents.cacheGeometryLabel); + if (EditorGUI.EndChangeCheck()) + { + if (m_GeometryCachedProp.boolValue) + { + var geometryCache = m_SpriteShapeController.spriteShapeGeometryCache; + if (!geometryCache) + geometryCache = m_SpriteShapeController.gameObject + .AddComponent(); + geometryCache.hideFlags = HideFlags.HideInInspector; + } + else + { + if (m_SpriteShapeController.spriteShapeGeometryCache) + Object.DestroyImmediate(m_SpriteShapeController.spriteShapeGeometryCache); + } + + m_SpriteShapeController.RefreshSpriteShape(); + } + } + SpriteShapeUpdateCache.s_cacheGeometrySet = true; + } + + EditorGUI.BeginChangeCheck(); + var threshold = EditorGUILayout.Slider(Contents.cornerThresholdDetail, m_CornerAngleThresholdProp.floatValue, 0.0f, 90.0f); + if (EditorGUI.EndChangeCheck()) + { + m_CornerAngleThresholdProp.floatValue = threshold; + updateCollider = true; + } + + EditorGUILayout.Space(); + DrawHeader(Contents.fillLabel); + EditorGUILayout.PropertyField(m_StretchUVProp, Contents.stretchUVLabel); + + if (ShouldShowStretchOption()) + { + EditorGUILayout.PropertyField(m_StretchTilingProp, Contents.stretchTilingLabel); + } + else + { + EditorGUILayout.PropertyField(m_FillPixelPerUnitProp, Contents.fillPixelPerUnitLabel); + EditorGUILayout.PropertyField(m_WorldSpaceUVProp, Contents.worldUVLabel); + } + + if (m_SpriteShapeController.gameObject.GetComponent() != null || m_SpriteShapeController.gameObject.GetComponent() != null) + { + EditorGUILayout.Space(); + DrawHeader(Contents.colliderLabel); + EditorGUILayout.PropertyField(m_ColliderAutoUpdate, Contents.updateColliderLabel); + if (m_ColliderAutoUpdate.boolValue) + { + EditorGUILayout.PropertyField(m_ColliderOffsetProp, Contents.colliderOffset); + EditorGUILayout.PropertyField(m_OptimizeColliderProp, Contents.optimizeColliderLabel); + if (m_OptimizeColliderProp.boolValue) + EditorGUILayout.IntPopup(m_ColliderDetailProp, Contents.splineDetailOptions, m_QualityValues, Contents.colliderDetail); + } + } + if (EditorGUI.EndChangeCheck()) + { + updateCollider = true; + } + + serializedObject.ApplyModifiedProperties(); + + if (updateCollider || OnCollidersAddedOrRemoved()) + BakeCollider(); + } + + void BakeCollider() + { + if (m_SpriteShapeController.autoUpdateCollider == false) + return; + + PolygonCollider2D polygonCollider = m_SpriteShapeController.polygonCollider; + if (polygonCollider) + { + Undo.RegisterCompleteObjectUndo(polygonCollider, Undo.GetCurrentGroupName()); + EditorUtility.SetDirty(polygonCollider); + m_SpriteShapeController.RefreshSpriteShape(); + } + + EdgeCollider2D edgeCollider = m_SpriteShapeController.edgeCollider; + if (edgeCollider) + { + Undo.RegisterCompleteObjectUndo(edgeCollider, Undo.GetCurrentGroupName()); + EditorUtility.SetDirty(edgeCollider); + m_SpriteShapeController.RefreshSpriteShape(); + + } + } + + void ShowMaterials(bool show) + { + HideFlags hideFlags = HideFlags.HideInInspector; + + if (show) + hideFlags = HideFlags.None; + + Material[] materials = m_SpriteShapeController.spriteShapeRenderer.sharedMaterials; + + foreach (Material material in materials) + { + material.hideFlags = hideFlags; + EditorUtility.SetDirty(material); + } + } + + [DrawGizmo(GizmoType.InSelectionHierarchy)] + static void RenderSpline(SpriteShapeController m_SpriteShapeController, GizmoType gizmoType) + { + if (EditorTools.EditorTools.activeToolType == typeof(SpriteShapeEditorTool)) + return; + + var m_Spline = m_SpriteShapeController.spline; + var oldMatrix = Handles.matrix; + var oldColor = Handles.color; + Handles.matrix = m_SpriteShapeController.transform.localToWorldMatrix; + Handles.color = Color.grey; + var pointCount = m_Spline.GetPointCount(); + for (var i = 0; i < (m_Spline.isOpenEnded ? pointCount - 1 : pointCount); ++i) + { + Vector3 p1 = m_Spline.GetPosition(i); + Vector3 p2 = m_Spline.GetPosition((i + 1) % pointCount); + var t1 = p1 + m_Spline.GetRightTangent(i); + var t2 = p2 + m_Spline.GetLeftTangent((i + 1) % pointCount); + Vector3[] bezierPoints = Handles.MakeBezierPoints(p1, p2, t1, t2, m_SpriteShapeController.splineDetail); + Handles.DrawAAPolyLine(bezierPoints); + } + Handles.matrix = oldMatrix; + Handles.color = oldColor; + } + } + + [UnityEditor.InitializeOnLoad] + internal static class SpriteShapeUpdateCache + { + + internal static bool s_cacheGeometrySet = false; + static SpriteShapeUpdateCache() + { + UnityEditor.EditorApplication.playModeStateChanged += change => + { + if (change == UnityEditor.PlayModeStateChange.ExitingEditMode) + UpdateSpriteShapeCacheInOpenScenes(); + }; + } + + static void UpdateSpriteShapeCacheInOpenScenes() + { + for (int i = 0; s_cacheGeometrySet && (i < SceneManager.sceneCount); ++i) + { + var scene = SceneManager.GetSceneAt(i); + var gos = scene.GetRootGameObjects(); + foreach (var go in gos) + { + var scs = go.GetComponentsInChildren(); + foreach (var sc in scs) + if (sc.spriteShapeGeometryCache) + sc.spriteShapeGeometryCache.UpdateGeometryCache(); + } + } + + s_cacheGeometrySet = false; + } + + internal static void UpdateCache(UnityEngine.Object[] targets) + { + foreach (var t in targets) + { + var s = t as SpriteShapeController; + if (s) + if (s.spriteShapeGeometryCache) + s.spriteShapeGeometryCache.UpdateGeometryCache(); + } + } + } + +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeControllerEditor.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeControllerEditor.cs.meta new file mode 100644 index 0000000..f44b5c8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeControllerEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 8dad9bd3cf16d46f794821e888c403c2 +timeCreated: 1503819723 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditor.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditor.cs new file mode 100644 index 0000000..382fc72 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditor.cs @@ -0,0 +1,654 @@ +using UnityEngine; +using UnityEngine.U2D; +using UnityEditor; +using UnityEditor.AnimatedValues; +using UnityEditorInternal; +using UnityEditor.U2D.Common; +using System.Collections.Generic; +using UnityEditor.U2D.SpriteShape; + +namespace UnityEditor.U2D +{ + [CustomEditor(typeof(UnityEngine.U2D.SpriteShape)), CanEditMultipleObjects] + public class SpriteShapeEditor : Editor, IAngleRangeCache + { + private static class Contents + { + public static readonly GUIContent fillTextureLabel = new GUIContent("Texture", "Fill texture used for Shape Fill."); + public static readonly GUIContent fillScaleLabel = new GUIContent("Offset", "Determines Border Offset for Shape."); + public static readonly GUIContent useSpriteBorderLabel = new GUIContent("Use Sprite Borders", "Draw Sprite Borders on discontinuities"); + public static readonly GUIContent cornerTypeLabel = new GUIContent("Corner Type", "Corner type sprite used."); + public static readonly GUIContent controlPointsLabel = new GUIContent("Control Points"); + public static readonly GUIContent fillLabel = new GUIContent("Fill"); + public static readonly GUIContent cornerLabel = new GUIContent("Corners"); + public static readonly GUIContent cornerListLabel = new GUIContent("Corner List"); + public static readonly GUIContent cornerSpriteTypeLabel = new GUIContent("Corner Sprite"); + public static readonly GUIContent angleRangesLabel = new GUIContent("Angle Ranges"); + public static readonly GUIContent spritesLabel = new GUIContent("Sprites"); + public static readonly GUIContent angleRangeLabel = new GUIContent("Angle Range ({0})"); + public static readonly GUIContent wrapModeErrorLabel = new GUIContent("Fill texture must have wrap modes set to Repeat. Please re-import."); + + public static readonly Color proBackgroundColor = new Color32(49, 77, 121, 255); + public static readonly Color proBackgroundRangeColor = new Color32(25, 25, 25, 128); + public static readonly Color proColor1 = new Color32(10, 46, 42, 255); + public static readonly Color proColor2 = new Color32(33, 151, 138, 255); + public static readonly Color defaultColor1 = new Color32(25, 61, 57, 255); + public static readonly Color defaultColor2 = new Color32(47, 166, 153, 255); + public static readonly Color defaultBackgroundColor = new Color32(64, 92, 136, 255); + } + + private SerializedProperty m_FillTextureProp; + private SerializedProperty m_AngleRangesProp; + private SerializedProperty m_CornerSpritesProp; + private SerializedProperty m_FillOffsetProp; + private SerializedProperty m_UseSpriteBordersProp; + + private ReorderableList m_AngleRangeSpriteList = null; + private ReorderableList m_EmptySpriteList = null; + + [SerializeField] + private float m_PreviewAngle = 0f; + [SerializeField] + private int m_SelectedIndex; + private const int kInvalidMinimum = -1; + private Rect m_AngleRangeRect; + private AngleRangeController controller; + private AngleRange m_CurrentAngleRange; + private Dictionary m_SpriteSelection = new Dictionary(); + + + private Sprite m_PreviewSprite; + private Mesh m_PreviewSpriteMesh; + private Mesh previewSpriteMesh + { + get + { + if (m_PreviewSpriteMesh == null) + { + m_PreviewSpriteMesh = new Mesh(); + m_PreviewSpriteMesh.MarkDynamic(); + m_PreviewSpriteMesh.hideFlags = HideFlags.DontSave; + } + + return m_PreviewSpriteMesh; + } + } + + public List angleRanges + { + get + { + if (spriteShape == null) + return new List(); + Debug.Assert(spriteShape != null); + return spriteShape.angleRanges; + } + } + + public int selectedIndex + { + get { return m_SelectedIndex; } + set { m_SelectedIndex = value; } + } + + bool isSelectedIndexValid + { + get { return (selectedIndex != kInvalidMinimum && selectedIndex < angleRanges.Count); } + } + + public float previewAngle + { + get { return m_PreviewAngle; } + set + { + m_PreviewAngle = value; + SessionState.SetFloat("SpriteShape/PreviewAngle/" + target.GetInstanceID(), value); + } + } + + public UnityEngine.U2D.SpriteShape spriteShape + { + get + { + if (target == null) + return null; + return target as UnityEngine.U2D.SpriteShape; + } + } + + public void RegisterUndo(string name) + { + Undo.RegisterCompleteObjectUndo(spriteShape, name); + Undo.RegisterCompleteObjectUndo(this, name); + EditorUtility.SetDirty(spriteShape); + } + + public void OnEnable() + { + if (target == null) + return; + + m_PreviewAngle = SessionState.GetFloat("SpriteShape/PreviewAngle/" + target.GetInstanceID(), m_PreviewAngle); + + m_FillTextureProp = this.serializedObject.FindProperty("m_FillTexture"); + m_UseSpriteBordersProp = serializedObject.FindProperty("m_UseSpriteBorders"); + m_AngleRangesProp = this.serializedObject.FindProperty("m_Angles"); + m_CornerSpritesProp = this.serializedObject.FindProperty("m_CornerSprites"); + m_FillOffsetProp = this.serializedObject.FindProperty("m_FillOffset"); + + selectedIndex = SpriteShapeEditorUtility.GetRangeIndexFromAngle(angleRanges, m_PreviewAngle); + + SetupAngleRangeController(); + + Undo.undoRedoPerformed += UndoRedoPerformed; + } + + public override bool RequiresConstantRepaint() + { + return true; + } + + private void SetupAngleRangeController() + { + var radius = 125f; + var angleOffset = -90f; + var color1 = Contents.defaultColor1; + var color2 = Contents.defaultColor2; + + if (!EditorGUIUtility.isProSkin) + { + color1 = Contents.proColor1; + color2 = Contents.proColor2; + } + + controller = new AngleRangeController(); + controller.view = new AngleRangeView(); + controller.cache = this; + controller.radius = radius; + controller.angleOffset = angleOffset; + controller.gradientMin = color1; + controller.gradientMid = color2; + controller.gradientMax = color1; + controller.snap = true; + controller.selectionChanged += OnSelectionChange; + + OnSelectionChange(); + } + + private void OnSelectionChange() + { + CreateReorderableSpriteList(); + + EditorApplication.delayCall += () => + { + m_CurrentAngleRange = controller.selectedAngleRange; + }; + } + + private void OnDestroy() + { + if (m_PreviewSpriteMesh) + Object.DestroyImmediate(m_PreviewSpriteMesh); + + Undo.undoRedoPerformed -= UndoRedoPerformed; + } + + private void UndoRedoPerformed() + { + OnSelectionChange(); + } + + private void OnSelelectSpriteCallback(ReorderableList list) + { + if (selectedIndex >= 0) + { + SetPreviewSpriteIndex(selectedIndex, list.index); + } + } + + private bool OnCanAddCallback(ReorderableList list) + { + return (list.count < 64); + } + + private void OnRemoveSprite(ReorderableList list) + { + var count = list.count; + var index = list.index; + + ReorderableList.defaultBehaviours.DoRemoveButton(list); + + if (list.count < count && list.count > 0) + { + list.index = Mathf.Clamp(index, 0, list.count - 1); + OnSelelectSpriteCallback(list); + } + } + + private void DrawSpriteListHeader(Rect rect) + { + EditorGUI.LabelField(rect, Contents.spritesLabel); + HandleAngleSpriteListGUI(rect); + } + + private void DrawSpriteListElement(Rect rect, int index, bool selected, bool focused) + { + rect.y += 2f; + rect.height = EditorGUIUtility.singleLineHeight; + var sprite = m_AngleRangesProp.GetArrayElementAtIndex(selectedIndex).FindPropertyRelative("m_Sprites").GetArrayElementAtIndex(index); + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(rect, sprite, GUIContent.none); + if (EditorGUI.EndChangeCheck()) + { + m_AngleRangeSpriteList.index = index; + OnSelelectSpriteCallback(m_AngleRangeSpriteList); + } + } + + public void DrawHeader(GUIContent content) + { + EditorGUILayout.LabelField(content, EditorStyles.boldLabel); + } + + private void SetPreviewSpriteIndex(int rangeIndex, int index) + { + m_SpriteSelection[rangeIndex] = index; + } + + private int GetPreviewSpriteIndex(int rangeIndex) + { + int index; + m_SpriteSelection.TryGetValue(rangeIndex, out index); + + return index; + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUILayout.Space(); + DrawHeader(Contents.controlPointsLabel); + EditorGUILayout.PropertyField(m_UseSpriteBordersProp, Contents.useSpriteBorderLabel); + + + EditorGUILayout.Space(); + DrawHeader(Contents.fillLabel); + EditorGUILayout.PropertyField(m_FillTextureProp, Contents.fillTextureLabel); + EditorGUILayout.Slider(m_FillOffsetProp, -0.5f, 0.5f, Contents.fillScaleLabel); + + + if (m_FillTextureProp.objectReferenceValue != null) + { + var fillTex = m_FillTextureProp.objectReferenceValue as Texture2D; + if (fillTex.wrapModeU != TextureWrapMode.Repeat || fillTex.wrapModeV != TextureWrapMode.Repeat) + EditorGUILayout.HelpBox(Contents.wrapModeErrorLabel.text, MessageType.Warning); + } + + EditorGUILayout.Space(); + DrawHeader(Contents.angleRangesLabel); + DoRangesGUI(); + + if (targets.Length == 1) + { + DoRangeInspector(); + DoCreateRangeButton(); + } + + EditorGUILayout.Space(); + DrawHeader(Contents.cornerLabel); + + HashSet tightMeshSprites = new HashSet(); + + for (int i = 0; i < angleRanges.Count; ++i) + { + AngleRange angleRange = angleRanges[i]; + foreach (Sprite sprite in angleRange.sprites) + { + if (sprite != null) + { + string assetPath = AssetDatabase.GetAssetPath(sprite); + TextureImporter importer = AssetImporter.GetAtPath(assetPath) as TextureImporter; + if (importer != null) + { + TextureImporterSettings textureSettings = new TextureImporterSettings(); + importer.ReadTextureSettings(textureSettings); + if (textureSettings.spriteMeshType == SpriteMeshType.Tight) + tightMeshSprites.Add(sprite); + } + } + } + } + + EditorGUIUtility.labelWidth = EditorGUIUtility.labelWidth + 20f; + + for (int i = 0; i < m_CornerSpritesProp.arraySize; ++i) + { + var m_CornerProp = m_CornerSpritesProp.GetArrayElementAtIndex(i); + var m_CornerType = m_CornerProp.FindPropertyRelative("m_CornerType"); + var m_CornerSprite = m_CornerProp.FindPropertyRelative("m_Sprites").GetArrayElementAtIndex(0); + + EditorGUILayout.PropertyField(m_CornerSprite, new GUIContent(m_CornerType.enumDisplayNames[m_CornerType.intValue])); + + var sprite = m_CornerSprite.objectReferenceValue as Sprite; + if (sprite != null) + { + string assetPath = AssetDatabase.GetAssetPath(sprite); + TextureImporter importer = AssetImporter.GetAtPath(assetPath) as TextureImporter; + if (importer != null) + { + TextureImporterSettings textureSettings = new TextureImporterSettings(); + importer.ReadTextureSettings(textureSettings); + if (textureSettings.spriteMeshType == SpriteMeshType.Tight) + tightMeshSprites.Add(sprite); + } + } + } + + + EditorGUIUtility.labelWidth = 0; + + serializedObject.ApplyModifiedProperties(); + + if (tightMeshSprites.Count > 0) + { + int i = 0; + string tightSpriteWarning = "The following sprites ( "; + foreach (var sprite in tightMeshSprites) + { + string appendString = (i < tightMeshSprites.Count - 1) ? ", " : " ) "; + tightSpriteWarning += (sprite.name + appendString); + ++i; + } + tightSpriteWarning += "are imported as Sprites using Tight mesh. This can lead to Rendering Artifacts. Please use Full Rect."; + EditorGUILayout.HelpBox(tightSpriteWarning, MessageType.Warning); + } + + controller.view.DoCreateRangeTooltip(); + } + + private void DoRangeInspector() + { + var start = 0f; + var end = 0f; + var order = 0; + + if (m_CurrentAngleRange != null) + { + start = m_CurrentAngleRange.start; + end = m_CurrentAngleRange.end; + order = m_CurrentAngleRange.order; + } + + using (new EditorGUI.DisabledGroupScope(m_CurrentAngleRange == null)) + { + DrawHeader(new GUIContent(string.Format(Contents.angleRangeLabel.text, (end - start)))); + + EditorGUIUtility.labelWidth = 0f; + EditorGUI.BeginChangeCheck(); + + RangeField(ref start, ref end, ref order); + + if (EditorGUI.EndChangeCheck() && m_CurrentAngleRange != null) + { + RegisterUndo("Set Range"); + + m_CurrentAngleRange.order = order; + controller.SetRange(m_CurrentAngleRange, start, end); + + if (start >= end) + controller.RemoveInvalidRanges(); + } + + EditorGUILayout.Space(); + + if (m_AngleRangeSpriteList != null && angleRanges.Count > 0) + m_AngleRangeSpriteList.DoLayoutList(); + else + m_EmptySpriteList.DoLayoutList(); + } + } + + private void DoCreateRangeButton() + { + if (selectedIndex != kInvalidMinimum && angleRanges.Count != 0) + return; + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Create Range", GUILayout.MaxWidth(100f))) + { + RegisterUndo("Create Range"); + controller.CreateRange(); + } + + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + } + + private void RangeField(ref float start, ref float end, ref int order) + { + var values = new int[] { Mathf.RoundToInt(-start), Mathf.RoundToInt(-end), order }; + var labels = new GUIContent[] { new GUIContent("Start"), new GUIContent("End"), new GUIContent("Order") }; + + var position = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight); + EditorGUI.BeginChangeCheck(); + SpriteShapeEditorGUI.MultiDelayedIntField(position, labels, values, 40f); + if (EditorGUI.EndChangeCheck()) + { + start = -1f * values[0]; + end = -1f * values[1]; + order = values[2]; + } + } + + private void HandleAngleSpriteListGUI(Rect rect) + { + if (m_CurrentAngleRange == null || !isSelectedIndexValid) + return; + + var currentEvent = Event.current; + var usedEvent = false; + var sprites = m_AngleRangesProp.GetArrayElementAtIndex(selectedIndex).FindPropertyRelative("m_Sprites"); + switch (currentEvent.type) + { + case EventType.DragExited: + if (GUI.enabled) + HandleUtility.Repaint(); + break; + + case EventType.DragUpdated: + case EventType.DragPerform: + if (rect.Contains(currentEvent.mousePosition) && GUI.enabled) + { + // Check each single object, so we can add multiple objects in a single drag. + var didAcceptDrag = false; + var references = DragAndDrop.objectReferences; + foreach (var obj in references) + { + if (obj is Sprite) + { + Sprite spr = obj as Sprite; + if (spr.texture != null) + { + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + if (currentEvent.type == EventType.DragPerform && sprites.arraySize < 64) + { + sprites.InsertArrayElementAtIndex(sprites.arraySize); + var spriteProp = sprites.GetArrayElementAtIndex(sprites.arraySize - 1); + spriteProp.objectReferenceValue = obj; + didAcceptDrag = true; + DragAndDrop.activeControlID = 0; + } + } + } + } + + serializedObject.ApplyModifiedProperties(); + + if (didAcceptDrag) + { + GUI.changed = true; + DragAndDrop.AcceptDrag(); + usedEvent = true; + } + } + break; + } + + if (usedEvent) + currentEvent.Use(); + } + + private void DoRangesGUI() + { + var radius = controller.radius; + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + var rect = EditorGUILayout.GetControlRect(false, radius * 2f); + + if (Event.current.type == EventType.Repaint) + m_AngleRangeRect = rect; + + { //Draw background + var backgroundColor = Contents.proBackgroundColor; + var backgroundRangeColor = Contents.proBackgroundRangeColor; + + if (!EditorGUIUtility.isProSkin) + { + backgroundColor = Contents.defaultBackgroundColor; + backgroundRangeColor.a = 0.1f; + } + var c = Handles.color; + Handles.color = backgroundRangeColor; + SpriteShapeHandleUtility.DrawSolidArc(rect.center, Vector3.forward, Vector3.right, 360f, radius, AngleRangeGUI.kRangeWidth); + Handles.color = backgroundColor; + Handles.DrawSolidDisc(rect.center, Vector3.forward, radius - AngleRangeGUI.kRangeWidth + 1f); + Handles.color = c; + } + + if (targets.Length == 1) + { + { //Draw fill texture and sprite preview + SpriteShapeHandleUtility.DrawTextureArc( + m_FillTextureProp.objectReferenceValue as Texture, 100.0f, + rect.center, Vector3.forward, Quaternion.AngleAxis(m_PreviewAngle, Vector3.forward) * Vector3.right, 180f, + radius - AngleRangeGUI.kRangeWidth); + + var rectSize = Vector2.one * (radius - AngleRangeGUI.kRangeWidth) * 2f; + rectSize.y *= 0.33f; + var spriteRect = new Rect(rect.center - rectSize * 0.5f, rectSize); + DrawSpritePreview(spriteRect); + HandleSpritePreviewCycle(spriteRect); + } + + controller.rect = m_AngleRangeRect; + controller.OnGUI(); + } + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + } + + private void CreateReorderableSpriteList() + { + if (m_EmptySpriteList == null) + { + m_EmptySpriteList = new ReorderableList(new List(), typeof(Sprite), false, true, false, false) + { + drawHeaderCallback = (Rect rect) => { EditorGUI.LabelField(rect, Contents.spritesLabel); } + }; + } + + m_AngleRangeSpriteList = null; + + serializedObject.UpdateIfRequiredOrScript(); + + Debug.Assert(angleRanges.Count == m_AngleRangesProp.arraySize); + Debug.Assert(selectedIndex < angleRanges.Count); + + if (targets.Length == 1 && isSelectedIndexValid) + { + var spritesProp = m_AngleRangesProp.GetArrayElementAtIndex(selectedIndex).FindPropertyRelative("m_Sprites"); + m_AngleRangeSpriteList = new ReorderableList(spritesProp.serializedObject, spritesProp) + { + drawElementCallback = DrawSpriteListElement, + drawHeaderCallback = DrawSpriteListHeader, + onSelectCallback = OnSelelectSpriteCallback, + onRemoveCallback = OnRemoveSprite, + onCanAddCallback = OnCanAddCallback, + elementHeight = EditorGUIUtility.singleLineHeight + 6f + }; + } + } + + private void DrawSpritePreview(Rect rect) + { + if (Event.current.type != EventType.Repaint) + return; + + if (!isSelectedIndexValid) + return; + + var sprites = angleRanges[selectedIndex].sprites; + + if (sprites.Count == 0) + return; + + var selectedSpriteIndex = GetPreviewSpriteIndex(selectedIndex); + + if (selectedSpriteIndex == kInvalidMinimum || selectedSpriteIndex >= sprites.Count) + return; + + var sprite = sprites[selectedSpriteIndex]; + + if (sprite == null) + return; + + if (m_PreviewSprite != sprite) + { + m_PreviewSprite = sprite; + EditorSpriteGUIUtility.DrawSpriteInRectPrepare(rect, sprite, EditorSpriteGUIUtility.FitMode.Tiled, true, true, previewSpriteMesh); + } + + var material = EditorSpriteGUIUtility.spriteMaterial; + material.mainTexture = EditorSpriteGUIUtility.GetOriginalSpriteTexture(sprite); + + EditorSpriteGUIUtility.DrawMesh(previewSpriteMesh, material, rect.center, Quaternion.AngleAxis(m_PreviewAngle, Vector3.forward), new Vector3(1f, -1f, 1f)); + } + + private void HandleSpritePreviewCycle(Rect rect) + { + if (!isSelectedIndexValid) + return; + + Debug.Assert(m_AngleRangeSpriteList != null); + + var spriteIndex = GetPreviewSpriteIndex(selectedIndex); + var sprites = angleRanges[selectedIndex].sprites; + + var ev = Event.current; + if (ev.type == EventType.MouseDown && ev.button == 0 && HandleUtility.nearestControl == 0 && + ContainsPosition(rect, ev.mousePosition, m_PreviewAngle) && spriteIndex != kInvalidMinimum && sprites.Count > 0) + { + spriteIndex = Mathf.RoundToInt(Mathf.Repeat(spriteIndex + 1f, sprites.Count)); + SetPreviewSpriteIndex(selectedIndex, spriteIndex); + + m_AngleRangeSpriteList.GrabKeyboardFocus(); + m_AngleRangeSpriteList.index = spriteIndex; + + ev.Use(); + } + } + + private bool ContainsPosition(Rect rect, Vector2 position, float angle) + { + Vector2 delta = position - rect.center; + position = (Vector2)(Quaternion.AngleAxis(-angle, Vector3.forward) * (Vector3)delta) + rect.center; + return rect.Contains(position); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditor.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditor.cs.meta new file mode 100644 index 0000000..ab9aa7b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditor.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1e5643f1bcfd748dbb9155663dddd82b +timeCreated: 1503758178 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorAnalytics.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorAnalytics.cs new file mode 100644 index 0000000..48362ff --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorAnalytics.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.U2D; +using UnityEditor; + +namespace UnityEditor.U2D +{ + internal class SpriteShapeEditorAnalytics : ScriptableSingleton + { + SpriteShapeAnalytics m_Analytics = null; + + internal SpriteShapeAnalyticsEvents eventBus + { + get { return analytics.eventBus; } + } + + private SpriteShapeAnalytics analytics + { + get + { + if (m_Analytics == null) + m_Analytics = new SpriteShapeAnalytics(new SpriteShapeUnityAnalyticsStorage()); + + return m_Analytics; + } + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorAnalytics.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorAnalytics.cs.meta new file mode 100644 index 0000000..381898a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorAnalytics.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a2b1f28643d1cfc45a70b6790bad94bb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorGUI.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorGUI.cs new file mode 100644 index 0000000..246abb5 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorGUI.cs @@ -0,0 +1,36 @@ +using UnityEditor; +using UnityEngine; +using UnityEditor.Sprites; +using System.Collections; +using System.Collections.Generic; + +namespace UnityEditor.U2D +{ + public class SpriteShapeEditorGUI + { + private const float kSpacingSubLabel = 2.0f; + private const float kMiniLabelW = 13; + private const int kVerticalSpacingMultiField = 0; + private const float kIndentPerLevel = 15; + public static int s_FoldoutHash = "Foldout".GetHashCode(); + + public static void MultiDelayedIntField(Rect position, GUIContent[] subLabels, int[] values, float labelWidth) + { + int eCount = values.Length; + float w = (position.width - (eCount - 1) * kSpacingSubLabel) / eCount; + Rect nr = new Rect(position); + nr.width = w; + float t = EditorGUIUtility.labelWidth; + int l = EditorGUI.indentLevel; + EditorGUIUtility.labelWidth = labelWidth; + EditorGUI.indentLevel = 0; + for (int i = 0; i < values.Length; i++) + { + values[i] = EditorGUI.DelayedIntField(nr, subLabels[i], values[i]); + nr.x += w + kSpacingSubLabel; + } + EditorGUIUtility.labelWidth = t; + EditorGUI.indentLevel = l; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorGUI.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorGUI.cs.meta new file mode 100644 index 0000000..72aea2a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorGUI.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 201daa6b3b251405cba71fba2e47ac69 +timeCreated: 1503758178 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorTool.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorTool.cs new file mode 100644 index 0000000..00b7bd6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorTool.cs @@ -0,0 +1,316 @@ +using System; +using UnityEngine; +using UnityEngine.U2D; +using UnityEditor; +using UnityEditor.U2D.Path; +using UnityEditor.EditorTools; +using UnityEditor.ShortcutManagement; +using UnityEditor.U2D.Common; + +namespace UnityEditor.U2D.SpriteShapeInternal +{ + internal class CustomDrawer : IDrawer + { + private IDrawer m_Drawer = new Drawer(); + private SpriteShapeController m_SpriteShapeController; + + public CustomDrawer(SpriteShapeController spriteShapeController) + { + m_SpriteShapeController = spriteShapeController; + } + + private int GetSubDivisionCount() + { + return m_SpriteShapeController.splineDetail; + } + + void IDrawer.DrawBezier(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, float width, Color color) + { + Handles.color = color; + Handles.DrawAAPolyLine(null, width, Handles.MakeBezierPoints(p1, p4, p2, p3, GetSubDivisionCount())); + } + + void IDrawer.DrawCreatePointPreview(Vector3 position) + { + m_Drawer.DrawCreatePointPreview(position); + } + + void IDrawer.DrawLine(Vector3 p1, Vector3 p2, float width, Color color) + { + m_Drawer.DrawLine(p1, p2, width, color); + } + + void IDrawer.DrawPoint(Vector3 position) + { + m_Drawer.DrawPoint(position); + } + + void IDrawer.DrawPointHovered(Vector3 position) + { + m_Drawer.DrawPointHovered(position); + } + + void IDrawer.DrawPointSelected(Vector3 position) + { + m_Drawer.DrawPointSelected(position); + } + + void IDrawer.DrawTangent(Vector3 position, Vector3 tangent) + { + m_Drawer.DrawTangent(position, tangent); + } + } + + [Serializable] + internal class SpriteShapeData + { + public float height = 1f; + public int spriteIndex; + public bool corner = true; + } + + internal class ScriptableSpriteShapeData : ScriptableData { } + + [CanEditMultipleObjects] + [CustomEditor(typeof(ScriptableSpriteShapeData))] + internal class SpriteShapeDataInspector : Editor + { + private static class Contents + { + public static readonly GUIContent heightLabel = new GUIContent("Height", "Height override for control point."); + public static readonly GUIContent spriteIndexLabel = new GUIContent("Sprite Variant", "Index of the sprite variant at this control point"); + public static readonly GUIContent invalidSpriteLabel = new GUIContent("No sprite defined"); + public static readonly GUIContent cornerLabel = new GUIContent("Corner", "Set if Corner is automatic or disabled."); + + public static readonly int[] cornerValues = { 0, 1 }; + public static readonly GUIContent[] cornerOptions = { new GUIContent("Disabled"), new GUIContent("Automatic") }; + } + + private SerializedProperty m_Data; + private SerializedProperty m_SpriteIndexProperty; + private SerializedProperty m_HeightProperty; + private SerializedProperty m_CornerProperty; + + private void OnEnable() + { + m_Data = serializedObject.FindProperty("m_Data"); + m_SpriteIndexProperty = m_Data.FindPropertyRelative("spriteIndex"); + m_HeightProperty = m_Data.FindPropertyRelative("height"); + m_CornerProperty = m_Data.FindPropertyRelative("corner"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUI.BeginChangeCheck(); + var heightValue = EditorGUILayout.Slider(Contents.heightLabel, m_HeightProperty.floatValue, 0.1f, 4.0f); + if (EditorGUI.EndChangeCheck()) + m_HeightProperty.floatValue = heightValue; + + EditorGUI.BeginChangeCheck(); + var cornerValue = EditorGUILayout.IntPopup(Contents.cornerLabel, m_CornerProperty.boolValue ? 1 : 0, Contents.cornerOptions, Contents.cornerValues) > 0; + if (EditorGUI.EndChangeCheck()) + m_CornerProperty.boolValue = cornerValue; + + serializedObject.ApplyModifiedProperties(); + } + } + + internal class CustomPath : GenericScriptablePath { } + + [CanEditMultipleObjects] + [CustomEditor(typeof(CustomPath))] + internal class CustomPathInspector : GenericScriptablePathInspector { } + + [EditorTool("Edit SpriteShape", typeof(SpriteShapeController))] + internal class SpriteShapeEditorTool : PathEditorTool + { + private static InternalEditorBridge.ShortcutContext m_ShortcutContext; + + public static SpriteShapeEditorTool activeSpriteShapeEditorTool + { + get + { + if (m_ShortcutContext != null) + return m_ShortcutContext.context as SpriteShapeEditorTool; + return null; + } + } + + protected override bool GetLinearTangentIsZero(UnityEngine.Object target) + { + return true; + } + + protected override IDrawer GetCustomDrawer(UnityEngine.Object target) + { + return new CustomDrawer(target as SpriteShapeController); + } + + protected override IShape GetShape(UnityEngine.Object target) + { + return Polygon.empty; + } + + protected override void Initialize(CustomPath shapeEditor, SerializedObject serializedObject) + { + var controller = serializedObject.targetObject as SpriteShapeController; + var spline = controller.spline; + shapeEditor.shapeType = ShapeType.Spline; + shapeEditor.isOpenEnded = spline.isOpenEnded; + + for (var i = 0; i < spline.GetPointCount(); ++i) + { + var position = spline.GetPosition(i); + + shapeEditor.AddPoint(new ControlPoint() + { + position = spline.GetPosition(i), + localLeftTangent = spline.GetLeftTangent(i), + localRightTangent = spline.GetRightTangent(i), + tangentMode = (TangentMode)spline.GetTangentMode(i) + }); + + shapeEditor.SetData(i, new SpriteShapeData() + { + spriteIndex = spline.GetSpriteIndex(i), + height = spline.GetHeight(i), + corner = spline.GetCorner(i) + }); + } + + shapeEditor.UpdateTangentsFromMode(); + } + + protected override void SetShape(CustomPath shapeEditor, SerializedObject serializedObject) + { + serializedObject.Update(); + + var controller = serializedObject.targetObject as SpriteShapeController; + var splineProp = serializedObject.FindProperty("m_Spline"); + var controlPointsProp = splineProp.FindPropertyRelative("m_ControlPoints"); + + splineProp.FindPropertyRelative("m_IsOpenEnded").boolValue = shapeEditor.isOpenEnded; + + controlPointsProp.arraySize = shapeEditor.pointCount; + + for (var i = 0; i < shapeEditor.pointCount; ++i) + { + var elementProp = controlPointsProp.GetArrayElementAtIndex(i); + var point = shapeEditor.GetPoint(i); + var data = shapeEditor.GetData(i); + + elementProp.FindPropertyRelative("position").vector3Value = point.position; + elementProp.FindPropertyRelative("leftTangent").vector3Value = point.localLeftTangent; + elementProp.FindPropertyRelative("rightTangent").vector3Value = point.localRightTangent; + elementProp.FindPropertyRelative("mode").enumValueIndex = (int)point.tangentMode; + elementProp.FindPropertyRelative("height").floatValue = data.height; + elementProp.FindPropertyRelative("spriteIndex").intValue = data.spriteIndex; + elementProp.FindPropertyRelative("corner").boolValue = data.corner; + } + + serializedObject.ApplyModifiedProperties(); + } + + protected override void OnActivate() + { + RegisterShortcuts(); + } + + protected override void OnDeactivate() + { + UnregisterShortcuts(); + } + + private void CycleSpriteIndex() + { + foreach(var target in targets) + { + var spriteShapeController = target as SpriteShapeController; + var shapeEditor = GetPath(target); + Editor cachedEditor = null; + Editor.CreateCachedEditor(spriteShapeController, typeof(SpriteShapeControllerEditor), ref cachedEditor); + if (spriteShapeController == null || spriteShapeController.spriteShape == null || shapeEditor.selection.Count == 0 || cachedEditor == null || shapeEditor.selection.Count > 1) + continue; + + var spriteShape = spriteShapeController.spriteShape; + var scEditor = cachedEditor as SpriteShapeControllerEditor; + var selected = shapeEditor.selection.elements[0]; + + if (shapeEditor.selection.Contains(selected)) + { + shapeEditor.undoObject.RegisterUndo("Cycle Variant"); + var data = shapeEditor.GetData(selected); + + var angleRangeIndex = scEditor.GetAngleRange(selected); + if (angleRangeIndex != -1) + { + var angleRange = spriteShape.angleRanges[angleRangeIndex]; + if (angleRange.sprites.Count > 0) + data.spriteIndex = (data.spriteIndex + 1) % angleRange.sprites.Count; + shapeEditor.SetData(selected, data); + } + + SetPath(target); + } + } + } + + private static float SlopeAngle(Vector2 start, Vector2 end) + { + var dir = start - end; + dir.Normalize(); + var dvup = new Vector2(0, 1f); + var dvrt = new Vector2(1f, 0); + + var dr = Vector2.Dot(dir, dvrt); + var du = Vector2.Dot(dir, dvup); + var cu = Mathf.Acos(du); + var sn = dr >= 0 ? 1.0f : -1.0f; + var an = cu * Mathf.Rad2Deg * sn; + + // Adjust angles when direction is parallel to Up Axis. + an = (du != 1f) ? an : 0; + an = (du != -1f) ? an : -180f; + return an; + } + + private void RegisterShortcuts() + { + m_ShortcutContext = new InternalEditorBridge.ShortcutContext() + { + isActive = () => GUIUtility.hotControl == 0, + context = this + }; + + InternalEditorBridge.RegisterShortcutContext(m_ShortcutContext); + } + + private void UnregisterShortcuts() + { + InternalEditorBridge.UnregisterShortcutContext(m_ShortcutContext); + } + + [Shortcut("SpriteShape Editing/Cycle Tangent Mode", typeof(InternalEditorBridge.ShortcutContext), KeyCode.M)] + private static void ShortcutCycleTangentMode(ShortcutArguments args) + { + if (args.context == m_ShortcutContext) + (m_ShortcutContext.context as SpriteShapeEditorTool).CycleTangentMode(); + } + + [Shortcut("SpriteShape Editing/Cycle Variant", typeof(InternalEditorBridge.ShortcutContext), KeyCode.N)] + private static void ShortcutCycleSpriteIndex(ShortcutArguments args) + { + if (args.context == m_ShortcutContext) + (m_ShortcutContext.context as SpriteShapeEditorTool).CycleSpriteIndex(); + } + + [Shortcut("SpriteShape Editing/Mirror Tangent", typeof(InternalEditorBridge.ShortcutContext), KeyCode.B)] + private static void ShortcutCycleMirrorTangent(ShortcutArguments args) + { + if (args.context == m_ShortcutContext) + (m_ShortcutContext.context as SpriteShapeEditorTool).MirrorTangent(); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorTool.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorTool.cs.meta new file mode 100644 index 0000000..5bab9bd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorTool.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 301b54467351d474796896b209c59cc3 +timeCreated: 1503819723 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorUtility.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorUtility.cs new file mode 100644 index 0000000..7fbe5cf --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorUtility.cs @@ -0,0 +1,137 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.U2D; + +namespace UnityEditor.U2D.SpriteShape +{ + public class SpriteShapeEditorUtility + { + private static class Contents + { + public static readonly string createSpriteShapeString = "Create Sprite Shape"; + public static readonly string newSpriteShapeString = "SpriteShape"; + } + + public const float kMaxSideSize = 2.0f; + + public static UnityEngine.U2D.SpriteShape CreateSpriteShapeAsset() + { + UnityEngine.U2D.SpriteShape spriteShape = ScriptableObject.CreateInstance(); + ProjectWindowUtil.CreateAsset(spriteShape, "New SpriteShapeProfile.asset"); + Selection.activeObject = spriteShape; + + SpriteShapeEditorAnalytics.instance.eventBus.spriteShapeEvent.Invoke(spriteShape); + return spriteShape; + } + + public static SpriteShapeController CreateSpriteShapeController(UnityEngine.U2D.SpriteShape shape) + { + var objName = "New SpriteShapeController"; + GameObject gameObject = new GameObject(objName, typeof(SpriteShapeController)); + SpriteShapeController spriteShapeController = gameObject.GetComponent(); + spriteShapeController.spline.Clear(); + if (shape != null) + objName = shape.name; + gameObject.name = GameObjectUtility.GetUniqueNameForSibling(gameObject.transform.parent, objName); + SpriteShapeEditorAnalytics.instance.eventBus.spriteShapeRendererEvent.Invoke(gameObject.GetComponent()); + return spriteShapeController; + } + + public static SpriteShapeController CreateSpriteShapeControllerFromSelection() + { + var objName = "New SpriteShapeController"; + GameObject gameObject = new GameObject(objName, typeof(SpriteShapeController)); + SpriteShapeController spriteShapeController = gameObject.GetComponent(); + if (Selection.activeObject is UnityEngine.U2D.SpriteShape) + { + spriteShapeController.spriteShape = (UnityEngine.U2D.SpriteShape)Selection.activeObject; + objName = spriteShapeController.spriteShape.name; + } + else if (Selection.activeObject is GameObject) + { + var activeGO = (GameObject)Selection.activeObject; + var prefabType = PrefabUtility.GetPrefabAssetType(activeGO); + if (prefabType != PrefabAssetType.Regular && prefabType != PrefabAssetType.Model) + { + GameObjectUtility.SetParentAndAlign(gameObject, activeGO); + } + } + gameObject.name = GameObjectUtility.GetUniqueNameForSibling(gameObject.transform.parent, objName); + Undo.RegisterCreatedObjectUndo(gameObject, Contents.createSpriteShapeString); + Selection.activeGameObject = gameObject; + spriteShapeController.spline.Clear(); + SpriteShapeEditorAnalytics.instance.eventBus.spriteShapeRendererEvent.Invoke(gameObject.GetComponent()); + return spriteShapeController; + } + + public static void SetShapeFromAsset(SpriteShapeController spriteShapeController) + { + UnityEngine.U2D.SpriteShape spriteShape = spriteShapeController.spriteShape; + + if (!spriteShape) + { + SpriteShapeEditorUtility.SetToSquare(spriteShapeController); + return; + } + + if (spriteShape.angleRanges.Count == 1 && spriteShape.angleRanges[0].end - spriteShape.angleRanges[0].start == 360f) + SpriteShapeEditorUtility.SetToLine(spriteShapeController); + else if (spriteShape.angleRanges.Count < 8) + SpriteShapeEditorUtility.SetToSquare(spriteShapeController); + else + SpriteShapeEditorUtility.SetToOctogon(spriteShapeController); + } + + static void SetToSquare(SpriteShapeController spriteShapeController) + { + spriteShapeController.spline.Clear(); + spriteShapeController.spline.InsertPointAt(0, new Vector3(-kMaxSideSize, -kMaxSideSize, 0)); + spriteShapeController.spline.InsertPointAt(1, new Vector3(-kMaxSideSize, kMaxSideSize, 0)); + spriteShapeController.spline.InsertPointAt(2, new Vector3(kMaxSideSize, kMaxSideSize, 0)); + spriteShapeController.spline.InsertPointAt(3, new Vector3(kMaxSideSize, -kMaxSideSize, 0)); + } + + static void SetToLine(SpriteShapeController spriteShapeController) + { + spriteShapeController.spline.Clear(); + spriteShapeController.spline.InsertPointAt(0, new Vector3(-kMaxSideSize, 0.0f, 0)); + spriteShapeController.spline.InsertPointAt(1, new Vector3(kMaxSideSize, 0.0f, 0)); + spriteShapeController.spline.isOpenEnded = true; + } + + static void SetToOctogon(SpriteShapeController spriteShapeController) + { + float kMaxSideSizeHalf = kMaxSideSize * 0.5f; + + spriteShapeController.spline.Clear(); + spriteShapeController.spline.InsertPointAt(0, new Vector3(-kMaxSideSizeHalf, -kMaxSideSize, 0)); + spriteShapeController.spline.InsertPointAt(1, new Vector3(-kMaxSideSize, -kMaxSideSizeHalf, 0)); + spriteShapeController.spline.InsertPointAt(2, new Vector3(-kMaxSideSize, kMaxSideSizeHalf, 0)); + spriteShapeController.spline.InsertPointAt(3, new Vector3(-kMaxSideSizeHalf, kMaxSideSize, 0)); + spriteShapeController.spline.InsertPointAt(4, new Vector3(kMaxSideSizeHalf, kMaxSideSize, 0)); + spriteShapeController.spline.InsertPointAt(5, new Vector3(kMaxSideSize, kMaxSideSizeHalf, 0)); + spriteShapeController.spline.InsertPointAt(6, new Vector3(kMaxSideSize, -kMaxSideSizeHalf, 0)); + spriteShapeController.spline.InsertPointAt(7, new Vector3(kMaxSideSizeHalf, -kMaxSideSize, 0)); + } + + public static int GetRangeIndexFromAngle(UnityEngine.U2D.SpriteShape spriteShape, float angle) + { + return GetRangeIndexFromAngle(spriteShape.angleRanges, angle); + } + + public static int GetRangeIndexFromAngle(List angleRanges, float angle) + { + for (int i = 0; i < angleRanges.Count; ++i) + { + var angleRange = angleRanges[i]; + var range = angleRange.end - angleRange.start; + var angle2 = Mathf.Repeat(angle - angleRange.start, 360f); + + if (angle2 >= 0f && angle2 <= range) + return i; + } + + return -1; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorUtility.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorUtility.cs.meta new file mode 100644 index 0000000..a51aa54 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeEditorUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 465d9bad157c4de4994f6d05a8f9d38a +timeCreated: 1504685545 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeHandleUtility.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeHandleUtility.cs new file mode 100644 index 0000000..3f0f84e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeHandleUtility.cs @@ -0,0 +1,349 @@ +using UnityEditor; +using UnityEngine; +using UnityEditor.Sprites; +using System.Collections; +using System.Collections.Generic; + +namespace UnityEditor.U2D +{ + public class SpriteShapeHandleUtility + { + private class Styles + { + public Texture playheadTex; + public Texture handRightTex; + public Texture handLeftTex; + } + + private static Styles s_Styles; + private static Styles styles + { + get + { + if (s_Styles == null) + s_Styles = new Styles(); + + return s_Styles; + } + } + + static private Material s_HandleWireMaterial; + private static Material handleWireMaterial + { + get + { + if (!s_HandleWireMaterial) + s_HandleWireMaterial = (Material)EditorGUIUtility.LoadRequired("SceneView/2DHandleLines.mat"); + + return s_HandleWireMaterial; + } + } + + private static Material s_FillTextureMaterial; + private static Material fillTextureMaterial + { + get + { + if (s_FillTextureMaterial == null) + { + s_FillTextureMaterial = new Material(Shader.Find("Hidden/InternalSpritesInspector")); + s_FillTextureMaterial.hideFlags = HideFlags.DontSave; + } + s_FillTextureMaterial.SetFloat("_AdjustLinearForGamma", PlayerSettings.colorSpace == ColorSpace.Linear ? 1.0f : 0.0f); + return s_FillTextureMaterial; + } + } + + private static Mesh s_TextureCapMesh; + private static Mesh textureCapMesh + { + get + { + if (s_TextureCapMesh == null) + { + s_TextureCapMesh = new Mesh(); + s_TextureCapMesh.hideFlags = HideFlags.DontSave; + s_TextureCapMesh.vertices = new Vector3[] { + new Vector2(-0.5f, -0.5f), + new Vector2(-0.5f, 0.5f), + new Vector2(0.5f, 0.5f), + new Vector2(-0.5f, -0.5f), + new Vector2(0.5f, 0.5f), + new Vector2(0.5f, -0.5f) + }; + s_TextureCapMesh.uv = new Vector2[] { + Vector3.zero, + Vector3.up, + Vector3.up + Vector3.right, + Vector3.zero, + Vector3.up + Vector3.right, + Vector3.right + }; + s_TextureCapMesh.SetTriangles(new int[] { 0, 1, 2, 3, 4, 5 }, 0); + } + + return s_TextureCapMesh; + } + } + + private static readonly Vector3[] s_WireArcPoints = new Vector3[60]; + + public static float PosToAngle(Vector2 position, Vector2 center, float angleOffset) + { + Vector2 dir = (Quaternion.AngleAxis(angleOffset, Vector3.forward) * (position - center)).normalized; + return Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; + } + + public static Vector2 Slider2D(int id, Vector2 position, Vector3 capOffset, Quaternion rotation, float size, Handles.CapFunction drawCapFunction) + { + return Handles.Slider2D(id, position, capOffset, Vector3.forward, rotation * Vector3.up, rotation * Vector3.right, size, drawCapFunction, Vector2.zero); + } + + public static void DrawRangeOutline(float start, float end, float angleOffset, Vector2 center, float radius, float width) + { + Vector3 startVec = Quaternion.AngleAxis(start + angleOffset, Vector3.forward) * Vector3.right; + Vector3 endVec = Quaternion.AngleAxis(end + angleOffset, Vector3.forward) * Vector3.right; + + Handles.DrawWireArc(center, Vector3.forward, startVec, end - start, radius - width); + Handles.DrawWireArc(center, Vector3.forward, startVec, end - start, radius); + Handles.DrawLine(startVec * (radius - width) + (Vector3)center, startVec * radius + (Vector3)center); + Handles.DrawLine(endVec * (radius - width) + (Vector3)center, endVec * radius + (Vector3)center); + } + + private static void ApplyWireMaterial() + { + UnityEngine.Rendering.CompareFunction zTest = UnityEngine.Rendering.CompareFunction.Always; + ApplyWireMaterial(zTest); + } + + private static void ApplyWireMaterial(UnityEngine.Rendering.CompareFunction zTest) + { + Material mat = handleWireMaterial; + mat.SetInt("_HandleZTest", (int)zTest); + mat.SetPass(0); + } + + static void SetDiscSectionPoints(Vector3[] dest, Vector3 center, Vector3 normal, Vector3 from, float angle, float radius) + { + Vector3 fromn = from.normalized; + Quaternion r = Quaternion.AngleAxis(angle / (float)(dest.Length - 1), normal); + Vector3 tangent = fromn * radius; + for (int i = 0; i < dest.Length; i++) + { + dest[i] = center + tangent; + tangent = r * tangent; + } + } + + public static void DrawSolidArc(Vector3 center, Vector3 normal, Vector3 from, float angle, float radius, float width) + { + if (Event.current.type != EventType.Repaint) + return; + + SetDiscSectionPoints(s_WireArcPoints, center, normal, from, angle, radius); + + Shader.SetGlobalColor("_HandleColor", Handles.color); + Shader.SetGlobalFloat("_HandleSize", 1); + + ApplyWireMaterial(Handles.zTest); + + float widthPercentage = 1f - Mathf.Clamp01(width / radius); + // Draw it twice to ensure backface culling doesn't hide any of the faces + GL.PushMatrix(); + GL.MultMatrix(Handles.matrix); + GL.Begin(GL.TRIANGLES); + for (int i = 1, count = s_WireArcPoints.Length; i < count; ++i) + { + Vector3 d1 = s_WireArcPoints[i - 1] - center; + Vector3 d2 = s_WireArcPoints[i] - center; + GL.Color(Handles.color); + GL.Vertex(d1 * widthPercentage + center); + GL.Vertex(s_WireArcPoints[i - 1]); + GL.Vertex(s_WireArcPoints[i]); + GL.Vertex(d1 * widthPercentage + center); + GL.Vertex(s_WireArcPoints[i]); + GL.Vertex(d2 * widthPercentage + center); + + GL.Vertex(d1 * widthPercentage + center); + GL.Vertex(s_WireArcPoints[i]); + GL.Vertex(s_WireArcPoints[i - 1]); + GL.Vertex(d1 * widthPercentage + center); + GL.Vertex(d2 * widthPercentage + center); + GL.Vertex(s_WireArcPoints[i]); + } + GL.End(); + GL.PopMatrix(); + } + + public static void DrawTextureArc(Texture texture, float pixelsPerRadius, Vector3 center, Vector3 normal, Vector3 from, float angle, float radius) + { + if (Event.current.type != EventType.Repaint || !texture) + return; + + SetDiscSectionPoints(s_WireArcPoints, Vector3.zero, normal, from, angle, 0.5f); + + fillTextureMaterial.mainTexture = texture; + fillTextureMaterial.mainTextureScale = new Vector2(1f, -1f); + fillTextureMaterial.mainTextureOffset = Vector2.zero; + fillTextureMaterial.SetPass(0); + + Matrix4x4 matrix = new Matrix4x4(); + matrix.SetTRS(center, Quaternion.identity, new Vector3(radius, radius, 1) * 2f); + Vector3 texOffset = Vector2.one * 0.5f; + float scale = pixelsPerRadius / radius; + + GL.PushMatrix(); + GL.LoadPixelMatrix(); + GL.MultMatrix(matrix); + GL.Begin(GL.TRIANGLES); + for (int i = 1, count = s_WireArcPoints.Length; i < count; ++i) + { + GL.Color(Handles.color); + GL.TexCoord(texOffset); + GL.Vertex(Vector3.zero); + GL.TexCoord(s_WireArcPoints[i - 1] * scale + texOffset); + GL.Vertex(s_WireArcPoints[i - 1]); + GL.TexCoord(s_WireArcPoints[i] * scale + texOffset); + GL.Vertex(s_WireArcPoints[i]); + GL.TexCoord(texOffset); + GL.Vertex(Vector3.zero); + GL.TexCoord(s_WireArcPoints[i] * scale + texOffset); + GL.Vertex(s_WireArcPoints[i]); + GL.TexCoord(s_WireArcPoints[i - 1] * scale + texOffset); + GL.Vertex(s_WireArcPoints[i - 1]); + } + GL.End(); + GL.PopMatrix(); + } + + public static void PlayHeadCap(int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType) + { + if (styles.playheadTex == null) + styles.playheadTex = AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.spriteshape/Editor/Handles/ss_playhead.png"); + GUITextureCap(controlID, styles.playheadTex, position, rotation, size, eventType); + } + + public static void RangeLeftCap(int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType) + { + if (styles.handLeftTex == null) + styles.handLeftTex = AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.spriteshape/Editor/Handles/ss_leftrange.png"); + GUITextureCap(controlID, styles.handLeftTex, position, rotation, size, eventType); + } + + public static void RangeRightCap(int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType) + { + if (styles.handRightTex == null) + styles.handRightTex = AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.spriteshape/Editor/Handles/ss_rightrange.png"); + GUITextureCap(controlID, styles.handRightTex, position, rotation, size, eventType); + } + + public static void GUITextureCap(int controlID, Texture texture, Vector3 position, Quaternion rotation, float size, EventType eventType) + { + switch (eventType) + { + case (EventType.Layout): + HandleUtility.AddControl(controlID, DistanceToRectangle(position, rotation, Vector2.one * size * 0.5f)); + break; + case (EventType.Repaint): + + FilterMode filterMode = texture.filterMode; + texture.filterMode = FilterMode.Bilinear; + + EditorSpriteGUIUtility.spriteMaterial.mainTexture = texture; + + float w = (float)texture.width; + float h = (float)texture.height; + float max = Mathf.Max(w, h); + + Vector3 scale = new Vector2(w / max, h / max) * size; + + if (Camera.current == null) + scale.y *= -1f; + + EditorSpriteGUIUtility.DrawMesh(textureCapMesh, EditorSpriteGUIUtility.spriteMaterial, position, rotation, scale); + + texture.filterMode = filterMode; + break; + } + } + + public static float DistanceToArcWidth(Vector2 position, Vector2 center, float start, float end, float radius, float width, float angleOffet) + { + float innerRadius = radius - width; + float angle = PosToAngle(position, center, -angleOffet); + + angle = Mathf.Repeat(angle - start, 360f); + float range = end - start; + + if (angle >= 0f && angle <= range) + { + float distanceToCenter = (position - center).magnitude; + + if (distanceToCenter <= radius && distanceToCenter >= innerRadius) + return 0f; + else if (distanceToCenter > radius) + return distanceToCenter - radius; + else if (distanceToCenter < innerRadius) + return innerRadius - distanceToCenter; + } + else if (angle < 0f) + { + Vector2 pos1 = (Vector2)(Quaternion.AngleAxis(start + angleOffet, Vector3.forward) * Vector3.right * radius) + center; + Vector2 pos2 = (Vector2)(Quaternion.AngleAxis(start + angleOffet, Vector3.forward) * Vector3.right * innerRadius) + center; + + return Mathf.Min((position - pos1).magnitude, (position - pos2).magnitude); + } + else if (angle > range) + { + Vector2 pos1 = (Vector2)(Quaternion.AngleAxis(end + angleOffet, Vector3.forward) * Vector3.right * radius) + center; + Vector2 pos2 = (Vector2)(Quaternion.AngleAxis(end + angleOffet, Vector3.forward) * Vector3.right * innerRadius) + center; + + return Mathf.Min((position - pos1).magnitude, (position - pos2).magnitude); + } + + return float.MaxValue; + } + + public static float DistanceToRectangle(Vector3 position, Quaternion rotation, Vector2 size) + { + Vector3[] points = { Vector3.zero, Vector3.zero, Vector3.zero, Vector3.zero, Vector3.zero }; + Vector3 sideways = rotation * new Vector3(size.x, 0, 0); + Vector3 up = rotation * new Vector3(0, size.y, 0); + points[0] = HandleUtility.WorldToGUIPoint(position + sideways + up); + points[1] = HandleUtility.WorldToGUIPoint(position + sideways - up); + points[2] = HandleUtility.WorldToGUIPoint(position - sideways - up); + points[3] = HandleUtility.WorldToGUIPoint(position - sideways + up); + points[4] = points[0]; + + Vector2 pos = Event.current.mousePosition; + bool oddNodes = false; + int j = 4; + for (int i = 0; i < 5; i++) + { + if ((points[i].y > pos.y) != (points[j].y > pos.y)) + { + if (pos.x < (points[j].x - points[i].x) * (pos.y - points[i].y) / (points[j].y - points[i].y) + points[i].x) + { + oddNodes = !oddNodes; + } + } + j = i; + } + if (!oddNodes) + { + // Distance to closest edge (not so fast) + float dist, closestDist = -1f; + j = 1; + for (int i = 0; i < 4; i++) + { + dist = HandleUtility.DistancePointToLineSegment(pos, points[i], points[j++]); + if (dist < closestDist || closestDist < 0) + closestDist = dist; + } + return closestDist; + } + else + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeHandleUtility.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeHandleUtility.cs.meta new file mode 100644 index 0000000..ecfb187 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/SpriteShapeHandleUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 3c4c6b04b82bb68428942652e2972a8c +timeCreated: 1505446713 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Unity.2D.SpriteShape.Editor.asmdef b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Unity.2D.SpriteShape.Editor.asmdef new file mode 100644 index 0000000..f7bd891 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Unity.2D.SpriteShape.Editor.asmdef @@ -0,0 +1,21 @@ +{ + "name": "Unity.2D.SpriteShape.Editor", + "references": [ + "Unity.InternalAPIEditorBridge.001", + "Unity.2D.Common.Editor", + "Unity.2D.Common.Runtime", + "Unity.2D.SpriteShape.Runtime", + "Unity.2D.Path.Editor" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Unity.2D.SpriteShape.Editor.asmdef.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Unity.2D.SpriteShape.Editor.asmdef.meta new file mode 100644 index 0000000..5d287f1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Editor/Unity.2D.SpriteShape.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bfbb4a459210651499d21f444f9b55fd +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/LICENSE.md b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/LICENSE.md new file mode 100644 index 0000000..6db5c8c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/LICENSE.md @@ -0,0 +1,29 @@ +com.unity.2d.spriteshape copyright © 2020 Unity Technologies ApS + +Unity hereby grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available with this License ("**_Software_**"), subject to the following terms and conditions: + +1. *Unity Companion Use Only*. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity development engine software license ("**_Engine License_**"). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted. + +1. *No Modification of Engine License*. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way. + +1. *Ownership & Grant Back to You*. + + 3.1. You own your content. In this License, "derivative works" means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); “derivative works” of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content. + + 3.2. Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity. + + 3.3. You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License. + +1. *Trademarks*. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates ("**_Trademarks_**"). Descriptive uses of Trademarks are permitted; see, for example, Unity’s Branding Usage Guidelines at [https://unity3d.com/public-relations/brand](https://unity3d.com/public-relations/brand). + +1. *Notices & Third-Party Rights*. This License, including the copyright notice above, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity "third-party notices" or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms. + +1. *DISCLAIMER, LIMITATION OF LIABILITY*. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +1. *USE IS ACCEPTANCE and License Versions*. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License. + +1. *Use in Compliance with Law and Termination*. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License. + +1. *Severability*. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect. + +1. *Governing Law and Venue*. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License ("**_Dispute_**"). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/LICENSE.md.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/LICENSE.md.meta new file mode 100644 index 0000000..bc6795c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 893b6fc79706f4a7cad3f07ed30c3f4c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/README.md b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/README.md new file mode 100644 index 0000000..92d4877 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/README.md @@ -0,0 +1,21 @@ +# About 2D SpriteShape + +Use the **2D SpriteShape** package as a powerful worldbuilding tool that allows you to tile Sprites along the path of a shape, with the Sprites automatically deforming in response to different angles according to their settings. For example, use **2D SpriteShapes** to quickly build various 2D platforms by editing their spline paths into different shapes. + +# Installing 2D SpriteShape + +To install this package, please follow the instructions in the [Package Manager documentation](https://docs.unity3d.com/Packages/com.unity.package-manager-ui@1.9/manual/index.html). + +# Links to Feature Documentation and Useful Resources + +* [2D SpriteShape Online Documentation](https://github.com/Unity-Technologies/2d-spriteshape-samples/blob/master/Documentation/SpriteShape.md) + +* [2D SpriteShape Samples](https://github.com/Unity-Technologies/2d-spriteshape-samples) + +* [2D SpriteShape Discussion Forums](https://forum.unity.com/threads/spriteshape-preview-package.522575/) + +# Requirements + +This version of **2D SpriteShape** is compatible with the following versions of the Unity Editor: + +* 2018.1 and later (recommended) \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/README.md.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/README.md.meta new file mode 100644 index 0000000..f8bd02e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 79531da4240f84a7a9187cfde72e9612 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime.meta new file mode 100644 index 0000000..0233cfc --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 825aa2422a5cc4c60b5eb787fe31a9a6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/AssemblyInfo.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/AssemblyInfo.cs new file mode 100644 index 0000000..9a0af01 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly: InternalsVisibleTo("Unity.2D.SpriteShape.Editor")] \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/AssemblyInfo.cs.meta new file mode 100644 index 0000000..7394824 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7974be9b5f0db0f41a7acc758375c648 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/BezierUtility.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/BezierUtility.cs new file mode 100644 index 0000000..01278d3 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/BezierUtility.cs @@ -0,0 +1,267 @@ + +using Unity.Collections; +using Unity.Mathematics; + +namespace UnityEngine.U2D +{ + public static class BezierUtility + { + static Vector3[] s_TempPoints = new Vector3[3]; + + public static Vector3 BezierPoint(Vector3 startPosition, Vector3 startTangent, Vector3 endTangent, Vector3 endPosition, float t) + { + float s = 1.0f - t; + return s * s * s * startPosition + 3.0f * s * s * t * startTangent + 3.0f * s * t * t * endTangent + t * t * t * endPosition; + } + internal static float GetSpritePixelWidth(Sprite sprite) + { + float4 meta = new float4(sprite.pixelsPerUnit, sprite.pivot.y / sprite.textureRect.height, sprite.rect.width, sprite.rect.height); + float4 border = new float4(sprite.border.x, sprite.border.y, sprite.border.z, sprite.border.w); + float rpunits = 1.0f / meta.x; + float2 whsize = new float2(meta.z, meta.w) * rpunits; + + border = border * rpunits; + float stPixelU = border.x; + float enPixelU = whsize.x - border.z; + float pxlWidth = enPixelU - stPixelU; + return pxlWidth; + } + internal static float BezierLength(NativeArray shapePoints, int splineDetail) + { + // Expand the Bezier. + int controlPointContour = shapePoints.Length - 1; + float spd = 0; + float fmax = (float)(splineDetail - 1); + for (int i = 0; i < controlPointContour; ++i) + { + int j = i + 1; + ShapeControlPoint cp = shapePoints[i]; + ShapeControlPoint pp = shapePoints[j]; + + Vector3 p0 = cp.position; + Vector3 p1 = pp.position; + Vector3 sp = p0; + Vector3 rt = p0 + cp.rightTangent; + Vector3 lt = p1 + pp.leftTangent; + + for (int n = 0; n < splineDetail; ++n) + { + float t = (float)n / fmax; + Vector3 bp = BezierPoint(rt, p0, p1, lt, t); + spd += math.distance(bp, sp); + sp = bp; + } + } + + return spd; + } + + public static Vector3 ClosestPointOnCurve(Vector3 point, Vector3 startPosition, Vector3 endPosition, Vector3 startTangent, Vector3 endTangent, out float t) + { + Vector3 startToEnd = endPosition - startPosition; + Vector3 startToTangent = (startTangent - startPosition); + Vector3 endToTangent = (endTangent - endPosition); + + float sqrError = 0.001f; + + if (Colinear(startToTangent, startToEnd, sqrError) && Colinear(endToTangent, startToEnd, sqrError)) + return ClosestPointToSegment(point, startPosition, endPosition, out t); + + Vector3 leftStartPosition; + Vector3 leftEndPosition; + Vector3 leftStartTangent; + Vector3 leftEndTangent; + + Vector3 rightStartPosition; + Vector3 rightEndPosition; + Vector3 rightStartTangent; + Vector3 rightEndTangent; + + float leftStartT = 0f; + float leftEndT = 0.5f; + float rightStartT = 0.5f; + float rightEndT = 1f; + + SplitBezier(0.5f, startPosition, endPosition, startTangent, endTangent, + out leftStartPosition, out leftEndPosition, out leftStartTangent, out leftEndTangent, + out rightStartPosition, out rightEndPosition, out rightStartTangent, out rightEndTangent); + + Vector3 pointLeft = ClosestPointOnCurveIterative(point, leftStartPosition, leftEndPosition, leftStartTangent, leftEndTangent, sqrError, ref leftStartT, ref leftEndT); + Vector3 pointRight = ClosestPointOnCurveIterative(point, rightStartPosition, rightEndPosition, rightStartTangent, rightEndTangent, sqrError, ref rightStartT, ref rightEndT); + + if ((point - pointLeft).sqrMagnitude < (point - pointRight).sqrMagnitude) + { + t = leftStartT; + return pointLeft; + } + + t = rightStartT; + return pointRight; + } + + public static Vector3 ClosestPointOnCurveFast(Vector3 point, Vector3 startPosition, Vector3 endPosition, Vector3 startTangent, Vector3 endTangent, out float t) + { + float sqrError = 0.001f; + float startT = 0f; + float endT = 1f; + + Vector3 closestPoint = ClosestPointOnCurveIterative(point, startPosition, endPosition, startTangent, endTangent, sqrError, ref startT, ref endT); + + t = startT; + + return closestPoint; + } + + private static Vector3 ClosestPointOnCurveIterative(Vector3 point, Vector3 startPosition, Vector3 endPosition, Vector3 startTangent, Vector3 endTangent, float sqrError, ref float startT, ref float endT) + { + while ((startPosition - endPosition).sqrMagnitude > sqrError) + { + Vector3 startToEnd = endPosition - startPosition; + Vector3 startToTangent = (startTangent - startPosition); + Vector3 endToTangent = (endTangent - endPosition); + + if (Colinear(startToTangent, startToEnd, sqrError) && Colinear(endToTangent, startToEnd, sqrError)) + { + float t; + Vector3 closestPoint = ClosestPointToSegment(point, startPosition, endPosition, out t); + t *= (endT - startT); + startT += t; + endT -= t; + return closestPoint; + } + + Vector3 leftStartPosition; + Vector3 leftEndPosition; + Vector3 leftStartTangent; + Vector3 leftEndTangent; + + Vector3 rightStartPosition; + Vector3 rightEndPosition; + Vector3 rightStartTangent; + Vector3 rightEndTangent; + + SplitBezier(0.5f, startPosition, endPosition, startTangent, endTangent, + out leftStartPosition, out leftEndPosition, out leftStartTangent, out leftEndTangent, + out rightStartPosition, out rightEndPosition, out rightStartTangent, out rightEndTangent); + + s_TempPoints[0] = leftStartPosition; + s_TempPoints[1] = leftStartTangent; + s_TempPoints[2] = leftEndTangent; + + float sqrDistanceLeft = SqrDistanceToPolyLine(point, s_TempPoints); + + s_TempPoints[0] = rightEndPosition; + s_TempPoints[1] = rightEndTangent; + s_TempPoints[2] = rightStartTangent; + + float sqrDistanceRight = SqrDistanceToPolyLine(point, s_TempPoints); + + if (sqrDistanceLeft < sqrDistanceRight) + { + startPosition = leftStartPosition; + endPosition = leftEndPosition; + startTangent = leftStartTangent; + endTangent = leftEndTangent; + + endT -= (endT - startT) * 0.5f; + } + else + { + startPosition = rightStartPosition; + endPosition = rightEndPosition; + startTangent = rightStartTangent; + endTangent = rightEndTangent; + + startT += (endT - startT) * 0.5f; + } + } + + return endPosition; + } + + public static void SplitBezier(float t, Vector3 startPosition, Vector3 endPosition, Vector3 startRightTangent, Vector3 endLeftTangent, + out Vector3 leftStartPosition, out Vector3 leftEndPosition, out Vector3 leftStartTangent, out Vector3 leftEndTangent, + out Vector3 rightStartPosition, out Vector3 rightEndPosition, out Vector3 rightStartTangent, out Vector3 rightEndTangent) + { + Vector3 tangent0 = (startRightTangent - startPosition); + Vector3 tangent1 = (endLeftTangent - endPosition); + Vector3 tangentEdge = (endLeftTangent - startRightTangent); + + Vector3 tangentPoint0 = startPosition + tangent0 * t; + Vector3 tangentPoint1 = endPosition + tangent1 * (1f - t); + Vector3 tangentEdgePoint = startRightTangent + tangentEdge * t; + + Vector3 newTangent0 = tangentPoint0 + (tangentEdgePoint - tangentPoint0) * t; + Vector3 newTangent1 = tangentPoint1 + (tangentEdgePoint - tangentPoint1) * (1f - t); + Vector3 newTangentEdge = newTangent1 - newTangent0; + + Vector3 bezierPoint = newTangent0 + newTangentEdge * t; + + leftStartPosition = startPosition; + leftEndPosition = bezierPoint; + leftStartTangent = tangentPoint0; + leftEndTangent = newTangent0; + + rightStartPosition = bezierPoint; + rightEndPosition = endPosition; + rightStartTangent = newTangent1; + rightEndTangent = tangentPoint1; + } + + private static Vector3 ClosestPointToSegment(Vector3 point, Vector3 segmentStart, Vector3 segmentEnd, out float t) + { + Vector3 relativePoint = point - segmentStart; + Vector3 segment = (segmentEnd - segmentStart); + Vector3 segmentDirection = segment.normalized; + float length = segment.magnitude; + + float dot = Vector3.Dot(relativePoint, segmentDirection); + + if (dot <= 0f) + dot = 0f; + else if (dot >= length) + dot = length; + + t = dot / length; + + return segmentStart + segment * t; + } + + private static float SqrDistanceToPolyLine(Vector3 point, Vector3[] points) + { + float minDistance = float.MaxValue; + + for (int i = 0; i < points.Length - 1; ++i) + { + float distance = SqrDistanceToSegment(point, points[i], points[i + 1]); + + if (distance < minDistance) + minDistance = distance; + } + + return minDistance; + } + + private static float SqrDistanceToSegment(Vector3 point, Vector3 segmentStart, Vector3 segmentEnd) + { + Vector3 relativePoint = point - segmentStart; + Vector3 segment = (segmentEnd - segmentStart); + Vector3 segmentDirection = segment.normalized; + float length = segment.magnitude; + + float dot = Vector3.Dot(relativePoint, segmentDirection); + + if (dot <= 0f) + return (point - segmentStart).sqrMagnitude; + else if (dot >= length) + return (point - segmentEnd).sqrMagnitude; + + return Vector3.Cross(relativePoint, segmentDirection).sqrMagnitude; + } + + private static bool Colinear(Vector3 v1, Vector3 v2, float error = 0.0001f) + { + return Mathf.Abs(v1.x * v2.y - v1.y * v2.x + v1.x * v2.z - v1.z * v2.x + v1.y * v2.z - v1.z * v2.y) < error; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/BezierUtility.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/BezierUtility.cs.meta new file mode 100644 index 0000000..2701788 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/BezierUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e49f082c717ea884dae7404b70a08c56 +timeCreated: 1505799796 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External.meta new file mode 100644 index 0000000..9528196 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 30fdb7163494e28429d56613fe407bf4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet.meta new file mode 100644 index 0000000..9f4d855 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9214d94ab547c5447a11c7a7c6a59482 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Dict.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Dict.cs new file mode 100644 index 0000000..5b848cc --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Dict.cs @@ -0,0 +1,107 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is furnished to do so, +** subject to the following conditions: +** +** The above copyright notice including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +namespace Unity.SpriteShape.External +{ + +namespace LibTessDotNet +{ + internal class Dict where TValue : class + { + public class Node + { + internal TValue _key; + internal Node _prev, _next; + + public TValue Key { get { return _key; } } + public Node Prev { get { return _prev; } } + public Node Next { get { return _next; } } + } + + public delegate bool LessOrEqual(TValue lhs, TValue rhs); + + private LessOrEqual _leq; + Node _head; + + public Dict(LessOrEqual leq) + { + _leq = leq; + + _head = new Node { _key = null }; + _head._prev = _head; + _head._next = _head; + } + + public Node Insert(TValue key) + { + return InsertBefore(_head, key); + } + + public Node InsertBefore(Node node, TValue key) + { + do { + node = node._prev; + } while (node._key != null && !_leq(node._key, key)); + + var newNode = new Node { _key = key }; + newNode._next = node._next; + node._next._prev = newNode; + newNode._prev = node; + node._next = newNode; + + return newNode; + } + + public Node Find(TValue key) + { + var node = _head; + do { + node = node._next; + } while (node._key != null && !_leq(key, node._key)); + return node; + } + + public Node Min() + { + return _head._next; + } + + public void Remove(Node node) + { + node._next._prev = node._prev; + node._prev._next = node._next; + } + } +} + +} // namespace Unity.VectorGraphics.External \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Dict.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Dict.cs.meta new file mode 100644 index 0000000..457d986 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Dict.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1f51a5b71c3ce943b689d3664e4d5fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Geom.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Geom.cs new file mode 100644 index 0000000..b4b3b2d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Geom.cs @@ -0,0 +1,301 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is furnished to do so, +** subject to the following conditions: +** +** The above copyright notice including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Diagnostics; + +namespace Unity.SpriteShape.External +{ + +using Real = System.Single; +namespace LibTessDotNet +{ + internal static class Geom + { + public static bool IsWindingInside(WindingRule rule, int n) + { + switch (rule) + { + case WindingRule.EvenOdd: + return (n & 1) == 1; + case WindingRule.NonZero: + return n != 0; + case WindingRule.Positive: + return n > 0; + case WindingRule.Negative: + return n < 0; + case WindingRule.AbsGeqTwo: + return n >= 2 || n <= -2; + } + throw new Exception("Wrong winding rule"); + } + + public static bool VertCCW(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + return (u._s * (v._t - w._t) + v._s * (w._t - u._t) + w._s * (u._t - v._t)) >= 0.0f; + } + public static bool VertEq(MeshUtils.Vertex lhs, MeshUtils.Vertex rhs) + { + return lhs._s == rhs._s && lhs._t == rhs._t; + } + public static bool VertLeq(MeshUtils.Vertex lhs, MeshUtils.Vertex rhs) + { + return (lhs._s < rhs._s) || (lhs._s == rhs._s && lhs._t <= rhs._t); + } + + /// + /// Given three vertices u,v,w such that VertLeq(u,v) && VertLeq(v,w), + /// evaluates the t-coord of the edge uw at the s-coord of the vertex v. + /// Returns v->t - (uw)(v->s), ie. the signed distance from uw to v. + /// If uw is vertical (and thus passes thru v), the result is zero. + /// + /// The calculation is extremely accurate and stable, even when v + /// is very close to u or w. In particular if we set v->t = 0 and + /// let r be the negated result (this evaluates (uw)(v->s)), then + /// r is guaranteed to satisfy MIN(u->t,w->t) <= r <= MAX(u->t,w->t). + /// + public static Real EdgeEval(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + Debug.Assert(VertLeq(u, v) && VertLeq(v, w)); + + var gapL = v._s - u._s; + var gapR = w._s - v._s; + + if (gapL + gapR > 0.0f) + { + if (gapL < gapR) + { + return (v._t - u._t) + (u._t - w._t) * (gapL / (gapL + gapR)); + } + else + { + return (v._t - w._t) + (w._t - u._t) * (gapR / (gapL + gapR)); + } + } + /* vertical line */ + return 0; + } + + /// + /// Returns a number whose sign matches EdgeEval(u,v,w) but which + /// is cheaper to evaluate. Returns > 0, == 0 , or < 0 + /// as v is above, on, or below the edge uw. + /// + public static Real EdgeSign(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + Debug.Assert(VertLeq(u, v) && VertLeq(v, w)); + + var gapL = v._s - u._s; + var gapR = w._s - v._s; + + if (gapL + gapR > 0.0f) + { + return (v._t - w._t) * gapL + (v._t - u._t) * gapR; + } + /* vertical line */ + return 0; + } + + public static bool TransLeq(MeshUtils.Vertex lhs, MeshUtils.Vertex rhs) + { + return (lhs._t < rhs._t) || (lhs._t == rhs._t && lhs._s <= rhs._s); + } + + public static Real TransEval(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + Debug.Assert(TransLeq(u, v) && TransLeq(v, w)); + + var gapL = v._t - u._t; + var gapR = w._t - v._t; + + if (gapL + gapR > 0.0f) + { + if (gapL < gapR) + { + return (v._s - u._s) + (u._s - w._s) * (gapL / (gapL + gapR)); + } + else + { + return (v._s - w._s) + (w._s - u._s) * (gapR / (gapL + gapR)); + } + } + /* vertical line */ + return 0; + } + + public static Real TransSign(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + Debug.Assert(TransLeq(u, v) && TransLeq(v, w)); + + var gapL = v._t - u._t; + var gapR = w._t - v._t; + + if (gapL + gapR > 0.0f) + { + return (v._s - w._s) * gapL + (v._s - u._s) * gapR; + } + /* vertical line */ + return 0; + } + + public static bool EdgeGoesLeft(MeshUtils.Edge e) + { + return VertLeq(e._Dst, e._Org); + } + + public static bool EdgeGoesRight(MeshUtils.Edge e) + { + return VertLeq(e._Org, e._Dst); + } + + public static Real VertL1dist(MeshUtils.Vertex u, MeshUtils.Vertex v) + { + return Math.Abs(u._s - v._s) + Math.Abs(u._t - v._t); + } + + public static void AddWinding(MeshUtils.Edge eDst, MeshUtils.Edge eSrc) + { + eDst._winding += eSrc._winding; + eDst._Sym._winding += eSrc._Sym._winding; + } + + public static Real Interpolate(Real a, Real x, Real b, Real y) + { + if (a < 0.0f) + { + a = 0.0f; + } + if (b < 0.0f) + { + b = 0.0f; + } + return ((a <= b) ? ((b == 0.0f) ? ((x+y) / 2.0f) + : (x + (y-x) * (a/(a+b)))) + : (y + (x-y) * (b/(a+b)))); + } + + static void Swap(ref MeshUtils.Vertex a, ref MeshUtils.Vertex b) + { + var tmp = a; + a = b; + b = tmp; + } + + /// + /// Given edges (o1,d1) and (o2,d2), compute their point of intersection. + /// The computed point is guaranteed to lie in the intersection of the + /// bounding rectangles defined by each edge. + /// + public static void EdgeIntersect(MeshUtils.Vertex o1, MeshUtils.Vertex d1, MeshUtils.Vertex o2, MeshUtils.Vertex d2, MeshUtils.Vertex v) + { + // This is certainly not the most efficient way to find the intersection + // of two line segments, but it is very numerically stable. + // + // Strategy: find the two middle vertices in the VertLeq ordering, + // and interpolate the intersection s-value from these. Then repeat + // using the TransLeq ordering to find the intersection t-value. + + if (!VertLeq(o1, d1)) { Swap(ref o1, ref d1); } + if (!VertLeq(o2, d2)) { Swap(ref o2, ref d2); } + if (!VertLeq(o1, o2)) { Swap(ref o1, ref o2); Swap(ref d1, ref d2); } + + if (!VertLeq(o2, d1)) + { + // Technically, no intersection -- do our best + v._s = (o2._s + d1._s) / 2.0f; + } + else if (VertLeq(d1, d2)) + { + // Interpolate between o2 and d1 + var z1 = EdgeEval(o1, o2, d1); + var z2 = EdgeEval(o2, d1, d2); + if (z1 + z2 < 0.0f) + { + z1 = -z1; + z2 = -z2; + } + v._s = Interpolate(z1, o2._s, z2, d1._s); + } + else + { + // Interpolate between o2 and d2 + var z1 = EdgeSign(o1, o2, d1); + var z2 = -EdgeSign(o1, d2, d1); + if (z1 + z2 < 0.0f) + { + z1 = -z1; + z2 = -z2; + } + v._s = Interpolate(z1, o2._s, z2, d2._s); + } + + // Now repeat the process for t + + if (!TransLeq(o1, d1)) { Swap(ref o1, ref d1); } + if (!TransLeq(o2, d2)) { Swap(ref o2, ref d2); } + if (!TransLeq(o1, o2)) { Swap(ref o1, ref o2); Swap(ref d1, ref d2); } + + if (!TransLeq(o2, d1)) + { + // Technically, no intersection -- do our best + v._t = (o2._t + d1._t) / 2.0f; + } + else if (TransLeq(d1, d2)) + { + // Interpolate between o2 and d1 + var z1 = TransEval(o1, o2, d1); + var z2 = TransEval(o2, d1, d2); + if (z1 + z2 < 0.0f) + { + z1 = -z1; + z2 = -z2; + } + v._t = Interpolate(z1, o2._t, z2, d1._t); + } + else + { + // Interpolate between o2 and d2 + var z1 = TransSign(o1, o2, d1); + var z2 = -TransSign(o1, d2, d1); + if (z1 + z2 < 0.0f) + { + z1 = -z1; + z2 = -z2; + } + v._t = Interpolate(z1, o2._t, z2, d2._t); + } + } + } +} + +} // namespace Unity.VectorGraphics.External \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Geom.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Geom.cs.meta new file mode 100644 index 0000000..6b342c1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Geom.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8eb4e2609b653584b88dc0ee64a2ba24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/LICENSE.txt b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/LICENSE.txt new file mode 100644 index 0000000..74eabd9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/LICENSE.txt @@ -0,0 +1,25 @@ +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is furnished to do so, +** subject to the following conditions: +** +** The above copyright notice including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/LICENSE.txt.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/LICENSE.txt.meta new file mode 100644 index 0000000..90b74c8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/LICENSE.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b5ea83a04894a434f9b5e5b5d91c75e5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Mesh.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Mesh.cs new file mode 100644 index 0000000..14662be --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Mesh.cs @@ -0,0 +1,500 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is furnished to do so, +** subject to the following conditions: +** +** The above copyright notice including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Diagnostics; + +namespace Unity.SpriteShape.External +{ + +namespace LibTessDotNet +{ + internal class Mesh : MeshUtils.Pooled + { + internal MeshUtils.Vertex _vHead; + internal MeshUtils.Face _fHead; + internal MeshUtils.Edge _eHead, _eHeadSym; + + public Mesh() + { + var v = _vHead = MeshUtils.Vertex.Create(); + var f = _fHead = MeshUtils.Face.Create(); + + var pair = MeshUtils.EdgePair.Create(); + var e = _eHead = pair._e; + var eSym = _eHeadSym = pair._eSym; + + v._next = v._prev = v; + v._anEdge = null; + + f._next = f._prev = f; + f._anEdge = null; + f._trail = null; + f._marked = false; + f._inside = false; + + e._next = e; + e._Sym = eSym; + e._Onext = null; + e._Lnext = null; + e._Org = null; + e._Lface = null; + e._winding = 0; + e._activeRegion = null; + + eSym._next = eSym; + eSym._Sym = e; + eSym._Onext = null; + eSym._Lnext = null; + eSym._Org = null; + eSym._Lface = null; + eSym._winding = 0; + eSym._activeRegion = null; + } + + public override void Reset() + { + _vHead = null; + _fHead = null; + _eHead = _eHeadSym = null; + } + + public override void OnFree() + { + for (MeshUtils.Face f = _fHead._next, fNext = _fHead; f != _fHead; f = fNext) + { + fNext = f._next; + f.Free(); + } + for (MeshUtils.Vertex v = _vHead._next, vNext = _vHead; v != _vHead; v = vNext) + { + vNext = v._next; + v.Free(); + } + for (MeshUtils.Edge e = _eHead._next, eNext = _eHead; e != _eHead; e = eNext) + { + eNext = e._next; + e.Free(); + } + } + + /// + /// Creates one edge, two vertices and a loop (face). + /// The loop consists of the two new half-edges. + /// + public MeshUtils.Edge MakeEdge() + { + var e = MeshUtils.MakeEdge(_eHead); + + MeshUtils.MakeVertex(e, _vHead); + MeshUtils.MakeVertex(e._Sym, _vHead); + MeshUtils.MakeFace(e, _fHead); + + return e; + } + + /// + /// Splice is the basic operation for changing the + /// mesh connectivity and topology. It changes the mesh so that + /// eOrg->Onext = OLD( eDst->Onext ) + /// eDst->Onext = OLD( eOrg->Onext ) + /// where OLD(...) means the value before the meshSplice operation. + /// + /// This can have two effects on the vertex structure: + /// - if eOrg->Org != eDst->Org, the two vertices are merged together + /// - if eOrg->Org == eDst->Org, the origin is split into two vertices + /// In both cases, eDst->Org is changed and eOrg->Org is untouched. + /// + /// Similarly (and independently) for the face structure, + /// - if eOrg->Lface == eDst->Lface, one loop is split into two + /// - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one + /// In both cases, eDst->Lface is changed and eOrg->Lface is unaffected. + /// + /// Some special cases: + /// If eDst == eOrg, the operation has no effect. + /// If eDst == eOrg->Lnext, the new face will have a single edge. + /// If eDst == eOrg->Lprev, the old face will have a single edge. + /// If eDst == eOrg->Onext, the new vertex will have a single edge. + /// If eDst == eOrg->Oprev, the old vertex will have a single edge. + /// + public void Splice(MeshUtils.Edge eOrg, MeshUtils.Edge eDst) + { + if (eOrg == eDst) + { + return; + } + + bool joiningVertices = false; + if (eDst._Org != eOrg._Org) + { + // We are merging two disjoint vertices -- destroy eDst->Org + joiningVertices = true; + MeshUtils.KillVertex(eDst._Org, eOrg._Org); + } + bool joiningLoops = false; + if (eDst._Lface != eOrg._Lface) + { + // We are connecting two disjoint loops -- destroy eDst->Lface + joiningLoops = true; + MeshUtils.KillFace(eDst._Lface, eOrg._Lface); + } + + // Change the edge structure + MeshUtils.Splice(eDst, eOrg); + + if (!joiningVertices) + { + // We split one vertex into two -- the new vertex is eDst->Org. + // Make sure the old vertex points to a valid half-edge. + MeshUtils.MakeVertex(eDst, eOrg._Org); + eOrg._Org._anEdge = eOrg; + } + if (!joiningLoops) + { + // We split one loop into two -- the new loop is eDst->Lface. + // Make sure the old face points to a valid half-edge. + MeshUtils.MakeFace(eDst, eOrg._Lface); + eOrg._Lface._anEdge = eOrg; + } + } + + /// + /// Removes the edge eDel. There are several cases: + /// if (eDel->Lface != eDel->Rface), we join two loops into one; the loop + /// eDel->Lface is deleted. Otherwise, we are splitting one loop into two; + /// the newly created loop will contain eDel->Dst. If the deletion of eDel + /// would create isolated vertices, those are deleted as well. + /// + public void Delete(MeshUtils.Edge eDel) + { + var eDelSym = eDel._Sym; + + // First step: disconnect the origin vertex eDel->Org. We make all + // changes to get a consistent mesh in this "intermediate" state. + + bool joiningLoops = false; + if (eDel._Lface != eDel._Rface) + { + // We are joining two loops into one -- remove the left face + joiningLoops = true; + MeshUtils.KillFace(eDel._Lface, eDel._Rface); + } + + if (eDel._Onext == eDel) + { + MeshUtils.KillVertex(eDel._Org, null); + } + else + { + // Make sure that eDel->Org and eDel->Rface point to valid half-edges + eDel._Rface._anEdge = eDel._Oprev; + eDel._Org._anEdge = eDel._Onext; + + MeshUtils.Splice(eDel, eDel._Oprev); + + if (!joiningLoops) + { + // We are splitting one loop into two -- create a new loop for eDel. + MeshUtils.MakeFace(eDel, eDel._Lface); + } + } + + // Claim: the mesh is now in a consistent state, except that eDel->Org + // may have been deleted. Now we disconnect eDel->Dst. + + if (eDelSym._Onext == eDelSym) + { + MeshUtils.KillVertex(eDelSym._Org, null); + MeshUtils.KillFace(eDelSym._Lface, null); + } + else + { + // Make sure that eDel->Dst and eDel->Lface point to valid half-edges + eDel._Lface._anEdge = eDelSym._Oprev; + eDelSym._Org._anEdge = eDelSym._Onext; + MeshUtils.Splice(eDelSym, eDelSym._Oprev); + } + + // Any isolated vertices or faces have already been freed. + MeshUtils.KillEdge(eDel); + } + + /// + /// Creates a new edge such that eNew == eOrg.Lnext and eNew.Dst is a newly created vertex. + /// eOrg and eNew will have the same left face. + /// + public MeshUtils.Edge AddEdgeVertex(MeshUtils.Edge eOrg) + { + var eNew = MeshUtils.MakeEdge(eOrg); + var eNewSym = eNew._Sym; + + // Connect the new edge appropriately + MeshUtils.Splice(eNew, eOrg._Lnext); + + // Set vertex and face information + eNew._Org = eOrg._Dst; + MeshUtils.MakeVertex(eNewSym, eNew._Org); + eNew._Lface = eNewSym._Lface = eOrg._Lface; + + return eNew; + } + + /// + /// Splits eOrg into two edges eOrg and eNew such that eNew == eOrg.Lnext. + /// The new vertex is eOrg.Dst == eNew.Org. + /// eOrg and eNew will have the same left face. + /// + public MeshUtils.Edge SplitEdge(MeshUtils.Edge eOrg) + { + var eTmp = AddEdgeVertex(eOrg); + var eNew = eTmp._Sym; + + // Disconnect eOrg from eOrg->Dst and connect it to eNew->Org + MeshUtils.Splice(eOrg._Sym, eOrg._Sym._Oprev); + MeshUtils.Splice(eOrg._Sym, eNew); + + // Set the vertex and face information + eOrg._Dst = eNew._Org; + eNew._Dst._anEdge = eNew._Sym; // may have pointed to eOrg->Sym + eNew._Rface = eOrg._Rface; + eNew._winding = eOrg._winding; // copy old winding information + eNew._Sym._winding = eOrg._Sym._winding; + + return eNew; + } + + /// + /// Creates a new edge from eOrg->Dst to eDst->Org, and returns the corresponding half-edge eNew. + /// If eOrg->Lface == eDst->Lface, this splits one loop into two, + /// and the newly created loop is eNew->Lface. Otherwise, two disjoint + /// loops are merged into one, and the loop eDst->Lface is destroyed. + /// + /// If (eOrg == eDst), the new face will have only two edges. + /// If (eOrg->Lnext == eDst), the old face is reduced to a single edge. + /// If (eOrg->Lnext->Lnext == eDst), the old face is reduced to two edges. + /// + public MeshUtils.Edge Connect(MeshUtils.Edge eOrg, MeshUtils.Edge eDst) + { + var eNew = MeshUtils.MakeEdge(eOrg); + var eNewSym = eNew._Sym; + + bool joiningLoops = false; + if (eDst._Lface != eOrg._Lface) + { + // We are connecting two disjoint loops -- destroy eDst->Lface + joiningLoops = true; + MeshUtils.KillFace(eDst._Lface, eOrg._Lface); + } + + // Connect the new edge appropriately + MeshUtils.Splice(eNew, eOrg._Lnext); + MeshUtils.Splice(eNewSym, eDst); + + // Set the vertex and face information + eNew._Org = eOrg._Dst; + eNewSym._Org = eDst._Org; + eNew._Lface = eNewSym._Lface = eOrg._Lface; + + // Make sure the old face points to a valid half-edge + eOrg._Lface._anEdge = eNewSym; + + if (!joiningLoops) + { + MeshUtils.MakeFace(eNew, eOrg._Lface); + } + + return eNew; + } + + /// + /// Destroys a face and removes it from the global face list. All edges of + /// fZap will have a NULL pointer as their left face. Any edges which + /// also have a NULL pointer as their right face are deleted entirely + /// (along with any isolated vertices this produces). + /// An entire mesh can be deleted by zapping its faces, one at a time, + /// in any order. Zapped faces cannot be used in further mesh operations! + /// + public void ZapFace(MeshUtils.Face fZap) + { + var eStart = fZap._anEdge; + + // walk around face, deleting edges whose right face is also NULL + var eNext = eStart._Lnext; + MeshUtils.Edge e, eSym; + do { + e = eNext; + eNext = e._Lnext; + + e._Lface = null; + if (e._Rface == null) + { + // delete the edge -- see TESSmeshDelete above + + if (e._Onext == e) + { + MeshUtils.KillVertex(e._Org, null); + } + else + { + // Make sure that e._Org points to a valid half-edge + e._Org._anEdge = e._Onext; + MeshUtils.Splice(e, e._Oprev); + } + eSym = e._Sym; + if (eSym._Onext == eSym) + { + MeshUtils.KillVertex(eSym._Org, null); + } + else + { + // Make sure that eSym._Org points to a valid half-edge + eSym._Org._anEdge = eSym._Onext; + MeshUtils.Splice(eSym, eSym._Oprev); + } + MeshUtils.KillEdge(e); + } + } while (e != eStart); + + /* delete from circular doubly-linked list */ + var fPrev = fZap._prev; + var fNext = fZap._next; + fNext._prev = fPrev; + fPrev._next = fNext; + + fZap.Free(); + } + + public void MergeConvexFaces(int maxVertsPerFace) + { + for (var f = _fHead._next; f != _fHead; f = f._next) + { + // Skip faces which are outside the result + if (!f._inside) + { + continue; + } + + var eCur = f._anEdge; + var vStart = eCur._Org; + + while (true) + { + var eNext = eCur._Lnext; + var eSym = eCur._Sym; + + if (eSym != null && eSym._Lface != null && eSym._Lface._inside) + { + // Try to merge the neighbour faces if the resulting polygons + // does not exceed maximum number of vertices. + int curNv = f.VertsCount; + int symNv = eSym._Lface.VertsCount; + if ((curNv + symNv - 2) <= maxVertsPerFace) + { + // Merge if the resulting poly is convex. + if (Geom.VertCCW(eCur._Lprev._Org, eCur._Org, eSym._Lnext._Lnext._Org) && + Geom.VertCCW(eSym._Lprev._Org, eSym._Org, eCur._Lnext._Lnext._Org)) + { + eNext = eSym._Lnext; + Delete(eSym); + eCur = null; + } + } + } + + if (eCur != null && eCur._Lnext._Org == vStart) + break; + + // Continue to next edge. + eCur = eNext; + } + } + } + + [Conditional("DEBUG")] + public void Check() + { + MeshUtils.Edge e; + + MeshUtils.Face fPrev = _fHead, f; + for (fPrev = _fHead; (f = fPrev._next) != _fHead; fPrev = f) + { + e = f._anEdge; + do { + Debug.Assert(e._Sym != e); + Debug.Assert(e._Sym._Sym == e); + Debug.Assert(e._Lnext._Onext._Sym == e); + Debug.Assert(e._Onext._Sym._Lnext == e); + Debug.Assert(e._Lface == f); + e = e._Lnext; + } while (e != f._anEdge); + } + Debug.Assert(f._prev == fPrev && f._anEdge == null); + + MeshUtils.Vertex vPrev = _vHead, v; + for (vPrev = _vHead; (v = vPrev._next) != _vHead; vPrev = v) + { + Debug.Assert(v._prev == vPrev); + e = v._anEdge; + do + { + Debug.Assert(e._Sym != e); + Debug.Assert(e._Sym._Sym == e); + Debug.Assert(e._Lnext._Onext._Sym == e); + Debug.Assert(e._Onext._Sym._Lnext == e); + Debug.Assert(e._Org == v); + e = e._Onext; + } while (e != v._anEdge); + } + Debug.Assert(v._prev == vPrev && v._anEdge == null); + + MeshUtils.Edge ePrev = _eHead; + for (ePrev = _eHead; (e = ePrev._next) != _eHead; ePrev = e) + { + Debug.Assert(e._Sym._next == ePrev._Sym); + Debug.Assert(e._Sym != e); + Debug.Assert(e._Sym._Sym == e); + Debug.Assert(e._Org != null); + Debug.Assert(e._Dst != null); + Debug.Assert(e._Lnext._Onext._Sym == e); + Debug.Assert(e._Onext._Sym._Lnext == e); + } + Debug.Assert(e._Sym._next == ePrev._Sym + && e._Sym == _eHeadSym + && e._Sym._Sym == e + && e._Org == null && e._Dst == null + && e._Lface == null && e._Rface == null); + } + } +} + +} // namespace Unity.VectorGraphics.External \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Mesh.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Mesh.cs.meta new file mode 100644 index 0000000..b7f45d0 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Mesh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3d834cd56fabc3447b5e84a6ad97d96a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/MeshUtils.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/MeshUtils.cs new file mode 100644 index 0000000..c63e678 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/MeshUtils.cs @@ -0,0 +1,465 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is furnished to do so, +** subject to the following conditions: +** +** The above copyright notice including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Collections.Generic; +using System.Diagnostics; + +namespace Unity.SpriteShape.External +{ + +using Real = System.Single; +namespace LibTessDotNet +{ + internal struct Vec3 + { + public readonly static Vec3 Zero = new Vec3(); + + public Real X, Y, Z; + + public Real this[int index] + { + get + { + if (index == 0) return X; + if (index == 1) return Y; + if (index == 2) return Z; + throw new IndexOutOfRangeException(); + } + set + { + if (index == 0) X = value; + else if (index == 1) Y = value; + else if (index == 2) Z = value; + else throw new IndexOutOfRangeException(); + } + } + + public static void Sub(ref Vec3 lhs, ref Vec3 rhs, out Vec3 result) + { + result.X = lhs.X - rhs.X; + result.Y = lhs.Y - rhs.Y; + result.Z = lhs.Z - rhs.Z; + } + + public static void Neg(ref Vec3 v) + { + v.X = -v.X; + v.Y = -v.Y; + v.Z = -v.Z; + } + + public static void Dot(ref Vec3 u, ref Vec3 v, out Real dot) + { + dot = u.X * v.X + u.Y * v.Y + u.Z * v.Z; + } + + public static void Normalize(ref Vec3 v) + { + var len = v.X * v.X + v.Y * v.Y + v.Z * v.Z; + Debug.Assert(len >= 0.0f); + len = 1.0f / (Real)Math.Sqrt(len); + v.X *= len; + v.Y *= len; + v.Z *= len; + } + + public static int LongAxis(ref Vec3 v) + { + int i = 0; + if (Math.Abs(v.Y) > Math.Abs(v.X)) i = 1; + if (Math.Abs(v.Z) > Math.Abs(i == 0 ? v.X : v.Y)) i = 2; + return i; + } + + public override string ToString() + { + return string.Format("{0}, {1}, {2}", X, Y, Z); + } + } + + internal static class MeshUtils + { + public const int Undef = ~0; + + public abstract class Pooled where T : Pooled, new() + { + private static Stack _stack; + public abstract void Reset(); + public virtual void OnFree() { } + + public static T Create() + { + if (_stack != null && _stack.Count > 0) + { + return _stack.Pop(); + } + return new T(); + } + + public void Free() + { + OnFree(); + Reset(); + if (_stack == null) + { + _stack = new Stack(); + } + _stack.Push((T)this); + } + } + + public class Vertex : Pooled + { + internal Vertex _prev, _next; + internal Edge _anEdge; + + internal Vec3 _coords; + internal Real _s, _t; + internal PQHandle _pqHandle; + internal int _n; + internal object _data; + + public override void Reset() + { + _prev = _next = null; + _anEdge = null; + _coords = Vec3.Zero; + _s = 0; + _t = 0; + _pqHandle = new PQHandle(); + _n = 0; + _data = null; + } + } + + public class Face : Pooled + { + internal Face _prev, _next; + internal Edge _anEdge; + + internal Face _trail; + internal int _n; + internal bool _marked, _inside; + + internal int VertsCount + { + get + { + int n = 0; + var eCur = _anEdge; + do { + n++; + eCur = eCur._Lnext; + } while (eCur != _anEdge); + return n; + } + } + + public override void Reset() + { + _prev = _next = null; + _anEdge = null; + _trail = null; + _n = 0; + _marked = false; + _inside = false; + } + } + + public struct EdgePair + { + internal Edge _e, _eSym; + + public static EdgePair Create() + { + var pair = new MeshUtils.EdgePair(); + pair._e = MeshUtils.Edge.Create(); + pair._e._pair = pair; + pair._eSym = MeshUtils.Edge.Create(); + pair._eSym._pair = pair; + return pair; + } + + public void Reset() + { + _e = _eSym = null; + } + } + + public class Edge : Pooled + { + internal EdgePair _pair; + internal Edge _next, _Sym, _Onext, _Lnext; + internal Vertex _Org; + internal Face _Lface; + internal Tess.ActiveRegion _activeRegion; + internal int _winding; + + internal Face _Rface { get { return _Sym._Lface; } set { _Sym._Lface = value; } } + internal Vertex _Dst { get { return _Sym._Org; } set { _Sym._Org = value; } } + + internal Edge _Oprev { get { return _Sym._Lnext; } set { _Sym._Lnext = value; } } + internal Edge _Lprev { get { return _Onext._Sym; } set { _Onext._Sym = value; } } + internal Edge _Dprev { get { return _Lnext._Sym; } set { _Lnext._Sym = value; } } + internal Edge _Rprev { get { return _Sym._Onext; } set { _Sym._Onext = value; } } + internal Edge _Dnext { get { return _Rprev._Sym; } set { _Rprev._Sym = value; } } + internal Edge _Rnext { get { return _Oprev._Sym; } set { _Oprev._Sym = value; } } + + internal static void EnsureFirst(ref Edge e) + { + if (e == e._pair._eSym) + { + e = e._Sym; + } + } + + public override void Reset() + { + _pair.Reset(); + _next = _Sym = _Onext = _Lnext = null; + _Org = null; + _Lface = null; + _activeRegion = null; + _winding = 0; + } + } + + /// + /// MakeEdge creates a new pair of half-edges which form their own loop. + /// No vertex or face structures are allocated, but these must be assigned + /// before the current edge operation is completed. + /// + public static Edge MakeEdge(Edge eNext) + { + Debug.Assert(eNext != null); + + var pair = EdgePair.Create(); + var e = pair._e; + var eSym = pair._eSym; + + // Make sure eNext points to the first edge of the edge pair + Edge.EnsureFirst(ref eNext); + + // Insert in circular doubly-linked list before eNext. + // Note that the prev pointer is stored in Sym->next. + var ePrev = eNext._Sym._next; + eSym._next = ePrev; + ePrev._Sym._next = e; + e._next = eNext; + eNext._Sym._next = eSym; + + e._Sym = eSym; + e._Onext = e; + e._Lnext = eSym; + e._Org = null; + e._Lface = null; + e._winding = 0; + e._activeRegion = null; + + eSym._Sym = e; + eSym._Onext = eSym; + eSym._Lnext = e; + eSym._Org = null; + eSym._Lface = null; + eSym._winding = 0; + eSym._activeRegion = null; + + return e; + } + + /// + /// Splice( a, b ) is best described by the Guibas/Stolfi paper or the + /// CS348a notes (see Mesh.cs). Basically it modifies the mesh so that + /// a->Onext and b->Onext are exchanged. This can have various effects + /// depending on whether a and b belong to different face or vertex rings. + /// For more explanation see Mesh.Splice(). + /// + public static void Splice(Edge a, Edge b) + { + var aOnext = a._Onext; + var bOnext = b._Onext; + + aOnext._Sym._Lnext = b; + bOnext._Sym._Lnext = a; + a._Onext = bOnext; + b._Onext = aOnext; + } + + /// + /// MakeVertex( eOrig, vNext ) attaches a new vertex and makes it the + /// origin of all edges in the vertex loop to which eOrig belongs. "vNext" gives + /// a place to insert the new vertex in the global vertex list. We insert + /// the new vertex *before* vNext so that algorithms which walk the vertex + /// list will not see the newly created vertices. + /// + public static void MakeVertex(Edge eOrig, Vertex vNext) + { + var vNew = MeshUtils.Vertex.Create(); + + // insert in circular doubly-linked list before vNext + var vPrev = vNext._prev; + vNew._prev = vPrev; + vPrev._next = vNew; + vNew._next = vNext; + vNext._prev = vNew; + + vNew._anEdge = eOrig; + // leave coords, s, t undefined + + // fix other edges on this vertex loop + var e = eOrig; + do { + e._Org = vNew; + e = e._Onext; + } while (e != eOrig); + } + + /// + /// MakeFace( eOrig, fNext ) attaches a new face and makes it the left + /// face of all edges in the face loop to which eOrig belongs. "fNext" gives + /// a place to insert the new face in the global face list. We insert + /// the new face *before* fNext so that algorithms which walk the face + /// list will not see the newly created faces. + /// + public static void MakeFace(Edge eOrig, Face fNext) + { + var fNew = MeshUtils.Face.Create(); + + // insert in circular doubly-linked list before fNext + var fPrev = fNext._prev; + fNew._prev = fPrev; + fPrev._next = fNew; + fNew._next = fNext; + fNext._prev = fNew; + + fNew._anEdge = eOrig; + fNew._trail = null; + fNew._marked = false; + + // The new face is marked "inside" if the old one was. This is a + // convenience for the common case where a face has been split in two. + fNew._inside = fNext._inside; + + // fix other edges on this face loop + var e = eOrig; + do { + e._Lface = fNew; + e = e._Lnext; + } while (e != eOrig); + } + + /// + /// KillEdge( eDel ) destroys an edge (the half-edges eDel and eDel->Sym), + /// and removes from the global edge list. + /// + public static void KillEdge(Edge eDel) + { + // Half-edges are allocated in pairs, see EdgePair above + Edge.EnsureFirst(ref eDel); + + // delete from circular doubly-linked list + var eNext = eDel._next; + var ePrev = eDel._Sym._next; + eNext._Sym._next = ePrev; + ePrev._Sym._next = eNext; + + eDel.Free(); + } + + /// + /// KillVertex( vDel ) destroys a vertex and removes it from the global + /// vertex list. It updates the vertex loop to point to a given new vertex. + /// + public static void KillVertex(Vertex vDel, Vertex newOrg) + { + var eStart = vDel._anEdge; + + // change the origin of all affected edges + var e = eStart; + do { + e._Org = newOrg; + e = e._Onext; + } while (e != eStart); + + // delete from circular doubly-linked list + var vPrev = vDel._prev; + var vNext = vDel._next; + vNext._prev = vPrev; + vPrev._next = vNext; + + vDel.Free(); + } + + /// + /// KillFace( fDel ) destroys a face and removes it from the global face + /// list. It updates the face loop to point to a given new face. + /// + public static void KillFace(Face fDel, Face newLFace) + { + var eStart = fDel._anEdge; + + // change the left face of all affected edges + var e = eStart; + do { + e._Lface = newLFace; + e = e._Lnext; + } while (e != eStart); + + // delete from circular doubly-linked list + var fPrev = fDel._prev; + var fNext = fDel._next; + fNext._prev = fPrev; + fPrev._next = fNext; + + fDel.Free(); + } + + /// + /// Return signed area of face. + /// + public static Real FaceArea(Face f) + { + Real area = 0; + var e = f._anEdge; + do + { + area += (e._Org._s - e._Dst._s) * (e._Org._t + e._Dst._t); + e = e._Lnext; + } while (e != f._anEdge); + return area; + } + } +} + +} // namespace Unity.VectorGraphics.External \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/MeshUtils.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/MeshUtils.cs.meta new file mode 100644 index 0000000..22fde4e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/MeshUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ada7faed6fbdf4a409392af3cfb70479 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityHeap.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityHeap.cs new file mode 100644 index 0000000..0004b25 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityHeap.cs @@ -0,0 +1,246 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is furnished to do so, +** subject to the following conditions: +** +** The above copyright notice including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Diagnostics; + +namespace Unity.SpriteShape.External +{ + +namespace LibTessDotNet +{ + internal struct PQHandle + { + public static readonly int Invalid = 0x0fffffff; + internal int _handle; + } + + internal class PriorityHeap where TValue : class + { + public delegate bool LessOrEqual(TValue lhs, TValue rhs); + + protected class HandleElem + { + internal TValue _key; + internal int _node; + } + + private LessOrEqual _leq; + private int[] _nodes; + private HandleElem[] _handles; + private int _size, _max; + private int _freeList; + private bool _initialized; + + public bool Empty { get { return _size == 0; } } + + public PriorityHeap(int initialSize, LessOrEqual leq) + { + _leq = leq; + + _nodes = new int[initialSize + 1]; + _handles = new HandleElem[initialSize + 1]; + + _size = 0; + _max = initialSize; + _freeList = 0; + _initialized = false; + + _nodes[1] = 1; + _handles[1] = new HandleElem { _key = null }; + } + + private void FloatDown(int curr) + { + int child; + int hCurr, hChild; + + hCurr = _nodes[curr]; + while (true) + { + child = curr << 1; + if (child < _size && _leq(_handles[_nodes[child + 1]]._key, _handles[_nodes[child]]._key)) + { + ++child; + } + + Debug.Assert(child <= _max); + + hChild = _nodes[child]; + if (child > _size || _leq(_handles[hCurr]._key, _handles[hChild]._key)) + { + _nodes[curr] = hCurr; + _handles[hCurr]._node = curr; + break; + } + + _nodes[curr] = hChild; + _handles[hChild]._node = curr; + curr = child; + } + } + + private void FloatUp(int curr) + { + int parent; + int hCurr, hParent; + + hCurr = _nodes[curr]; + while (true) + { + parent = curr >> 1; + hParent = _nodes[parent]; + if (parent == 0 || _leq(_handles[hParent]._key, _handles[hCurr]._key)) + { + _nodes[curr] = hCurr; + _handles[hCurr]._node = curr; + break; + } + _nodes[curr] = hParent; + _handles[hParent]._node = curr; + curr = parent; + } + } + + public void Init() + { + for (int i = _size; i >= 1; --i) + { + FloatDown(i); + } + _initialized = true; + } + + public PQHandle Insert(TValue value) + { + int curr = ++_size; + if ((curr * 2) > _max) + { + _max <<= 1; + Array.Resize(ref _nodes, _max + 1); + Array.Resize(ref _handles, _max + 1); + } + + int free; + if (_freeList == 0) + { + free = curr; + } + else + { + free = _freeList; + _freeList = _handles[free]._node; + } + + _nodes[curr] = free; + if (_handles[free] == null) + { + _handles[free] = new HandleElem { _key = value, _node = curr }; + } + else + { + _handles[free]._node = curr; + _handles[free]._key = value; + } + + if (_initialized) + { + FloatUp(curr); + } + + Debug.Assert(free != PQHandle.Invalid); + return new PQHandle { _handle = free }; + } + + public TValue ExtractMin() + { + Debug.Assert(_initialized); + + int hMin = _nodes[1]; + TValue min = _handles[hMin]._key; + + if (_size > 0) + { + _nodes[1] = _nodes[_size]; + _handles[_nodes[1]]._node = 1; + + _handles[hMin]._key = null; + _handles[hMin]._node = _freeList; + _freeList = hMin; + + if (--_size > 0) + { + FloatDown(1); + } + } + + return min; + } + + public TValue Minimum() + { + Debug.Assert(_initialized); + return _handles[_nodes[1]]._key; + } + + public void Remove(PQHandle handle) + { + Debug.Assert(_initialized); + + int hCurr = handle._handle; + Debug.Assert(hCurr >= 1 && hCurr <= _max && _handles[hCurr]._key != null); + + int curr = _handles[hCurr]._node; + _nodes[curr] = _nodes[_size]; + _handles[_nodes[curr]]._node = curr; + + if (curr <= --_size) + { + if (curr <= 1 || _leq(_handles[_nodes[curr >> 1]]._key, _handles[_nodes[curr]]._key)) + { + FloatDown(curr); + } + else + { + FloatUp(curr); + } + } + + _handles[hCurr]._key = null; + _handles[hCurr]._node = _freeList; + _freeList = hCurr; + } + } +} + +} // namespace Unity.VectorGraphics.External \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityHeap.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityHeap.cs.meta new file mode 100644 index 0000000..23ecdf4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityHeap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 08bd485b57bc7c7498c8597502c34793 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityQueue.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityQueue.cs new file mode 100644 index 0000000..d6ec357 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityQueue.cs @@ -0,0 +1,231 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is furnished to do so, +** subject to the following conditions: +** +** The above copyright notice including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Collections.Generic; +using System.Diagnostics; + +namespace Unity.SpriteShape.External +{ + +namespace LibTessDotNet +{ + internal class PriorityQueue where TValue : class + { + private PriorityHeap.LessOrEqual _leq; + private PriorityHeap _heap; + private TValue[] _keys; + private int[] _order; + + private int _size, _max; + private bool _initialized; + + public bool Empty { get { return _size == 0 && _heap.Empty; } } + + public PriorityQueue(int initialSize, PriorityHeap.LessOrEqual leq) + { + _leq = leq; + _heap = new PriorityHeap(initialSize, leq); + + _keys = new TValue[initialSize]; + + _size = 0; + _max = initialSize; + _initialized = false; + } + + class StackItem + { + internal int p, r; + }; + + static void Swap(ref int a, ref int b) + { + int tmp = a; + a = b; + b = tmp; + } + + public void Init() + { + var stack = new Stack(); + int p, r, i, j, piv; + uint seed = 2016473283; + + p = 0; + r = _size - 1; + _order = new int[_size + 1]; + for (piv = 0, i = p; i <= r; ++piv, ++i) + { + _order[i] = piv; + } + + stack.Push(new StackItem { p = p, r = r }); + while (stack.Count > 0) + { + var top = stack.Pop(); + p = top.p; + r = top.r; + + while (r > p + 10) + { + seed = seed * 1539415821 + 1; + i = p + (int)(seed % (r - p + 1)); + piv = _order[i]; + _order[i] = _order[p]; + _order[p] = piv; + i = p - 1; + j = r + 1; + do { + do { ++i; } while (!_leq(_keys[_order[i]], _keys[piv])); + do { --j; } while (!_leq(_keys[piv], _keys[_order[j]])); + Swap(ref _order[i], ref _order[j]); + } while (i < j); + Swap(ref _order[i], ref _order[j]); + if (i - p < r - j) + { + stack.Push(new StackItem { p = j + 1, r = r }); + r = i - 1; + } + else + { + stack.Push(new StackItem { p = p, r = i - 1 }); + p = j + 1; + } + } + for (i = p + 1; i <= r; ++i) + { + piv = _order[i]; + for (j = i; j > p && !_leq(_keys[piv], _keys[_order[j - 1]]); --j) + { + _order[j] = _order[j - 1]; + } + _order[j] = piv; + } + } + +#if DEBUG + p = 0; + r = _size - 1; + for (i = p; i < r; ++i) + { + Debug.Assert(_leq(_keys[_order[i + 1]], _keys[_order[i]]), "Wrong sort"); + } +#endif + + _max = _size; + _initialized = true; + _heap.Init(); + } + + public PQHandle Insert(TValue value) + { + if (_initialized) + { + return _heap.Insert(value); + } + + int curr = _size; + if (++_size >= _max) + { + _max <<= 1; + Array.Resize(ref _keys, _max); + } + + _keys[curr] = value; + return new PQHandle { _handle = -(curr + 1) }; + } + + public TValue ExtractMin() + { + Debug.Assert(_initialized); + + if (_size == 0) + { + return _heap.ExtractMin(); + } + TValue sortMin = _keys[_order[_size - 1]]; + if (!_heap.Empty) + { + TValue heapMin = _heap.Minimum(); + if (_leq(heapMin, sortMin)) + return _heap.ExtractMin(); + } + do { + --_size; + } while (_size > 0 && _keys[_order[_size - 1]] == null); + + return sortMin; + } + + public TValue Minimum() + { + Debug.Assert(_initialized); + + if (_size == 0) + { + return _heap.Minimum(); + } + TValue sortMin = _keys[_order[_size - 1]]; + if (!_heap.Empty) + { + TValue heapMin = _heap.Minimum(); + if (_leq(heapMin, sortMin)) + return heapMin; + } + return sortMin; + } + + public void Remove(PQHandle handle) + { + Debug.Assert(_initialized); + + int curr = handle._handle; + if (curr >= 0) + { + _heap.Remove(handle); + return; + } + curr = -(curr + 1); + Debug.Assert(curr < _max && _keys[curr] != null); + + _keys[curr] = null; + while (_size > 0 && _keys[_order[_size - 1]] == null) + { + --_size; + } + } + } +} + +} // namespace Unity.VectorGraphics.External \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityQueue.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityQueue.cs.meta new file mode 100644 index 0000000..1e0c6e9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/PriorityQueue.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: daf70eb4f3701c347bfa9c15178b236a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Sweep.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Sweep.cs new file mode 100644 index 0000000..c795fa2 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Sweep.cs @@ -0,0 +1,1238 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is furnished to do so, +** subject to the following conditions: +** +** The above copyright notice including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Diagnostics; + +namespace Unity.SpriteShape.External +{ + +using Real = System.Single; +namespace LibTessDotNet +{ + internal partial class Tess + { + internal class ActiveRegion + { + internal MeshUtils.Edge _eUp; + internal Dict.Node _nodeUp; + internal int _windingNumber; + internal bool _inside, _sentinel, _dirty, _fixUpperEdge; + } + + private ActiveRegion RegionBelow(ActiveRegion reg) + { + return reg._nodeUp._prev._key; + } + + private ActiveRegion RegionAbove(ActiveRegion reg) + { + return reg._nodeUp._next._key; + } + + /// + /// Both edges must be directed from right to left (this is the canonical + /// direction for the upper edge of each region). + /// + /// The strategy is to evaluate a "t" value for each edge at the + /// current sweep line position, given by tess->event. The calculations + /// are designed to be very stable, but of course they are not perfect. + /// + /// Special case: if both edge destinations are at the sweep event, + /// we sort the edges by slope (they would otherwise compare equally). + /// + private bool EdgeLeq(ActiveRegion reg1, ActiveRegion reg2) + { + var e1 = reg1._eUp; + var e2 = reg2._eUp; + + if (e1._Dst == _event) + { + if (e2._Dst == _event) + { + // Two edges right of the sweep line which meet at the sweep event. + // Sort them by slope. + if (Geom.VertLeq(e1._Org, e2._Org)) + { + return Geom.EdgeSign(e2._Dst, e1._Org, e2._Org) <= 0.0f; + } + return Geom.EdgeSign(e1._Dst, e2._Org, e1._Org) >= 0.0f; + } + return Geom.EdgeSign(e2._Dst, _event, e2._Org) <= 0.0f; + } + if (e2._Dst == _event) + { + return Geom.EdgeSign(e1._Dst, _event, e1._Org) >= 0.0f; + } + + // General case - compute signed distance *from* e1, e2 to event + var t1 = Geom.EdgeEval(e1._Dst, _event, e1._Org); + var t2 = Geom.EdgeEval(e2._Dst, _event, e2._Org); + return (t1 >= t2); + } + + private void DeleteRegion(ActiveRegion reg) + { + if (reg._fixUpperEdge) + { + // It was created with zero winding number, so it better be + // deleted with zero winding number (ie. it better not get merged + // with a real edge). + Debug.Assert(reg._eUp._winding == 0); + } + reg._eUp._activeRegion = null; + _dict.Remove(reg._nodeUp); + } + + /// + /// Replace an upper edge which needs fixing (see ConnectRightVertex). + /// + private void FixUpperEdge(ActiveRegion reg, MeshUtils.Edge newEdge) + { + Debug.Assert(reg._fixUpperEdge); + _mesh.Delete(reg._eUp); + reg._fixUpperEdge = false; + reg._eUp = newEdge; + newEdge._activeRegion = reg; + } + + private ActiveRegion TopLeftRegion(ActiveRegion reg) + { + var org = reg._eUp._Org; + + // Find the region above the uppermost edge with the same origin + do { + reg = RegionAbove(reg); + } while (reg._eUp._Org == org); + + // If the edge above was a temporary edge introduced by ConnectRightVertex, + // now is the time to fix it. + if (reg._fixUpperEdge) + { + var e = _mesh.Connect(RegionBelow(reg)._eUp._Sym, reg._eUp._Lnext); + FixUpperEdge(reg, e); + reg = RegionAbove(reg); + } + + return reg; + } + + private ActiveRegion TopRightRegion(ActiveRegion reg) + { + var dst = reg._eUp._Dst; + + // Find the region above the uppermost edge with the same destination + do { + reg = RegionAbove(reg); + } while (reg._eUp._Dst == dst); + + return reg; + } + + /// + /// Add a new active region to the sweep line, *somewhere* below "regAbove" + /// (according to where the new edge belongs in the sweep-line dictionary). + /// The upper edge of the new region will be "eNewUp". + /// Winding number and "inside" flag are not updated. + /// + private ActiveRegion AddRegionBelow(ActiveRegion regAbove, MeshUtils.Edge eNewUp) + { + var regNew = new ActiveRegion(); + + regNew._eUp = eNewUp; + regNew._nodeUp = _dict.InsertBefore(regAbove._nodeUp, regNew); + regNew._fixUpperEdge = false; + regNew._sentinel = false; + regNew._dirty = false; + + eNewUp._activeRegion = regNew; + + return regNew; + } + + private void ComputeWinding(ActiveRegion reg) + { + reg._windingNumber = RegionAbove(reg)._windingNumber + reg._eUp._winding; + reg._inside = Geom.IsWindingInside(_windingRule, reg._windingNumber); + } + + /// + /// Delete a region from the sweep line. This happens when the upper + /// and lower chains of a region meet (at a vertex on the sweep line). + /// The "inside" flag is copied to the appropriate mesh face (we could + /// not do this before -- since the structure of the mesh is always + /// changing, this face may not have even existed until now). + /// + private void FinishRegion(ActiveRegion reg) + { + var e = reg._eUp; + var f = e._Lface; + + f._inside = reg._inside; + f._anEdge = e; + DeleteRegion(reg); + } + + /// + /// We are given a vertex with one or more left-going edges. All affected + /// edges should be in the edge dictionary. Starting at regFirst->eUp, + /// we walk down deleting all regions where both edges have the same + /// origin vOrg. At the same time we copy the "inside" flag from the + /// active region to the face, since at this point each face will belong + /// to at most one region (this was not necessarily true until this point + /// in the sweep). The walk stops at the region above regLast; if regLast + /// is null we walk as far as possible. At the same time we relink the + /// mesh if necessary, so that the ordering of edges around vOrg is the + /// same as in the dictionary. + /// + private MeshUtils.Edge FinishLeftRegions(ActiveRegion regFirst, ActiveRegion regLast) + { + var regPrev = regFirst; + var ePrev = regFirst._eUp; + + while (regPrev != regLast) + { + regPrev._fixUpperEdge = false; // placement was OK + var reg = RegionBelow(regPrev); + var e = reg._eUp; + if (e._Org != ePrev._Org) + { + if (!reg._fixUpperEdge) + { + // Remove the last left-going edge. Even though there are no further + // edges in the dictionary with this origin, there may be further + // such edges in the mesh (if we are adding left edges to a vertex + // that has already been processed). Thus it is important to call + // FinishRegion rather than just DeleteRegion. + FinishRegion(regPrev); + break; + } + // If the edge below was a temporary edge introduced by + // ConnectRightVertex, now is the time to fix it. + e = _mesh.Connect(ePrev._Lprev, e._Sym); + FixUpperEdge(reg, e); + } + + // Relink edges so that ePrev.Onext == e + if (ePrev._Onext != e) + { + _mesh.Splice(e._Oprev, e); + _mesh.Splice(ePrev, e); + } + FinishRegion(regPrev); // may change reg.eUp + ePrev = reg._eUp; + regPrev = reg; + } + + return ePrev; + } + + /// + /// Purpose: insert right-going edges into the edge dictionary, and update + /// winding numbers and mesh connectivity appropriately. All right-going + /// edges share a common origin vOrg. Edges are inserted CCW starting at + /// eFirst; the last edge inserted is eLast.Oprev. If vOrg has any + /// left-going edges already processed, then eTopLeft must be the edge + /// such that an imaginary upward vertical segment from vOrg would be + /// contained between eTopLeft.Oprev and eTopLeft; otherwise eTopLeft + /// should be null. + /// + private void AddRightEdges(ActiveRegion regUp, MeshUtils.Edge eFirst, MeshUtils.Edge eLast, MeshUtils.Edge eTopLeft, bool cleanUp) + { + bool firstTime = true; + + var e = eFirst; do + { + Debug.Assert(Geom.VertLeq(e._Org, e._Dst)); + AddRegionBelow(regUp, e._Sym); + e = e._Onext; + } while (e != eLast); + + // Walk *all* right-going edges from e.Org, in the dictionary order, + // updating the winding numbers of each region, and re-linking the mesh + // edges to match the dictionary ordering (if necessary). + if (eTopLeft == null) + { + eTopLeft = RegionBelow(regUp)._eUp._Rprev; + } + + ActiveRegion regPrev = regUp, reg; + var ePrev = eTopLeft; + while (true) + { + reg = RegionBelow(regPrev); + e = reg._eUp._Sym; + if (e._Org != ePrev._Org) break; + + if (e._Onext != ePrev) + { + // Unlink e from its current position, and relink below ePrev + _mesh.Splice(e._Oprev, e); + _mesh.Splice(ePrev._Oprev, e); + } + // Compute the winding number and "inside" flag for the new regions + reg._windingNumber = regPrev._windingNumber - e._winding; + reg._inside = Geom.IsWindingInside(_windingRule, reg._windingNumber); + + // Check for two outgoing edges with same slope -- process these + // before any intersection tests (see example in tessComputeInterior). + regPrev._dirty = true; + if (!firstTime && CheckForRightSplice(regPrev)) + { + Geom.AddWinding(e, ePrev); + DeleteRegion(regPrev); + _mesh.Delete(ePrev); + } + firstTime = false; + regPrev = reg; + ePrev = e; + } + regPrev._dirty = true; + Debug.Assert(regPrev._windingNumber - e._winding == reg._windingNumber); + + if (cleanUp) + { + // Check for intersections between newly adjacent edges. + WalkDirtyRegions(regPrev); + } + } + + /// + /// Two vertices with idential coordinates are combined into one. + /// e1.Org is kept, while e2.Org is discarded. + /// + private void SpliceMergeVertices(MeshUtils.Edge e1, MeshUtils.Edge e2) + { + _mesh.Splice(e1, e2); + } + + /// + /// Find some weights which describe how the intersection vertex is + /// a linear combination of "org" and "dest". Each of the two edges + /// which generated "isect" is allocated 50% of the weight; each edge + /// splits the weight between its org and dst according to the + /// relative distance to "isect". + /// + private void VertexWeights(MeshUtils.Vertex isect, MeshUtils.Vertex org, MeshUtils.Vertex dst, out Real w0, out Real w1) + { + var t1 = Geom.VertL1dist(org, isect); + var t2 = Geom.VertL1dist(dst, isect); + + w0 = (t2 / (t1 + t2)) / 2.0f; + w1 = (t1 / (t1 + t2)) / 2.0f; + + isect._coords.X += w0 * org._coords.X + w1 * dst._coords.X; + isect._coords.Y += w0 * org._coords.Y + w1 * dst._coords.Y; + isect._coords.Z += w0 * org._coords.Z + w1 * dst._coords.Z; + } + + /// + /// We've computed a new intersection point, now we need a "data" pointer + /// from the user so that we can refer to this new vertex in the + /// rendering callbacks. + /// + private void GetIntersectData(MeshUtils.Vertex isect, MeshUtils.Vertex orgUp, MeshUtils.Vertex dstUp, MeshUtils.Vertex orgLo, MeshUtils.Vertex dstLo) + { + isect._coords = Vec3.Zero; + Real w0, w1, w2, w3; + VertexWeights(isect, orgUp, dstUp, out w0, out w1); + VertexWeights(isect, orgLo, dstLo, out w2, out w3); + + if (_combineCallback != null) + { + isect._data = _combineCallback( + isect._coords, + new object[] { orgUp._data, dstUp._data, orgLo._data, dstLo._data }, + new Real[] { w0, w1, w2, w3 } + ); + } + } + + /// + /// Check the upper and lower edge of "regUp", to make sure that the + /// eUp->Org is above eLo, or eLo->Org is below eUp (depending on which + /// origin is leftmost). + /// + /// The main purpose is to splice right-going edges with the same + /// dest vertex and nearly identical slopes (ie. we can't distinguish + /// the slopes numerically). However the splicing can also help us + /// to recover from numerical errors. For example, suppose at one + /// point we checked eUp and eLo, and decided that eUp->Org is barely + /// above eLo. Then later, we split eLo into two edges (eg. from + /// a splice operation like this one). This can change the result of + /// our test so that now eUp->Org is incident to eLo, or barely below it. + /// We must correct this condition to maintain the dictionary invariants. + /// + /// One possibility is to check these edges for intersection again + /// (ie. CheckForIntersect). This is what we do if possible. However + /// CheckForIntersect requires that tess->event lies between eUp and eLo, + /// so that it has something to fall back on when the intersection + /// calculation gives us an unusable answer. So, for those cases where + /// we can't check for intersection, this routine fixes the problem + /// by just splicing the offending vertex into the other edge. + /// This is a guaranteed solution, no matter how degenerate things get. + /// Basically this is a combinatorial solution to a numerical problem. + /// + private bool CheckForRightSplice(ActiveRegion regUp) + { + var regLo = RegionBelow(regUp); + var eUp = regUp._eUp; + var eLo = regLo._eUp; + + if (Geom.VertLeq(eUp._Org, eLo._Org)) + { + if (Geom.EdgeSign(eLo._Dst, eUp._Org, eLo._Org) > 0.0f) + { + return false; + } + + // eUp.Org appears to be below eLo + if (!Geom.VertEq(eUp._Org, eLo._Org)) + { + // Splice eUp._Org into eLo + _mesh.SplitEdge(eLo._Sym); + _mesh.Splice(eUp, eLo._Oprev); + regUp._dirty = regLo._dirty = true; + } + else if (eUp._Org != eLo._Org) + { + // merge the two vertices, discarding eUp.Org + _pq.Remove(eUp._Org._pqHandle); + SpliceMergeVertices(eLo._Oprev, eUp); + } + } + else + { + if (Geom.EdgeSign(eUp._Dst, eLo._Org, eUp._Org) < 0.0f) + { + return false; + } + + // eLo.Org appears to be above eUp, so splice eLo.Org into eUp + RegionAbove(regUp)._dirty = regUp._dirty = true; + _mesh.SplitEdge(eUp._Sym); + _mesh.Splice(eLo._Oprev, eUp); + } + return true; + } + + /// + /// Check the upper and lower edge of "regUp", to make sure that the + /// eUp->Dst is above eLo, or eLo->Dst is below eUp (depending on which + /// destination is rightmost). + /// + /// Theoretically, this should always be true. However, splitting an edge + /// into two pieces can change the results of previous tests. For example, + /// suppose at one point we checked eUp and eLo, and decided that eUp->Dst + /// is barely above eLo. Then later, we split eLo into two edges (eg. from + /// a splice operation like this one). This can change the result of + /// the test so that now eUp->Dst is incident to eLo, or barely below it. + /// We must correct this condition to maintain the dictionary invariants + /// (otherwise new edges might get inserted in the wrong place in the + /// dictionary, and bad stuff will happen). + /// + /// We fix the problem by just splicing the offending vertex into the + /// other edge. + /// + private bool CheckForLeftSplice(ActiveRegion regUp) + { + var regLo = RegionBelow(regUp); + var eUp = regUp._eUp; + var eLo = regLo._eUp; + + Debug.Assert(!Geom.VertEq(eUp._Dst, eLo._Dst)); + + if (Geom.VertLeq(eUp._Dst, eLo._Dst)) + { + if (Geom.EdgeSign(eUp._Dst, eLo._Dst, eUp._Org) < 0.0f) + { + return false; + } + + // eLo.Dst is above eUp, so splice eLo.Dst into eUp + RegionAbove(regUp)._dirty = regUp._dirty = true; + var e = _mesh.SplitEdge(eUp); + _mesh.Splice(eLo._Sym, e); + e._Lface._inside = regUp._inside; + } + else + { + if (Geom.EdgeSign(eLo._Dst, eUp._Dst, eLo._Org) > 0.0f) + { + return false; + } + + // eUp.Dst is below eLo, so splice eUp.Dst into eLo + regUp._dirty = regLo._dirty = true; + var e = _mesh.SplitEdge(eLo); + _mesh.Splice(eUp._Lnext, eLo._Sym); + e._Rface._inside = regUp._inside; + } + return true; + } + + /// + /// Check the upper and lower edges of the given region to see if + /// they intersect. If so, create the intersection and add it + /// to the data structures. + /// + /// Returns TRUE if adding the new intersection resulted in a recursive + /// call to AddRightEdges(); in this case all "dirty" regions have been + /// checked for intersections, and possibly regUp has been deleted. + /// + private bool CheckForIntersect(ActiveRegion regUp) + { + var regLo = RegionBelow(regUp); + var eUp = regUp._eUp; + var eLo = regLo._eUp; + var orgUp = eUp._Org; + var orgLo = eLo._Org; + var dstUp = eUp._Dst; + var dstLo = eLo._Dst; + + Debug.Assert(!Geom.VertEq(dstLo, dstUp)); + Debug.Assert(Geom.EdgeSign(dstUp, _event, orgUp) <= 0.0f); + Debug.Assert(Geom.EdgeSign(dstLo, _event, orgLo) >= 0.0f); + Debug.Assert(orgUp != _event && orgLo != _event); + Debug.Assert(!regUp._fixUpperEdge && !regLo._fixUpperEdge); + + if( orgUp == orgLo ) + { + // right endpoints are the same + return false; + } + + var tMinUp = Math.Min(orgUp._t, dstUp._t); + var tMaxLo = Math.Max(orgLo._t, dstLo._t); + if( tMinUp > tMaxLo ) + { + // t ranges do not overlap + return false; + } + + if (Geom.VertLeq(orgUp, orgLo)) + { + if (Geom.EdgeSign( dstLo, orgUp, orgLo ) > 0.0f) + { + return false; + } + } + else + { + if (Geom.EdgeSign( dstUp, orgLo, orgUp ) < 0.0f) + { + return false; + } + } + + // At this point the edges intersect, at least marginally + + var isect = MeshUtils.Vertex.Create(); + Geom.EdgeIntersect(dstUp, orgUp, dstLo, orgLo, isect); + // The following properties are guaranteed: + Debug.Assert(Math.Min(orgUp._t, dstUp._t) <= isect._t); + Debug.Assert(isect._t <= Math.Max(orgLo._t, dstLo._t)); + Debug.Assert(Math.Min(dstLo._s, dstUp._s) <= isect._s); + Debug.Assert(isect._s <= Math.Max(orgLo._s, orgUp._s)); + + if (Geom.VertLeq(isect, _event)) + { + // The intersection point lies slightly to the left of the sweep line, + // so move it until it''s slightly to the right of the sweep line. + // (If we had perfect numerical precision, this would never happen + // in the first place). The easiest and safest thing to do is + // replace the intersection by tess._event. + isect._s = _event._s; + isect._t = _event._t; + } + // Similarly, if the computed intersection lies to the right of the + // rightmost origin (which should rarely happen), it can cause + // unbelievable inefficiency on sufficiently degenerate inputs. + // (If you have the test program, try running test54.d with the + // "X zoom" option turned on). + var orgMin = Geom.VertLeq(orgUp, orgLo) ? orgUp : orgLo; + if (Geom.VertLeq(orgMin, isect)) + { + isect._s = orgMin._s; + isect._t = orgMin._t; + } + + if (Geom.VertEq(isect, orgUp) || Geom.VertEq(isect, orgLo)) + { + // Easy case -- intersection at one of the right endpoints + CheckForRightSplice(regUp); + return false; + } + + if ( (! Geom.VertEq(dstUp, _event) + && Geom.EdgeSign(dstUp, _event, isect) >= 0.0f) + || (! Geom.VertEq(dstLo, _event) + && Geom.EdgeSign(dstLo, _event, isect) <= 0.0f)) + { + // Very unusual -- the new upper or lower edge would pass on the + // wrong side of the sweep event, or through it. This can happen + // due to very small numerical errors in the intersection calculation. + if (dstLo == _event) + { + // Splice dstLo into eUp, and process the new region(s) + _mesh.SplitEdge(eUp._Sym); + _mesh.Splice(eLo._Sym, eUp); + regUp = TopLeftRegion(regUp); + eUp = RegionBelow(regUp)._eUp; + FinishLeftRegions(RegionBelow(regUp), regLo); + AddRightEdges(regUp, eUp._Oprev, eUp, eUp, true); + return true; + } + if( dstUp == _event ) { + /* Splice dstUp into eLo, and process the new region(s) */ + _mesh.SplitEdge(eLo._Sym); + _mesh.Splice(eUp._Lnext, eLo._Oprev); + regLo = regUp; + regUp = TopRightRegion(regUp); + var e = RegionBelow(regUp)._eUp._Rprev; + regLo._eUp = eLo._Oprev; + eLo = FinishLeftRegions(regLo, null); + AddRightEdges(regUp, eLo._Onext, eUp._Rprev, e, true); + return true; + } + // Special case: called from ConnectRightVertex. If either + // edge passes on the wrong side of tess._event, split it + // (and wait for ConnectRightVertex to splice it appropriately). + if (Geom.EdgeSign( dstUp, _event, isect ) >= 0.0f) + { + RegionAbove(regUp)._dirty = regUp._dirty = true; + _mesh.SplitEdge(eUp._Sym); + eUp._Org._s = _event._s; + eUp._Org._t = _event._t; + } + if (Geom.EdgeSign(dstLo, _event, isect) <= 0.0f) + { + regUp._dirty = regLo._dirty = true; + _mesh.SplitEdge(eLo._Sym); + eLo._Org._s = _event._s; + eLo._Org._t = _event._t; + } + // leave the rest for ConnectRightVertex + return false; + } + + // General case -- split both edges, splice into new vertex. + // When we do the splice operation, the order of the arguments is + // arbitrary as far as correctness goes. However, when the operation + // creates a new face, the work done is proportional to the size of + // the new face. We expect the faces in the processed part of + // the mesh (ie. eUp._Lface) to be smaller than the faces in the + // unprocessed original contours (which will be eLo._Oprev._Lface). + _mesh.SplitEdge(eUp._Sym); + _mesh.SplitEdge(eLo._Sym); + _mesh.Splice(eLo._Oprev, eUp); + eUp._Org._s = isect._s; + eUp._Org._t = isect._t; + eUp._Org._pqHandle = _pq.Insert(eUp._Org); + if (eUp._Org._pqHandle._handle == PQHandle.Invalid) + { + throw new InvalidOperationException("PQHandle should not be invalid"); + } + GetIntersectData(eUp._Org, orgUp, dstUp, orgLo, dstLo); + RegionAbove(regUp)._dirty = regUp._dirty = regLo._dirty = true; + return false; + } + + /// + /// When the upper or lower edge of any region changes, the region is + /// marked "dirty". This routine walks through all the dirty regions + /// and makes sure that the dictionary invariants are satisfied + /// (see the comments at the beginning of this file). Of course + /// new dirty regions can be created as we make changes to restore + /// the invariants. + /// + private void WalkDirtyRegions(ActiveRegion regUp) + { + var regLo = RegionBelow(regUp); + MeshUtils.Edge eUp, eLo; + + while (true) + { + // Find the lowest dirty region (we walk from the bottom up). + while (regLo._dirty) + { + regUp = regLo; + regLo = RegionBelow(regLo); + } + if (!regUp._dirty) + { + regLo = regUp; + regUp = RegionAbove( regUp ); + if(regUp == null || !regUp._dirty) + { + // We've walked all the dirty regions + return; + } + } + regUp._dirty = false; + eUp = regUp._eUp; + eLo = regLo._eUp; + + if (eUp._Dst != eLo._Dst) + { + // Check that the edge ordering is obeyed at the Dst vertices. + if (CheckForLeftSplice(regUp)) + { + + // If the upper or lower edge was marked fixUpperEdge, then + // we no longer need it (since these edges are needed only for + // vertices which otherwise have no right-going edges). + if (regLo._fixUpperEdge) + { + DeleteRegion(regLo); + _mesh.Delete(eLo); + regLo = RegionBelow(regUp); + eLo = regLo._eUp; + } + else if( regUp._fixUpperEdge ) + { + DeleteRegion(regUp); + _mesh.Delete(eUp); + regUp = RegionAbove(regLo); + eUp = regUp._eUp; + } + } + } + if (eUp._Org != eLo._Org) + { + if( eUp._Dst != eLo._Dst + && ! regUp._fixUpperEdge && ! regLo._fixUpperEdge + && (eUp._Dst == _event || eLo._Dst == _event) ) + { + // When all else fails in CheckForIntersect(), it uses tess._event + // as the intersection location. To make this possible, it requires + // that tess._event lie between the upper and lower edges, and also + // that neither of these is marked fixUpperEdge (since in the worst + // case it might splice one of these edges into tess.event, and + // violate the invariant that fixable edges are the only right-going + // edge from their associated vertex). + if (CheckForIntersect(regUp)) + { + // WalkDirtyRegions() was called recursively; we're done + return; + } + } + else + { + // Even though we can't use CheckForIntersect(), the Org vertices + // may violate the dictionary edge ordering. Check and correct this. + CheckForRightSplice(regUp); + } + } + if (eUp._Org == eLo._Org && eUp._Dst == eLo._Dst) + { + // A degenerate loop consisting of only two edges -- delete it. + Geom.AddWinding(eLo, eUp); + DeleteRegion(regUp); + _mesh.Delete(eUp); + regUp = RegionAbove(regLo); + } + } + } + + /// + /// Purpose: connect a "right" vertex vEvent (one where all edges go left) + /// to the unprocessed portion of the mesh. Since there are no right-going + /// edges, two regions (one above vEvent and one below) are being merged + /// into one. "regUp" is the upper of these two regions. + /// + /// There are two reasons for doing this (adding a right-going edge): + /// - if the two regions being merged are "inside", we must add an edge + /// to keep them separated (the combined region would not be monotone). + /// - in any case, we must leave some record of vEvent in the dictionary, + /// so that we can merge vEvent with features that we have not seen yet. + /// For example, maybe there is a vertical edge which passes just to + /// the right of vEvent; we would like to splice vEvent into this edge. + /// + /// However, we don't want to connect vEvent to just any vertex. We don''t + /// want the new edge to cross any other edges; otherwise we will create + /// intersection vertices even when the input data had no self-intersections. + /// (This is a bad thing; if the user's input data has no intersections, + /// we don't want to generate any false intersections ourselves.) + /// + /// Our eventual goal is to connect vEvent to the leftmost unprocessed + /// vertex of the combined region (the union of regUp and regLo). + /// But because of unseen vertices with all right-going edges, and also + /// new vertices which may be created by edge intersections, we don''t + /// know where that leftmost unprocessed vertex is. In the meantime, we + /// connect vEvent to the closest vertex of either chain, and mark the region + /// as "fixUpperEdge". This flag says to delete and reconnect this edge + /// to the next processed vertex on the boundary of the combined region. + /// Quite possibly the vertex we connected to will turn out to be the + /// closest one, in which case we won''t need to make any changes. + /// + private void ConnectRightVertex(ActiveRegion regUp, MeshUtils.Edge eBottomLeft) + { + var eTopLeft = eBottomLeft._Onext; + var regLo = RegionBelow(regUp); + var eUp = regUp._eUp; + var eLo = regLo._eUp; + bool degenerate = false; + + if (eUp._Dst != eLo._Dst) + { + CheckForIntersect(regUp); + } + + // Possible new degeneracies: upper or lower edge of regUp may pass + // through vEvent, or may coincide with new intersection vertex + if (Geom.VertEq(eUp._Org, _event)) + { + _mesh.Splice(eTopLeft._Oprev, eUp); + regUp = TopLeftRegion(regUp); + eTopLeft = RegionBelow(regUp)._eUp; + FinishLeftRegions(RegionBelow(regUp), regLo); + degenerate = true; + } + if (Geom.VertEq(eLo._Org, _event)) + { + _mesh.Splice(eBottomLeft, eLo._Oprev); + eBottomLeft = FinishLeftRegions(regLo, null); + degenerate = true; + } + if (degenerate) + { + AddRightEdges(regUp, eBottomLeft._Onext, eTopLeft, eTopLeft, true); + return; + } + + // Non-degenerate situation -- need to add a temporary, fixable edge. + // Connect to the closer of eLo.Org, eUp.Org. + MeshUtils.Edge eNew; + if (Geom.VertLeq(eLo._Org, eUp._Org)) + { + eNew = eLo._Oprev; + } + else + { + eNew = eUp; + } + eNew = _mesh.Connect(eBottomLeft._Lprev, eNew); + + // Prevent cleanup, otherwise eNew might disappear before we've even + // had a chance to mark it as a temporary edge. + AddRightEdges(regUp, eNew, eNew._Onext, eNew._Onext, false); + eNew._Sym._activeRegion._fixUpperEdge = true; + WalkDirtyRegions(regUp); + } + + /// + /// The event vertex lies exacty on an already-processed edge or vertex. + /// Adding the new vertex involves splicing it into the already-processed + /// part of the mesh. + /// + private void ConnectLeftDegenerate(ActiveRegion regUp, MeshUtils.Vertex vEvent) + { + var e = regUp._eUp; + if (Geom.VertEq(e._Org, vEvent)) + { + // e.Org is an unprocessed vertex - just combine them, and wait + // for e.Org to be pulled from the queue + // C# : in the C version, there is a flag but it was never implemented + // the vertices are before beginning the tessellation + throw new InvalidOperationException("Vertices should have been merged before"); + } + + if (!Geom.VertEq(e._Dst, vEvent)) + { + // General case -- splice vEvent into edge e which passes through it + _mesh.SplitEdge(e._Sym); + if (regUp._fixUpperEdge) + { + // This edge was fixable -- delete unused portion of original edge + _mesh.Delete(e._Onext); + regUp._fixUpperEdge = false; + } + _mesh.Splice(vEvent._anEdge, e); + SweepEvent(vEvent); // recurse + return; + } + + // See above + throw new InvalidOperationException("Vertices should have been merged before"); + } + + /// + /// Purpose: connect a "left" vertex (one where both edges go right) + /// to the processed portion of the mesh. Let R be the active region + /// containing vEvent, and let U and L be the upper and lower edge + /// chains of R. There are two possibilities: + /// + /// - the normal case: split R into two regions, by connecting vEvent to + /// the rightmost vertex of U or L lying to the left of the sweep line + /// + /// - the degenerate case: if vEvent is close enough to U or L, we + /// merge vEvent into that edge chain. The subcases are: + /// - merging with the rightmost vertex of U or L + /// - merging with the active edge of U or L + /// - merging with an already-processed portion of U or L + /// + private void ConnectLeftVertex(MeshUtils.Vertex vEvent) + { + var tmp = new ActiveRegion(); + + // Get a pointer to the active region containing vEvent + tmp._eUp = vEvent._anEdge._Sym; + var regUp = _dict.Find(tmp).Key; + var regLo = RegionBelow(regUp); + if (regLo == null) + { + // This may happen if the input polygon is coplanar. + return; + } + var eUp = regUp._eUp; + var eLo = regLo._eUp; + + // Try merging with U or L first + if (Geom.EdgeSign(eUp._Dst, vEvent, eUp._Org) == 0.0f) + { + ConnectLeftDegenerate(regUp, vEvent); + return; + } + + // Connect vEvent to rightmost processed vertex of either chain. + // e._Dst is the vertex that we will connect to vEvent. + var reg = Geom.VertLeq(eLo._Dst, eUp._Dst) ? regUp : regLo; + + if (regUp._inside || reg._fixUpperEdge) + { + MeshUtils.Edge eNew; + if (reg == regUp) + { + eNew = _mesh.Connect(vEvent._anEdge._Sym, eUp._Lnext); + } + else + { + eNew = _mesh.Connect(eLo._Dnext, vEvent._anEdge)._Sym; + } + if (reg._fixUpperEdge) + { + FixUpperEdge(reg, eNew); + } + else + { + ComputeWinding(AddRegionBelow(regUp, eNew)); + } + SweepEvent(vEvent); + } + else + { + // The new vertex is in a region which does not belong to the polygon. + // We don't need to connect this vertex to the rest of the mesh. + AddRightEdges(regUp, vEvent._anEdge, vEvent._anEdge, null, true); + } + } + + /// + /// Does everything necessary when the sweep line crosses a vertex. + /// Updates the mesh and the edge dictionary. + /// + private void SweepEvent(MeshUtils.Vertex vEvent) + { + _event = vEvent; + + // Check if this vertex is the right endpoint of an edge that is + // already in the dictionary. In this case we don't need to waste + // time searching for the location to insert new edges. + var e = vEvent._anEdge; + while (e._activeRegion == null) + { + e = e._Onext; + if (e == vEvent._anEdge) + { + // All edges go right -- not incident to any processed edges + ConnectLeftVertex(vEvent); + return; + } + } + + // Processing consists of two phases: first we "finish" all the + // active regions where both the upper and lower edges terminate + // at vEvent (ie. vEvent is closing off these regions). + // We mark these faces "inside" or "outside" the polygon according + // to their winding number, and delete the edges from the dictionary. + // This takes care of all the left-going edges from vEvent. + var regUp = TopLeftRegion(e._activeRegion); + var reg = RegionBelow(regUp); + var eTopLeft = reg._eUp; + var eBottomLeft = FinishLeftRegions(reg, null); + + // Next we process all the right-going edges from vEvent. This + // involves adding the edges to the dictionary, and creating the + // associated "active regions" which record information about the + // regions between adjacent dictionary edges. + if (eBottomLeft._Onext == eTopLeft) + { + // No right-going edges -- add a temporary "fixable" edge + ConnectRightVertex(regUp, eBottomLeft); + } + else + { + AddRightEdges(regUp, eBottomLeft._Onext, eTopLeft, eTopLeft, true); + } + } + + /// + /// Make the sentinel coordinates big enough that they will never be + /// merged with real input features. + /// + /// We add two sentinel edges above and below all other edges, + /// to avoid special cases at the top and bottom. + /// + private void AddSentinel(Real smin, Real smax, Real t) + { + var e = _mesh.MakeEdge(); + e._Org._s = smax; + e._Org._t = t; + e._Dst._s = smin; + e._Dst._t = t; + _event = e._Dst; // initialize it + + var reg = new ActiveRegion(); + reg._eUp = e; + reg._windingNumber = 0; + reg._inside = false; + reg._fixUpperEdge = false; + reg._sentinel = true; + reg._dirty = false; + reg._nodeUp = _dict.Insert(reg); + } + + /// + /// We maintain an ordering of edge intersections with the sweep line. + /// This order is maintained in a dynamic dictionary. + /// + private void InitEdgeDict() + { + _dict = new Dict(EdgeLeq); + + AddSentinel(-SentinelCoord, SentinelCoord, -SentinelCoord); + AddSentinel(-SentinelCoord, SentinelCoord, +SentinelCoord); + } + + private void DoneEdgeDict() + { + int fixedEdges = 0; + + ActiveRegion reg; + while ((reg = _dict.Min().Key) != null) + { + // At the end of all processing, the dictionary should contain + // only the two sentinel edges, plus at most one "fixable" edge + // created by ConnectRightVertex(). + if (!reg._sentinel) + { + Debug.Assert(reg._fixUpperEdge); + Debug.Assert(++fixedEdges == 1); + } + Debug.Assert(reg._windingNumber == 0); + DeleteRegion(reg); + } + + _dict = null; + } + + /// + /// Remove zero-length edges, and contours with fewer than 3 vertices. + /// + private void RemoveDegenerateEdges() + { + MeshUtils.Edge eHead = _mesh._eHead, e, eNext, eLnext; + + for (e = eHead._next; e != eHead; e = eNext) + { + eNext = e._next; + eLnext = e._Lnext; + + if (Geom.VertEq(e._Org, e._Dst) && e._Lnext._Lnext != e) + { + // Zero-length edge, contour has at least 3 edges + + SpliceMergeVertices(eLnext, e); // deletes e.Org + _mesh.Delete(e); // e is a self-loop + e = eLnext; + eLnext = e._Lnext; + } + if (eLnext._Lnext == e) + { + // Degenerate contour (one or two edges) + + if (eLnext != e) + { + if (eLnext == eNext || eLnext == eNext._Sym) + { + eNext = eNext._next; + } + _mesh.Delete(eLnext); + } + if (e == eNext || e == eNext._Sym) + { + eNext = eNext._next; + } + _mesh.Delete(e); + } + } + } + + /// + /// Insert all vertices into the priority queue which determines the + /// order in which vertices cross the sweep line. + /// + private void InitPriorityQ() + { + MeshUtils.Vertex vHead = _mesh._vHead, v; + int vertexCount = 0; + + for (v = vHead._next; v != vHead; v = v._next) + { + vertexCount++; + } + // Make sure there is enough space for sentinels. + vertexCount += 8; + + _pq = new PriorityQueue(vertexCount, Geom.VertLeq); + + vHead = _mesh._vHead; + for( v = vHead._next; v != vHead; v = v._next ) { + v._pqHandle = _pq.Insert(v); + if (v._pqHandle._handle == PQHandle.Invalid) + { + throw new InvalidOperationException("PQHandle should not be invalid"); + } + } + _pq.Init(); + } + + private void DonePriorityQ() + { + _pq = null; + } + + /// + /// Delete any degenerate faces with only two edges. WalkDirtyRegions() + /// will catch almost all of these, but it won't catch degenerate faces + /// produced by splice operations on already-processed edges. + /// The two places this can happen are in FinishLeftRegions(), when + /// we splice in a "temporary" edge produced by ConnectRightVertex(), + /// and in CheckForLeftSplice(), where we splice already-processed + /// edges to ensure that our dictionary invariants are not violated + /// by numerical errors. + /// + /// In both these cases it is *very* dangerous to delete the offending + /// edge at the time, since one of the routines further up the stack + /// will sometimes be keeping a pointer to that edge. + /// + private void RemoveDegenerateFaces() + { + MeshUtils.Face f, fNext; + MeshUtils.Edge e; + + for (f = _mesh._fHead._next; f != _mesh._fHead; f = fNext) + { + fNext = f._next; + e = f._anEdge; + Debug.Assert(e._Lnext != e); + + if (e._Lnext._Lnext == e) + { + // A face with only two edges + Geom.AddWinding(e._Onext, e); + _mesh.Delete(e); + } + } + } + + /// + /// ComputeInterior computes the planar arrangement specified + /// by the given contours, and further subdivides this arrangement + /// into regions. Each region is marked "inside" if it belongs + /// to the polygon, according to the rule given by windingRule. + /// Each interior region is guaranteed to be monotone. + /// + protected void ComputeInterior() + { + // Each vertex defines an event for our sweep line. Start by inserting + // all the vertices in a priority queue. Events are processed in + // lexicographic order, ie. + // + // e1 < e2 iff e1.x < e2.x || (e1.x == e2.x && e1.y < e2.y) + RemoveDegenerateEdges(); + InitPriorityQ(); + RemoveDegenerateFaces(); + InitEdgeDict(); + + MeshUtils.Vertex v, vNext; + while ((v = _pq.ExtractMin()) != null) + { + while (true) + { + vNext = _pq.Minimum(); + if (vNext == null || !Geom.VertEq(vNext, v)) + { + break; + } + + // Merge together all vertices at exactly the same location. + // This is more efficient than processing them one at a time, + // simplifies the code (see ConnectLeftDegenerate), and is also + // important for correct handling of certain degenerate cases. + // For example, suppose there are two identical edges A and B + // that belong to different contours (so without this code they would + // be processed by separate sweep events). Suppose another edge C + // crosses A and B from above. When A is processed, we split it + // at its intersection point with C. However this also splits C, + // so when we insert B we may compute a slightly different + // intersection point. This might leave two edges with a small + // gap between them. This kind of error is especially obvious + // when using boundary extraction (BoundaryOnly). + vNext = _pq.ExtractMin(); + SpliceMergeVertices(v._anEdge, vNext._anEdge); + } + SweepEvent(v); + } + + DoneEdgeDict(); + DonePriorityQ(); + + RemoveDegenerateFaces(); + _mesh.Check(); + } + } +} + +} // namespace Unity.VectorGraphics.External \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Sweep.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Sweep.cs.meta new file mode 100644 index 0000000..4e9fcff --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Sweep.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64ce47adfe8718046a27fd95ffeee1b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Tess.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Tess.cs new file mode 100644 index 0000000..633da6e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Tess.cs @@ -0,0 +1,746 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to deal +** in the Software without restriction, including without limitation the rights +** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is furnished to do so, +** subject to the following conditions: +** +** The above copyright notice including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +** INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +** PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +** BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Diagnostics; + +namespace Unity.SpriteShape.External +{ + +using Real = System.Single; +namespace LibTessDotNet +{ + internal enum WindingRule + { + EvenOdd, + NonZero, + Positive, + Negative, + AbsGeqTwo + } + + internal enum ElementType + { + Polygons, + ConnectedPolygons, + BoundaryContours + } + + internal enum ContourOrientation + { + Original, + Clockwise, + CounterClockwise + } + + internal struct ContourVertex + { + public Vec3 Position; + public object Data; + + public override string ToString() + { + return string.Format("{0}, {1}", Position, Data); + } + } + + internal delegate object CombineCallback(Vec3 position, object[] data, Real[] weights); + + internal partial class Tess + { + private Mesh _mesh; + private Vec3 _normal; + private Vec3 _sUnit; + private Vec3 _tUnit; + + private Real _bminX, _bminY, _bmaxX, _bmaxY; + + private WindingRule _windingRule; + + private Dict _dict; + private PriorityQueue _pq; + private MeshUtils.Vertex _event; + + private CombineCallback _combineCallback; + + private ContourVertex[] _vertices; + private int _vertexCount; + private int[] _elements; + private int _elementCount; + + public Vec3 Normal { get { return _normal; } set { _normal = value; } } + + public Real SUnitX = 1; + public Real SUnitY = 0; + public Real SentinelCoord = 4e30f; + + /// + /// If true, will remove empty (zero area) polygons. + /// + public bool NoEmptyPolygons = false; + + /// + /// If true, will use pooling to reduce GC (compare performance with/without, can vary wildly). + /// + public bool UsePooling = false; + + public ContourVertex[] Vertices { get { return _vertices; } } + public int VertexCount { get { return _vertexCount; } } + + public int[] Elements { get { return _elements; } } + public int ElementCount { get { return _elementCount; } } + + public Tess() + { + _normal = Vec3.Zero; + _bminX = _bminY = _bmaxX = _bmaxY = 0; + + _windingRule = WindingRule.EvenOdd; + _mesh = null; + + _vertices = null; + _vertexCount = 0; + _elements = null; + _elementCount = 0; + } + + private void ComputeNormal(ref Vec3 norm) + { + var v = _mesh._vHead._next; + + var minVal = new Real[3] { v._coords.X, v._coords.Y, v._coords.Z }; + var minVert = new MeshUtils.Vertex[3] { v, v, v }; + var maxVal = new Real[3] { v._coords.X, v._coords.Y, v._coords.Z }; + var maxVert = new MeshUtils.Vertex[3] { v, v, v }; + + for (; v != _mesh._vHead; v = v._next) + { + if (v._coords.X < minVal[0]) { minVal[0] = v._coords.X; minVert[0] = v; } + if (v._coords.Y < minVal[1]) { minVal[1] = v._coords.Y; minVert[1] = v; } + if (v._coords.Z < minVal[2]) { minVal[2] = v._coords.Z; minVert[2] = v; } + if (v._coords.X > maxVal[0]) { maxVal[0] = v._coords.X; maxVert[0] = v; } + if (v._coords.Y > maxVal[1]) { maxVal[1] = v._coords.Y; maxVert[1] = v; } + if (v._coords.Z > maxVal[2]) { maxVal[2] = v._coords.Z; maxVert[2] = v; } + } + + // Find two vertices separated by at least 1/sqrt(3) of the maximum + // distance between any two vertices + int i = 0; + if (maxVal[1] - minVal[1] > maxVal[0] - minVal[0]) { i = 1; } + if (maxVal[2] - minVal[2] > maxVal[i] - minVal[i]) { i = 2; } + if (minVal[i] >= maxVal[i]) + { + // All vertices are the same -- normal doesn't matter + norm = new Vec3 { X = 0, Y = 0, Z = 1 }; + return; + } + + // Look for a third vertex which forms the triangle with maximum area + // (Length of normal == twice the triangle area) + Real maxLen2 = 0, tLen2; + var v1 = minVert[i]; + var v2 = maxVert[i]; + Vec3 d1, d2, tNorm; + Vec3.Sub(ref v1._coords, ref v2._coords, out d1); + for (v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + Vec3.Sub(ref v._coords, ref v2._coords, out d2); + tNorm.X = d1.Y * d2.Z - d1.Z * d2.Y; + tNorm.Y = d1.Z * d2.X - d1.X * d2.Z; + tNorm.Z = d1.X * d2.Y - d1.Y * d2.X; + tLen2 = tNorm.X*tNorm.X + tNorm.Y*tNorm.Y + tNorm.Z*tNorm.Z; + if (tLen2 > maxLen2) + { + maxLen2 = tLen2; + norm = tNorm; + } + } + + if (maxLen2 <= 0.0f) + { + // All points lie on a single line -- any decent normal will do + norm = Vec3.Zero; + i = Vec3.LongAxis(ref d1); + norm[i] = 1; + } + } + + private void CheckOrientation() + { + // When we compute the normal automatically, we choose the orientation + // so that the the sum of the signed areas of all contours is non-negative. + Real area = 0.0f; + for (var f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + if (f._anEdge._winding <= 0) + { + continue; + } + area += MeshUtils.FaceArea(f); + } + if (area < 0.0f) + { + // Reverse the orientation by flipping all the t-coordinates + for (var v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + v._t = -v._t; + } + Vec3.Neg(ref _tUnit); + } + } + + private void ProjectPolygon() + { + var norm = _normal; + + bool computedNormal = false; + if (norm.X == 0.0f && norm.Y == 0.0f && norm.Z == 0.0f) + { + ComputeNormal(ref norm); + _normal = norm; + computedNormal = true; + } + + int i = Vec3.LongAxis(ref norm); + + _sUnit[i] = 0; + _sUnit[(i + 1) % 3] = SUnitX; + _sUnit[(i + 2) % 3] = SUnitY; + + _tUnit[i] = 0; + _tUnit[(i + 1) % 3] = norm[i] > 0.0f ? -SUnitY : SUnitY; + _tUnit[(i + 2) % 3] = norm[i] > 0.0f ? SUnitX : -SUnitX; + + // Project the vertices onto the sweep plane + for (var v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + Vec3.Dot(ref v._coords, ref _sUnit, out v._s); + Vec3.Dot(ref v._coords, ref _tUnit, out v._t); + } + if (computedNormal) + { + CheckOrientation(); + } + + // Compute ST bounds. + bool first = true; + for (var v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + if (first) + { + _bminX = _bmaxX = v._s; + _bminY = _bmaxY = v._t; + first = false; + } + else + { + if (v._s < _bminX) _bminX = v._s; + if (v._s > _bmaxX) _bmaxX = v._s; + if (v._t < _bminY) _bminY = v._t; + if (v._t > _bmaxY) _bmaxY = v._t; + } + } + } + + /// + /// TessellateMonoRegion( face ) tessellates a monotone region + /// (what else would it do??) The region must consist of a single + /// loop of half-edges (see mesh.h) oriented CCW. "Monotone" in this + /// case means that any vertical line intersects the interior of the + /// region in a single interval. + /// + /// Tessellation consists of adding interior edges (actually pairs of + /// half-edges), to split the region into non-overlapping triangles. + /// + /// The basic idea is explained in Preparata and Shamos (which I don't + /// have handy right now), although their implementation is more + /// complicated than this one. The are two edge chains, an upper chain + /// and a lower chain. We process all vertices from both chains in order, + /// from right to left. + /// + /// The algorithm ensures that the following invariant holds after each + /// vertex is processed: the untessellated region consists of two + /// chains, where one chain (say the upper) is a single edge, and + /// the other chain is concave. The left vertex of the single edge + /// is always to the left of all vertices in the concave chain. + /// + /// Each step consists of adding the rightmost unprocessed vertex to one + /// of the two chains, and forming a fan of triangles from the rightmost + /// of two chain endpoints. Determining whether we can add each triangle + /// to the fan is a simple orientation test. By making the fan as large + /// as possible, we restore the invariant (check it yourself). + /// + private void TessellateMonoRegion(MeshUtils.Face face) + { + // All edges are oriented CCW around the boundary of the region. + // First, find the half-edge whose origin vertex is rightmost. + // Since the sweep goes from left to right, face->anEdge should + // be close to the edge we want. + var up = face._anEdge; + Debug.Assert(up._Lnext != up && up._Lnext._Lnext != up); + + while (Geom.VertLeq(up._Dst, up._Org)) up = up._Lprev; + while (Geom.VertLeq(up._Org, up._Dst)) up = up._Lnext; + + var lo = up._Lprev; + + while (up._Lnext != lo) + { + if (Geom.VertLeq(up._Dst, lo._Org)) + { + // up.Dst is on the left. It is safe to form triangles from lo.Org. + // The EdgeGoesLeft test guarantees progress even when some triangles + // are CW, given that the upper and lower chains are truly monotone. + while (lo._Lnext != up && (Geom.EdgeGoesLeft(lo._Lnext) + || Geom.EdgeSign(lo._Org, lo._Dst, lo._Lnext._Dst) <= 0.0f)) + { + lo = _mesh.Connect(lo._Lnext, lo)._Sym; + } + lo = lo._Lprev; + } + else + { + // lo.Org is on the left. We can make CCW triangles from up.Dst. + while (lo._Lnext != up && (Geom.EdgeGoesRight(up._Lprev) + || Geom.EdgeSign(up._Dst, up._Org, up._Lprev._Org) >= 0.0f)) + { + up = _mesh.Connect(up, up._Lprev)._Sym; + } + up = up._Lnext; + } + } + + // Now lo.Org == up.Dst == the leftmost vertex. The remaining region + // can be tessellated in a fan from this leftmost vertex. + Debug.Assert(lo._Lnext != up); + while (lo._Lnext._Lnext != up) + { + lo = _mesh.Connect(lo._Lnext, lo)._Sym; + } + } + + /// + /// TessellateInterior( mesh ) tessellates each region of + /// the mesh which is marked "inside" the polygon. Each such region + /// must be monotone. + /// + private void TessellateInterior() + { + MeshUtils.Face f, next; + for (f = _mesh._fHead._next; f != _mesh._fHead; f = next) + { + // Make sure we don't try to tessellate the new triangles. + next = f._next; + if (f._inside) + { + TessellateMonoRegion(f); + } + } + } + + /// + /// DiscardExterior zaps (ie. sets to null) all faces + /// which are not marked "inside" the polygon. Since further mesh operations + /// on NULL faces are not allowed, the main purpose is to clean up the + /// mesh so that exterior loops are not represented in the data structure. + /// + private void DiscardExterior() + { + MeshUtils.Face f, next; + + for (f = _mesh._fHead._next; f != _mesh._fHead; f = next) + { + // Since f will be destroyed, save its next pointer. + next = f._next; + if( ! f._inside ) { + _mesh.ZapFace(f); + } + } + } + + /// + /// SetWindingNumber( value, keepOnlyBoundary ) resets the + /// winding numbers on all edges so that regions marked "inside" the + /// polygon have a winding number of "value", and regions outside + /// have a winding number of 0. + /// + /// If keepOnlyBoundary is TRUE, it also deletes all edges which do not + /// separate an interior region from an exterior one. + /// + private void SetWindingNumber(int value, bool keepOnlyBoundary) + { + MeshUtils.Edge e, eNext; + + for (e = _mesh._eHead._next; e != _mesh._eHead; e = eNext) + { + eNext = e._next; + if (e._Rface._inside != e._Lface._inside) + { + + /* This is a boundary edge (one side is interior, one is exterior). */ + e._winding = (e._Lface._inside) ? value : -value; + } + else + { + + /* Both regions are interior, or both are exterior. */ + if (!keepOnlyBoundary) + { + e._winding = 0; + } + else + { + _mesh.Delete(e); + } + } + } + + } + + private int GetNeighbourFace(MeshUtils.Edge edge) + { + if (edge._Rface == null) + return MeshUtils.Undef; + if (!edge._Rface._inside) + return MeshUtils.Undef; + return edge._Rface._n; + } + + private void OutputPolymesh(ElementType elementType, int polySize) + { + MeshUtils.Vertex v; + MeshUtils.Face f; + MeshUtils.Edge edge; + int maxFaceCount = 0; + int maxVertexCount = 0; + int faceVerts, i; + + if (polySize < 3) + { + polySize = 3; + } + // Assume that the input data is triangles now. + // Try to merge as many polygons as possible + if (polySize > 3) + { + _mesh.MergeConvexFaces(polySize); + } + + // Mark unused + for (v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + v._n = MeshUtils.Undef; + + // Create unique IDs for all vertices and faces. + for (f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + f._n = MeshUtils.Undef; + if (!f._inside) continue; + + if (NoEmptyPolygons) + { + var area = MeshUtils.FaceArea(f); + if (Math.Abs(area) < Real.Epsilon) + { + continue; + } + } + + edge = f._anEdge; + faceVerts = 0; + do { + v = edge._Org; + if (v._n == MeshUtils.Undef) + { + v._n = maxVertexCount; + maxVertexCount++; + } + faceVerts++; + edge = edge._Lnext; + } + while (edge != f._anEdge); + + Debug.Assert(faceVerts <= polySize); + + f._n = maxFaceCount; + ++maxFaceCount; + } + + _elementCount = maxFaceCount; + if (elementType == ElementType.ConnectedPolygons) + maxFaceCount *= 2; + _elements = new int[maxFaceCount * polySize]; + + _vertexCount = maxVertexCount; + _vertices = new ContourVertex[_vertexCount]; + + // Output vertices. + for (v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + if (v._n != MeshUtils.Undef) + { + // Store coordinate + _vertices[v._n].Position = v._coords; + _vertices[v._n].Data = v._data; + } + } + + // Output indices. + int elementIndex = 0; + for (f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + if (!f._inside) continue; + + if (NoEmptyPolygons) + { + var area = MeshUtils.FaceArea(f); + if (Math.Abs(area) < Real.Epsilon) + { + continue; + } + } + + // Store polygon + edge = f._anEdge; + faceVerts = 0; + do { + v = edge._Org; + _elements[elementIndex++] = v._n; + faceVerts++; + edge = edge._Lnext; + } while (edge != f._anEdge); + // Fill unused. + for (i = faceVerts; i < polySize; ++i) + { + _elements[elementIndex++] = MeshUtils.Undef; + } + + // Store polygon connectivity + if (elementType == ElementType.ConnectedPolygons) + { + edge = f._anEdge; + do + { + _elements[elementIndex++] = GetNeighbourFace(edge); + edge = edge._Lnext; + } while (edge != f._anEdge); + // Fill unused. + for (i = faceVerts; i < polySize; ++i) + { + _elements[elementIndex++] = MeshUtils.Undef; + } + } + } + } + + private void OutputContours() + { + MeshUtils.Face f; + MeshUtils.Edge edge, start; + int startVert = 0; + int vertCount = 0; + + _vertexCount = 0; + _elementCount = 0; + + for (f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + if (!f._inside) continue; + + start = edge = f._anEdge; + do + { + ++_vertexCount; + edge = edge._Lnext; + } + while (edge != start); + + ++_elementCount; + } + + _elements = new int[_elementCount * 2]; + _vertices = new ContourVertex[_vertexCount]; + + int vertIndex = 0; + int elementIndex = 0; + + startVert = 0; + + for (f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + if (!f._inside) continue; + + vertCount = 0; + start = edge = f._anEdge; + do { + _vertices[vertIndex].Position = edge._Org._coords; + _vertices[vertIndex].Data = edge._Org._data; + ++vertIndex; + ++vertCount; + edge = edge._Lnext; + } while (edge != start); + + _elements[elementIndex++] = startVert; + _elements[elementIndex++] = vertCount; + + startVert += vertCount; + } + } + + private Real SignedArea(ContourVertex[] vertices) + { + Real area = 0.0f; + + for (int i = 0; i < vertices.Length; i++) + { + var v0 = vertices[i]; + var v1 = vertices[(i + 1) % vertices.Length]; + + area += v0.Position.X * v1.Position.Y; + area -= v0.Position.Y * v1.Position.X; + } + + return 0.5f * area; + } + + public void AddContour(ContourVertex[] vertices) + { + AddContour(vertices, ContourOrientation.Original); + } + + public void AddContour(ContourVertex[] vertices, ContourOrientation forceOrientation) + { + if (_mesh == null) + { + _mesh = new Mesh(); + } + + bool reverse = false; + if (forceOrientation != ContourOrientation.Original) + { + var area = SignedArea(vertices); + reverse = (forceOrientation == ContourOrientation.Clockwise && area < 0.0f) || (forceOrientation == ContourOrientation.CounterClockwise && area > 0.0f); + } + + MeshUtils.Edge e = null; + for (int i = 0; i < vertices.Length; ++i) + { + if (e == null) + { + e = _mesh.MakeEdge(); + _mesh.Splice(e, e._Sym); + } + else + { + // Create a new vertex and edge which immediately follow e + // in the ordering around the left face. + _mesh.SplitEdge(e); + e = e._Lnext; + } + + int index = reverse ? vertices.Length - 1 - i : i; + // The new vertex is now e._Org. + e._Org._coords = vertices[index].Position; + e._Org._data = vertices[index].Data; + + // The winding of an edge says how the winding number changes as we + // cross from the edge's right face to its left face. We add the + // vertices in such an order that a CCW contour will add +1 to + // the winding number of the region inside the contour. + e._winding = 1; + e._Sym._winding = -1; + } + } + + public void Tessellate(WindingRule windingRule, ElementType elementType, int polySize) + { + Tessellate(windingRule, elementType, polySize, null); + } + + public void Tessellate(WindingRule windingRule, ElementType elementType, int polySize, CombineCallback combineCallback) + { + _normal = Vec3.Zero; + _vertices = null; + _elements = null; + + _windingRule = windingRule; + _combineCallback = combineCallback; + + if (_mesh == null) + { + return; + } + + // Determine the polygon normal and project vertices onto the plane + // of the polygon. + ProjectPolygon(); + + // ComputeInterior computes the planar arrangement specified + // by the given contours, and further subdivides this arrangement + // into regions. Each region is marked "inside" if it belongs + // to the polygon, according to the rule given by windingRule. + // Each interior region is guaranteed be monotone. + ComputeInterior(); + + // If the user wants only the boundary contours, we throw away all edges + // except those which separate the interior from the exterior. + // Otherwise we tessellate all the regions marked "inside". + if (elementType == ElementType.BoundaryContours) + { + SetWindingNumber(1, true); + } + else + { + TessellateInterior(); + } + + _mesh.Check(); + + if (elementType == ElementType.BoundaryContours) + { + OutputContours(); + } + else + { + OutputPolymesh(elementType, polySize); + } + + if (UsePooling) + { + _mesh.Free(); + } + _mesh = null; + } + } +} + +} // namespace Unity.VectorGraphics.External \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Tess.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Tess.cs.meta new file mode 100644 index 0000000..e49692c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/External/LibTessDotNet/Tess.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 829c254d9e402e64183afa0e99951e04 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Spline.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Spline.cs new file mode 100644 index 0000000..ec2b9fa --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Spline.cs @@ -0,0 +1,187 @@ +using System; +using System.Collections.Generic; + +namespace UnityEngine.U2D +{ + [Serializable] + public class Spline + { + private static readonly string KErrorMessage = "Internal error: Point too close to neighbor"; + private static readonly float KEpsilon = 0.01f; + [SerializeField] + private bool m_IsOpenEnded; + [SerializeField] + private List m_ControlPoints = new List(); + + public bool isOpenEnded + { + get + { + if (GetPointCount() < 3) + return true; + + return m_IsOpenEnded; + } + set { m_IsOpenEnded = value; } + } + + private bool IsPositionValid(int index, int next, Vector3 point) + { + int prev = (index == 0) ? (m_ControlPoints.Count - 1) : (index - 1); + next = (next >= m_ControlPoints.Count) ? 0 : next; + if (prev >= 0) + { + Vector3 diff = m_ControlPoints[prev].position - point; + if (diff.magnitude < KEpsilon) + return false; + } + if (next < m_ControlPoints.Count) + { + Vector3 diff = m_ControlPoints[next].position - point; + if (diff.magnitude < KEpsilon) + return false; + } + return true; + } + + public void Clear() + { + m_ControlPoints.Clear(); + } + + public int GetPointCount() + { + return m_ControlPoints.Count; + } + + public void InsertPointAt(int index, Vector3 point) + { + if (!IsPositionValid(index, index, point)) + throw new ArgumentException(KErrorMessage); + m_ControlPoints.Insert(index, new SplineControlPoint { position = point, height = 1.0f, corner = true }); + } + + public void RemovePointAt(int index) + { + if (m_ControlPoints.Count > 2) + m_ControlPoints.RemoveAt(index); + } + + public Vector3 GetPosition(int index) + { + return m_ControlPoints[index].position; + } + + public void SetPosition(int index, Vector3 point) + { + if (!IsPositionValid(index, index + 1, point)) + throw new ArgumentException(KErrorMessage); + SplineControlPoint newPoint = m_ControlPoints[index]; + newPoint.position = point; + m_ControlPoints[index] = newPoint; + } + + public Vector3 GetLeftTangent(int index) + { + ShapeTangentMode mode = GetTangentMode(index); + + if (mode == ShapeTangentMode.Linear) + return Vector3.zero; + + return m_ControlPoints[index].leftTangent; + } + + public void SetLeftTangent(int index, Vector3 tangent) + { + ShapeTangentMode mode = GetTangentMode(index); + + if (mode == ShapeTangentMode.Linear) + return; + + SplineControlPoint newPoint = m_ControlPoints[index]; + newPoint.leftTangent = tangent; + m_ControlPoints[index] = newPoint; + } + + public Vector3 GetRightTangent(int index) + { + ShapeTangentMode mode = GetTangentMode(index); + + if (mode == ShapeTangentMode.Linear) + return Vector3.zero; + + return m_ControlPoints[index].rightTangent; + } + + public void SetRightTangent(int index, Vector3 tangent) + { + ShapeTangentMode mode = GetTangentMode(index); + + if (mode == ShapeTangentMode.Linear) + return; + + SplineControlPoint newPoint = m_ControlPoints[index]; + newPoint.rightTangent = tangent; + m_ControlPoints[index] = newPoint; + } + + public ShapeTangentMode GetTangentMode(int index) + { + return m_ControlPoints[index].mode; + } + + public void SetTangentMode(int index, ShapeTangentMode mode) + { + SplineControlPoint newPoint = m_ControlPoints[index]; + newPoint.mode = mode; + m_ControlPoints[index] = newPoint; + } + + public float GetHeight(int index) + { + return m_ControlPoints[index].height; + } + + public void SetHeight(int index, float value) + { + m_ControlPoints[index].height = value; + } + + public int GetSpriteIndex(int index) + { + return m_ControlPoints[index].spriteIndex; + } + + public void SetSpriteIndex(int index, int value) + { + m_ControlPoints[index].spriteIndex = value; + } + + public bool GetCorner(int index) + { + return m_ControlPoints[index].corner; + } + + public void SetCorner(int index, bool value) + { + m_ControlPoints[index].corner = value; + } + + public override int GetHashCode() + { + unchecked + { + int hashCode = (int)2166136261; + + for (int i = 0; i < GetPointCount(); ++i) + { + hashCode = hashCode * 16777619 ^ m_ControlPoints[i].GetHashCode(); + } + + hashCode = hashCode * 16777619 ^ m_IsOpenEnded.GetHashCode(); + + return hashCode; + } + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Spline.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Spline.cs.meta new file mode 100644 index 0000000..1f1edab --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Spline.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 42a84d2aa763148d78347ed13f78591c +timeCreated: 1503764436 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SplineUtility.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SplineUtility.cs new file mode 100644 index 0000000..fd17d68 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SplineUtility.cs @@ -0,0 +1,85 @@ +using System; +using Unity.Collections; +using System.Runtime.InteropServices; +using Unity.Collections.LowLevel.Unsafe; + +namespace UnityEngine.U2D +{ + public class SplineUtility + { + public static float SlopeAngle(Vector2 start, Vector2 end) + { + Vector2 dir = start - end; + dir.Normalize(); + Vector2 dvup = new Vector2(0, 1f); + Vector2 dvrt = new Vector2(1f, 0); + + float dr = Vector2.Dot(dir, dvrt); + float du = Vector2.Dot(dir, dvup); + float cu = Mathf.Acos(du); + float sn = dr >= 0 ? 1.0f : -1.0f; + float an = cu * Mathf.Rad2Deg * sn; + + // Adjust angles when direction is parallel to Up Axis. + an = (du != 1f) ? an : 0; + an = (du != -1f) ? an : -180f; + return an; + } + public static void CalculateTangents(Vector3 point, Vector3 prevPoint, Vector3 nextPoint, Vector3 forward, float scale, out Vector3 rightTangent, out Vector3 leftTangent) + { + Vector3 v1 = (prevPoint - point).normalized; + Vector3 v2 = (nextPoint - point).normalized; + Vector3 v3 = v1 + v2; + Vector3 cross = forward; + + if (prevPoint != nextPoint) + { + bool colinear = Mathf.Abs(v1.x * v2.y - v1.y * v2.x + v1.x * v2.z - v1.z * v2.x + v1.y * v2.z - v1.z * v2.y) < 0.01f; + + if (colinear) + { + rightTangent = v2 * scale; + leftTangent = v1 * scale; + return; + } + + cross = Vector3.Cross(v1, v2); + } + + rightTangent = Vector3.Cross(cross, v3).normalized * scale; + leftTangent = -rightTangent; + } + + public static int NextIndex(int index, int pointCount) + { + return Mod(index + 1, pointCount); + } + + public static int PreviousIndex(int index, int pointCount) + { + return Mod(index - 1, pointCount); + } + + private static int Mod(int x, int m) + { + int r = x % m; + return r < 0 ? r + m : r; + } + } + + // Copy utility. + internal class SpriteShapeCopyUtility where T : struct + { + internal static void Copy(NativeSlice dst, T[] src, int length) + { + NativeSlice dstSet = new NativeSlice(dst, 0, length); + dstSet.CopyFrom(src); + } + + internal static void Copy(T[] dst, NativeSlice src, int length) + { + NativeSlice dstSet = new NativeSlice(src, 0, length); + dstSet.CopyTo(dst); + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SplineUtility.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SplineUtility.cs.meta new file mode 100644 index 0000000..3481968 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SplineUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 97cd8ab4fa1413646be1291760a3bddd +timeCreated: 1505804231 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShape.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShape.cs new file mode 100644 index 0000000..2393a64 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShape.cs @@ -0,0 +1,310 @@ +using System; +using System.Collections.Generic; + +namespace UnityEngine.U2D +{ + public enum ShapeTangentMode + { + Linear = 0, + Continuous = 1, + Broken = 2, + }; + + public enum CornerType + { + OuterTopLeft, + OuterTopRight, + OuterBottomLeft, + OuterBottomRight, + InnerTopLeft, + InnerTopRight, + InnerBottomLeft, + InnerBottomRight, + }; + + public enum QualityDetail + { + High = 16, + Mid = 8, + Low = 4 + } + + [System.Serializable] + public class SplineControlPoint + { + public Vector3 position; + public Vector3 leftTangent; + public Vector3 rightTangent; + public ShapeTangentMode mode; + public float height = 1f; + public float bevelCutoff; + public float bevelSize; + public int spriteIndex; + public bool corner; + + public override int GetHashCode() + { + return ((int)position.x).GetHashCode() ^ ((int)position.y).GetHashCode() ^ position.GetHashCode() ^ + (leftTangent.GetHashCode() << 2) ^ (rightTangent.GetHashCode() >> 2) ^ ((int)mode).GetHashCode() ^ + height.GetHashCode() ^ spriteIndex.GetHashCode() ^ corner.GetHashCode(); + } + } + + [System.Serializable] + public class AngleRange : ICloneable + { + public float start + { + get { return m_Start; } + set { m_Start = value; } + } + + public float end + { + get { return m_End; } + set { m_End = value; } + } + + public int order + { + get { return m_Order; } + set { m_Order = value; } + } + + public List sprites + { + get { return m_Sprites; } + set { m_Sprites = value; } + } + + [SerializeField] + float m_Start; + [SerializeField] + float m_End; + [SerializeField] + int m_Order; + [SerializeField] + List m_Sprites = new List(); + + public object Clone() + { + AngleRange clone = this.MemberwiseClone() as AngleRange; + clone.sprites = new List(clone.sprites); + + return clone; + } + + public override bool Equals(object obj) + { + var other = obj as AngleRange; + + if (other == null) + return false; + + bool equals = start.Equals(other.start) && end.Equals(other.end) && order.Equals(other.order); + + if (!equals) + return false; + + if (sprites.Count != other.sprites.Count) + return false; + + for (int i = 0; i < sprites.Count; ++i) + if (sprites[i] != other.sprites[i]) + return false; + + return true; + } + + public override int GetHashCode() + { + int hashCode = start.GetHashCode() ^ end.GetHashCode() ^ order.GetHashCode(); + + if (sprites != null) + { + for (int i = 0; i < sprites.Count; i++) + { + Sprite sprite = sprites[i]; + if (sprite) + hashCode = hashCode * 16777619 ^ (sprite.GetHashCode() + i); + } + } + + return hashCode; + } + } + + [System.Serializable] + public class CornerSprite : ICloneable + { + public CornerType cornerType + { + get { return m_CornerType; } + set { m_CornerType = value; } + } + + public List sprites + { + get { return m_Sprites; } + set { m_Sprites = value; } + } + + [SerializeField] + CornerType m_CornerType; ///< Set Corner type. enum { OuterTopLeft = 0, OuterTopRight = 1, OuterBottomLeft = 2, OuterBottomRight = 3, InnerTopLeft = 4, InnerTopRight = 5, InnerBottomLeft = 6, InnerBottomRight = 7 } + [SerializeField] + List m_Sprites; + + public object Clone() + { + CornerSprite clone = this.MemberwiseClone() as CornerSprite; + clone.sprites = new List(clone.sprites); + + return clone; + } + + public override bool Equals(object obj) + { + var other = obj as CornerSprite; + + if (other == null) + return false; + + if (!cornerType.Equals(other.cornerType)) + return false; + + if (sprites.Count != other.sprites.Count) + return false; + + for (int i = 0; i < sprites.Count; ++i) + if (sprites[i] != other.sprites[i]) + return false; + + return true; + } + + public override int GetHashCode() + { + int hashCode = cornerType.GetHashCode(); + + if (sprites != null) + { + for (int i = 0; i < sprites.Count; i++) + { + Sprite sprite = sprites[i]; + if (sprite) + { + hashCode ^= (i + 1); + hashCode ^= sprite.GetHashCode(); + } + } + } + + return hashCode; + } + } + + [HelpURLAttribute("https://docs.unity3d.com/Packages/com.unity.2d.spriteshape@latest/index.html?subfolder=/manual/SSProfile.html")] + public class SpriteShape : ScriptableObject + { + public List angleRanges + { + get { return m_Angles; } + set { m_Angles = value; } + } + + public Texture2D fillTexture + { + get { return m_FillTexture; } + set { m_FillTexture = value; } + } + + public List cornerSprites + { + get { return m_CornerSprites; } + set { m_CornerSprites = value; } + } + + public float fillOffset + { + get { return m_FillOffset; } + set { m_FillOffset = value; } + } + + public bool useSpriteBorders + { + get { return m_UseSpriteBorders; } + set { m_UseSpriteBorders = value; } + } + + [SerializeField] + List m_Angles = new List(); + [SerializeField] + Texture2D m_FillTexture; + [SerializeField] + List m_CornerSprites = new List(); + [SerializeField] + float m_FillOffset; + + [SerializeField] + bool m_UseSpriteBorders = true; + + private CornerSprite GetCornerSprite(CornerType cornerType) + { + var cornerSprite = new CornerSprite(); + cornerSprite.cornerType = cornerType; + cornerSprite.sprites = new List(); + cornerSprite.sprites.Insert(0, null); + return cornerSprite; + } + + void ResetCornerList() + { + m_CornerSprites.Insert(0, GetCornerSprite(CornerType.OuterTopLeft)); + m_CornerSprites.Insert(1, GetCornerSprite(CornerType.OuterTopRight)); + m_CornerSprites.Insert(2, GetCornerSprite(CornerType.OuterBottomLeft)); + m_CornerSprites.Insert(3, GetCornerSprite(CornerType.OuterBottomRight)); + m_CornerSprites.Insert(4, GetCornerSprite(CornerType.InnerTopLeft)); + m_CornerSprites.Insert(5, GetCornerSprite(CornerType.InnerTopRight)); + m_CornerSprites.Insert(6, GetCornerSprite(CornerType.InnerBottomLeft)); + m_CornerSprites.Insert(7, GetCornerSprite(CornerType.InnerBottomRight)); + } + + void OnValidate() + { + if (m_CornerSprites.Count != 8) + ResetCornerList(); + } + + void Reset() + { + ResetCornerList(); + } + + internal static int GetSpriteShapeHashCode(SpriteShape spriteShape) + { + // useSpriteBorders, fillOffset and fillTexture are hashChecked elsewhere. + + unchecked + { + int hashCode = (int)2166136261; + + hashCode = hashCode * 16777619 ^ spriteShape.angleRanges.Count; + + for (int i = 0; i < spriteShape.angleRanges.Count; ++i) + { + hashCode = hashCode * 16777619 ^ (spriteShape.angleRanges[i].GetHashCode() + i); + } + + hashCode = hashCode * 16777619 ^ spriteShape.cornerSprites.Count; + + for (int i = 0; i < spriteShape.cornerSprites.Count; ++i) + { + hashCode = hashCode * 16777619 ^ (spriteShape.cornerSprites[i].GetHashCode() + i); + } + + return hashCode; + } + } + + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShape.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShape.cs.meta new file mode 100644 index 0000000..1887e5b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShape.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: af7181f404f1447c0a7a17b3070b952b +timeCreated: 1505457510 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0a9a0f36a52ce7f4d813fbf5d8f76a1c, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeController.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeController.cs new file mode 100644 index 0000000..f1c5f7c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeController.cs @@ -0,0 +1,801 @@ +using System.Collections.Generic; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Collections.LowLevel.Unsafe; +#if UNITY_EDITOR +using UnityEditor.U2D; +#endif + +namespace UnityEngine.U2D +{ + [ExecuteInEditMode] + [RequireComponent(typeof(SpriteShapeRenderer))] + [DisallowMultipleComponent] + [HelpURLAttribute("https://docs.unity3d.com/Packages/com.unity.2d.spriteshape@latest/index.html?subfolder=/manual/SSController.html")] + public class SpriteShapeController : MonoBehaviour + { + // Internal Dataset. + const float s_DistanceTolerance = 0.001f; + + // Cached Objects. + SpriteShape m_ActiveSpriteShape; + EdgeCollider2D m_EdgeCollider2D; + PolygonCollider2D m_PolygonCollider2D; + SpriteShapeRenderer m_SpriteShapeRenderer; + SpriteShapeGeometryCache m_SpriteShapeGeometryCache; + + Sprite[] m_SpriteArray = new Sprite[0]; + Sprite[] m_EdgeSpriteArray = new Sprite[0]; + Sprite[] m_CornerSpriteArray = new Sprite[0]; + AngleRangeInfo[] m_AngleRangeInfoArray = new AngleRangeInfo[0]; + + // Required for Generation. + NativeArray m_ColliderData; + NativeArray m_TangentData; + + // Renderer Stuff. + bool m_DynamicOcclusionLocal; + bool m_DynamicOcclusionOverriden; + + // Hash Check. + int m_ActiveSplineHash = 0; + int m_ActiveSpriteShapeHash = 0; + SpriteShapeParameters m_ActiveShapeParameters; + + // Serialized Data. + [SerializeField] + Spline m_Spline = new Spline(); + [SerializeField] + SpriteShape m_SpriteShape; + + [SerializeField] + float m_FillPixelPerUnit = 100.0f; + [SerializeField] + float m_StretchTiling = 1.0f; + [SerializeField] + int m_SplineDetail; + [SerializeField] + bool m_AdaptiveUV; + [SerializeField] + bool m_StretchUV; + [SerializeField] + bool m_WorldSpaceUV; + [SerializeField] + float m_CornerAngleThreshold = 30.0f; + [SerializeField] + int m_ColliderDetail; + [SerializeField, Range(-0.5f, 0.5f)] + float m_ColliderOffset; + [SerializeField] + bool m_UpdateCollider = true; + [SerializeField] + bool m_OptimizeCollider = true; + [SerializeField] + bool m_OptimizeGeometry = true; + [SerializeField] + bool m_EnableTangents = false; + [SerializeField] + [HideInInspector] + bool m_GeometryCached = false; + + #region GetSet + + internal bool geometryCached + { + get { return m_GeometryCached; } + } + + internal int splineHashCode + { + get { return m_ActiveSplineHash; } + } + + internal Sprite[] spriteArray + { + get { return m_SpriteArray; } + } + + internal SpriteShapeParameters spriteShapeParameters + { + get { return m_ActiveShapeParameters; } + } + + internal SpriteShapeGeometryCache spriteShapeGeometryCache + { + get + { + if (!m_SpriteShapeGeometryCache) + m_SpriteShapeGeometryCache = GetComponent(); + return m_SpriteShapeGeometryCache; + } + } + + public int spriteShapeHashCode + { + get { return m_ActiveSpriteShapeHash; } + } + + public bool worldSpaceUVs + { + get { return m_WorldSpaceUV; } + set { m_WorldSpaceUV = value; } + } + + public float fillPixelsPerUnit + { + get { return m_FillPixelPerUnit; } + set { m_FillPixelPerUnit = value; } + } + + public bool enableTangents + { + get { return m_EnableTangents; } + set { m_EnableTangents = value; } + } + + public float stretchTiling + { + get { return m_StretchTiling; } + set { m_StretchTiling = value; } + } + + public int splineDetail + { + get { return m_SplineDetail; } + set { m_SplineDetail = Mathf.Max(0, value); } + } + + public int colliderDetail + { + get { return m_ColliderDetail; } + set { m_ColliderDetail = Mathf.Max(0, value); } + } + + public float colliderOffset + { + get { return m_ColliderOffset; } + set { m_ColliderOffset = value; } + } + + public float cornerAngleThreshold + { + get { return m_CornerAngleThreshold; } + set { m_CornerAngleThreshold = value; } + } + + public bool autoUpdateCollider + { + get { return m_UpdateCollider; } + set { m_UpdateCollider = value; } + } + + public bool optimizeCollider + { + get { return m_OptimizeCollider; } + } + + public bool optimizeGeometry + { + get { return m_OptimizeGeometry; } + } + + public bool hasCollider + { + get { return (edgeCollider != null) || (polygonCollider != null); } + } + + public Spline spline + { + get { return m_Spline; } + } + + public SpriteShape spriteShape + { + get { return m_SpriteShape; } + set { m_SpriteShape = value; } + } + + public EdgeCollider2D edgeCollider + { + get + { + if (!m_EdgeCollider2D) + m_EdgeCollider2D = GetComponent(); + return m_EdgeCollider2D; + } + } + + public PolygonCollider2D polygonCollider + { + get + { + if (!m_PolygonCollider2D) + m_PolygonCollider2D = GetComponent(); + return m_PolygonCollider2D; + } + } + + public SpriteShapeRenderer spriteShapeRenderer + { + get + { + if (!m_SpriteShapeRenderer) + m_SpriteShapeRenderer = GetComponent(); + return m_SpriteShapeRenderer; + } + } + + #endregion + + #region EventHandles. + + void DisposeInternal() + { + if (m_ColliderData.IsCreated) + m_ColliderData.Dispose(); + if (m_TangentData.IsCreated) + m_TangentData.Dispose(); + } + + void OnApplicationQuit() + { + DisposeInternal(); + } + + void OnEnable() + { + spriteShapeRenderer.enabled = true; + m_DynamicOcclusionOverriden = true; + m_DynamicOcclusionLocal = spriteShapeRenderer.allowOcclusionWhenDynamic; + spriteShapeRenderer.allowOcclusionWhenDynamic = false; + UpdateSpriteData(); + } + + void OnDisable() + { + spriteShapeRenderer.enabled = false; + DisposeInternal(); + } + + void OnDestroy() + { + + } + + void Reset() + { + m_SplineDetail = (int)QualityDetail.High; + m_AdaptiveUV = true; + m_StretchUV = false; + m_FillPixelPerUnit = 100f; + + m_ColliderDetail = (int)QualityDetail.High; + m_StretchTiling = 1.0f; + m_WorldSpaceUV = false; + m_CornerAngleThreshold = 30.0f; + m_ColliderOffset = 0; + m_UpdateCollider = true; + m_OptimizeCollider = true; + m_OptimizeGeometry = true; + m_EnableTangents = false; + + spline.Clear(); + spline.InsertPointAt(0, Vector2.left + Vector2.down); + spline.InsertPointAt(1, Vector2.left + Vector2.up); + spline.InsertPointAt(2, Vector2.right + Vector2.up); + spline.InsertPointAt(3, Vector2.right + Vector2.down); + } + + static void SmartDestroy(UnityEngine.Object o) + { + if (o == null) + return; + +#if UNITY_EDITOR + if (!Application.isPlaying) + DestroyImmediate(o); + else +#endif + Destroy(o); + } + + #endregion + + #region HashAndDataCheck + + public void RefreshSpriteShape() + { + m_ActiveSplineHash = 0; + } + + // Ensure Neighbor points are not too close to each other. + bool ValidateSpline() + { + int pointCount = spline.GetPointCount(); + if (pointCount < 2) + return false; + for (int i = 0; i < pointCount - 1; ++i) + { + var vec = spline.GetPosition(i) - spline.GetPosition(i + 1); + if (vec.sqrMagnitude < s_DistanceTolerance) + { + Debug.LogWarningFormat(gameObject, "[SpriteShape] Control points {0} & {1} are too close. SpriteShape will not be generated for < {2} >.", i, i + 1, gameObject.name); + return false; + } + } + return true; + } + + // Ensure SpriteShape is valid if not + bool ValidateSpriteShapeTexture() + { + bool valid = false; + + // Check if SpriteShape Profile is valid. + if (spriteShape != null) + { + // Open ended and no valid Sprites set. Check if it has a valid fill texture. + if (!spline.isOpenEnded) + { + valid = (spriteShape.fillTexture != null); + } + } + else + { + // Warn that no SpriteShape is set. + Debug.LogWarningFormat(gameObject, "[SpriteShape] A valid SpriteShape profile has not been set for gameObject < {0} >.", gameObject.name); + } +#if UNITY_EDITOR + // We allow null SpriteShape for rapid prototyping in Editor. + valid = true; +#endif + return valid; + } + + bool HasSpriteShapeChanged() + { + bool changed = (m_ActiveSpriteShape != spriteShape); + if (changed) + m_ActiveSpriteShape = spriteShape; + return changed; + } + + bool HasSpriteShapeDataChanged() + { + bool updateSprites = HasSpriteShapeChanged(); + if (spriteShape) + { + var hashCode = SpriteShape.GetSpriteShapeHashCode(spriteShape); + if (spriteShapeHashCode != hashCode) + { + m_ActiveSpriteShapeHash = hashCode; + updateSprites = true; + } + } + return updateSprites; + } + + bool HasSplineDataChanged() + { + unchecked + { + // Spline. + int hashCode = (int)2166136261 ^ spline.GetHashCode(); + + // Local Stuff. + hashCode = hashCode * 16777619 ^ (m_WorldSpaceUV ? 1 : 0); + hashCode = hashCode * 16777619 ^ (m_EnableTangents ? 1 : 0); + hashCode = hashCode * 16777619 ^ (m_GeometryCached ? 1 : 0); + hashCode = hashCode * 16777619 ^ (m_OptimizeGeometry ? 1 : 0); + hashCode = hashCode * 16777619 ^ (m_StretchTiling.GetHashCode()); + hashCode = hashCode * 16777619 ^ (m_ColliderOffset.GetHashCode()); + hashCode = hashCode * 16777619 ^ (m_ColliderDetail.GetHashCode()); + + if (splineHashCode != hashCode) + { + m_ActiveSplineHash = hashCode; + return true; + } + } + return false; + } + + void OnWillRenderObject() + { + BakeCollider(); + BakeMesh(); + } + + public JobHandle BakeMesh() + { + JobHandle jobHandle = default; + +#if !UNITY_EDITOR + if (spriteShapeGeometryCache) + { + // If SpriteShapeGeometry has already been uploaded, don't bother checking further. + if (0 != spriteShapeGeometryCache.maxArrayCount && 0 != m_ActiveSplineHash) + return jobHandle; + } +#endif + + bool valid = ValidateSpline(); + + if (valid) + { + bool splineChanged = HasSplineDataChanged(); + bool spriteShapeChanged = HasSpriteShapeDataChanged(); + bool spriteShapeParametersChanged = UpdateSpriteShapeParameters(); + + if (spriteShapeChanged) + { + UpdateSpriteData(); + } + + if (splineChanged || spriteShapeChanged || spriteShapeParametersChanged) + { + jobHandle = ScheduleBake(); + } + } + return jobHandle; + } + +#endregion + +#region UpdateData + + public bool UpdateSpriteShapeParameters() + { + bool carpet = !spline.isOpenEnded; + bool smartSprite = true; + bool adaptiveUV = m_AdaptiveUV; + bool stretchUV = m_StretchUV; + bool spriteBorders = false; + uint fillScale = 0; + uint splineDetail = (uint)m_SplineDetail; + float borderPivot = 0f; + float angleThreshold = (m_CornerAngleThreshold >= 0 && m_CornerAngleThreshold < 90) ? m_CornerAngleThreshold : 89.9999f; + Texture2D fillTexture = null; + Matrix4x4 transformMatrix = Matrix4x4.identity; + + if (spriteShape) + { + if (worldSpaceUVs) + transformMatrix = transform.localToWorldMatrix; + + fillTexture = spriteShape.fillTexture; + fillScale = stretchUV ? (uint)stretchTiling : (uint)fillPixelsPerUnit; + borderPivot = spriteShape.fillOffset; + spriteBorders = spriteShape.useSpriteBorders; + // If Corners are enabled, set smart-sprite to false. + if (spriteShape.cornerSprites.Count > 0) + smartSprite = false; + } + else + { +#if UNITY_EDITOR + fillTexture = UnityEditor.EditorGUIUtility.whiteTexture; + fillScale = 100; +#endif + } + + bool changed = m_ActiveShapeParameters.adaptiveUV != adaptiveUV || + m_ActiveShapeParameters.angleThreshold != angleThreshold || + m_ActiveShapeParameters.borderPivot != borderPivot || + m_ActiveShapeParameters.carpet != carpet || + m_ActiveShapeParameters.fillScale != fillScale || + m_ActiveShapeParameters.fillTexture != fillTexture || + m_ActiveShapeParameters.smartSprite != smartSprite || + m_ActiveShapeParameters.splineDetail != splineDetail || + m_ActiveShapeParameters.spriteBorders != spriteBorders || + m_ActiveShapeParameters.transform != transformMatrix || + m_ActiveShapeParameters.stretchUV != stretchUV; + + m_ActiveShapeParameters.adaptiveUV = adaptiveUV; + m_ActiveShapeParameters.stretchUV = stretchUV; + m_ActiveShapeParameters.angleThreshold = angleThreshold; + m_ActiveShapeParameters.borderPivot = borderPivot; + m_ActiveShapeParameters.carpet = carpet; + m_ActiveShapeParameters.fillScale = fillScale; + m_ActiveShapeParameters.fillTexture = fillTexture; + m_ActiveShapeParameters.smartSprite = smartSprite; + m_ActiveShapeParameters.splineDetail = splineDetail; + m_ActiveShapeParameters.spriteBorders = spriteBorders; + m_ActiveShapeParameters.transform = transformMatrix; + + return changed; + } + + void UpdateSpriteData() + { + if (spriteShape) + { + List edgeSpriteList = new List(); + List cornerSpriteList = new List(); + List angleRangeInfoList = new List(); + + List sortedAngleRanges = new List(spriteShape.angleRanges); + sortedAngleRanges.Sort((a, b) => a.order.CompareTo(b.order)); + + for (int i = 0; i < sortedAngleRanges.Count; i++) + { + bool validSpritesFound = false; + AngleRange angleRange = sortedAngleRanges[i]; + foreach (Sprite edgeSprite in angleRange.sprites) + { + if (edgeSprite != null) + { + validSpritesFound = true; + break; + } + } + + if (validSpritesFound) + { + AngleRangeInfo angleRangeInfo = new AngleRangeInfo(); + angleRangeInfo.start = angleRange.start; + angleRangeInfo.end = angleRange.end; + angleRangeInfo.order = (uint)angleRange.order; + List spriteIndices = new List(); + foreach (Sprite edgeSprite in angleRange.sprites) + { + edgeSpriteList.Add(edgeSprite); + spriteIndices.Add(edgeSpriteList.Count - 1); + } + angleRangeInfo.sprites = spriteIndices.ToArray(); + angleRangeInfoList.Add(angleRangeInfo); + } + } + + bool validCornerSpritesFound = false; + foreach (CornerSprite cornerSprite in spriteShape.cornerSprites) + { + if (cornerSprite.sprites[0] != null) + { + validCornerSpritesFound = true; + break; + } + } + + if (validCornerSpritesFound) + { + for (int i = 0; i < spriteShape.cornerSprites.Count; i++) + { + CornerSprite cornerSprite = spriteShape.cornerSprites[i]; + cornerSpriteList.Add(cornerSprite.sprites[0]); + } + } + + m_EdgeSpriteArray = edgeSpriteList.ToArray(); + m_CornerSpriteArray = cornerSpriteList.ToArray(); + m_AngleRangeInfoArray = angleRangeInfoList.ToArray(); + + List spriteList = new List(); + spriteList.AddRange(m_EdgeSpriteArray); + spriteList.AddRange(m_CornerSpriteArray); + m_SpriteArray = spriteList.ToArray(); + } + else + { + m_SpriteArray = new Sprite[0]; + m_EdgeSpriteArray = new Sprite[0]; + m_CornerSpriteArray = new Sprite[0]; + m_AngleRangeInfoArray = new AngleRangeInfo[0]; + } + } + + NativeArray GetShapeControlPoints() + { + int pointCount = spline.GetPointCount(); + NativeArray shapePoints = new NativeArray(pointCount, Allocator.Temp); + for (int i = 0; i < pointCount; ++i) + { + ShapeControlPoint shapeControlPoint; + shapeControlPoint.position = spline.GetPosition(i); + shapeControlPoint.leftTangent = spline.GetLeftTangent(i); + shapeControlPoint.rightTangent = spline.GetRightTangent(i); + shapeControlPoint.mode = (int)spline.GetTangentMode(i); + shapePoints[i] = shapeControlPoint; + } + return shapePoints; + } + + NativeArray GetSpriteShapeMetaData() + { + int pointCount = spline.GetPointCount(); + NativeArray shapeMetaData = new NativeArray(pointCount, Allocator.Temp); + for (int i = 0; i < pointCount; ++i) + { + SpriteShapeMetaData metaData = shapeMetaData[i]; + metaData.height = m_Spline.GetHeight(i); + metaData.spriteIndex = (uint)m_Spline.GetSpriteIndex(i); + metaData.corner = m_Spline.GetCorner(i); + shapeMetaData[i] = metaData; + } + return shapeMetaData; + } + + int CalculateMaxArrayCount(NativeArray shapePoints) + { + bool hasSprites = false; + float smallestWidth = 99999.0f; + + if (null != spriteArray) + { + foreach (var sprite in m_SpriteArray) + { + if (sprite != null) + { + hasSprites = true; + float pixelWidth = BezierUtility.GetSpritePixelWidth(sprite); + smallestWidth = (smallestWidth > pixelWidth) ? pixelWidth : smallestWidth; + } + } + } + + // Approximate vertex Array Count. + float shapeLength = BezierUtility.BezierLength(shapePoints, splineDetail * splineDetail) * 2.0f; + int adjustWidth = hasSprites ? ((int)(shapeLength / smallestWidth) * 6) + (shapePoints.Length * 6 * splineDetail) : 0; + int adjustShape = shapePoints.Length * 4 * splineDetail; + adjustShape = optimizeGeometry ? (adjustShape) : (adjustShape * 2); + var validFT = ValidateSpriteShapeTexture(); +#if !UNITY_EDITOR + adjustShape = validFT ? adjustShape : 0; +#endif + int maxArrayCount = adjustShape + adjustWidth; + return maxArrayCount; + } + +#endregion + + unsafe JobHandle ScheduleBake() + { + JobHandle jobHandle = default; + + bool staticUpload = Application.isPlaying; +#if !UNITY_EDITOR + staticUpload = true; +#endif + if (staticUpload && geometryCached) + { + if (spriteShapeGeometryCache) + if (spriteShapeGeometryCache.maxArrayCount != 0) + return spriteShapeGeometryCache.Upload(spriteShapeRenderer, this); + } + + int pointCount = spline.GetPointCount(); + NativeArray shapePoints = GetShapeControlPoints(); + NativeArray shapeMetaData = GetSpriteShapeMetaData(); + int maxArrayCount = CalculateMaxArrayCount(shapePoints); + + if (maxArrayCount > 0 && enabled) + { + // Collider Data + if (m_ColliderData.IsCreated) + m_ColliderData.Dispose(); + m_ColliderData = new NativeArray(maxArrayCount, Allocator.Persistent); + + // Tangent Data + if (!m_TangentData.IsCreated) + m_TangentData = new NativeArray(1, Allocator.Persistent); + + NativeArray indexArray; + NativeSlice posArray; + NativeSlice uv0Array; + NativeArray bounds = spriteShapeRenderer.GetBounds(); + NativeArray geomArray = spriteShapeRenderer.GetSegments(shapePoints.Length * 8); + NativeSlice tanArray = new NativeSlice(m_TangentData); + + if (m_EnableTangents) + { + spriteShapeRenderer.GetChannels(maxArrayCount, out indexArray, out posArray, out uv0Array, out tanArray); + } + else + { + spriteShapeRenderer.GetChannels(maxArrayCount, out indexArray, out posArray, out uv0Array); + } + + var spriteShapeJob = new SpriteShapeGenerator() { m_Bounds = bounds, m_PosArray = posArray, m_Uv0Array = uv0Array, m_TanArray = tanArray, m_GeomArray = geomArray, m_IndexArray = indexArray, m_ColliderPoints = m_ColliderData }; + spriteShapeJob.Prepare(this, m_ActiveShapeParameters, maxArrayCount, shapePoints, shapeMetaData, m_AngleRangeInfoArray, m_EdgeSpriteArray, m_CornerSpriteArray); + jobHandle = spriteShapeJob.Schedule(); + spriteShapeRenderer.Prepare(jobHandle, m_ActiveShapeParameters, m_SpriteArray); + +#if UNITY_EDITOR + if (spriteShapeGeometryCache && geometryCached) + spriteShapeGeometryCache.SetGeometryCache(maxArrayCount, posArray, uv0Array, tanArray, indexArray, geomArray); +#endif + + JobHandle.ScheduleBatchedJobs(); + } + + if (m_DynamicOcclusionOverriden) + { + spriteShapeRenderer.allowOcclusionWhenDynamic = m_DynamicOcclusionLocal; + m_DynamicOcclusionOverriden = false; + } + shapePoints.Dispose(); + shapeMetaData.Dispose(); + return jobHandle; + } + + public void BakeCollider() + { + if (m_ColliderData.IsCreated) + { + if (autoUpdateCollider) + { + if (hasCollider) + { + int maxCount = short.MaxValue - 1; + float2 last = (float2)0; + List m_ColliderSegment = new List(); + for (int i = 0; i < maxCount; ++i) + { + float2 now = m_ColliderData[i]; + if (!math.any(last) && !math.any(now)) + break; + m_ColliderSegment.Add(new Vector2(now.x, now.y)); + } + + if (edgeCollider != null) + edgeCollider.points = m_ColliderSegment.ToArray(); + if (polygonCollider != null) + polygonCollider.points = m_ColliderSegment.ToArray(); + } + } + // Dispose Collider as its no longer needed. + m_ColliderData.Dispose(); +#if UNITY_EDITOR + if (UnityEditor.SceneView.lastActiveSceneView != null) + UnityEditor.SceneView.lastActiveSceneView.Repaint(); +#endif + } + } + + internal void BakeMeshForced() + { + if (spriteShapeRenderer != null) + { + var hasSplineChanged = HasSplineDataChanged(); + if (!spriteShapeRenderer.isVisible && hasSplineChanged) + { + BakeMesh(); + Rendering.CommandBuffer rc = new Rendering.CommandBuffer(); + rc.GetTemporaryRT(0, 256, 256, 0); + rc.SetRenderTarget(0); + rc.DrawRenderer(spriteShapeRenderer, spriteShapeRenderer.sharedMaterial); + rc.ReleaseTemporaryRT(0); + Graphics.ExecuteCommandBuffer(rc); + } + } + } + + Texture2D GetTextureFromIndex(int index) + { + if (index == 0) + return spriteShape ? spriteShape.fillTexture : null; + + --index; + if (index < m_EdgeSpriteArray.Length) + return GetSpriteTexture(m_EdgeSpriteArray[index]); + + index -= m_EdgeSpriteArray.Length; + return GetSpriteTexture(m_CornerSpriteArray[index]); + } + + Texture2D GetSpriteTexture(Sprite sprite) + { + if (sprite) + { +#if UNITY_EDITOR + return UnityEditor.Sprites.SpriteUtility.GetSpriteTexture(sprite, sprite.packed); +#else + return sprite.texture; +#endif + } + + return null; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeController.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeController.cs.meta new file mode 100644 index 0000000..f14ace6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeController.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 90539df1cd5704abcb25fec9f3f5f84b +timeCreated: 1505457548 +licenseType: Pro +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: d1508e1dc42abb745b24c8891a614d2a, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGenerator.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGenerator.cs new file mode 100644 index 0000000..a637526 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGenerator.cs @@ -0,0 +1,2111 @@ +using System; +using System.Linq; +using Unity.Jobs; +using Unity.Collections; +using Unity.Mathematics; +using Unity.Collections.LowLevel.Unsafe; +using Unity.SpriteShape.External.LibTessDotNet; + +// We will enable this once Burst gets a verified final version as this attribute keeps changing. +#if ENABLE_SPRITESHAPE_BURST +using Unity.Burst; +#endif + +namespace UnityEngine.U2D +{ + +#if ENABLE_SPRITESHAPE_BURST + [BurstCompile] +#endif + public struct SpriteShapeGenerator : IJob + { + + struct JobParameters + { + public int4 shapeData; // x : ClosedShape (bool) y : AdaptiveUV (bool) z : SpriteBorders (bool) w : Enable Fill Texture. + public int4 splineData; // x : StrtechUV. y : splineDetail z : AngleThreshold w: Collider On/Off + public float4 curveData; // x : ColliderPivot y : BorderPivot z : BevelCutoff w : BevelSize. + public float4 fillData; // x : fillScale y : fillScale.x W z : fillScale.y H w: 0. + } + + struct JobSpriteInfo + { + public float4 texRect; // TextureRect. + public float4 texData; // x : GPUWidth y : GPUHeight z : TexelWidth w : TexelHeight + public float4 uvInfo; // x : x, y : y, z : width, w : height + public float4 metaInfo; // x : PPU, y : Pivot Y z : Original Rect Width w : Original Rect Height. + public float4 border; // Sprite Border. + } + + struct JobAngleRange + { + public float4 spriteAngles; // x, y | First Angle & z,w | Second Angle. + public int4 spriteVariant1; // First 4 variants here. + public int4 spriteVariant2; // Second 4 variants here. Total 8 max variants. + public int4 spriteData; // Additional Data. x : sorting Order. y : variant Count. z : render Order Max. + }; + + struct JobControlPoint + { + public int4 cpData; // x : Sprite Index y : Corner Type z : Mode w : Internal Sprite Index. + public int4 exData; // x : Corner Type y: Corner Sprite z : Start/End Corner + public float4 cpInfo; // x : Height y : Bevel Cutoff z : Bevel Size. w : Render Order. + public float2 position; + public float2 tangentLt; + public float2 tangentRt; + }; + + struct JobContourPoint + { + public float2 position; // Position. + public float2 ptData; // x : height. + } + + // Tessellation Structures. + struct JobSegmentInfo + { + public int4 spInfo; // x : Begin y : End. z : Sprite w : First Sprite for that Angle Range. + public float4 spriteInfo; // x : width y : height z : Render Order. w: Distance of the Segment. + }; + + struct JobCornerInfo + { + public float2 bottom; + public float2 top; + public float2 left; + public float2 right; + public int2 cornerData; + } + + struct JobShapeVertex + { + public float2 pos; + public float2 uv; + public float4 tan; + public float2 meta; // x : height y : - + public int2 sprite; // x : sprite y : is main Point. + } + + /// + /// Native Arrays : Scope : Initialized before and ReadOnly During Job + /// + [ReadOnly] + private JobParameters m_ShapeParams; + + [ReadOnly] + [DeallocateOnJobCompletion] + private NativeArray m_SpriteInfos; + + [ReadOnly] + [DeallocateOnJobCompletion] + private NativeArray m_CornerSpriteInfos; + + [ReadOnly] + [DeallocateOnJobCompletion] + private NativeArray m_AngleRanges; + + /// + /// Native Arrays : Scope : Job + /// + [DeallocateOnJobCompletion] + private NativeArray m_Segments; + private int m_SegmentCount; + + [DeallocateOnJobCompletion] + private NativeArray m_ContourPoints; + private int m_ContourPointCount; + + [DeallocateOnJobCompletion] + private NativeArray m_Corners; + private int m_CornerCount; + + [DeallocateOnJobCompletion] + private NativeArray m_TessPoints; + private int m_TessPointCount; + + [DeallocateOnJobCompletion] + NativeArray m_VertexData; + + [DeallocateOnJobCompletion] + NativeArray m_OutputVertexData; + + [DeallocateOnJobCompletion] + private NativeArray m_ControlPoints; + private int m_ControlPointCount; + + [DeallocateOnJobCompletion] + private NativeArray m_CornerCoordinates; + + [DeallocateOnJobCompletion] + private NativeArray m_TempPoints; + + [DeallocateOnJobCompletion] + private NativeArray m_GeneratedControlPoints; + + [DeallocateOnJobCompletion] + private NativeArray m_SpriteIndices; + + /// + /// Output Native Arrays : Scope : SpriteShapeRenderer / SpriteShapeController. + /// + + private int m_IndexArrayCount; + public NativeArray m_IndexArray; + + private int m_VertexArrayCount; + public NativeSlice m_PosArray; + public NativeSlice m_Uv0Array; + public NativeSlice m_TanArray; + + private int m_GeomArrayCount; + public NativeArray m_GeomArray; + + private int m_ColliderPointCount; + public NativeArray m_ColliderPoints; + public NativeArray m_Bounds; + + int m_IndexDataCount; + int m_VertexDataCount; + int m_ColliderDataCount; + int m_ActiveIndexCount; + int m_ActiveVertexCount; + + float2 m_FirstLT; + float2 m_FirstLB; + float4x4 m_Transform; + + int kModeLinear; + int kModeContinous; + int kModeBroken; + + int kCornerTypeOuterTopLeft; + int kCornerTypeOuterTopRight; + int kCornerTypeOuterBottomLeft; + int kCornerTypeOuterBottomRight; + int kCornerTypeInnerTopLeft; + int kCornerTypeInnerTopRight; + int kCornerTypeInnerBottomLeft; + int kCornerTypeInnerBottomRight; + int kControlPointCount; + + float kEpsilon; + float kEpsilonOrder; + float kEpsilonRelaxed; + float kExtendSegment; + float kRenderQuality; + float kOptimizeRender; + float kColliderQuality; + float kOptimizeCollider; + float kLowestQualityTolerance; + float kHighestQualityTolerance; + + #region Getters. + + // Return Vertex Data Count + private int vertexDataCount + { + get { return m_VertexDataCount; } + } + + // Return Index Data Count + private int indexDataCount + { + get { return m_IndexDataCount; } + } + + // Return Sprite Count + private int spriteCount + { + get { return m_SpriteInfos.Length; } + } + + private int cornerSpriteCount + { + get { return m_CornerSpriteInfos.Length; } + } + + // Return Angle Range Count + private int angleRangeCount + { + get { return m_AngleRanges.Length; } + } + + // Return the Input Control Point Count. + private int controlPointCount + { + get { return m_ControlPointCount; } + } + + // Return the Contour Point Count. + private int contourPointCount + { + get { return m_ContourPointCount; } + } + + // Return Segment Count + private int segmentCount + { + get { return m_SegmentCount; } + } + + // Needs Collider Generaie. + private bool hasCollider + { + get { return m_ShapeParams.splineData.w == 1; } + } + + // Collider Pivot + private float colliderPivot + { + get { return m_ShapeParams.curveData.x; } + } + + // Border Pivot + private float borderPivot + { + get { return m_ShapeParams.curveData.y; } + } + + // Spline Detail + private int splineDetail + { + get { return m_ShapeParams.splineData.y; } + } + + // Is this Closed-Loop. + private bool isCarpet + { + get { return m_ShapeParams.shapeData.x == 1; } + } + + // Is Adaptive UV + private bool isAdaptive + { + get { return m_ShapeParams.shapeData.y == 1; } + } + + // Has Sprite Border. + private bool hasSpriteBorder + { + get { return m_ShapeParams.shapeData.z == 1; } + } + + #endregion + + #region Safe Getters. + JobSpriteInfo GetSpriteInfo(int index) + { + if (index >= m_SpriteInfos.Length) + throw new ArgumentException(string.Format("GetSpriteInfo accessed with invalid Index {0} / {1}", index, m_SpriteInfos.Length)); + return m_SpriteInfos[index]; + } + + JobSpriteInfo GetCornerSpriteInfo(int index) + { + int ai = index - 1; + if (ai >= m_CornerSpriteInfos.Length || index == 0) + throw new ArgumentException(string.Format("GetCornerSpriteInfo accessed with invalid Index {0} / {1}", index, m_CornerSpriteInfos.Length)); + return m_CornerSpriteInfos[ai]; + } + + JobAngleRange GetAngleRange(int index) + { + if (index >= m_AngleRanges.Length) + throw new ArgumentException(string.Format("GetAngleRange accessed with invalid Index {0} / {1}", index, m_AngleRanges.Length)); + return m_AngleRanges[index]; + } + + JobControlPoint GetControlPoint(int index) + { + if (index >= m_ControlPoints.Length) + throw new ArgumentException(string.Format("GetControlPoint accessed with invalid Index {0} / {1}", index, m_ControlPoints.Length)); + return m_ControlPoints[index]; + } + + JobContourPoint GetContourPoint(int index) + { + if (index >= m_ContourPointCount) + throw new ArgumentException(string.Format("GetContourPoint accessed with invalid Index {0} / {1}", index, m_ContourPointCount)); + return m_ContourPoints[index]; + } + + JobSegmentInfo GetSegmentInfo(int index) + { + if (index >= m_SegmentCount) + throw new ArgumentException(string.Format("GetSegmentInfo accessed with invalid Index {0} / {1}", index, m_SegmentCount)); + return m_Segments[index]; + } + + int GetContourIndex(int index) + { + if (index >= m_ControlPoints.Length) + throw new ArgumentException(string.Format("GetContourIndex accessed with invalid Index {0} / {1}", index, m_ControlPoints.Length)); + return index * m_ShapeParams.splineData.y; + } + + int GetEndContourIndexOfSegment(JobSegmentInfo isi) + { + int contourIndex = GetContourIndex(isi.spInfo.y) - 1; + if (isi.spInfo.y >= m_ControlPoints.Length || isi.spInfo.y == 0) + throw new ArgumentException("GetEndContourIndexOfSegment accessed with invalid Index"); + return contourIndex; + } + #endregion + + #region Utility + static void CopyToNativeArray(NativeArray from, int length, ref NativeArray to) where T : struct + { + to = new NativeArray(length, Allocator.TempJob); + for (int i = 0; i < length; ++i) + to[i] = from[i]; + } + + static void SafeDispose(NativeArray na) where T : struct + { + if (na.Length > 0) + na.Dispose(); + } + + static bool IsPointOnLine(float epsilon, float2 a, float2 b, float2 c) + { + float cp = (c.y - a.y) * (b.x - a.x) - (c.x - a.x) * (b.y - a.y); + if (math.abs(cp) > epsilon) + return false; + + float dp = (c.x - a.x) * (b.x - a.x) + (c.y - a.y) * (b.y - a.y); + if (dp < 0) + return false; + + float ba = (b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y); + if (dp > ba) + return false; + return true; + } + + static bool IsPointOnLines(float epsilon, float2 p1, float2 p2, float2 p3, float2 p4, float2 r) + { + return IsPointOnLine(epsilon, p1, p2, r) && IsPointOnLine(epsilon, p3, p4, r); + } + + static bool LineIntersection(float epsilon, float2 p1, float2 p2, float2 p3, float2 p4, ref float2 result) + { + float bx = p2.x - p1.x; + float by = p2.y - p1.y; + float dx = p4.x - p3.x; + float dy = p4.y - p3.y; + float bDotDPerp = bx * dy - by * dx; + if (math.abs(bDotDPerp) < epsilon) + { + return false; + } + float cx = p3.x - p1.x; + float cy = p3.y - p1.y; + float t = (cx * dy - cy * dx) / bDotDPerp; + if ((t >= -epsilon) && (t <= 1.0f + epsilon)) + { + result.x = p1.x + t * bx; + result.y = p1.y + t * by; + return true; + } + return false; + } + + static float AngleBetweenVector(float2 a, float2 b) + { + float dot = math.dot(a, b); + float det = (a.x * b.y) - (b.x * a.y); + return math.atan2(det, dot) * Mathf.Rad2Deg; + } + + static bool GenerateColumnsBi(float2 a, float2 b, float2 whsize, bool flip, ref float2 rt, ref float2 rb, float cph) + { + float2 v1 = flip ? (a - b) : (b - a); + if (math.length(v1) < 1e-30f) + return false; + + float2 rvxy = new float2(-1f, 1f); + float2 v2 = v1.yx * rvxy; + float2 whsizey = new float2(whsize.y * cph); + v2 = math.normalize(v2); + + float2 v3 = v2 * whsizey; + rt = a - v3; + rb = a + v3; + return true; + } + + static bool GenerateColumnsTri(float2 a, float2 b, float2 c, float2 whsize, bool flip, ref float2 rt, ref float2 rb, float cph) + { + float2 rvxy = new float2(-1f, 1f); + float2 v0 = b - a; + float2 v1 = c - b; + v0 = v0.yx * rvxy; + v1 = v1.yx * rvxy; + + float2 v2 = math.normalize(v0) + math.normalize(v1); + if (math.length(v2) < 1e-30f) + return false; + v2 = math.normalize(v2); + float2 whsizey = new float2(whsize.y * cph); + float2 v3 = v2 * whsizey; + + rt = b - v3; + rb = b + v3; + return true; + } + #endregion + + #region Input Preparation. + void AppendCornerCoordinates(ref NativeArray corners, ref int cornerCount, float2 a, float2 b, float2 c, float2 d) + { + corners[cornerCount++] = a; + corners[cornerCount++] = b; + corners[cornerCount++] = c; + corners[cornerCount++] = d; + } + + unsafe void PrepareInput(SpriteShapeParameters shapeParams, int maxArrayCount, NativeArray shapePoints, bool optimizeGeometry, bool updateCollider, bool optimizeCollider, float colliderPivot, float colliderDetail) + { + kModeLinear = 0; + kModeContinous = 1; + kModeBroken = 2; + + kCornerTypeOuterTopLeft = 1; + kCornerTypeOuterTopRight = 2; + kCornerTypeOuterBottomLeft = 3; + kCornerTypeOuterBottomRight = 4; + kCornerTypeInnerTopLeft = 5; + kCornerTypeInnerTopRight = 6; + kCornerTypeInnerBottomLeft = 7; + kCornerTypeInnerBottomRight = 8; + + m_IndexDataCount = 0; + m_VertexDataCount = 0; + m_ColliderDataCount = 0; + m_ActiveIndexCount = 0; + m_ActiveVertexCount = 0; + + kEpsilon = 0.00001f; + kEpsilonOrder = -0.0001f; + kEpsilonRelaxed = 0.001f; + kExtendSegment = 10000.0f; + + kLowestQualityTolerance = 4.0f; + kHighestQualityTolerance = 16.0f; + + kColliderQuality = math.clamp(colliderDetail, kLowestQualityTolerance, kHighestQualityTolerance); + kOptimizeCollider = optimizeCollider ? 1 : 0; + kColliderQuality = (kHighestQualityTolerance - kColliderQuality + 2.0f) * 0.002f; + colliderPivot = (colliderPivot == 0) ? 0.001f : colliderPivot; + + kOptimizeRender = optimizeGeometry ? 1 : 0; + kRenderQuality = math.clamp(shapeParams.splineDetail, kLowestQualityTolerance, kHighestQualityTolerance); + kRenderQuality = (kHighestQualityTolerance - kRenderQuality + 2.0f) * 0.0002f; + + m_ShapeParams.shapeData = new int4(shapeParams.carpet ? 1 : 0, shapeParams.adaptiveUV ? 1 : 0, shapeParams.spriteBorders ? 1 : 0, shapeParams.fillTexture != null ? 1 : 0); + m_ShapeParams.splineData = new int4(shapeParams.stretchUV ? 1 : 0, (shapeParams.splineDetail > 4) ? (int)shapeParams.splineDetail : 4, (int)shapeParams.angleThreshold, updateCollider ? 1 : 0); + m_ShapeParams.curveData = new float4(colliderPivot, shapeParams.borderPivot, shapeParams.bevelCutoff, shapeParams.bevelSize); + float fx = 0, fy = 0; + if (shapeParams.fillTexture != null) + { + fx = (float)shapeParams.fillTexture.width * (1.0f / (float)shapeParams.fillScale); + fy = (float)shapeParams.fillTexture.height * (1.0f / (float)shapeParams.fillScale); + } + m_ShapeParams.fillData = new float4(shapeParams.fillScale, fx, fy, 0); + UnsafeUtility.MemClear(m_GeomArray.GetUnsafePtr(), m_GeomArray.Length * UnsafeUtility.SizeOf()); + + m_Transform = new float4x4(shapeParams.transform.m00, shapeParams.transform.m01, shapeParams.transform.m02, shapeParams.transform.m03, + shapeParams.transform.m10, shapeParams.transform.m11, shapeParams.transform.m12, shapeParams.transform.m13, + shapeParams.transform.m20, shapeParams.transform.m21, shapeParams.transform.m22, shapeParams.transform.m23, + shapeParams.transform.m30, shapeParams.transform.m31, shapeParams.transform.m32, shapeParams.transform.m33); + + kControlPointCount = shapePoints.Length * (int)shapeParams.splineDetail * 32; + m_Segments = new NativeArray(shapePoints.Length * 2, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + m_ContourPoints = new NativeArray(kControlPointCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + m_TessPoints = new NativeArray(shapePoints.Length * (int)shapeParams.splineDetail * 128, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + m_VertexData = new NativeArray(maxArrayCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + m_OutputVertexData = new NativeArray(maxArrayCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + m_CornerCoordinates = new NativeArray(32, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + + m_TempPoints = new NativeArray(kControlPointCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + m_GeneratedControlPoints = new NativeArray(kControlPointCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + m_SpriteIndices = new NativeArray(kControlPointCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); + + int cornerCount = 0; + AppendCornerCoordinates(ref m_CornerCoordinates, ref cornerCount, new float2(1f, 1f), new float2(0, 1f), new float2(1f, 0), new float2(0, 0)); + AppendCornerCoordinates(ref m_CornerCoordinates, ref cornerCount, new float2(1f, 0), new float2(1f, 1f), new float2(0, 0), new float2(0, 1f)); + AppendCornerCoordinates(ref m_CornerCoordinates, ref cornerCount, new float2(0, 1f), new float2(0, 0), new float2(1f, 1f), new float2(1f, 0)); + AppendCornerCoordinates(ref m_CornerCoordinates, ref cornerCount, new float2(0, 0), new float2(1f, 0), new float2(0, 1f), new float2(1f, 1f)); + AppendCornerCoordinates(ref m_CornerCoordinates, ref cornerCount, new float2(0, 0), new float2(0, 1f), new float2(1f, 0), new float2(1f, 1f)); + AppendCornerCoordinates(ref m_CornerCoordinates, ref cornerCount, new float2(0, 1f), new float2(1f, 1f), new float2(0, 0), new float2(1f, 0)); + AppendCornerCoordinates(ref m_CornerCoordinates, ref cornerCount, new float2(1f, 0), new float2(0, 0), new float2(1f, 1f), new float2(0, 1f)); + AppendCornerCoordinates(ref m_CornerCoordinates, ref cornerCount, new float2(1f, 1f), new float2(1f, 0), new float2(0, 1f), new float2(0, 0)); + } + + void TransferSprites(ref NativeArray spriteInfos, Sprite[] sprites, int maxCount) + { + + for (int i = 0; i < sprites.Length && i < maxCount; ++i) + { + JobSpriteInfo spriteInfo = spriteInfos[i]; + Sprite spr = sprites[i]; + if (spr != null) + { + Texture2D tex = spr.texture; + spriteInfo.texRect = new float4(spr.textureRect.x, spr.textureRect.y, spr.textureRect.width, spr.textureRect.height); + spriteInfo.texData = new float4(tex.width, tex.height, tex.texelSize.x, tex.texelSize.y); + spriteInfo.border = new float4(spr.border.x, spr.border.y, spr.border.z, spr.border.w); + spriteInfo.uvInfo = new float4(spriteInfo.texRect.x / spriteInfo.texData.x, spriteInfo.texRect.y / spriteInfo.texData.y, spriteInfo.texRect.z / spriteInfo.texData.x, spriteInfo.texRect.w / spriteInfo.texData.y); + spriteInfo.metaInfo = new float4(spr.pixelsPerUnit, spr.pivot.y / spr.textureRect.height, spr.rect.width, spr.rect.height); + + if (!math.any(spriteInfo.texRect)) + { + Cleanup(); + throw new ArgumentException(string.Format("{0} is packed with Tight packing or mesh type set to Tight. Please check input sprites", spr.name)); + } + } + spriteInfos[i] = spriteInfo; + } + + } + + void PrepareSprites(Sprite[] edgeSprites, Sprite[] cornerSprites) + { + m_SpriteInfos = new NativeArray(edgeSprites.Length, Allocator.TempJob); + TransferSprites(ref m_SpriteInfos, edgeSprites, edgeSprites.Length); + + m_CornerSpriteInfos = new NativeArray(kCornerTypeInnerBottomRight, Allocator.TempJob); + TransferSprites(ref m_CornerSpriteInfos, cornerSprites, cornerSprites.Length); + } + + void PrepareAngleRanges(AngleRangeInfo[] angleRanges) + { + m_AngleRanges = new NativeArray(angleRanges.Length, Allocator.TempJob); + + for (int i = 0; i < angleRanges.Length; ++i) + { + JobAngleRange angleRange = m_AngleRanges[i]; + AngleRangeInfo ari = angleRanges[i]; + int[] spr = ari.sprites; + if (ari.start > ari.end) + { + var sw = ari.start; + ari.start = ari.end; + ari.end = sw; + } + angleRange.spriteAngles = new float4(ari.start + 90f, ari.end + 90f, 0, 0); + angleRange.spriteVariant1 = new int4(spr.Length > 0 ? spr[0] : -1, spr.Length > 1 ? spr[1] : -1, spr.Length > 2 ? spr[2] : -1, spr.Length > 3 ? spr[3] : -1); + angleRange.spriteVariant2 = new int4(spr.Length > 4 ? spr[4] : -1, spr.Length > 5 ? spr[5] : -1, spr.Length > 6 ? spr[6] : -1, spr.Length > 7 ? spr[7] : -1); + angleRange.spriteData = new int4((int)ari.order, spr.Length, 32, 0); + m_AngleRanges[i] = angleRange; + } + } + + void PrepareControlPoints(NativeArray shapePoints, NativeArray metaData) + { + float2 zero = new float2(0, 0); + m_ControlPoints = new NativeArray(kControlPointCount, Allocator.TempJob); + + for (int i = 0; i < shapePoints.Length; ++i) + { + JobControlPoint shapePoint = m_ControlPoints[i]; + ShapeControlPoint sp = shapePoints[i]; + SpriteShapeMetaData md = metaData[i]; + shapePoint.position = new float2(sp.position.x, sp.position.y); + shapePoint.tangentLt = (sp.mode == kModeLinear) ? zero : new float2(sp.leftTangent.x, sp.leftTangent.y); + shapePoint.tangentRt = (sp.mode == kModeLinear) ? zero : new float2(sp.rightTangent.x, sp.rightTangent.y); + shapePoint.cpInfo = new float4(md.height, md.bevelCutoff, md.bevelSize, 0); + shapePoint.cpData = new int4((int)md.spriteIndex, md.corner ? 1 : 0, sp.mode, 0); + shapePoint.exData = new int4(-1, 0, 0, 0); + m_ControlPoints[i] = shapePoint; + } + m_ControlPointCount = shapePoints.Length; + m_Corners = new NativeArray(shapePoints.Length, Allocator.TempJob); + GenerateControlPoints(); + } + #endregion + + #region Resolve Angles for Points. + bool WithinRange(JobAngleRange angleRange, float inputAngle) + { + float range = angleRange.spriteAngles.y - angleRange.spriteAngles.x; + float angle = Mathf.Repeat(inputAngle - angleRange.spriteAngles.x, 360f); + return (angle >= 0f && angle <= range); + } + + bool AngleWithinRange(float t, float a, float b) + { + return (a != 0 && b != 0) && (t >= a && t <= b); + } + + static float2 BezierPoint(float2 st, float2 sp, float2 ep, float2 et, float t) + { + float2 xt = new float2(t); + float2 nt = new float2(1.0f - t); + float2 x3 = new float2(3.0f); + return (sp * nt * nt * nt) + (st * nt * nt * xt * x3) + (et * nt * xt * xt * x3) + (ep * xt * xt * xt); + } + + static float SlopeAngle(float2 dirNormalized) + { + float2 dvup = new float2(0, 1f); + float2 dvrt = new float2(1f, 0); + + float dr = math.dot(dirNormalized, dvrt); + float du = math.dot(dirNormalized, dvup); + float cu = math.acos(du); + float sn = dr >= 0 ? 1.0f : -1.0f; + float an = cu * Mathf.Rad2Deg * sn; + + // Adjust angles when direction is parallel to Up Axis. + an = (du != 1f) ? an : 0; + an = (du != -1f) ? an : -180f; + return an; + } + + static float SlopeAngle(float2 start, float2 end) + { + float2 dir = math.normalize(start - end); + return SlopeAngle(dir); + } + + bool ResolveAngle(float angle, int activeIndex, ref float renderOrder, ref int spriteIndex, ref int firstSpriteIndex) + { + int localRenderOrder = 0; + int localSpriteIndex = 0; + for (int i = 0; i < m_AngleRanges.Length; ++i) + { + bool withinRange = WithinRange(m_AngleRanges[i], angle); + if (withinRange) + { + int validIndex = (activeIndex < m_AngleRanges[i].spriteData.y) ? activeIndex : 0; + renderOrder = localRenderOrder + validIndex; + spriteIndex = localSpriteIndex + validIndex; + firstSpriteIndex = localSpriteIndex; + return true; + } + localRenderOrder += m_AngleRanges[i].spriteData.z; + localSpriteIndex += m_AngleRanges[i].spriteData.y; + } + return false; + } + + int GetSpriteIndex(int index, int previousIndex, ref int resolved) + { + int next = (index + 1) % controlPointCount, spriteIndex = -1, firstSpriteIndex = -1; + float order = 0; + var cp = GetControlPoint(index); + float angle = SlopeAngle(GetControlPoint(next).position, cp.position); + bool resolve = ResolveAngle(angle, cp.cpData.x, ref order, ref spriteIndex, ref firstSpriteIndex); + resolved = resolve ? 1 : 0; + return resolve ? spriteIndex : previousIndex; + } + #endregion + + #region Segments. + void GenerateSegments() + { + int activeSpriteIndex = 0, activeSegmentIndex = 0, firstSpriteIndex = -1; + JobSegmentInfo activeSegment = m_Segments[0]; + activeSegment.spInfo = int4.zero; + activeSegment.spriteInfo = int4.zero; + float angle = 0; + + // Generate Segments. + for (int i = 0; i < controlPointCount; ++i) + { + int next = (i + 1) % controlPointCount; + + // Check for Last Point and see if we need loop-back. + bool skipSegmenting = false; + if (next == 0) + { + if (!isCarpet) + continue; + next = 1; + skipSegmenting = true; + } + + JobControlPoint iscp = GetControlPoint(i); + JobControlPoint iscpNext = GetControlPoint(next); + + // If this segment is corner, continue. + if (iscp.exData.x > 0 && iscp.exData.x == iscpNext.exData.x && iscp.exData.z == 1) + continue; + + // Resolve Angle and Order. + int4 pointData = iscp.cpData; + float4 pointInfo = iscp.cpInfo; + + // Get Min Max Segment. + int mn = (i < next) ? i : next; + int mx = (i > next) ? i : next; + bool continueStrip = (iscp.cpData.z == kModeContinous), edgeUpdated = false; + + if (false == continueStrip || 0 == activeSegmentIndex) + angle = SlopeAngle(iscpNext.position, iscp.position); + bool resolved = ResolveAngle(angle, pointData.x, ref pointInfo.w, ref pointData.w, ref firstSpriteIndex); + if (!resolved && !skipSegmenting) + { + // If we do not resolve SpriteIndex (AngleRange) just continue existing segment. + pointData.w = activeSpriteIndex; + iscp.cpData = pointData; + m_ControlPoints[i] = iscp; + + // Insert Dummy Segment. + activeSegment = m_Segments[activeSegmentIndex]; + activeSegment.spInfo.x = mn; + activeSegment.spInfo.y = mx; + activeSegment.spInfo.z = -1; + m_Segments[activeSegmentIndex] = activeSegment; + activeSegmentIndex++; + continue; + } + + // Update current Point. + activeSpriteIndex = pointData.w; + iscp.cpData = pointData; + m_ControlPoints[i] = iscp; + if (skipSegmenting) + continue; + + // Check for Segments. Also check if the Segment Start has been resolved. Otherwise simply start with the next one. + if (activeSegmentIndex != 0) + continueStrip = continueStrip && (m_SpriteIndices[activeSegment.spInfo.x].y != 0 && activeSpriteIndex == activeSegment.spInfo.z); + + if (continueStrip && i != (controlPointCount - 1)) + { + for (int s = 0; s < activeSegmentIndex; ++s) + { + activeSegment = m_Segments[s]; + if (activeSegment.spInfo.x - mn == 1) + { + edgeUpdated = true; + activeSegment.spInfo.x = mn; + m_Segments[s] = activeSegment; + break; + } + if (mx - activeSegment.spInfo.y == 1) + { + edgeUpdated = true; + activeSegment.spInfo.y = mx; + m_Segments[s] = activeSegment; + break; + } + } + } + + if (!edgeUpdated) + { + activeSegment = m_Segments[activeSegmentIndex]; + JobSpriteInfo sprLt = GetSpriteInfo(iscp.cpData.w); + activeSegment.spInfo.x = mn; + activeSegment.spInfo.y = mx; + activeSegment.spInfo.z = activeSpriteIndex; + activeSegment.spInfo.w = firstSpriteIndex; + activeSegment.spriteInfo.x = sprLt.texRect.z; + activeSegment.spriteInfo.y = sprLt.texRect.w; + activeSegment.spriteInfo.z = pointInfo.w; + m_Segments[activeSegmentIndex] = activeSegment; + activeSegmentIndex++; + } + } + + m_SegmentCount = activeSegmentIndex; + + } + + bool GenerateControlPoints() + { + // Globals. + int activePoint = 0, activeIndex = 0; + int startPoint = 0, endPoint = controlPointCount, lastPoint = (controlPointCount - 1); + + float2 rvxy = new float2(-1f, 1f); + int2 sprData = new int2(0, 0); + bool useSlice = true; + int spriteCount = m_SpriteInfos.Length; + + // Calc and calculate Indices. + for (int i = 0; i < controlPointCount; ++i) + { + var resolved = 0; + int spriteIndex = GetSpriteIndex(i, activeIndex, ref resolved); + sprData.x = activeIndex = spriteIndex; + sprData.y = resolved; + m_SpriteIndices[i] = sprData; + } + + // Open-Ended. We simply dont allow Continous mode in End-points. + if (!isCarpet) + { + JobControlPoint cp = GetControlPoint(0); + cp.cpData.z = (cp.cpData.z == kModeContinous) ? kModeBroken : cp.cpData.z; + m_GeneratedControlPoints[activePoint++] = cp; + // If its not carpet, we already pre-insert start and endpoint. + startPoint = 1; + endPoint = controlPointCount - 1; + } + + // Generate Intermediates. + for (int i = startPoint; i < endPoint; ++i) + { + + // Check if the Neighbor Points are all in Linear Mode, + bool vc = InsertCorner(i, ref m_SpriteIndices, ref m_GeneratedControlPoints, ref activePoint); + if (vc) + continue; + + // NO Corners. + m_GeneratedControlPoints[activePoint++] = GetControlPoint(i); + } + + // Open-Ended. + if (!isCarpet) + { + JobControlPoint cp = GetControlPoint(endPoint); + cp.cpData.z = (cp.cpData.z == kModeContinous) ? kModeBroken : cp.cpData.z; + m_GeneratedControlPoints[activePoint++] = cp; + } + // If Closed Shape + else + { + JobControlPoint cp = m_GeneratedControlPoints[0]; + m_GeneratedControlPoints[activePoint++] = cp; + } + + // Copy from these intermediate Points to main Control Points. + for (int i = 0; i < activePoint; ++i) + m_ControlPoints[i] = m_GeneratedControlPoints[i]; + m_ControlPointCount = activePoint; + + // Calc and calculate Indices. + for (int i = 0; i < controlPointCount; ++i) + { + var resolved = 0; + int spriteIndex = GetSpriteIndex(i, activeIndex, ref resolved); + sprData.x = activeIndex = spriteIndex; + sprData.y = resolved; + m_SpriteIndices[i] = sprData; + } + + // End + return useSlice; + } + + float SegmentDistance(JobSegmentInfo isi) + { + float distance = 0; + int stIx = GetContourIndex(isi.spInfo.x); + int enIx = GetEndContourIndexOfSegment(isi); + + for (int i = stIx; i < enIx; ++i) + { + int j = i + 1; + JobContourPoint lt = GetContourPoint(i); + JobContourPoint rt = GetContourPoint(j); + distance = distance + math.distance(lt.position, rt.position); + } + + return distance; + } + + void GenerateContour() + { + int controlPointContour = controlPointCount - 1; + + // Expand the Bezier. + int ap = 0; + float fmax = (float)(splineDetail - 1); + for (int i = 0; i < controlPointContour; ++i) + { + int j = i + 1; + JobControlPoint cp = GetControlPoint(i); + JobControlPoint pp = GetControlPoint(j); + + float2 p0 = cp.position; + float2 p1 = pp.position; + float2 sp = p0; + float2 rt = p0 + cp.tangentRt; + float2 lt = p1 + pp.tangentLt; + int cap = ap; + float spd = 0, cpd = 0; + + for (int n = 0; n < splineDetail; ++n) + { + JobContourPoint xp = m_ContourPoints[ap]; + float t = (float)n / fmax; + float2 bp = BezierPoint(rt, p0, p1, lt, t); + xp.position = bp; + spd += math.distance(bp, sp); + m_ContourPoints[ap++] = xp; + sp = bp; + } + + sp = p0; + for (int n = 0; n < splineDetail; ++n) + { + JobContourPoint xp = m_ContourPoints[cap]; + cpd += math.distance(xp.position, sp); + xp.ptData.x = math.lerp(cp.cpInfo.x, pp.cpInfo.x, cpd / spd); + m_ContourPoints[cap++] = xp; + sp = xp.position; + } + + } + + // End + m_ContourPointCount = ap; + } + + void TessellateContour() + { + + int tessPoints = 0; + + // Create Tessallator if required. + for (int i = 0; i < contourPointCount; ++i) + { + if ((i + 1) % splineDetail == 0) + continue; + int h = (i == 0) ? (contourPointCount - 1) : (i - 1); + int j = (i + 1) % contourPointCount; + h = (i % splineDetail == 0) ? (h - 1) : h; + + JobContourPoint pp = GetContourPoint(h); + JobContourPoint cp = GetContourPoint(i); + JobContourPoint np = GetContourPoint(j); + + float2 cpd = cp.position - pp.position; + float2 npd = np.position - cp.position; + if (math.length(cpd) < kEpsilon || math.length(npd) < kEpsilon) + continue; + + float2 vl = math.normalize(cpd); + float2 vr = math.normalize(npd); + + vl = new float2(-vl.y, vl.x); + vr = new float2(-vr.y, vr.x); + + float2 va = math.normalize(vl) + math.normalize(vr); + float2 vn = math.normalize(va); + + if (math.any(va) && math.any(vn)) + m_TessPoints[tessPoints++] = cp.position + (vn * borderPivot); + } + + m_TessPointCount = tessPoints; + + // Fill Geom. Generate in Native code until we have a reasonably fast enough Tessellation in NativeArray based Jobs. + SpriteShapeSegment geom = m_GeomArray[0]; + Vector3 pos = m_PosArray[0]; + + geom.vertexCount = 0; + geom.geomIndex = 0; + geom.indexCount = 0; + geom.spriteIndex = -1; + + // Fill Geometry. Check if Fill Texture and Fill Scale is Valid. + if (math.all(m_ShapeParams.shapeData.xw)) + { + // Fill Geometry. Check if Fill Texture and Fill Scale is Valid. + if (m_TessPointCount > 0) + { + if (kOptimizeRender > 0) + OptimizePoints(kRenderQuality, ref m_TessPoints, ref m_TessPointCount); + + var inputs = new ContourVertex[m_TessPointCount]; + for (int i = 0; i < m_TessPointCount; ++i) + inputs[i] = new ContourVertex() { Position = new Vec3() { X = m_TessPoints[i].x, Y = m_TessPoints[i].y } }; + + Tess tess = new Tess(); + tess.AddContour(inputs, ContourOrientation.Original); + tess.Tessellate(WindingRule.NonZero, ElementType.Polygons, 3); + + var indices = tess.Elements.Select(i => (UInt16)i).ToArray(); + var vertices = tess.Vertices.Select(v => new Vector2(v.Position.X, v.Position.Y)).ToArray(); + m_IndexDataCount = indices.Length; + m_VertexDataCount = vertices.Length; + + if (vertices.Length > 0) + { + for (m_ActiveIndexCount = 0; m_ActiveIndexCount < m_IndexDataCount; ++m_ActiveIndexCount) + { + m_IndexArray[m_ActiveIndexCount] = indices[m_ActiveIndexCount]; + } + for (m_ActiveVertexCount = 0; m_ActiveVertexCount < m_VertexDataCount; ++m_ActiveVertexCount) + { + pos = new Vector3(vertices[m_ActiveVertexCount].x, vertices[m_ActiveVertexCount].y, 0); + m_PosArray[m_ActiveVertexCount] = pos; + } + + geom.indexCount = m_ActiveIndexCount; + geom.vertexCount = m_ActiveVertexCount; + } + } + } + + if (m_TanArray.Length > 1) + { + for (int i = 0; i < m_ActiveVertexCount; ++i) + m_TanArray[i] = new Vector4(1.0f, 0, 0, -1.0f); + } + + m_GeomArray[0] = geom; + + } + + void CalculateBoundingBox() + { + Bounds bounds = new Bounds(); + + if (vertexDataCount > 0) + { + for (int i = 0; i < vertexDataCount; ++i) + { + Vector3 pos = m_PosArray[i]; + bounds.Encapsulate(pos); + } + } + { + for (int i = 0; i < contourPointCount; ++i) + { + Vector3 pos = new Vector3(m_ContourPoints[i].position.x, m_ContourPoints[i].position.y, 0); + bounds.Encapsulate(pos); + } + } + + m_Bounds[0] = bounds; + } + + void CalculateTexCoords() + { + + SpriteShapeSegment geom = m_GeomArray[0]; + if (m_ShapeParams.splineData.x > 0) + { + float3 ext = m_Bounds[0].extents * 2; + float3 min = m_Bounds[0].center - m_Bounds[0].extents; + for (int i = 0; i < geom.vertexCount; ++i) + { + Vector3 pos = m_PosArray[i]; + Vector2 uv0 = m_Uv0Array[i]; + float3 uv = ((new float3(pos.x, pos.y, pos.z) - min) / ext) * m_ShapeParams.fillData.x; + uv0.x = uv.x; + uv0.y = uv.y; + m_Uv0Array[i] = uv0; + } + } + else + { + for (int i = 0; i < geom.vertexCount; ++i) + { + Vector3 pos = m_PosArray[i]; + Vector2 uv0 = m_Uv0Array[i]; + float3 uv = math.transform(m_Transform, new float3(pos.x, pos.y, pos.z)); + uv0.x = uv.x / m_ShapeParams.fillData.y; + uv0.y = uv.y / m_ShapeParams.fillData.z; + m_Uv0Array[i] = uv0; + } + } + + } + + void CopyVertexData(ref NativeSlice outPos, ref NativeSlice outUV0, ref NativeSlice outTan, int outIndex, NativeArray inVertices, int inIndex, float pivot, float sOrder) + { + Vector3 iscp = outPos[outIndex]; + Vector2 iscu = outUV0[outIndex]; + + float3 v0 = new float3(inVertices[inIndex].pos.x, inVertices[inIndex].pos.y, sOrder); + float3 v1 = new float3(inVertices[inIndex + 1].pos.x, inVertices[inIndex + 1].pos.y, sOrder); + float3 v2 = new float3(inVertices[inIndex + 2].pos.x, inVertices[inIndex + 2].pos.y, sOrder); + float3 v3 = new float3(inVertices[inIndex + 3].pos.x, inVertices[inIndex + 3].pos.y, sOrder); + + float3 lt = (v2 - v0) * pivot; + float3 rt = (v3 - v1) * pivot; + v0 = v0 + lt; + v2 = v2 + lt; + v1 = v1 + rt; + v3 = v3 + rt; + + outPos[outIndex] = v0; + outUV0[outIndex] = inVertices[inIndex].uv; + outPos[outIndex + 1] = v1; + outUV0[outIndex + 1] = inVertices[inIndex + 1].uv; + outPos[outIndex + 2] = v2; + outUV0[outIndex + 2] = inVertices[inIndex + 2].uv; + outPos[outIndex + 3] = v3; + outUV0[outIndex + 3] = inVertices[inIndex + 3].uv; + + if (outTan.Length > 1) + { + outTan[outIndex] = inVertices[inIndex].tan; + outTan[outIndex + 1] = inVertices[inIndex + 1].tan; + outTan[outIndex + 2] = inVertices[inIndex + 2].tan; + outTan[outIndex + 3] = inVertices[inIndex + 3].tan; + } + } + + int CopySegmentRenderData(JobSpriteInfo ispr, ref NativeSlice outPos, ref NativeSlice outUV0, ref NativeSlice outTan, ref int outCount, ref NativeArray indexData, ref int indexCount, NativeArray inVertices, int inCount, float sOrder) + { + if (inCount < 4) + return -1; + + int localVertex = 0; + float pivot = 0.5f - ispr.metaInfo.y; + int finalCount = indexCount + inCount; + if (finalCount >= indexData.Length) + throw new InvalidOperationException("Mesh data has reached Limits. Please try dividing shape into smaller blocks."); + + for (int i = 0; i < inCount; i = i + 4, outCount = outCount + 4, localVertex = localVertex + 4) + { + CopyVertexData(ref outPos, ref outUV0, ref outTan, outCount, inVertices, i, pivot, sOrder); + indexData[indexCount++] = (ushort)(localVertex); + indexData[indexCount++] = (ushort)(3 + localVertex); + indexData[indexCount++] = (ushort)(1 + localVertex); + indexData[indexCount++] = (ushort)(localVertex); + indexData[indexCount++] = (ushort)(2 + localVertex); + indexData[indexCount++] = (ushort)(3 + localVertex); + } + return outCount; + } + + void TessellateSegment(JobSpriteInfo sprInfo, JobSegmentInfo segment, float2 whsize, float4 border, float pxlWidth, bool useClosure, bool validHead, bool validTail, NativeArray vertices, int vertexCount, ref NativeArray outputVertices, ref int outputCount) + { + int outputVertexCount = 0; + float2 zero = new float2(0, 0); + float2 lt = zero, lb = zero, rt = zero, rb = zero; + var column0 = new JobShapeVertex(); + var column1 = new JobShapeVertex(); + var column2 = new JobShapeVertex(); + var column3 = new JobShapeVertex(); + + + int cms = vertexCount - 1; + int lcm = cms - 1; + int expectedCount = outputCount + (cms * 4); + var sprite = vertices[0].sprite; + + float uvDist = 0; + float uvStart = border.x; + float uvEnd = whsize.x - border.z; + float uvTotal = whsize.x; + float uvInter = uvEnd - uvStart; + float uvNow = uvStart / uvTotal; + float dt = uvInter / pxlWidth; + + if (expectedCount >= outputVertices.Length) + throw new InvalidOperationException("Mesh data has reached Limits. Please try dividing shape into smaller blocks."); + + // Generate Render Inputs. + for (int i = 0; i < cms; ++i) + { + bool lc = (cms > 1) && (i == lcm); + bool im = (i != 0 && !lc); + bool sa = false, sb = false; + + JobShapeVertex cs = vertices[i]; + JobShapeVertex ns = vertices[i + 1]; + + float2 es = lc ? cs.pos : vertices[i + 2].pos; + lt = column1.pos; + lb = column3.pos; + sa = true; + + if (im) + { + // Left from Previous. + sb = GenerateColumnsTri(cs.pos, ns.pos, es, whsize, lc, ref rt, ref rb, ns.meta.x * 0.5f); + } + else + { + if (!lc) + { + JobControlPoint icp = GetControlPoint(segment.spInfo.x); + var nsPos = ns.pos; + if (math.any(icp.tangentRt)) + nsPos = icp.tangentRt + cs.pos; + sa = GenerateColumnsBi(cs.pos, nsPos, whsize, false, ref lt, ref lb, cs.meta.x * 0.5f); + } + if (lc && useClosure) + { + rb = m_FirstLB; + rt = m_FirstLT; + } + else + { + var esPos = es; + if (i == lcm) + { + JobControlPoint jcp = GetControlPoint(segment.spInfo.y); + if (math.any(jcp.tangentLt)) + esPos = jcp.tangentLt + ns.pos; + } + sb = GenerateColumnsBi(ns.pos, esPos, whsize, lc, ref rt, ref rb, ns.meta.x * 0.5f); + } + } + + if (i == 0 && segment.spInfo.x == 0) + { + m_FirstLB = lb; + m_FirstLT = lt; + } + + if (!((math.any(lt) || math.any(lb)) && (math.any(rt) || math.any(rb)))) + continue; + + // default tan (1, 0, 0, -1) which is along uv. same here. + float2 nlt = math.normalize(rt - lt); + float4 tan = new float4(nlt.x, nlt.y, 0, -1.0f); + column0.pos = lt; + column0.meta = cs.meta; + column0.sprite = sprite; + column0.tan = tan; + column1.pos = rt; + column1.meta = ns.meta; + column1.sprite = sprite; + column1.tan = tan; + column2.pos = lb; + column2.meta = cs.meta; + column2.sprite = sprite; + column2.tan = tan; + column3.pos = rb; + column3.meta = ns.meta; + column3.sprite = sprite; + column3.tan = tan; + + // Calculate UV. + if (validHead && i == 0) + { + column0.uv.x = column0.uv.y = column1.uv.y = column2.uv.x = 0; + column1.uv.x = column3.uv.x = border.x / whsize.x; + column2.uv.y = column3.uv.y = 1.0f; + } + else if (validTail && i == lcm) + { + column0.uv.y = column1.uv.y = 0; + column0.uv.x = column2.uv.x = (whsize.x - border.z) / whsize.x; + column1.uv.x = column2.uv.y = column3.uv.x = column3.uv.y = 1.0f; + } + else + { + if ((uvInter - uvDist) < kEpsilonRelaxed) + { + uvNow = uvStart / uvTotal; + uvDist = 0; + } + + uvDist = uvDist + (math.distance(ns.pos, cs.pos) * dt); + float uvNext = (uvDist + uvStart) / uvTotal; + + if ((uvDist - uvInter) > kEpsilonRelaxed) + { + uvNext = uvEnd / uvTotal; + uvDist = uvEnd; + } + + column0.uv.y = column1.uv.y = 0; + column0.uv.x = column2.uv.x = uvNow; + column1.uv.x = column3.uv.x = uvNext; + column2.uv.y = column3.uv.y = 1.0f; + uvNow = uvNext; + } + + { + // Fix UV and Copy. + column0.uv.x = (column0.uv.x * sprInfo.uvInfo.z) + sprInfo.uvInfo.x; + column0.uv.y = (column0.uv.y * sprInfo.uvInfo.w) + sprInfo.uvInfo.y; + outputVertices[outputVertexCount++] = column0; + + column1.uv.x = (column1.uv.x * sprInfo.uvInfo.z) + sprInfo.uvInfo.x; + column1.uv.y = (column1.uv.y * sprInfo.uvInfo.w) + sprInfo.uvInfo.y; + outputVertices[outputVertexCount++] = column1; + + column2.uv.x = (column2.uv.x * sprInfo.uvInfo.z) + sprInfo.uvInfo.x; + column2.uv.y = (column2.uv.y * sprInfo.uvInfo.w) + sprInfo.uvInfo.y; + outputVertices[outputVertexCount++] = column2; + + column3.uv.x = (column3.uv.x * sprInfo.uvInfo.z) + sprInfo.uvInfo.x; + column3.uv.y = (column3.uv.y * sprInfo.uvInfo.w) + sprInfo.uvInfo.y; + outputVertices[outputVertexCount++] = column3; + } + } + outputCount = outputVertexCount; + } + + bool SkipSegment(JobSegmentInfo isi) + { + // Start the Generation. + bool skip = (isi.spInfo.z < 0); + if (!skip) + { + JobSpriteInfo ispr = GetSpriteInfo(isi.spInfo.z); + skip = (math.any(ispr.uvInfo) == false); + } + if (skip) + { + int cis = GetContourIndex(isi.spInfo.x); + int cie = GetEndContourIndexOfSegment(isi); + while (cis < cie) + { + JobContourPoint icp = GetContourPoint(cis); + m_ColliderPoints[m_ColliderDataCount++] = icp.position; + cis++; + } + } + return skip; + } + + void TessellateSegments() + { + + JobControlPoint iscp = GetControlPoint(0); + bool disableHead = (iscp.cpData.z == kModeContinous && isCarpet); + + // Determine Distance of Segment. + for (int i = 0; i < segmentCount; ++i) + { + // Calculate Segment Distances. + JobSegmentInfo isi = GetSegmentInfo(i); + if (isi.spriteInfo.z >= 0) + { + isi.spriteInfo.w = SegmentDistance(isi); + m_Segments[i] = isi; + } + } + + float2 zero = new float2(0, 0); + float2 firstLT = zero; + float2 firstLB = zero; + float2 ec = zero; + + for (int i = 0; i < segmentCount; ++i) + { + // Tessellate the Segment. + JobSegmentInfo isi = GetSegmentInfo(i); + bool skip = SkipSegment(isi); + if (skip) + continue; + + // Internal Data : x, y : pos z : height w : renderIndex + JobShapeVertex isv = m_VertexData[0]; + JobSpriteInfo ispr = GetSpriteInfo(isi.spInfo.z); + + int vertexCount = 0; + int sprIx = isi.spInfo.z; + float rpunits = 1.0f / ispr.metaInfo.x; + float2 whsize = new float2(ispr.metaInfo.z, ispr.metaInfo.w) * rpunits; + float4 border = ispr.border * rpunits; + + bool validHead = hasSpriteBorder && (border.x > 0); + bool validTail = hasSpriteBorder && (border.z > 0); + + // Generate the UV Increments. + float extendUV = 0; + float stPixelU = border.x; + float enPixelU = whsize.x - border.z; + float pxlWidth = enPixelU - stPixelU; + float segmentD = isi.spriteInfo.w; + float uIncStep = math.floor(segmentD / pxlWidth); + uIncStep = uIncStep == 0 ? 1f : uIncStep; + pxlWidth = isAdaptive ? (segmentD / uIncStep) : pxlWidth; + + // Check for any invalid Sizes. + if (pxlWidth < kEpsilon) + { + Cleanup(); + throw new ArgumentException("One of the sprites seem to have Invalid Borders. Please check Input Sprites."); + } + + // Start the Generation. + int stIx = GetContourIndex(isi.spInfo.x); + int enIx = GetEndContourIndexOfSegment(isi); + + // Single Segment Loop. + if (stIx == 0) + validHead = (validHead && !disableHead); + + // Do we have a Sprite Head Slice + if (validHead) + { + JobContourPoint icp = GetContourPoint(stIx); + float2 v1 = icp.position; + float2 v2 = GetContourPoint(stIx + 1).position; + isv.pos = v1 + (math.normalize(v1 - v2) * border.x); + isv.meta.x = icp.ptData.x; + isv.sprite.x = sprIx; + m_VertexData[vertexCount++] = isv; + } + + // Generate the Strip. + float sl = 0; + int it = stIx, nt = 0; + while (it < enIx) + { + nt = it + 1; + JobContourPoint icp = GetContourPoint(it); + JobContourPoint ncp = GetContourPoint(nt); + + float2 sp = icp.position; + float2 ip = sp; + float2 ep = ncp.position; + float2 df = ep - sp; + float al = math.length(df); + if (al > kEpsilon) + { + float sh = icp.ptData.x, eh = ncp.ptData.x, hl = 0; + sl = sl + al; + + // Connect previously left out space when sl < pxlWidth + var addtail = (0 == vertexCount); + float2 step = math.normalize(df); + isv.pos = icp.position; + isv.meta.x = icp.ptData.x; + isv.sprite.x = sprIx; + + if (vertexCount > 0) + { + var dt = math.length(m_VertexData[vertexCount-1].pos - isv.pos); + addtail = dt > kEpsilonRelaxed; + } + if (addtail) + m_VertexData[vertexCount++] = isv; + + while (sl > pxlWidth) + { + float _uv = pxlWidth - extendUV; + float2 uv = new float2(_uv); + ip = sp + (step * uv); + hl = hl + math.length(ip - sp); + + isv.pos = ip; + isv.meta.x = math.lerp(sh, eh, hl / al); + isv.sprite.x = sprIx; + if (math.any(m_VertexData[vertexCount-1].pos - isv.pos)) + m_VertexData[vertexCount++] = isv; + + sl = sl - pxlWidth; + sp = ip; + extendUV = 0; + } + extendUV = sl; + } + it++; + } + + // The Remains from the above Loop. Finish the Curve. + if (sl > kEpsilon) + { + JobContourPoint ecp = GetContourPoint(enIx); + isv.pos = ecp.position; + isv.meta.x = ecp.ptData.x; + isv.sprite.x = sprIx; + m_VertexData[vertexCount++] = isv; + } + + // Generate Tail + if (validTail) + { + JobContourPoint icp = GetContourPoint(enIx); + float2 v1 = icp.position; + float2 v2 = GetContourPoint(enIx - 1).position; + isv.pos = v1 + (math.normalize(v1 - v2) * border.z); + isv.meta.x = icp.ptData.x; + isv.sprite.x = sprIx; + m_VertexData[vertexCount++] = isv; + } + + // Generate the Renderer Data. + int outputCount = 0; + bool useClosure = (m_ControlPoints[0].cpData.z == kModeContinous) && (isi.spInfo.y == controlPointCount - 1); + TessellateSegment(ispr, isi, whsize, border, pxlWidth, useClosure, validHead, validTail, m_VertexData, vertexCount, ref m_OutputVertexData, ref outputCount); + if (outputCount == 0) + continue; + var z = ((float)(i + 1) * kEpsilonOrder) + ((float)isi.spInfo.z * kEpsilonOrder * 0.001f); + CopySegmentRenderData(ispr, ref m_PosArray, ref m_Uv0Array, ref m_TanArray, ref m_VertexDataCount, ref m_IndexArray, ref m_IndexDataCount, m_OutputVertexData, outputCount, z); + + if (hasCollider) + { + JobSpriteInfo isprc = (ispr.metaInfo.x == 0) ? GetSpriteInfo(isi.spInfo.w) : ispr; + outputCount = 0; + rpunits = 1.0f / isprc.metaInfo.x; + whsize = new float2(isprc.metaInfo.z, isprc.metaInfo.w) * rpunits; + border = isprc.border * rpunits; + stPixelU = border.x; + enPixelU = whsize.x - border.z; + pxlWidth = enPixelU - stPixelU; + TessellateSegment(isprc, isi, whsize, border, pxlWidth, useClosure, validHead, validTail, m_VertexData, vertexCount, ref m_OutputVertexData, ref outputCount); + ec = UpdateCollider(isi, isprc, m_OutputVertexData, outputCount, ref m_ColliderPoints, ref m_ColliderDataCount); + } + + // Geom Data + var geom = m_GeomArray[i + 1]; + geom.geomIndex = i + 1; + geom.indexCount = m_IndexDataCount - m_ActiveIndexCount; + geom.vertexCount = m_VertexDataCount - m_ActiveVertexCount; + geom.spriteIndex = isi.spInfo.z; + m_GeomArray[i + 1] = geom; + + // Exit + m_ActiveIndexCount = m_IndexDataCount; + m_ActiveVertexCount = m_VertexDataCount; + } + + // Copy Collider, Copy Render Data. + m_GeomArrayCount = segmentCount + 1; + m_IndexArrayCount = m_IndexDataCount; + m_VertexArrayCount = m_VertexDataCount; + m_ColliderPointCount = m_ColliderDataCount; + } + + #endregion + + #region Corners + + bool AttachCorner(int cp, int ct, JobSpriteInfo ispr, ref NativeArray newPoints, ref int activePoint) + { + // Correct Left. + float2 zero = new float2(0, 0); + int pp = (cp == 0) ? (controlPointCount - 1) : (cp - 1); + int np = (cp + 1) % controlPointCount; + + JobControlPoint lcp = GetControlPoint(pp); + JobControlPoint ccp = GetControlPoint(cp); + JobControlPoint rcp = GetControlPoint(np); + + float rpunits = 1.0f / ispr.metaInfo.x; + float2 whsize = new float2(ispr.texRect.z, ispr.texRect.w) * rpunits; + float4 border = ispr.border * rpunits; + + // Generate the UV Increments. + float stPixelV = border.y; + float enPixelV = whsize.y - border.y; + float pxlWidth = enPixelV - stPixelV; // pxlWidth is the square size of the corner sprite. + + // Generate the LeftTop, LeftBottom, RightTop & RightBottom for both sides. + float2 lt0 = zero; + float2 lb0 = zero; + float2 rt0 = zero; + float2 rb0 = zero; + GenerateColumnsBi(lcp.position, ccp.position, whsize, false, ref lb0, ref lt0, 0.5f); + GenerateColumnsBi(ccp.position, lcp.position, whsize, false, ref rt0, ref rb0, 0.5f); + + float2 lt1 = zero; + float2 lb1 = zero; + float2 rt1 = zero; + float2 rb1 = zero; + GenerateColumnsBi(ccp.position, rcp.position, whsize, false, ref lb1, ref lt1, 0.5f); + GenerateColumnsBi(rcp.position, ccp.position, whsize, false, ref rt1, ref rb1, 0.5f); + + rt0 = rt0 + (math.normalize(rt0 - lt0) * kExtendSegment); + rb0 = rb0 + (math.normalize(rb0 - lb0) * kExtendSegment); + lt1 = lt1 + (math.normalize(lt1 - rt1) * kExtendSegment); + lb1 = lb1 + (math.normalize(lb1 - rb1) * kExtendSegment); + + float2 tp = zero; + float2 bt = zero; + + // Generate Intersection of the Bottom Line Segments. + bool t = LineIntersection(kEpsilon, lt0, rt0, lt1, rt1, ref tp); + bool b = LineIntersection(kEpsilon, lb0, rb0, lb1, rb1, ref bt); + if (!b && !t) + return false; + + float2 pt = ccp.position; + float2 lt = lcp.position - pt; + float2 rt = rcp.position - pt; + + float ld = math.length(lt); + float rd = math.length(rt); + + if (ld < pxlWidth || rd < pxlWidth) + return false; + + float lrd = 0, rrd = 0; + float a = AngleBetweenVector(math.normalize(lcp.position - ccp.position), math.normalize(rcp.position - ccp.position)); + if (a > 0) + { + lrd = ld - math.distance(lb0, bt); + rrd = rd - math.distance(bt, rb1); + } + else + { + lrd = ld - math.distance(lt0, tp); + rrd = rd - math.distance(tp, rt1); + } + + float2 la = pt + (math.normalize(lt) * lrd); + float2 ra = pt + (math.normalize(rt) * rrd); + + ccp.exData.x = ct; + ccp.exData.z = 1; + ccp.position = la; + newPoints[activePoint++] = ccp; + + ccp.exData.x = ct; + ccp.exData.z = 0; + ccp.position = ra; + newPoints[activePoint++] = ccp; + + JobCornerInfo iscp = m_Corners[m_CornerCount]; + if (a > 0) + { + iscp.bottom = bt; + iscp.top = tp; + GenerateColumnsBi(la, lcp.position, whsize, false, ref lt0, ref lb0, ispr.metaInfo.y); + GenerateColumnsBi(ra, rcp.position, whsize, false, ref lt1, ref lb1, ispr.metaInfo.y); + iscp.left = lt0; + iscp.right = lb1; + } + else + { + iscp.bottom = tp; + iscp.top = bt; + GenerateColumnsBi(la, lcp.position, whsize, false, ref lt0, ref lb0, ispr.metaInfo.y); + GenerateColumnsBi(ra, rcp.position, whsize, false, ref lt1, ref lb1, ispr.metaInfo.y); + iscp.left = lb0; + iscp.right = lt1; + } + iscp.cornerData.x = ct; + iscp.cornerData.y = activePoint; + m_Corners[m_CornerCount] = iscp; + + m_CornerCount++; + return true; + } + + float2 CornerTextureCoordinate(int cornerType, int index) + { + int cornerArrayIndex = (cornerType - 1) * 4; + return m_CornerCoordinates[cornerArrayIndex + index]; + } + + int CalculateCorner(int index, float angle, float2 lt, float2 rt) + { + var ct = 0; + float slope = SlopeAngle(lt); + var slopePairs = new float2[] + { + new float2(-135.0f, -35.0f), + new float2(35.0f, 135.0f), + new float2(-35.0f, 35.0f), + new float2(-135.0f, 135.0f) + }; + var cornerPairs = new int2[] + { + new int2(kCornerTypeInnerTopLeft, kCornerTypeOuterBottomLeft), + new int2(kCornerTypeInnerBottomRight, kCornerTypeOuterTopRight), + new int2(kCornerTypeInnerTopRight, kCornerTypeOuterTopLeft), + new int2(kCornerTypeInnerBottomLeft, kCornerTypeOuterBottomRight) + }; + for (int i = 0; i < 3; ++i) + { + if ( slope > slopePairs[i].x && slope < slopePairs[i].y ) + { + ct = (angle > 0) ? cornerPairs[i].x : cornerPairs[i].y; + break; + } + } + if (ct == 0) + { + ct = (angle > 0) ? kCornerTypeInnerBottomLeft : kCornerTypeOuterBottomRight; + } + return ct; + + } + + bool InsertCorner(int index, ref NativeArray cpSpriteIndices, ref NativeArray newPoints, ref int activePoint) + { + int i = (index == 0) ? (controlPointCount - 1) : (index - 1); + int k = (index + 1) % controlPointCount; + + // Check if we have valid Sprites. + if (cpSpriteIndices[i].x >= spriteCount || cpSpriteIndices[index].x >= spriteCount) + return false; + + // Check if they have been resolved. + if (cpSpriteIndices[i].y == 0 || cpSpriteIndices[index].y == 0) + return false; + + JobControlPoint pcp = GetControlPoint(i); + JobControlPoint icp = GetControlPoint(index); + JobControlPoint ncp = GetControlPoint(k); + + // Check if the Mode of control Point and previous neighbor is same. Also check if Corner Toggle is enabled. + if (icp.cpData.y == 0 || pcp.cpData.z != kModeLinear || icp.cpData.z != kModeLinear || ncp.cpData.z != kModeLinear) + return false; + + // Check if the Height of the Control Points match + if (pcp.cpInfo.x != icp.cpInfo.x || icp.cpInfo.x != ncp.cpInfo.x) + return false; + + JobSpriteInfo psi = GetSpriteInfo(cpSpriteIndices[i].x); + JobSpriteInfo isi = GetSpriteInfo(cpSpriteIndices[index].x); + + // Check if the Sprites Pivot matches. Otherwise not allowed. // psi.uvInfo.w != isi.uvInfo.w (no more height checks) + if (psi.metaInfo.y != 0.5f || psi.metaInfo.y != isi.metaInfo.y) + return false; + + // Now perform expensive stuff like angles etc.. + float2 idir = math.normalize(ncp.position - icp.position); + float2 ndir = math.normalize(pcp.position - icp.position); + float angle = AngleBetweenVector(idir, ndir); + float angleAbs = math.abs(angle); + bool corner = AngleWithinRange(angleAbs, (90f - m_ShapeParams.splineData.z), (90f + m_ShapeParams.splineData.z)); + if (corner) + { + float2 rdir = math.normalize(icp.position - pcp.position); + int ct = CalculateCorner(index, angle, rdir, idir); + // Check if we have a valid Sprite. + if (ct > 0) + { + JobSpriteInfo cspr = GetCornerSpriteInfo(ct); + return AttachCorner(index, ct, cspr, ref newPoints, ref activePoint); + } + } + + return false; + } + + void TessellateCorners() + { + + for (int corner = 1; corner <= kCornerTypeInnerBottomRight; ++corner) + { + JobSpriteInfo isi = GetCornerSpriteInfo(corner); + if (isi.metaInfo.x == 0) + continue; + + int ic = 0; + int vc = 0; + Vector3 pos = m_PosArray[ic]; + Vector2 uv0 = m_Uv0Array[ic]; + bool ccw = (corner <= kCornerTypeOuterBottomRight); + int vertexArrayCount = m_VertexArrayCount; + + for (int i = 0; i < m_CornerCount; ++i) + { + JobCornerInfo isc = m_Corners[i]; + if (isc.cornerData.x == corner) + { + // Vertices. + pos.x = isc.top.x; + pos.y = isc.top.y; + uv0.x = (CornerTextureCoordinate(corner, 1).x * isi.uvInfo.z) + isi.uvInfo.x; + uv0.y = (CornerTextureCoordinate(corner, 1).y * isi.uvInfo.w) + isi.uvInfo.y; + m_PosArray[m_VertexArrayCount] = pos; + m_Uv0Array[m_VertexArrayCount++] = uv0; + + + pos.x = isc.right.x; + pos.y = isc.right.y; + uv0.x = (CornerTextureCoordinate(corner, 0).x * isi.uvInfo.z) + isi.uvInfo.x; + uv0.y = (CornerTextureCoordinate(corner, 0).y * isi.uvInfo.w) + isi.uvInfo.y; + m_PosArray[m_VertexArrayCount] = pos; + m_Uv0Array[m_VertexArrayCount++] = uv0; + + pos.x = isc.left.x; + pos.y = isc.left.y; + uv0.x = (CornerTextureCoordinate(corner, 3).x * isi.uvInfo.z) + isi.uvInfo.x; + uv0.y = (CornerTextureCoordinate(corner, 3).y * isi.uvInfo.w) + isi.uvInfo.y; + m_PosArray[m_VertexArrayCount] = pos; + m_Uv0Array[m_VertexArrayCount++] = uv0; + + pos.x = isc.bottom.x; + pos.y = isc.bottom.y; + uv0.x = (CornerTextureCoordinate(corner, 2).x * isi.uvInfo.z) + isi.uvInfo.x; + uv0.y = (CornerTextureCoordinate(corner, 2).y * isi.uvInfo.w) + isi.uvInfo.y; + m_PosArray[m_VertexArrayCount] = pos; + m_Uv0Array[m_VertexArrayCount++] = uv0; + + // Indices. + m_IndexArray[m_IndexArrayCount++] = (ushort)(vc + 0); + m_IndexArray[m_IndexArrayCount++] = (ushort)(vc + (ccw ? 1 : 3)); + m_IndexArray[m_IndexArrayCount++] = (ushort)(vc + (ccw ? 3 : 1)); + + m_IndexArray[m_IndexArrayCount++] = (ushort)(vc + 0); + m_IndexArray[m_IndexArrayCount++] = (ushort)(vc + (ccw ? 3 : 2)); + m_IndexArray[m_IndexArrayCount++] = (ushort)(vc + (ccw ? 2 : 3)); + + vc = vc + 4; + ic = ic + 6; + } + } + + if (m_TanArray.Length > 1) + { + for (int i = vertexArrayCount; i < m_VertexArrayCount; ++i) + m_TanArray[i] = new Vector4(1.0f, 0, 0, -1.0f); + } + + // Geom Data + if (ic > 0 && vc > 0) + { + var geom = m_GeomArray[m_GeomArrayCount]; + geom.geomIndex = m_GeomArrayCount; + geom.indexCount = ic; + geom.vertexCount = vc; + geom.spriteIndex = m_SpriteInfos.Length + (corner - 1); + m_GeomArray[m_GeomArrayCount++] = geom; + } + } + } + + #endregion + + #region Fast Optimizations + + bool AreCollinear(float2 a, float2 b, float2 c, float t) + { + float ax = (a.y - b.y) * (a.x - c.x); + float bx = (a.y - c.y) * (a.x - b.x); + float aa = math.abs(ax - bx); + return aa < t; + } + + // Check if points are co linear and reduce. + void OptimizePoints(float tolerance, ref NativeArray pointSet, ref int pointCount) + { + int kMinimumPointsRequired = 8; + if (pointCount < kMinimumPointsRequired) + return; + + int optimizedColliderPointCount = 0; + int endColliderPointCount = pointCount - 2; + bool val = true; + m_TempPoints[0] = pointSet[0]; + for (int i = 0; i < endColliderPointCount; ++i) + { + int j = i; + float2 v0 = pointSet[i]; + float2 v1 = pointSet[i + 1]; + float2 v2 = pointSet[i + 2]; + val = true; + while (val && j < endColliderPointCount) + { + val = AreCollinear(v0, v1, v2, tolerance); + if (false == val) + { + m_TempPoints[++optimizedColliderPointCount] = v1; + i = j; + break; + } + j++; + v1 = pointSet[j + 1]; + v2 = pointSet[j + 2]; + } + } + m_TempPoints[++optimizedColliderPointCount] = pointSet[endColliderPointCount]; + m_TempPoints[++optimizedColliderPointCount] = pointSet[endColliderPointCount + 1]; + if (isCarpet) + m_TempPoints[++optimizedColliderPointCount] = pointSet[0]; + pointCount = optimizedColliderPointCount + 1; + for (int i = 0; i < pointCount; ++i) + pointSet[i] = m_TempPoints[i]; + } + + #endregion + + #region Collider Specific. + void AttachCornerToCollider(JobSegmentInfo isi, float pivot, ref NativeArray colliderPoints, ref int colliderPointCount) + { + float2 zero = new float2(0, 0); + int cornerIndex = isi.spInfo.x + 1; + for (int i = 0; i < m_CornerCount; ++i) + { + JobCornerInfo isc = m_Corners[i]; + if (cornerIndex == isc.cornerData.y) + { + float2 cp = zero; + float2 v0 = zero; + if (isc.cornerData.x > kCornerTypeOuterBottomRight) + v0 = isc.top; + else + v0 = isc.bottom; + + float2 v2 = zero; + if (isc.cornerData.x > kCornerTypeOuterBottomRight) + v2 = isc.bottom; + else + v2 = isc.top; + cp = (v2 - v0) * pivot; + cp = (v2 + cp + v0 + cp) * 0.5f; + colliderPoints[colliderPointCount++] = cp; + break; + } + } + } + + float2 UpdateCollider(JobSegmentInfo isi, JobSpriteInfo ispr, NativeArray vertices, int count, ref NativeArray colliderPoints, ref int colliderPointCount) + { + float2 zero = new float2(0, 0); + float pivot = 0.5f - ispr.metaInfo.y; + pivot = pivot + colliderPivot; + AttachCornerToCollider(isi, pivot, ref colliderPoints, ref colliderPointCount); + + float2 cp = zero; + float2 v0 = zero; + float2 v2 = zero; + + for (int k = 0; k < count; k = k + 4) + { + v0 = vertices[k].pos; + v2 = vertices[k + 2].pos; + cp = (v2 - v0) * pivot; + colliderPoints[colliderPointCount++] = (v2 + cp + v0 + cp) * 0.5f; + } + + float2 v1 = vertices[count - 1].pos; + float2 v3 = vertices[count - 3].pos; + cp = (v1 - v3) * pivot; + colliderPoints[colliderPointCount++] = (v1 + cp + v3 + cp) * 0.5f; + return cp; + } + + void TrimOverlaps() + { + int kMinimumPointTolerance = 4; + if (m_ColliderPointCount < kMinimumPointTolerance) + return; + int trimmedPointCount = 0; + int i = 0; + int kColliderPointCountClamped = m_ColliderPointCount / 2; + int kSplineDetailClamped = math.clamp(splineDetail * 3, 0, 8); + int kNeighbors = kSplineDetailClamped > kColliderPointCountClamped ? kColliderPointCountClamped : kSplineDetailClamped; + // Debug.Log(kSplineDetailClamped + " : " + kNeighbors + " = " + m_ColliderPointCount); + + if (!isCarpet) + m_TempPoints[trimmedPointCount++] = m_ColliderPoints[0]; + + while (i < m_ColliderPointCount) + { + int h = (i > 0) ? (i - 1) : (m_ColliderPointCount - 1); + bool noIntersection = true; + float2 v0 = m_ColliderPoints[h]; + float2 v1 = m_ColliderPoints[i]; + + for (int n = kNeighbors; n > 1; --n) + { + int j = (i + n - 1) % m_ColliderPointCount; + int k = (i + n) % m_ColliderPointCount; + if (k == 0 || i == 0) + continue; + + float2 v2 = m_ColliderPoints[j]; + float2 v3 = m_ColliderPoints[k]; + float2 vx = v0 - v3; + + if (math.abs(math.length(vx)) < kEpsilon) + break; + + float2 vi = v0; + + bool overLaps = LineIntersection(kEpsilonRelaxed, v0, v1, v2, v3, ref vi); + if (overLaps && IsPointOnLines(kEpsilonRelaxed, v0, v1, v2, v3, vi)) + { + // Debug.Log(v0 + " = " + v1 + " : " + v2 + " = " + v3 + " & " + h + " = " + i + " : " + j + " = " + k + " => " + vi + " : " + n); + noIntersection = false; + m_TempPoints[trimmedPointCount++] = vi; + i = i + n; + break; + } + } + + if (noIntersection) + { + m_TempPoints[trimmedPointCount++] = v1; + i = i + 1; + } + } + for (; i < m_ColliderPointCount; ++i) + m_TempPoints[trimmedPointCount++] = m_ColliderPoints[i]; + + for (int j = 0; j < trimmedPointCount; ++j) + m_ColliderPoints[j] = m_TempPoints[j]; + + // Check intersection of first line Segment and last. + float2 vin = m_ColliderPoints[0]; + LineIntersection(kEpsilonRelaxed, m_ColliderPoints[0], m_ColliderPoints[1], m_ColliderPoints[trimmedPointCount - 1], m_ColliderPoints[trimmedPointCount - 2], ref vin); + m_ColliderPoints[0] = vin; + + m_ColliderPointCount = trimmedPointCount; + } + + void OptimizeCollider() + { + if (hasCollider) + { + if (kColliderQuality > 0) + { + if (kOptimizeCollider > 0) + { + OptimizePoints(kColliderQuality, ref m_ColliderPoints, ref m_ColliderPointCount); + TrimOverlaps(); + } + m_ColliderPoints[m_ColliderPointCount++] = new float2(0, 0); + m_ColliderPoints[m_ColliderPointCount++] = new float2(0, 0); + } + if (m_ColliderPointCount <= 2) + { + for (int i = 0; i < m_TessPointCount; ++i) + m_ColliderPoints[i] = m_TessPoints[i]; + m_ColliderPoints[m_TessPointCount] = new float2(0, 0); + m_ColliderPoints[m_TessPointCount + 1] = new float2(0, 0); + m_ColliderPointCount = m_TessPointCount + 2; + } + } + } + + #endregion + + #region Entry, Exit Points. + + public void Prepare(UnityEngine.U2D.SpriteShapeController controller, SpriteShapeParameters shapeParams, int maxArrayCount, NativeArray shapePoints, NativeArray metaData, AngleRangeInfo[] angleRanges, Sprite[] segmentSprites, Sprite[] cornerSprites) + { + // Prepare Inputs. + PrepareInput(shapeParams, maxArrayCount, shapePoints, controller.optimizeGeometry, controller.autoUpdateCollider, controller.optimizeCollider, controller.colliderOffset, controller.colliderDetail); + PrepareSprites(segmentSprites, cornerSprites); + PrepareAngleRanges(angleRanges); + PrepareControlPoints(shapePoints, metaData); + + // Generate Intermediates. + GenerateContour(); + TessellateContour(); + } + + public void Execute() + { + // BURST + GenerateSegments(); + TessellateSegments(); + TessellateCorners(); + CalculateBoundingBox(); + CalculateTexCoords(); + OptimizeCollider(); + } + + // Only needed if Burst is disabled. + // [BurstDiscard] + public void Cleanup() + { + SafeDispose(m_Corners); + SafeDispose(m_CornerSpriteInfos); + SafeDispose(m_SpriteInfos); + SafeDispose(m_AngleRanges); + SafeDispose(m_Segments); + SafeDispose(m_ControlPoints); + SafeDispose(m_ContourPoints); + SafeDispose(m_TempPoints); + SafeDispose(m_GeneratedControlPoints); + SafeDispose(m_SpriteIndices); + + SafeDispose(m_TessPoints); + SafeDispose(m_VertexData); + SafeDispose(m_OutputVertexData); + SafeDispose(m_CornerCoordinates); + } + + #endregion + + } +}; diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGenerator.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGenerator.cs.meta new file mode 100644 index 0000000..4163c02 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c9697ca08d26c2848a5c5de0be739d1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGeometryCache.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGeometryCache.cs new file mode 100644 index 0000000..3aee3b0 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGeometryCache.cs @@ -0,0 +1,155 @@ +using System; +using Unity.Jobs; +using UnityEngine; +using UnityEngine.U2D; +using Unity.Collections; + +[Serializable] +internal struct SpriteShapeGeometryInfo +{ + [SerializeField] + internal int geomIndex; + [SerializeField] + internal int indexCount; + [SerializeField] + internal int vertexCount; + [SerializeField] + internal int spriteIndex; +} + +// Simple Cache for SpriteShape Geometry Data. +[AddComponentMenu("")] +internal class SpriteShapeGeometryCache : MonoBehaviour +{ + + // Serialized Data. + [SerializeField] + [HideInInspector] + int m_MaxArrayCount; + [SerializeField] + [HideInInspector] + Vector3[] m_PosArray = null; + [SerializeField] + [HideInInspector] + Vector2[] m_Uv0Array = null; + [SerializeField] + [HideInInspector] + Vector4[] m_TanArray = null; + [SerializeField] + [HideInInspector] + ushort[] m_IndexArray = null; + [SerializeField] + [HideInInspector] + SpriteShapeGeometryInfo[] m_GeomArray = null; + + // Update set. + bool m_RequiresUpdate = false; + bool m_RequiresUpload = false; + NativeSlice m_PosArrayCache; + NativeSlice m_Uv0ArrayCache; + NativeSlice m_TanArrayCache; + NativeArray m_IndexArrayCache; + NativeArray m_GeomArrayCache; + + internal int maxArrayCount + { + get { return m_MaxArrayCount; } + } + + void OnEnable() + { + m_RequiresUpload = true; + m_RequiresUpdate = false; + } + + // Set Geometry Cache. + internal void SetGeometryCache(int _maxArrayCount, NativeSlice _posArray, NativeSlice _uv0Array, NativeSlice _tanArray, NativeArray _indexArray, NativeArray _geomArray) + { + m_RequiresUpdate = true; + m_PosArrayCache = _posArray; + m_Uv0ArrayCache = _uv0Array; + m_TanArrayCache = _tanArray; + m_GeomArrayCache = _geomArray; + m_IndexArrayCache = _indexArray; + m_MaxArrayCount = _maxArrayCount; + } + + // Update GeometryCache. + internal void UpdateGeometryCache() + { + bool updateCache = m_RequiresUpdate && m_GeomArrayCache.IsCreated; + updateCache = updateCache && m_IndexArrayCache.IsCreated; + if (updateCache) + { + int geomCount = 0; + int indexCount = 0; + int vertexCount = 0; + + for (int i = 0; (i < m_GeomArrayCache.Length); ++i) + { + var geom = m_GeomArrayCache[i]; + indexCount += geom.indexCount; + vertexCount += geom.vertexCount; + if (geom.vertexCount > 0) + geomCount = i + 1; + } + + m_GeomArray = new SpriteShapeGeometryInfo[geomCount]; + NativeArray geomInfoArray = m_GeomArrayCache.Reinterpret(); + SpriteShapeCopyUtility.Copy(m_GeomArray, geomInfoArray, geomCount); + + m_PosArray = new Vector3[vertexCount]; + m_Uv0Array = new Vector2[vertexCount]; + m_TanArray = new Vector4[m_TanArrayCache.Length]; + m_IndexArray = new ushort[indexCount]; + + SpriteShapeCopyUtility.Copy(m_PosArray, m_PosArrayCache, vertexCount); + SpriteShapeCopyUtility.Copy(m_Uv0Array, m_Uv0ArrayCache, vertexCount); + SpriteShapeCopyUtility.Copy(m_TanArray, m_TanArrayCache, m_TanArrayCache.Length); + SpriteShapeCopyUtility.Copy(m_IndexArray, m_IndexArrayCache, indexCount); + + m_MaxArrayCount = (vertexCount > indexCount) ? vertexCount : indexCount; + m_RequiresUpdate = false; + } + } + + internal JobHandle Upload(SpriteShapeRenderer sr, SpriteShapeController sc) + { + + JobHandle jobHandle = (default); + if (m_RequiresUpload) + { + + // Update Geometries. + NativeArray geomArray = sr.GetSegments(m_GeomArray.Length); + NativeArray geomInfoArray = geomArray.Reinterpret(); + geomInfoArray.CopyFrom(m_GeomArray); + + // Update Mesh Data. + NativeSlice posArray; + NativeSlice uv0Array; + NativeArray indexArray; + + if (sc.enableTangents) + { + NativeSlice tanArray; + sr.GetChannels(m_MaxArrayCount, out indexArray, out posArray, out uv0Array, out tanArray); + SpriteShapeCopyUtility.Copy(tanArray, m_TanArray, m_TanArray.Length); + } + else + { + sr.GetChannels(m_MaxArrayCount, out indexArray, out posArray, out uv0Array); + } + + SpriteShapeCopyUtility.Copy(posArray, m_PosArray, m_PosArray.Length); + SpriteShapeCopyUtility.Copy(uv0Array, m_Uv0Array, m_Uv0Array.Length); + SpriteShapeCopyUtility.Copy(indexArray, m_IndexArray, m_IndexArray.Length); + sr.Prepare(jobHandle, sc.spriteShapeParameters, sc.spriteArray); + m_RequiresUpload = false; + + } + return jobHandle; + + } + +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGeometryCache.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGeometryCache.cs.meta new file mode 100644 index 0000000..3616ad4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/SpriteShapeGeometryCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9aa06092e0908a84585e814e7c214a51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Unity.2D.SpriteShape.Runtime.asmdef b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Unity.2D.SpriteShape.Runtime.asmdef new file mode 100644 index 0000000..d462632 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Unity.2D.SpriteShape.Runtime.asmdef @@ -0,0 +1,19 @@ +{ + "name": "Unity.2D.SpriteShape.Runtime", + "references": [ + "Unity.2D.Common.Runtime", + "Unity.Mathematics", + "Unity.Burst" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": true, + "versionDefines": [ + { + "name": "com.unity.burst", + "expression": "0.0.1", + "define": "ENABLE_SPRITESHAPE_BURST" + } + ], + "noEngineReferences": false +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Unity.2D.SpriteShape.Runtime.asmdef.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Unity.2D.SpriteShape.Runtime.asmdef.meta new file mode 100644 index 0000000..f700483 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Runtime/Unity.2D.SpriteShape.Runtime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: caccfbdb442cdc64fa722b4c5585521f +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/.sample.json b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/.sample.json new file mode 100644 index 0000000..e281b95 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/.sample.json @@ -0,0 +1,5 @@ +{ + "displayName": "Sprite Shape Extras", + "interactiveImport": "false", + "description": "This sample has utility scripts that ihas various use-cases of Spriteshape", +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Prefabs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Prefabs.meta new file mode 100644 index 0000000..74e9ba9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85a9244be03e34a18b87fa6cf18a2cd8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Prefabs/TreeSprite.prefab b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Prefabs/TreeSprite.prefab new file mode 100644 index 0000000..3611592 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Prefabs/TreeSprite.prefab @@ -0,0 +1,88 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 0} + m_RootGameObject: {fileID: 1791732276458280} + m_IsPrefabAsset: 1 +--- !u!1 &1791732276458280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 6 + m_Component: + - component: {fileID: 4637762761665278} + - component: {fileID: 212745031360384622} + m_Layer: 0 + m_Name: TreeSprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4637762761665278 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1791732276458280} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &212745031360384622 +SpriteRenderer: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1791732276458280} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 029f005d8b06f834fa06df50fc4e7dba, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.06, y: 2.41} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Prefabs/TreeSprite.prefab.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Prefabs/TreeSprite.prefab.meta new file mode 100644 index 0000000..222aa18 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Prefabs/TreeSprite.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91b2663493e1ab642b1b60fc7955f947 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes.meta new file mode 100644 index 0000000..3648eb6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 482ac420eb7aa3b4186fee474c058820 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/Colliders.unity b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/Colliders.unity new file mode 100644 index 0000000..8e2a9e2 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/Colliders.unity @@ -0,0 +1,15048 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_ExportTrainingData: 0 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &53245460 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 53245465} + - component: {fileID: 53245464} + - component: {fileID: 53245463} + - component: {fileID: 53245461} + - component: {fileID: 53245462} + m_Layer: 0 + m_Name: Tree01Bush + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!60 &53245461 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53245460} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 4.5960927, y: -4.450508} + - {x: 4.401864, y: -4.3257003} + - {x: 4.5212154, y: -4.1881166} + - {x: 4.6753187, y: -3.9678326} + - {x: 4.405222, y: -3.7872267} + - {x: 4.370056, y: -3.51654} + - {x: 4.2460327, y: -3.3955297} + - {x: 4.173502, y: -3.3677387} + - {x: 4.1554112, y: -3.5410821} + - {x: 4.0753603, y: -3.8192444} + - {x: 3.8946753, y: -3.8394208} + - {x: 3.718846, y: -3.8145308} + - {x: 3.575674, y: -4.0162377} + - {x: 3.3099508, y: -4.16985} + - {x: 3.412251, y: -3.8473315} + - {x: 3.4121673, y: -3.6313195} + - {x: 3.180334, y: -3.5487986} + - {x: 3.0803742, y: -3.4257636} + - {x: 2.9238234, y: -3.3508363} + - {x: 2.6059914, y: -3.4799633} + - {x: 2.6296916, y: -3.2146962} + - {x: 2.704814, y: -2.920652} + - {x: 2.4267352, y: -3.0078354} + - {x: 2.008948, y: -2.8439493} + - {x: 1.8137305, y: -3.0454688} + - {x: 1.6166661, y: -2.6917048} + - {x: 1.3459278, y: -2.7196493} + - {x: 1.1200774, y: -2.8577302} + - {x: 0.9129431, y: -3.2032948} + - {x: 0.5602953, y: -2.892481} + - {x: 0.17219684, y: -2.969111} + - {x: -0.2539997, y: -3.135602} + - {x: -0.63553107, y: -3.061071} + - {x: -1.0127571, y: -2.957893} + - {x: -1.3104165, y: -3.277318} + - {x: -1.8549925, y: -2.9304664} + - {x: -2.3564415, y: -2.985093} + - {x: -2.8319044, y: -3.1292267} + - {x: -3.0021071, y: -3.2489247} + - {x: -3.0839791, y: -3.4849136} + - {x: -3.278289, y: -3.8055553} + - {x: -3.5601258, y: -3.4910324} + - {x: -3.7767522, y: -3.7047393} + - {x: -3.9952595, y: -4.0934596} + - {x: -4.2371435, y: -4.1748447} + - {x: -4.4384665, y: -4.1984577} + - {x: -4.4443274, y: -4.769828} + - {x: -4.86179, y: -4.935101} + - {x: -4.935527, y: -5.0813513} + - {x: -5.024274, y: -5.4570923} + - {x: -5.240713, y: -4.8939514} + - {x: -5.115657, y: -4.4137115} + - {x: -4.8562536, y: -3.8500762} + - {x: -4.9672227, y: -3.6712248} + - {x: -5.140299, y: -3.5294347} + - {x: -5.533455, y: -3.7817793} + - {x: -5.6599064, y: -3.4260674} + - {x: -5.793478, y: -3.4478827} + - {x: -6.103485, y: -3.9516172} + - {x: -6.2236557, y: -3.2902782} + - {x: -5.798864, y: -2.8099592} + - {x: -5.3386383, y: -2.498311} + - {x: -5.4109097, y: -2.4714992} + - {x: -5.6221333, y: -2.5100808} + - {x: -5.910779, y: -2.4954557} + - {x: -5.979108, y: -2.288491} + - {x: -6.054783, y: -2.1229374} + - {x: -6.409728, y: -2.5751123} + - {x: -6.6695256, y: -2.011589} + - {x: -6.4066586, y: -1.4256444} + - {x: -5.7559204, y: -1.1190958} + - {x: -5.659766, y: -0.9032006} + - {x: -5.685962, y: -0.67662984} + - {x: -6.1818695, y: -0.73166656} + - {x: -6.2700677, y: -0.78987265} + - {x: -6.445245, y: -1.043403} + - {x: -6.712138, y: -1.4716253} + - {x: -6.7327995, y: -1.1105715} + - {x: -6.600764, y: -0.47903705} + - {x: -6.411022, y: 0.07046509} + - {x: -5.8852887, y: 0.21442722} + - {x: -5.5698695, y: 0.19412428} + - {x: -5.464736, y: 0.1550293} + - {x: -5.3192067, y: 0.28337485} + - {x: -5.205149, y: 0.5243256} + - {x: -5.6063585, y: 0.6617527} + - {x: -5.5068817, y: 0.9752526} + - {x: -5.4115167, y: 1.3153566} + - {x: -5.8227644, y: 1.361414} + - {x: -5.4171495, y: 1.7782604} + - {x: -4.8657217, y: 1.8313699} + - {x: -4.588561, y: 1.7893763} + - {x: -4.5522523, y: 1.8536273} + - {x: -4.5334206, y: 2.017733} + - {x: -4.667205, y: 2.2387218} + - {x: -4.502221, y: 2.460394} + - {x: -4.292954, y: 2.6855984} + - {x: -4.580907, y: 2.8373194} + - {x: -4.0656614, y: 3.0545754} + - {x: -3.6416664, y: 2.9989085} + - {x: -3.4655323, y: 2.9239826} + - {x: -3.359173, y: 2.9503338} + - {x: -3.3353915, y: 3.1130767} + - {x: -3.837128, y: 3.5377407} + - {x: -3.196869, y: 3.7146618} + - {x: -2.604802, y: 3.566195} + - {x: -2.3444424, y: 3.4395485} + - {x: -2.1640463, y: 3.5340664} + - {x: -1.9549431, y: 3.8693755} + - {x: -2.2152555, y: 4.5231056} + - {x: -1.5487685, y: 4.413057} + - {x: -0.944021, y: 3.8185174} + - {x: -0.68036103, y: 3.4601822} + - {x: -0.35997054, y: 3.7712705} + - {x: 0.33567452, y: 4.335599} + - {x: 1.0082848, y: 4.59976} + - {x: 0.52776575, y: 3.8100228} + - {x: 0.67292666, y: 3.4952803} + - {x: 0.85266876, y: 3.4385777} + - {x: 1.014653, y: 3.6554363} + - {x: 1.4272296, y: 4.039967} + - {x: 1.9803336, y: 4.193098} + - {x: 1.82889, y: 3.6472077} + - {x: 2.2490773, y: 3.3730989} + - {x: 2.5440044, y: 3.2979183} + - {x: 2.7591581, y: 3.4821477} + - {x: 3.2207956, y: 3.8227782} + - {x: 3.6531794, y: 4.0017204} + - {x: 3.4617286, y: 3.5193548} + - {x: 3.625062, y: 3.226173} + - {x: 3.7744694, y: 3.112564} + - {x: 4.058009, y: 3.2391448} + - {x: 4.413997, y: 3.372613} + - {x: 4.842697, y: 3.0536528} + - {x: 4.2251015, y: 2.7467482} + - {x: 4.1100607, y: 2.380889} + - {x: 4.149143, y: 2.2038698} + - {x: 4.4805503, y: 2.3922255} + - {x: 5.1676493, y: 2.574047} + - {x: 5.749752, y: 2.1744652} + - {x: 5.3047147, y: 1.9243331} + - {x: 5.2083073, y: 1.8412068} + - {x: 5.2604628, y: 1.6912718} + - {x: 5.687503, y: 1.4038008} + - {x: 5.4901295, y: 0.91677374} + - {x: 5.2868843, y: 0.65911484} + - {x: 5.4379525, y: 0.7013824} + - {x: 5.774804, y: 0.7452766} + - {x: 6.122902, y: 0.66643333} + - {x: 5.765494, y: 0.43928215} + - {x: 5.7727356, y: 0.33861372} + - {x: 5.842326, y: 0.31585217} + - {x: 6.041519, y: 0.40740094} + - {x: 6.4236236, y: 0.4707878} + - {x: 6.6654167, y: 0.18912315} + - {x: 6.3777547, y: 0.20343184} + - {x: 6.332817, y: 0.07887161} + - {x: 6.368513, y: -0.011343002} + - {x: 6.536011, y: -0.1888309} + - {x: 6.635894, y: -0.45077685} + - {x: 6.561116, y: -0.73729897} + - {x: 6.385946, y: -0.419961} + - {x: 6.243207, y: -0.47127402} + - {x: 6.184222, y: -0.5616255} + - {x: 6.0935683, y: -0.52504975} + - {x: 5.9017916, y: -0.51159674} + - {x: 5.729164, y: -0.6656771} + - {x: 6.0993743, y: -0.70022976} + - {x: 6.2731905, y: -0.74067247} + - {x: 6.2144938, y: -0.859148} + - {x: 5.8843923, y: -1.0789753} + - {x: 6.1457024, y: -1.1232643} + - {x: 6.3980665, y: -1.3870852} + - {x: 6.68213, y: -1.5131938} + - {x: 6.714102, y: -1.7794142} + - {x: 6.461239, y: -1.7009978} + - {x: 6.5459642, y: -1.9168932} + - {x: 6.600374, y: -2.1254349} + - {x: 6.478366, y: -2.0964909} + - {x: 6.3189616, y: -2.018591} + - {x: 6.181938, y: -2.2180634} + - {x: 6.0361004, y: -1.719028} + - {x: 5.8189154, y: -1.6906357} + - {x: 5.8098855, y: -1.7443272} + - {x: 5.9714613, y: -2.0932398} + - {x: 5.896029, y: -2.0307717} + - {x: 5.7841053, y: -1.9828804} + - {x: 5.8072453, y: -2.1588326} + - {x: 6.30387, y: -2.495202} + - {x: 6.37483, y: -2.927081} + - {x: 6.17338, y: -3.2872} + - {x: 6.1027503, y: -2.899042} + - {x: 5.9765625, y: -2.9460025} + - {x: 5.8428383, y: -3.3735342} + - {x: 5.5035925, y: -3.032574} + - {x: 5.3193245, y: -3.1490579} + - {x: 5.2637434, y: -3.2851763} + - {x: 5.358925, y: -3.3118024} + - {x: 5.565504, y: -3.411436} + - {x: 5.765026, y: -3.6137066} + - {x: 5.833143, y: -3.8416224} + - {x: 5.7956867, y: -3.988884} + - {x: 5.759465, y: -4.0411563} + - {x: 5.676749, y: -3.9614615} + - {x: 5.4864044, y: -3.8565104} + - {x: 5.2751274, y: -3.9274988} + - {x: 5.4698186, y: -4.1579704} + - {x: 5.4815645, y: -4.2211666} + - {x: 5.303442, y: -4.3886023} + - {x: 4.957515, y: -4.596761} +--- !u!114 &53245462 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53245460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0ecd6fe4dd55d640bd7ef3235e0e425, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateCollider: 0 +--- !u!1971053207 &53245463 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53245460} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -46 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: a94adaf94669646788de8f639270804a, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: -0.009348869, y: -0.4286661, z: 0} + m_Extent: {x: 6.7234507, y: 5.028426, z: 0} +--- !u!114 &53245464 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53245460} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8e3fa9c7ff3ad4112a30689e933384ed, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 4 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &53245465 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53245460} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1198078835} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &86098844 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 86098848} + - component: {fileID: 86098847} + - component: {fileID: 86098846} + - component: {fileID: 86098845} + - component: {fileID: 86098850} + - component: {fileID: 86098849} + m_Layer: 0 + m_Name: Branch (Package) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!68 &86098845 +EdgeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86098844} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_EdgeRadius: 0 + m_Points: + - {x: -16.950869, y: -13.863884} + - {x: -16.950869, y: -13.863884} + - {x: -13.860442, y: -17.198812} + - {x: -10.920086, y: -19.720581} + - {x: -8.828604, y: -21.12007} + - {x: -6.4465895, y: -22.315441} + - {x: -5.1754174, y: -22.766796} + - {x: -3.8661559, y: -23.083132} + - {x: -2.5304852, y: -23.236137} + - {x: -1.1816092, y: -23.197496} + - {x: 1.0313295, y: -22.706749} + - {x: 2.8582423, y: -21.795244} + - {x: 4.3354144, y: -20.540682} + - {x: 5.5002785, y: -19.02198} + - {x: 6.3985643, y: -17.30119} + - {x: 7.0510254, y: -15.5027895} + - {x: 7.6874423, y: -12.74806} + - {x: 7.966475, y: -11.818205} + - {x: 8.437967, y: -11.0326805} + - {x: 9.073447, y: -10.372249} + - {x: 10.715577, y: -9.383379} + - {x: 12.640903, y: -8.769826} + - {x: 15.49134, y: -8.367494} + - {x: 17.978632, y: -8.339273} + - {x: 20.585047, y: -8.476068} +--- !u!1971053207 &86098846 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86098844} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -11 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300000, guid: e205c552afc6743cb9c52e5ff6504efc, type: 3} + m_LocalAABB: + m_Center: {x: 1.3386917, y: -12.22172, z: -0.005} + m_Extent: {x: 19.318111, y: 12.22172, z: 0.005} +--- !u!114 &86098847 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86098844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -14.53302, y: -16.355022, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1.17 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.1900063, y: -23.108816, z: 0} + leftTangent: {x: -6.6956515, y: -0.7063942, z: 0} + rightTangent: {x: 5.99125, y: 0.6320801, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 7.6009054, y: -12.726942, z: 0} + leftTangent: {x: -0.7709484, y: -4.507843, z: 0} + rightTangent: {x: 0.8714237, y: 5.095332, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 17.983303, y: -8.250319, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 67e0d7ab8806749199e5b764729aa46a, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &86098848 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86098844} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -36.6, y: 24.22, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!66 &86098849 +CompositeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86098844} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_GeometryType: 0 + m_GenerationType: 0 + m_EdgeRadius: 0 + m_ColliderPaths: [] + m_CompositePaths: + m_Paths: [] + m_VertexDistance: 0.0005 +--- !u!50 &86098850 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86098844} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!1 &231626810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 231626811} + - component: {fileID: 231626813} + - component: {fileID: 231626812} + m_Layer: 5 + m_Name: LegacyCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &231626811 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 231626810} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1463708952} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 300, y: 240} + m_SizeDelta: {x: 240, y: 64} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &231626812 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 231626810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.47419012, g: 0.7516846, b: 0.9056604, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Legacy Collider (Collider from version 1.*). Menu -> SpriteShape -> Generate + Legacy Collider +--- !u!222 &231626813 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 231626810} + m_CullTransparentMesh: 0 +--- !u!1 &245160124 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 245160130} + - component: {fileID: 245160129} + - component: {fileID: 245160128} + - component: {fileID: 245160127} + - component: {fileID: 245160126} + - component: {fileID: 245160125} + - component: {fileID: 245160131} + m_Layer: 0 + m_Name: Block (Legacy Collider) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!66 &245160125 +CompositeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245160124} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_GeometryType: 0 + m_GenerationType: 0 + m_EdgeRadius: 0 + m_ColliderPaths: + - m_Collider: {fileID: 245160127} + m_ColliderPaths: + - - X: -16359752 + Y: -79301392 + - X: -31725824 + Y: -78709656 + - X: -52884408 + Y: -72404584 + - X: -77168912 + Y: -62323156 + - X: -113620272 + Y: -44355860 + - X: -153593216 + Y: -22127492 + - X: -104571936 + Y: 93817784 + - X: -78601240 + Y: 159200928 + - X: -67227568 + Y: 179181488 + - X: -50174772 + Y: 197765136 + - X: -36303352 + Y: 208053744 + - X: -18054166 + Y: 216914800 + - X: 4767723 + Y: 222461808 + - X: 20765140 + Y: 223410448 + - X: 40034296 + Y: 221014448 + - X: 55234016 + Y: 215840512 + - X: 67891360 + Y: 208069584 + - X: 78240064 + Y: 198070560 + - X: 86514328 + Y: 186212352 + - X: 92948400 + Y: 172863712 + - X: 97776720 + Y: 158393568 + - X: 101233568 + Y: 143170448 + - X: 103553304 + Y: 127563056 + - X: 105718472 + Y: 96670072 + - X: 106710808 + Y: 46494228 + - X: 108076976 + Y: 32401600 + - X: 105205320 + Y: 21193138 + - X: 94193056 + Y: 6554777 + - X: 65909032 + Y: -17531154 + - X: 58385812 + Y: -28413314 + - X: 50252040 + Y: -46287488 + - X: 39584240 + Y: -56677504 + - X: 21903510 + Y: -66694780 + - X: -4977078 + Y: -76240992 + - X: -4977078 + Y: -76240992 + - X: -16359752 + Y: -79301392 + m_CompositePaths: + m_Paths: + - - {x: -0.4977078, y: -7.6240993} + - {x: 2.190351, y: -6.669478} + - {x: 3.958424, y: -5.6677504} + - {x: 5.025204, y: -4.628749} + - {x: 5.838581, y: -2.8413315} + - {x: 6.5909033, y: -1.7531154} + - {x: 9.419306, y: 0.6554777} + - {x: 10.520532, y: 2.1193137} + - {x: 10.807697, y: 3.24016} + - {x: 10.671081, y: 4.6494226} + - {x: 10.571847, y: 9.667007} + - {x: 10.35533, y: 12.756306} + - {x: 10.123357, y: 14.317045} + - {x: 9.777672, y: 15.839357} + - {x: 9.29484, y: 17.286371} + - {x: 8.651433, y: 18.621235} + - {x: 7.8240066, y: 19.807056} + - {x: 6.789136, y: 20.80696} + - {x: 5.5234017, y: 21.584051} + - {x: 4.0034294, y: 22.101444} + - {x: 2.076514, y: 22.341045} + - {x: 0.4767723, y: 22.246181} + - {x: -1.8054166, y: 21.69148} + - {x: -3.6303353, y: 20.805374} + - {x: -5.017477, y: 19.776514} + - {x: -6.722757, y: 17.91815} + - {x: -7.860124, y: 15.920093} + - {x: -10.457193, y: 9.381779} + - {x: -15.359322, y: -2.2127492} + - {x: -11.362027, y: -4.435586} + - {x: -7.7168913, y: -6.2323155} + - {x: -5.2884407, y: -7.2404585} + - {x: -3.1725824, y: -7.8709655} + - {x: -1.6359752, y: -7.930139} + m_VertexDistance: 0.0005 +--- !u!50 &245160126 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245160124} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!60 &245160127 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245160124} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: -1.6359752, y: -7.9301395} + - {x: -3.1725824, y: -7.870966} + - {x: -5.2884407, y: -7.2404585} + - {x: -7.7168913, y: -6.2323155} + - {x: -11.362027, y: -4.435586} + - {x: -15.359322, y: -2.2127492} + - {x: -10.457193, y: 9.381779} + - {x: -7.8601236, y: 15.920093} + - {x: -6.722757, y: 17.918148} + - {x: -5.017477, y: 19.776514} + - {x: -3.630335, y: 20.805374} + - {x: -1.8054166, y: 21.69148} + - {x: 0.4767723, y: 22.246181} + - {x: 2.076514, y: 22.341045} + - {x: 4.0034294, y: 22.101444} + - {x: 5.5234017, y: 21.584051} + - {x: 6.789136, y: 20.80696} + - {x: 7.824006, y: 19.807056} + - {x: 8.651433, y: 18.621235} + - {x: 9.29484, y: 17.286371} + - {x: 9.777672, y: 15.839356} + - {x: 10.123357, y: 14.317044} + - {x: 10.35533, y: 12.756306} + - {x: 10.571847, y: 9.667007} + - {x: 10.671081, y: 4.6494226} + - {x: 10.807697, y: 3.24016} + - {x: 10.520532, y: 2.1193137} + - {x: 9.419306, y: 0.65547776} + - {x: 6.5909033, y: -1.7531154} + - {x: 5.838581, y: -2.8413315} + - {x: 5.025204, y: -4.628749} + - {x: 3.958424, y: -5.6677504} + - {x: 2.190351, y: -6.669478} + - {x: -0.49770787, y: -7.6240993} + - {x: -0.49770787, y: -7.6240993} + - {x: -1.6359752, y: -7.9301395} +--- !u!1971053207 &245160128 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245160124} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 20 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 7d8cda48c729c46329cd9d3c69a3a4e6, type: 3} + m_Sprites: + - {fileID: 21300006, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300014, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300002, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300012, guid: a8321f6fae34f034787010a903e29648, type: 3} + - {fileID: 21300010, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300000, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300004, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300012, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300008, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 0} + - {fileID: 0} + - {fileID: 21300012, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300008, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + m_LocalAABB: + m_Center: {x: -2.2558622, y: 7.180541, z: -0.0050049997} + m_Extent: {x: 13.562195, y: 15.659332, z: 0.0050049997} +--- !u!114 &245160129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245160124} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: -1.636219, y: -7.9291697, z: 0} + leftTangent: {x: 6.020996, y: 1.5137386, z: 0} + rightTangent: {x: -2.8936367, y: -0.7274895, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -15.358402, y: -2.2131429, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -8.29718, y: 14.782811, z: 0} + leftTangent: {x: -0.73890686, y: -2.238881, z: 0} + rightTangent: {x: 1.9517517, y: 5.9137793, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.0031815, y: 22.100475, z: 0} + leftTangent: {x: -4.723675, y: 1.0711021, z: 0} + rightTangent: {x: 8.273635, y: -1.8760605, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 10.761995, y: 3.851832, z: 0} + leftTangent: {x: -0.6242571, y: 3.3770556, z: 0} + rightTangent: {x: 0.5823755, y: -3.1504874, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.837639, y: -2.8409967, z: 0} + leftTangent: {x: 0.4805252, y: 1.809861, z: -0} + rightTangent: {x: -0.4805252, y: -1.809861, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: a710fe91ca336478e999261a86254e9f, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &245160130 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245160124} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 37.300003, y: -26.28, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &245160131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245160124} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a8e65bafadf93f41a17da25163f2f51, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ColliderCornerType: 0 + m_ColliderOffset: 1 + m_UpdateCollider: 0 +--- !u!1 &436285776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 436285782} + - component: {fileID: 436285781} + - component: {fileID: 436285780} + - component: {fileID: 436285777} + m_Layer: 0 + m_Name: Base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!61 &436285777 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 436285776} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 36.316113, y: -26.14928} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 132.14908, y: 3.2228775} + m_EdgeRadius: 0 +--- !u!1971053207 &436285780 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 436285776} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -11 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} +--- !u!114 &436285781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 436285776} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -27.532185, y: -26.215977, z: 0} + leftTangent: {x: -6.6110344, y: 5.3857536, z: 0} + rightTangent: {x: 4.6707573, y: -3.8050842, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 101.01609, y: -26.410751, z: 0} + leftTangent: {x: -3.3493195, y: -3.1139984, z: 0} + rightTangent: {x: 6.1174393, y: 5.687624, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + m_SpriteShape: {fileID: 0} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 1 + m_OptimizeCollider: 1 +--- !u!4 &436285782 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 436285776} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -35.949997, y: -9.58, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &778552133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 778552137} + - component: {fileID: 778552136} + - component: {fileID: 778552135} + - component: {fileID: 778552134} + m_Layer: 0 + m_Name: Tree01Bush + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!60 &778552134 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 778552133} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 4.842697, y: 3.0536528} + - {x: 4.2251015, y: 2.7467482} + - {x: 4.1100607, y: 2.380889} + - {x: 4.149143, y: 2.2038698} + - {x: 4.4805503, y: 2.3922255} + - {x: 5.1676493, y: 2.574047} + - {x: 5.749752, y: 2.1744652} + - {x: 5.2083073, y: 1.8412068} + - {x: 5.2604628, y: 1.6912718} + - {x: 5.687503, y: 1.4038008} + - {x: 5.4901295, y: 0.91677374} + - {x: 5.2868843, y: 0.65911484} + - {x: 5.774804, y: 0.7452766} + - {x: 6.122902, y: 0.66643333} + - {x: 5.765494, y: 0.43928215} + - {x: 5.842326, y: 0.31585217} + - {x: 6.041519, y: 0.40740094} + - {x: 6.4236236, y: 0.4707878} + - {x: 6.6654167, y: 0.18912315} + - {x: 6.3777547, y: 0.20343184} + - {x: 6.368513, y: -0.011343002} + - {x: 6.536011, y: -0.1888309} + - {x: 6.635894, y: -0.45077685} + - {x: 6.561116, y: -0.73729897} + - {x: 6.385946, y: -0.419961} + - {x: 6.184222, y: -0.5616255} + - {x: 5.9017916, y: -0.51159674} + - {x: 5.729164, y: -0.6656771} + - {x: 6.2731905, y: -0.74067247} + - {x: 5.8843923, y: -1.0789753} + - {x: 6.1457024, y: -1.1232643} + - {x: 6.3980665, y: -1.3870852} + - {x: 6.68213, y: -1.5131938} + - {x: 6.714102, y: -1.7794142} + - {x: 6.461239, y: -1.7009978} + - {x: 6.600374, y: -2.1254349} + - {x: 6.3189616, y: -2.018591} + - {x: 6.181938, y: -2.2180634} + - {x: 6.0361004, y: -1.719028} + - {x: 5.8098855, y: -1.7443272} + - {x: 5.896029, y: -2.0307717} + - {x: 5.8072453, y: -2.1588326} + - {x: 6.30387, y: -2.495202} + - {x: 6.37483, y: -2.927081} + - {x: 6.17338, y: -3.2872} + - {x: 6.1027503, y: -2.899042} + - {x: 5.9765625, y: -2.9460025} + - {x: 5.8428383, y: -3.3735342} + - {x: 5.5035925, y: -3.032574} + - {x: 5.2637434, y: -3.2851763} + - {x: 5.565504, y: -3.411436} + - {x: 5.765026, y: -3.6137066} + - {x: 5.759465, y: -4.0411563} + - {x: 5.4864044, y: -3.8565104} + - {x: 5.2751274, y: -3.9274988} + - {x: 5.4815645, y: -4.2211666} + - {x: 4.957515, y: -4.596761} + - {x: 4.401864, y: -4.3257003} + - {x: 4.6753187, y: -3.9678326} + - {x: 4.405222, y: -3.7872267} + - {x: 4.370056, y: -3.51654} + - {x: 4.173502, y: -3.3677387} + - {x: 4.0753603, y: -3.8192444} + - {x: 3.718846, y: -3.8145308} + - {x: 3.575674, y: -4.0162377} + - {x: 3.3099508, y: -4.16985} + - {x: 3.412251, y: -3.8473315} + - {x: 3.4121673, y: -3.6313195} + - {x: 3.180334, y: -3.5487986} + - {x: 2.9238234, y: -3.3508363} + - {x: 2.6059914, y: -3.4799633} + - {x: 2.704814, y: -2.920652} + - {x: 2.4267352, y: -3.0078354} + - {x: 2.008948, y: -2.8439493} + - {x: 1.8137305, y: -3.0454688} + - {x: 1.6166661, y: -2.6917048} + - {x: 1.3459278, y: -2.7196493} + - {x: 1.1200774, y: -2.8577302} + - {x: 0.9129431, y: -3.2032948} + - {x: 0.5602953, y: -2.892481} + - {x: 0.17219684, y: -2.969111} + - {x: -0.2539997, y: -3.135602} + - {x: -1.0127571, y: -2.957893} + - {x: -1.3104165, y: -3.277318} + - {x: -1.8549925, y: -2.9304664} + - {x: -2.3564415, y: -2.985093} + - {x: -2.8319044, y: -3.1292267} + - {x: -3.0021071, y: -3.2489247} + - {x: -3.278289, y: -3.8055553} + - {x: -3.5601258, y: -3.4910324} + - {x: -3.7767522, y: -3.7047393} + - {x: -3.9952595, y: -4.0934596} + - {x: -4.4384665, y: -4.1984577} + - {x: -4.4443274, y: -4.769828} + - {x: -4.86179, y: -4.935101} + - {x: -5.024274, y: -5.4570923} + - {x: -5.240713, y: -4.8939514} + - {x: -5.115657, y: -4.4137115} + - {x: -4.8562536, y: -3.8500762} + - {x: -5.140299, y: -3.5294347} + - {x: -5.533455, y: -3.7817793} + - {x: -5.6599064, y: -3.4260674} + - {x: -5.793478, y: -3.4478827} + - {x: -6.103485, y: -3.9516172} + - {x: -6.2236557, y: -3.2902782} + - {x: -5.798864, y: -2.8099592} + - {x: -5.3386383, y: -2.498311} + - {x: -5.910779, y: -2.4954557} + - {x: -6.054783, y: -2.1229374} + - {x: -6.409728, y: -2.5751123} + - {x: -6.6695256, y: -2.011589} + - {x: -6.4066586, y: -1.4256444} + - {x: -5.7559204, y: -1.1190958} + - {x: -5.659766, y: -0.9032006} + - {x: -5.685962, y: -0.67662984} + - {x: -6.1818695, y: -0.73166656} + - {x: -6.445245, y: -1.043403} + - {x: -6.712138, y: -1.4716253} + - {x: -6.7327995, y: -1.1105715} + - {x: -6.600764, y: -0.47903705} + - {x: -6.411022, y: 0.07046509} + - {x: -5.8852887, y: 0.21442722} + - {x: -5.464736, y: 0.1550293} + - {x: -5.3192067, y: 0.28337485} + - {x: -5.205149, y: 0.5243256} + - {x: -5.6063585, y: 0.6617527} + - {x: -5.4115167, y: 1.3153566} + - {x: -5.8227644, y: 1.361414} + - {x: -5.4171495, y: 1.7782604} + - {x: -4.8657217, y: 1.8313699} + - {x: -4.5522523, y: 1.8536273} + - {x: -4.5334206, y: 2.017733} + - {x: -4.667205, y: 2.2387218} + - {x: -4.292954, y: 2.6855984} + - {x: -4.580907, y: 2.8373194} + - {x: -4.0656614, y: 3.0545754} + - {x: -3.6416664, y: 2.9989085} + - {x: -3.359173, y: 2.9503338} + - {x: -3.3353915, y: 3.1130767} + - {x: -3.837128, y: 3.5377407} + - {x: -3.196869, y: 3.7146618} + - {x: -2.604802, y: 3.566195} + - {x: -2.3444424, y: 3.4395485} + - {x: -2.1640463, y: 3.5340664} + - {x: -1.9549431, y: 3.8693755} + - {x: -2.2152555, y: 4.5231056} + - {x: -1.5487685, y: 4.413057} + - {x: -0.944021, y: 3.8185174} + - {x: -0.68036103, y: 3.4601822} + - {x: -0.35997054, y: 3.7712705} + - {x: 0.33567452, y: 4.335599} + - {x: 1.0082848, y: 4.59976} + - {x: 0.52776575, y: 3.8100228} + - {x: 0.67292666, y: 3.4952803} + - {x: 0.85266876, y: 3.4385777} + - {x: 1.014653, y: 3.6554363} + - {x: 1.4272296, y: 4.039967} + - {x: 1.9803336, y: 4.193098} + - {x: 1.82889, y: 3.6472077} + - {x: 2.2490773, y: 3.3730989} + - {x: 2.5440044, y: 3.2979183} + - {x: 3.2207956, y: 3.8227782} + - {x: 3.6531794, y: 4.0017204} + - {x: 3.4617286, y: 3.5193548} + - {x: 3.625062, y: 3.226173} + - {x: 3.7744694, y: 3.112564} + - {x: 4.058009, y: 3.2391448} + - {x: 4.413997, y: 3.372613} + - {x: 4.842697, y: 3.0536528} +--- !u!1971053207 &778552135 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 778552133} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -46 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: a94adaf94669646788de8f639270804a, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: -0.009348869, y: -0.4286661, z: 0} + m_Extent: {x: 6.7234507, y: 5.028426, z: 0} +--- !u!114 &778552136 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 778552133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8e3fa9c7ff3ad4112a30689e933384ed, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 4 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 16 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &778552137 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 778552133} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1617661210} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1192624865 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1192624872} + - component: {fileID: 1192624871} + - component: {fileID: 1192624870} + - component: {fileID: 1192624869} + - component: {fileID: 1192624868} + - component: {fileID: 1192624867} + - component: {fileID: 1192624866} + m_Layer: 0 + m_Name: Tree (Package) (Legacy Collider) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1192624866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192624865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a8e65bafadf93f41a17da25163f2f51, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ColliderCornerType: 0 + m_ColliderOffset: 1 + m_UpdateCollider: 0 +--- !u!60 &1192624867 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192624865} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 3.21616, y: 3.70394} + - {x: 3.06467, y: 3.61522} + - {x: 2.89128, y: 3.53323} + - {x: 2.69993, y: 3.45} + - {x: 2.49458, y: 3.35756} + - {x: 2.49458, y: 3.35756} + - {x: 2.25361, y: 3.22345} + - {x: 2.04345, y: 3.07924} + - {x: 1.85335, y: 2.9437} + - {x: 1.67252, y: 2.83557} + - {x: 1.67252, y: 2.83557} + - {x: 1.43665, y: 2.65946} + - {x: 1.3154, y: 2.46707} + - {x: 1.27064, y: 2.31219} + - {x: 1.26419, y: 2.24861} + - {x: 1.26419, y: 2.24861} + - {x: 1.24321, y: 2.21888} + - {x: 1.1781, y: 2.14336} + - {x: 1.06561, y: 2.04256} + - {x: 0.90247, y: 1.93701} + - {x: 0.90247, y: 1.93701} + - {x: 0.8364, y: 1.78565} + - {x: 0.81639, y: 1.615} + - {x: 0.82316, y: 1.42258} + - {x: 0.83741, y: 1.2059} + - {x: 0.83741, y: 1.2059} + - {x: 0.83785, y: 1.03644} + - {x: 0.83004, y: 0.85498} + - {x: 0.8246, y: 0.66887} + - {x: 0.83215, y: 0.48545} + - {x: 0.83215, y: 0.48545} + - {x: 0.85034, y: 0.07453} + - {x: 0.84492, y: -0.2948} + - {x: 0.85385, y: -0.63485} + - {x: 0.91511, y: -0.95794} + - {x: 0.91511, y: -0.95794} + - {x: 1.0408, y: -1.297} + - {x: 1.18721, y: -1.62861} + - {x: 1.30861, y: -1.88055} + - {x: 1.35924, y: -1.98058} + - {x: 1.35924, y: -1.98058} + - {x: -1.51457, y: -1.91262} + - {x: -1.51457, y: -1.91262} + - {x: -1.1785, y: -1.14981} + - {x: -1.1785, y: -1.14981} + - {x: -1.14555, y: -0.99038} + - {x: -1.06854, y: -0.60328} + - {x: -0.98024, y: -0.12525} + - {x: -0.91342, y: 0.30692} + - {x: -0.91342, y: 0.30692} + - {x: -0.88349, y: 0.42842} + - {x: -0.82777, y: 0.59984} + - {x: -0.76428, y: 0.79808} + - {x: -0.71104, y: 1.00007} + - {x: -0.71104, y: 1.00007} + - {x: -0.68064, y: 1.19016} + - {x: -0.66822, y: 1.36293} + - {x: -0.66352, y: 1.52021} + - {x: -0.65627, y: 1.66382} + - {x: -0.65627, y: 1.66382} + - {x: -0.66352, y: 1.93623} + - {x: -0.72431, y: 2.21223} + - {x: -0.82614, y: 2.49767} + - {x: -0.95652, y: 2.79842} + - {x: -0.95652, y: 2.79842} + - {x: -1.16376, y: 3.08906} + - {x: -1.43705, y: 3.32499} + - {x: -1.67521, y: 3.48334} + - {x: -1.77708, y: 3.54121} + - {x: -1.77708, y: 3.54121} + - {x: -1.82409, y: 3.53352} + - {x: -1.93937, y: 3.52264} + - {x: -2.0843, y: 3.52685} + - {x: -2.22026, y: 3.56443} + - {x: -2.22026, y: 3.56443} + - {x: -2.34351, y: 3.64414} + - {x: -2.4629, y: 3.75766} + - {x: -2.55871, y: 3.8976} + - {x: -2.6112, y: 4.05661} + - {x: -2.6112, y: 4.05661} + - {x: -2.76821, y: 4.19096} + - {x: -2.91254, y: 4.27713} + - {x: -3.0182, y: 4.32302} + - {x: -3.05919, y: 4.33656} + - {x: -3.05919, y: 4.33656} + - {x: -3.15745, y: 4.56129} + - {x: -3.15745, y: 4.56129} + - {x: -2.79045, y: 4.71134} + - {x: -2.79045, y: 4.71134} + - {x: -2.73392, y: 4.69976} + - {x: -2.5972, y: 4.65381} + - {x: -2.42957, y: 4.55666} + - {x: -2.28032, y: 4.39147} + - {x: -2.28032, y: 4.39147} + - {x: -2.26795, y: 4.22291} + - {x: -2.20042, y: 4.07723} + - {x: -2.11615, y: 3.973} + - {x: -2.05352, y: 3.9288} + - {x: -2.05352, y: 3.9288} + - {x: -1.94517, y: 3.91878} + - {x: -1.85133, y: 3.92641} + - {x: -1.78528, y: 3.93974} + - {x: -1.76032, y: 3.94683} + - {x: -1.76032, y: 3.94683} + - {x: -1.74974, y: 3.9863} + - {x: -1.73502, y: 4.08752} + - {x: -1.74166, y: 4.22471} + - {x: -1.79516, y: 4.3721} + - {x: -1.79516, y: 4.3721} + - {x: -1.91215, y: 4.55557} + - {x: -2.05843, y: 4.77214} + - {x: -2.18336, y: 4.95274} + - {x: -2.23626, y: 5.02829} + - {x: -2.23626, y: 5.02829} + - {x: -1.66682, y: 5.15766} + - {x: -1.66682, y: 5.15766} + - {x: -1.6332, y: 5.08906} + - {x: -1.55111, y: 4.91492} + - {x: -1.44868, y: 4.68271} + - {x: -1.35406, y: 4.43994} + - {x: -1.35406, y: 4.43994} + - {x: -1.37997, y: 4.27281} + - {x: -1.35267, y: 4.15224} + - {x: -1.3018, y: 4.06892} + - {x: -1.25701, y: 4.01351} + - {x: -1.25701, y: 4.01351} + - {x: -1.09309, y: 3.8494} + - {x: -0.87801, y: 3.69178} + - {x: -0.69092, y: 3.57328} + - {x: -0.61097, y: 3.52652} + - {x: -0.61097, y: 3.52652} + - {x: -0.62235, y: 3.56415} + - {x: -0.65681, y: 3.66302} + - {x: -0.71479, y: 3.80206} + - {x: -0.79677, y: 3.96025} + - {x: -0.79677, y: 3.96025} + - {x: -0.84944, y: 4.02853} + - {x: -0.9117, y: 4.08876} + - {x: -0.97351, y: 4.15206} + - {x: -1.02479, y: 4.22952} + - {x: -1.02479, y: 4.22952} + - {x: -1.15366, y: 4.52644} + - {x: -1.2468, y: 4.80967} + - {x: -1.29124, y: 5.05157} + - {x: -1.27401, y: 5.2245} + - {x: -1.27401, y: 5.2245} + - {x: -1.1945, y: 5.24587} + - {x: -1.00474, y: 5.29598} + - {x: -0.77788, y: 5.35386} + - {x: -0.58708, y: 5.39851} + - {x: -0.58708, y: 5.39851} + - {x: -0.57878, y: 5.08461} + - {x: -0.57517, y: 4.79473} + - {x: -0.55927, y: 4.53139} + - {x: -0.51412, y: 4.29709} + - {x: -0.51412, y: 4.29709} + - {x: -0.47711, y: 4.22039} + - {x: -0.42709, y: 4.16381} + - {x: -0.3738, y: 4.11414} + - {x: -0.32701, y: 4.05818} + - {x: -0.32701, y: 4.05818} + - {x: -0.27297, y: 3.95849} + - {x: -0.23526, y: 3.86713} + - {x: -0.21316, y: 3.80037} + - {x: -0.20596, y: 3.7745} + - {x: -0.20596, y: 3.7745} + - {x: 0.04144, y: 3.53247} + - {x: 0.04144, y: 3.53247} + - {x: -0.03839, y: 3.97665} + - {x: -0.03839, y: 3.97665} + - {x: -0.02412, y: 4.01835} + - {x: 0.00641, y: 4.11975} + - {x: 0.03482, y: 4.24525} + - {x: 0.04267, y: 4.35928} + - {x: 0.04267, y: 4.35928} + - {x: -0.00723, y: 4.52445} + - {x: -0.10588, y: 4.76249} + - {x: -0.2024, y: 4.97642} + - {x: -0.24588, y: 5.06928} + - {x: -0.24588, y: 5.06928} + - {x: 0.20219, y: 5.15233} + - {x: 0.20219, y: 5.15233} + - {x: 0.24203, y: 5.05934} + - {x: 0.33078, y: 4.84528} + - {x: 0.42225, y: 4.60747} + - {x: 0.47027, y: 4.44323} + - {x: 0.47027, y: 4.44323} + - {x: 0.4684, y: 4.32995} + - {x: 0.4501, y: 4.20424} + - {x: 0.42908, y: 4.10228} + - {x: 0.41903, y: 4.06025} + - {x: 0.41903, y: 4.06025} + - {x: 0.53061, y: 3.8667} + - {x: 0.53061, y: 3.8667} + - {x: 0.55453, y: 3.87806} + - {x: 0.6126, y: 3.91365} + - {x: 0.68429, y: 3.97576} + - {x: 0.74907, y: 4.06666} + - {x: 0.74907, y: 4.06666} + - {x: 0.79007, y: 4.18274} + - {x: 0.81181, y: 4.31027} + - {x: 0.8225, y: 4.42996} + - {x: 0.83037, y: 4.52254} + - {x: 0.83037, y: 4.52254} + - {x: 0.86256, y: 4.68378} + - {x: 0.90925, y: 4.84782} + - {x: 0.9513, y: 4.97518} + - {x: 0.96957, y: 5.02641} + - {x: 0.96957, y: 5.02641} + - {x: 1.49179, y: 5.0735} + - {x: 1.49179, y: 5.0735} + - {x: 1.47548, y: 5.02669} + - {x: 1.43807, y: 4.91325} + - {x: 1.39682, y: 4.7737} + - {x: 1.369, y: 4.64854} + - {x: 1.369, y: 4.64854} + - {x: 1.33214, y: 4.51091} + - {x: 1.26993, y: 4.33702} + - {x: 1.20878, y: 4.17203} + - {x: 1.17512, y: 4.06108} + - {x: 1.17512, y: 4.06108} + - {x: 1.16627, y: 3.98099} + - {x: 1.1612, y: 3.89435} + - {x: 1.15891, y: 3.82494} + - {x: 1.15838, y: 3.79652} + - {x: 1.15838, y: 3.79652} + - {x: 1.34416, y: 3.76339} + - {x: 1.34416, y: 3.76339} + - {x: 1.37316, y: 3.80006} + - {x: 1.46142, y: 3.90428} + - {x: 1.61085, y: 4.06734} + - {x: 1.82336, y: 4.28055} + - {x: 1.82336, y: 4.28055} + - {x: 1.8859, y: 4.36773} + - {x: 1.9258, y: 4.46981} + - {x: 1.95797, y: 4.57515} + - {x: 1.99737, y: 4.67211} + - {x: 1.99737, y: 4.67211} + - {x: 2.09532, y: 4.84509} + - {x: 2.17963, y: 4.98264} + - {x: 2.23871, y: 5.07346} + - {x: 2.26098, y: 5.10624} + - {x: 2.26098, y: 5.10624} + - {x: 2.3269, y: 5.08028} + - {x: 2.48573, y: 5.0163} + - {x: 2.67913, y: 4.93514} + - {x: 2.84873, y: 4.85762} + - {x: 2.84873, y: 4.85762} + - {x: 2.79424, y: 4.79033} + - {x: 2.68949, y: 4.71744} + - {x: 2.5691, y: 4.63505} + - {x: 2.46769, y: 4.53925} + - {x: 2.46769, y: 4.53925} + - {x: 2.38302, y: 4.40931} + - {x: 2.31304, y: 4.27313} + - {x: 2.24425, y: 4.13729} + - {x: 2.16311, y: 4.00834} + - {x: 2.16311, y: 4.00834} + - {x: 2.03168, y: 3.845} + - {x: 1.9121, y: 3.71337} + - {x: 1.82514, y: 3.62554} + - {x: 1.79154, y: 3.59357} + - {x: 1.79154, y: 3.59357} + - {x: 1.86115, y: 3.6285} + - {x: 2.04432, y: 3.71875} + - {x: 2.3026, y: 3.84251} + - {x: 2.59753, y: 3.97799} + - {x: 2.59753, y: 3.97799} + - {x: 2.64528, y: 3.98951} + - {x: 2.69645, y: 3.98993} + - {x: 2.74981, y: 3.98915} + - {x: 2.80409, y: 3.99704} + - {x: 2.80409, y: 3.99704} + - {x: 2.88942, y: 4.02926} + - {x: 2.96842, y: 4.0708} + - {x: 3.03575, y: 4.11335} + - {x: 3.08606, y: 4.14861} + - {x: 3.08606, y: 4.14861} + - {x: 3.34301, y: 4.36611} + - {x: 3.609, y: 4.62895} + - {x: 3.81742, y: 4.85032} + - {x: 3.90169, y: 4.94341} + - {x: 3.90169, y: 4.94341} + - {x: 4.37856, y: 4.67953} + - {x: 4.37856, y: 4.67953} + - {x: 4.23861, y: 4.57148} + - {x: 3.9085, y: 4.3101} + - {x: 3.52282, y: 3.98953} + - {x: 3.21616, y: 3.70394} +--- !u!66 &1192624868 +CompositeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192624865} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_GeometryType: 0 + m_GenerationType: 0 + m_EdgeRadius: 0 + m_ColliderPaths: + - m_Collider: {fileID: 1192624867} + m_ColliderPaths: + - - X: 32161600 + Y: 37039400 + - X: 30646700 + Y: 36152200 + - X: 28912800 + Y: 35332300 + - X: 26999300 + Y: 34500000 + - X: 24945800 + Y: 33575600 + - X: 24945800 + Y: 33575600 + - X: 22536098 + Y: 32234500 + - X: 20434502 + Y: 30792400 + - X: 18533500 + Y: 29437000 + - X: 16725200 + Y: 28355700 + - X: 16725200 + Y: 28355700 + - X: 14366500 + Y: 26594600 + - X: 13154000 + Y: 24670702 + - X: 12706400 + Y: 23121900 + - X: 12641900 + Y: 22486100 + - X: 12641900 + Y: 22486100 + - X: 12432100 + Y: 22188800 + - X: 11781000 + Y: 21433598 + - X: 10656101 + Y: 20425602 + - X: 9024700 + Y: 19370100 + - X: 9024700 + Y: 19370100 + - X: 8363999 + Y: 17856500 + - X: 8163900 + Y: 16150000 + - X: 8231600 + Y: 14225800 + - X: 8374099 + Y: 12059000 + - X: 8374099 + Y: 12059000 + - X: 8378499 + Y: 10364400 + - X: 8300400 + Y: 8549800 + - X: 8246000 + Y: 6688699 + - X: 8321500 + Y: 4854500 + - X: 8321500 + Y: 4854500 + - X: 8503400 + Y: 745300 + - X: 8449200 + Y: -2948000 + - X: 8538500 + Y: -6348500 + - X: 9151100 + Y: -9579400 + - X: 9151100 + Y: -9579400 + - X: 10408000 + Y: -12970001 + - X: 11872100 + Y: -16286100 + - X: 13086100 + Y: -18805500 + - X: 13592401 + Y: -19805800 + - X: 13592401 + Y: -19805800 + - X: -15145700 + Y: -19126200 + - X: -15145700 + Y: -19126200 + - X: -11785001 + Y: -11498100 + - X: -11785001 + Y: -11498100 + - X: -11455500 + Y: -9903800 + - X: -10685400 + Y: -6032800 + - X: -9802400 + Y: -1252500 + - X: -9134200 + Y: 3069200 + - X: -9134200 + Y: 3069200 + - X: -8834900 + Y: 4284200 + - X: -8277700 + Y: 5998400 + - X: -7642800 + Y: 7980800 + - X: -7110400 + Y: 10000700 + - X: -7110400 + Y: 10000700 + - X: -6806400 + Y: 11901600 + - X: -6682200 + Y: 13629301 + - X: -6635200 + Y: 15202100 + - X: -6562700 + Y: 16638200 + - X: -6562700 + Y: 16638200 + - X: -6635200 + Y: 19362300 + - X: -7243100 + Y: 22122300 + - X: -8261400 + Y: 24976700 + - X: -9565200 + Y: 27984200 + - X: -9565200 + Y: 27984200 + - X: -11637599 + Y: 30890600 + - X: -14370500 + Y: 33249900 + - X: -16752100 + Y: 34833400 + - X: -17770800 + Y: 35412100 + - X: -17770800 + Y: 35412100 + - X: -18240900 + Y: 35335200 + - X: -19393700 + Y: 35226400 + - X: -20843000 + Y: 35268500 + - X: -22202600 + Y: 35644300 + - X: -22202600 + Y: 35644300 + - X: -23435100 + Y: 36441400 + - X: -24629000 + Y: 37576600 + - X: -25587100 + Y: 38976000 + - X: -26112000 + Y: 40566100 + - X: -26112000 + Y: 40566100 + - X: -27682100 + Y: 41909600 + - X: -29125400 + Y: 42771300 + - X: -30182000 + Y: 43230200 + - X: -30591900 + Y: 43365596 + - X: -30591900 + Y: 43365596 + - X: -31574500 + Y: 45612896 + - X: -31574500 + Y: 45612896 + - X: -27904500 + Y: 47113400 + - X: -27904500 + Y: 47113400 + - X: -27339200 + Y: 46997600 + - X: -25972000 + Y: 46538100 + - X: -24295700 + Y: 45566600 + - X: -22803200 + Y: 43914700 + - X: -22803200 + Y: 43914700 + - X: -22679500 + Y: 42229100 + - X: -22004200 + Y: 40772300 + - X: -21161500 + Y: 39730000 + - X: -20535200 + Y: 39288000 + - X: -20535200 + Y: 39288000 + - X: -19451700 + Y: 39187800 + - X: -18513300 + Y: 39264100 + - X: -17852800 + Y: 39397400 + - X: -17603200 + Y: 39468300 + - X: -17603200 + Y: 39468300 + - X: -17497400 + Y: 39863000 + - X: -17350200 + Y: 40875200 + - X: -17416600 + Y: 42247100 + - X: -17951600 + Y: 43721000 + - X: -17951600 + Y: 43721000 + - X: -19121500 + Y: 45555700 + - X: -20584300 + Y: 47721400 + - X: -21833600 + Y: 49527400 + - X: -22362600 + Y: 50282896 + - X: -22362600 + Y: 50282896 + - X: -16668200 + Y: 51576600 + - X: -16668200 + Y: 51576600 + - X: -16332000 + Y: 50890600 + - X: -15511100 + Y: 49149200 + - X: -14486800 + Y: 46827100 + - X: -13540601 + Y: 44399400 + - X: -13540601 + Y: 44399400 + - X: -13799700 + Y: 42728100 + - X: -13526700 + Y: 41522396 + - X: -13018000 + Y: 40689200 + - X: -12570100 + Y: 40135104 + - X: -12570100 + Y: 40135104 + - X: -10930901 + Y: 38494000 + - X: -8780100 + Y: 36917800 + - X: -6909200 + Y: 35732800 + - X: -6109700 + Y: 35265200 + - X: -6109700 + Y: 35265200 + - X: -6223500 + Y: 35641500 + - X: -6568100 + Y: 36630200 + - X: -7147900 + Y: 38020600 + - X: -7967700 + Y: 39602500 + - X: -7967700 + Y: 39602500 + - X: -8494400 + Y: 40285300 + - X: -9117000 + Y: 40887600 + - X: -9735100 + Y: 41520600 + - X: -10247900 + Y: 42295200 + - X: -10247900 + Y: 42295200 + - X: -11536601 + Y: 45264400 + - X: -12467999 + Y: 48096700 + - X: -12912400 + Y: 50515700 + - X: -12740099 + Y: 52245000 + - X: -12740099 + Y: 52245000 + - X: -11945000 + Y: 52458700 + - X: -10047400 + Y: 52959800 + - X: -7778800 + Y: 53538600 + - X: -5870800 + Y: 53985100 + - X: -5870800 + Y: 53985100 + - X: -5787800 + Y: 50846100 + - X: -5751700 + Y: 47947300 + - X: -5592700 + Y: 45313900 + - X: -5141200 + Y: 42970900 + - X: -5141200 + Y: 42970900 + - X: -4771100 + Y: 42203900 + - X: -4270900 + Y: 41638096 + - X: -3738000 + Y: 41141400 + - X: -3270100 + Y: 40581800 + - X: -3270100 + Y: 40581800 + - X: -2729700 + Y: 39584900 + - X: -2352600 + Y: 38671300 + - X: -2131600 + Y: 38003700 + - X: -2059600 + Y: 37745000 + - X: -2059600 + Y: 37745000 + - X: 414400 + Y: 35324700 + - X: 414400 + Y: 35324700 + - X: -383900 + Y: 39766500 + - X: -383900 + Y: 39766500 + - X: -241200 + Y: 40183500 + - X: 64100 + Y: 41197500 + - X: 348200 + Y: 42452504 + - X: 426700 + Y: 43592800 + - X: 426700 + Y: 43592800 + - X: -72300 + Y: 45244500 + - X: -1058800 + Y: 47624896 + - X: -2024000 + Y: 49764200 + - X: -2458800 + Y: 50692800 + - X: -2458800 + Y: 50692800 + - X: 2021900 + Y: 51523300 + - X: 2021900 + Y: 51523300 + - X: 2420300 + Y: 50593400 + - X: 3307800 + Y: 48452800 + - X: 4222500 + Y: 46074700 + - X: 4702700 + Y: 44432300 + - X: 4702700 + Y: 44432300 + - X: 4684000 + Y: 43299500 + - X: 4501000 + Y: 42042400 + - X: 4290800 + Y: 41022800 + - X: 4190300 + Y: 40602500 + - X: 4190300 + Y: 40602500 + - X: 5306100 + Y: 38667000 + - X: 5306100 + Y: 38667000 + - X: 5545300 + Y: 38780600 + - X: 6126000 + Y: 39136500 + - X: 6842900 + Y: 39757600 + - X: 7490700 + Y: 40666600 + - X: 7490700 + Y: 40666600 + - X: 7900700 + Y: 41827404 + - X: 8118100 + Y: 43102700 + - X: 8225000 + Y: 44299596 + - X: 8303700 + Y: 45225400 + - X: 8303700 + Y: 45225400 + - X: 8625600 + Y: 46837800 + - X: 9092500 + Y: 48478200 + - X: 9513000 + Y: 49751800 + - X: 9695700 + Y: 50264100 + - X: 9695700 + Y: 50264100 + - X: 14917901 + Y: 50735000 + - X: 14917901 + Y: 50735000 + - X: 14754800 + Y: 50266900 + - X: 14380701 + Y: 49132500 + - X: 13968199 + Y: 47737004 + - X: 13690000 + Y: 46485400 + - X: 13690000 + Y: 46485400 + - X: 13321400 + Y: 45109100 + - X: 12699300 + Y: 43370200 + - X: 12087801 + Y: 41720300 + - X: 11751200 + Y: 40610800 + - X: 11751200 + Y: 40610800 + - X: 11662700 + Y: 39809900 + - X: 11612000 + Y: 38943500 + - X: 11589100 + Y: 38249400 + - X: 11583800 + Y: 37965200 + - X: 11583800 + Y: 37965200 + - X: 13441600 + Y: 37633900 + - X: 13441600 + Y: 37633900 + - X: 13731600 + Y: 38000600 + - X: 14614201 + Y: 39042800 + - X: 16108500 + Y: 40673400 + - X: 18233600 + Y: 42805500 + - X: 18233600 + Y: 42805500 + - X: 18859000 + Y: 43677300 + - X: 19258000 + Y: 44698100 + - X: 19579700 + Y: 45751500 + - X: 19973700 + Y: 46721100 + - X: 19973700 + Y: 46721100 + - X: 20953200 + Y: 48450900 + - X: 21796300 + Y: 49826396 + - X: 22387100 + Y: 50734600 + - X: 22609798 + Y: 51062396 + - X: 22609798 + Y: 51062396 + - X: 23269000 + Y: 50802800 + - X: 24857300 + Y: 50163004 + - X: 26791300 + Y: 49351400 + - X: 28487300 + Y: 48576196 + - X: 28487300 + Y: 48576196 + - X: 27942400 + Y: 47903300 + - X: 26894900 + Y: 47174400 + - X: 25691000 + Y: 46350500 + - X: 24676900 + Y: 45392500 + - X: 24676900 + Y: 45392500 + - X: 23830200 + Y: 44093100 + - X: 23130400 + Y: 42731300 + - X: 22442500 + Y: 41372900 + - X: 21631100 + Y: 40083400 + - X: 21631100 + Y: 40083400 + - X: 20316802 + Y: 38450000 + - X: 19121000 + Y: 37133700 + - X: 18251400 + Y: 36255400 + - X: 17915400 + Y: 35935700 + - X: 17915400 + Y: 35935700 + - X: 18611500 + Y: 36285000 + - X: 20443202 + Y: 37187500 + - X: 23026000 + Y: 38425100 + - X: 25975298 + Y: 39779900 + - X: 25975298 + Y: 39779900 + - X: 26452798 + Y: 39895100 + - X: 26964500 + Y: 39899300 + - X: 27498100 + Y: 39891500 + - X: 28040900 + Y: 39970400 + - X: 28040900 + Y: 39970400 + - X: 28894200 + Y: 40292600 + - X: 29684200 + Y: 40708000 + - X: 30357500 + Y: 41133500 + - X: 30860600 + Y: 41486100 + - X: 30860600 + Y: 41486100 + - X: 33430100 + Y: 43661100 + - X: 36090000 + Y: 46289500 + - X: 38174200 + Y: 48503200 + - X: 39016900 + Y: 49434100 + - X: 39016900 + Y: 49434100 + - X: 43785600 + Y: 46795300 + - X: 43785600 + Y: 46795300 + - X: 42386096 + Y: 45714796 + - X: 39085000 + Y: 43101000 + - X: 35228200 + Y: 39895300 + - X: 32161600 + Y: 37039400 + - m_Collider: {fileID: 2093986024} + m_ColliderPaths: + - - X: 53526904 + Y: 104636496 + - X: 48287700 + Y: 102486800 + - X: 46365304 + Y: 99657000 + - X: 46289900 + Y: 97192496 + - X: 46591400 + Y: 96138600 + - X: 46591400 + Y: 96138600 + - X: 48563504 + Y: 97332896 + - X: 53184304 + Y: 99298800 + - X: 58510104 + Y: 99611104 + - X: 62597504 + Y: 95844592 + - X: 62597504 + Y: 95844592 + - X: 58854704 + Y: 93720704 + - X: 57354304 + Y: 92865000 + - X: 57252304 + Y: 92291096 + - X: 57704600 + Y: 91012696 + - X: 57704600 + Y: 91012696 + - X: 61734404 + Y: 89211304 + - X: 61382004 + Y: 85684192 + - X: 59257000 + Y: 82241000 + - X: 57968804 + Y: 80691096 + - X: 57968804 + Y: 80691096 + - X: 58859500 + Y: 80957992 + - X: 61040600 + Y: 81408904 + - X: 63775900 + Y: 81519296 + - X: 66329004 + Y: 80764296 + - X: 66329004 + Y: 80764296 + - X: 63188500 + Y: 78923096 + - X: 62524204 + Y: 77861704 + - X: 63060904 + Y: 77375096 + - X: 63523200 + Y: 77258496 + - X: 63523200 + Y: 77258496 + - X: 64719400 + Y: 77847704 + - X: 67399000 + Y: 78724200 + - X: 70198504 + Y: 78550896 + - X: 71754104 + Y: 75991200 + - X: 71754104 + Y: 75991200 + - X: 69305800 + Y: 76296304 + - X: 68450704 + Y: 75576800 + - X: 68505104 + Y: 74563296 + - X: 68785096 + Y: 73986600 + - X: 68785096 + Y: 73986600 + - X: 70062904 + Y: 72758000 + - X: 71110904 + Y: 70970200 + - X: 71477504 + Y: 68875600 + - X: 70711104 + Y: 66727100 + - X: 70711104 + Y: 66727100 + - X: 69387000 + Y: 69581496 + - X: 68173104 + Y: 69898704 + - X: 67286000 + Y: 69069296 + - X: 66942200 + Y: 68483800 + - X: 66942200 + Y: 68483800 + - X: 66404104 + Y: 68723400 + - X: 65128004 + Y: 69036000 + - X: 63621400 + Y: 68812400 + - X: 62391600 + Y: 67443296 + - X: 62391600 + Y: 67443296 + - X: 65338200 + Y: 67161496 + - X: 67230904 + Y: 66948000 + - X: 67917200 + Y: 66498500 + - X: 67244904 + Y: 65508600 + - X: 67244904 + Y: 65508600 + - X: 65596804 + Y: 64381100 + - X: 64195004 + Y: 63643500 + - X: 64146304 + Y: 63178196 + - X: 66557004 + Y: 62867400 + - X: 66557004 + Y: 62867400 + - X: 68309104 + Y: 60651096 + - X: 70638704 + Y: 59600200 + - X: 72348400 + Y: 58542400 + - X: 72241000 + Y: 56305900 + - X: 72241000 + Y: 56305900 + - X: 69884304 + Y: 57287796 + - X: 69943904 + Y: 56189900 + - X: 70867800 + Y: 54284996 + - X: 71103704 + Y: 52845696 + - X: 71103704 + Y: 52845696 + - X: 70247104 + Y: 52889400 + - X: 69096000 + Y: 53667396 + - X: 67902704 + Y: 53802996 + - X: 66919304 + Y: 51919400 + - X: 66919304 + Y: 51919400 + - X: 66369204 + Y: 53622300 + - X: 65944004 + Y: 55756596 + - X: 65099000 + Y: 57290896 + - X: 63289104 + Y: 57193700 + - X: 63289104 + Y: 57193700 + - X: 63066400 + Y: 57045800 + - X: 63642000 + Y: 55608300 + - X: 64422504 + Y: 53957100 + - X: 64814600 + Y: 53167696 + - X: 64814600 + Y: 53167696 + - X: 64350104 + Y: 53568096 + - X: 63439004 + Y: 54180800 + - X: 62805204 + Y: 54123000 + - X: 63172404 + Y: 52511700 + - X: 63172404 + Y: 52511700 + - X: 67356000 + Y: 50143796 + - X: 68929704 + Y: 47003500 + - X: 68540104 + Y: 43796300 + - X: 66833800 + Y: 41228000 + - X: 66833800 + Y: 41228000 + - X: 66374904 + Y: 44568500 + - X: 65536004 + Y: 45384596 + - X: 64519600 + Y: 43906700 + - X: 63528304 + Y: 40364700 + - X: 63528304 + Y: 40364700 + - X: 60828404 + Y: 43521796 + - X: 59037204 + Y: 43490096 + - X: 58043904 + Y: 42116600 + - X: 57737404 + Y: 41248296 + - X: 57737404 + Y: 41248296 + - X: 58300600 + Y: 41105500 + - X: 59656900 + Y: 40593596 + - X: 61306700 + Y: 39587800 + - X: 62750200 + Y: 37963000 + - X: 62750200 + Y: 37963000 + - X: 63401804 + Y: 36183600 + - X: 63309304 + Y: 34837700 + - X: 62923404 + Y: 33985896 + - X: 62694604 + Y: 33688496 + - X: 62694604 + Y: 33688496 + - X: 62209000 + Y: 34183896 + - X: 60996104 + Y: 35104400 + - X: 59421600 + Y: 35601000 + - X: 57851200 + Y: 34825100 + - X: 57851200 + Y: 34825100 + - X: 58781800 + Y: 33813800 + - X: 59489704 + Y: 32974796 + - X: 59894404 + Y: 32326698 + - X: 59915604 + Y: 31888400 + - X: 59915604 + Y: 31888400 + - X: 58695704 + Y: 30636496 + - X: 56938800 + Y: 29419298 + - X: 55360204 + Y: 28497600 + - X: 54675104 + Y: 28132400 + - X: 54675104 + Y: 28132400 + - X: 53965600 + Y: 28383398 + - X: 52320204 + Y: 29027600 + - X: 50463004 + Y: 29901900 + - X: 49118604 + Y: 30843000 + - X: 49118604 + Y: 30843000 + - X: 49801904 + Y: 31749596 + - X: 51326004 + Y: 33293400 + - X: 51754904 + Y: 34958200 + - X: 49152204 + Y: 36227800 + - X: 49152204 + Y: 36227800 + - X: 49026604 + Y: 38420300 + - X: 48203804 + Y: 39691500 + - X: 47275900 + Y: 40279600 + - X: 46835004 + Y: 40422696 + - X: 46835004 + Y: 40422696 + - X: 46742300 + Y: 39362596 + - X: 46355400 + Y: 37202700 + - X: 45511304 + Y: 35473600 + - X: 44046704 + Y: 35705796 + - X: 44046704 + Y: 35705796 + - X: 42636700 + Y: 36212300 + - X: 41628704 + Y: 35057796 + - X: 40367900 + Y: 33401298 + - X: 38199504 + Y: 32401500 + - X: 38199504 + Y: 32401500 + - X: 39012204 + Y: 34909700 + - X: 39430904 + Y: 36856800 + - X: 38909804 + Y: 38128800 + - X: 36903304 + Y: 38612100 + - X: 36903304 + Y: 38612100 + - X: 36165804 + Y: 39518996 + - X: 35257104 + Y: 40374600 + - X: 33735704 + Y: 40521096 + - X: 31159902 + Y: 39300400 + - X: 31159902 + Y: 39300400 + - X: 31131404 + Y: 41102800 + - X: 31961102 + Y: 43643600 + - X: 31942102 + Y: 45193100 + - X: 29367302 + Y: 44021700 + - X: 29367302 + Y: 44021700 + - X: 25937602 + Y: 45952996 + - X: 24075404 + Y: 44534300 + - X: 22834000 + Y: 43649596 + - X: 21266604 + Y: 47183000 + - X: 21266604 + Y: 47183000 + - X: 19183802 + Y: 47038600 + - X: 17390202 + Y: 46411696 + - X: 15775602 + Y: 44891396 + - X: 14229403 + Y: 42067100 + - X: 14229403 + Y: 42067100 + - X: 11616702 + Y: 44877700 + - X: 8808402 + Y: 45090400 + - X: 5793202 + Y: 43960696 + - X: 2560102 + Y: 42743996 + - X: 2560102 + Y: 42743996 + - X: -276097 + Y: 43099900 + - X: -3193797 + Y: 44251400 + - X: -5875697 + Y: 44294996 + - X: -8004098 + Y: 41326900 + - X: -8004098 + Y: 41326900 + - X: -12135597 + Y: 44426500 + - X: -16000297 + Y: 44829100 + - X: -19670698 + Y: 43850800 + - X: -23218996 + Y: 42807800 + - X: -23218996 + Y: 42807800 + - X: -24656798 + Y: 42031396 + - X: -25315296 + Y: 40556396 + - X: -26041698 + Y: 38516296 + - X: -27682798 + Y: 36044496 + - X: -27682798 + Y: 36044496 + - X: -29883998 + Y: 39036600 + - X: -31623898 + Y: 38560700 + - X: -33185796 + Y: 36107000 + - X: -34852496 + Y: 33165498 + - X: -34852496 + Y: 33165498 + - X: -36644196 + Y: 32264400 + - X: -38425500 + Y: 32539796 + - X: -39543000 + Y: 31437096 + - X: -39343200 + Y: 26401796 + - X: -39343200 + Y: 26401796 + - X: -42936596 + Y: 25047298 + - X: -44091996 + Y: 24149298 + - X: -44322896 + Y: 22659398 + - X: -45142700 + Y: 19529100 + - X: -45142700 + Y: 19529100 + - X: -47167096 + Y: 23895398 + - X: -46979200 + Y: 27561398 + - X: -45453000 + Y: 31228900 + - X: -43462496 + Y: 35599300 + - X: -43462496 + Y: 35599300 + - X: -44298196 + Y: 36835900 + - X: -45261196 + Y: 38366200 + - X: -47017800 + Y: 38683800 + - X: -50234500 + Y: 36282300 + - X: -50234500 + Y: 36282300 + - X: -51242400 + Y: 39263200 + - X: -52052196 + Y: 40267496 + - X: -53378196 + Y: 38854500 + - X: -55934796 + Y: 34583896 + - X: -55934796 + Y: 34583896 + - X: -57545996 + Y: 39718400 + - X: -55375300 + Y: 43817396 + - X: -51572200 + Y: 46932896 + - X: -48286300 + Y: 49116896 + - X: -48286300 + Y: 49116896 + - X: -48674096 + Y: 49425696 + - X: -49929896 + Y: 49199800 + - X: -51794396 + Y: 48939600 + - X: -54007696 + Y: 49145500 + - X: -54007696 + Y: 49145500 + - X: -54619600 + Y: 50511400 + - X: -54890300 + Y: 52454900 + - X: -55967096 + Y: 52544500 + - X: -58997196 + Y: 48348900 + - X: -58997196 + Y: 48348900 + - X: -61488400 + Y: 52436400 + - X: -60849996 + Y: 57074500 + - X: -57650700 + Y: 60989800 + - X: -52459196 + Y: 62909096 + - X: -52459196 + Y: 62909096 + - X: -51759000 + Y: 64404096 + - X: -51258596 + Y: 66370200 + - X: -52423296 + Y: 67574304 + - X: -56718596 + Y: 66783400 + - X: -56718596 + Y: 66783400 + - X: -57300496 + Y: 66538000 + - X: -58364796 + Y: 65164900 + - X: -59931796 + Y: 62751196 + - X: -62021300 + Y: 59383796 + - X: -62021300 + Y: 59383796 + - X: -62356596 + Y: 61700400 + - X: -61699300 + Y: 66034196 + - X: -60450196 + Y: 70898000 + - X: -59010196 + Y: 74804600 + - X: -59010196 + Y: 74804600 + - X: -54870000 + Y: 76095096 + - X: -51912900 + Y: 76257104 + - X: -50138696 + Y: 75904200 + - X: -49547296 + Y: 75650200 + - X: -49547296 + Y: 75650200 + - X: -48615300 + Y: 76422800 + - X: -47180000 + Y: 78132800 + - X: -47282396 + Y: 79868296 + - X: -50963496 + Y: 80717496 + - X: -50963496 + Y: 80717496 + - X: -50409900 + Y: 82918504 + - X: -49172696 + Y: 85720104 + - X: -49371996 + Y: 87769600 + - X: -53127600 + Y: 87714096 + - X: -53127600 + Y: 87714096 + - X: -50386300 + Y: 91286400 + - X: -46233996 + Y: 92434904 + - X: -42443000 + Y: 92292904 + - X: -40785600 + Y: 91993696 + - X: -40785600 + Y: 91993696 + - X: -40549696 + Y: 92365200 + - X: -40221996 + Y: 93358800 + - X: -40372696 + Y: 94793192 + - X: -41572000 + Y: 96487200 + - X: -41572000 + Y: 96487200 + - X: -40587696 + Y: 98116304 + - X: -38592696 + Y: 99873600 + - X: -37871700 + Y: 101434192 + - X: -40709000 + Y: 102473096 + - X: -40709000 + Y: 102473096 + - X: -36820296 + Y: 104457496 + - X: -33224698 + Y: 104550000 + - X: -30582698 + Y: 103820696 + - X: -29555296 + Y: 103339800 + - X: -29555296 + Y: 103339800 + - X: -28853198 + Y: 103458592 + - X: -27992696 + Y: 104168104 + - X: -28842496 + Y: 105997800 + - X: -33271198 + Y: 109477400 + - X: -33271198 + Y: 109477400 + - X: -28534898 + Y: 111245000 + - X: -23670898 + Y: 110694000 + - X: -19875298 + Y: 109289200 + - X: -18344398 + Y: 108495400 + - X: -18344398 + Y: 108495400 + - X: -17212898 + Y: 109008904 + - X: -15219498 + Y: 110767696 + - X: -14465498 + Y: 114099200 + - X: -17052498 + Y: 119331000 + - X: -17052498 + Y: 119331000 + - X: -12105098 + Y: 119241400 + - X: -7112097 + Y: 115413000 + - X: -3252098 + Y: 110886296 + - X: -1703597 + Y: 108701800 + - X: -1703597 + Y: 108701800 + - X: 192002 + Y: 110581400 + - X: 4758402 + Y: 114663600 + - X: 10315402 + Y: 118613888 + - X: 15182803 + Y: 120097600 + - X: 15182803 + Y: 120097600 + - X: 10761402 + Y: 113644496 + - X: 10690702 + Y: 110168296 + - X: 12477002 + Y: 108753792 + - X: 13626602 + Y: 108485696 + - X: 13626602 + Y: 108485696 + - X: 14563602 + Y: 109799096 + - X: 17064902 + Y: 112616800 + - X: 20666304 + Y: 115255296 + - X: 24903302 + Y: 116030904 + - X: 24903302 + Y: 116030904 + - X: 22959304 + Y: 111653496 + - X: 25210802 + Y: 108907296 + - X: 28717702 + Y: 107484896 + - X: 30540002 + Y: 107079096 + - X: 30540002 + Y: 107079096 + - X: 31814902 + Y: 108190000 + - X: 34864000 + Y: 110627896 + - X: 38524004 + Y: 113050896 + - X: 41631704 + Y: 114117200 + - X: 41631704 + Y: 114117200 + - X: 39719204 + Y: 110318296 + - X: 40320900 + Y: 107597104 + - X: 41881200 + Y: 105913096 + - X: 42844600 + Y: 105225600 + - X: 42844600 + Y: 105225600 + - X: 44903404 + Y: 105989096 + - X: 47369304 + Y: 107437200 + - X: 50243400 + Y: 107632296 + - X: 53526904 + Y: 104636496 + m_CompositePaths: + m_Paths: + - - {x: 1.30861, y: -1.88055} + - {x: 1.18721, y: -1.62861} + - {x: 1.0408, y: -1.2970002} + - {x: 0.91511, y: -0.95794} + - {x: 0.85385, y: -0.63485} + - {x: 0.84492004, y: -0.2948} + - {x: 0.85034, y: 0.07453} + - {x: 0.83215, y: 0.48545} + - {x: 0.8246, y: 0.6688699} + - {x: 0.83004004, y: 0.85498} + - {x: 0.8378499, y: 1.03644} + - {x: 0.8374099, y: 1.2059001} + - {x: 0.82316, y: 1.42258} + - {x: 0.81639004, y: 1.615} + - {x: 0.8363999, y: 1.78565} + - {x: 0.90247, y: 1.93701} + - {x: 1.0656102, y: 2.0425603} + - {x: 1.1781, y: 2.14336} + - {x: 1.24321, y: 2.21888} + - {x: 1.26419, y: 2.24861} + - {x: 1.27064, y: 2.31219} + - {x: 1.3154, y: 2.4670703} + - {x: 1.43665, y: 2.65946} + - {x: 1.67252, y: 2.83557} + - {x: 1.85335, y: 2.9437} + - {x: 2.04345, y: 3.07924} + - {x: 2.25361, y: 3.22345} + - {x: 2.49458, y: 3.3575602} + - {x: 2.69993, y: 3.45} + - {x: 2.89128, y: 3.53323} + - {x: 3.06467, y: 3.61522} + - {x: 3.21616, y: 3.7039402} + - {x: 3.52282, y: 3.98953} + - {x: 3.5513926, y: 4.013279} + - {x: 3.6165805, y: 3.9518995} + - {x: 3.6903305, y: 3.86121} + - {x: 3.8909805, y: 3.81288} + - {x: 3.9430904, y: 3.6856802} + - {x: 3.9012206, y: 3.4909701} + - {x: 3.8199503, y: 3.24015} + - {x: 4.03679, y: 3.3401299} + - {x: 4.1628704, y: 3.5057797} + - {x: 4.26367, y: 3.6212301} + - {x: 4.4046702, y: 3.5705795} + - {x: 4.5511303, y: 3.54736} + - {x: 4.63554, y: 3.7202702} + - {x: 4.67423, y: 3.9362597} + - {x: 4.6835003, y: 4.0422697} + - {x: 4.72759, y: 4.02796} + - {x: 4.8203807, y: 3.96915} + - {x: 4.9026604, y: 3.84203} + - {x: 4.9152203, y: 3.62278} + - {x: 5.1754904, y: 3.49582} + - {x: 5.1326003, y: 3.32934} + - {x: 4.9801903, y: 3.1749597} + - {x: 4.9118605, y: 3.0843} + - {x: 5.0463004, y: 2.99019} + - {x: 5.2320204, y: 2.90276} + - {x: 5.39656, y: 2.8383398} + - {x: 5.4675107, y: 2.81324} + - {x: 5.5360203, y: 2.84976} + - {x: 5.69388, y: 2.9419298} + - {x: 5.8695703, y: 3.0636497} + - {x: 5.9915605, y: 3.1888402} + - {x: 5.9894404, y: 3.2326698} + - {x: 5.9489703, y: 3.2974796} + - {x: 5.87818, y: 3.38138} + - {x: 5.78512, y: 3.48251} + - {x: 5.94216, y: 3.5601} + - {x: 6.0996103, y: 3.51044} + - {x: 6.2209, y: 3.4183896} + - {x: 6.2694607, y: 3.3688498} + - {x: 6.2923403, y: 3.3985896} + - {x: 6.3309307, y: 3.4837701} + - {x: 6.3401804, y: 3.61836} + - {x: 6.27502, y: 3.7963} + - {x: 6.13067, y: 3.95878} + - {x: 5.96569, y: 4.0593596} + - {x: 5.83006, y: 4.11055} + - {x: 5.7737403, y: 4.12483} + - {x: 5.8043904, y: 4.21166} + - {x: 5.9037204, y: 4.3490095} + - {x: 6.0828404, y: 4.3521795} + - {x: 6.3528304, y: 4.03647} + - {x: 6.45196, y: 4.39067} + - {x: 6.5536003, y: 4.53846} + - {x: 6.6374903, y: 4.45685} + - {x: 6.68338, y: 4.1228} + - {x: 6.8540106, y: 4.37963} + - {x: 6.8929706, y: 4.7003503} + - {x: 6.7356, y: 5.0143795} + - {x: 6.31724, y: 5.25117} + - {x: 6.2805204, y: 5.4123} + - {x: 6.3439007, y: 5.41808} + - {x: 6.4350104, y: 5.3568096} + - {x: 6.48146, y: 5.3167696} + - {x: 6.4422503, y: 5.39571} + - {x: 6.3642, y: 5.56083} + - {x: 6.30664, y: 5.70458} + - {x: 6.3289104, y: 5.71937} + - {x: 6.5099, y: 5.7290897} + - {x: 6.5944004, y: 5.5756598} + - {x: 6.6369205, y: 5.3622303} + - {x: 6.6919303, y: 5.19194} + - {x: 6.7902703, y: 5.3802996} + - {x: 6.9096003, y: 5.3667397} + - {x: 7.0247107, y: 5.28894} + - {x: 7.1103706, y: 5.2845697} + - {x: 7.08678, y: 5.4284997} + - {x: 6.9943905, y: 5.61899} + - {x: 6.9884305, y: 5.72878} + - {x: 7.2241, y: 5.63059} + - {x: 7.23484, y: 5.85424} + - {x: 7.0638704, y: 5.96002} + - {x: 6.8309107, y: 6.0651097} + - {x: 6.6557007, y: 6.2867403} + - {x: 6.4146304, y: 6.3178196} + - {x: 6.4195004, y: 6.36435} + - {x: 6.5596805, y: 6.43811} + - {x: 6.7244906, y: 6.55086} + - {x: 6.79172, y: 6.64985} + - {x: 6.7230906, y: 6.6948} + - {x: 6.53382, y: 6.71615} + - {x: 6.23916, y: 6.7443295} + - {x: 6.36214, y: 6.88124} + - {x: 6.5128007, y: 6.9036} + - {x: 6.6404104, y: 6.87234} + - {x: 6.69422, y: 6.84838} + - {x: 6.7286, y: 6.9069295} + - {x: 6.8173103, y: 6.9898705} + - {x: 6.9387, y: 6.95815} + - {x: 7.0711102, y: 6.67271} + - {x: 7.1477504, y: 6.88756} + - {x: 7.1110907, y: 7.09702} + - {x: 7.0062904, y: 7.2758} + - {x: 6.8785095, y: 7.39866} + - {x: 6.8505106, y: 7.45633} + - {x: 6.8450704, y: 7.55768} + - {x: 6.93058, y: 7.6296306} + - {x: 7.1754103, y: 7.59912} + - {x: 7.0198503, y: 7.8550897} + - {x: 6.7399, y: 7.8724203} + - {x: 6.47194, y: 7.7847705} + - {x: 6.35232, y: 7.7258496} + - {x: 6.3060904, y: 7.7375097} + - {x: 6.2524204, y: 7.7861705} + - {x: 6.31885, y: 7.8923097} + - {x: 6.6329007, y: 8.076429} + - {x: 6.37759, y: 8.15193} + - {x: 6.10406, y: 8.14089} + - {x: 5.88595, y: 8.095799} + - {x: 5.7968802, y: 8.06911} + - {x: 5.9257, y: 8.2241} + - {x: 6.1382003, y: 8.568419} + - {x: 6.1734405, y: 8.92113} + - {x: 5.77046, y: 9.10127} + - {x: 5.7252307, y: 9.22911} + - {x: 5.7354302, y: 9.2865} + - {x: 5.8854704, y: 9.37207} + - {x: 6.2597504, y: 9.584459} + - {x: 5.8510103, y: 9.96111} + - {x: 5.3184304, y: 9.92988} + - {x: 4.8563504, y: 9.73329} + - {x: 4.65914, y: 9.61386} + - {x: 4.62899, y: 9.71925} + - {x: 4.6365304, y: 9.9657} + - {x: 4.82877, y: 10.24868} + - {x: 5.3526907, y: 10.46365} + - {x: 5.02434, y: 10.763229} + - {x: 4.7369304, y: 10.74372} + - {x: 4.49034, y: 10.598909} + - {x: 4.28446, y: 10.52256} + - {x: 4.18812, y: 10.59131} + - {x: 4.03209, y: 10.75971} + - {x: 3.9719205, y: 11.03183} + - {x: 4.1631703, y: 11.41172} + - {x: 3.8524005, y: 11.30509} + - {x: 3.4864001, y: 11.06279} + - {x: 3.1814902, y: 10.819} + - {x: 3.0540001, y: 10.70791} + - {x: 2.8717701, y: 10.748489} + - {x: 2.5210803, y: 10.89073} + - {x: 2.2959304, y: 11.16535} + - {x: 2.4903302, y: 11.60309} + - {x: 2.0666304, y: 11.52553} + - {x: 1.7064903, y: 11.261681} + - {x: 1.4563602, y: 10.97991} + - {x: 1.3626602, y: 10.84857} + - {x: 1.2477002, y: 10.87538} + - {x: 1.0690702, y: 11.0168295} + - {x: 1.0761402, y: 11.3644495} + - {x: 1.5182803, y: 12.00976} + - {x: 1.0315402, y: 11.861389} + - {x: 0.4758402, y: 11.46636} + - {x: 0.0192002, y: 11.05814} + - {x: -0.1703597, y: 10.87018} + - {x: -0.3252098, y: 11.08863} + - {x: -0.7112097, y: 11.5413} + - {x: -1.2105098, y: 11.92414} + - {x: -1.7052498, y: 11.9331} + - {x: -1.4465498, y: 11.40992} + - {x: -1.5219498, y: 11.07677} + - {x: -1.7212899, y: 10.90089} + - {x: -1.8344399, y: 10.84954} + - {x: -1.9875299, y: 10.92892} + - {x: -2.3670897, y: 11.0694} + - {x: -2.8534899, y: 11.1245} + - {x: -3.3271198, y: 10.947741} + - {x: -2.8842497, y: 10.59978} + - {x: -2.7992697, y: 10.416811} + - {x: -2.88532, y: 10.34586} + - {x: -2.9555297, y: 10.333981} + - {x: -3.0582697, y: 10.38207} + - {x: -3.32247, y: 10.455} + - {x: -3.6820297, y: 10.445749} + - {x: -4.0709, y: 10.24731} + - {x: -3.78717, y: 10.143419} + - {x: -3.8592696, y: 9.98736} + - {x: -4.0587697, y: 9.81163} + - {x: -4.1572, y: 9.64872} + - {x: -4.0372696, y: 9.47932} + - {x: -4.0221996, y: 9.33588} + - {x: -4.05497, y: 9.23652} + - {x: -4.07856, y: 9.199369} + - {x: -4.2443, y: 9.229291} + - {x: -4.6233997, y: 9.24349} + - {x: -5.03863, y: 9.12864} + - {x: -5.31276, y: 8.77141} + - {x: -4.9371996, y: 8.77696} + - {x: -4.9172697, y: 8.57201} + - {x: -5.04099, y: 8.29185} + - {x: -5.0963497, y: 8.07175} + - {x: -4.7282395, y: 7.9868298} + - {x: -4.718, y: 7.81328} + - {x: -4.86153, y: 7.64228} + - {x: -4.9547296, y: 7.56502} + - {x: -5.01387, y: 7.5904202} + - {x: -5.19129, y: 7.6257105} + - {x: -5.487, y: 7.6095095} + - {x: -5.9010196, y: 7.48046} + - {x: -6.0450196, y: 7.0898} + - {x: -6.16993, y: 6.60342} + - {x: -6.2356596, y: 6.17004} + - {x: -6.20213, y: 5.93838} + - {x: -5.99318, y: 6.27512} + - {x: -5.8364797, y: 6.51649} + - {x: -5.7300496, y: 6.6538} + - {x: -5.6718597, y: 6.67834} + - {x: -5.2423296, y: 6.7574306} + - {x: -5.1258597, y: 6.63702} + - {x: -5.1759, y: 6.4404097} + - {x: -5.2459197, y: 6.29091} + - {x: -5.76507, y: 6.09898} + - {x: -6.0849996, y: 5.70745} + - {x: -6.14884, y: 5.24364} + - {x: -5.8997197, y: 4.83489} + - {x: -5.5967097, y: 5.25445} + - {x: -5.48903, y: 5.24549} + - {x: -5.46196, y: 5.05114} + - {x: -5.4007697, y: 4.91455} + - {x: -5.1794395, y: 4.89396} + - {x: -4.9929895, y: 4.91998} + - {x: -4.8674097, y: 4.9425697} + - {x: -4.82863, y: 4.9116898} + - {x: -5.15722, y: 4.6932898} + - {x: -5.53753, y: 4.3817396} + - {x: -5.7545996, y: 3.9718401} + - {x: -5.5934796, y: 3.4583898} + - {x: -5.3378196, y: 3.8854501} + - {x: -5.2052197, y: 4.0267496} + - {x: -5.12424, y: 3.92632} + - {x: -5.02345, y: 3.62823} + - {x: -4.70178, y: 3.86838} + - {x: -4.5261197, y: 3.83662} + - {x: -4.4298196, y: 3.68359} + - {x: -4.3462496, y: 3.55993} + - {x: -4.5453, y: 3.12289} + - {x: -4.69792, y: 2.7561398} + - {x: -4.7167096, y: 2.3895397} + - {x: -4.51427, y: 1.9529101} + - {x: -4.4322896, y: 2.2659397} + - {x: -4.4091997, y: 2.4149299} + - {x: -4.2936597, y: 2.5047297} + - {x: -3.93432, y: 2.6401796} + - {x: -3.9543002, y: 3.1437097} + - {x: -3.84255, y: 3.2539797} + - {x: -3.6644197, y: 3.22644} + - {x: -3.4852498, y: 3.3165498} + - {x: -3.3185797, y: 3.6107001} + - {x: -3.1623898, y: 3.85607} + - {x: -2.9883997, y: 3.90366} + - {x: -2.7682798, y: 3.6044497} + - {x: -2.6041698, y: 3.8516297} + - {x: -2.5727057, y: 3.9399972} + - {x: -2.55871, y: 3.8976} + - {x: -2.4629, y: 3.7576602} + - {x: -2.34351, y: 3.64414} + - {x: -2.2202601, y: 3.56443} + - {x: -2.0843, y: 3.52685} + - {x: -1.93937, y: 3.52264} + - {x: -1.82409, y: 3.53352} + - {x: -1.77708, y: 3.54121} + - {x: -1.67521, y: 3.48334} + - {x: -1.43705, y: 3.32499} + - {x: -1.16376, y: 3.08906} + - {x: -0.95652, y: 2.79842} + - {x: -0.82614, y: 2.49767} + - {x: -0.72431, y: 2.21223} + - {x: -0.66352, y: 1.9362301} + - {x: -0.65627, y: 1.66382} + - {x: -0.66352, y: 1.52021} + - {x: -0.66822, y: 1.36293} + - {x: -0.68064, y: 1.19016} + - {x: -0.71104, y: 1.00007} + - {x: -0.76428, y: 0.79808} + - {x: -0.82777, y: 0.59984} + - {x: -0.88349, y: 0.42842} + - {x: -0.91342, y: 0.30692} + - {x: -0.98024, y: -0.12525} + - {x: -1.06854, y: -0.60328} + - {x: -1.14555, y: -0.99038} + - {x: -1.1785, y: -1.14981} + - {x: -1.51457, y: -1.9126201} + - {x: 1.3592402, y: -1.98058} + - - {x: 1.15838, y: 3.79652} + - {x: 1.15891, y: 3.82494} + - {x: 1.1612, y: 3.89435} + - {x: 1.16627, y: 3.98099} + - {x: 1.17512, y: 4.06108} + - {x: 1.2087802, y: 4.17203} + - {x: 1.26993, y: 4.33702} + - {x: 1.2787883, y: 4.3617806} + - {x: 1.4229404, y: 4.20671} + - {x: 1.5775602, y: 4.4891396} + - {x: 1.7390202, y: 4.6411695} + - {x: 1.9183803, y: 4.7038603} + - {x: 2.0193107, y: 4.710858} + - {x: 1.99737, y: 4.67211} + - {x: 1.95797, y: 4.57515} + - {x: 1.9258, y: 4.46981} + - {x: 1.8859, y: 4.36773} + - {x: 1.82336, y: 4.28055} + - {x: 1.61085, y: 4.06734} + - {x: 1.46142, y: 3.90428} + - {x: 1.37316, y: 3.80006} + - {x: 1.34416, y: 3.76339} + - - {x: 1.82514, y: 3.62554} + - {x: 1.9121001, y: 3.71337} + - {x: 2.03168, y: 3.845} + - {x: 2.16311, y: 4.00834} + - {x: 2.24425, y: 4.13729} + - {x: 2.31304, y: 4.27313} + - {x: 2.38302, y: 4.40931} + - {x: 2.4159374, y: 4.4598274} + - {x: 2.5937603, y: 4.5952997} + - {x: 2.9367301, y: 4.40217} + - {x: 3.1942103, y: 4.51931} + - {x: 3.1961102, y: 4.36436} + - {x: 3.1407835, y: 4.1949315} + - {x: 3.08606, y: 4.14861} + - {x: 3.0357502, y: 4.11335} + - {x: 2.96842, y: 4.0708} + - {x: 2.88942, y: 4.02926} + - {x: 2.80409, y: 3.99704} + - {x: 2.74981, y: 3.98915} + - {x: 2.69645, y: 3.9899302} + - {x: 2.64528, y: 3.98951} + - {x: 2.59753, y: 3.9779902} + - {x: 2.3026001, y: 3.84251} + - {x: 2.04432, y: 3.71875} + - {x: 1.86115, y: 3.6285} + - {x: 1.79154, y: 3.59357} + - - {x: 0.41903, y: 4.0602503} + - {x: 0.42908, y: 4.10228} + - {x: 0.4501, y: 4.20424} + - {x: 0.4684, y: 4.32995} + - {x: 0.4688049, y: 4.3544803} + - {x: 0.5793202, y: 4.3960695} + - {x: 0.8275243, y: 4.489064} + - {x: 0.8225, y: 4.42996} + - {x: 0.81181, y: 4.31027} + - {x: 0.79007, y: 4.18274} + - {x: 0.74907, y: 4.06666} + - {x: 0.68429, y: 3.97576} + - {x: 0.6126, y: 3.91365} + - {x: 0.55453, y: 3.87806} + - {x: 0.53061, y: 3.8667} + - - {x: -0.69092, y: 3.57328} + - {x: -0.87801003, y: 3.69178} + - {x: -1.09309, y: 3.8494} + - {x: -1.25701, y: 4.01351} + - {x: -1.3018, y: 4.06892} + - {x: -1.3526701, y: 4.15224} + - {x: -1.3799701, y: 4.27281} + - {x: -1.3540602, y: 4.43994} + - {x: -1.361107, y: 4.4580207} + - {x: -1.2135597, y: 4.44265} + - {x: -1.0708119, y: 4.335555} + - {x: -1.02479, y: 4.22952} + - {x: -0.97351, y: 4.15206} + - {x: -0.9117, y: 4.08876} + - {x: -0.84944004, y: 4.02853} + - {x: -0.79677004, y: 3.9602501} + - {x: -0.71479, y: 3.8020601} + - {x: -0.65681, y: 3.6630201} + - {x: -0.62235, y: 3.56415} + - {x: -0.61097, y: 3.52652} + - - {x: -0.20596, y: 3.7745001} + - {x: -0.21316001, y: 3.80037} + - {x: -0.23526001, y: 3.86713} + - {x: -0.27297, y: 3.9584901} + - {x: -0.32701, y: 4.05818} + - {x: -0.3738, y: 4.11414} + - {x: -0.42709002, y: 4.16381} + - {x: -0.47711, y: 4.22039} + - {x: -0.51412, y: 4.29709} + - {x: -0.5394849, y: 4.428718} + - {x: -0.31937972, y: 4.42514} + - {x: -0.0276097, y: 4.30999} + - {x: 0.0387039, y: 4.3016686} + - {x: 0.03482, y: 4.24525} + - {x: 0.00641, y: 4.11975} + - {x: -0.024120001, y: 4.01835} + - {x: -0.03839, y: 3.97665} + - {x: 0.04144, y: 3.53247} + - - {x: -2.05352, y: 3.9288} + - {x: -2.1161501, y: 3.973} + - {x: -2.2004201, y: 4.07723} + - {x: -2.26795, y: 4.22291} + - {x: -2.2732465, y: 4.295081} + - {x: -1.9670699, y: 4.38508} + - {x: -1.8272076, y: 4.4223585} + - {x: -1.79516, y: 4.3721} + - {x: -1.74166, y: 4.22471} + - {x: -1.73502, y: 4.08752} + - {x: -1.74974, y: 3.9863} + - {x: -1.7603201, y: 3.94683} + - {x: -1.78528, y: 3.93974} + - {x: -1.85133, y: 3.92641} + - {x: -1.94517, y: 3.91878} + m_VertexDistance: 0.0005 +--- !u!50 &1192624869 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192624865} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!1971053207 &1192624870 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192624865} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -47 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: a94adaf94669646788de8f639270804a, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1192624871 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192624865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8e3fa9c7ff3ad4112a30689e933384ed, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 4 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &1192624872 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192624865} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 22.6, y: 16.98, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2093986028} + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1198078828 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1198078835} + - component: {fileID: 1198078834} + - component: {fileID: 1198078833} + - component: {fileID: 1198078832} + - component: {fileID: 1198078831} + - component: {fileID: 1198078830} + - component: {fileID: 1198078829} + m_Layer: 0 + m_Name: Tree (Package) (Geometry Collider) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1198078829 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1198078828} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0ecd6fe4dd55d640bd7ef3235e0e425, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateCollider: 0 +--- !u!60 &1198078830 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1198078828} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 4.143064, y: 4.496742} + - {x: 3.6492512, y: 4.0971575} + - {x: 3.2161665, y: 3.7039447} + - {x: 3.0091143, y: 3.5875397} + - {x: 2.4945831, y: 3.3575697} + - {x: 2.1806664, y: 3.1755822} + - {x: 1.9151552, y: 2.9867663} + - {x: 1.6725292, y: 2.835577} + - {x: 1.3853858, y: 2.5944917} + - {x: 1.2794213, y: 2.3563356} + - {x: 1.2641973, y: 2.2486148} + - {x: 1.1085753, y: 2.077706} + - {x: 0.9024763, y: 1.9370184} + - {x: 0.82556903, y: 1.7310371} + - {x: 0.81912863, y: 1.4893} + - {x: 0.83741856, y: 1.205905} + - {x: 0.8254995, y: 0.73097295} + - {x: 0.84929025, y: -0.052593216} + - {x: 0.84694093, y: -0.52399516} + - {x: 0.91511345, y: -0.9579406} + - {x: 1.0895627, y: -1.4119349} + - {x: 1.3592415, y: -1.9805832} + - {x: -1.5145779, y: -1.9126239} + - {x: -1.178504, y: -1.1498156} + - {x: -1.0089116, y: -0.28625655} + - {x: -0.91342354, y: 0.3069253} + - {x: -0.7852041, y: 0.7304487} + - {x: -0.711041, y: 1.000072} + - {x: -0.6750108, y: 1.2495863} + - {x: -0.6562767, y: 1.6638246} + - {x: -0.678456, y: 2.0275488} + - {x: -0.7884136, y: 2.4011207} + - {x: -0.95652676, y: 2.7984266} + - {x: -1.2525163, y: 3.174913} + - {x: -1.6059747, y: 3.4405956} + - {x: -1.7770863, y: 3.541214} + - {x: -2.0350854, y: 3.5226512} + - {x: -2.220262, y: 3.564436} + - {x: -2.384712, y: 3.678594} + - {x: -2.5306187, y: 3.8484783} + - {x: -2.6112013, y: 4.05661} + - {x: -2.8190165, y: 4.224651} + - {x: -3.0591974, y: 4.336563} + - {x: -3.1574554, y: 4.5612955} + - {x: -2.7904515, y: 4.7113476} + - {x: -2.6948276, y: 4.689101} + - {x: -2.4858437, y: 4.5957737} + - {x: -2.2803297, y: 4.391474} + - {x: -2.2496743, y: 4.170899} + - {x: -2.143732, y: 4.0019965} + - {x: -2.0535293, y: 3.9288006} + - {x: -1.911623, y: 3.9199603} + - {x: -1.7603226, y: 3.9468374} + - {x: -1.7355018, y: 4.1765747} + - {x: -1.7951679, y: 4.372101} + - {x: -2.236267, y: 5.0282946} + - {x: -1.6668215, y: 5.157666} + - {x: -1.4833484, y: 4.7636395} + - {x: -1.3540664, y: 4.439948} + - {x: -1.3753241, y: 4.22791} + - {x: -1.3195527, y: 4.093132} + - {x: -1.2570138, y: 4.0135155} + - {x: -1.0231755, y: 3.7945328} + - {x: -0.74529105, y: 3.606421} + - {x: -0.61097145, y: 3.5265284} + - {x: -0.69282657, y: 3.7525542} + - {x: -0.79677916, y: 3.9602566} + - {x: -0.9535828, y: 4.129941} + - {x: -1.024796, y: 4.2295275} + - {x: -1.1893249, y: 4.623741} + - {x: -1.2826447, y: 4.9772434} + - {x: -1.2740116, y: 5.2245064} + - {x: -0.58708763, y: 5.3985176} + - {x: -0.56699, y: 4.6160717} + - {x: -0.5141282, y: 4.297098} + - {x: -0.46140712, y: 4.1999507} + - {x: -0.32701302, y: 4.0581894} + - {x: -0.20596313, y: 3.7745} + - {x: 0.041446686, y: 3.5324764} + - {x: -0.038399696, y: 3.9766502} + - {x: 0.026730545, y: 4.20294} + - {x: 0.042672634, y: 4.3592806} + - {x: -0.037214503, y: 4.600496} + - {x: -0.24588203, y: 5.0692883} + - {x: 0.2021923, y: 5.1523314} + - {x: 0.39431575, y: 4.6833735} + - {x: 0.47027874, y: 4.4432325} + - {x: 0.46345338, y: 4.2876425} + - {x: 0.41903877, y: 4.060259} + - {x: 0.53061104, y: 3.866706} + - {x: 0.6601566, y: 3.9519782} + - {x: 0.7490721, y: 4.0666647} + - {x: 0.7990598, y: 4.224935} + - {x: 0.83037186, y: 4.522544} + - {x: 0.8774671, y: 4.7401037} + - {x: 0.969573, y: 5.026411} + - {x: 1.4917965, y: 5.0735054} + - {x: 1.4099395, y: 4.8206215} + - {x: 1.312921, y: 4.45475} + - {x: 1.175128, y: 4.061081} + - {x: 1.1583805, y: 3.7965221} + - {x: 1.3441639, y: 3.7633934} + - {x: 1.55413, y: 4.0069942} + - {x: 1.8233624, y: 4.280553} + - {x: 1.9009831, y: 4.4006796} + - {x: 1.9973726, y: 4.6721106} + - {x: 2.2609882, y: 5.106245} + - {x: 2.6144269, y: 4.962821} + - {x: 2.8487377, y: 4.85763} + - {x: 2.7632008, y: 4.7668557} + - {x: 2.608839, y: 4.6638155} + - {x: 2.4676914, y: 4.539255} + - {x: 2.3587303, y: 4.3642893} + - {x: 2.267888, y: 4.182132} + - {x: 2.1631107, y: 4.0083466} + - {x: 1.9894805, y: 3.797009} + - {x: 1.7915497, y: 3.5935783} + - {x: 2.2105408, y: 3.7988868} + - {x: 2.5975342, y: 3.977995} + - {x: 2.8040981, y: 3.9970493} + - {x: 3.0149384, y: 4.099575} + - {x: 3.0860624, y: 4.148615} + - {x: 3.4339652, y: 4.4529796} + - {x: 3.7584574, y: 4.786505} + - {x: 3.9016972, y: 4.94341} + - {x: 4.3785667, y: 4.67953} +--- !u!66 &1198078831 +CompositeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1198078828} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_GeometryType: 0 + m_GenerationType: 0 + m_EdgeRadius: 0 + m_ColliderPaths: + - m_Collider: {fileID: 53245461} + m_ColliderPaths: + - - X: 51060928 + Y: 29594918 + - X: 49118644 + Y: 30842996 + - X: 50312156 + Y: 32218832 + - X: 51853188 + Y: 34421672 + - X: 49152220 + Y: 36227732 + - X: 48800564 + Y: 38934596 + - X: 47560328 + Y: 40144700 + - X: 46835020 + Y: 40422612 + - X: 46654116 + Y: 38689176 + - X: 45853604 + Y: 35907556 + - X: 44046756 + Y: 35705792 + - X: 42288464 + Y: 35954688 + - X: 40856744 + Y: 33937620 + - X: 38199512 + Y: 32401500 + - X: 39222512 + Y: 35626684 + - X: 39221676 + Y: 37786804 + - X: 36903344 + Y: 38612012 + - X: 35903744 + Y: 39842364 + - X: 34338236 + Y: 40591636 + - X: 31159916 + Y: 39300364 + - X: 31396918 + Y: 41953040 + - X: 32148142 + Y: 44893480 + - X: 29367354 + Y: 44021644 + - X: 25189484 + Y: 45660504 + - X: 23237308 + Y: 43645312 + - X: 21266664 + Y: 47182952 + - X: 18559280 + Y: 46903504 + - X: 16300776 + Y: 45522700 + - X: 14229434 + Y: 42067052 + - X: 10702956 + Y: 45175188 + - X: 6821971 + Y: 44408888 + - X: 2560005 + Y: 42743980 + - X: -1255308 + Y: 43489288 + - X: -5027568 + Y: 44521068 + - X: -8004162 + Y: 41326820 + - X: -13449923 + Y: 44795332 + - X: -18464412 + Y: 44249068 + - X: -23219042 + Y: 42807732 + - X: -24921070 + Y: 41610752 + - X: -25739790 + Y: 39250864 + - X: -27682888 + Y: 36044444 + - X: -30501256 + Y: 39189676 + - X: -32667520 + Y: 37052604 + - X: -34852592 + Y: 33165402 + - X: -37271432 + Y: 32351552 + - X: -39284664 + Y: 32115422 + - X: -39343272 + Y: 26401720 + - X: -43517900 + Y: 24748988 + - X: -44255268 + Y: 23286486 + - X: -45142736 + Y: 19529076 + - X: -47307128 + Y: 25160484 + - X: -46056568 + Y: 29962882 + - X: -43462532 + Y: 35599236 + - X: -44572224 + Y: 37387752 + - X: -46302988 + Y: 38805652 + - X: -50234548 + Y: 36282204 + - X: -51499060 + Y: 39839324 + - X: -52834776 + Y: 39621172 + - X: -55934848 + Y: 34583828 + - X: -57136556 + Y: 41197216 + - X: -52888636 + Y: 46000404 + - X: -48286380 + Y: 49116888 + - X: -49009096 + Y: 49385004 + - X: -51121332 + Y: 48999192 + - X: -54007788 + Y: 49145440 + - X: -54691076 + Y: 51215084 + - X: -55447828 + Y: 52870628 + - X: -58997280 + Y: 48348876 + - X: -61595252 + Y: 53984108 + - X: -58966584 + Y: 59843556 + - X: -52459200 + Y: 62909040 + - X: -51497660 + Y: 65067992 + - X: -51759620 + Y: 67333696 + - X: -56718692 + Y: 66783332 + - X: -57600676 + Y: 66201272 + - X: -59352444 + Y: 63665968 + - X: -62021380 + Y: 59383744 + - X: -62227992 + Y: 62994284 + - X: -60907636 + Y: 69309624 + - X: -59010220 + Y: 74804648 + - X: -53752884 + Y: 76244272 + - X: -50598692 + Y: 76041240 + - X: -49547356 + Y: 75650288 + - X: -48092064 + Y: 76933744 + - X: -46951488 + Y: 79343256 + - X: -50963584 + Y: 80717528 + - X: -49968816 + Y: 83852520 + - X: -49015164 + Y: 87253560 + - X: -53127640 + Y: 87714136 + - X: -49071492 + Y: 91882600 + - X: -43557216 + Y: 92413696 + - X: -40785608 + Y: 91993760 + - X: -40422520 + Y: 92636272 + - X: -40234204 + Y: 94277328 + - X: -41572048 + Y: 96487216 + - X: -39922208 + Y: 98703936 + - X: -37829536 + Y: 100955984 + - X: -40709068 + Y: 102473192 + - X: -35556612 + Y: 104645752 + - X: -31316662 + Y: 104089088 + - X: -29555320 + Y: 103339824 + - X: -28491728 + Y: 103603336 + - X: -28253912 + Y: 105230768 + - X: -33271276 + Y: 109477408 + - X: -26868686 + Y: 111246616 + - X: -20948016 + Y: 109761944 + - X: -18344422 + Y: 108495480 + - X: -16540461 + Y: 109440664 + - X: -14449428 + Y: 112793752 + - X: -17052552 + Y: 119331056 + - X: -10387683 + Y: 118230568 + - X: -4340207 + Y: 112285176 + - X: -1703608 + Y: 108701824 + - X: 1500296 + Y: 111812704 + - X: 8456748 + Y: 117455984 + - X: 15182850 + Y: 120097600 + - X: 10377660 + Y: 112200224 + - X: 11829269 + Y: 109052800 + - X: 13626690 + Y: 108485776 + - X: 15246532 + Y: 110654360 + - X: 19372298 + Y: 114499664 + - X: 24903338 + Y: 116030976 + - X: 23388900 + Y: 110572072 + - X: 27590776 + Y: 107830984 + - X: 30540046 + Y: 107079184 + - X: 32691584 + Y: 108921472 + - X: 37307960 + Y: 112327784 + - X: 41631792 + Y: 114117200 + - X: 39717288 + Y: 109293544 + - X: 41350624 + Y: 106361736 + - X: 42844696 + Y: 105225640 + - X: 45680092 + Y: 106491448 + - X: 49239976 + Y: 107826128 + - X: 53526972 + Y: 104636528 + - X: 47351016 + Y: 101567480 + - X: 46200608 + Y: 97908888 + - X: 46591436 + Y: 96138696 + - X: 49905504 + Y: 98022248 + - X: 56776496 + Y: 99840472 + - X: 62597524 + Y: 95844648 + - X: 58147148 + Y: 93343336 + - X: 57183076 + Y: 92512064 + - X: 57704628 + Y: 91012720 + - X: 61975032 + Y: 88138008 + - X: 60001296 + Y: 83267736 + - X: 57968844 + Y: 80691144 + - X: 59479528 + Y: 81113824 + - X: 62848044 + Y: 81552760 + - X: 66329020 + Y: 80764328 + - X: 62754940 + Y: 78492816 + - X: 62827360 + Y: 77486136 + - X: 63523264 + Y: 77258520 + - X: 65515192 + Y: 78174008 + - X: 69336240 + Y: 78807880 + - X: 71754168 + Y: 75991232 + - X: 68877552 + Y: 76134320 + - X: 68428176 + Y: 74888712 + - X: 68785136 + Y: 73986568 + - X: 70460112 + Y: 72211688 + - X: 71458944 + Y: 69592224 + - X: 70711168 + Y: 66727008 + - X: 68959464 + Y: 69900392 + - X: 67532072 + Y: 69387256 + - X: 66942224 + Y: 68483744 + - X: 66035684 + Y: 68849504 + - X: 64117920 + Y: 68984032 + - X: 62391644 + Y: 67443224 + - X: 66093744 + Y: 67097704 + - X: 67831904 + Y: 66693272 + - X: 67244936 + Y: 65508520 + - X: 63943924 + Y: 63310248 + - X: 66557024 + Y: 62867356 + - X: 69080664 + Y: 60229148 + - X: 71921304 + Y: 58968056 + - X: 72241024 + Y: 56305856 + - X: 69712392 + Y: 57090020 + - X: 70559648 + Y: 54931068 + - X: 71103744 + Y: 52845648 + - X: 69883664 + Y: 53135088 + - X: 68289616 + Y: 53914088 + - X: 66919384 + Y: 51919364 + - X: 65461008 + Y: 56909720 + - X: 63289156 + Y: 57193640 + - X: 63198856 + Y: 56656728 + - X: 64814616 + Y: 53167600 + - X: 64060292 + Y: 53792280 + - X: 62941056 + Y: 54271192 + - X: 63172456 + Y: 52511672 + - X: 68138704 + Y: 49147976 + - X: 68848296 + Y: 44829188 + - X: 66833800 + Y: 41228000 + - X: 66127504 + Y: 45109576 + - X: 64865628 + Y: 44639972 + - X: 63528384 + Y: 40364656 + - X: 60135928 + Y: 43774260 + - X: 58293248 + Y: 42609420 + - X: 57737436 + Y: 41248236 + - X: 58689252 + Y: 40981976 + - X: 60755044 + Y: 39985636 + - X: 62750264 + Y: 37962932 + - X: 63431436 + Y: 35683776 + - X: 63056868 + Y: 34211160 + - X: 62694656 + Y: 33688436 + - X: 61867496 + Y: 34485384 + - X: 59964048 + Y: 35534896 + - X: 57851276 + Y: 34825012 + - X: 59798188 + Y: 32520294 + - X: 59915648 + Y: 31888332 + - X: 58134424 + Y: 30213976 + - X: 54675148 + Y: 28132386 + - m_Collider: {fileID: 1198078830} + m_ColliderPaths: + - - X: 41430640 + Y: 44967416 + - X: 36492512 + Y: 40971576 + - X: 32161664 + Y: 37039448 + - X: 30091142 + Y: 35875396 + - X: 24945832 + Y: 33575696 + - X: 21806664 + Y: 31755822 + - X: 19151552 + Y: 29867664 + - X: 16725292 + Y: 28355770 + - X: 13853858 + Y: 25944918 + - X: 12794213 + Y: 23563356 + - X: 12641973 + Y: 22486148 + - X: 11085753 + Y: 20777060 + - X: 9024763 + Y: 19370184 + - X: 8255690 + Y: 17310372 + - X: 8191286 + Y: 14893000 + - X: 8374185 + Y: 12059050 + - X: 8254995 + Y: 7309729 + - X: 8492903 + Y: -525932 + - X: 8469409 + Y: -5239951 + - X: 9151134 + Y: -9579406 + - X: 10895627 + Y: -14119349 + - X: 13592415 + Y: -19805832 + - X: -15145779 + Y: -19126238 + - X: -11785040 + Y: -11498156 + - X: -10089116 + Y: -2862565 + - X: -9134235 + Y: 3069253 + - X: -7852041 + Y: 7304487 + - X: -7110409 + Y: 10000720 + - X: -6750108 + Y: 12495863 + - X: -6562767 + Y: 16638246 + - X: -6784560 + Y: 20275488 + - X: -7884136 + Y: 24011206 + - X: -9565268 + Y: 27984266 + - X: -12525163 + Y: 31749130 + - X: -16059747 + Y: 34405956 + - X: -17770862 + Y: 35412140 + - X: -20350854 + Y: 35226512 + - X: -22202620 + Y: 35644360 + - X: -23847120 + Y: 36785940 + - X: -25306186 + Y: 38484784 + - X: -26112012 + Y: 40566100 + - X: -28190164 + Y: 42246508 + - X: -30591974 + Y: 43365632 + - X: -31574554 + Y: 45612956 + - X: -27904516 + Y: 47113476 + - X: -26948276 + Y: 46891012 + - X: -24858436 + Y: 45957736 + - X: -22803298 + Y: 43914736 + - X: -22496744 + Y: 41708988 + - X: -21437320 + Y: 40019964 + - X: -20535292 + Y: 39288004 + - X: -19116230 + Y: 39199604 + - X: -17603226 + Y: 39468376 + - X: -17355018 + Y: 41765748 + - X: -17951680 + Y: 43721008 + - X: -22362670 + Y: 50282944 + - X: -16668215 + Y: 51576664 + - X: -14833484 + Y: 47636396 + - X: -13540664 + Y: 44399480 + - X: -13753241 + Y: 42279100 + - X: -13195527 + Y: 40931320 + - X: -12570138 + Y: 40135156 + - X: -10231755 + Y: 37945328 + - X: -7452910 + Y: 36064208 + - X: -6109714 + Y: 35265284 + - X: -6928265 + Y: 37525540 + - X: -7967791 + Y: 39602564 + - X: -9535828 + Y: 41299408 + - X: -10247960 + Y: 42295276 + - X: -11893249 + Y: 46237412 + - X: -12826447 + Y: 49772436 + - X: -12740116 + Y: 52245064 + - X: -5870876 + Y: 53985176 + - X: -5669900 + Y: 46160716 + - X: -5141282 + Y: 42970980 + - X: -4614071 + Y: 41999508 + - X: -3270130 + Y: 40581892 + - X: -2059631 + Y: 37745000 + - X: 414466 + Y: 35324764 + - X: -383996 + Y: 39766504 + - X: 267305 + Y: 42029400 + - X: 426726 + Y: 43592804 + - X: -372145 + Y: 46004960 + - X: -2458820 + Y: 50692884 + - X: 2021923 + Y: 51523312 + - X: 3943157 + Y: 46833736 + - X: 4702787 + Y: 44432324 + - X: 4634534 + Y: 42876424 + - X: 4190387 + Y: 40602588 + - X: 5306110 + Y: 38667060 + - X: 6601566 + Y: 39519784 + - X: 7490720 + Y: 40666648 + - X: 7990598 + Y: 42249352 + - X: 8303718 + Y: 45225440 + - X: 8774671 + Y: 47401036 + - X: 9695730 + Y: 50264112 + - X: 14917965 + Y: 50735056 + - X: 14099395 + Y: 48206216 + - X: 13129210 + Y: 44547500 + - X: 11751280 + Y: 40610808 + - X: 11583805 + Y: 37965220 + - X: 13441639 + Y: 37633936 + - X: 15541300 + Y: 40069944 + - X: 18233624 + Y: 42805528 + - X: 19009830 + Y: 44006796 + - X: 19973726 + Y: 46721104 + - X: 22609882 + Y: 51062452 + - X: 26144268 + Y: 49628212 + - X: 28487378 + Y: 48576296 + - X: 27632008 + Y: 47668556 + - X: 26088390 + Y: 46638156 + - X: 24676914 + Y: 45392552 + - X: 23587304 + Y: 43642892 + - X: 22678880 + Y: 41821316 + - X: 21631108 + Y: 40083464 + - X: 19894804 + Y: 37970088 + - X: 17915496 + Y: 35935784 + - X: 22105408 + Y: 37988868 + - X: 25975342 + Y: 39779948 + - X: 28040982 + Y: 39970492 + - X: 30149384 + Y: 40995752 + - X: 30860624 + Y: 41486148 + - X: 34339652 + Y: 44529796 + - X: 37584576 + Y: 47865052 + - X: 39016972 + Y: 49434100 + - X: 43785668 + Y: 46795300 + m_CompositePaths: + m_Paths: + - - {x: 1.0895627, y: -1.411935} + - {x: 0.9151134, y: -0.95794064} + - {x: 0.84694093, y: -0.5239951} + - {x: 0.8492903, y: -0.0525932} + - {x: 0.82549953, y: 0.7309729} + - {x: 0.8374185, y: 1.205905} + - {x: 0.81912863, y: 1.4893} + - {x: 0.82556903, y: 1.7310373} + - {x: 0.9024763, y: 1.9370184} + - {x: 1.1085753, y: 2.077706} + - {x: 1.2641973, y: 2.2486148} + - {x: 1.2794213, y: 2.3563356} + - {x: 1.3853859, y: 2.5944917} + - {x: 1.6725292, y: 2.835577} + - {x: 1.9151552, y: 2.9867663} + - {x: 2.1806664, y: 3.1755822} + - {x: 2.4945831, y: 3.3575697} + - {x: 3.0091143, y: 3.5875397} + - {x: 3.2161665, y: 3.703945} + - {x: 3.5474873, y: 4.0047626} + - {x: 3.5903745, y: 3.9842365} + - {x: 3.6903346, y: 3.8612013} + - {x: 3.9221675, y: 3.7786806} + - {x: 3.9222512, y: 3.5626683} + - {x: 3.8199513, y: 3.24015} + - {x: 4.0856743, y: 3.393762} + - {x: 4.2288465, y: 3.5954688} + - {x: 4.4046755, y: 3.5705793} + - {x: 4.5853605, y: 3.5907557} + - {x: 4.6654115, y: 3.8689177} + - {x: 4.683502, y: 4.042261} + - {x: 4.756033, y: 4.01447} + - {x: 4.8800564, y: 3.8934596} + - {x: 4.915222, y: 3.6227732} + - {x: 5.185319, y: 3.4421673} + - {x: 5.0312157, y: 3.2218833} + - {x: 4.9118643, y: 3.0842996} + - {x: 5.106093, y: 2.9594917} + - {x: 5.467515, y: 2.8132386} + - {x: 5.813442, y: 3.0213976} + - {x: 5.9915648, y: 3.1888332} + - {x: 5.979819, y: 3.2520294} + - {x: 5.7851276, y: 3.4825013} + - {x: 5.9964046, y: 3.5534897} + - {x: 6.1867495, y: 3.4485385} + - {x: 6.2694654, y: 3.3688436} + - {x: 6.305687, y: 3.421116} + - {x: 6.3431435, y: 3.5683777} + - {x: 6.2750263, y: 3.7962933} + - {x: 6.0755043, y: 3.9985635} + - {x: 5.868925, y: 4.0981975} + - {x: 5.7737436, y: 4.1248236} + - {x: 5.8293247, y: 4.260942} + - {x: 6.0135927, y: 4.377426} + - {x: 6.3528385, y: 4.0364656} + - {x: 6.4865627, y: 4.4639974} + - {x: 6.6127505, y: 4.5109577} + - {x: 6.68338, y: 4.1228} + - {x: 6.8848295, y: 4.4829187} + - {x: 6.8138704, y: 4.914798} + - {x: 6.3172455, y: 5.2511673} + - {x: 6.2941055, y: 5.4271193} + - {x: 6.406029, y: 5.379228} + - {x: 6.4814615, y: 5.31676} + - {x: 6.3198857, y: 5.665673} + - {x: 6.3289156, y: 5.719364} + - {x: 6.546101, y: 5.690972} + - {x: 6.6919384, y: 5.1919365} + - {x: 6.828962, y: 5.391409} + - {x: 6.9883666, y: 5.313509} + - {x: 7.1103745, y: 5.284565} + - {x: 7.055965, y: 5.493107} + - {x: 6.971239, y: 5.709002} + - {x: 7.2241025, y: 5.6305857} + - {x: 7.1921306, y: 5.896806} + - {x: 6.9080663, y: 6.022915} + - {x: 6.6557026, y: 6.2867355} + - {x: 6.3943925, y: 6.3310246} + - {x: 6.7244935, y: 6.5508523} + - {x: 6.7831903, y: 6.6693273} + - {x: 6.6093745, y: 6.7097707} + - {x: 6.2391644, y: 6.7443223} + - {x: 6.4117923, y: 6.898403} + - {x: 6.6035686, y: 6.8849506} + - {x: 6.6942225, y: 6.8483744} + - {x: 6.753207, y: 6.9387255} + - {x: 6.8959465, y: 6.9900393} + - {x: 7.071117, y: 6.672701} + - {x: 7.1458945, y: 6.9592223} + - {x: 7.0460114, y: 7.221169} + - {x: 6.878514, y: 7.398657} + - {x: 6.842818, y: 7.488871} + - {x: 6.8877554, y: 7.613432} + - {x: 7.175417, y: 7.5991235} + - {x: 6.9336243, y: 7.8807883} + - {x: 6.5515194, y: 7.817401} + - {x: 6.3523264, y: 7.725852} + - {x: 6.2827363, y: 7.748614} + - {x: 6.275494, y: 7.849282} + - {x: 6.632902, y: 8.076433} + - {x: 6.2848043, y: 8.155276} + - {x: 5.9479527, y: 8.1113825} + - {x: 5.7968845, y: 8.069115} + - {x: 6.0001297, y: 8.326774} + - {x: 6.197503, y: 8.813801} + - {x: 5.770463, y: 9.101273} + - {x: 5.7183075, y: 9.251206} + - {x: 5.814715, y: 9.334333} + - {x: 6.2597523, y: 9.584465} + - {x: 5.6776495, y: 9.984047} + - {x: 4.9905505, y: 9.802225} + - {x: 4.6591434, y: 9.61387} + - {x: 4.620061, y: 9.790889} + - {x: 4.7351017, y: 10.156748} + - {x: 5.3526974, y: 10.463653} + - {x: 4.923998, y: 10.782613} + - {x: 4.5680094, y: 10.649145} + - {x: 4.2844696, y: 10.522564} + - {x: 4.135062, y: 10.636173} + - {x: 3.9717288, y: 10.929355} + - {x: 4.1631794, y: 11.41172} + - {x: 3.730796, y: 11.232779} + - {x: 3.2691584, y: 10.892147} + - {x: 3.0540047, y: 10.707918} + - {x: 2.7590775, y: 10.783098} + - {x: 2.33889, y: 11.057207} + - {x: 2.4903338, y: 11.603098} + - {x: 1.9372299, y: 11.449966} + - {x: 1.5246532, y: 11.065436} + - {x: 1.362669, y: 10.8485775} + - {x: 1.1829269, y: 10.90528} + - {x: 1.037766, y: 11.220022} + - {x: 1.518285, y: 12.00976} + - {x: 0.8456748, y: 11.745599} + - {x: 0.1500296, y: 11.181271} + - {x: -0.1703608, y: 10.870183} + - {x: -0.4340207, y: 11.228518} + - {x: -1.0387683, y: 11.823057} + - {x: -1.7052553, y: 11.933105} + - {x: -1.4449428, y: 11.279375} + - {x: -1.6540462, y: 10.944067} + - {x: -1.8344423, y: 10.849548} + - {x: -2.0948017, y: 10.976194} + - {x: -2.6868687, y: 11.124661} + - {x: -3.3271277, y: 10.947741} + - {x: -2.8253913, y: 10.523077} + - {x: -2.8491728, y: 10.360333} + - {x: -2.955532, y: 10.333982} + - {x: -3.1316662, y: 10.408909} + - {x: -3.5556612, y: 10.464576} + - {x: -4.0709066, y: 10.247319} + - {x: -3.7829537, y: 10.095598} + - {x: -3.9922209, y: 9.870394} + - {x: -4.1572046, y: 9.648722} + - {x: -4.0234203, y: 9.427732} + - {x: -4.042252, y: 9.263627} + - {x: -4.078561, y: 9.199376} + - {x: -4.3557215, y: 9.241369} + - {x: -4.9071493, y: 9.18826} + - {x: -5.312764, y: 8.771414} + - {x: -4.9015164, y: 8.725356} + - {x: -4.9968815, y: 8.385252} + - {x: -5.0963583, y: 8.071753} + - {x: -4.695149, y: 7.9343257} + - {x: -4.8092065, y: 7.6933746} + - {x: -4.9547358, y: 7.5650287} + - {x: -5.0598693, y: 7.604124} + - {x: -5.3752885, y: 7.6244273} + - {x: -5.901022, y: 7.480465} + - {x: -6.0907636, y: 6.9309626} + - {x: -6.2227993, y: 6.2994285} + - {x: -6.202138, y: 5.9383745} + - {x: -5.9352446, y: 6.3665967} + - {x: -5.7600675, y: 6.620127} + - {x: -5.6718693, y: 6.6783333} + - {x: -5.175962, y: 6.73337} + - {x: -5.149766, y: 6.506799} + - {x: -5.24592, y: 6.290904} + - {x: -5.8966584, y: 5.9843554} + - {x: -6.1595254, y: 5.398411} + - {x: -5.8997283, y: 4.8348875} + - {x: -5.5447826, y: 5.2870626} + - {x: -5.4691076, y: 5.1215086} + - {x: -5.400779, y: 4.914544} + - {x: -5.112133, y: 4.899919} + - {x: -4.9009094, y: 4.9385004} + - {x: -4.828638, y: 4.911689} + - {x: -5.2888637, y: 4.6000404} + - {x: -5.7136555, y: 4.1197214} + - {x: -5.593485, y: 3.4583828} + - {x: -5.283478, y: 3.9621172} + - {x: -5.149906, y: 3.9839325} + - {x: -5.0234547, y: 3.6282206} + - {x: -4.630299, y: 3.8805652} + - {x: -4.4572225, y: 3.7387753} + - {x: -4.3462534, y: 3.5599236} + - {x: -4.6056566, y: 2.9962883} + - {x: -4.730713, y: 2.5160484} + - {x: -4.5142736, y: 1.9529077} + - {x: -4.4255266, y: 2.3286486} + - {x: -4.35179, y: 2.4748988} + - {x: -3.9343274, y: 2.640172} + - {x: -3.9284666, y: 3.2115421} + - {x: -3.7271433, y: 3.2351553} + - {x: -3.4852593, y: 3.3165402} + - {x: -3.266752, y: 3.7052605} + - {x: -3.0501256, y: 3.9189677} + - {x: -2.7682889, y: 3.6044445} + - {x: -2.5739791, y: 3.9250865} + - {x: -2.5675044, y: 3.943749} + - {x: -2.5306187, y: 3.8484786} + - {x: -2.384712, y: 3.678594} + - {x: -2.220262, y: 3.564436} + - {x: -2.0350854, y: 3.5226512} + - {x: -1.7770863, y: 3.541214} + - {x: -1.6059747, y: 3.4405956} + - {x: -1.2525163, y: 3.174913} + - {x: -0.9565268, y: 2.7984266} + - {x: -0.7884136, y: 2.4011207} + - {x: -0.678456, y: 2.0275488} + - {x: -0.6562767, y: 1.6638247} + - {x: -0.6750108, y: 1.2495863} + - {x: -0.7110409, y: 1.000072} + - {x: -0.7852041, y: 0.7304487} + - {x: -0.91342354, y: 0.3069253} + - {x: -1.0089116, y: -0.2862565} + - {x: -1.178504, y: -1.1498156} + - {x: -1.5145779, y: -1.9126238} + - {x: 1.3592415, y: -1.9805832} + - - {x: 1.1583805, y: 3.7965221} + - {x: 1.175128, y: 4.061081} + - {x: 1.2725089, y: 4.339294} + - {x: 1.4229435, y: 4.206705} + - {x: 1.6300776, y: 4.55227} + - {x: 1.8559281, y: 4.6903505} + - {x: 2.0186467, y: 4.7071457} + - {x: 1.9973726, y: 4.6721106} + - {x: 1.900983, y: 4.4006796} + - {x: 1.8233625, y: 4.280553} + - {x: 1.5541301, y: 4.0069942} + - {x: 1.3441639, y: 3.7633936} + - - {x: 1.9894804, y: 3.7970088} + - {x: 2.1631107, y: 4.0083466} + - {x: 2.267888, y: 4.182132} + - {x: 2.3587303, y: 4.3642893} + - {x: 2.4221518, y: 4.4661293} + - {x: 2.5189483, y: 4.5660505} + - {x: 2.9367354, y: 4.4021645} + - {x: 3.2148142, y: 4.489348} + - {x: 3.1397672, y: 4.195599} + - {x: 3.0860624, y: 4.148615} + - {x: 3.0149384, y: 4.099575} + - {x: 2.8040981, y: 3.9970493} + - {x: 2.5975342, y: 3.977995} + - {x: 2.2105408, y: 3.7988868} + - {x: 1.7915496, y: 3.5935783} + - - {x: -0.745291, y: 3.6064208} + - {x: -1.0231755, y: 3.7945328} + - {x: -1.2570138, y: 4.0135155} + - {x: -1.3195527, y: 4.093132} + - {x: -1.3753241, y: 4.22791} + - {x: -1.3540664, y: 4.439948} + - {x: -1.3688391, y: 4.4769354} + - {x: -1.3449923, y: 4.479533} + - {x: -1.0509835, y: 4.292273} + - {x: -1.024796, y: 4.2295275} + - {x: -0.9535828, y: 4.129941} + - {x: -0.7967791, y: 3.9602563} + - {x: -0.6928265, y: 3.752554} + - {x: -0.6109714, y: 3.5265284} + - - {x: 0.4190387, y: 4.060259} + - {x: 0.4634534, y: 4.2876425} + - {x: 0.4664793, y: 4.35662} + - {x: 0.6821971, y: 4.440889} + - {x: 0.8247419, y: 4.4690347} + - {x: 0.7990598, y: 4.224935} + - {x: 0.749072, y: 4.0666647} + - {x: 0.6601566, y: 3.9519784} + - {x: 0.530611, y: 3.8667061} + - - {x: -0.2059631, y: 3.7745001} + - {x: -0.32701302, y: 4.0581894} + - {x: -0.4614071, y: 4.1999507} + - {x: -0.5141282, y: 4.297098} + - {x: -0.5342213, y: 4.4183416} + - {x: -0.50275683, y: 4.452107} + - {x: -0.1255308, y: 4.348929} + - {x: 0.0383526, y: 4.316915} + - {x: 0.0267305, y: 4.20294} + - {x: -0.0383996, y: 3.9766505} + - {x: 0.0414466, y: 3.5324764} + - - {x: -2.0535293, y: 3.9288003} + - {x: -2.143732, y: 4.0019965} + - {x: -2.2496743, y: 4.170899} + - {x: -2.2672474, y: 4.297342} + - {x: -1.8464413, y: 4.4249067} + - {x: -1.8317412, y: 4.426508} + - {x: -1.795168, y: 4.372101} + - {x: -1.7355018, y: 4.1765747} + - {x: -1.7603226, y: 3.9468377} + - {x: -1.911623, y: 3.9199605} + m_VertexDistance: 0.0005 +--- !u!50 &1198078832 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1198078828} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!1971053207 &1198078833 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1198078828} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -47 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: a94adaf94669646788de8f639270804a, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1198078834 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1198078828} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8e3fa9c7ff3ad4112a30689e933384ed, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 4 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &1198078835 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1198078828} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -13.4, y: 16.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 53245465} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1437780201 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1437780206} + - component: {fileID: 1437780205} + - component: {fileID: 1437780204} + - component: {fileID: 1437780203} + - component: {fileID: 1437780202} + - component: {fileID: 1437780207} + m_Layer: 0 + m_Name: Branch (Legacy Collider) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!50 &1437780202 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1437780201} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!68 &1437780203 +EdgeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1437780201} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_EdgeRadius: 0 + m_Points: + - {x: -0.98856, y: -24.09548} + - {x: 3.0242, y: -22.76776} + - {x: 3.21764, y: -22.65055} + - {x: 5.92089, y: -20.02938} + - {x: 6.02207, y: -19.89042} + - {x: 7.66522, y: -16.55607} + - {x: 7.70198, y: -16.45571} + - {x: 8.52716, y: -13.14552} + - {x: 10.19995, y: -10.72428} + - {x: 13.23569, y: -9.61406} + - {x: 16.3414, y: -9.32309} + - {x: 18.7498, y: -9.37809} + - {x: 18.79546, y: -7.37861} + - {x: 16.29983, y: -7.32162} + - {x: 16.24172, y: -7.32367} + - {x: 12.85629, y: -7.64085} + - {x: 12.73068, y: -7.6692} + - {x: 9.06875, y: -9.00843} + - {x: 8.82335, y: -9.19826} + - {x: 6.72682, y: -12.23283} + - {x: 6.65244, y: -12.39743} + - {x: 5.80022, y: -15.81608} + - {x: 4.3426, y: -18.77394} + - {x: 2.07108, y: -20.97649} + - {x: -1.27554, y: -22.08379} + - {x: -5.77205, y: -21.39024} + - {x: -9.80821, y: -19.16592} + - {x: -12.71465, y: -16.77019} + - {x: -14.52603, y: -14.94082} + - {x: -15.94722, y: -16.34803} + - {x: -14.08258, y: -18.23119} + - {x: -14.04529, y: -18.26523} + - {x: -10.97259, y: -20.798} + - {x: -10.89572, y: -20.8502} + - {x: -6.50526, y: -23.26977} + - {x: -6.33888, y: -23.32646} + - {x: -1.22513, y: -24.11522} + - {x: -0.98856, y: -24.09548} +--- !u!1971053207 &1437780204 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1437780201} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -11 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300000, guid: e205c552afc6743cb9c52e5ff6504efc, type: 3} + m_LocalAABB: + m_Center: {x: 1.2404728, y: -12.22172, z: -0.005} + m_Extent: {x: 19.219893, y: 12.22172, z: 0.005} +--- !u!114 &1437780205 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1437780201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -14.53302, y: -16.355022, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1.17 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.1900063, y: -23.108816, z: 0} + leftTangent: {x: -6.6956515, y: -0.7063942, z: 0} + rightTangent: {x: 5.99125, y: 0.6320801, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 7.6009054, y: -12.726942, z: 0} + leftTangent: {x: -0.7709484, y: -4.507843, z: 0} + rightTangent: {x: 0.8714237, y: 5.095332, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 17.772892, y: -8.355526, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 67e0d7ab8806749199e5b764729aa46a, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &1437780206 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1437780201} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 35.4, y: 24.22, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1437780207 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1437780201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a8e65bafadf93f41a17da25163f2f51, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ColliderCornerType: 0 + m_ColliderOffset: 1 + m_UpdateCollider: 0 +--- !u!1 &1463708948 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1463708952} + - component: {fileID: 1463708951} + - component: {fileID: 1463708950} + - component: {fileID: 1463708949} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1463708949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463708948} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1463708950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463708948} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1463708951 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463708948} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1463708952 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463708948} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1844216781} + - {fileID: 2100844766} + - {fileID: 231626811} + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1574803829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1574803832} + - component: {fileID: 1574803831} + - component: {fileID: 1574803830} + - component: {fileID: 1574803836} + - component: {fileID: 1574803835} + - component: {fileID: 1574803834} + - component: {fileID: 1574803833} + m_Layer: 0 + m_Name: Branch (Geometry Collider) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1971053207 &1574803830 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1574803829} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -11 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300000, guid: e205c552afc6743cb9c52e5ff6504efc, type: 3} + m_LocalAABB: + m_Center: {x: 1.3386917, y: -12.22172, z: -0.005} + m_Extent: {x: 19.318111, y: 12.22172, z: 0.005} +--- !u!114 &1574803831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1574803829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -14.53302, y: -16.355022, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1.17 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.1900063, y: -23.108816, z: 0} + leftTangent: {x: -6.6956515, y: -0.7063942, z: 0} + rightTangent: {x: 5.99125, y: 0.6320801, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 7.6009054, y: -12.726942, z: 0} + leftTangent: {x: -0.7709484, y: -4.507843, z: 0} + rightTangent: {x: 0.8714237, y: 5.095332, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 17.983303, y: -8.250319, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 67e0d7ab8806749199e5b764729aa46a, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &1574803832 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1574803829} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.6000004, y: 24.22, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!66 &1574803833 +CompositeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1574803829} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_GeometryType: 0 + m_GenerationType: 0 + m_EdgeRadius: 0 + m_ColliderPaths: + - m_Collider: {fileID: 1574803836} + m_ColliderPaths: + - - X: -36014956 + Y: -217938288 + - X: -36351692 + Y: -217885920 + - X: -36080312 + Y: -217921566 + - - X: 6910515 + Y: -241387264 + - X: 14598203 + Y: -239156144 + - X: 25647150 + Y: -234457504 + - X: 35680688 + Y: -228634704 + - X: 44689436 + Y: -221831136 + - X: 49151940 + Y: -217604080 + - X: 52689072 + Y: -214201984 + - X: 59721460 + Y: -205899872 + - X: 65848344 + Y: -197065968 + - X: 71142656 + Y: -187826016 + - X: 75680816 + Y: -178292272 + - X: 59199532 + Y: -171114670 + - X: 52110228 + Y: -168304464 + - X: 52167841 + Y: -168159355 + - X: 52209984 + Y: -168070720 + - X: 52110228 + Y: -168304464 + - X: 59199532 + Y: -171114670 + - X: 75680816 + Y: -178292272 + - X: 75908648 + Y: -177738176 + - X: 79538152 + Y: -168566128 + - X: 82786096 + Y: -158742688 + - X: 85491944 + Y: -148913136 + - X: 87718960 + Y: -139167168 + - X: 88582992 + Y: -134604032 + - X: 89334376 + Y: -130521248 + - X: 91395024 + Y: -123368256 + - X: 94564992 + Y: -118121368 + - X: 99106400 + Y: -113438800 + - X: 105280159 + Y: -109126022 + - X: 112287632 + Y: -105587944 + - X: 120488208 + Y: -102567472 + - X: 129307560 + Y: -100192048 + - X: 138374736 + Y: -98430168 + - X: 139373472 + Y: -98300296 + - X: 147323088 + Y: -97217512 + - X: 155794624 + Y: -96470232 + - X: 163439888 + Y: -96092976 + - X: 169916064 + Y: -95983648 + - X: 174886384 + Y: -96036312 + - X: 178027008 + Y: -96143048 + - X: 179114112 + Y: -96200704 + - X: 205178256 + Y: -97568648 + - X: 206520000 + Y: -72003832 + - X: 180455856 + Y: -70635888 + - X: 179131312 + Y: -70566880 + - X: 175454464 + Y: -70442608 + - X: 169833664 + Y: -70383784 + - X: 162590576 + Y: -70507064 + - X: 154035680 + Y: -70930736 + - X: 144474256 + Y: -71776512 + - X: 135930384 + Y: -72932896 + - X: 134205688 + Y: -73171920 + - X: 123522088 + Y: -75254368 + - X: 112708072 + Y: -78178336 + - X: 102044392 + Y: -82126560 + - X: 91824320 + Y: -87324504 + - X: 102288301 + Y: -104643886 + - X: 105408248 + Y: -109036544 + - X: 105280159 + Y: -109126022 + - X: 105062656 + Y: -109235840 + - X: 105408248 + Y: -109036544 + - X: 102288301 + Y: -104643886 + - X: 91824320 + Y: -87324504 + - X: 90584184 + Y: -88165344 + - X: 82395960 + Y: -94044952 + - X: 74234992 + Y: -102563368 + - X: 67981304 + Y: -113016560 + - X: 64464212 + Y: -124452088 + - X: 63427388 + Y: -129854744 + - X: 62658048 + Y: -133941248 + - X: 60666036 + Y: -142665424 + - X: 58283416 + Y: -151327936 + - X: 55475212 + Y: -159829136 + - X: 52167841 + Y: -168159355 + - X: 48459920 + Y: -175957856 + - X: 44200512 + Y: -183400992 + - X: 39408208 + Y: -190320032 + - X: 34056488 + Y: -196646752 + - X: 31478648 + Y: -199083424 + - X: 28109066 + Y: -202325968 + - X: 21512496 + Y: -207312832 + - X: 14190592 + Y: -211564144 + - X: 6045491 + Y: -215027088 + - X: -145251 + Y: -216778816 + - X: -3033300 + Y: -217628416 + - X: -13020303 + Y: -219257456 + - X: -24738706 + Y: -219411296 + - X: -36080312 + Y: -217921566 + - X: -47938500 + Y: -214887536 + - X: -59374504 + Y: -210622880 + - X: -70515000 + Y: -205322464 + - X: -72469768 + Y: -204196208 + - X: -81210792 + Y: -199236800 + - X: -91315872 + Y: -192629952 + - X: -100689552 + Y: -185774352 + - X: -105846424 + Y: -181632880 + - X: -109196760 + Y: -178947120 + - X: -116707088 + Y: -172427696 + - X: -123094008 + Y: -166496912 + - X: -128233976 + Y: -161435616 + - X: -132006496 + Y: -157524368 + - X: -134298864 + Y: -155036544 + - X: -135066800 + Y: -154170448 + - X: -158475984 + Y: -128556000 + - X: -180585632 + Y: -148762096 + - X: -157176448 + Y: -174376560 + - X: -156195648 + Y: -175420000 + - X: -153408448 + Y: -178278624 + - X: -149016448 + Y: -182582928 + - X: -143142368 + Y: -188050144 + - X: -135899760 + Y: -194405344 + - X: -127398888 + Y: -201374496 + - X: -123532808 + Y: -204306640 + - X: -117746288 + Y: -208683088 + - X: -107044304 + Y: -216055312 + - X: -95389624 + Y: -223212544 + - X: -85757512 + Y: -228341408 + - X: -82872712 + Y: -229870688 + - X: -69577696 + Y: -235736144 + - X: -55585136 + Y: -240499568 + - X: -42232508 + Y: -243558672 + - X: -40980684 + Y: -243828608 + - X: -25873268 + Y: -245363376 + - X: -10607054 + Y: -244743440 + - X: 2557802 + Y: -242610416 + m_CompositePaths: + m_Paths: + - - {x: 5.216784, y: -16.815937} + - {x: 5.2209983, y: -16.807072} + - {x: 5.211023, y: -16.830446} + - - {x: 10.540825, y: -10.903654} + - {x: 10.528016, y: -10.912602} + - {x: 10.506266, y: -10.923584} + - - {x: -3.6351693, y: -21.788591} + - {x: -3.6080313, y: -21.792156} + - {x: -3.6014957, y: -21.793829} + - - {x: 8.239596, y: -9.404495} + - {x: 7.423499, y: -10.256337} + - {x: 6.7981305, y: -11.301656} + - {x: 6.446421, y: -12.445209} + - {x: 6.342739, y: -12.985475} + - {x: 6.265805, y: -13.394125} + - {x: 6.0666037, y: -14.266542} + - {x: 5.8283415, y: -15.132793} + - {x: 5.547521, y: -15.982914} + - {x: 5.216784, y: -16.815937} + - {x: 4.845992, y: -17.595785} + - {x: 4.420051, y: -18.3401} + - {x: 3.940821, y: -19.032003} + - {x: 3.405649, y: -19.664675} + - {x: 3.1478648, y: -19.908342} + - {x: 2.8109066, y: -20.232597} + - {x: 2.1512496, y: -20.731283} + - {x: 1.4190592, y: -21.156414} + - {x: 0.6045491, y: -21.502708} + - {x: -0.014525101, y: -21.677881} + - {x: -0.30333, y: -21.762842} + - {x: -1.3020303, y: -21.925745} + - {x: -2.4738705, y: -21.94113} + - {x: -3.6080313, y: -21.792156} + - {x: -4.79385, y: -21.488754} + - {x: -5.9374504, y: -21.062288} + - {x: -7.0515003, y: -20.532248} + - {x: -7.246977, y: -20.41962} + - {x: -8.121079, y: -19.92368} + - {x: -9.131587, y: -19.262995} + - {x: -10.068955, y: -18.577435} + - {x: -10.584642, y: -18.163288} + - {x: -10.919676, y: -17.894712} + - {x: -11.670709, y: -17.24277} + - {x: -12.309401, y: -16.64969} + - {x: -12.823398, y: -16.143562} + - {x: -13.20065, y: -15.752437} + - {x: -13.429887, y: -15.5036545} + - {x: -13.5066805, y: -15.417045} + - {x: -15.847599, y: -12.8556} + - {x: -18.058563, y: -14.87621} + - {x: -15.717645, y: -17.437656} + - {x: -15.619565, y: -17.542} + - {x: -15.340845, y: -17.827862} + - {x: -14.901645, y: -18.258293} + - {x: -14.314237, y: -18.805016} + - {x: -13.589976, y: -19.440535} + - {x: -12.739889, y: -20.13745} + - {x: -12.353281, y: -20.430664} + - {x: -11.774629, y: -20.868309} + - {x: -10.704431, y: -21.605532} + - {x: -9.538962, y: -22.321255} + - {x: -8.575751, y: -22.83414} + - {x: -8.2872715, y: -22.987068} + - {x: -6.95777, y: -23.573614} + - {x: -5.5585136, y: -24.049957} + - {x: -4.223251, y: -24.355867} + - {x: -4.098068, y: -24.38286} + - {x: -2.5873268, y: -24.536339} + - {x: -1.0607054, y: -24.474344} + - {x: 0.2557802, y: -24.261042} + - {x: 0.6910515, y: -24.138727} + - {x: 1.4598203, y: -23.915615} + - {x: 2.5647151, y: -23.445751} + - {x: 3.5680687, y: -22.86347} + - {x: 4.4689436, y: -22.183113} + - {x: 4.915194, y: -21.760408} + - {x: 5.268907, y: -21.420198} + - {x: 5.972146, y: -20.589987} + - {x: 6.5848346, y: -19.706596} + - {x: 7.114266, y: -18.782602} + - {x: 7.568082, y: -17.829227} + - {x: 7.5908647, y: -17.773817} + - {x: 7.9538155, y: -16.856613} + - {x: 8.278609, y: -15.874269} + - {x: 8.549194, y: -14.891314} + - {x: 8.771896, y: -13.916717} + - {x: 8.858299, y: -13.460403} + - {x: 8.933437, y: -13.052125} + - {x: 9.139503, y: -12.336825} + - {x: 9.456499, y: -11.812137} + - {x: 9.91064, y: -11.34388} + - {x: 10.528016, y: -10.912602} + - {x: 11.228764, y: -10.558795} + - {x: 12.0488205, y: -10.256747} + - {x: 12.930757, y: -10.019205} + - {x: 13.837474, y: -9.843017} + - {x: 13.937347, y: -9.8300295} + - {x: 14.732309, y: -9.721751} + - {x: 15.579463, y: -9.647023} + - {x: 16.343988, y: -9.609298} + - {x: 16.991606, y: -9.598365} + - {x: 17.488638, y: -9.603631} + - {x: 17.802702, y: -9.614305} + - {x: 17.911411, y: -9.62007} + - {x: 20.517826, y: -9.756865} + - {x: 20.652, y: -7.200383} + - {x: 18.045586, y: -7.063589} + - {x: 17.913132, y: -7.0566883} + - {x: 17.545446, y: -7.044261} + - {x: 16.983366, y: -7.0383787} + - {x: 16.259058, y: -7.0507064} + - {x: 15.403568, y: -7.093074} + - {x: 14.447426, y: -7.1776514} + - {x: 13.593039, y: -7.2932897} + - {x: 13.420569, y: -7.317192} + - {x: 12.352209, y: -7.525437} + - {x: 11.270807, y: -7.817834} + - {x: 10.204439, y: -8.212656} + - {x: 9.182432, y: -8.7324505} + - {x: 9.058418, y: -8.816534} + m_VertexDistance: 0.0005 +--- !u!50 &1574803834 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1574803829} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!114 &1574803835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1574803829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0ecd6fe4dd55d640bd7ef3235e0e425, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateCollider: 0 +--- !u!60 &1574803836 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1574803829} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: -18.058563, y: -14.876209} + - {x: -15.847598, y: -12.8556} + - {x: -13.5066805, y: -15.417046} + - {x: -15.717645, y: -17.437656} + - - {x: -15.717645, y: -17.437656} + - {x: -13.5066805, y: -15.417046} + - {x: -13.429886, y: -15.5036545} + - {x: -15.619564, y: -17.542} + - - {x: -15.619564, y: -17.542} + - {x: -13.429886, y: -15.5036545} + - {x: -13.200649, y: -15.752438} + - {x: -15.340845, y: -17.827862} + - - {x: -15.340845, y: -17.827862} + - {x: -13.200649, y: -15.752438} + - {x: -12.823398, y: -16.143562} + - {x: -14.901645, y: -18.258293} + - - {x: -14.901645, y: -18.258293} + - {x: -12.823398, y: -16.143562} + - {x: -12.309401, y: -16.64969} + - {x: -14.314238, y: -18.805014} + - - {x: -14.314238, y: -18.805014} + - {x: -12.309401, y: -16.64969} + - {x: -11.670709, y: -17.24277} + - {x: -13.589976, y: -19.440535} + - - {x: -13.589976, y: -19.440535} + - {x: -11.670709, y: -17.24277} + - {x: -10.919676, y: -17.894712} + - {x: -12.739889, y: -20.13745} + - - {x: -12.739889, y: -20.13745} + - {x: -10.919676, y: -17.894712} + - {x: -10.584642, y: -18.163288} + - {x: -12.353281, y: -20.430664} + - - {x: -12.353281, y: -20.430664} + - {x: -10.584642, y: -18.163288} + - {x: -10.068955, y: -18.577435} + - {x: -11.774629, y: -20.868309} + - - {x: -11.774629, y: -20.868309} + - {x: -10.068955, y: -18.577435} + - {x: -9.131587, y: -19.262995} + - {x: -10.704431, y: -21.605532} + - - {x: -10.704431, y: -21.605532} + - {x: -9.131587, y: -19.262995} + - {x: -8.121079, y: -19.92368} + - {x: -9.538962, y: -22.321255} + - - {x: -9.538962, y: -22.321255} + - {x: -8.121079, y: -19.92368} + - {x: -7.246977, y: -20.41962} + - {x: -8.575751, y: -22.83414} + - - {x: -8.575751, y: -22.83414} + - {x: -7.246977, y: -20.41962} + - {x: -7.0515003, y: -20.532246} + - {x: -8.2872715, y: -22.987068} + - - {x: -8.2872715, y: -22.987068} + - {x: -7.0515003, y: -20.532246} + - {x: -5.9374504, y: -21.062288} + - {x: -6.9577694, y: -23.573614} + - - {x: -6.9577694, y: -23.573614} + - {x: -5.9374504, y: -21.062288} + - {x: -4.79385, y: -21.488754} + - {x: -5.5585136, y: -24.049957} + - - {x: -5.5585136, y: -24.049957} + - {x: -4.79385, y: -21.488754} + - {x: -3.6014955, y: -21.793829} + - {x: -4.223251, y: -24.355867} + - - {x: -4.223251, y: -24.355867} + - {x: -3.6014955, y: -21.793829} + - {x: -3.6351693, y: -21.788591} + - {x: -4.098068, y: -24.38286} + - - {x: -4.098068, y: -24.38286} + - {x: -3.6351693, y: -21.788591} + - {x: -2.4738705, y: -21.94113} + - {x: -2.5873268, y: -24.536337} + - - {x: -2.5873268, y: -24.536337} + - {x: -2.4738705, y: -21.94113} + - {x: -1.3020303, y: -21.925745} + - {x: -1.0607054, y: -24.474344} + - - {x: -1.0607054, y: -24.474344} + - {x: -1.3020303, y: -21.925745} + - {x: -0.30333006, y: -21.762842} + - {x: 0.25578028, y: -24.261042} + - - {x: 0.25578028, y: -24.261042} + - {x: -0.30333006, y: -21.762842} + - {x: -0.014525179, y: -21.677881} + - {x: 0.69105154, y: -24.138727} + - - {x: 0.69105154, y: -24.138727} + - {x: -0.014525179, y: -21.677881} + - {x: 0.6045491, y: -21.502708} + - {x: 1.4598203, y: -23.915615} + - - {x: 1.4598203, y: -23.915615} + - {x: 0.6045491, y: -21.502708} + - {x: 1.4190592, y: -21.156414} + - {x: 2.564715, y: -23.445751} + - - {x: 2.564715, y: -23.445751} + - {x: 1.4190592, y: -21.156414} + - {x: 2.1512496, y: -20.731283} + - {x: 3.5680687, y: -22.86347} + - - {x: 3.5680687, y: -22.86347} + - {x: 2.1512496, y: -20.731283} + - {x: 2.8109066, y: -20.232597} + - {x: 4.4689436, y: -22.183113} + - - {x: 4.4689436, y: -22.183113} + - {x: 2.8109066, y: -20.232597} + - {x: 3.1478648, y: -19.908342} + - {x: 4.915194, y: -21.760408} + - - {x: 4.915194, y: -21.760408} + - {x: 3.1478648, y: -19.908342} + - {x: 3.4056487, y: -19.664675} + - {x: 5.268907, y: -21.420198} + - - {x: 5.268907, y: -21.420198} + - {x: 3.4056487, y: -19.664675} + - {x: 3.9408207, y: -19.032003} + - {x: 5.972146, y: -20.589987} + - - {x: 5.972146, y: -20.589987} + - {x: 3.9408207, y: -19.032003} + - {x: 4.420051, y: -18.3401} + - {x: 6.5848346, y: -19.706596} + - - {x: 6.5848346, y: -19.706596} + - {x: 4.420051, y: -18.3401} + - {x: 4.845992, y: -17.595785} + - {x: 7.1142654, y: -18.782602} + - - {x: 7.1142654, y: -18.782602} + - {x: 4.845992, y: -17.595785} + - {x: 5.2209983, y: -16.807072} + - {x: 7.5680814, y: -17.829227} + - - {x: 7.5680814, y: -17.829227} + - {x: 5.2209983, y: -16.807072} + - {x: 5.211023, y: -16.830446} + - {x: 7.5908647, y: -17.773817} + - - {x: 7.5908647, y: -17.773817} + - {x: 5.211023, y: -16.830446} + - {x: 5.547521, y: -15.982914} + - {x: 7.953815, y: -16.856613} + - - {x: 7.953815, y: -16.856613} + - {x: 5.547521, y: -15.982914} + - {x: 5.8283415, y: -15.132793} + - {x: 8.278609, y: -15.8742695} + - - {x: 8.278609, y: -15.8742695} + - {x: 5.8283415, y: -15.132793} + - {x: 6.0666037, y: -14.266542} + - {x: 8.549194, y: -14.891314} + - - {x: 8.549194, y: -14.891314} + - {x: 6.0666037, y: -14.266542} + - {x: 6.265805, y: -13.394125} + - {x: 8.771896, y: -13.916718} + - - {x: 8.771896, y: -13.916718} + - {x: 6.265805, y: -13.394125} + - {x: 6.3427386, y: -12.985475} + - {x: 8.858299, y: -13.4604025} + - - {x: 8.858299, y: -13.4604025} + - {x: 6.3427386, y: -12.985475} + - {x: 6.446421, y: -12.445209} + - {x: 8.933437, y: -13.052125} + - - {x: 8.933437, y: -13.052125} + - {x: 6.446421, y: -12.445209} + - {x: 6.7981305, y: -11.301656} + - {x: 9.139503, y: -12.336825} + - - {x: 9.139503, y: -12.336825} + - {x: 6.7981305, y: -11.301656} + - {x: 7.4234996, y: -10.256337} + - {x: 9.456499, y: -11.812137} + - - {x: 9.456499, y: -11.812137} + - {x: 7.4234996, y: -10.256337} + - {x: 8.239596, y: -9.404495} + - {x: 9.91064, y: -11.34388} + - - {x: 9.91064, y: -11.34388} + - {x: 8.239596, y: -9.404495} + - {x: 9.058418, y: -8.816534} + - {x: 10.540825, y: -10.903654} + - - {x: 10.540825, y: -10.903654} + - {x: 9.058418, y: -8.816534} + - {x: 9.182432, y: -8.7324505} + - {x: 10.506266, y: -10.923584} + - - {x: 10.506266, y: -10.923584} + - {x: 9.182432, y: -8.7324505} + - {x: 10.204439, y: -8.212656} + - {x: 11.228764, y: -10.558794} + - - {x: 11.228764, y: -10.558794} + - {x: 10.204439, y: -8.212656} + - {x: 11.270807, y: -7.817834} + - {x: 12.0488205, y: -10.256747} + - - {x: 12.0488205, y: -10.256747} + - {x: 11.270807, y: -7.817834} + - {x: 12.352209, y: -7.5254364} + - {x: 12.930756, y: -10.019205} + - - {x: 12.930756, y: -10.019205} + - {x: 12.352209, y: -7.5254364} + - {x: 13.420568, y: -7.3171916} + - {x: 13.837473, y: -9.843017} + - - {x: 13.837473, y: -9.843017} + - {x: 13.420568, y: -7.3171916} + - {x: 13.593038, y: -7.2932897} + - {x: 13.937346, y: -9.8300295} + - - {x: 13.937346, y: -9.8300295} + - {x: 13.593038, y: -7.2932897} + - {x: 14.447426, y: -7.1776514} + - {x: 14.732309, y: -9.721751} + - - {x: 14.732309, y: -9.721751} + - {x: 14.447426, y: -7.1776514} + - {x: 15.403567, y: -7.0930734} + - {x: 15.579463, y: -9.647023} + - - {x: 15.579463, y: -9.647023} + - {x: 15.403567, y: -7.0930734} + - {x: 16.259058, y: -7.0507064} + - {x: 16.343988, y: -9.609298} + - - {x: 16.343988, y: -9.609298} + - {x: 16.259058, y: -7.0507064} + - {x: 16.983366, y: -7.0383787} + - {x: 16.991606, y: -9.598365} + - - {x: 16.991606, y: -9.598365} + - {x: 16.983366, y: -7.0383787} + - {x: 17.545446, y: -7.044261} + - {x: 17.488638, y: -9.603631} + - - {x: 17.488638, y: -9.603631} + - {x: 17.545446, y: -7.044261} + - {x: 17.913132, y: -7.056688} + - {x: 17.8027, y: -9.614305} + - - {x: 17.8027, y: -9.614305} + - {x: 17.913132, y: -7.056688} + - {x: 18.045586, y: -7.0635886} + - {x: 17.911411, y: -9.62007} + - - {x: 17.911411, y: -9.62007} + - {x: 18.045586, y: -7.0635886} + - {x: 20.652, y: -7.200383} + - {x: 20.517826, y: -9.756865} +--- !u!1 &1617661204 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1617661210} + - component: {fileID: 1617661209} + - component: {fileID: 1617661208} + - component: {fileID: 1617661207} + - component: {fileID: 1617661206} + - component: {fileID: 1617661205} + m_Layer: 0 + m_Name: Tree (Package) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!60 &1617661205 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1617661204} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 3.2161665, y: 3.7039447} + - {x: 2.4945831, y: 3.3575697} + - {x: 1.6725292, y: 2.835577} + - {x: 1.3853858, y: 2.5944917} + - {x: 1.2265774, y: 2.1977818} + - {x: 0.9024763, y: 1.9370184} + - {x: 0.81912863, y: 1.4893} + - {x: 0.84694093, y: -0.52399516} + - {x: 0.91511345, y: -0.9579406} + - {x: 1.3592415, y: -1.9805832} + - {x: -1.5145779, y: -1.9126239} + - {x: -1.178504, y: -1.1498156} + - {x: -0.91342354, y: 0.3069253} + - {x: -0.711041, y: 1.000072} + - {x: -0.6562767, y: 1.6638246} + - {x: -0.678456, y: 2.0275488} + - {x: -0.95652676, y: 2.7984266} + - {x: -1.2525163, y: 3.174913} + - {x: -1.7770863, y: 3.541214} + - {x: -2.220262, y: 3.564436} + - {x: -2.5306187, y: 3.8484783} + - {x: -2.6112013, y: 4.05661} + - {x: -3.0846715, y: 4.394827} + - {x: -3.0623064, y: 4.6001973} + - {x: -2.6948276, y: 4.689101} + - {x: -2.4858437, y: 4.5957737} + - {x: -2.2803297, y: 4.391474} + - {x: -2.143732, y: 4.0019965} + - {x: -1.7603226, y: 3.9468374} + - {x: -1.7951679, y: 4.372101} + - {x: -2.236267, y: 5.0282946} + - {x: -1.6668215, y: 5.157666} + - {x: -1.3540664, y: 4.439948} + - {x: -1.2570138, y: 4.0135155} + - {x: -0.61097145, y: 3.5265284} + - {x: -0.8696252, y: 4.0489564} + - {x: -1.024796, y: 4.2295275} + - {x: -1.1893249, y: 4.623741} + - {x: -1.2826447, y: 4.9772434} + - {x: -1.2740116, y: 5.2245064} + - {x: -0.58708763, y: 5.3985176} + - {x: -0.56699, y: 4.6160717} + - {x: -0.46140712, y: 4.1999507} + - {x: -0.14181983, y: 3.711753} + - {x: 0.020745765, y: 3.6476324} + - {x: -0.014842608, y: 4.0472803} + - {x: 0.042672634, y: 4.3592806} + - {x: -0.24588203, y: 5.0692883} + - {x: 0.2021923, y: 5.1523314} + - {x: 0.47027874, y: 4.4432325} + - {x: 0.44796485, y: 4.010078} + - {x: 0.6601566, y: 3.9519782} + - {x: 0.969573, y: 5.026411} + - {x: 1.4917965, y: 5.0735054} + - {x: 1.175128, y: 4.061081} + - {x: 1.2065464, y: 3.7879329} + - {x: 1.3959025, y: 3.8277311} + - {x: 1.9009831, y: 4.4006796} + - {x: 2.2609882, y: 5.106245} + - {x: 2.8487377, y: 4.85763} + - {x: 2.4676914, y: 4.539255} + - {x: 2.1631107, y: 4.0083466} + - {x: 1.7915497, y: 3.5935783} + - {x: 2.6620197, y: 3.9903965} + - {x: 3.0860624, y: 4.148615} + - {x: 3.9016972, y: 4.94341} + - {x: 4.3785667, y: 4.67953} + - {x: 4.143064, y: 4.496742} + - {x: 3.6492512, y: 4.0971575} + - {x: 3.2161665, y: 3.7039447} +--- !u!66 &1617661206 +CompositeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1617661204} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_GeometryType: 0 + m_GenerationType: 0 + m_EdgeRadius: 0 + m_ColliderPaths: + - m_Collider: {fileID: 778552134} + m_ColliderPaths: + - - X: 53526956 + Y: 104636528 + - X: 47350996 + Y: 101567480 + - X: 46200592 + Y: 97908888 + - X: 46591416 + Y: 96138696 + - X: 49905488 + Y: 98022248 + - X: 56776476 + Y: 99840472 + - X: 62597504 + Y: 95844648 + - X: 57183056 + Y: 92512064 + - X: 57704612 + Y: 91012720 + - X: 61975012 + Y: 88138008 + - X: 60001276 + Y: 83267736 + - X: 57968828 + Y: 80691144 + - X: 62848024 + Y: 81552760 + - X: 66329004 + Y: 80764328 + - X: 62754920 + Y: 78492816 + - X: 63523244 + Y: 77258520 + - X: 65515176 + Y: 78174008 + - X: 69336216 + Y: 78807880 + - X: 71754152 + Y: 75991232 + - X: 68877528 + Y: 76134320 + - X: 68785112 + Y: 73986568 + - X: 70460096 + Y: 72211688 + - X: 71458920 + Y: 69592224 + - X: 70711144 + Y: 66727008 + - X: 68959440 + Y: 69900392 + - X: 66942204 + Y: 68483744 + - X: 64117900 + Y: 68984032 + - X: 62391624 + Y: 67443224 + - X: 67831888 + Y: 66693272 + - X: 63943904 + Y: 63310248 + - X: 66557008 + Y: 62867356 + - X: 69080648 + Y: 60229148 + - X: 71921280 + Y: 58968056 + - X: 72241000 + Y: 56305856 + - X: 69712368 + Y: 57090020 + - X: 71103728 + Y: 52845648 + - X: 68289600 + Y: 53914088 + - X: 66919364 + Y: 51919364 + - X: 65460988 + Y: 56909720 + - X: 63198840 + Y: 56656728 + - X: 64060272 + Y: 53792280 + - X: 63172436 + Y: 52511672 + - X: 68138688 + Y: 49147976 + - X: 68848280 + Y: 44829188 + - X: 66833784 + Y: 41228000 + - X: 66127488 + Y: 45109576 + - X: 64865608 + Y: 44639972 + - X: 63528368 + Y: 40364656 + - X: 60135908 + Y: 43774260 + - X: 57737416 + Y: 41248236 + - X: 60755024 + Y: 39985636 + - X: 62750244 + Y: 37962932 + - X: 62694636 + Y: 33688436 + - X: 59964028 + Y: 35534896 + - X: 57851256 + Y: 34825012 + - X: 59915628 + Y: 31888332 + - X: 54675132 + Y: 28132386 + - X: 49118624 + Y: 30842996 + - X: 51853172 + Y: 34421672 + - X: 49152204 + Y: 36227732 + - X: 48800544 + Y: 38934596 + - X: 46835004 + Y: 40422612 + - X: 45853588 + Y: 35907556 + - X: 42288448 + Y: 35954688 + - X: 40856724 + Y: 33937620 + - X: 38199492 + Y: 32401500 + - X: 39222492 + Y: 35626684 + - X: 39221656 + Y: 37786804 + - X: 36903324 + Y: 38612012 + - X: 34338216 + Y: 40591636 + - X: 31159896 + Y: 39300364 + - X: 32148122 + Y: 44893480 + - X: 29367334 + Y: 44021644 + - X: 25189464 + Y: 45660504 + - X: 23237288 + Y: 43645312 + - X: 21266644 + Y: 47182952 + - X: 18559262 + Y: 46903504 + - X: 16300757 + Y: 45522700 + - X: 14229414 + Y: 42067052 + - X: 10702937 + Y: 45175188 + - X: 6821952 + Y: 44408888 + - X: 2559986 + Y: 42743980 + - X: -5027587 + Y: 44521068 + - X: -8004181 + Y: 41326820 + - X: -13449942 + Y: 44795332 + - X: -18464432 + Y: 44249068 + - X: -23219060 + Y: 42807732 + - X: -24921088 + Y: 41610752 + - X: -27682908 + Y: 36044444 + - X: -30501276 + Y: 39189676 + - X: -32667540 + Y: 37052604 + - X: -34852612 + Y: 33165402 + - X: -39284684 + Y: 32115422 + - X: -39343292 + Y: 26401720 + - X: -43517920 + Y: 24748988 + - X: -45142756 + Y: 19529076 + - X: -47307148 + Y: 25160484 + - X: -46056584 + Y: 29962882 + - X: -43462552 + Y: 35599236 + - X: -46303004 + Y: 38805652 + - X: -50234564 + Y: 36282204 + - X: -51499080 + Y: 39839324 + - X: -52834796 + Y: 39621172 + - X: -55934868 + Y: 34583828 + - X: -57136572 + Y: 41197216 + - X: -52888656 + Y: 46000404 + - X: -48286400 + Y: 49116888 + - X: -54007808 + Y: 49145440 + - X: -55447844 + Y: 52870628 + - X: -58997296 + Y: 48348876 + - X: -61595272 + Y: 53984108 + - X: -58966604 + Y: 59843556 + - X: -52459220 + Y: 62909040 + - X: -51497680 + Y: 65067992 + - X: -51759640 + Y: 67333696 + - X: -56718712 + Y: 66783332 + - X: -59352464 + Y: 63665968 + - X: -62021400 + Y: 59383744 + - X: -62228012 + Y: 62994284 + - X: -60907656 + Y: 69309624 + - X: -59010240 + Y: 74804648 + - X: -53752904 + Y: 76244272 + - X: -49547376 + Y: 75650288 + - X: -48092084 + Y: 76933744 + - X: -46951508 + Y: 79343256 + - X: -50963604 + Y: 80717528 + - X: -49015184 + Y: 87253560 + - X: -53127660 + Y: 87714136 + - X: -49071512 + Y: 91882600 + - X: -43557232 + Y: 92413696 + - X: -40422540 + Y: 92636272 + - X: -40234224 + Y: 94277328 + - X: -41572064 + Y: 96487216 + - X: -37829556 + Y: 100955984 + - X: -40709084 + Y: 102473192 + - X: -35556632 + Y: 104645752 + - X: -31316680 + Y: 104089088 + - X: -28491748 + Y: 103603336 + - X: -28253932 + Y: 105230768 + - X: -33271296 + Y: 109477408 + - X: -26868706 + Y: 111246616 + - X: -20948036 + Y: 109761944 + - X: -18344440 + Y: 108495480 + - X: -16540480 + Y: 109440664 + - X: -14449447 + Y: 112793752 + - X: -17052572 + Y: 119331056 + - X: -10387702 + Y: 118230568 + - X: -4340226 + Y: 112285176 + - X: -1703627 + Y: 108701824 + - X: 1500277 + Y: 111812704 + - X: 8456728 + Y: 117455984 + - X: 15182831 + Y: 120097600 + - X: 10377641 + Y: 112200224 + - X: 11829250 + Y: 109052800 + - X: 13626671 + Y: 108485776 + - X: 15246513 + Y: 110654360 + - X: 19372280 + Y: 114499664 + - X: 24903318 + Y: 116030976 + - X: 23388882 + Y: 110572072 + - X: 27590756 + Y: 107830984 + - X: 30540028 + Y: 107079184 + - X: 37307940 + Y: 112327784 + - X: 41631776 + Y: 114117200 + - X: 39717268 + Y: 109293544 + - X: 41350604 + Y: 106361736 + - X: 42844676 + Y: 105225640 + - X: 45680076 + Y: 106491448 + - X: 49239956 + Y: 107826128 + - X: 53526956 + Y: 104636528 + - m_Collider: {fileID: 1617661205} + m_ColliderPaths: + - - X: 32161664 + Y: 37039448 + - X: 24945832 + Y: 33575696 + - X: 16725292 + Y: 28355770 + - X: 13853858 + Y: 25944918 + - X: 12265774 + Y: 21977818 + - X: 9024763 + Y: 19370184 + - X: 8191286 + Y: 14893000 + - X: 8469409 + Y: -5239951 + - X: 9151134 + Y: -9579406 + - X: 13592415 + Y: -19805832 + - X: -15145779 + Y: -19126238 + - X: -11785040 + Y: -11498156 + - X: -9134235 + Y: 3069253 + - X: -7110409 + Y: 10000720 + - X: -6562767 + Y: 16638246 + - X: -6784560 + Y: 20275488 + - X: -9565268 + Y: 27984266 + - X: -12525163 + Y: 31749130 + - X: -17770862 + Y: 35412140 + - X: -22202620 + Y: 35644360 + - X: -25306186 + Y: 38484784 + - X: -26112012 + Y: 40566100 + - X: -30846714 + Y: 43948268 + - X: -30623064 + Y: 46001972 + - X: -26948276 + Y: 46891012 + - X: -24858436 + Y: 45957736 + - X: -22803298 + Y: 43914736 + - X: -21437320 + Y: 40019964 + - X: -17603226 + Y: 39468376 + - X: -17951680 + Y: 43721008 + - X: -22362670 + Y: 50282944 + - X: -16668215 + Y: 51576664 + - X: -13540664 + Y: 44399480 + - X: -12570138 + Y: 40135156 + - X: -6109714 + Y: 35265284 + - X: -8696252 + Y: 40489564 + - X: -10247960 + Y: 42295276 + - X: -11893249 + Y: 46237412 + - X: -12826447 + Y: 49772436 + - X: -12740116 + Y: 52245064 + - X: -5870876 + Y: 53985176 + - X: -5669900 + Y: 46160716 + - X: -4614071 + Y: 41999508 + - X: -1418198 + Y: 37117528 + - X: 207457 + Y: 36476324 + - X: -148426 + Y: 40472804 + - X: 426726 + Y: 43592804 + - X: -2458820 + Y: 50692884 + - X: 2021923 + Y: 51523312 + - X: 4702787 + Y: 44432324 + - X: 4479648 + Y: 40100780 + - X: 6601566 + Y: 39519784 + - X: 9695730 + Y: 50264112 + - X: 14917965 + Y: 50735056 + - X: 11751280 + Y: 40610808 + - X: 12065464 + Y: 37879328 + - X: 13959025 + Y: 38277312 + - X: 19009830 + Y: 44006796 + - X: 22609882 + Y: 51062452 + - X: 28487378 + Y: 48576296 + - X: 24676914 + Y: 45392552 + - X: 21631108 + Y: 40083464 + - X: 17915496 + Y: 35935784 + - X: 26620198 + Y: 39903964 + - X: 30860624 + Y: 41486148 + - X: 39016972 + Y: 49434100 + - X: 43785668 + Y: 46795300 + - X: 41430640 + Y: 44967416 + - X: 36492512 + Y: 40971576 + - X: 32161664 + Y: 37039448 + m_CompositePaths: + m_Paths: + - - {x: 0.9151134, y: -0.95794064} + - {x: 0.84694093, y: -0.5239951} + - {x: 0.81912863, y: 1.4893} + - {x: 0.9024763, y: 1.9370184} + - {x: 1.2265774, y: 2.1977818} + - {x: 1.3853859, y: 2.5944917} + - {x: 1.6725292, y: 2.835577} + - {x: 2.4945831, y: 3.3575697} + - {x: 3.2161665, y: 3.703945} + - {x: 3.52765, y: 3.9867516} + - {x: 3.6903324, y: 3.8612013} + - {x: 3.9221656, y: 3.7786806} + - {x: 3.9222493, y: 3.5626683} + - {x: 3.8199492, y: 3.24015} + - {x: 4.0856724, y: 3.393762} + - {x: 4.2288446, y: 3.5954688} + - {x: 4.5853586, y: 3.5907557} + - {x: 4.6835003, y: 4.042261} + - {x: 4.8800545, y: 3.8934596} + - {x: 4.9152203, y: 3.6227732} + - {x: 5.185317, y: 3.4421673} + - {x: 4.9118624, y: 3.0842996} + - {x: 5.467513, y: 2.8132386} + - {x: 5.991563, y: 3.1888332} + - {x: 5.7851257, y: 3.4825013} + - {x: 5.9964027, y: 3.5534897} + - {x: 6.2694635, y: 3.3688436} + - {x: 6.2750244, y: 3.7962933} + - {x: 6.0755024, y: 3.9985635} + - {x: 5.7737417, y: 4.1248236} + - {x: 6.013591, y: 4.377426} + - {x: 6.352837, y: 4.0364656} + - {x: 6.486561, y: 4.4639974} + - {x: 6.612749, y: 4.5109577} + - {x: 6.6833787, y: 4.1228} + - {x: 6.884828, y: 4.4829187} + - {x: 6.813869, y: 4.914798} + - {x: 6.3172436, y: 5.2511673} + - {x: 6.4060273, y: 5.379228} + - {x: 6.3198843, y: 5.665673} + - {x: 6.5460987, y: 5.690972} + - {x: 6.6919365, y: 5.1919365} + - {x: 6.82896, y: 5.391409} + - {x: 7.110373, y: 5.284565} + - {x: 6.9712367, y: 5.709002} + - {x: 7.2241, y: 5.6305857} + - {x: 7.192128, y: 5.896806} + - {x: 6.908065, y: 6.022915} + - {x: 6.6557007, y: 6.2867355} + - {x: 6.3943906, y: 6.3310246} + - {x: 6.783189, y: 6.6693273} + - {x: 6.2391624, y: 6.7443223} + - {x: 6.41179, y: 6.898403} + - {x: 6.6942205, y: 6.8483744} + - {x: 6.895944, y: 6.9900393} + - {x: 7.0711145, y: 6.672701} + - {x: 7.145892, y: 6.9592223} + - {x: 7.0460095, y: 7.221169} + - {x: 6.8785114, y: 7.398657} + - {x: 6.887753, y: 7.613432} + - {x: 7.1754155, y: 7.5991235} + - {x: 6.933622, y: 7.8807883} + - {x: 6.5515175, y: 7.817401} + - {x: 6.3523245, y: 7.725852} + - {x: 6.275492, y: 7.849282} + - {x: 6.6329007, y: 8.076433} + - {x: 6.2848024, y: 8.155276} + - {x: 5.7968826, y: 8.069115} + - {x: 6.000128, y: 8.326774} + - {x: 6.197501, y: 8.813801} + - {x: 5.770461, y: 9.101273} + - {x: 5.7183056, y: 9.251206} + - {x: 6.2597504, y: 9.584465} + - {x: 5.6776476, y: 9.984047} + - {x: 4.990549, y: 9.802225} + - {x: 4.6591415, y: 9.61387} + - {x: 4.6200595, y: 9.790889} + - {x: 4.7351, y: 10.156748} + - {x: 5.3526955, y: 10.463653} + - {x: 4.9239955, y: 10.782613} + - {x: 4.5680075, y: 10.649145} + - {x: 4.2844677, y: 10.522564} + - {x: 4.1350603, y: 10.636173} + - {x: 3.971727, y: 10.929355} + - {x: 4.1631775, y: 11.41172} + - {x: 3.730794, y: 11.232779} + - {x: 3.0540028, y: 10.707918} + - {x: 2.7590756, y: 10.783098} + - {x: 2.3388882, y: 11.057207} + - {x: 2.490332, y: 11.603098} + - {x: 1.937228, y: 11.449966} + - {x: 1.5246513, y: 11.065436} + - {x: 1.3626671, y: 10.8485775} + - {x: 1.182925, y: 10.90528} + - {x: 1.0377641, y: 11.220022} + - {x: 1.5182831, y: 12.00976} + - {x: 0.8456728, y: 11.745599} + - {x: 0.1500277, y: 11.181271} + - {x: -0.1703627, y: 10.870183} + - {x: -0.4340226, y: 11.228518} + - {x: -1.0387702, y: 11.823057} + - {x: -1.7052572, y: 11.933105} + - {x: -1.4449447, y: 11.279375} + - {x: -1.654048, y: 10.944067} + - {x: -1.834444, y: 10.849548} + - {x: -2.0948036, y: 10.976194} + - {x: -2.6868706, y: 11.124661} + - {x: -3.3271296, y: 10.947741} + - {x: -2.8253932, y: 10.523077} + - {x: -2.8491747, y: 10.360333} + - {x: -3.131668, y: 10.408909} + - {x: -3.5556633, y: 10.464576} + - {x: -4.0709085, y: 10.247319} + - {x: -3.7829556, y: 10.095598} + - {x: -4.1572065, y: 9.648722} + - {x: -4.0234222, y: 9.427732} + - {x: -4.042254, y: 9.263627} + - {x: -4.3557234, y: 9.241369} + - {x: -4.907151, y: 9.18826} + - {x: -5.312766, y: 8.771414} + - {x: -4.9015183, y: 8.725356} + - {x: -5.0963607, y: 8.071753} + - {x: -4.695151, y: 7.9343257} + - {x: -4.8092084, y: 7.6933746} + - {x: -4.9547377, y: 7.5650287} + - {x: -5.3752904, y: 7.6244273} + - {x: -5.901024, y: 7.480465} + - {x: -6.0907655, y: 6.9309626} + - {x: -6.222801, y: 6.2994285} + - {x: -6.20214, y: 5.9383745} + - {x: -5.9352465, y: 6.3665967} + - {x: -5.671871, y: 6.6783333} + - {x: -5.175964, y: 6.73337} + - {x: -5.149768, y: 6.506799} + - {x: -5.245922, y: 6.290904} + - {x: -5.8966603, y: 5.9843554} + - {x: -6.1595273, y: 5.398411} + - {x: -5.8997297, y: 4.8348875} + - {x: -5.5447845, y: 5.2870626} + - {x: -5.4007807, y: 4.914544} + - {x: -4.82864, y: 4.911689} + - {x: -5.2888656, y: 4.6000404} + - {x: -5.7136574, y: 4.1197214} + - {x: -5.593487, y: 3.4583828} + - {x: -5.2834797, y: 3.9621172} + - {x: -5.149908, y: 3.9839325} + - {x: -5.0234566, y: 3.6282206} + - {x: -4.6303005, y: 3.8805652} + - {x: -4.3462553, y: 3.5599236} + - {x: -4.6056585, y: 2.9962883} + - {x: -4.730715, y: 2.5160484} + - {x: -4.5142756, y: 1.9529077} + - {x: -4.351792, y: 2.4748988} + - {x: -3.9343293, y: 2.640172} + - {x: -3.9284685, y: 3.2115421} + - {x: -3.4852612, y: 3.3165402} + - {x: -3.2667542, y: 3.7052605} + - {x: -3.0501277, y: 3.9189677} + - {x: -2.7682908, y: 3.6044445} + - {x: -2.5817208, y: 3.9804668} + - {x: -2.5306187, y: 3.8484786} + - {x: -2.220262, y: 3.564436} + - {x: -1.7770863, y: 3.541214} + - {x: -1.2525163, y: 3.174913} + - {x: -0.9565268, y: 2.7984266} + - {x: -0.678456, y: 2.0275488} + - {x: -0.6562767, y: 1.6638247} + - {x: -0.7110409, y: 1.000072} + - {x: -0.91342354, y: 0.3069253} + - {x: -1.178504, y: -1.1498156} + - {x: -1.5145779, y: -1.9126238} + - {x: 1.3592415, y: -1.9805832} + - - {x: 1.175128, y: 4.061081} + - {x: 1.2643868, y: 4.346451} + - {x: 1.4229414, y: 4.206705} + - {x: 1.6300757, y: 4.55227} + - {x: 1.8559263, y: 4.6903505} + - {x: 2.0595052, y: 4.7113633} + - {x: 1.900983, y: 4.4006796} + - {x: 1.3959025, y: 3.8277311} + - {x: 1.2065464, y: 3.7879329} + - - {x: 2.1631107, y: 4.0083466} + - {x: 2.4309523, y: 4.4752154} + - {x: 2.5189464, y: 4.5660505} + - {x: 2.9367335, y: 4.4021645} + - {x: 3.2148123, y: 4.489348} + - {x: 3.168866, y: 4.2293024} + - {x: 3.0860624, y: 4.148615} + - {x: 2.6620197, y: 3.9903965} + - {x: 1.7915496, y: 3.5935783} + - - {x: -1.2570138, y: 4.0135155} + - {x: -1.3540664, y: 4.439948} + - {x: -1.3701233, y: 4.4767957} + - {x: -1.3449942, y: 4.479533} + - {x: -1.0509828, y: 4.2922716} + - {x: -1.024796, y: 4.2295275} + - {x: -0.8696252, y: 4.0489564} + - {x: -0.6109714, y: 3.5265284} + - - {x: 0.44796482, y: 4.010078} + - {x: 0.4658033, y: 4.3563566} + - {x: 0.6821952, y: 4.440889} + - {x: 0.8081135, y: 4.465751} + - {x: 0.6601566, y: 3.9519784} + - - {x: -0.1418198, y: 3.711753} + - {x: -0.4614071, y: 4.1999507} + - {x: -0.5205443, y: 4.433021} + - {x: -0.5027587, y: 4.452107} + - {x: 0.0365019, y: 4.3258066} + - {x: -0.014842601, y: 4.0472803} + - {x: 0.0207457, y: 3.6476324} + - - {x: -2.143732, y: 4.0019965} + - {x: -2.2492316, y: 4.302804} + - {x: -1.8464432, y: 4.4249067} + - {x: -1.8317412, y: 4.4265084} + - {x: -1.795168, y: 4.372101} + - {x: -1.7603226, y: 3.9468377} + m_VertexDistance: 0.0005 +--- !u!50 &1617661207 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1617661204} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!1971053207 &1617661208 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1617661204} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -47 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: a94adaf94669646788de8f639270804a, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1617661209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1617661204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8e3fa9c7ff3ad4112a30689e933384ed, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 4 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 16 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &1617661210 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1617661204} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -49.4, y: 16.22, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 778552137} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1820847793 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1820847796} + - component: {fileID: 1820847795} + - component: {fileID: 1820847794} + - component: {fileID: 1820847800} + - component: {fileID: 1820847799} + - component: {fileID: 1820847798} + - component: {fileID: 1820847797} + m_Layer: 0 + m_Name: Block (Geometry Collider) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1971053207 &1820847794 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820847793} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 20 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 7d8cda48c729c46329cd9d3c69a3a4e6, type: 3} + m_Sprites: + - {fileID: 21300006, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300014, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300002, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300012, guid: a8321f6fae34f034787010a903e29648, type: 3} + - {fileID: 21300010, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300000, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300004, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300012, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300008, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 0} + - {fileID: 0} + - {fileID: 21300012, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300008, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + m_LocalAABB: + m_Center: {x: -2.2558622, y: 7.1187773, z: -0.0050049997} + m_Extent: {x: 13.562195, y: 15.5975685, z: 0.0050049997} +--- !u!114 &1820847795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820847793} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: -1.636219, y: -7.9291697, z: 0} + leftTangent: {x: 6.020996, y: 1.5137386, z: 0} + rightTangent: {x: -2.8936367, y: -0.7274895, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -15.358402, y: -2.2131429, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -8.29718, y: 14.782811, z: 0} + leftTangent: {x: -0.73890686, y: -2.238881, z: 0} + rightTangent: {x: 1.9517517, y: 5.9137793, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9383159, y: 21.970736, z: 0} + leftTangent: {x: -4.723675, y: 1.0711021, z: 0} + rightTangent: {x: 8.273635, y: -1.8760605, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 10.761995, y: 3.851832, z: 0} + leftTangent: {x: -0.6242571, y: 3.3770556, z: 0} + rightTangent: {x: 0.5823755, y: -3.1504874, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.837639, y: -2.8409967, z: 0} + leftTangent: {x: 0.4805252, y: 1.809861, z: -0} + rightTangent: {x: -0.4805252, y: -1.809861, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: a710fe91ca336478e999261a86254e9f, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &1820847796 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820847793} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.3000011, y: -26.28, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!66 &1820847797 +CompositeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820847793} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_GeometryType: 0 + m_GenerationType: 0 + m_EdgeRadius: 0 + m_ColliderPaths: + - m_Collider: {fileID: 1820847800} + m_ColliderPaths: + - - X: 10393014 + Y: 222022176 + - X: 20147738 + Y: 222166096 + - X: 20147739 + Y: 222166096 + - X: 19985760 + Y: 217168736 + - X: 10701468 + Y: 217031696 + - - X: 102324680 + Y: 7954787 + - X: 98509256 + Y: 11186286 + - X: 96290264 + Y: 13065676 + - X: 94626704 + Y: 14340032 + - X: 94693832 + Y: 14417785 + - X: 96290264 + Y: 13065676 + - X: 98595933 + Y: 11299438 + - X: 98509256 + Y: 11186286 + - X: 102324680 + Y: 7954787 + - X: 102565168 + Y: 8258840 + - X: 98595933 + Y: 11299438 + - X: 96290264 + Y: 13065676 + - X: 94693832 + Y: 14417785 + - X: 94652691 + Y: 14373823 + - X: 94626704 + Y: 14340032 + - X: 96290264 + Y: 13065676 + - X: 98509256 + Y: 11186286 + - X: 94186000 + Y: 6561857 + - X: 97717224 + Y: 3022021 + - - X: 31933232 + Y: -55807752 + - X: 36600768 + Y: -52652708 + - X: 39578284 + Y: -56669468 + - X: 34572578 + Y: -60054378 + - X: 37211924 + Y: -64301004 + - X: 42555804 + Y: -60686232 + - X: 39578284 + Y: -56669468 + - X: 36600768 + Y: -52652708 + - X: 36639492 + Y: -52615280 + - X: 39788140 + Y: -56499346 + - X: 39578284 + Y: -56669468 + - X: 42555804 + Y: -60686232 + - X: 42936792 + Y: -60383416 + - X: 39788140 + Y: -56499346 + - X: 36639492 + Y: -52615280 + - X: 40475260 + Y: -49513032 + - X: 43804755 + Y: -53243241 + - X: 39788140 + Y: -56499346 + - X: 42936792 + Y: -60383416 + - X: 47134252 + Y: -56973452 + - X: 43804755 + Y: -53243241 + - X: 40475260 + Y: -49513032 + - X: 43655352 + Y: -46391920 + - X: 46243324 + Y: -43282444 + - X: 48340096 + Y: -40166372 + - X: 50039404 + Y: -37017080 + - X: 54538519 + Y: -39198350 + - X: 52618876 + Y: -42753272 + - X: 56897656 + Y: -45340172 + - X: 59037636 + Y: -41379620 + - X: 54538519 + Y: -39198350 + - X: 50039404 + Y: -37017080 + - X: 51424804 + Y: -33805964 + - X: 56083976 + Y: -35620389 + - X: 54538520 + Y: -39198348 + - X: 54538519 + Y: -39198350 + - X: 59037636 + Y: -41379620 + - X: 60743144 + Y: -37434812 + - X: 56083976 + Y: -35620389 + - X: 51424804 + Y: -33805964 + - X: 52552380 + Y: -30556802 + - X: 57274444 + Y: -32200620 + - X: 56083976 + Y: -35620388 + - X: 56083976 + Y: -35620389 + - X: 60743144 + Y: -37434812 + - X: 61996504 + Y: -33844436 + - X: 57274444 + Y: -32200620 + - X: 52552380 + Y: -30556802 + - X: 52571016 + Y: -30508956 + - X: 53664660 + Y: -26736768 + - X: 55548876 + Y: -22356758 + - X: 59913445 + Y: -24796133 + - X: 59913444 + Y: -24796134 + - X: 58376388 + Y: -28409968 + - X: 63088116 + Y: -30083168 + - X: 64278012 + Y: -27235508 + - X: 59913445 + Y: -24796133 + - X: 55548876 + Y: -22356758 + - X: 58609584 + Y: -18013564 + - X: 62394320 + Y: -13960872 + - X: 65902014 + Y: -17524026 + - X: 65902012 + Y: -17524028 + - X: 62482156 + Y: -21176348 + - X: 66354728 + Y: -24339132 + - X: 69409712 + Y: -21087184 + - X: 65902014 + Y: -17524026 + - X: 62394320 + Y: -13960872 + - X: 66716280 + Y: -10035498 + - X: 71416376 + Y: -6137917 + - X: 74573074 + Y: -10015445 + - X: 74573072 + Y: -10015447 + - X: 69992496 + Y: -13812590 + - X: 73268712 + Y: -17589682 + - X: 77729776 + Y: -13892977 + - X: 74573074 + Y: -10015445 + - X: 71416376 + Y: -6137917 + - X: 72768800 + Y: -5056467 + - X: 75890964 + Y: -8961859 + - X: 74573074 + Y: -10015445 + - X: 77729776 + Y: -13892977 + - X: 79013128 + Y: -12867252 + - X: 75890964 + Y: -8961859 + - X: 72768800 + Y: -5056467 + - X: 76332624 + Y: -2207380 + - X: 81295544 + Y: 1795032 + - X: 86129328 + Y: 5893939 + - X: 89450206 + Y: 2156048 + - X: 84482448 + Y: -2057712 + - X: 87669352 + Y: -5910456 + - X: 92771080 + Y: -1581838 + - X: 89450206 + Y: 2156048 + - X: 86129328 + Y: 5893939 + - X: 90654776 + Y: 10101693 + - X: 94652691 + Y: 14373823 + - X: 98078680 + Y: 18828530 + - X: 102239535 + Y: 16055930 + - X: 98595933 + Y: 11299438 + - X: 102565168 + Y: 8258840 + - X: 106400384 + Y: 13283334 + - X: 102239535 + Y: 16055930 + - X: 98078680 + Y: 18828530 + - X: 100666808 + Y: 23314944 + - X: 102355720 + Y: 27879562 + - X: 107198912 + Y: 26637197 + - X: 107198912 + Y: 26637196 + - X: 105196256 + Y: 21197374 + - X: 109725704 + Y: 19079804 + - X: 112042112 + Y: 25394830 + - X: 107198912 + Y: 26637197 + - X: 102355720 + Y: 27879562 + - X: 103070640 + Y: 32593186 + - X: 108066976 + Y: 32401981 + - X: 107198912 + Y: 26637197 + - X: 112042112 + Y: 25394830 + - X: 113063320 + Y: 32210776 + - X: 108066976 + Y: 32401981 + - X: 103070640 + Y: 32593186 + - X: 102642248 + Y: 38046636 + - X: 107619952 + Y: 38518318 + - X: 108066976 + Y: 32401982 + - X: 108066976 + Y: 32401981 + - X: 113063320 + Y: 32210776 + - X: 112597656 + Y: 38990000 + - X: 112494280 + Y: 39887244 + - X: 107527872 + Y: 39308545 + - X: 107619952 + Y: 38518320 + - X: 107619952 + Y: 38518318 + - X: 102642248 + Y: 38046636 + - X: 102561472 + Y: 38729848 + - X: 107527872 + Y: 39308545 + - X: 112494280 + Y: 39887244 + - X: 111676712 + Y: 46875004 + - X: 106692584 + Y: 46476916 + - X: 107527872 + Y: 39308545 + - X: 102561472 + Y: 38729848 + - X: 101708448 + Y: 46078828 + - X: 106692584 + Y: 46476916 + - X: 111676712 + Y: 46875004 + - X: 111250696 + Y: 56748828 + - X: 106252864 + Y: 56601782 + - X: 106252864 + Y: 56601780 + - X: 106692584 + Y: 46476916 + - X: 101708448 + Y: 46078828 + - X: 101255024 + Y: 56454736 + - X: 106252864 + Y: 56601782 + - X: 111250696 + Y: 56748828 + - X: 111068408 + Y: 68597368 + - X: 106068880 + Y: 68528848 + - X: 106252864 + Y: 56601782 + - X: 101255024 + Y: 56454736 + - X: 101069344 + Y: 68460328 + - X: 106068880 + Y: 68528848 + - X: 111068408 + Y: 68597368 + - X: 111054160 + Y: 69786336 + - X: 110907784 + Y: 81987800 + - X: 105908664 + Y: 81894072 + - X: 106054524 + Y: 69726408 + - X: 101054888 + Y: 69666480 + - X: 100909536 + Y: 81800344 + - X: 105908664 + Y: 81894072 + - X: 110907784 + Y: 81987800 + - X: 110536424 + Y: 96530352 + - X: 110327256 + Y: 100459192 + - X: 105334354 + Y: 100192756 + - X: 105540304 + Y: 96333360 + - X: 100544184 + Y: 96136368 + - X: 100341464 + Y: 99926320 + - X: 105334354 + Y: 100192756 + - X: 110327256 + Y: 100459192 + - X: 109718096 + Y: 111853760 + - X: 104731888 + Y: 111482688 + - X: 105334354 + Y: 100192756 + - X: 100341464 + Y: 99926320 + - X: 99745672 + Y: 111111616 + - X: 104731888 + Y: 111482688 + - X: 109718096 + Y: 111853760 + - X: 108213016 + Y: 127596648 + - X: 107644136 + Y: 131302816 + - X: 102702441 + Y: 130541497 + - X: 103251440 + Y: 126977960 + - X: 98289864 + Y: 126359272 + - X: 97760736 + Y: 129780176 + - X: 102702441 + Y: 130541497 + - X: 107644136 + Y: 131302816 + - X: 105776112 + Y: 143404272 + - X: 102153784 + Y: 158925824 + - X: 101137040 + Y: 161929488 + - X: 96404139 + Y: 160317153 + - X: 97346752 + Y: 157550176 + - X: 92539720 + Y: 156174528 + - X: 91671232 + Y: 158704816 + - X: 96404139 + Y: 160317153 + - X: 101137040 + Y: 161929488 + - X: 97079360 + Y: 173809104 + - X: 92458639 + Y: 171898897 + - X: 92458640 + Y: 171898896 + - X: 96404139 + Y: 160317153 + - X: 91671232 + Y: 158704816 + - X: 87837912 + Y: 169988688 + - X: 92458639 + Y: 171898897 + - X: 97079360 + Y: 173809104 + - X: 90270616 + Y: 187689264 + - X: 85970805 + Y: 185137460 + - X: 85970808 + Y: 185137456 + - X: 92458639 + Y: 171898897 + - X: 87837912 + Y: 169988688 + - X: 81671008 + Y: 182585664 + - X: 85970805 + Y: 185137460 + - X: 90270616 + Y: 187689264 + - X: 88032672 + Y: 190881440 + - X: 83950366 + Y: 187994441 + - X: 85970805 + Y: 185137460 + - X: 81671008 + Y: 182585664 + - X: 79868056 + Y: 185107440 + - X: 83950366 + Y: 187994441 + - X: 88032672 + Y: 190881440 + - X: 81437424 + Y: 200167344 + - X: 77651260 + Y: 196901627 + - X: 83950366 + Y: 187994441 + - X: 79868056 + Y: 185107440 + - X: 73865088 + Y: 193635904 + - X: 77651260 + Y: 196901627 + - X: 81437424 + Y: 200167344 + - X: 70313896 + Y: 210792576 + - X: 67268092 + Y: 206827331 + - X: 67268096 + Y: 206827328 + - X: 77651256 + Y: 196901632 + - X: 77651260 + Y: 196901627 + - X: 73865088 + Y: 193635904 + - X: 64222296 + Y: 202862096 + - X: 67268092 + Y: 206827331 + - X: 70313896 + Y: 210792576 + - X: 65425120 + Y: 213804624 + - X: 62823962 + Y: 209534485 + - X: 67268092 + Y: 206827331 + - X: 64222296 + Y: 202862096 + - X: 60222808 + Y: 205264352 + - X: 62823962 + Y: 209534485 + - X: 65425120 + Y: 213804624 + - X: 56705652 + Y: 219080656 + - X: 40624524 + Y: 224550800 + - X: 39383162 + Y: 219707359 + - X: 54589372 + Y: 214550608 + - X: 52473092 + Y: 210020560 + - X: 38141796 + Y: 214863904 + - X: 39383162 + Y: 219707359 + - X: 40624524 + Y: 224550800 + - X: 35547276 + Y: 225462368 + - X: 34677501 + Y: 220538603 + - X: 39383160 + Y: 219707360 + - X: 39383162 + Y: 219707359 + - X: 38141796 + Y: 214863904 + - X: 33807724 + Y: 215614832 + - X: 34677501 + Y: 220538603 + - X: 35547276 + Y: 225462368 + - X: 30471752 + Y: 226353184 + - X: 20309718 + Y: 227163472 + - X: 20147739 + Y: 222166096 + - X: 29837460 + Y: 221393584 + - X: 29837461 + Y: 221393584 + - X: 29203170 + Y: 216433984 + - X: 19985760 + Y: 217168736 + - X: 20147739 + Y: 222166096 + - X: 20309718 + Y: 227163472 + - X: 10084560 + Y: 227012656 + - X: 3800289 + Y: 226332352 + - X: 4342760 + Y: 221361859 + - X: 4885229 + Y: 216391376 + - X: 1428198 + Y: 216019664 + - X: 652305 + Y: 220959088 + - X: 4342760 + Y: 221361859 + - X: 3800289 + Y: 226332352 + - X: -123588 + Y: 225898512 + - X: -10234377 + Y: 223818240 + - X: -8995380 + Y: 218974191 + - X: -7756379 + Y: 214130128 + - X: -16775162 + Y: 211361104 + - X: -18471014 + Y: 216064720 + - X: -8995380 + Y: 218974191 + - X: -10234377 + Y: 223818240 + - X: -20166866 + Y: 220768336 + - X: -26857224 + Y: 217991920 + - X: -24937056 + Y: 213375316 + - X: -23016892 + Y: 208758720 + - X: -25552040 + Y: 207710768 + - X: -27695584 + Y: 212227969 + - X: -24937056 + Y: 213375316 + - X: -26857224 + Y: 217991920 + - X: -29839134 + Y: 216745184 + - X: -27695584 + Y: 212227969 + - X: -25552040 + Y: 207710768 + - X: -34012064 + Y: 203177120 + - X: -36590079 + Y: 207461262 + - X: -36590076 + Y: 207461264 + - X: -27695586 + Y: 212227968 + - X: -27695584 + Y: 212227969 + - X: -29839134 + Y: 216745184 + - X: -39168088 + Y: 211745392 + - X: -36590079 + Y: 207461262 + - X: -34012064 + Y: 203177120 + - X: -42081472 + Y: 197757440 + - X: -45075473 + Y: 201761935 + - X: -45075472 + Y: 201761936 + - X: -36590079 + Y: 207461262 + - X: -39168088 + Y: 211745392 + - X: -48069476 + Y: 205766432 + - X: -45075473 + Y: 201761935 + - X: -42081472 + Y: 197757440 + - X: -47406344 + Y: 193331456 + - X: -50598853 + Y: 197179544 + - X: -45075473 + Y: 201761935 + - X: -48069476 + Y: 205766432 + - X: -53791376 + Y: 201027648 + - X: -50598853 + Y: 197179544 + - X: -47406344 + Y: 193331456 + - X: -49687556 + Y: 191447376 + - X: -53072735 + Y: 195127124 + - X: -50598853 + Y: 197179544 + - X: -53791376 + Y: 201027648 + - X: -56457920 + Y: 198806880 + - X: -53072735 + Y: 195127124 + - X: -49687556 + Y: 191447376 + - X: -56758256 + Y: 184241104 + - X: -60502897 + Y: 187554355 + - X: -53072740 + Y: 195127120 + - X: -53072735 + Y: 195127124 + - X: -56457920 + Y: 198806880 + - X: -64247548 + Y: 190867616 + - X: -60502897 + Y: 187554355 + - X: -56758256 + Y: 184241104 + - X: -63221280 + Y: 176130272 + - X: -67286896 + Y: 179040736 + - X: -60502900 + Y: 187554352 + - X: -60502897 + Y: 187554355 + - X: -64247548 + Y: 190867616 + - X: -71352512 + Y: 181951200 + - X: -74608456 + Y: 176881328 + - X: -70398373 + Y: 174184091 + - X: -66188280 + Y: 171486848 + - X: -69003520 + Y: 167104640 + - X: -73345723 + Y: 169583626 + - X: -73345720 + Y: 169583632 + - X: -70398373 + Y: 174184091 + - X: -74608456 + Y: 176881328 + - X: -77687920 + Y: 172062608 + - X: -73345723 + Y: 169583626 + - X: -69003520 + Y: 167104640 + - X: -74030128 + Y: 157152304 + - X: -78600357 + Y: 159180343 + - X: -73345723 + Y: 169583626 + - X: -77687920 + Y: 172062608 + - X: -83170592 + Y: 161208384 + - X: -78600357 + Y: 159180343 + - X: -74030128 + Y: 157152304 + - X: -78286704 + Y: 146081728 + - X: -82971800 + Y: 147828112 + - X: -78600360 + Y: 159180336 + - X: -78600357 + Y: 159180343 + - X: -83170592 + Y: 161208384 + - X: -87656896 + Y: 149574496 + - X: -88080384 + Y: 148400736 + - X: -89841368 + Y: 143515248 + - X: -85158797 + Y: 141762088 + - X: -80476224 + Y: 140008928 + - X: -83972416 + Y: 131006520 + - X: -88623041 + Y: 132842750 + - X: -88623040 + Y: 132842752 + - X: -85158800 + Y: 141762080 + - X: -85158797 + Y: 141762088 + - X: -89841368 + Y: 143515248 + - X: -93273656 + Y: 134678976 + - X: -88623041 + Y: 132842750 + - X: -83972416 + Y: 131006520 + - X: -88518560 + Y: 119678008 + - X: -93152874 + Y: 121555019 + - X: -93152872 + Y: 121555024 + - X: -88623041 + Y: 132842750 + - X: -93273656 + Y: 134678976 + - X: -97787192 + Y: 123432032 + - X: -93152874 + Y: 121555019 + - X: -88518560 + Y: 119678008 + - X: -89845808 + Y: 116430872 + - X: -94474097 + Y: 118322696 + - X: -93152874 + Y: 121555019 + - X: -97787192 + Y: 123432032 + - X: -99102384 + Y: 120214520 + - X: -94474097 + Y: 118322696 + - X: -89845808 + Y: 116430872 + - X: -93912296 + Y: 106482384 + - X: -98536655 + Y: 108383793 + - X: -94474097 + Y: 118322696 + - X: -99102384 + Y: 120214520 + - X: -103161008 + Y: 110285200 + - X: -98536655 + Y: 108383793 + - X: -93912296 + Y: 106482384 + - X: -99945080 + Y: 91896256 + - X: -104562704 + Y: 93813952 + - X: -98536656 + Y: 108383792 + - X: -98536655 + Y: 108383793 + - X: -103161008 + Y: 110285200 + - X: -109180328 + Y: 95731648 + - X: -110706824 + Y: 92071008 + - X: -115632152 + Y: 80259752 + - X: -111019383 + Y: 78330403 + - X: -106406616 + Y: 76401056 + - X: -113085912 + Y: 60479912 + - X: -117695007 + Y: 62418018 + - X: -111019384 + Y: 78330400 + - X: -111019383 + Y: 78330403 + - X: -115632152 + Y: 80259752 + - X: -122304104 + Y: 64356124 + - X: -117695007 + Y: 62418018 + - X: -113085912 + Y: 60479912 + - X: -113250264 + Y: 60089964 + - X: -117857753 + Y: 62031879 + - X: -117695008 + Y: 62418016 + - X: -117695007 + Y: 62418018 + - X: -122304104 + Y: 64356124 + - X: -122465240 + Y: 63973792 + - X: -117857753 + Y: 62031879 + - X: -113250264 + Y: 60089964 + - X: -119771744 + Y: 44616760 + - X: -124377968 + Y: 46561700 + - X: -117857753 + Y: 62031879 + - X: -122465240 + Y: 63973792 + - X: -128984184 + Y: 48506636 + - X: -124377968 + Y: 46561700 + - X: -119771744 + Y: 44616760 + - X: -125106280 + Y: 32006032 + - X: -129711220 + Y: 33953990 + - X: -124377968 + Y: 46561700 + - X: -128984184 + Y: 48506636 + - X: -134316160 + Y: 35901948 + - X: -135460496 + Y: 33196752 + - X: -141521152 + Y: 18911750 + - X: -136919152 + Y: 16956866 + - X: -132317152 + Y: 15001981 + - X: -137020544 + Y: 3943316 + - X: -141621676 + Y: 5900241 + - X: -136919152 + Y: 16956866 + - X: -141521152 + Y: 18911750 + - X: -146222816 + Y: 7857169 + - X: -141621676 + Y: 5900241 + - X: -137020544 + Y: 3943316 + - X: -137753712 + Y: 2219503 + - X: -142354113 + Y: 4178126 + - X: -142354112 + Y: 4178128 + - X: -141621676 + Y: 5900241 + - X: -146222816 + Y: 7857169 + - X: -146954528 + Y: 6136755 + - X: -142354113 + Y: 4178126 + - X: -137753712 + Y: 2219503 + - X: -142350640 + Y: -8566740 + - X: -146949712 + Y: -6604964 + - X: -142354113 + Y: 4178126 + - X: -146954528 + Y: 6136755 + - X: -151548784 + Y: -4643188 + - X: -155092272 + Y: -12943050 + - X: -157373728 + Y: -18278940 + - X: -152776927 + Y: -20244381 + - X: -152532612 + Y: -20348842 + - X: -153583995 + Y: -22131379 + - X: -153584016 + Y: -22131428 + - X: -153583989 + Y: -22131444 + - X: -152090629 + Y: -22770719 + - X: -152195818 + Y: -22950227 + - X: -154723696 + Y: -27264130 + - X: -150753744 + Y: -29575274 + - X: -148253552 + Y: -25245256 + - X: -152195818 + Y: -22950227 + - X: -152090629 + Y: -22770719 + - X: -151044332 + Y: -20985181 + - X: -152532612 + Y: -20348842 + - X: -152776927 + Y: -20244381 + - X: -150494352 + Y: -14907514 + - X: -145896432 + Y: -16871978 + - X: -147252128 + Y: -20042711 + - X: -145753360 + Y: -20915238 + - X: -139624144 + Y: -24425314 + - X: -142090854 + Y: -28774483 + - X: -144557568 + Y: -33123658 + - X: -136468608 + Y: -37667136 + - X: -134041235 + Y: -33295878 + - X: -142090848 + Y: -28774486 + - X: -142090854 + Y: -28774483 + - X: -139624144 + Y: -24425314 + - X: -131613864 + Y: -28924622 + - X: -134041235 + Y: -33295878 + - X: -136468608 + Y: -37667136 + - X: -129840568 + Y: -41305652 + - X: -127434512 + Y: -36922628 + - X: -134041232 + Y: -33295880 + - X: -134041235 + Y: -33295878 + - X: -131613864 + Y: -28924622 + - X: -125028456 + Y: -32539604 + - X: -122057560 + Y: -34170564 + - X: -124438297 + Y: -38567396 + - X: -126819032 + Y: -42964224 + - X: -115940304 + Y: -48773728 + - X: -113615616 + Y: -44347008 + - X: -124438296 + Y: -38567396 + - X: -124438297 + Y: -38567396 + - X: -122057560 + Y: -34170564 + - X: -111290928 + Y: -39920288 + - X: -99650600 + Y: -45930640 + - X: -101906757 + Y: -50392678 + - X: -104162912 + Y: -54854712 + - X: -103067864 + Y: -55396988 + - X: -100849654 + Y: -50915965 + - X: -101906757 + Y: -50392678 + - X: -99650600 + Y: -45930640 + - X: -98631448 + Y: -46434948 + - X: -100849654 + Y: -50915965 + - X: -103067864 + Y: -55396988 + - X: -91815808 + Y: -60966672 + - X: -89645284 + Y: -56462358 + - X: -100849654 + Y: -50915965 + - X: -98631448 + Y: -46434948 + - X: -87474760 + Y: -51958044 + - X: -75104128 + Y: -57758420 + - X: -77164793 + Y: -62314044 + - X: -79225456 + Y: -66869664 + - X: -75718280 + Y: -68399312 + - X: -73719944 + Y: -63816010 + - X: -77164792 + Y: -62314044 + - X: -77164793 + Y: -62314044 + - X: -75104128 + Y: -57758420 + - X: -71721608 + Y: -59232708 + - X: -62883936 + Y: -63086856 + - X: -64798824 + Y: -67705648 + - X: -66713708 + Y: -72324432 + - X: -54593888 + Y: -77092632 + - X: -52880984 + Y: -72395192 + - X: -64798824 + Y: -67705648 + - X: -62883936 + Y: -63086856 + - X: -51168080 + Y: -67697752 + - X: -44173824 + Y: -70048440 + - X: -45767728 + Y: -74787579 + - X: -47361632 + Y: -79526720 + - X: -43161384 + Y: -80935728 + - X: -41744829 + Y: -76140592 + - X: -45767728 + Y: -74787579 + - X: -44173824 + Y: -70048440 + - X: -40328272 + Y: -71345448 + - X: -41744829 + Y: -76140592 + - X: -43161384 + Y: -80935728 + - X: -32671252 + Y: -83609272 + - X: -31723930 + Y: -78699840 + - X: -41744828 + Y: -76140592 + - X: -41744829 + Y: -76140592 + - X: -40328272 + Y: -71345448 + - X: -30776606 + Y: -73790400 + - X: -31723930 + Y: -78699840 + - X: -32671252 + Y: -83609272 + - X: -23805914 + Y: -84787912 + - X: -23151859 + Y: -79830880 + - X: -31723928 + Y: -78699840 + - X: -31723930 + Y: -78699840 + - X: -30776606 + Y: -73790400 + - X: -22497802 + Y: -74873840 + - X: -23151859 + Y: -79830880 + - X: -23805914 + Y: -84787912 + - X: -15143077 + Y: -84140800 + - X: -16362191 + Y: -79291696 + - X: -16364040 + Y: -79284342 + - X: -17693460 + Y: -74472176 + - X: -17581304 + Y: -74442600 + - X: -16364040 + Y: -79284342 + - X: -16362021 + Y: -79291651 + - X: -16362190 + Y: -79291696 + - X: -16362191 + Y: -79291696 + - X: -15143077 + Y: -84140800 + - X: -15030584 + Y: -84111120 + - X: -16362021 + Y: -79291651 + - X: -16364040 + Y: -79284342 + - X: -17581304 + Y: -74442600 + - X: -17584459 + Y: -74442877 + - X: -17693460 + Y: -74472176 + - X: -16364040 + Y: -79284342 + - X: -16362191 + Y: -79291696 + - X: -23151858 + Y: -79830880 + - X: -23151859 + Y: -79830880 + - X: -22497802 + Y: -74873840 + - X: -17584459 + Y: -74442877 + - X: -6366700 + Y: -71427568 + - X: 3560152 + Y: -68363048 + - X: 5137188 + Y: -73107832 + - X: -4979852 + Y: -76231384 + - X: -3593004 + Y: -81035200 + - X: 6714225 + Y: -77852616 + - X: 5137188 + Y: -73107832 + - X: 3560152 + Y: -68363048 + - X: 11091490 + Y: -65678092 + - X: 12769831 + Y: -70387990 + - X: 5137188 + Y: -73107832 + - X: 6714225 + Y: -77852616 + - X: 14448175 + Y: -75097896 + - X: 12769831 + Y: -70387990 + - X: 11091490 + Y: -65678092 + - X: 12274513 + Y: -65258184 + - X: 14069940 + Y: -69924704 + - X: 12769831 + Y: -70387990 + - X: 14448175 + Y: -75097896 + - X: 15865369 + Y: -74591232 + - X: 14069940 + Y: -69924704 + - X: 12274513 + Y: -65258184 + - X: 19854624 + Y: -62122888 + - X: 26380086 + Y: -58968584 + - - X: -148178928 + Y: -22210334 + - X: -151044332 + Y: -20985181 + - X: -149667936 + Y: -18636318 + - X: -151043840 + Y: -17824748 + - X: -152532612 + Y: -20348842 + - X: -151044332 + Y: -20985181 + - X: -152090629 + Y: -22770719 + - X: -148987472 + Y: -24099112 + - - X: -152195818 + Y: -22950227 + - X: -152195824 + Y: -22950224 + - X: -153583989 + Y: -22131444 + - X: -153584024 + Y: -22131429 + - X: -153583995 + Y: -22131379 + - X: -152776927 + Y: -20244381 + - X: -157373728 + Y: -18278940 + - X: -158180576 + Y: -20163746 + - X: -153584024 + Y: -22131429 + - X: -156124208 + Y: -26438108 + - X: -154723696 + Y: -27264130 + - - X: -147252128 + Y: -20042711 + - X: -149667936 + Y: -18636318 + - X: -151044332 + Y: -20985181 + - X: -148178928 + Y: -22210334 + - - X: 4885229 + Y: 216391376 + - X: 4342760 + Y: 221361859 + - X: 10393014 + Y: 222022176 + - X: 10701468 + Y: 217031696 + - - X: 33807724 + Y: 215614832 + - X: 29203170 + Y: 216433984 + - X: 29837461 + Y: 221393584 + - X: 34677501 + Y: 220538603 + - - X: -7756379 + Y: 214130128 + - X: -8995380 + Y: 218974191 + - X: -8995378 + Y: 218974192 + - X: 652304 + Y: 220959088 + - X: 652305 + Y: 220959088 + - X: 1428198 + Y: 216019664 + - - X: -23016892 + Y: 208758720 + - X: -24937056 + Y: 213375316 + - X: -18471014 + Y: 216064720 + - X: -16775162 + Y: 211361104 + - - X: 60222808 + Y: 205264352 + - X: 52473092 + Y: 210020560 + - X: 54589372 + Y: 214550608 + - X: 62823962 + Y: 209534485 + - - X: -66188280 + Y: 171486848 + - X: -70398373 + Y: 174184091 + - X: -67286896 + Y: 179040736 + - X: -63221280 + Y: 176130272 + - - X: 95957936 + Y: 141506000 + - X: 92539720 + Y: 156174528 + - X: 97346752 + Y: 157550176 + - X: 100867024 + Y: 142455136 + - - X: -78673104 + Y: 145009120 + - X: -83376744 + Y: 146704928 + - X: -82971800 + Y: 147828112 + - X: -78286704 + Y: 146081728 + - - X: -80476224 + Y: 140008928 + - X: -85158797 + Y: 141762088 + - X: -83376744 + Y: 146704928 + - X: -78673104 + Y: 145009120 + - - X: 97760736 + Y: 129780176 + - X: 95957936 + Y: 141506000 + - X: 100867024 + Y: 142455136 + - X: 102702441 + Y: 130541497 + - - X: 99745672 + Y: 111111616 + - X: 98289864 + Y: 126359272 + - X: 103251440 + Y: 126977960 + - X: 104731888 + Y: 111482688 + - - X: 100909536 + Y: 81800344 + - X: 100544184 + Y: 96136368 + - X: 105540304 + Y: 96333360 + - X: 105908664 + Y: 81894072 + - - X: -101477168 + Y: 88222208 + - X: -106091996 + Y: 90146608 + - X: -104562704 + Y: 93813952 + - X: -99945080 + Y: 91896256 + - - X: -106406616 + Y: 76401056 + - X: -111019383 + Y: 78330403 + - X: -106091996 + Y: 90146608 + - X: -101477168 + Y: 88222208 + - - X: 101069344 + Y: 68460328 + - X: 101054888 + Y: 69666480 + - X: 106054524 + Y: 69726408 + - X: 106068880 + Y: 68528848 + - - X: -126252688 + Y: 29295948 + - X: -130856592 + Y: 31246350 + - X: -129711220 + Y: 33953990 + - X: -125106280 + Y: 32006032 + - - X: -132317152 + Y: 15001981 + - X: -136919152 + Y: 16956866 + - X: -130856592 + Y: 31246350 + - X: -126252688 + Y: 29295948 + - - X: 102239535 + Y: 16055930 + - X: 106400384 + Y: 13283334 + - X: 109725704 + Y: 19079804 + - X: 105196256 + Y: 21197374 + - X: 102239536 + Y: 16055932 + - - X: 89450206 + Y: 2156048 + - X: 92771080 + Y: -1581838 + - X: 97717224 + Y: 3022021 + - X: 94186000 + Y: 6561857 + - X: 89450208 + Y: 2156050 + - - X: 82593824 + Y: -10004652 + - X: 79463224 + Y: -6106016 + - X: 84482448 + Y: -2057712 + - X: 87669352 + Y: -5910456 + - - X: 79013128 + Y: -12867252 + - X: 82593824 + Y: -10004652 + - X: 79463224 + Y: -6106016 + - X: 75890964 + Y: -8961859 + - - X: -145896432 + Y: -16871978 + - X: -150494352 + Y: -14907514 + - X: -146949712 + Y: -6604964 + - X: -142350640 + Y: -8566740 + - - X: 69409712 + Y: -21087184 + - X: 65902014 + Y: -17524026 + - X: 69992496 + Y: -13812590 + - X: 73268712 + Y: -17589682 + - - X: 64278012 + Y: -27235508 + - X: 59913445 + Y: -24796133 + - X: 62482156 + Y: -21176348 + - X: 66354728 + Y: -24339132 + - - X: -144557568 + Y: -33123658 + - X: -150753744 + Y: -29575274 + - X: -148253552 + Y: -25245256 + - X: -142090854 + Y: -28774483 + - - X: 62101504 + Y: -33537130 + - X: 57336260 + Y: -32023043 + - X: 58376388 + Y: -28409968 + - X: 63088116 + Y: -30083168 + - - X: 57274444 + Y: -32200620 + - X: 61996504 + Y: -33844436 + - X: 62101504 + Y: -33537130 + - X: 57336260 + Y: -32023043 + - X: 57336260 + Y: -32023044 + - - X: -126819032 + Y: -42964224 + - X: -129840568 + Y: -41305652 + - X: -127434512 + Y: -36922628 + - X: -124438297 + Y: -38567396 + - - X: -104162912 + Y: -54854712 + - X: -101906757 + Y: -50392678 + - X: -101906760 + Y: -50392676 + - X: -113615616 + Y: -44347008 + - X: -115940304 + Y: -48773728 + - - X: 54244756 + Y: -49280540 + - X: 50244040 + Y: -46281492 + - X: 52618876 + Y: -42753272 + - X: 56897656 + Y: -45340172 + - - X: 51010672 + Y: -53166824 + - X: 54244756 + Y: -49280540 + - X: 50244040 + Y: -46281492 + - X: 47333012 + Y: -49779372 + - - X: 43804755 + Y: -53243241 + - X: 47134252 + Y: -56973452 + - X: 51010672 + Y: -53166824 + - X: 47333012 + Y: -49779372 + - X: 43804756 + Y: -53243240 + - - X: -79225456 + Y: -66869664 + - X: -77164793 + Y: -62314044 + - X: -89645280 + Y: -56462360 + - X: -89645284 + Y: -56462358 + - X: -91815808 + Y: -60966672 + - - X: 28706627 + Y: -63394328 + - X: 31033168 + Y: -67820072 + - X: 37211924 + Y: -64301004 + - X: 34572578 + Y: -60054378 + - X: 34572576 + Y: -60054380 + - - X: 21899419 + Y: -66685652 + - X: 23944214 + Y: -71248416 + - X: 31033168 + Y: -67820072 + - X: 28706627 + Y: -63394328 + - X: 28706626 + Y: -63394328 + - - X: -66713708 + Y: -72324432 + - X: -75718280 + Y: -68399312 + - X: -73719944 + Y: -63816010 + - X: -64798824 + Y: -67705648 + - - X: 14069941 + Y: -69924704 + - X: 14069940 + Y: -69924704 + - X: 15865369 + Y: -74591232 + - X: 23944214 + Y: -71248416 + - X: 21899419 + Y: -66685652 + - X: 21899418 + Y: -66685652 + - - X: -47361632 + Y: -79526720 + - X: -54593888 + Y: -77092632 + - X: -52880984 + Y: -72395192 + - X: -45767728 + Y: -74787579 + - - X: -15030584 + Y: -84111120 + - X: -16362021 + Y: -79291651 + - X: -4979852 + Y: -76231384 + - X: -3593004 + Y: -81035200 + m_CompositePaths: + m_Paths: + - - {x: -0.89953804, y: 21.897419} + - {x: -0.8995378, y: 21.897419} + - {x: 0.0652304, y: 22.09591} + - {x: 0.0652305, y: 22.09591} + - {x: 0.434276, y: 22.136187} + - {x: 0.48852292, y: 21.639137} + - {x: 0.1428198, y: 21.601967} + - {x: -0.7756379, y: 21.413013} + - - {x: -0.7756379, y: 21.413013} + - {x: -1.6775162, y: 21.13611} + - {x: -2.3016891, y: 20.875872} + - {x: -2.4937055, y: 21.337532} + - {x: -1.8471014, y: 21.606472} + - {x: -0.89953804, y: 21.897419} + - - {x: -2.7695584, y: 21.222797} + - {x: -2.4937055, y: 21.337532} + - {x: -2.3016891, y: 20.875872} + - {x: -2.555204, y: 20.771076} + - - {x: -3.659008, y: 20.746126} + - {x: -3.6590075, y: 20.746126} + - {x: -2.7695587, y: 21.222797} + - {x: -2.7695584, y: 21.222797} + - {x: -2.555204, y: 20.771076} + - {x: -3.4012065, y: 20.317713} + - - {x: -4.5075474, y: 20.176193} + - {x: -4.5075474, y: 20.176193} + - {x: -3.659008, y: 20.746126} + - {x: -3.4012065, y: 20.317713} + - {x: -4.208147, y: 19.775743} + - - {x: -5.059885, y: 19.717955} + - {x: -4.5075474, y: 20.176193} + - {x: -4.208147, y: 19.775743} + - {x: -4.7406344, y: 19.333145} + - - {x: -5.307274, y: 19.512712} + - {x: -5.059885, y: 19.717955} + - {x: -4.7406344, y: 19.333145} + - {x: -4.9687557, y: 19.144737} + - - {x: -6.0502896, y: 18.755436} + - {x: -5.307274, y: 19.512712} + - {x: -5.307274, y: 19.512712} + - {x: -4.9687557, y: 19.144737} + - {x: -5.6758256, y: 18.42411} + - - {x: -6.0502896, y: 18.755436} + - {x: -5.6758256, y: 18.42411} + - {x: -6.3221283, y: 17.613028} + - {x: -6.6188283, y: 17.148685} + - {x: -7.039838, y: 17.41841} + - {x: -6.7286897, y: 17.904074} + - {x: -6.05029, y: 18.755436} + - - {x: -7.3345723, y: 16.958363} + - {x: -7.3345723, y: 16.958363} + - {x: -7.039838, y: 17.41841} + - {x: -6.6188283, y: 17.148685} + - {x: -6.900352, y: 16.710464} + - - {x: -7.860036, y: 15.918034} + - {x: -7.3345723, y: 16.958363} + - {x: -6.900352, y: 16.710464} + - {x: -7.4030128, y: 15.715231} + - - {x: -7.860036, y: 15.918034} + - {x: -7.860036, y: 15.918034} + - {x: -7.4030128, y: 15.715231} + - {x: -7.8286705, y: 14.608173} + - {x: -7.8673105, y: 14.500912} + - {x: -8.047623, y: 14.000893} + - {x: -8.51588, y: 14.1762085} + - {x: -8.337674, y: 14.670493} + - {x: -8.29718, y: 14.782811} + - - {x: -8.862304, y: 13.284275} + - {x: -8.862304, y: 13.284275} + - {x: -8.51588, y: 14.1762085} + - {x: -8.51588, y: 14.1762085} + - {x: -8.047623, y: 14.000893} + - {x: -8.397242, y: 13.100652} + - - {x: -9.315288, y: 12.155501} + - {x: -9.315288, y: 12.155502} + - {x: -8.862304, y: 13.284275} + - {x: -8.397242, y: 13.100652} + - {x: -8.851856, y: 11.967801} + - - {x: -9.44741, y: 11.83227} + - {x: -9.315288, y: 12.155501} + - {x: -8.851856, y: 11.967801} + - {x: -8.984581, y: 11.643087} + - - {x: -9.853665, y: 10.838379} + - {x: -9.44741, y: 11.83227} + - {x: -8.984581, y: 11.643087} + - {x: -9.39123, y: 10.648238} + - - {x: -9.853665, y: 10.838379} + - {x: -9.853665, y: 10.838379} + - {x: -9.39123, y: 10.648238} + - {x: -9.994508, y: 9.189626} + - {x: -10.1477165, y: 8.822221} + - {x: -10.640662, y: 7.6401057} + - {x: -11.101938, y: 7.83304} + - {x: -10.6092005, y: 9.014661} + - {x: -10.45627, y: 9.381395} + - - {x: -11.769501, y: 6.2418017} + - {x: -11.101938, y: 7.83304} + - {x: -11.101938, y: 7.83304} + - {x: -10.640662, y: 7.6401057} + - {x: -11.308591, y: 6.0479913} + - - {x: -11.785775, y: 6.203188} + - {x: -11.769501, y: 6.2418017} + - {x: -11.769501, y: 6.2418017} + - {x: -11.308591, y: 6.0479913} + - {x: -11.3250265, y: 6.0089965} + - - {x: -12.437797, y: 4.65617} + - {x: -11.785775, y: 6.203188} + - {x: -11.3250265, y: 6.0089965} + - {x: -11.977175, y: 4.461676} + - - {x: -12.437797, y: 4.65617} + - {x: -11.977175, y: 4.461676} + - {x: -12.510628, y: 3.2006032} + - {x: -12.625269, y: 2.9295948} + - {x: -13.231715, y: 1.5001981} + - {x: -13.6919155, y: 1.6956866} + - {x: -13.085659, y: 3.124635} + - {x: -12.971122, y: 3.3953993} + - - {x: -14.1621685, y: 0.5900241} + - {x: -13.6919155, y: 1.6956866} + - {x: -13.231715, y: 1.5001981} + - {x: -13.702055, y: 0.3943316} + - - {x: 9.465269, y: 1.4373823} + - {x: 9.46267, y: 1.4340032} + - {x: 9.469383, y: 1.4417785} + - - {x: -14.235412, y: 0.41781262} + - {x: -14.235412, y: 0.4178128} + - {x: -14.1621685, y: 0.5900241} + - {x: -13.702055, y: 0.3943316} + - {x: -13.775372, y: 0.22195031} + - - {x: 9.277108, y: -0.1581838} + - {x: 8.945021, y: 0.2156048} + - {x: 8.448245, y: -0.20577121} + - {x: 7.9463224, y: -0.6106016} + - {x: 7.589096, y: -0.89618593} + - {x: 7.901313, y: -1.2867252} + - {x: 8.259382, y: -1.0004652} + - {x: 8.766935, y: -0.5910456} + - - {x: 7.4573073, y: -1.0015445} + - {x: 7.4573073, y: -1.0015447} + - {x: 6.9992495, y: -1.381259} + - {x: 6.590202, y: -1.7524027} + - {x: 6.9409714, y: -2.1087184} + - {x: 7.3268714, y: -1.7589682} + - {x: 7.772978, y: -1.3892977} + - - {x: 6.590202, y: -1.7524027} + - {x: 6.5902014, y: -1.7524028} + - {x: 6.2482157, y: -2.1176348} + - {x: 5.9913445, y: -2.4796133} + - {x: 6.427801, y: -2.7235508} + - {x: 6.635473, y: -2.4339132} + - {x: 6.9409714, y: -2.1087184} + - - {x: 6.427801, y: -2.7235508} + - {x: 5.9913445, y: -2.4796133} + - {x: 5.9913445, y: -2.4796135} + - {x: 5.837639, y: -2.8409967} + - {x: 5.733626, y: -3.2023044} + - {x: 5.733626, y: -3.2023044} + - {x: 5.7274446, y: -3.220062} + - {x: 6.1996503, y: -3.3844435} + - {x: 6.2101502, y: -3.353713} + - {x: 6.3088117, y: -3.0083168} + - - {x: 5.903764, y: -4.137962} + - {x: 5.453852, y: -3.9198353} + - {x: 5.2618876, y: -4.275327} + - {x: 5.024404, y: -4.628149} + - {x: 4.733301, y: -4.977937} + - {x: 4.3804755, y: -5.324324} + - {x: 4.3804755, y: -5.324324} + - {x: 4.713425, y: -5.6973453} + - {x: 5.101067, y: -5.3166823} + - {x: 5.4244757, y: -4.928054} + - {x: 5.6897655, y: -4.534017} + - - {x: -1.758446, y: -7.4442883} + - {x: -1.769346, y: -7.4472175} + - {x: -1.7581304, y: -7.44426} + - - {x: 0.5137188, y: -7.3107834} + - {x: -0.4979852, y: -7.6231384} + - {x: -1.6362021, y: -7.929165} + - {x: -1.5030584, y: -8.411112} + - {x: -0.3593004, y: -8.10352} + - {x: 0.6714225, y: -7.7852616} + - - {x: 11.204211, y: 2.539483} + - {x: 10.719892, y: 2.6637197} + - {x: 10.806698, y: 3.2401981} + - {x: 11.306333, y: 3.2210777} + - - {x: 10.223953, y: 1.605593} + - {x: 10.6400385, y: 1.3283334} + - {x: 10.97257, y: 1.9079804} + - {x: 11.204211, y: 2.539483} + - {x: 10.719892, y: 2.6637197} + - {x: 10.719892, y: 2.6637197} + - {x: 10.519626, y: 2.1197374} + - {x: 10.223953, y: 1.6055932} + - - {x: 10.256516, y: 0.825884} + - {x: 10.6400385, y: 1.3283334} + - {x: 10.223953, y: 1.605593} + - {x: 9.859593, y: 1.1299438} + - - {x: 8.945021, y: 0.215605} + - {x: 8.945021, y: 0.2156048} + - {x: 9.277108, y: -0.1581838} + - {x: 9.771723, y: 0.3022021} + - {x: 10.232468, y: 0.7954787} + - {x: 10.256516, y: 0.825884} + - {x: 9.859593, y: 1.1299438} + - {x: 9.850925, y: 1.1186286} + - {x: 9.4186, y: 0.6561857} + - - {x: 7.772978, y: -1.3892977} + - {x: 7.901313, y: -1.2867252} + - {x: 7.589096, y: -0.89618593} + - {x: 7.4573073, y: -1.0015445} + - - {x: 5.6083975, y: -3.562039} + - {x: 6.0743146, y: -3.7434812} + - {x: 6.1996503, y: -3.3844435} + - {x: 5.7274446, y: -3.220062} + - {x: 5.6083975, y: -3.562039} + - - {x: 5.453852, y: -3.9198353} + - {x: 5.903764, y: -4.137962} + - {x: 6.0743146, y: -3.7434812} + - {x: 5.6083975, y: -3.562039} + - {x: 5.453852, y: -3.9198349} + - - {x: 4.293679, y: -6.0383415} + - {x: 4.713425, y: -5.6973453} + - {x: 4.3804755, y: -5.324324} + - {x: 3.9788141, y: -5.6499343} + - - {x: 4.2555804, y: -6.068623} + - {x: 4.293679, y: -6.0383415} + - {x: 3.9788141, y: -5.6499343} + - {x: 3.9578285, y: -5.666947} + - - {x: 2.1899421, y: -6.6685653} + - {x: 2.189942, y: -6.6685653} + - {x: 1.4069941, y: -6.9924703} + - {x: 1.406994, y: -6.9924703} + - {x: 1.5865369, y: -7.459123} + - {x: 2.3944213, y: -7.1248417} + - {x: 3.1033168, y: -6.782007} + - {x: 3.7211924, y: -6.4301004} + - {x: 4.2555804, y: -6.068623} + - {x: 3.9578285, y: -5.666947} + - {x: 3.4572577, y: -6.005438} + - {x: 3.4572577, y: -6.005438} + - {x: 2.870663, y: -6.3394327} + - {x: 2.8706627, y: -6.3394327} + - - {x: 1.4448175, y: -7.5097895} + - {x: 1.5865369, y: -7.459123} + - {x: 1.406994, y: -6.9924703} + - {x: 1.2769831, y: -7.0387993} + - - {x: 0.6714225, y: -7.7852616} + - {x: 1.4448175, y: -7.5097895} + - {x: 1.2769831, y: -7.0387993} + - {x: 0.5137188, y: -7.3107834} + - - {x: -3.172393, y: -7.869984} + - {x: -4.174483, y: -7.6140594} + - {x: -4.174483, y: -7.6140594} + - {x: -4.5767727, y: -7.478758} + - {x: -5.2880983, y: -7.239519} + - {x: -6.4798822, y: -6.770565} + - {x: -7.3719945, y: -6.381601} + - {x: -7.7164793, y: -6.2314043} + - {x: -7.7164793, y: -6.2314043} + - {x: -8.964528, y: -5.646236} + - {x: -8.964528, y: -5.646236} + - {x: -10.084966, y: -5.0915966} + - {x: -10.306787, y: -5.539699} + - {x: -10.416291, y: -5.4854712} + - {x: -10.190676, y: -5.039268} + - {x: -10.190676, y: -5.0392675} + - {x: -11.361562, y: -4.434701} + - {x: -12.44383, y: -3.8567398} + - {x: -12.44383, y: -3.8567398} + - {x: -12.743451, y: -3.692263} + - {x: -13.404123, y: -3.329588} + - {x: -13.404123, y: -3.329588} + - {x: -14.2090845, y: -2.8774486} + - {x: -14.2090845, y: -2.8774483} + - {x: -14.825356, y: -2.5245256} + - {x: -15.219583, y: -2.2950227} + - {x: -15.219583, y: -2.2950225} + - {x: -15.358398, y: -2.2131445} + - {x: -15.358403, y: -2.2131429} + - {x: -15.3584, y: -2.213138} + - {x: -15.277693, y: -2.0244381} + - {x: -15.253261, y: -2.0348842} + - {x: -15.3584, y: -2.213138} + - {x: -15.358402, y: -2.2131429} + - {x: -15.358398, y: -2.2131445} + - {x: -15.209063, y: -2.277072} + - {x: -14.898747, y: -2.4099112} + - {x: -14.817893, y: -2.2210333} + - {x: -14.725213, y: -2.0042713} + - {x: -14.966794, y: -1.8636318} + - {x: -15.104384, y: -1.7824749} + - {x: -15.253261, y: -2.0348842} + - {x: -15.277693, y: -2.0244381} + - {x: -15.049436, y: -1.4907514} + - {x: -14.694971, y: -0.6604964} + - {x: -14.235412, y: 0.41781262} + - {x: -13.775372, y: 0.22195031} + - {x: -14.2350645, y: -0.856674} + - {x: -14.5896435, y: -1.6871978} + - {x: -14.725213, y: -2.0042713} + - {x: -14.575336, y: -2.091524} + - {x: -13.962415, y: -2.4425313} + - {x: -13.1613865, y: -2.8924623} + - {x: -12.502846, y: -3.2539604} + - {x: -12.205756, y: -3.4170563} + - {x: -11.129093, y: -3.992029} + - {x: -9.96506, y: -4.593064} + - {x: -9.863145, y: -4.643495} + - {x: -8.747477, y: -5.1958046} + - {x: -7.5104127, y: -5.775842} + - {x: -7.172161, y: -5.9232707} + - {x: -6.2883935, y: -6.308686} + - {x: -5.116808, y: -6.7697754} + - {x: -4.4173822, y: -7.004844} + - {x: -4.0328274, y: -7.134545} + - {x: -3.0776606, y: -7.3790402} + - {x: -2.2497802, y: -7.4873843} + - {x: -1.758446, y: -7.4442883} + - {x: -0.63667, y: -7.142757} + - {x: 0.3560152, y: -6.8363047} + - {x: 1.109149, y: -6.567809} + - {x: 1.2274513, y: -6.5258183} + - {x: 1.9854624, y: -6.212289} + - {x: 2.6380086, y: -5.8968587} + - {x: 3.1933231, y: -5.5807753} + - {x: 3.6600769, y: -5.2652707} + - {x: 3.6639493, y: -5.261528} + - {x: 4.047526, y: -4.9513035} + - {x: 4.3655353, y: -4.639192} + - {x: 4.6243324, y: -4.3282447} + - {x: 4.8340096, y: -4.0166373} + - {x: 5.0039406, y: -3.701708} + - {x: 5.1424804, y: -3.3805964} + - {x: 5.255238, y: -3.0556803} + - {x: 5.2571015, y: -3.0508957} + - {x: 5.366466, y: -2.6736767} + - {x: 5.554888, y: -2.2356758} + - {x: 5.8609586, y: -1.8013564} + - {x: 6.239432, y: -1.3960872} + - {x: 6.671628, y: -1.0035498} + - {x: 7.141638, y: -0.6137917} + - {x: 7.2768803, y: -0.5056467} + - {x: 7.6332626, y: -0.22073801} + - {x: 8.129555, y: 0.1795032} + - {x: 8.612933, y: 0.5893939} + - {x: 9.065477, y: 1.0101693} + - {x: 9.465269, y: 1.4373823} + - {x: 9.807868, y: 1.882853} + - {x: 10.066681, y: 2.3314943} + - {x: 10.235572, y: 2.7879562} + - {x: 10.307064, y: 3.2593186} + - {x: 10.264225, y: 3.8046637} + - {x: 10.256147, y: 3.872985} + - {x: 10.170845, y: 4.607883} + - {x: 10.125503, y: 5.6454735} + - {x: 10.106935, y: 6.846033} + - {x: 10.105489, y: 6.966648} + - {x: 10.090954, y: 8.180035} + - {x: 10.054419, y: 9.613637} + - {x: 10.034146, y: 9.992632} + - {x: 9.974567, y: 11.111162} + - {x: 9.828986, y: 12.635927} + - {x: 9.776073, y: 12.978018} + - {x: 9.595794, y: 14.1506} + - {x: 9.253972, y: 15.617453} + - {x: 9.167123, y: 15.8704815} + - {x: 8.783792, y: 16.998869} + - {x: 8.167101, y: 18.258566} + - {x: 7.986806, y: 18.510744} + - {x: 7.386509, y: 19.36359} + - {x: 6.42223, y: 20.28621} + - {x: 6.0222807, y: 20.526436} + - {x: 5.247309, y: 21.002056} + - {x: 3.8141797, y: 21.486391} + - {x: 3.3807724, y: 21.561483} + - {x: 2.920317, y: 21.643398} + - {x: 1.998576, y: 21.716873} + - {x: 1.0701468, y: 21.70317} + - {x: 0.48852292, y: 21.639137} + - {x: 0.434276, y: 22.136187} + - {x: 1.0393014, y: 22.202217} + - {x: 2.0147738, y: 22.21661} + - {x: 2.014774, y: 22.21661} + - {x: 2.983746, y: 22.139359} + - {x: 2.983746, y: 22.139359} + - {x: 3.46775, y: 22.053862} + - {x: 3.938316, y: 21.970736} + - {x: 3.938316, y: 21.970736} + - {x: 5.458937, y: 21.455061} + - {x: 6.282396, y: 20.953447} + - {x: 6.7268095, y: 20.682734} + - {x: 6.7268095, y: 20.682734} + - {x: 7.7651258, y: 19.690163} + - {x: 7.7651267, y: 19.690163} + - {x: 8.395037, y: 18.799444} + - {x: 8.597081, y: 18.513746} + - {x: 8.597081, y: 18.513746} + - {x: 9.245864, y: 17.18989} + - {x: 9.245864, y: 17.18989} + - {x: 9.640413, y: 16.031715} + - {x: 9.734675, y: 15.755018} + - {x: 10.086702, y: 14.245514} + - {x: 10.270244, y: 13.05415} + - {x: 10.325144, y: 12.697796} + - {x: 10.473189, y: 11.148269} + - {x: 10.533435, y: 10.019276} + - {x: 10.55403, y: 9.633336} + - {x: 10.590866, y: 8.189407} + - {x: 10.605453, y: 6.972641} + - {x: 10.606888, y: 6.852885} + - {x: 10.625286, y: 5.6601787} + - {x: 10.625286, y: 5.660178} + - {x: 10.669258, y: 4.6476917} + - {x: 10.752788, y: 3.9308546} + - {x: 10.761995, y: 3.8518322} + - {x: 10.761995, y: 3.8518322} + - {x: 10.806698, y: 3.2401981} + - {x: 10.806698, y: 3.2401981} + - {x: 11.306333, y: 3.2210777} + - {x: 11.259766, y: 3.899} + - {x: 11.249428, y: 3.9887245} + - {x: 11.167671, y: 4.6875005} + - {x: 11.12507, y: 5.674883} + - {x: 11.106841, y: 6.859737} + - {x: 11.105416, y: 6.978634} + - {x: 11.090778, y: 8.19878} + - {x: 11.053642, y: 9.653035} + - {x: 11.032725, y: 10.045919} + - {x: 10.971809, y: 11.185376} + - {x: 10.821301, y: 12.759665} + - {x: 10.764414, y: 13.130281} + - {x: 10.577611, y: 14.340427} + - {x: 10.215379, y: 15.892583} + - {x: 10.113704, y: 16.19295} + - {x: 9.707936, y: 17.38091} + - {x: 9.027061, y: 18.768927} + - {x: 8.8032675, y: 19.088144} + - {x: 8.143743, y: 20.016735} + - {x: 7.0313897, y: 21.079258} + - {x: 6.542512, y: 21.380463} + - {x: 5.670565, y: 21.908066} + - {x: 4.0624523, y: 22.45508} + - {x: 3.5547276, y: 22.546238} + - {x: 3.0471752, y: 22.635319} + - {x: 2.0309718, y: 22.716347} + - {x: 1.008456, y: 22.701265} + - {x: 0.3800289, y: 22.633236} + - {x: -0.0123588005, y: 22.589851} + - {x: -1.0234377, y: 22.381824} + - {x: -2.0166867, y: 22.076834} + - {x: -2.6857224, y: 21.799192} + - {x: -2.9839134, y: 21.674519} + - {x: -3.9168088, y: 21.17454} + - {x: -4.8069477, y: 20.576643} + - {x: -5.3791375, y: 20.102764} + - {x: -5.645792, y: 19.880688} + - {x: -6.424755, y: 19.086761} + - {x: -7.135251, y: 18.19512} + - {x: -7.4608455, y: 17.688133} + - {x: -7.768792, y: 17.20626} + - {x: -8.3170595, y: 16.120838} + - {x: -8.76569, y: 14.95745} + - {x: -8.808039, y: 14.840074} + - {x: -8.984137, y: 14.351525} + - {x: -9.327366, y: 13.467897} + - {x: -9.778719, y: 12.343204} + - {x: -9.910238, y: 12.021452} + - {x: -10.316101, y: 11.028521} + - {x: -10.918033, y: 9.573165} + - {x: -11.070683, y: 9.207101} + - {x: -11.563215, y: 8.025975} + - {x: -12.230411, y: 6.4356127} + - {x: -12.246524, y: 6.3973794} + - {x: -12.898418, y: 4.8506637} + - {x: -13.431616, y: 3.590195} + - {x: -13.54605, y: 3.3196752} + - {x: -14.152116, y: 1.891175} + - {x: -14.622282, y: 0.7857169} + - {x: -14.695453, y: 0.61367553} + - {x: -15.154879, y: -0.4643188} + - {x: -15.509228, y: -1.294305} + - {x: -15.737373, y: -1.827894} + - {x: -15.818058, y: -2.0163746} + - {x: -15.358403, y: -2.2131429} + - {x: -15.612421, y: -2.6438107} + - {x: -15.47237, y: -2.726413} + - {x: -15.075375, y: -2.9575274} + - {x: -14.455757, y: -3.3123658} + - {x: -13.646861, y: -3.7667136} + - {x: -12.984057, y: -4.130565} + - {x: -12.681903, y: -4.2964225} + - {x: -11.59403, y: -4.8773727} + - {x: -10.416291, y: -5.4854712} + - {x: -10.190676, y: -5.039268} + - {x: -10.084966, y: -5.0915966} + - {x: -10.306787, y: -5.539699} + - {x: -9.181581, y: -6.0966673} + - {x: -7.922546, y: -6.6869664} + - {x: -7.571828, y: -6.8399315} + - {x: -6.671371, y: -7.2324433} + - {x: -5.4593887, y: -7.7092633} + - {x: -4.736163, y: -7.952672} + - {x: -4.3161383, y: -8.093573} + - {x: -3.2671251, y: -8.360928} + - {x: -2.3805914, y: -8.478791} + - {x: -1.5143077, y: -8.41408} + - {x: -1.5030584, y: -8.411112} + - {x: -1.6362021, y: -7.929165} + - {x: -1.636219, y: -7.9291697} + - {x: -1.6362191, y: -7.9291697} + - {x: -2.3151858, y: -7.983088} + - {x: -2.315186, y: -7.983088} + - {x: -3.1723928, y: -7.869984} + m_VertexDistance: 0.0005 +--- !u!50 &1820847798 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820847793} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!114 &1820847799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820847793} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0ecd6fe4dd55d640bd7ef3235e0e425, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateCollider: 0 +--- !u!60 &1820847800 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820847793} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 10.719892, y: 2.6637197} + - {x: 10.519626, y: 2.1197374} + - {x: 10.223953, y: 1.6055932} + - {x: 9.850925, y: 1.1186286} + - {x: 9.4186, y: 0.6561857} + - {x: 8.945021, y: 0.21560505} + - {x: 8.448245, y: -0.20577121} + - {x: 7.9463224, y: -0.6106016} + - {x: 7.4573073, y: -1.0015447} + - {x: 6.9992495, y: -1.381259} + - {x: 6.5902014, y: -1.7524028} + - {x: 6.2482157, y: -2.1176348} + - {x: 5.9913445, y: -2.4796133} + - {x: 5.837639, y: -2.8409967} + - {x: 5.733626, y: -3.2023044} + - {x: 5.6083975, y: -3.562039} + - {x: 5.453852, y: -3.9198349} + - {x: 5.2618876, y: -4.275327} + - {x: 5.024404, y: -4.628149} + - {x: 4.733301, y: -4.977937} + - {x: 4.3804755, y: -5.324324} + - {x: 3.9578285, y: -5.666947} + - {x: 3.4572577, y: -6.005438} + - {x: 2.8706627, y: -6.3394327} + - {x: 2.189942, y: -6.6685653} + - {x: 1.4069941, y: -6.9924707} + - {x: 0.51371884, y: -7.3107834} + - {x: -0.49798524, y: -7.6231384} + - {x: -1.636219, y: -7.9291697} + - {x: -2.3151858, y: -7.983088} + - {x: -3.1723928, y: -7.8699837} + - {x: -4.174483, y: -7.614059} + - {x: -5.2880983, y: -7.239519} + - {x: -6.4798822, y: -6.7705646} + - {x: -7.7164793, y: -6.2314043} + - {x: -8.964528, y: -5.646236} + - {x: -10.190676, y: -5.0392675} + - {x: -11.361562, y: -4.434701} + - {x: -12.44383, y: -3.8567395} + - {x: -13.404123, y: -3.329588} + - {x: -14.209085, y: -2.8774486} + - {x: -14.825356, y: -2.5245256} + - {x: -15.219582, y: -2.2950225} + - {x: -15.358402, y: -2.2131429} + - {x: -15.049435, y: -1.4907514} + - {x: -14.694971, y: -0.6604964} + - {x: -14.235412, y: 0.41781288} + - {x: -13.6919155, y: 1.6956866} + - {x: -13.085659, y: 3.124635} + - {x: -12.437797, y: 4.65617} + - {x: -11.769501, y: 6.2418017} + - {x: -11.101938, y: 7.83304} + - {x: -10.45627, y: 9.381395} + - {x: -9.853665, y: 10.838379} + - {x: -9.315288, y: 12.155502} + - {x: -8.862304, y: 13.284275} + - {x: -8.51588, y: 14.1762085} + - {x: -8.29718, y: 14.782811} + - {x: -7.8600364, y: 15.918034} + - {x: -7.334572, y: 16.958363} + - {x: -6.7286897, y: 17.904074} + - {x: -6.05029, y: 18.755436} + - {x: -5.307274, y: 19.512712} + - {x: -4.5075474, y: 20.176193} + - {x: -3.6590075, y: 20.746126} + - {x: -2.7695587, y: 21.222797} + - {x: -1.8471014, y: 21.606472} + - {x: -0.8995378, y: 21.897419} + - {x: 0.06523049, y: 22.09591} + - {x: 1.0393014, y: 22.202217} + - {x: 2.0147738, y: 22.21661} + - {x: 2.983746, y: 22.139359} + - {x: 3.9383159, y: 21.970736} + - {x: 5.458937, y: 21.455061} + - {x: 6.7268095, y: 20.682734} + - {x: 7.7651253, y: 19.690163} + - {x: 8.597081, y: 18.513746} + - {x: 9.245864, y: 17.18989} + - {x: 9.734675, y: 15.755017} + - {x: 10.086702, y: 14.245513} + - {x: 10.325144, y: 12.697796} + - {x: 10.473188, y: 11.148269} + - {x: 10.55403, y: 9.633336} + - {x: 10.590866, y: 8.189407} + - {x: 10.606888, y: 6.852885} + - {x: 10.625286, y: 5.660178} + - {x: 10.669258, y: 4.6476917} + - {x: 10.761995, y: 3.851832} + - {x: 10.806698, y: 3.2401981} + - - {x: -1.7581303, y: -7.4442596} + - {x: -1.5143077, y: -8.41408} + - {x: -2.3805914, y: -8.478791} + - {x: -2.2497802, y: -7.4873843} + - - {x: -2.2497802, y: -7.4873843} + - {x: -2.3805914, y: -8.478791} + - {x: -3.2671251, y: -8.360928} + - {x: -3.0776606, y: -7.37904} + - - {x: -3.0776606, y: -7.37904} + - {x: -3.2671251, y: -8.360928} + - {x: -4.3161383, y: -8.093573} + - {x: -4.0328274, y: -7.134545} + - - {x: -4.0328274, y: -7.134545} + - {x: -4.3161383, y: -8.093573} + - {x: -4.736163, y: -7.952672} + - {x: -4.4173822, y: -7.0048437} + - - {x: -4.4173822, y: -7.0048437} + - {x: -4.736163, y: -7.952672} + - {x: -5.4593887, y: -7.7092633} + - {x: -5.116808, y: -6.769775} + - - {x: -5.116808, y: -6.769775} + - {x: -5.4593887, y: -7.7092633} + - {x: -6.671371, y: -7.2324433} + - {x: -6.2883935, y: -6.308686} + - - {x: -6.2883935, y: -6.308686} + - {x: -6.671371, y: -7.2324433} + - {x: -7.571828, y: -6.839931} + - {x: -7.172161, y: -5.9232707} + - - {x: -7.172161, y: -5.9232707} + - {x: -7.571828, y: -6.839931} + - {x: -7.9225454, y: -6.6869664} + - {x: -7.510413, y: -5.775842} + - - {x: -7.510413, y: -5.775842} + - {x: -7.9225454, y: -6.6869664} + - {x: -9.181581, y: -6.0966673} + - {x: -8.747476, y: -5.1958046} + - - {x: -8.747476, y: -5.1958046} + - {x: -9.181581, y: -6.0966673} + - {x: -10.306787, y: -5.5396986} + - {x: -9.863145, y: -4.6434946} + - - {x: -9.863145, y: -4.6434946} + - {x: -10.306787, y: -5.5396986} + - {x: -10.416291, y: -5.4854712} + - {x: -9.96506, y: -4.593064} + - - {x: -9.96506, y: -4.593064} + - {x: -10.416291, y: -5.4854712} + - {x: -11.59403, y: -4.8773727} + - {x: -11.129093, y: -3.992029} + - - {x: -11.129093, y: -3.992029} + - {x: -11.59403, y: -4.8773727} + - {x: -12.681903, y: -4.2964225} + - {x: -12.205756, y: -3.4170563} + - - {x: -12.205756, y: -3.4170563} + - {x: -12.681903, y: -4.2964225} + - {x: -12.984056, y: -4.130565} + - {x: -12.502846, y: -3.2539604} + - - {x: -12.502846, y: -3.2539604} + - {x: -12.984056, y: -4.130565} + - {x: -13.64686, y: -3.7667136} + - {x: -13.1613865, y: -2.8924623} + - - {x: -13.1613865, y: -2.8924623} + - {x: -13.64686, y: -3.7667136} + - {x: -14.455757, y: -3.3123658} + - {x: -13.962414, y: -2.4425313} + - - {x: -13.962414, y: -2.4425313} + - {x: -14.455757, y: -3.3123658} + - {x: -15.075375, y: -2.9575274} + - {x: -14.575336, y: -2.091524} + - - {x: -14.575336, y: -2.091524} + - {x: -15.075375, y: -2.9575274} + - {x: -15.47237, y: -2.726413} + - {x: -14.966793, y: -1.8636318} + - - {x: -14.966793, y: -1.8636318} + - {x: -15.47237, y: -2.726413} + - {x: -15.61242, y: -2.6438107} + - {x: -15.104384, y: -1.7824749} + - - {x: -14.898747, y: -2.4099112} + - {x: -15.818057, y: -2.0163746} + - {x: -15.737372, y: -1.827894} + - {x: -14.817893, y: -2.2210333} + - - {x: -14.817893, y: -2.2210333} + - {x: -15.737372, y: -1.827894} + - {x: -15.509227, y: -1.294305} + - {x: -14.589643, y: -1.6871978} + - - {x: -14.589643, y: -1.6871978} + - {x: -15.509227, y: -1.294305} + - {x: -15.154878, y: -0.46431884} + - {x: -14.2350645, y: -0.85667396} + - - {x: -14.2350645, y: -0.85667396} + - {x: -15.154878, y: -0.46431884} + - {x: -14.695453, y: 0.6136755} + - {x: -13.775371, y: 0.2219503} + - - {x: -13.775371, y: 0.2219503} + - {x: -14.695453, y: 0.6136755} + - {x: -14.622281, y: 0.7857169} + - {x: -13.702054, y: 0.3943316} + - - {x: -13.702054, y: 0.3943316} + - {x: -14.622281, y: 0.7857169} + - {x: -14.152116, y: 1.891175} + - {x: -13.231715, y: 1.5001981} + - - {x: -13.231715, y: 1.5001981} + - {x: -14.152116, y: 1.891175} + - {x: -13.546049, y: 3.3196752} + - {x: -12.625269, y: 2.9295948} + - - {x: -12.625269, y: 2.9295948} + - {x: -13.546049, y: 3.3196752} + - {x: -13.431616, y: 3.590195} + - {x: -12.510628, y: 3.2006032} + - - {x: -12.510628, y: 3.2006032} + - {x: -13.431616, y: 3.590195} + - {x: -12.898418, y: 4.8506637} + - {x: -11.977175, y: 4.461676} + - - {x: -11.977175, y: 4.461676} + - {x: -12.898418, y: 4.8506637} + - {x: -12.246524, y: 6.3973794} + - {x: -11.3250265, y: 6.0089965} + - - {x: -11.3250265, y: 6.0089965} + - {x: -12.246524, y: 6.3973794} + - {x: -12.230411, y: 6.435612} + - {x: -11.308591, y: 6.0479913} + - - {x: -11.308591, y: 6.0479913} + - {x: -12.230411, y: 6.435612} + - {x: -11.563215, y: 8.025975} + - {x: -10.640661, y: 7.6401052} + - - {x: -10.640661, y: 7.6401052} + - {x: -11.563215, y: 8.025975} + - {x: -11.070683, y: 9.207101} + - {x: -10.1477165, y: 8.822221} + - - {x: -10.1477165, y: 8.822221} + - {x: -11.070683, y: 9.207101} + - {x: -10.918033, y: 9.573165} + - {x: -9.994508, y: 9.189626} + - - {x: -9.994508, y: 9.189626} + - {x: -10.918033, y: 9.573165} + - {x: -10.316101, y: 11.02852} + - {x: -9.39123, y: 10.648238} + - - {x: -9.39123, y: 10.648238} + - {x: -10.316101, y: 11.02852} + - {x: -9.910238, y: 12.021452} + - {x: -8.984581, y: 11.643087} + - - {x: -8.984581, y: 11.643087} + - {x: -9.910238, y: 12.021452} + - {x: -9.778719, y: 12.343204} + - {x: -8.851856, y: 11.967801} + - - {x: -8.851856, y: 11.967801} + - {x: -9.778719, y: 12.343204} + - {x: -9.327366, y: 13.467898} + - {x: -8.397242, y: 13.100652} + - - {x: -8.397242, y: 13.100652} + - {x: -9.327366, y: 13.467898} + - {x: -8.984137, y: 14.351524} + - {x: -8.047623, y: 14.000893} + - - {x: -8.047623, y: 14.000893} + - {x: -8.984137, y: 14.351524} + - {x: -8.808039, y: 14.840074} + - {x: -7.86731, y: 14.500913} + - - {x: -7.86731, y: 14.500913} + - {x: -8.808039, y: 14.840074} + - {x: -8.76569, y: 14.957449} + - {x: -7.82867, y: 14.608173} + - - {x: -7.82867, y: 14.608173} + - {x: -8.76569, y: 14.957449} + - {x: -8.3170595, y: 16.120838} + - {x: -7.4030128, y: 15.71523} + - - {x: -7.4030128, y: 15.71523} + - {x: -8.3170595, y: 16.120838} + - {x: -7.7687917, y: 17.20626} + - {x: -6.900352, y: 16.710464} + - - {x: -6.900352, y: 16.710464} + - {x: -7.7687917, y: 17.20626} + - {x: -7.460846, y: 17.688133} + - {x: -6.618828, y: 17.148685} + - - {x: -6.618828, y: 17.148685} + - {x: -7.460846, y: 17.688133} + - {x: -7.1352515, y: 18.19512} + - {x: -6.322128, y: 17.613028} + - - {x: -6.322128, y: 17.613028} + - {x: -7.1352515, y: 18.19512} + - {x: -6.4247546, y: 19.086761} + - {x: -5.6758256, y: 18.42411} + - - {x: -5.6758256, y: 18.42411} + - {x: -6.4247546, y: 19.086761} + - {x: -5.645792, y: 19.880688} + - {x: -4.9687557, y: 19.144737} + - - {x: -4.9687557, y: 19.144737} + - {x: -5.645792, y: 19.880688} + - {x: -5.3791375, y: 20.102764} + - {x: -4.7406344, y: 19.333145} + - - {x: -4.7406344, y: 19.333145} + - {x: -5.3791375, y: 20.102764} + - {x: -4.8069477, y: 20.576643} + - {x: -4.208147, y: 19.775743} + - - {x: -4.208147, y: 19.775743} + - {x: -4.8069477, y: 20.576643} + - {x: -3.9168086, y: 21.17454} + - {x: -3.4012065, y: 20.317713} + - - {x: -3.4012065, y: 20.317713} + - {x: -3.9168086, y: 21.17454} + - {x: -2.9839134, y: 21.674519} + - {x: -2.555204, y: 20.771076} + - - {x: -2.555204, y: 20.771076} + - {x: -2.9839134, y: 21.674519} + - {x: -2.6857224, y: 21.799192} + - {x: -2.3016891, y: 20.875872} + - - {x: -2.3016891, y: 20.875872} + - {x: -2.6857224, y: 21.799192} + - {x: -2.0166867, y: 22.076834} + - {x: -1.6775162, y: 21.13611} + - - {x: -1.6775162, y: 21.13611} + - {x: -2.0166867, y: 22.076834} + - {x: -1.0234377, y: 22.381824} + - {x: -0.7756379, y: 21.413013} + - - {x: -0.7756379, y: 21.413013} + - {x: -1.0234377, y: 22.381824} + - {x: -0.0123588815, y: 22.589851} + - {x: 0.14281985, y: 21.601967} + - - {x: 0.14281985, y: 21.601967} + - {x: -0.0123588815, y: 22.589851} + - {x: 0.38002896, y: 22.633236} + - {x: 0.4885229, y: 21.639137} + - - {x: 0.4885229, y: 21.639137} + - {x: 0.38002896, y: 22.633236} + - {x: 1.008456, y: 22.701265} + - {x: 1.0701468, y: 21.703169} + - - {x: 1.0701468, y: 21.703169} + - {x: 1.008456, y: 22.701265} + - {x: 2.0309718, y: 22.716347} + - {x: 1.9985759, y: 21.716873} + - - {x: 1.9985759, y: 21.716873} + - {x: 2.0309718, y: 22.716347} + - {x: 3.0471752, y: 22.635319} + - {x: 2.920317, y: 21.643398} + - - {x: 2.920317, y: 21.643398} + - {x: 3.0471752, y: 22.635319} + - {x: 3.5547276, y: 22.546236} + - {x: 3.3807726, y: 21.561483} + - - {x: 3.3807726, y: 21.561483} + - {x: 3.5547276, y: 22.546236} + - {x: 4.0624523, y: 22.45508} + - {x: 3.8141794, y: 21.486391} + - - {x: 3.8141794, y: 21.486391} + - {x: 4.0624523, y: 22.45508} + - {x: 5.670565, y: 21.908066} + - {x: 5.247309, y: 21.002056} + - - {x: 5.247309, y: 21.002056} + - {x: 5.670565, y: 21.908066} + - {x: 6.542512, y: 21.380463} + - {x: 6.0222807, y: 20.526436} + - - {x: 6.0222807, y: 20.526436} + - {x: 6.542512, y: 21.380463} + - {x: 7.031389, y: 21.079258} + - {x: 6.42223, y: 20.28621} + - - {x: 6.42223, y: 20.28621} + - {x: 7.031389, y: 21.079258} + - {x: 8.143743, y: 20.016735} + - {x: 7.3865085, y: 19.36359} + - - {x: 7.3865085, y: 19.36359} + - {x: 8.143743, y: 20.016735} + - {x: 8.8032675, y: 19.088144} + - {x: 7.9868054, y: 18.510744} + - - {x: 7.9868054, y: 18.510744} + - {x: 8.8032675, y: 19.088144} + - {x: 9.027061, y: 18.768927} + - {x: 8.167101, y: 18.258566} + - - {x: 8.167101, y: 18.258566} + - {x: 9.027061, y: 18.768927} + - {x: 9.707936, y: 17.38091} + - {x: 8.783792, y: 16.998869} + - - {x: 8.783792, y: 16.998869} + - {x: 9.707936, y: 17.38091} + - {x: 10.113704, y: 16.19295} + - {x: 9.167123, y: 15.8704815} + - - {x: 9.167123, y: 15.8704815} + - {x: 10.113704, y: 16.19295} + - {x: 10.215379, y: 15.892582} + - {x: 9.253972, y: 15.617453} + - - {x: 9.253972, y: 15.617453} + - {x: 10.215379, y: 15.892582} + - {x: 10.577611, y: 14.340426} + - {x: 9.595794, y: 14.1505995} + - - {x: 9.595794, y: 14.1505995} + - {x: 10.577611, y: 14.340426} + - {x: 10.764414, y: 13.130281} + - {x: 9.776073, y: 12.978018} + - - {x: 9.776073, y: 12.978018} + - {x: 10.764414, y: 13.130281} + - {x: 10.821301, y: 12.759665} + - {x: 9.828986, y: 12.635927} + - - {x: 9.828986, y: 12.635927} + - {x: 10.821301, y: 12.759665} + - {x: 10.971809, y: 11.185376} + - {x: 9.974567, y: 11.111161} + - - {x: 9.974567, y: 11.111161} + - {x: 10.971809, y: 11.185376} + - {x: 11.032725, y: 10.045919} + - {x: 10.034146, y: 9.992632} + - - {x: 10.034146, y: 9.992632} + - {x: 11.032725, y: 10.045919} + - {x: 11.053642, y: 9.653035} + - {x: 10.054419, y: 9.613637} + - - {x: 10.054419, y: 9.613637} + - {x: 11.053642, y: 9.653035} + - {x: 11.090778, y: 8.19878} + - {x: 10.090954, y: 8.180035} + - - {x: 10.090954, y: 8.180035} + - {x: 11.090778, y: 8.19878} + - {x: 11.105416, y: 6.9786334} + - {x: 10.105489, y: 6.9666476} + - - {x: 10.105489, y: 6.9666476} + - {x: 11.105416, y: 6.9786334} + - {x: 11.106841, y: 6.859737} + - {x: 10.106935, y: 6.8460326} + - - {x: 10.106935, y: 6.8460326} + - {x: 11.106841, y: 6.859737} + - {x: 11.12507, y: 5.674883} + - {x: 10.125503, y: 5.6454735} + - - {x: 10.125503, y: 5.6454735} + - {x: 11.12507, y: 5.674883} + - {x: 11.167671, y: 4.6875005} + - {x: 10.170845, y: 4.607883} + - - {x: 10.170845, y: 4.607883} + - {x: 11.167671, y: 4.6875005} + - {x: 11.249428, y: 3.9887242} + - {x: 10.256147, y: 3.872985} + - - {x: 10.256147, y: 3.872985} + - {x: 11.249428, y: 3.9887242} + - {x: 11.259766, y: 3.8990002} + - {x: 10.264225, y: 3.8046637} + - - {x: 10.264225, y: 3.8046637} + - {x: 11.259766, y: 3.8990002} + - {x: 11.306332, y: 3.2210777} + - {x: 10.307064, y: 3.2593186} + - - {x: 10.307064, y: 3.2593186} + - {x: 11.306332, y: 3.2210777} + - {x: 11.204211, y: 2.539483} + - {x: 10.235572, y: 2.7879562} + - - {x: 10.235572, y: 2.7879562} + - {x: 11.204211, y: 2.539483} + - {x: 10.97257, y: 1.9079803} + - {x: 10.066681, y: 2.3314943} + - - {x: 10.066681, y: 2.3314943} + - {x: 10.97257, y: 1.9079803} + - {x: 10.6400385, y: 1.3283334} + - {x: 9.807868, y: 1.882853} + - - {x: 9.807868, y: 1.882853} + - {x: 10.6400385, y: 1.3283334} + - {x: 10.256516, y: 0.825884} + - {x: 9.46267, y: 1.4340032} + - - {x: 9.46267, y: 1.4340032} + - {x: 10.256516, y: 0.825884} + - {x: 10.232468, y: 0.7954787} + - {x: 9.469383, y: 1.4417785} + - - {x: 9.469383, y: 1.4417785} + - {x: 10.232468, y: 0.7954787} + - {x: 9.771723, y: 0.30220217} + - {x: 9.065477, y: 1.0101693} + - - {x: 9.065477, y: 1.0101693} + - {x: 9.771723, y: 0.30220217} + - {x: 9.277108, y: -0.15818381} + - {x: 8.612933, y: 0.5893939} + - - {x: 8.612933, y: 0.5893939} + - {x: 9.277108, y: -0.15818381} + - {x: 8.766935, y: -0.5910456} + - {x: 8.129555, y: 0.17950323} + - - {x: 8.129555, y: 0.17950323} + - {x: 8.766935, y: -0.5910456} + - {x: 8.259382, y: -1.0004652} + - {x: 7.6332626, y: -0.22073808} + - - {x: 7.6332626, y: -0.22073808} + - {x: 8.259382, y: -1.0004652} + - {x: 7.901313, y: -1.2867252} + - {x: 7.2768803, y: -0.5056467} + - - {x: 7.2768803, y: -0.5056467} + - {x: 7.901313, y: -1.2867252} + - {x: 7.7729774, y: -1.3892977} + - {x: 7.1416373, y: -0.6137917} + - - {x: 7.1416373, y: -0.6137917} + - {x: 7.7729774, y: -1.3892977} + - {x: 7.326871, y: -1.7589681} + - {x: 6.671628, y: -1.0035498} + - - {x: 6.671628, y: -1.0035498} + - {x: 7.326871, y: -1.7589681} + - {x: 6.940971, y: -2.1087184} + - {x: 6.239432, y: -1.3960872} + - - {x: 6.239432, y: -1.3960872} + - {x: 6.940971, y: -2.1087184} + - {x: 6.635473, y: -2.4339132} + - {x: 5.8609586, y: -1.8013563} + - - {x: 5.8609586, y: -1.8013563} + - {x: 6.635473, y: -2.4339132} + - {x: 6.427801, y: -2.7235508} + - {x: 5.554888, y: -2.2356758} + - - {x: 5.554888, y: -2.2356758} + - {x: 6.427801, y: -2.7235508} + - {x: 6.3088117, y: -3.0083168} + - {x: 5.366466, y: -2.6736767} + - - {x: 5.366466, y: -2.6736767} + - {x: 6.3088117, y: -3.0083168} + - {x: 6.2101502, y: -3.353713} + - {x: 5.2571015, y: -3.0508957} + - - {x: 5.2571015, y: -3.0508957} + - {x: 6.2101502, y: -3.353713} + - {x: 6.1996503, y: -3.3844438} + - {x: 5.255238, y: -3.0556803} + - - {x: 5.255238, y: -3.0556803} + - {x: 6.1996503, y: -3.3844438} + - {x: 6.0743146, y: -3.7434814} + - {x: 5.1424804, y: -3.3805964} + - - {x: 5.1424804, y: -3.3805964} + - {x: 6.0743146, y: -3.7434814} + - {x: 5.903764, y: -4.137962} + - {x: 5.0039406, y: -3.701708} + - - {x: 5.0039406, y: -3.701708} + - {x: 5.903764, y: -4.137962} + - {x: 5.6897655, y: -4.534017} + - {x: 4.8340096, y: -4.0166373} + - - {x: 4.8340096, y: -4.0166373} + - {x: 5.6897655, y: -4.534017} + - {x: 5.4244757, y: -4.928054} + - {x: 4.6243324, y: -4.328244} + - - {x: 4.6243324, y: -4.328244} + - {x: 5.4244757, y: -4.928054} + - {x: 5.101067, y: -5.3166823} + - {x: 4.3655353, y: -4.639192} + - - {x: 4.3655353, y: -4.639192} + - {x: 5.101067, y: -5.3166823} + - {x: 4.713425, y: -5.6973453} + - {x: 4.047526, y: -4.951303} + - - {x: 4.047526, y: -4.951303} + - {x: 4.713425, y: -5.6973453} + - {x: 4.293679, y: -6.0383415} + - {x: 3.663949, y: -5.261528} + - - {x: 3.663949, y: -5.261528} + - {x: 4.293679, y: -6.0383415} + - {x: 4.2555804, y: -6.068623} + - {x: 3.6600766, y: -5.2652707} + - - {x: 3.6600766, y: -5.2652707} + - {x: 4.2555804, y: -6.068623} + - {x: 3.7211924, y: -6.4301004} + - {x: 3.1933231, y: -5.5807753} + - - {x: 3.1933231, y: -5.5807753} + - {x: 3.7211924, y: -6.4301004} + - {x: 3.1033168, y: -6.782007} + - {x: 2.6380086, y: -5.896858} + - - {x: 2.6380086, y: -5.896858} + - {x: 3.1033168, y: -6.782007} + - {x: 2.3944213, y: -7.1248417} + - {x: 1.9854624, y: -6.212289} + - - {x: 1.9854624, y: -6.212289} + - {x: 2.3944213, y: -7.1248417} + - {x: 1.5865369, y: -7.459123} + - {x: 1.2274513, y: -6.5258183} + - - {x: 1.2274513, y: -6.5258183} + - {x: 1.5865369, y: -7.459123} + - {x: 1.4448175, y: -7.5097895} + - {x: 1.109149, y: -6.567809} + - - {x: 1.109149, y: -6.567809} + - {x: 1.4448175, y: -7.5097895} + - {x: 0.6714225, y: -7.7852616} + - {x: 0.3560152, y: -6.836305} + - - {x: 0.3560152, y: -6.836305} + - {x: 0.6714225, y: -7.7852616} + - {x: -0.35930043, y: -8.10352} + - {x: -0.63667005, y: -7.142757} + - - {x: -0.63667005, y: -7.142757} + - {x: -0.35930043, y: -8.10352} + - {x: -1.5030584, y: -8.411112} + - {x: -1.769346, y: -7.447218} + - - {x: -1.769346, y: -7.447218} + - {x: -1.5030584, y: -8.411112} + - {x: -1.5143077, y: -8.41408} + - {x: -1.7581303, y: -7.4442596} +--- !u!1 &1844216780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1844216781} + - component: {fileID: 1844216783} + - component: {fileID: 1844216782} + m_Layer: 5 + m_Name: Package + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1844216781 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844216780} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1463708952} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -300, y: 240} + m_SizeDelta: {x: 240, y: 64} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1844216782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844216780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.47419012, g: 0.7516846, b: 0.9056604, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Default Collider (Generated by SpriteShapeGenerator in SpriteShape Package + version 2.* and above) +--- !u!222 &1844216783 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844216780} + m_CullTransparentMesh: 0 +--- !u!1 &1984142811 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1984142814} + - component: {fileID: 1984142813} + - component: {fileID: 1984142812} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1984142812 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984142811} + m_Enabled: 1 +--- !u!20 &1984142813 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984142811} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 40 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1984142814 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984142811} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2093986023 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2093986028} + - component: {fileID: 2093986027} + - component: {fileID: 2093986026} + - component: {fileID: 2093986024} + - component: {fileID: 2093986025} + m_Layer: 0 + m_Name: Tree01Bush + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!60 &2093986024 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2093986023} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 4.84269, y: 3.05365} + - {x: 4.31877, y: 2.83868} + - {x: 4.12653, y: 2.5557} + - {x: 4.11899, y: 2.30925} + - {x: 4.14914, y: 2.20386} + - {x: 4.14914, y: 2.20386} + - {x: 4.34635, y: 2.32329} + - {x: 4.80843, y: 2.51988} + - {x: 5.34101, y: 2.55111} + - {x: 5.74975, y: 2.17446} + - {x: 5.74975, y: 2.17446} + - {x: 5.37547, y: 1.96207} + - {x: 5.22543, y: 1.8765} + - {x: 5.21523, y: 1.81911} + - {x: 5.26046, y: 1.69127} + - {x: 5.26046, y: 1.69127} + - {x: 5.66344, y: 1.51113} + - {x: 5.6282, y: 1.15842} + - {x: 5.4157, y: 0.8141} + - {x: 5.28688, y: 0.65911} + - {x: 5.28688, y: 0.65911} + - {x: 5.37595, y: 0.6858} + - {x: 5.59406, y: 0.73089} + - {x: 5.86759, y: 0.74193} + - {x: 6.1229, y: 0.66643} + - {x: 6.1229, y: 0.66643} + - {x: 5.80885, y: 0.48231} + - {x: 5.74242, y: 0.37617} + - {x: 5.79609, y: 0.32751} + - {x: 5.84232, y: 0.31585} + - {x: 5.84232, y: 0.31585} + - {x: 5.96194, y: 0.37477} + - {x: 6.2299, y: 0.46242} + - {x: 6.50985, y: 0.44509} + - {x: 6.66541, y: 0.18912} + - {x: 6.66541, y: 0.18912} + - {x: 6.42058, y: 0.21963} + - {x: 6.33507, y: 0.14768} + - {x: 6.34051, y: 0.04633} + - {x: 6.36851, y: -0.01134} + - {x: 6.36851, y: -0.01134} + - {x: 6.49629, y: -0.1342} + - {x: 6.60109, y: -0.31298} + - {x: 6.63775, y: -0.52244} + - {x: 6.56111, y: -0.73729} + - {x: 6.56111, y: -0.73729} + - {x: 6.4287, y: -0.45185} + - {x: 6.30731, y: -0.42013} + - {x: 6.2186, y: -0.50307} + - {x: 6.18422, y: -0.56162} + - {x: 6.18422, y: -0.56162} + - {x: 6.13041, y: -0.53766} + - {x: 6.0028, y: -0.5064} + - {x: 5.85214, y: -0.52876} + - {x: 5.72916, y: -0.66567} + - {x: 5.72916, y: -0.66567} + - {x: 6.02382, y: -0.69385} + - {x: 6.21309, y: -0.7152} + - {x: 6.28172, y: -0.76015} + - {x: 6.21449, y: -0.85914} + - {x: 6.21449, y: -0.85914} + - {x: 6.04968, y: -0.97189} + - {x: 5.9095, y: -1.04565} + - {x: 5.90463, y: -1.09218} + - {x: 6.1457, y: -1.12326} + - {x: 6.1457, y: -1.12326} + - {x: 6.32091, y: -1.34489} + - {x: 6.55387, y: -1.44998} + - {x: 6.72484, y: -1.55576} + - {x: 6.7141, y: -1.77941} + - {x: 6.7141, y: -1.77941} + - {x: 6.47843, y: -1.68122} + - {x: 6.48439, y: -1.79101} + - {x: 6.57678, y: -1.9815} + - {x: 6.60037, y: -2.12543} + - {x: 6.60037, y: -2.12543} + - {x: 6.51471, y: -2.12106} + - {x: 6.3996, y: -2.04326} + - {x: 6.28027, y: -2.0297} + - {x: 6.18193, y: -2.21806} + - {x: 6.18193, y: -2.21806} + - {x: 6.12692, y: -2.04777} + - {x: 6.0844, y: -1.83434} + - {x: 5.9999, y: -1.68091} + - {x: 5.81891, y: -1.69063} + - {x: 5.81891, y: -1.69063} + - {x: 5.79664, y: -1.70542} + - {x: 5.8542, y: -1.84917} + - {x: 5.93225, y: -2.01429} + - {x: 5.97146, y: -2.09323} + - {x: 5.97146, y: -2.09323} + - {x: 5.92501, y: -2.05319} + - {x: 5.8339, y: -1.99192} + - {x: 5.77052, y: -1.9977} + - {x: 5.80724, y: -2.15883} + - {x: 5.80724, y: -2.15883} + - {x: 6.2256, y: -2.39562} + - {x: 6.38297, y: -2.70965} + - {x: 6.34401, y: -3.03037} + - {x: 6.17338, y: -3.2872} + - {x: 6.17338, y: -3.2872} + - {x: 6.12749, y: -2.95315} + - {x: 6.0436, y: -2.87154} + - {x: 5.94196, y: -3.01933} + - {x: 5.84283, y: -3.37353} + - {x: 5.84283, y: -3.37353} + - {x: 5.57284, y: -3.05782} + - {x: 5.39372, y: -3.06099} + - {x: 5.29439, y: -3.19834} + - {x: 5.26374, y: -3.28517} + - {x: 5.26374, y: -3.28517} + - {x: 5.32006, y: -3.29945} + - {x: 5.45569, y: -3.35064} + - {x: 5.62067, y: -3.45122} + - {x: 5.76502, y: -3.6137} + - {x: 5.76502, y: -3.6137} + - {x: 5.83018, y: -3.79164} + - {x: 5.82093, y: -3.92623} + - {x: 5.78234, y: -4.01141} + - {x: 5.75946, y: -4.04115} + - {x: 5.75946, y: -4.04115} + - {x: 5.7109, y: -3.99161} + - {x: 5.58961, y: -3.89956} + - {x: 5.43216, y: -3.8499} + - {x: 5.27512, y: -3.92749} + - {x: 5.27512, y: -3.92749} + - {x: 5.36818, y: -4.02862} + - {x: 5.43897, y: -4.11252} + - {x: 5.47944, y: -4.17733} + - {x: 5.48156, y: -4.22116} + - {x: 5.48156, y: -4.22116} + - {x: 5.35957, y: -4.34635} + - {x: 5.18388, y: -4.46807} + - {x: 5.02602, y: -4.56024} + - {x: 4.95751, y: -4.59676} + - {x: 4.95751, y: -4.59676} + - {x: 4.88656, y: -4.57166} + - {x: 4.72202, y: -4.50724} + - {x: 4.5363, y: -4.41981} + - {x: 4.40186, y: -4.3257} + - {x: 4.40186, y: -4.3257} + - {x: 4.47019, y: -4.23504} + - {x: 4.6226, y: -4.08066} + - {x: 4.66549, y: -3.91418} + - {x: 4.40522, y: -3.78722} + - {x: 4.40522, y: -3.78722} + - {x: 4.39266, y: -3.56797} + - {x: 4.31038, y: -3.44085} + - {x: 4.21759, y: -3.38204} + - {x: 4.1735, y: -3.36773} + - {x: 4.1735, y: -3.36773} + - {x: 4.16423, y: -3.47374} + - {x: 4.12554, y: -3.68973} + - {x: 4.04113, y: -3.86264} + - {x: 3.89467, y: -3.83942} + - {x: 3.89467, y: -3.83942} + - {x: 3.75367, y: -3.78877} + - {x: 3.65287, y: -3.90422} + - {x: 3.52679, y: -4.06987} + - {x: 3.30995, y: -4.16985} + - {x: 3.30995, y: -4.16985} + - {x: 3.39122, y: -3.91903} + - {x: 3.43309, y: -3.72432} + - {x: 3.38098, y: -3.59712} + - {x: 3.18033, y: -3.54879} + - {x: 3.18033, y: -3.54879} + - {x: 3.10658, y: -3.4581} + - {x: 3.01571, y: -3.37254} + - {x: 2.86357, y: -3.35789} + - {x: 2.60599, y: -3.47996} + - {x: 2.60599, y: -3.47996} + - {x: 2.60314, y: -3.29972} + - {x: 2.68611, y: -3.04564} + - {x: 2.68421, y: -2.89069} + - {x: 2.42673, y: -3.00783} + - {x: 2.42673, y: -3.00783} + - {x: 2.08376, y: -2.8147} + - {x: 1.89754, y: -2.95657} + - {x: 1.7734, y: -3.04504} + - {x: 1.61666, y: -2.6917} + - {x: 1.61666, y: -2.6917} + - {x: 1.40838, y: -2.70614} + - {x: 1.22902, y: -2.76883} + - {x: 1.06756, y: -2.92086} + - {x: 0.91294, y: -3.20329} + - {x: 0.91294, y: -3.20329} + - {x: 0.65167, y: -2.92223} + - {x: 0.37084, y: -2.90096} + - {x: 0.06932, y: -3.01393} + - {x: -0.25399, y: -3.1356} + - {x: -0.25399, y: -3.1356} + - {x: -0.53761, y: -3.10001} + - {x: -0.82938, y: -2.98486} + - {x: -1.09757, y: -2.9805} + - {x: -1.31041, y: -3.27731} + - {x: -1.31041, y: -3.27731} + - {x: -1.72356, y: -2.96735} + - {x: -2.11003, y: -2.92709} + - {x: -2.47707, y: -3.02492} + - {x: -2.8319, y: -3.12922} + - {x: -2.8319, y: -3.12922} + - {x: -2.97568, y: -3.20686} + - {x: -3.04153, y: -3.35436} + - {x: -3.11417, y: -3.55837} + - {x: -3.27828, y: -3.80555} + - {x: -3.27828, y: -3.80555} + - {x: -3.4984, y: -3.50634} + - {x: -3.67239, y: -3.55393} + - {x: -3.82858, y: -3.7993} + - {x: -3.99525, y: -4.09345} + - {x: -3.99525, y: -4.09345} + - {x: -4.17442, y: -4.18356} + - {x: -4.35255, y: -4.15602} + - {x: -4.4643, y: -4.26629} + - {x: -4.44432, y: -4.76982} + - {x: -4.44432, y: -4.76982} + - {x: -4.80366, y: -4.90527} + - {x: -4.9192, y: -4.99507} + - {x: -4.94229, y: -5.14406} + - {x: -5.02427, y: -5.45709} + - {x: -5.02427, y: -5.45709} + - {x: -5.22671, y: -5.02046} + - {x: -5.20792, y: -4.65386} + - {x: -5.0553, y: -4.28711} + - {x: -4.85625, y: -3.85007} + - {x: -4.85625, y: -3.85007} + - {x: -4.93982, y: -3.72641} + - {x: -5.03612, y: -3.57338} + - {x: -5.21178, y: -3.54162} + - {x: -5.53345, y: -3.78177} + - {x: -5.53345, y: -3.78177} + - {x: -5.63424, y: -3.48368} + - {x: -5.71522, y: -3.38325} + - {x: -5.84782, y: -3.52455} + - {x: -6.10348, y: -3.95161} + - {x: -6.10348, y: -3.95161} + - {x: -6.2646, y: -3.43816} + - {x: -6.04753, y: -3.02826} + - {x: -5.66722, y: -2.71671} + - {x: -5.33863, y: -2.49831} + - {x: -5.33863, y: -2.49831} + - {x: -5.37741, y: -2.46743} + - {x: -5.50299, y: -2.49002} + - {x: -5.68944, y: -2.51604} + - {x: -5.91077, y: -2.49545} + - {x: -5.91077, y: -2.49545} + - {x: -5.97196, y: -2.35886} + - {x: -5.99903, y: -2.16451} + - {x: -6.10671, y: -2.15555} + - {x: -6.40972, y: -2.57511} + - {x: -6.40972, y: -2.57511} + - {x: -6.65884, y: -2.16636} + - {x: -6.595, y: -1.70255} + - {x: -6.27507, y: -1.31102} + - {x: -5.75592, y: -1.11909} + - {x: -5.75592, y: -1.11909} + - {x: -5.6859, y: -0.96959} + - {x: -5.63586, y: -0.77298} + - {x: -5.75233, y: -0.65257} + - {x: -6.18186, y: -0.73166} + - {x: -6.18186, y: -0.73166} + - {x: -6.24005, y: -0.7562} + - {x: -6.34648, y: -0.89351} + - {x: -6.50318, y: -1.13488} + - {x: -6.71213, y: -1.47162} + - {x: -6.71213, y: -1.47162} + - {x: -6.74566, y: -1.23996} + - {x: -6.67993, y: -0.80658} + - {x: -6.55502, y: -0.3202} + - {x: -6.41102, y: 0.07046} + - {x: -6.41102, y: 0.07046} + - {x: -5.997, y: 0.19951} + - {x: -5.70129, y: 0.21571} + - {x: -5.52387, y: 0.18042} + - {x: -5.46473, y: 0.15502} + - {x: -5.46473, y: 0.15502} + - {x: -5.37153, y: 0.23228} + - {x: -5.228, y: 0.40328} + - {x: -5.23824, y: 0.57683} + - {x: -5.60635, y: 0.66175} + - {x: -5.60635, y: 0.66175} + - {x: -5.55099, y: 0.88185} + - {x: -5.42727, y: 1.16201} + - {x: -5.4472, y: 1.36696} + - {x: -5.82276, y: 1.36141} + - {x: -5.82276, y: 1.36141} + - {x: -5.54863, y: 1.71864} + - {x: -5.1334, y: 1.83349} + - {x: -4.7543, y: 1.81929} + - {x: -4.58856, y: 1.78937} + - {x: -4.58856, y: 1.78937} + - {x: -4.56497, y: 1.82652} + - {x: -4.5322, y: 1.92588} + - {x: -4.54727, y: 2.06932} + - {x: -4.6672, y: 2.23872} + - {x: -4.6672, y: 2.23872} + - {x: -4.56877, y: 2.40163} + - {x: -4.36927, y: 2.57736} + - {x: -4.29717, y: 2.73342} + - {x: -4.5809, y: 2.83731} + - {x: -4.5809, y: 2.83731} + - {x: -4.19203, y: 3.03575} + - {x: -3.83247, y: 3.045} + - {x: -3.56827, y: 2.97207} + - {x: -3.46553, y: 2.92398} + - {x: -3.46553, y: 2.92398} + - {x: -3.39532, y: 2.93586} + - {x: -3.30927, y: 3.00681} + - {x: -3.39425, y: 3.18978} + - {x: -3.83712, y: 3.53774} + - {x: -3.83712, y: 3.53774} + - {x: -3.36349, y: 3.7145} + - {x: -2.87709, y: 3.6594} + - {x: -2.49753, y: 3.51892} + - {x: -2.34444, y: 3.43954} + - {x: -2.34444, y: 3.43954} + - {x: -2.23129, y: 3.49089} + - {x: -2.03195, y: 3.66677} + - {x: -1.95655, y: 3.99992} + - {x: -2.21525, y: 4.5231} + - {x: -2.21525, y: 4.5231} + - {x: -1.72051, y: 4.51414} + - {x: -1.22121, y: 4.1313} + - {x: -0.83521, y: 3.67863} + - {x: -0.68036, y: 3.46018} + - {x: -0.68036, y: 3.46018} + - {x: -0.4908, y: 3.64814} + - {x: -0.03416, y: 4.05636} + - {x: 0.52154, y: 4.45139} + - {x: 1.00828, y: 4.59976} + - {x: 1.00828, y: 4.59976} + - {x: 0.56614, y: 3.95445} + - {x: 0.55907, y: 3.60683} + - {x: 0.7377, y: 3.46538} + - {x: 0.85266, y: 3.43857} + - {x: 0.85266, y: 3.43857} + - {x: 0.94636, y: 3.56991} + - {x: 1.19649, y: 3.85168} + - {x: 1.55663, y: 4.11553} + - {x: 1.98033, y: 4.19309} + - {x: 1.98033, y: 4.19309} + - {x: 1.78593, y: 3.75535} + - {x: 2.01108, y: 3.48073} + - {x: 2.36177, y: 3.33849} + - {x: 2.544, y: 3.29791} + - {x: 2.544, y: 3.29791} + - {x: 2.67149, y: 3.409} + - {x: 2.9764, y: 3.65279} + - {x: 3.3424, y: 3.89509} + - {x: 3.65317, y: 4.00172} + - {x: 3.65317, y: 4.00172} + - {x: 3.46192, y: 3.62183} + - {x: 3.52209, y: 3.34971} + - {x: 3.67812, y: 3.18131} + - {x: 3.77446, y: 3.11256} + - {x: 3.77446, y: 3.11256} + - {x: 3.98034, y: 3.18891} + - {x: 4.22693, y: 3.33372} + - {x: 4.51434, y: 3.35323} + - {x: 4.84269, y: 3.05365} +--- !u!114 &2093986025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2093986023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a8e65bafadf93f41a17da25163f2f51, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ColliderCornerType: 0 + m_ColliderOffset: 1 + m_UpdateCollider: 0 +--- !u!1971053207 &2093986026 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2093986023} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -46 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: a94adaf94669646788de8f639270804a, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: -0.009348869, y: -0.4286661, z: 0} + m_Extent: {x: 6.7234507, y: 5.028426, z: 0} +--- !u!114 &2093986027 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2093986023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8e3fa9c7ff3ad4112a30689e933384ed, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 4 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &2093986028 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2093986023} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1192624872} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2100844765 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2100844766} + - component: {fileID: 2100844768} + - component: {fileID: 2100844767} + m_Layer: 5 + m_Name: GeometryCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2100844766 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2100844765} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1463708952} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 240} + m_SizeDelta: {x: 240, y: 64} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2100844767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2100844765} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.47419012, g: 0.7516846, b: 0.9056604, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Geometry Collider (Generated from Mesh Data. Menu -> SpriteShape -> Generate + Geometry Collider) +--- !u!222 &2100844768 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2100844765} + m_CullTransparentMesh: 0 +--- !u!1 &2110832631 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2110832637} + - component: {fileID: 2110832636} + - component: {fileID: 2110832635} + - component: {fileID: 2110832634} + - component: {fileID: 2110832633} + - component: {fileID: 2110832632} + m_Layer: 0 + m_Name: Block (Package) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!66 &2110832632 +CompositeCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110832631} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_GeometryType: 0 + m_GenerationType: 0 + m_EdgeRadius: 0 + m_ColliderPaths: + - m_Collider: {fileID: 2110832634} + m_ColliderPaths: + - - X: -6823926 + Y: -86898928 + - X: -23371446 + Y: -88284200 + - X: -44140548 + Y: -84250288 + - X: -68037344 + Y: -75517088 + - X: -105722416 + Y: -57939024 + - X: -164309376 + Y: -25698436 + - X: -111725408 + Y: 98621024 + - X: -86321208 + Y: 162627232 + - X: -80659472 + Y: 173836368 + - X: -66737420 + Y: 193368128 + - X: -46561648 + Y: 211283472 + - X: -31030436 + Y: 220549296 + - X: -10689546 + Y: 228106992 + - X: 10384530 + Y: 231620240 + - X: 31522158 + Y: 231065872 + - X: 42128440 + Y: 229196896 + - X: 58826612 + Y: 223484560 + - X: 73065936 + Y: 214745040 + - X: 84667824 + Y: 203549760 + - X: 93805208 + Y: 190476208 + - X: 100774368 + Y: 176040432 + - X: 105910816 + Y: 160668208 + - X: 109535072 + Y: 144726960 + - X: 111939744 + Y: 128565760 + - X: 114159384 + Y: 96967920 + - X: 115131400 + Y: 47150940 + - X: 116516952 + Y: 32078612 + - X: 112856608 + Y: 17616074 + - X: 104962064 + Y: 5721135 + - X: 71834344 + Y: -23550152 + - X: 59855284 + Y: -47128320 + - X: 44613972 + Y: -63462744 + - X: 25357642 + Y: -74402344 + - X: -2634368 + Y: -84355752 + - X: -14166596 + Y: -87457848 + - X: -6823926 + Y: -86898928 + m_CompositePaths: + m_Paths: + - - {x: -0.6823926, y: -8.689893} + - {x: -1.4166596, y: -8.745785} + - {x: -0.2634368, y: -8.4355755} + - {x: 2.5357642, y: -7.4402347} + - {x: 4.461397, y: -6.3462744} + - {x: 5.9855285, y: -4.712832} + - {x: 7.1834345, y: -2.3550153} + - {x: 10.496206, y: 0.5721135} + - {x: 11.285661, y: 1.7616074} + - {x: 11.651695, y: 3.2078612} + - {x: 11.51314, y: 4.715094} + - {x: 11.415938, y: 9.696792} + - {x: 11.1939745, y: 12.856576} + - {x: 10.953507, y: 14.472696} + - {x: 10.591082, y: 16.06682} + - {x: 10.077436, y: 17.604044} + - {x: 9.380521, y: 19.04762} + - {x: 8.466783, y: 20.354977} + - {x: 7.306594, y: 21.474504} + - {x: 5.8826613, y: 22.348455} + - {x: 4.212844, y: 22.91969} + - {x: 3.1522157, y: 23.106588} + - {x: 1.038453, y: 23.162024} + - {x: -1.0689546, y: 22.8107} + - {x: -3.1030436, y: 22.05493} + - {x: -4.6561646, y: 21.128347} + - {x: -6.6737423, y: 19.336813} + - {x: -8.065948, y: 17.383636} + - {x: -8.632121, y: 16.262724} + - {x: -11.172541, y: 9.8621025} + - {x: -16.430939, y: -2.5698435} + - {x: -10.572242, y: -5.7939024} + - {x: -6.8037343, y: -7.5517087} + - {x: -4.414055, y: -8.425029} + - {x: -2.3371446, y: -8.82842} + m_VertexDistance: 0.0005 +--- !u!50 &2110832633 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110832631} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 0 +--- !u!60 &2110832634 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110832631} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 1 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: -0.68239266, y: -8.689893} + - {x: -2.3371446, y: -8.82842} + - {x: -4.414055, y: -8.425029} + - {x: -6.8037343, y: -7.5517087} + - {x: -10.572242, y: -5.7939024} + - {x: -16.430937, y: -2.5698435} + - {x: -11.172541, y: 9.8621025} + - {x: -8.632121, y: 16.262724} + - {x: -8.065948, y: 17.383636} + - {x: -6.673742, y: 19.336813} + - {x: -4.6561646, y: 21.128347} + - {x: -3.1030436, y: 22.05493} + - {x: -1.0689546, y: 22.8107} + - {x: 1.038453, y: 23.162024} + - {x: 3.1522157, y: 23.106586} + - {x: 4.212844, y: 22.91969} + - {x: 5.8826613, y: 22.348455} + - {x: 7.3065934, y: 21.474504} + - {x: 8.466783, y: 20.354977} + - {x: 9.380521, y: 19.04762} + - {x: 10.077436, y: 17.604044} + - {x: 10.591082, y: 16.06682} + - {x: 10.953507, y: 14.472695} + - {x: 11.1939745, y: 12.856576} + - {x: 11.415938, y: 9.696792} + - {x: 11.51314, y: 4.715094} + - {x: 11.651695, y: 3.2078612} + - {x: 11.285661, y: 1.7616074} + - {x: 10.496206, y: 0.5721135} + - {x: 7.1834345, y: -2.3550153} + - {x: 5.9855285, y: -4.712832} + - {x: 4.461397, y: -6.3462744} + - {x: 2.5357642, y: -7.4402347} + - {x: -0.26343685, y: -8.4355755} + - {x: -1.4166596, y: -8.745785} + - {x: -0.68239266, y: -8.689893} +--- !u!1971053207 &2110832635 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110832631} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 20 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 7d8cda48c729c46329cd9d3c69a3a4e6, type: 3} + m_Sprites: + - {fileID: 21300006, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300014, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300002, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300012, guid: a8321f6fae34f034787010a903e29648, type: 3} + - {fileID: 21300010, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300000, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300004, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300012, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300008, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 0} + - {fileID: 0} + - {fileID: 21300012, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300008, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + m_LocalAABB: + m_Center: {x: -2.2558622, y: 7.180541, z: -0.0050049997} + m_Extent: {x: 13.562195, y: 15.659332, z: 0.0050049997} +--- !u!114 &2110832636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110832631} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: -1.636219, y: -7.9291697, z: 0} + leftTangent: {x: 6.020996, y: 1.5137386, z: 0} + rightTangent: {x: -2.8936367, y: -0.7274895, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -15.358402, y: -2.2131429, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -8.29718, y: 14.782811, z: 0} + leftTangent: {x: -0.73890686, y: -2.238881, z: 0} + rightTangent: {x: 1.9517517, y: 5.9137793, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.0031815, y: 22.100475, z: 0} + leftTangent: {x: -4.723675, y: 1.0711021, z: 0} + rightTangent: {x: 8.273635, y: -1.8760605, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 10.761995, y: 3.851832, z: 0} + leftTangent: {x: -0.6242571, y: 3.3770556, z: 0} + rightTangent: {x: 0.5823755, y: -3.1504874, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.837639, y: -2.8409967, z: 0} + leftTangent: {x: 0.4805252, y: 1.809861, z: -0} + rightTangent: {x: -0.4805252, y: -1.809861, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: a710fe91ca336478e999261a86254e9f, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0.425 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!4 &2110832637 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110832631} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -34.699997, y: -26.28, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/Colliders.unity.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/Colliders.unity.meta new file mode 100644 index 0000000..45ea8e4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/Colliders.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 299e0b891b406a8409a068bd55ee5a1f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/ConformingSplineScene.unity b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/ConformingSplineScene.unity new file mode 100644 index 0000000..a82e3f0 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/ConformingSplineScene.unity @@ -0,0 +1,528 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_ExportTrainingData: 0 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &400039572 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 400039576} + - component: {fileID: 400039575} + - component: {fileID: 400039574} + m_Layer: 0 + m_Name: Top + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &400039574 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400039572} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: 0.37061024, y: 7.517852, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41290092, y: -1.8726089, z: 0} + leftTangent: {x: -3.4678102, y: 1.8794639, z: 0} + rightTangent: {x: 3.4678102, y: -1.8794639, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 7.9664383, y: -6.63839, z: 0} + leftTangent: {x: -4.8397465, y: -0.030138493, z: 0} + rightTangent: {x: 4.8397465, y: 0.030138493, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 15, y: -1, z: 0} + leftTangent: {x: -3.2519875, y: -2.4569178, z: 0} + rightTangent: {x: 3.2519875, y: 2.4569178, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 14.186232, y: 7.786347, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 541c57e7ddb8adc46b7ca9573818a619, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!1971053207 &400039575 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400039572} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300000, guid: e74b518a65bc45f4cace9a2fef6af29d, type: 3} + m_LocalAABB: + m_Center: {x: 7.558513, y: 0.5739784, z: -0.005} + m_Extent: {x: 8.697825, y: 7.2123685, z: 0.005} +--- !u!4 &400039576 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400039572} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -7.61, y: -0.47, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1865283555} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1865283552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1865283555} + - component: {fileID: 1865283554} + - component: {fileID: 1865283553} + - component: {fileID: 1865283556} + m_Layer: 0 + m_Name: Bottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1865283553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1865283552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: 0.37061024, y: 7.517852, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41290092, y: -1.8726089, z: 0} + leftTangent: {x: -3.4678102, y: 1.8794639, z: 0} + rightTangent: {x: 3.4678102, y: -1.8794639, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 7.9664383, y: -6.63839, z: 0} + leftTangent: {x: -4.8397465, y: -0.030138493, z: 0} + rightTangent: {x: 4.8397465, y: 0.030138493, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 15, y: -1, z: 0} + leftTangent: {x: -3.2519875, y: -2.4569178, z: 0} + rightTangent: {x: 3.2519875, y: 2.4569178, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 14.186232, y: 7.786347, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e03579ec9d1b6c54ea364bd8ee0bcfd8, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!1971053207 &1865283554 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1865283552} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300000, guid: 418ab5c27d3054eb89959d9c715e00c9, type: 3} + - {fileID: 21300000, guid: e74b518a65bc45f4cace9a2fef6af29d, type: 3} + m_LocalAABB: + m_Center: {x: 7.5582957, y: 0.47995615, z: -0.005} + m_Extent: {x: 9.09759, y: 7.5183325, z: 0.005} +--- !u!4 &1865283555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1865283552} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400039576} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1865283556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1865283552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db6f6067a1e6dd34ca4e2c4b7145e79b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ParentObject: {fileID: 400039572} +--- !u!1 &1990748034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1990748038} + - component: {fileID: 1990748037} + - component: {fileID: 1990748036} + - component: {fileID: 1990748035} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1990748035 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1990748034} + m_Enabled: 1 +--- !u!124 &1990748036 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1990748034} + m_Enabled: 1 +--- !u!20 &1990748037 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1990748034} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 15 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1990748038 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1990748034} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/ConformingSplineScene.unity.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/ConformingSplineScene.unity.meta new file mode 100644 index 0000000..f9452f7 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/ConformingSplineScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b8529774cb716f645b682951a7aae689 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimpleDrawScene.unity b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimpleDrawScene.unity new file mode 100644 index 0000000..0392a5a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimpleDrawScene.unity @@ -0,0 +1,326 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &1048079211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1048079214} + - component: {fileID: 1048079213} + - component: {fileID: 1048079212} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1048079212 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1048079211} + m_Enabled: 1 +--- !u!20 &1048079213 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1048079211} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1048079214 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1048079211} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1480543089 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1480543093} + - component: {fileID: 1480543092} + - component: {fileID: 1480543091} + - component: {fileID: 1480543090} + m_Layer: 0 + m_Name: SpriteShape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1480543090 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1480543089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 922bb1bbfeaeb9a4c9204b7d0bc3d8c8, type: 3} + m_Name: + m_EditorClassIdentifier: + minimumDistance: 1 +--- !u!114 &1480543091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1480543089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -1, y: 0, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 1 + corner: 0 + - position: {x: 1, y: 0, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0.216 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e03579ec9d1b6c54ea364bd8ee0bcfd8, type: 2} + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_UpdateCollider: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_ColliderCornerType: 0 +--- !u!1971053207 &1480543092 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1480543089} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300000, guid: 418ab5c27d3054eb89959d9c715e00c9, type: 3} + - {fileID: 21300000, guid: e74b518a65bc45f4cace9a2fef6af29d, type: 3} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_LocalAABB: + m_Center: {x: 0, y: 0.20000002, z: 0} + m_Extent: {x: 1, y: 0.20000002, z: 0} +--- !u!4 &1480543093 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1480543089} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimpleDrawScene.unity.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimpleDrawScene.unity.meta new file mode 100644 index 0000000..a3f9521 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimpleDrawScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e182160e1c8c64844872387ebf59c6e9 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimplifiedSpriteShape.unity b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimplifiedSpriteShape.unity new file mode 100644 index 0000000..34a56dd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimplifiedSpriteShape.unity @@ -0,0 +1,382 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &53845803 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 53845806} + - component: {fileID: 53845805} + - component: {fileID: 53845804} + m_Layer: 0 + m_Name: SpriteShape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &53845804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53845803} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LegacyGenerator: 0 + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 0.12956464, y: 1.8859321, z: 0} + leftTangent: {x: 0.87607896, y: -0.028361678, z: 0} + rightTangent: {x: -0.876079, y: 0.028361678, z: 0} + mode: 1 + height: 1 + bevelCutoff: 180 + bevelSize: 0.5 + spriteIndex: 0 + corner: 0 + - position: {x: -2, y: 0, z: 0} + leftTangent: {x: 0.7276257, y: 0.5038886, z: 0} + rightTangent: {x: -0.72762585, y: -0.5038886, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.370756, y: -1.2540917, z: 0} + leftTangent: {x: 0.27876043, y: 0.84002125, z: 0} + rightTangent: {x: -0.27876043, y: -0.84002113, z: 0} + mode: 1 + height: 1 + bevelCutoff: 180 + bevelSize: 0.424 + spriteIndex: 0 + corner: 0 + - position: {x: -2.9905427, y: -4.1601443, z: 0} + leftTangent: {x: -1.0090494, y: 0.19818997, z: 0} + rightTangent: {x: 1.0090494, y: -0.19819021, z: 0} + mode: 1 + height: 1 + bevelCutoff: 175 + bevelSize: 0.473 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68832755, y: -2.0601013, z: 0} + leftTangent: {x: -1.020073, y: -0.13004279, z: 0} + rightTangent: {x: 1.020073, y: 0.13004267, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4391866, y: -3.7118704, z: 0} + leftTangent: {x: -1.0588536, y: -0.24282193, z: 0} + rightTangent: {x: 1.0588536, y: 0.24282193, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.389332, y: -1.0597417, z: 0} + leftTangent: {x: 0.22145462, y: -0.83364165, z: 0} + rightTangent: {x: -0.22145462, y: 0.83364165, z: 0} + mode: 1 + height: 1 + bevelCutoff: 180 + bevelSize: 0.407 + spriteIndex: 0 + corner: 0 + - position: {x: 2, y: 0, z: 0} + leftTangent: {x: 0.71019197, y: -0.4895181, z: 0} + rightTangent: {x: -0.71019197, y: 0.4895181, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 19b9cf308de41834c9968d12bec673b1, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 +--- !u!1971053207 &53845805 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53845803} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300000, guid: c6dabd295b8ab514fa47b5d4e2b0266e, type: 3} + m_LocalAABB: + m_Center: {x: -0.009027481, y: -1.1412225, z: -0.005} + m_Extent: {x: 4.6648436, y: 3.2670288, z: 0.005} +--- !u!4 &53845806 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53845803} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &408902805 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 408902808} + - component: {fileID: 408902807} + - component: {fileID: 408902806} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &408902806 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 408902805} + m_Enabled: 1 +--- !u!20 &408902807 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 408902805} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &408902808 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 408902805} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimplifiedSpriteShape.unity.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimplifiedSpriteShape.unity.meta new file mode 100644 index 0000000..e546ea9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SimplifiedSpriteShape.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 254bf62203b7710419a1e6283f7e049b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SprinklePrefabs.unity b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SprinklePrefabs.unity new file mode 100644 index 0000000..12e7c37 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SprinklePrefabs.unity @@ -0,0 +1,373 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &408902805 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 408902808} + - component: {fileID: 408902807} + - component: {fileID: 408902806} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &408902806 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 408902805} + m_Enabled: 1 +--- !u!20 &408902807 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 408902805} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 15 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &408902808 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 408902805} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2103414715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2103414719} + - component: {fileID: 2103414718} + - component: {fileID: 2103414717} + - component: {fileID: 2103414716} + m_Layer: 0 + m_Name: New SpriteShapeController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2103414716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2103414715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c3eb1d33a6f9114bb5b51099948d2ce, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Prefab: {fileID: 1791732276458280, guid: 91b2663493e1ab642b1b60fc7955f947, type: 2} + m_RandomFactor: 90 + m_UseNormals: 1 +--- !u!114 &2103414717 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2103414715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: 26.488874, y: -2.6975656, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 10.016745, y: -9.5673275, z: 0} + leftTangent: {x: 5.787901, y: 1.0897436, z: -0} + rightTangent: {x: -5.787901, y: -1.0897436, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -9.3538, y: -9.1233, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -15.8531, y: 1.9792956, z: 0} + leftTangent: {x: -0.88264585, y: -3.0461369, z: -0} + rightTangent: {x: 0.88264585, y: 3.0461369, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.864938, y: 10.117959, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 10.084305, y: -0.2951008, z: 0} + leftTangent: {x: -1.3592644, y: -0.46925667, z: -0} + rightTangent: {x: 1.3592644, y: 0.46925667, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 25.481283, y: 4.9277797, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e03579ec9d1b6c54ea364bd8ee0bcfd8, type: 2} + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_UpdateCollider: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_ColliderCornerType: 0 +--- !u!1971053207 &2103414718 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2103414715} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300000, guid: 418ab5c27d3054eb89959d9c715e00c9, type: 3} + - {fileID: 21300000, guid: e74b518a65bc45f4cace9a2fef6af29d, type: 3} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_LocalAABB: + m_Center: {x: 5.282402, y: 0.079841614, z: 0} + m_Extent: {x: 21.206472, y: 10.038117, z: 0} +--- !u!4 &2103414719 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2103414715} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.08430457, y: 0.2951008, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SprinklePrefabs.unity.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SprinklePrefabs.unity.meta new file mode 100644 index 0000000..6f87f9c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scenes/SprinklePrefabs.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 486575d9cb65b134fad35b06df9ae993 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts.meta new file mode 100644 index 0000000..a433b56 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00426f3467ae2f4449711bbe9a567084 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Clipper.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Clipper.cs new file mode 100644 index 0000000..49f84ca --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Clipper.cs @@ -0,0 +1,5078 @@ +/******************************************************************************* +* * +* Author : Angus Johnson * +* Version : 6.4.2 * +* Date : 27 February 2017 * +* Website : http://www.angusj.com * +* Copyright : Angus Johnson 2010-2017 * +* * +* License: * +* Use, modification & distribution is subject to Boost Software License Ver 1. * +* http://www.boost.org/LICENSE_1_0.txt * +* * +* Attributions: * +* The code in this library is an extension of Bala Vatti's clipping algorithm: * +* "A generic solution to polygon clipping" * +* Communications of the ACM, Vol 35, Issue 7 (July 1992) pp 56-63. * +* http://portal.acm.org/citation.cfm?id=129906 * +* * +* Computer graphics and geometric modeling: implementation and algorithms * +* By Max K. Agoston * +* Springer; 1 edition (January 4, 2005) * +* http://books.google.com/books?q=vatti+clipping+agoston * +* * +* See also: * +* "Polygon Offsetting by Computing Winding Numbers" * +* Paper no. DETC2005-85513 pp. 565-575 * +* ASME 2005 International Design Engineering Technical Conferences * +* and Computers and Information in Engineering Conference (IDETC/CIE2005) * +* September 24-28, 2005 , Long Beach, California, USA * +* http://www.me.berkeley.edu/~mcmains/pubs/DAC05OffsetPolygon.pdf * +* * +*******************************************************************************/ + +/******************************************************************************* +* * +* This is a translation of the Delphi Clipper library and the naming style * +* used has retained a Delphi flavour. * +* * +*******************************************************************************/ + +//use_int32: When enabled 32bit ints are used instead of 64bit ints. This +//improve performance but coordinate values are limited to the range +/- 46340 +//#define use_int32 + +//use_xyz: adds a Z member to IntPoint. Adds a minor cost to performance. +//#define use_xyz + +//use_lines: Enables open path clipping. Adds a very minor cost to performance. +#define use_lines + + +using System; +using System.Collections.Generic; +//using System.Text; //for Int128.AsString() & StringBuilder +//using System.IO; //debugging with streamReader & StreamWriter +//using System.Windows.Forms; //debugging to clipboard + +namespace ExtrasClipperLib +{ +#if use_int32 + using cInt = Int32; +#else + using cInt = Int64; +#endif + + using Path = List; + using Paths = List>; + + public struct DoublePoint + { + public double X; + public double Y; + + public DoublePoint(double x = 0, double y = 0) + { + this.X = x; this.Y = y; + } + + public DoublePoint(DoublePoint dp) + { + this.X = dp.X; this.Y = dp.Y; + } + + public DoublePoint(IntPoint ip) + { + this.X = ip.X; this.Y = ip.Y; + } + }; + + + //------------------------------------------------------------------------------ + // PolyTree & PolyNode classes + //------------------------------------------------------------------------------ + + public class PolyTree : PolyNode + { + internal List m_AllPolys = new List(); + + //The GC probably handles this cleanup more efficiently ... + //~PolyTree(){Clear();} + + public void Clear() + { + for (int i = 0; i < m_AllPolys.Count; i++) + m_AllPolys[i] = null; + m_AllPolys.Clear(); + m_Childs.Clear(); + } + + public PolyNode GetFirst() + { + if (m_Childs.Count > 0) + return m_Childs[0]; + else + return null; + } + + public int Total + { + get + { + int result = m_AllPolys.Count; + //with negative offsets, ignore the hidden outer polygon ... + if (result > 0 && m_Childs[0] != m_AllPolys[0]) result--; + return result; + } + } + } + + public class PolyNode + { + internal PolyNode m_Parent; + internal Path m_polygon = new Path(); + internal int m_Index; + internal JoinType m_jointype; + internal EndType m_endtype; + internal List m_Childs = new List(); + + private bool IsHoleNode() + { + bool result = true; + PolyNode node = m_Parent; + while (node != null) + { + result = !result; + node = node.m_Parent; + } + return result; + } + + public int ChildCount + { + get { return m_Childs.Count; } + } + + public Path Contour + { + get { return m_polygon; } + } + + internal void AddChild(PolyNode Child) + { + int cnt = m_Childs.Count; + m_Childs.Add(Child); + Child.m_Parent = this; + Child.m_Index = cnt; + } + + public PolyNode GetNext() + { + if (m_Childs.Count > 0) + return m_Childs[0]; + else + return GetNextSiblingUp(); + } + + internal PolyNode GetNextSiblingUp() + { + if (m_Parent == null) + return null; + else if (m_Index == m_Parent.m_Childs.Count - 1) + return m_Parent.GetNextSiblingUp(); + else + return m_Parent.m_Childs[m_Index + 1]; + } + + public List Childs + { + get { return m_Childs; } + } + + public PolyNode Parent + { + get { return m_Parent; } + } + + public bool IsHole + { + get { return IsHoleNode(); } + } + + public bool IsOpen { get; set; } + } + + + //------------------------------------------------------------------------------ + // Int128 struct (enables safe math on signed 64bit integers) + // eg Int128 val1((Int64)9223372036854775807); //ie 2^63 -1 + // Int128 val2((Int64)9223372036854775807); + // Int128 val3 = val1 * val2; + // val3.ToString => "85070591730234615847396907784232501249" (8.5e+37) + //------------------------------------------------------------------------------ + + internal struct Int128 + { + private Int64 hi; + private UInt64 lo; + + public Int128(Int64 _lo) + { + lo = (UInt64)_lo; + if (_lo < 0) hi = -1; + else hi = 0; + } + + public Int128(Int64 _hi, UInt64 _lo) + { + lo = _lo; + hi = _hi; + } + + public Int128(Int128 val) + { + hi = val.hi; + lo = val.lo; + } + + public bool IsNegative() + { + return hi < 0; + } + + public static bool operator==(Int128 val1, Int128 val2) + { + if ((object)val1 == (object)val2) return true; + else if ((object)val1 == null || (object)val2 == null) return false; + return (val1.hi == val2.hi && val1.lo == val2.lo); + } + + public static bool operator!=(Int128 val1, Int128 val2) + { + return !(val1 == val2); + } + + public override bool Equals(System.Object obj) + { + if (obj == null || !(obj is Int128)) + return false; + Int128 i128 = (Int128)obj; + return (i128.hi == hi && i128.lo == lo); + } + + public override int GetHashCode() + { + return hi.GetHashCode() ^ lo.GetHashCode(); + } + + public static bool operator>(Int128 val1, Int128 val2) + { + if (val1.hi != val2.hi) + return val1.hi > val2.hi; + else + return val1.lo > val2.lo; + } + + public static bool operator<(Int128 val1, Int128 val2) + { + if (val1.hi != val2.hi) + return val1.hi < val2.hi; + else + return val1.lo < val2.lo; + } + + public static Int128 operator+(Int128 lhs, Int128 rhs) + { + lhs.hi += rhs.hi; + lhs.lo += rhs.lo; + if (lhs.lo < rhs.lo) lhs.hi++; + return lhs; + } + + public static Int128 operator-(Int128 lhs, Int128 rhs) + { + return lhs + -rhs; + } + + public static Int128 operator-(Int128 val) + { + if (val.lo == 0) + return new Int128(-val.hi, 0); + else + return new Int128(~val.hi, ~val.lo + 1); + } + + public static explicit operator double(Int128 val) + { + const double shift64 = 18446744073709551616.0; //2^64 + if (val.hi < 0) + { + if (val.lo == 0) + return (double)val.hi * shift64; + else + return -(double)(~val.lo + ~val.hi * shift64); + } + else + return (double)(val.lo + val.hi * shift64); + } + + //nb: Constructing two new Int128 objects every time we want to multiply longs + //is slow. So, although calling the Int128Mul method doesn't look as clean, the + //code runs significantly faster than if we'd used the * operator. + + public static Int128 Int128Mul(Int64 lhs, Int64 rhs) + { + bool negate = (lhs < 0) != (rhs < 0); + if (lhs < 0) lhs = -lhs; + if (rhs < 0) rhs = -rhs; + UInt64 int1Hi = (UInt64)lhs >> 32; + UInt64 int1Lo = (UInt64)lhs & 0xFFFFFFFF; + UInt64 int2Hi = (UInt64)rhs >> 32; + UInt64 int2Lo = (UInt64)rhs & 0xFFFFFFFF; + + //nb: see comments in clipper.pas + UInt64 a = int1Hi * int2Hi; + UInt64 b = int1Lo * int2Lo; + UInt64 c = int1Hi * int2Lo + int1Lo * int2Hi; + + UInt64 lo; + Int64 hi; + hi = (Int64)(a + (c >> 32)); + + unchecked { lo = (c << 32) + b; } + if (lo < b) hi++; + Int128 result = new Int128(hi, lo); + return negate ? -result : result; + } + }; + + //------------------------------------------------------------------------------ + //------------------------------------------------------------------------------ + + public struct IntPoint + { + public cInt X; + public cInt Y; +#if use_xyz + public cInt Z; + + public IntPoint(cInt x, cInt y, cInt z = 0) + { + this.X = x; this.Y = y; this.Z = z; + } + + public IntPoint(double x, double y, double z = 0) + { + this.X = (cInt)x; this.Y = (cInt)y; this.Z = (cInt)z; + } + + public IntPoint(DoublePoint dp) + { + this.X = (cInt)dp.X; this.Y = (cInt)dp.Y; this.Z = 0; + } + + public IntPoint(IntPoint pt) + { + this.X = pt.X; this.Y = pt.Y; this.Z = pt.Z; + } + +#else + public IntPoint(cInt X, cInt Y) + { + this.X = X; this.Y = Y; + } + + public IntPoint(double x, double y) + { + this.X = (cInt)x; this.Y = (cInt)y; + } + + public IntPoint(IntPoint pt) + { + this.X = pt.X; this.Y = pt.Y; + } + +#endif + + public static bool operator==(IntPoint a, IntPoint b) + { + return a.X == b.X && a.Y == b.Y; + } + + public static bool operator!=(IntPoint a, IntPoint b) + { + return a.X != b.X || a.Y != b.Y; + } + + public override bool Equals(object obj) + { + if (obj == null) return false; + if (obj is IntPoint) + { + IntPoint a = (IntPoint)obj; + return (X == a.X) && (Y == a.Y); + } + else return false; + } + + public override int GetHashCode() + { + //simply prevents a compiler warning + return base.GetHashCode(); + } + }// end struct IntPoint + + public struct IntRect + { + public cInt left; + public cInt top; + public cInt right; + public cInt bottom; + + public IntRect(cInt l, cInt t, cInt r, cInt b) + { + this.left = l; this.top = t; + this.right = r; this.bottom = b; + } + + public IntRect(IntRect ir) + { + this.left = ir.left; this.top = ir.top; + this.right = ir.right; this.bottom = ir.bottom; + } + } + + public enum ClipType { ctIntersection, ctUnion, ctDifference, ctXor }; + public enum PolyType { ptSubject, ptClip }; + + //By far the most widely used winding rules for polygon filling are + //EvenOdd & NonZero (GDI, GDI+, XLib, OpenGL, Cairo, AGG, Quartz, SVG, Gr32) + //Others rules include Positive, Negative and ABS_GTR_EQ_TWO (only in OpenGL) + //see http://glprogramming.com/red/chapter11.html + public enum PolyFillType { pftEvenOdd, pftNonZero, pftPositive, pftNegative }; + + public enum JoinType { jtSquare, jtRound, jtMiter }; + public enum EndType { etClosedPolygon, etClosedLine, etOpenButt, etOpenSquare, etOpenRound }; + + internal enum EdgeSide { esLeft, esRight }; + internal enum Direction { dRightToLeft, dLeftToRight }; + + internal class TEdge + { + internal IntPoint Bot; + internal IntPoint Curr; //current (updated for every new scanbeam) + internal IntPoint Top; + internal IntPoint Delta; + internal double Dx; + internal PolyType PolyTyp; + internal EdgeSide Side; //side only refers to current side of solution poly + internal int WindDelta; //1 or -1 depending on winding direction + internal int WindCnt; + internal int WindCnt2; //winding count of the opposite polytype + internal int OutIdx; + internal TEdge Next; + internal TEdge Prev; + internal TEdge NextInLML; + internal TEdge NextInAEL; + internal TEdge PrevInAEL; + internal TEdge NextInSEL; + internal TEdge PrevInSEL; + }; + + public class IntersectNode + { + internal TEdge Edge1; + internal TEdge Edge2; + internal IntPoint Pt; + }; + + public class MyIntersectNodeSort : IComparer + { + public int Compare(IntersectNode node1, IntersectNode node2) + { + cInt i = node2.Pt.Y - node1.Pt.Y; + if (i > 0) return 1; + else if (i < 0) return -1; + else return 0; + } + } + + internal class LocalMinima + { + internal cInt Y; + internal TEdge LeftBound; + internal TEdge RightBound; + internal LocalMinima Next; + }; + + internal class Scanbeam + { + internal cInt Y; + internal Scanbeam Next; + }; + + internal class Maxima + { + internal cInt X; + internal Maxima Next; + internal Maxima Prev; + }; + + //OutRec: contains a path in the clipping solution. Edges in the AEL will + //carry a pointer to an OutRec when they are part of the clipping solution. + internal class OutRec + { + internal int Idx; + internal bool IsHole; + internal bool IsOpen; + internal OutRec FirstLeft; //see comments in clipper.pas + internal OutPt Pts; + internal OutPt BottomPt; + internal PolyNode PolyNode; + }; + + internal class OutPt + { + internal int Idx; + internal IntPoint Pt; + internal OutPt Next; + internal OutPt Prev; + }; + + internal class Join + { + internal OutPt OutPt1; + internal OutPt OutPt2; + internal IntPoint OffPt; + }; + + public class ClipperBase + { + internal const double horizontal = -3.4E+38; + internal const int Skip = -2; + internal const int Unassigned = -1; + internal const double tolerance = 1.0E-20; + internal static bool near_zero(double val) {return (val > -tolerance) && (val < tolerance); } + +#if use_int32 + public const cInt loRange = 0x7FFF; + public const cInt hiRange = 0x7FFF; +#else + public const cInt loRange = 0x3FFFFFFF; + public const cInt hiRange = 0x3FFFFFFFFFFFFFFFL; +#endif + + internal LocalMinima m_MinimaList; + internal LocalMinima m_CurrentLM; + internal List> m_edges = new List>(); + internal Scanbeam m_Scanbeam; + internal List m_PolyOuts; + internal TEdge m_ActiveEdges; + internal bool m_UseFullRange; + internal bool m_HasOpenPaths; + + //------------------------------------------------------------------------------ + + public bool PreserveCollinear + { + get; + set; + } + //------------------------------------------------------------------------------ + + public void Swap(ref cInt val1, ref cInt val2) + { + cInt tmp = val1; + val1 = val2; + val2 = tmp; + } + + //------------------------------------------------------------------------------ + + internal static bool IsHorizontal(TEdge e) + { + return e.Delta.Y == 0; + } + + //------------------------------------------------------------------------------ + + internal bool PointIsVertex(IntPoint pt, OutPt pp) + { + OutPt pp2 = pp; + do + { + if (pp2.Pt == pt) return true; + pp2 = pp2.Next; + } + while (pp2 != pp); + return false; + } + + //------------------------------------------------------------------------------ + + internal bool PointOnLineSegment(IntPoint pt, + IntPoint linePt1, IntPoint linePt2, bool UseFullRange) + { + if (UseFullRange) + return ((pt.X == linePt1.X) && (pt.Y == linePt1.Y)) || + ((pt.X == linePt2.X) && (pt.Y == linePt2.Y)) || + (((pt.X > linePt1.X) == (pt.X < linePt2.X)) && + ((pt.Y > linePt1.Y) == (pt.Y < linePt2.Y)) && + ((Int128.Int128Mul((pt.X - linePt1.X), (linePt2.Y - linePt1.Y)) == + Int128.Int128Mul((linePt2.X - linePt1.X), (pt.Y - linePt1.Y))))); + else + return ((pt.X == linePt1.X) && (pt.Y == linePt1.Y)) || + ((pt.X == linePt2.X) && (pt.Y == linePt2.Y)) || + (((pt.X > linePt1.X) == (pt.X < linePt2.X)) && + ((pt.Y > linePt1.Y) == (pt.Y < linePt2.Y)) && + ((pt.X - linePt1.X) * (linePt2.Y - linePt1.Y) == + (linePt2.X - linePt1.X) * (pt.Y - linePt1.Y))); + } + + //------------------------------------------------------------------------------ + + internal bool PointOnPolygon(IntPoint pt, OutPt pp, bool UseFullRange) + { + OutPt pp2 = pp; + while (true) + { + if (PointOnLineSegment(pt, pp2.Pt, pp2.Next.Pt, UseFullRange)) + return true; + pp2 = pp2.Next; + if (pp2 == pp) break; + } + return false; + } + + //------------------------------------------------------------------------------ + + internal static bool SlopesEqual(TEdge e1, TEdge e2, bool UseFullRange) + { + if (UseFullRange) + return Int128.Int128Mul(e1.Delta.Y, e2.Delta.X) == + Int128.Int128Mul(e1.Delta.X, e2.Delta.Y); + else + return (cInt)(e1.Delta.Y) * (e2.Delta.X) == + (cInt)(e1.Delta.X) * (e2.Delta.Y); + } + + //------------------------------------------------------------------------------ + + internal static bool SlopesEqual(IntPoint pt1, IntPoint pt2, + IntPoint pt3, bool UseFullRange) + { + if (UseFullRange) + return Int128.Int128Mul(pt1.Y - pt2.Y, pt2.X - pt3.X) == + Int128.Int128Mul(pt1.X - pt2.X, pt2.Y - pt3.Y); + else + return + (cInt)(pt1.Y - pt2.Y) * (pt2.X - pt3.X) - (cInt)(pt1.X - pt2.X) * (pt2.Y - pt3.Y) == 0; + } + + //------------------------------------------------------------------------------ + + internal static bool SlopesEqual(IntPoint pt1, IntPoint pt2, + IntPoint pt3, IntPoint pt4, bool UseFullRange) + { + if (UseFullRange) + return Int128.Int128Mul(pt1.Y - pt2.Y, pt3.X - pt4.X) == + Int128.Int128Mul(pt1.X - pt2.X, pt3.Y - pt4.Y); + else + return + (cInt)(pt1.Y - pt2.Y) * (pt3.X - pt4.X) - (cInt)(pt1.X - pt2.X) * (pt3.Y - pt4.Y) == 0; + } + + //------------------------------------------------------------------------------ + + internal ClipperBase() //constructor (nb: no external instantiation) + { + m_MinimaList = null; + m_CurrentLM = null; + m_UseFullRange = false; + m_HasOpenPaths = false; + } + + //------------------------------------------------------------------------------ + + public virtual void Clear() + { + DisposeLocalMinimaList(); + for (int i = 0; i < m_edges.Count; ++i) + { + for (int j = 0; j < m_edges[i].Count; ++j) m_edges[i][j] = null; + m_edges[i].Clear(); + } + m_edges.Clear(); + m_UseFullRange = false; + m_HasOpenPaths = false; + } + + //------------------------------------------------------------------------------ + + private void DisposeLocalMinimaList() + { + while (m_MinimaList != null) + { + LocalMinima tmpLm = m_MinimaList.Next; + m_MinimaList = null; + m_MinimaList = tmpLm; + } + m_CurrentLM = null; + } + + //------------------------------------------------------------------------------ + + void RangeTest(IntPoint Pt, ref bool useFullRange) + { + if (useFullRange) + { + if (Pt.X > hiRange || Pt.Y > hiRange || -Pt.X > hiRange || -Pt.Y > hiRange) + throw new ClipperException("Coordinate outside allowed range"); + } + else if (Pt.X > loRange || Pt.Y > loRange || -Pt.X > loRange || -Pt.Y > loRange) + { + useFullRange = true; + RangeTest(Pt, ref useFullRange); + } + } + + //------------------------------------------------------------------------------ + + private void InitEdge(TEdge e, TEdge eNext, + TEdge ePrev, IntPoint pt) + { + e.Next = eNext; + e.Prev = ePrev; + e.Curr = pt; + e.OutIdx = Unassigned; + } + + //------------------------------------------------------------------------------ + + private void InitEdge2(TEdge e, PolyType polyType) + { + if (e.Curr.Y >= e.Next.Curr.Y) + { + e.Bot = e.Curr; + e.Top = e.Next.Curr; + } + else + { + e.Top = e.Curr; + e.Bot = e.Next.Curr; + } + SetDx(e); + e.PolyTyp = polyType; + } + + //------------------------------------------------------------------------------ + + private TEdge FindNextLocMin(TEdge E) + { + TEdge E2; + for (;;) + { + while (E.Bot != E.Prev.Bot || E.Curr == E.Top) E = E.Next; + if (E.Dx != horizontal && E.Prev.Dx != horizontal) break; + while (E.Prev.Dx == horizontal) E = E.Prev; + E2 = E; + while (E.Dx == horizontal) E = E.Next; + if (E.Top.Y == E.Prev.Bot.Y) continue; //ie just an intermediate horz. + if (E2.Prev.Bot.X < E.Bot.X) E = E2; + break; + } + return E; + } + + //------------------------------------------------------------------------------ + + private TEdge ProcessBound(TEdge E, bool LeftBoundIsForward) + { + TEdge EStart, Result = E; + TEdge Horz; + + if (Result.OutIdx == Skip) + { + //check if there are edges beyond the skip edge in the bound and if so + //create another LocMin and calling ProcessBound once more ... + E = Result; + if (LeftBoundIsForward) + { + while (E.Top.Y == E.Next.Bot.Y) E = E.Next; + while (E != Result && E.Dx == horizontal) E = E.Prev; + } + else + { + while (E.Top.Y == E.Prev.Bot.Y) E = E.Prev; + while (E != Result && E.Dx == horizontal) E = E.Next; + } + if (E == Result) + { + if (LeftBoundIsForward) Result = E.Next; + else Result = E.Prev; + } + else + { + //there are more edges in the bound beyond result starting with E + if (LeftBoundIsForward) + E = Result.Next; + else + E = Result.Prev; + LocalMinima locMin = new LocalMinima(); + locMin.Next = null; + locMin.Y = E.Bot.Y; + locMin.LeftBound = null; + locMin.RightBound = E; + E.WindDelta = 0; + Result = ProcessBound(E, LeftBoundIsForward); + InsertLocalMinima(locMin); + } + return Result; + } + + if (E.Dx == horizontal) + { + //We need to be careful with open paths because this may not be a + //true local minima (ie E may be following a skip edge). + //Also, consecutive horz. edges may start heading left before going right. + if (LeftBoundIsForward) EStart = E.Prev; + else EStart = E.Next; + if (EStart.Dx == horizontal) //ie an adjoining horizontal skip edge + { + if (EStart.Bot.X != E.Bot.X && EStart.Top.X != E.Bot.X) + ReverseHorizontal(E); + } + else if (EStart.Bot.X != E.Bot.X) + ReverseHorizontal(E); + } + + EStart = E; + if (LeftBoundIsForward) + { + while (Result.Top.Y == Result.Next.Bot.Y && Result.Next.OutIdx != Skip) + Result = Result.Next; + if (Result.Dx == horizontal && Result.Next.OutIdx != Skip) + { + //nb: at the top of a bound, horizontals are added to the bound + //only when the preceding edge attaches to the horizontal's left vertex + //unless a Skip edge is encountered when that becomes the top divide + Horz = Result; + while (Horz.Prev.Dx == horizontal) Horz = Horz.Prev; + if (Horz.Prev.Top.X > Result.Next.Top.X) Result = Horz.Prev; + } + while (E != Result) + { + E.NextInLML = E.Next; + if (E.Dx == horizontal && E != EStart && E.Bot.X != E.Prev.Top.X) + ReverseHorizontal(E); + E = E.Next; + } + if (E.Dx == horizontal && E != EStart && E.Bot.X != E.Prev.Top.X) + ReverseHorizontal(E); + Result = Result.Next; //move to the edge just beyond current bound + } + else + { + while (Result.Top.Y == Result.Prev.Bot.Y && Result.Prev.OutIdx != Skip) + Result = Result.Prev; + if (Result.Dx == horizontal && Result.Prev.OutIdx != Skip) + { + Horz = Result; + while (Horz.Next.Dx == horizontal) Horz = Horz.Next; + if (Horz.Next.Top.X == Result.Prev.Top.X || + Horz.Next.Top.X > Result.Prev.Top.X) Result = Horz.Next; + } + + while (E != Result) + { + E.NextInLML = E.Prev; + if (E.Dx == horizontal && E != EStart && E.Bot.X != E.Next.Top.X) + ReverseHorizontal(E); + E = E.Prev; + } + if (E.Dx == horizontal && E != EStart && E.Bot.X != E.Next.Top.X) + ReverseHorizontal(E); + Result = Result.Prev; //move to the edge just beyond current bound + } + return Result; + } + + //------------------------------------------------------------------------------ + + + public bool AddPath(Path pg, PolyType polyType, bool Closed) + { +#if use_lines + if (!Closed && polyType == PolyType.ptClip) + throw new ClipperException("AddPath: Open paths must be subject."); +#else + if (!Closed) + throw new ClipperException("AddPath: Open paths have been disabled."); +#endif + + int highI = (int)pg.Count - 1; + if (Closed) while (highI > 0 && (pg[highI] == pg[0])) --highI; + while (highI > 0 && (pg[highI] == pg[highI - 1])) --highI; + if ((Closed && highI < 2) || (!Closed && highI < 1)) return false; + + //create a new edge array ... + List edges = new List(highI + 1); + for (int i = 0; i <= highI; i++) edges.Add(new TEdge()); + + bool IsFlat = true; + + //1. Basic (first) edge initialization ... + edges[1].Curr = pg[1]; + RangeTest(pg[0], ref m_UseFullRange); + RangeTest(pg[highI], ref m_UseFullRange); + InitEdge(edges[0], edges[1], edges[highI], pg[0]); + InitEdge(edges[highI], edges[0], edges[highI - 1], pg[highI]); + for (int i = highI - 1; i >= 1; --i) + { + RangeTest(pg[i], ref m_UseFullRange); + InitEdge(edges[i], edges[i + 1], edges[i - 1], pg[i]); + } + TEdge eStart = edges[0]; + + //2. Remove duplicate vertices, and (when closed) collinear edges ... + TEdge E = eStart, eLoopStop = eStart; + for (;;) + { + //nb: allows matching start and end points when not Closed ... + if (E.Curr == E.Next.Curr && (Closed || E.Next != eStart)) + { + if (E == E.Next) break; + if (E == eStart) eStart = E.Next; + E = RemoveEdge(E); + eLoopStop = E; + continue; + } + if (E.Prev == E.Next) + break; //only two vertices + else if (Closed && + SlopesEqual(E.Prev.Curr, E.Curr, E.Next.Curr, m_UseFullRange) && + (!PreserveCollinear || + !Pt2IsBetweenPt1AndPt3(E.Prev.Curr, E.Curr, E.Next.Curr))) + { + //Collinear edges are allowed for open paths but in closed paths + //the default is to merge adjacent collinear edges into a single edge. + //However, if the PreserveCollinear property is enabled, only overlapping + //collinear edges (ie spikes) will be removed from closed paths. + if (E == eStart) eStart = E.Next; + E = RemoveEdge(E); + E = E.Prev; + eLoopStop = E; + continue; + } + E = E.Next; + if ((E == eLoopStop) || (!Closed && E.Next == eStart)) break; + } + + if ((!Closed && (E == E.Next)) || (Closed && (E.Prev == E.Next))) + return false; + + if (!Closed) + { + m_HasOpenPaths = true; + eStart.Prev.OutIdx = Skip; + } + + //3. Do second stage of edge initialization ... + E = eStart; + do + { + InitEdge2(E, polyType); + E = E.Next; + if (IsFlat && E.Curr.Y != eStart.Curr.Y) IsFlat = false; + } + while (E != eStart); + + //4. Finally, add edge bounds to LocalMinima list ... + + //Totally flat paths must be handled differently when adding them + //to LocalMinima list to avoid endless loops etc ... + if (IsFlat) + { + if (Closed) return false; + E.Prev.OutIdx = Skip; + LocalMinima locMin = new LocalMinima(); + locMin.Next = null; + locMin.Y = E.Bot.Y; + locMin.LeftBound = null; + locMin.RightBound = E; + locMin.RightBound.Side = EdgeSide.esRight; + locMin.RightBound.WindDelta = 0; + for (;;) + { + if (E.Bot.X != E.Prev.Top.X) ReverseHorizontal(E); + if (E.Next.OutIdx == Skip) break; + E.NextInLML = E.Next; + E = E.Next; + } + InsertLocalMinima(locMin); + m_edges.Add(edges); + return true; + } + + m_edges.Add(edges); + bool leftBoundIsForward; + TEdge EMin = null; + + //workaround to avoid an endless loop in the while loop below when + //open paths have matching start and end points ... + if (E.Prev.Bot == E.Prev.Top) E = E.Next; + + for (;;) + { + E = FindNextLocMin(E); + if (E == EMin) break; + else if (EMin == null) EMin = E; + + //E and E.Prev now share a local minima (left aligned if horizontal). + //Compare their slopes to find which starts which bound ... + LocalMinima locMin = new LocalMinima(); + locMin.Next = null; + locMin.Y = E.Bot.Y; + if (E.Dx < E.Prev.Dx) + { + locMin.LeftBound = E.Prev; + locMin.RightBound = E; + leftBoundIsForward = false; //Q.nextInLML = Q.prev + } + else + { + locMin.LeftBound = E; + locMin.RightBound = E.Prev; + leftBoundIsForward = true; //Q.nextInLML = Q.next + } + locMin.LeftBound.Side = EdgeSide.esLeft; + locMin.RightBound.Side = EdgeSide.esRight; + + if (!Closed) locMin.LeftBound.WindDelta = 0; + else if (locMin.LeftBound.Next == locMin.RightBound) + locMin.LeftBound.WindDelta = -1; + else locMin.LeftBound.WindDelta = 1; + locMin.RightBound.WindDelta = -locMin.LeftBound.WindDelta; + + E = ProcessBound(locMin.LeftBound, leftBoundIsForward); + if (E.OutIdx == Skip) E = ProcessBound(E, leftBoundIsForward); + + TEdge E2 = ProcessBound(locMin.RightBound, !leftBoundIsForward); + if (E2.OutIdx == Skip) E2 = ProcessBound(E2, !leftBoundIsForward); + + if (locMin.LeftBound.OutIdx == Skip) + locMin.LeftBound = null; + else if (locMin.RightBound.OutIdx == Skip) + locMin.RightBound = null; + InsertLocalMinima(locMin); + if (!leftBoundIsForward) E = E2; + } + return true; + } + + //------------------------------------------------------------------------------ + + public bool AddPaths(Paths ppg, PolyType polyType, bool closed) + { + bool result = false; + for (int i = 0; i < ppg.Count; ++i) + if (AddPath(ppg[i], polyType, closed)) result = true; + return result; + } + + //------------------------------------------------------------------------------ + + internal bool Pt2IsBetweenPt1AndPt3(IntPoint pt1, IntPoint pt2, IntPoint pt3) + { + if ((pt1 == pt3) || (pt1 == pt2) || (pt3 == pt2)) return false; + else if (pt1.X != pt3.X) return (pt2.X > pt1.X) == (pt2.X < pt3.X); + else return (pt2.Y > pt1.Y) == (pt2.Y < pt3.Y); + } + + //------------------------------------------------------------------------------ + + TEdge RemoveEdge(TEdge e) + { + //removes e from double_linked_list (but without removing from memory) + e.Prev.Next = e.Next; + e.Next.Prev = e.Prev; + TEdge result = e.Next; + e.Prev = null; //flag as removed (see ClipperBase.Clear) + return result; + } + + //------------------------------------------------------------------------------ + + private void SetDx(TEdge e) + { + e.Delta.X = (e.Top.X - e.Bot.X); + e.Delta.Y = (e.Top.Y - e.Bot.Y); + if (e.Delta.Y == 0) e.Dx = horizontal; + else e.Dx = (double)(e.Delta.X) / (e.Delta.Y); + } + + //--------------------------------------------------------------------------- + + private void InsertLocalMinima(LocalMinima newLm) + { + if (m_MinimaList == null) + { + m_MinimaList = newLm; + } + else if (newLm.Y >= m_MinimaList.Y) + { + newLm.Next = m_MinimaList; + m_MinimaList = newLm; + } + else + { + LocalMinima tmpLm = m_MinimaList; + while (tmpLm.Next != null && (newLm.Y < tmpLm.Next.Y)) + tmpLm = tmpLm.Next; + newLm.Next = tmpLm.Next; + tmpLm.Next = newLm; + } + } + + //------------------------------------------------------------------------------ + + internal Boolean PopLocalMinima(cInt Y, out LocalMinima current) + { + current = m_CurrentLM; + if (m_CurrentLM != null && m_CurrentLM.Y == Y) + { + m_CurrentLM = m_CurrentLM.Next; + return true; + } + return false; + } + + //------------------------------------------------------------------------------ + + private void ReverseHorizontal(TEdge e) + { + //swap horizontal edges' top and bottom x's so they follow the natural + //progression of the bounds - ie so their xbots will align with the + //adjoining lower edge. [Helpful in the ProcessHorizontal() method.] + Swap(ref e.Top.X, ref e.Bot.X); +#if use_xyz + Swap(ref e.Top.Z, ref e.Bot.Z); +#endif + } + + //------------------------------------------------------------------------------ + + internal virtual void Reset() + { + m_CurrentLM = m_MinimaList; + if (m_CurrentLM == null) return; //ie nothing to process + + //reset all edges ... + m_Scanbeam = null; + LocalMinima lm = m_MinimaList; + while (lm != null) + { + InsertScanbeam(lm.Y); + TEdge e = lm.LeftBound; + if (e != null) + { + e.Curr = e.Bot; + e.OutIdx = Unassigned; + } + e = lm.RightBound; + if (e != null) + { + e.Curr = e.Bot; + e.OutIdx = Unassigned; + } + lm = lm.Next; + } + m_ActiveEdges = null; + } + + //------------------------------------------------------------------------------ + + public static IntRect GetBounds(Paths paths) + { + int i = 0, cnt = paths.Count; + while (i < cnt && paths[i].Count == 0) i++; + if (i == cnt) return new IntRect(0, 0, 0, 0); + IntRect result = new IntRect(); + result.left = paths[i][0].X; + result.right = result.left; + result.top = paths[i][0].Y; + result.bottom = result.top; + for (; i < cnt; i++) + for (int j = 0; j < paths[i].Count; j++) + { + if (paths[i][j].X < result.left) result.left = paths[i][j].X; + else if (paths[i][j].X > result.right) result.right = paths[i][j].X; + if (paths[i][j].Y < result.top) result.top = paths[i][j].Y; + else if (paths[i][j].Y > result.bottom) result.bottom = paths[i][j].Y; + } + return result; + } + + //------------------------------------------------------------------------------ + + internal void InsertScanbeam(cInt Y) + { + //single-linked list: sorted descending, ignoring dups. + if (m_Scanbeam == null) + { + m_Scanbeam = new Scanbeam(); + m_Scanbeam.Next = null; + m_Scanbeam.Y = Y; + } + else if (Y > m_Scanbeam.Y) + { + Scanbeam newSb = new Scanbeam(); + newSb.Y = Y; + newSb.Next = m_Scanbeam; + m_Scanbeam = newSb; + } + else + { + Scanbeam sb2 = m_Scanbeam; + while (sb2.Next != null && (Y <= sb2.Next.Y)) sb2 = sb2.Next; + if (Y == sb2.Y) return; //ie ignores duplicates + Scanbeam newSb = new Scanbeam(); + newSb.Y = Y; + newSb.Next = sb2.Next; + sb2.Next = newSb; + } + } + + //------------------------------------------------------------------------------ + + internal Boolean PopScanbeam(out cInt Y) + { + if (m_Scanbeam == null) + { + Y = 0; + return false; + } + Y = m_Scanbeam.Y; + m_Scanbeam = m_Scanbeam.Next; + return true; + } + + //------------------------------------------------------------------------------ + + internal Boolean LocalMinimaPending() + { + return (m_CurrentLM != null); + } + + //------------------------------------------------------------------------------ + + internal OutRec CreateOutRec() + { + OutRec result = new OutRec(); + result.Idx = Unassigned; + result.IsHole = false; + result.IsOpen = false; + result.FirstLeft = null; + result.Pts = null; + result.BottomPt = null; + result.PolyNode = null; + m_PolyOuts.Add(result); + result.Idx = m_PolyOuts.Count - 1; + return result; + } + + //------------------------------------------------------------------------------ + + internal void DisposeOutRec(int index) + { + OutRec outRec = m_PolyOuts[index]; + outRec.Pts = null; + outRec = null; + m_PolyOuts[index] = null; + } + + //------------------------------------------------------------------------------ + + internal void UpdateEdgeIntoAEL(ref TEdge e) + { + if (e.NextInLML == null) + throw new ClipperException("UpdateEdgeIntoAEL: invalid call"); + TEdge AelPrev = e.PrevInAEL; + TEdge AelNext = e.NextInAEL; + e.NextInLML.OutIdx = e.OutIdx; + if (AelPrev != null) + AelPrev.NextInAEL = e.NextInLML; + else m_ActiveEdges = e.NextInLML; + if (AelNext != null) + AelNext.PrevInAEL = e.NextInLML; + e.NextInLML.Side = e.Side; + e.NextInLML.WindDelta = e.WindDelta; + e.NextInLML.WindCnt = e.WindCnt; + e.NextInLML.WindCnt2 = e.WindCnt2; + e = e.NextInLML; + e.Curr = e.Bot; + e.PrevInAEL = AelPrev; + e.NextInAEL = AelNext; + if (!IsHorizontal(e)) InsertScanbeam(e.Top.Y); + } + + //------------------------------------------------------------------------------ + + internal void SwapPositionsInAEL(TEdge edge1, TEdge edge2) + { + //check that one or other edge hasn't already been removed from AEL ... + if (edge1.NextInAEL == edge1.PrevInAEL || + edge2.NextInAEL == edge2.PrevInAEL) return; + + if (edge1.NextInAEL == edge2) + { + TEdge next = edge2.NextInAEL; + if (next != null) + next.PrevInAEL = edge1; + TEdge prev = edge1.PrevInAEL; + if (prev != null) + prev.NextInAEL = edge2; + edge2.PrevInAEL = prev; + edge2.NextInAEL = edge1; + edge1.PrevInAEL = edge2; + edge1.NextInAEL = next; + } + else if (edge2.NextInAEL == edge1) + { + TEdge next = edge1.NextInAEL; + if (next != null) + next.PrevInAEL = edge2; + TEdge prev = edge2.PrevInAEL; + if (prev != null) + prev.NextInAEL = edge1; + edge1.PrevInAEL = prev; + edge1.NextInAEL = edge2; + edge2.PrevInAEL = edge1; + edge2.NextInAEL = next; + } + else + { + TEdge next = edge1.NextInAEL; + TEdge prev = edge1.PrevInAEL; + edge1.NextInAEL = edge2.NextInAEL; + if (edge1.NextInAEL != null) + edge1.NextInAEL.PrevInAEL = edge1; + edge1.PrevInAEL = edge2.PrevInAEL; + if (edge1.PrevInAEL != null) + edge1.PrevInAEL.NextInAEL = edge1; + edge2.NextInAEL = next; + if (edge2.NextInAEL != null) + edge2.NextInAEL.PrevInAEL = edge2; + edge2.PrevInAEL = prev; + if (edge2.PrevInAEL != null) + edge2.PrevInAEL.NextInAEL = edge2; + } + + if (edge1.PrevInAEL == null) + m_ActiveEdges = edge1; + else if (edge2.PrevInAEL == null) + m_ActiveEdges = edge2; + } + + //------------------------------------------------------------------------------ + + internal void DeleteFromAEL(TEdge e) + { + TEdge AelPrev = e.PrevInAEL; + TEdge AelNext = e.NextInAEL; + if (AelPrev == null && AelNext == null && (e != m_ActiveEdges)) + return; //already deleted + if (AelPrev != null) + AelPrev.NextInAEL = AelNext; + else m_ActiveEdges = AelNext; + if (AelNext != null) + AelNext.PrevInAEL = AelPrev; + e.NextInAEL = null; + e.PrevInAEL = null; + } + + //------------------------------------------------------------------------------ + } //end ClipperBase + + public class Clipper : ClipperBase + { + //InitOptions that can be passed to the constructor ... + public const int ioReverseSolution = 1; + public const int ioStrictlySimple = 2; + public const int ioPreserveCollinear = 4; + + private ClipType m_ClipType; + private Maxima m_Maxima; + private TEdge m_SortedEdges; + private List m_IntersectList; + IComparer m_IntersectNodeComparer; + private bool m_ExecuteLocked; + private PolyFillType m_ClipFillType; + private PolyFillType m_SubjFillType; + private List m_Joins; + private List m_GhostJoins; + private bool m_UsingPolyTree; +#if use_xyz + public delegate void ZFillCallback(IntPoint bot1, IntPoint top1, + IntPoint bot2, IntPoint top2, ref IntPoint pt); + public ZFillCallback ZFillFunction { get; set; } +#endif + public Clipper(int InitOptions = 0) : base() //constructor + { + m_Scanbeam = null; + m_Maxima = null; + m_ActiveEdges = null; + m_SortedEdges = null; + m_IntersectList = new List(); + m_IntersectNodeComparer = new MyIntersectNodeSort(); + m_ExecuteLocked = false; + m_UsingPolyTree = false; + m_PolyOuts = new List(); + m_Joins = new List(); + m_GhostJoins = new List(); + ReverseSolution = (ioReverseSolution & InitOptions) != 0; + StrictlySimple = (ioStrictlySimple & InitOptions) != 0; + PreserveCollinear = (ioPreserveCollinear & InitOptions) != 0; +#if use_xyz + ZFillFunction = null; +#endif + } + + //------------------------------------------------------------------------------ + + private void InsertMaxima(cInt X) + { + //double-linked list: sorted ascending, ignoring dups. + Maxima newMax = new Maxima(); + newMax.X = X; + if (m_Maxima == null) + { + m_Maxima = newMax; + m_Maxima.Next = null; + m_Maxima.Prev = null; + } + else if (X < m_Maxima.X) + { + newMax.Next = m_Maxima; + newMax.Prev = null; + m_Maxima = newMax; + } + else + { + Maxima m = m_Maxima; + while (m.Next != null && (X >= m.Next.X)) m = m.Next; + if (X == m.X) return; //ie ignores duplicates (& CG to clean up newMax) + //insert newMax between m and m.Next ... + newMax.Next = m.Next; + newMax.Prev = m; + if (m.Next != null) m.Next.Prev = newMax; + m.Next = newMax; + } + } + + //------------------------------------------------------------------------------ + + public bool ReverseSolution + { + get; + set; + } + //------------------------------------------------------------------------------ + + public bool StrictlySimple + { + get; + set; + } + //------------------------------------------------------------------------------ + + public bool Execute(ClipType clipType, Paths solution, + PolyFillType FillType = PolyFillType.pftEvenOdd) + { + return Execute(clipType, solution, FillType, FillType); + } + + //------------------------------------------------------------------------------ + + public bool Execute(ClipType clipType, PolyTree polytree, + PolyFillType FillType = PolyFillType.pftEvenOdd) + { + return Execute(clipType, polytree, FillType, FillType); + } + + //------------------------------------------------------------------------------ + + public bool Execute(ClipType clipType, Paths solution, + PolyFillType subjFillType, PolyFillType clipFillType) + { + if (m_ExecuteLocked) return false; + if (m_HasOpenPaths) + throw + new ClipperException("Error: PolyTree struct is needed for open path clipping."); + + m_ExecuteLocked = true; + solution.Clear(); + m_SubjFillType = subjFillType; + m_ClipFillType = clipFillType; + m_ClipType = clipType; + m_UsingPolyTree = false; + bool succeeded; + try + { + succeeded = ExecuteInternal(); + //build the return polygons ... + if (succeeded) BuildResult(solution); + } + finally + { + DisposeAllPolyPts(); + m_ExecuteLocked = false; + } + return succeeded; + } + + //------------------------------------------------------------------------------ + + public bool Execute(ClipType clipType, PolyTree polytree, + PolyFillType subjFillType, PolyFillType clipFillType) + { + if (m_ExecuteLocked) return false; + m_ExecuteLocked = true; + m_SubjFillType = subjFillType; + m_ClipFillType = clipFillType; + m_ClipType = clipType; + m_UsingPolyTree = true; + bool succeeded; + try + { + succeeded = ExecuteInternal(); + //build the return polygons ... + if (succeeded) BuildResult2(polytree); + } + finally + { + DisposeAllPolyPts(); + m_ExecuteLocked = false; + } + return succeeded; + } + + //------------------------------------------------------------------------------ + + internal void FixHoleLinkage(OutRec outRec) + { + //skip if an outermost polygon or + //already already points to the correct FirstLeft ... + if (outRec.FirstLeft == null || + (outRec.IsHole != outRec.FirstLeft.IsHole && + outRec.FirstLeft.Pts != null)) return; + + OutRec orfl = outRec.FirstLeft; + while (orfl != null && ((orfl.IsHole == outRec.IsHole) || orfl.Pts == null)) + orfl = orfl.FirstLeft; + outRec.FirstLeft = orfl; + } + + //------------------------------------------------------------------------------ + + private bool ExecuteInternal() + { + try + { + Reset(); + m_SortedEdges = null; + m_Maxima = null; + + cInt botY, topY; + if (!PopScanbeam(out botY)) return false; + InsertLocalMinimaIntoAEL(botY); + while (PopScanbeam(out topY) || LocalMinimaPending()) + { + ProcessHorizontals(); + m_GhostJoins.Clear(); + if (!ProcessIntersections(topY)) return false; + ProcessEdgesAtTopOfScanbeam(topY); + botY = topY; + InsertLocalMinimaIntoAEL(botY); + } + + //fix orientations ... + foreach (OutRec outRec in m_PolyOuts) + { + if (outRec.Pts == null || outRec.IsOpen) continue; + if ((outRec.IsHole ^ ReverseSolution) == (Area(outRec) > 0)) + ReversePolyPtLinks(outRec.Pts); + } + + JoinCommonEdges(); + + foreach (OutRec outRec in m_PolyOuts) + { + if (outRec.Pts == null) + continue; + else if (outRec.IsOpen) + FixupOutPolyline(outRec); + else + FixupOutPolygon(outRec); + } + + if (StrictlySimple) DoSimplePolygons(); + return true; + } + //catch { return false; } + finally + { + m_Joins.Clear(); + m_GhostJoins.Clear(); + } + } + + //------------------------------------------------------------------------------ + + private void DisposeAllPolyPts() + { + for (int i = 0; i < m_PolyOuts.Count; ++i) DisposeOutRec(i); + m_PolyOuts.Clear(); + } + + //------------------------------------------------------------------------------ + + private void AddJoin(OutPt Op1, OutPt Op2, IntPoint OffPt) + { + Join j = new Join(); + j.OutPt1 = Op1; + j.OutPt2 = Op2; + j.OffPt = OffPt; + m_Joins.Add(j); + } + + //------------------------------------------------------------------------------ + + private void AddGhostJoin(OutPt Op, IntPoint OffPt) + { + Join j = new Join(); + j.OutPt1 = Op; + j.OffPt = OffPt; + m_GhostJoins.Add(j); + } + + //------------------------------------------------------------------------------ + +#if use_xyz + internal void SetZ(ref IntPoint pt, TEdge e1, TEdge e2) + { + if (pt.Z != 0 || ZFillFunction == null) return; + else if (pt == e1.Bot) pt.Z = e1.Bot.Z; + else if (pt == e1.Top) pt.Z = e1.Top.Z; + else if (pt == e2.Bot) pt.Z = e2.Bot.Z; + else if (pt == e2.Top) pt.Z = e2.Top.Z; + else ZFillFunction(e1.Bot, e1.Top, e2.Bot, e2.Top, ref pt); + } + + //------------------------------------------------------------------------------ +#endif + + private void InsertLocalMinimaIntoAEL(cInt botY) + { + LocalMinima lm; + while (PopLocalMinima(botY, out lm)) + { + TEdge lb = lm.LeftBound; + TEdge rb = lm.RightBound; + + OutPt Op1 = null; + if (lb == null) + { + InsertEdgeIntoAEL(rb, null); + SetWindingCount(rb); + if (IsContributing(rb)) + Op1 = AddOutPt(rb, rb.Bot); + } + else if (rb == null) + { + InsertEdgeIntoAEL(lb, null); + SetWindingCount(lb); + if (IsContributing(lb)) + Op1 = AddOutPt(lb, lb.Bot); + InsertScanbeam(lb.Top.Y); + } + else + { + InsertEdgeIntoAEL(lb, null); + InsertEdgeIntoAEL(rb, lb); + SetWindingCount(lb); + rb.WindCnt = lb.WindCnt; + rb.WindCnt2 = lb.WindCnt2; + if (IsContributing(lb)) + Op1 = AddLocalMinPoly(lb, rb, lb.Bot); + InsertScanbeam(lb.Top.Y); + } + + if (rb != null) + { + if (IsHorizontal(rb)) + { + if (rb.NextInLML != null) + InsertScanbeam(rb.NextInLML.Top.Y); + AddEdgeToSEL(rb); + } + else + InsertScanbeam(rb.Top.Y); + } + + if (lb == null || rb == null) continue; + + //if output polygons share an Edge with a horizontal rb, they'll need joining later ... + if (Op1 != null && IsHorizontal(rb) && + m_GhostJoins.Count > 0 && rb.WindDelta != 0) + { + for (int i = 0; i < m_GhostJoins.Count; i++) + { + //if the horizontal Rb and a 'ghost' horizontal overlap, then convert + //the 'ghost' join to a real join ready for later ... + Join j = m_GhostJoins[i]; + if (HorzSegmentsOverlap(j.OutPt1.Pt.X, j.OffPt.X, rb.Bot.X, rb.Top.X)) + AddJoin(j.OutPt1, Op1, j.OffPt); + } + } + + if (lb.OutIdx >= 0 && lb.PrevInAEL != null && + lb.PrevInAEL.Curr.X == lb.Bot.X && + lb.PrevInAEL.OutIdx >= 0 && + SlopesEqual(lb.PrevInAEL.Curr, lb.PrevInAEL.Top, lb.Curr, lb.Top, m_UseFullRange) && + lb.WindDelta != 0 && lb.PrevInAEL.WindDelta != 0) + { + OutPt Op2 = AddOutPt(lb.PrevInAEL, lb.Bot); + AddJoin(Op1, Op2, lb.Top); + } + + if (lb.NextInAEL != rb) + { + if (rb.OutIdx >= 0 && rb.PrevInAEL.OutIdx >= 0 && + SlopesEqual(rb.PrevInAEL.Curr, rb.PrevInAEL.Top, rb.Curr, rb.Top, m_UseFullRange) && + rb.WindDelta != 0 && rb.PrevInAEL.WindDelta != 0) + { + OutPt Op2 = AddOutPt(rb.PrevInAEL, rb.Bot); + AddJoin(Op1, Op2, rb.Top); + } + + TEdge e = lb.NextInAEL; + if (e != null) + while (e != rb) + { + //nb: For calculating winding counts etc, IntersectEdges() assumes + //that param1 will be to the right of param2 ABOVE the intersection ... + IntersectEdges(rb, e, lb.Curr); //order important here + e = e.NextInAEL; + } + } + } + } + + //------------------------------------------------------------------------------ + + private void InsertEdgeIntoAEL(TEdge edge, TEdge startEdge) + { + if (m_ActiveEdges == null) + { + edge.PrevInAEL = null; + edge.NextInAEL = null; + m_ActiveEdges = edge; + } + else if (startEdge == null && E2InsertsBeforeE1(m_ActiveEdges, edge)) + { + edge.PrevInAEL = null; + edge.NextInAEL = m_ActiveEdges; + m_ActiveEdges.PrevInAEL = edge; + m_ActiveEdges = edge; + } + else + { + if (startEdge == null) startEdge = m_ActiveEdges; + while (startEdge.NextInAEL != null && + !E2InsertsBeforeE1(startEdge.NextInAEL, edge)) + startEdge = startEdge.NextInAEL; + edge.NextInAEL = startEdge.NextInAEL; + if (startEdge.NextInAEL != null) startEdge.NextInAEL.PrevInAEL = edge; + edge.PrevInAEL = startEdge; + startEdge.NextInAEL = edge; + } + } + + //---------------------------------------------------------------------- + + private bool E2InsertsBeforeE1(TEdge e1, TEdge e2) + { + if (e2.Curr.X == e1.Curr.X) + { + if (e2.Top.Y > e1.Top.Y) + return e2.Top.X < TopX(e1, e2.Top.Y); + else return e1.Top.X > TopX(e2, e1.Top.Y); + } + else return e2.Curr.X < e1.Curr.X; + } + + //------------------------------------------------------------------------------ + + private bool IsEvenOddFillType(TEdge edge) + { + if (edge.PolyTyp == PolyType.ptSubject) + return m_SubjFillType == PolyFillType.pftEvenOdd; + else + return m_ClipFillType == PolyFillType.pftEvenOdd; + } + + //------------------------------------------------------------------------------ + + private bool IsEvenOddAltFillType(TEdge edge) + { + if (edge.PolyTyp == PolyType.ptSubject) + return m_ClipFillType == PolyFillType.pftEvenOdd; + else + return m_SubjFillType == PolyFillType.pftEvenOdd; + } + + //------------------------------------------------------------------------------ + + private bool IsContributing(TEdge edge) + { + PolyFillType pft, pft2; + if (edge.PolyTyp == PolyType.ptSubject) + { + pft = m_SubjFillType; + pft2 = m_ClipFillType; + } + else + { + pft = m_ClipFillType; + pft2 = m_SubjFillType; + } + + switch (pft) + { + case PolyFillType.pftEvenOdd: + //return false if a subj line has been flagged as inside a subj polygon + if (edge.WindDelta == 0 && edge.WindCnt != 1) return false; + break; + case PolyFillType.pftNonZero: + if (Math.Abs(edge.WindCnt) != 1) return false; + break; + case PolyFillType.pftPositive: + if (edge.WindCnt != 1) return false; + break; + default: //PolyFillType.pftNegative + if (edge.WindCnt != -1) return false; + break; + } + + switch (m_ClipType) + { + case ClipType.ctIntersection: + switch (pft2) + { + case PolyFillType.pftEvenOdd: + case PolyFillType.pftNonZero: + return (edge.WindCnt2 != 0); + case PolyFillType.pftPositive: + return (edge.WindCnt2 > 0); + default: + return (edge.WindCnt2 < 0); + } + case ClipType.ctUnion: + switch (pft2) + { + case PolyFillType.pftEvenOdd: + case PolyFillType.pftNonZero: + return (edge.WindCnt2 == 0); + case PolyFillType.pftPositive: + return (edge.WindCnt2 <= 0); + default: + return (edge.WindCnt2 >= 0); + } + case ClipType.ctDifference: + if (edge.PolyTyp == PolyType.ptSubject) + switch (pft2) + { + case PolyFillType.pftEvenOdd: + case PolyFillType.pftNonZero: + return (edge.WindCnt2 == 0); + case PolyFillType.pftPositive: + return (edge.WindCnt2 <= 0); + default: + return (edge.WindCnt2 >= 0); + } + else + switch (pft2) + { + case PolyFillType.pftEvenOdd: + case PolyFillType.pftNonZero: + return (edge.WindCnt2 != 0); + case PolyFillType.pftPositive: + return (edge.WindCnt2 > 0); + default: + return (edge.WindCnt2 < 0); + } + case ClipType.ctXor: + if (edge.WindDelta == 0) //XOr always contributing unless open + switch (pft2) + { + case PolyFillType.pftEvenOdd: + case PolyFillType.pftNonZero: + return (edge.WindCnt2 == 0); + case PolyFillType.pftPositive: + return (edge.WindCnt2 <= 0); + default: + return (edge.WindCnt2 >= 0); + } + else + return true; + } + return true; + } + + //------------------------------------------------------------------------------ + + private void SetWindingCount(TEdge edge) + { + TEdge e = edge.PrevInAEL; + //find the edge of the same polytype that immediately preceeds 'edge' in AEL + while (e != null && ((e.PolyTyp != edge.PolyTyp) || (e.WindDelta == 0))) e = e.PrevInAEL; + if (e == null) + { + PolyFillType pft; + pft = (edge.PolyTyp == PolyType.ptSubject ? m_SubjFillType : m_ClipFillType); + if (edge.WindDelta == 0) edge.WindCnt = (pft == PolyFillType.pftNegative ? -1 : 1); + else edge.WindCnt = edge.WindDelta; + edge.WindCnt2 = 0; + e = m_ActiveEdges; //ie get ready to calc WindCnt2 + } + else if (edge.WindDelta == 0 && m_ClipType != ClipType.ctUnion) + { + edge.WindCnt = 1; + edge.WindCnt2 = e.WindCnt2; + e = e.NextInAEL; //ie get ready to calc WindCnt2 + } + else if (IsEvenOddFillType(edge)) + { + //EvenOdd filling ... + if (edge.WindDelta == 0) + { + //are we inside a subj polygon ... + bool Inside = true; + TEdge e2 = e.PrevInAEL; + while (e2 != null) + { + if (e2.PolyTyp == e.PolyTyp && e2.WindDelta != 0) + Inside = !Inside; + e2 = e2.PrevInAEL; + } + edge.WindCnt = (Inside ? 0 : 1); + } + else + { + edge.WindCnt = edge.WindDelta; + } + edge.WindCnt2 = e.WindCnt2; + e = e.NextInAEL; //ie get ready to calc WindCnt2 + } + else + { + //nonZero, Positive or Negative filling ... + if (e.WindCnt * e.WindDelta < 0) + { + //prev edge is 'decreasing' WindCount (WC) toward zero + //so we're outside the previous polygon ... + if (Math.Abs(e.WindCnt) > 1) + { + //outside prev poly but still inside another. + //when reversing direction of prev poly use the same WC + if (e.WindDelta * edge.WindDelta < 0) edge.WindCnt = e.WindCnt; + //otherwise continue to 'decrease' WC ... + else edge.WindCnt = e.WindCnt + edge.WindDelta; + } + else + //now outside all polys of same polytype so set own WC ... + edge.WindCnt = (edge.WindDelta == 0 ? 1 : edge.WindDelta); + } + else + { + //prev edge is 'increasing' WindCount (WC) away from zero + //so we're inside the previous polygon ... + if (edge.WindDelta == 0) + edge.WindCnt = (e.WindCnt < 0 ? e.WindCnt - 1 : e.WindCnt + 1); + //if wind direction is reversing prev then use same WC + else if (e.WindDelta * edge.WindDelta < 0) + edge.WindCnt = e.WindCnt; + //otherwise add to WC ... + else edge.WindCnt = e.WindCnt + edge.WindDelta; + } + edge.WindCnt2 = e.WindCnt2; + e = e.NextInAEL; //ie get ready to calc WindCnt2 + } + + //update WindCnt2 ... + if (IsEvenOddAltFillType(edge)) + { + //EvenOdd filling ... + while (e != edge) + { + if (e.WindDelta != 0) + edge.WindCnt2 = (edge.WindCnt2 == 0 ? 1 : 0); + e = e.NextInAEL; + } + } + else + { + //nonZero, Positive or Negative filling ... + while (e != edge) + { + edge.WindCnt2 += e.WindDelta; + e = e.NextInAEL; + } + } + } + + //------------------------------------------------------------------------------ + + private void AddEdgeToSEL(TEdge edge) + { + //SEL pointers in PEdge are use to build transient lists of horizontal edges. + //However, since we don't need to worry about processing order, all additions + //are made to the front of the list ... + if (m_SortedEdges == null) + { + m_SortedEdges = edge; + edge.PrevInSEL = null; + edge.NextInSEL = null; + } + else + { + edge.NextInSEL = m_SortedEdges; + edge.PrevInSEL = null; + m_SortedEdges.PrevInSEL = edge; + m_SortedEdges = edge; + } + } + + //------------------------------------------------------------------------------ + + internal Boolean PopEdgeFromSEL(out TEdge e) + { + //Pop edge from front of SEL (ie SEL is a FILO list) + e = m_SortedEdges; + if (e == null) return false; + TEdge oldE = e; + m_SortedEdges = e.NextInSEL; + if (m_SortedEdges != null) m_SortedEdges.PrevInSEL = null; + oldE.NextInSEL = null; + oldE.PrevInSEL = null; + return true; + } + + //------------------------------------------------------------------------------ + + private void CopyAELToSEL() + { + TEdge e = m_ActiveEdges; + m_SortedEdges = e; + while (e != null) + { + e.PrevInSEL = e.PrevInAEL; + e.NextInSEL = e.NextInAEL; + e = e.NextInAEL; + } + } + + //------------------------------------------------------------------------------ + + private void SwapPositionsInSEL(TEdge edge1, TEdge edge2) + { + if (edge1.NextInSEL == null && edge1.PrevInSEL == null) + return; + if (edge2.NextInSEL == null && edge2.PrevInSEL == null) + return; + + if (edge1.NextInSEL == edge2) + { + TEdge next = edge2.NextInSEL; + if (next != null) + next.PrevInSEL = edge1; + TEdge prev = edge1.PrevInSEL; + if (prev != null) + prev.NextInSEL = edge2; + edge2.PrevInSEL = prev; + edge2.NextInSEL = edge1; + edge1.PrevInSEL = edge2; + edge1.NextInSEL = next; + } + else if (edge2.NextInSEL == edge1) + { + TEdge next = edge1.NextInSEL; + if (next != null) + next.PrevInSEL = edge2; + TEdge prev = edge2.PrevInSEL; + if (prev != null) + prev.NextInSEL = edge1; + edge1.PrevInSEL = prev; + edge1.NextInSEL = edge2; + edge2.PrevInSEL = edge1; + edge2.NextInSEL = next; + } + else + { + TEdge next = edge1.NextInSEL; + TEdge prev = edge1.PrevInSEL; + edge1.NextInSEL = edge2.NextInSEL; + if (edge1.NextInSEL != null) + edge1.NextInSEL.PrevInSEL = edge1; + edge1.PrevInSEL = edge2.PrevInSEL; + if (edge1.PrevInSEL != null) + edge1.PrevInSEL.NextInSEL = edge1; + edge2.NextInSEL = next; + if (edge2.NextInSEL != null) + edge2.NextInSEL.PrevInSEL = edge2; + edge2.PrevInSEL = prev; + if (edge2.PrevInSEL != null) + edge2.PrevInSEL.NextInSEL = edge2; + } + + if (edge1.PrevInSEL == null) + m_SortedEdges = edge1; + else if (edge2.PrevInSEL == null) + m_SortedEdges = edge2; + } + + //------------------------------------------------------------------------------ + + + private void AddLocalMaxPoly(TEdge e1, TEdge e2, IntPoint pt) + { + AddOutPt(e1, pt); + if (e2.WindDelta == 0) AddOutPt(e2, pt); + if (e1.OutIdx == e2.OutIdx) + { + e1.OutIdx = Unassigned; + e2.OutIdx = Unassigned; + } + else if (e1.OutIdx < e2.OutIdx) + AppendPolygon(e1, e2); + else + AppendPolygon(e2, e1); + } + + //------------------------------------------------------------------------------ + + private OutPt AddLocalMinPoly(TEdge e1, TEdge e2, IntPoint pt) + { + OutPt result; + TEdge e, prevE; + if (IsHorizontal(e2) || (e1.Dx > e2.Dx)) + { + result = AddOutPt(e1, pt); + e2.OutIdx = e1.OutIdx; + e1.Side = EdgeSide.esLeft; + e2.Side = EdgeSide.esRight; + e = e1; + if (e.PrevInAEL == e2) + prevE = e2.PrevInAEL; + else + prevE = e.PrevInAEL; + } + else + { + result = AddOutPt(e2, pt); + e1.OutIdx = e2.OutIdx; + e1.Side = EdgeSide.esRight; + e2.Side = EdgeSide.esLeft; + e = e2; + if (e.PrevInAEL == e1) + prevE = e1.PrevInAEL; + else + prevE = e.PrevInAEL; + } + + if (prevE != null && prevE.OutIdx >= 0 && prevE.Top.Y < pt.Y && e.Top.Y < pt.Y) + { + cInt xPrev = TopX(prevE, pt.Y); + cInt xE = TopX(e, pt.Y); + if ((xPrev == xE) && (e.WindDelta != 0) && (prevE.WindDelta != 0) && + SlopesEqual(new IntPoint(xPrev, pt.Y), prevE.Top, new IntPoint(xE, pt.Y), e.Top, m_UseFullRange)) + { + OutPt outPt = AddOutPt(prevE, pt); + AddJoin(result, outPt, e.Top); + } + } + return result; + } + + //------------------------------------------------------------------------------ + + private OutPt AddOutPt(TEdge e, IntPoint pt) + { + if (e.OutIdx < 0) + { + OutRec outRec = CreateOutRec(); + outRec.IsOpen = (e.WindDelta == 0); + OutPt newOp = new OutPt(); + outRec.Pts = newOp; + newOp.Idx = outRec.Idx; + newOp.Pt = pt; + newOp.Next = newOp; + newOp.Prev = newOp; + if (!outRec.IsOpen) + SetHoleState(e, outRec); + e.OutIdx = outRec.Idx; //nb: do this after SetZ ! + return newOp; + } + else + { + OutRec outRec = m_PolyOuts[e.OutIdx]; + //OutRec.Pts is the 'Left-most' point & OutRec.Pts.Prev is the 'Right-most' + OutPt op = outRec.Pts; + bool ToFront = (e.Side == EdgeSide.esLeft); + if (ToFront && pt == op.Pt) return op; + else if (!ToFront && pt == op.Prev.Pt) return op.Prev; + + OutPt newOp = new OutPt(); + newOp.Idx = outRec.Idx; + newOp.Pt = pt; + newOp.Next = op; + newOp.Prev = op.Prev; + newOp.Prev.Next = newOp; + op.Prev = newOp; + if (ToFront) outRec.Pts = newOp; + return newOp; + } + } + + //------------------------------------------------------------------------------ + + private OutPt GetLastOutPt(TEdge e) + { + OutRec outRec = m_PolyOuts[e.OutIdx]; + if (e.Side == EdgeSide.esLeft) + return outRec.Pts; + else + return outRec.Pts.Prev; + } + + //------------------------------------------------------------------------------ + + internal void SwapPoints(ref IntPoint pt1, ref IntPoint pt2) + { + IntPoint tmp = new IntPoint(pt1); + pt1 = pt2; + pt2 = tmp; + } + + //------------------------------------------------------------------------------ + + private bool HorzSegmentsOverlap(cInt seg1a, cInt seg1b, cInt seg2a, cInt seg2b) + { + if (seg1a > seg1b) Swap(ref seg1a, ref seg1b); + if (seg2a > seg2b) Swap(ref seg2a, ref seg2b); + return (seg1a < seg2b) && (seg2a < seg1b); + } + + //------------------------------------------------------------------------------ + + private void SetHoleState(TEdge e, OutRec outRec) + { + TEdge e2 = e.PrevInAEL; + TEdge eTmp = null; + while (e2 != null) + { + if (e2.OutIdx >= 0 && e2.WindDelta != 0) + { + if (eTmp == null) + eTmp = e2; + else if (eTmp.OutIdx == e2.OutIdx) + eTmp = null; //paired + } + e2 = e2.PrevInAEL; + } + + if (eTmp == null) + { + outRec.FirstLeft = null; + outRec.IsHole = false; + } + else + { + outRec.FirstLeft = m_PolyOuts[eTmp.OutIdx]; + outRec.IsHole = !outRec.FirstLeft.IsHole; + } + } + + //------------------------------------------------------------------------------ + + private double GetDx(IntPoint pt1, IntPoint pt2) + { + if (pt1.Y == pt2.Y) return horizontal; + else return (double)(pt2.X - pt1.X) / (pt2.Y - pt1.Y); + } + + //--------------------------------------------------------------------------- + + private bool FirstIsBottomPt(OutPt btmPt1, OutPt btmPt2) + { + OutPt p = btmPt1.Prev; + while ((p.Pt == btmPt1.Pt) && (p != btmPt1)) p = p.Prev; + double dx1p = Math.Abs(GetDx(btmPt1.Pt, p.Pt)); + p = btmPt1.Next; + while ((p.Pt == btmPt1.Pt) && (p != btmPt1)) p = p.Next; + double dx1n = Math.Abs(GetDx(btmPt1.Pt, p.Pt)); + + p = btmPt2.Prev; + while ((p.Pt == btmPt2.Pt) && (p != btmPt2)) p = p.Prev; + double dx2p = Math.Abs(GetDx(btmPt2.Pt, p.Pt)); + p = btmPt2.Next; + while ((p.Pt == btmPt2.Pt) && (p != btmPt2)) p = p.Next; + double dx2n = Math.Abs(GetDx(btmPt2.Pt, p.Pt)); + + if (Math.Max(dx1p, dx1n) == Math.Max(dx2p, dx2n) && + Math.Min(dx1p, dx1n) == Math.Min(dx2p, dx2n)) + return Area(btmPt1) > 0; //if otherwise identical use orientation + else + return (dx1p >= dx2p && dx1p >= dx2n) || (dx1n >= dx2p && dx1n >= dx2n); + } + + //------------------------------------------------------------------------------ + + private OutPt GetBottomPt(OutPt pp) + { + OutPt dups = null; + OutPt p = pp.Next; + while (p != pp) + { + if (p.Pt.Y > pp.Pt.Y) + { + pp = p; + dups = null; + } + else if (p.Pt.Y == pp.Pt.Y && p.Pt.X <= pp.Pt.X) + { + if (p.Pt.X < pp.Pt.X) + { + dups = null; + pp = p; + } + else + { + if (p.Next != pp && p.Prev != pp) dups = p; + } + } + p = p.Next; + } + if (dups != null) + { + //there appears to be at least 2 vertices at bottomPt so ... + while (dups != p) + { + if (!FirstIsBottomPt(p, dups)) pp = dups; + dups = dups.Next; + while (dups.Pt != pp.Pt) dups = dups.Next; + } + } + return pp; + } + + //------------------------------------------------------------------------------ + + private OutRec GetLowermostRec(OutRec outRec1, OutRec outRec2) + { + //work out which polygon fragment has the correct hole state ... + if (outRec1.BottomPt == null) + outRec1.BottomPt = GetBottomPt(outRec1.Pts); + if (outRec2.BottomPt == null) + outRec2.BottomPt = GetBottomPt(outRec2.Pts); + OutPt bPt1 = outRec1.BottomPt; + OutPt bPt2 = outRec2.BottomPt; + if (bPt1.Pt.Y > bPt2.Pt.Y) return outRec1; + else if (bPt1.Pt.Y < bPt2.Pt.Y) return outRec2; + else if (bPt1.Pt.X < bPt2.Pt.X) return outRec1; + else if (bPt1.Pt.X > bPt2.Pt.X) return outRec2; + else if (bPt1.Next == bPt1) return outRec2; + else if (bPt2.Next == bPt2) return outRec1; + else if (FirstIsBottomPt(bPt1, bPt2)) return outRec1; + else return outRec2; + } + + //------------------------------------------------------------------------------ + + bool OutRec1RightOfOutRec2(OutRec outRec1, OutRec outRec2) + { + do + { + outRec1 = outRec1.FirstLeft; + if (outRec1 == outRec2) return true; + } + while (outRec1 != null); + return false; + } + + //------------------------------------------------------------------------------ + + private OutRec GetOutRec(int idx) + { + OutRec outrec = m_PolyOuts[idx]; + while (outrec != m_PolyOuts[outrec.Idx]) + outrec = m_PolyOuts[outrec.Idx]; + return outrec; + } + + //------------------------------------------------------------------------------ + + private void AppendPolygon(TEdge e1, TEdge e2) + { + OutRec outRec1 = m_PolyOuts[e1.OutIdx]; + OutRec outRec2 = m_PolyOuts[e2.OutIdx]; + + OutRec holeStateRec; + if (OutRec1RightOfOutRec2(outRec1, outRec2)) + holeStateRec = outRec2; + else if (OutRec1RightOfOutRec2(outRec2, outRec1)) + holeStateRec = outRec1; + else + holeStateRec = GetLowermostRec(outRec1, outRec2); + + //get the start and ends of both output polygons and + //join E2 poly onto E1 poly and delete pointers to E2 ... + OutPt p1_lft = outRec1.Pts; + OutPt p1_rt = p1_lft.Prev; + OutPt p2_lft = outRec2.Pts; + OutPt p2_rt = p2_lft.Prev; + + //join e2 poly onto e1 poly and delete pointers to e2 ... + if (e1.Side == EdgeSide.esLeft) + { + if (e2.Side == EdgeSide.esLeft) + { + //z y x a b c + ReversePolyPtLinks(p2_lft); + p2_lft.Next = p1_lft; + p1_lft.Prev = p2_lft; + p1_rt.Next = p2_rt; + p2_rt.Prev = p1_rt; + outRec1.Pts = p2_rt; + } + else + { + //x y z a b c + p2_rt.Next = p1_lft; + p1_lft.Prev = p2_rt; + p2_lft.Prev = p1_rt; + p1_rt.Next = p2_lft; + outRec1.Pts = p2_lft; + } + } + else + { + if (e2.Side == EdgeSide.esRight) + { + //a b c z y x + ReversePolyPtLinks(p2_lft); + p1_rt.Next = p2_rt; + p2_rt.Prev = p1_rt; + p2_lft.Next = p1_lft; + p1_lft.Prev = p2_lft; + } + else + { + //a b c x y z + p1_rt.Next = p2_lft; + p2_lft.Prev = p1_rt; + p1_lft.Prev = p2_rt; + p2_rt.Next = p1_lft; + } + } + + outRec1.BottomPt = null; + if (holeStateRec == outRec2) + { + if (outRec2.FirstLeft != outRec1) + outRec1.FirstLeft = outRec2.FirstLeft; + outRec1.IsHole = outRec2.IsHole; + } + outRec2.Pts = null; + outRec2.BottomPt = null; + + outRec2.FirstLeft = outRec1; + + int OKIdx = e1.OutIdx; + int ObsoleteIdx = e2.OutIdx; + + e1.OutIdx = Unassigned; //nb: safe because we only get here via AddLocalMaxPoly + e2.OutIdx = Unassigned; + + TEdge e = m_ActiveEdges; + while (e != null) + { + if (e.OutIdx == ObsoleteIdx) + { + e.OutIdx = OKIdx; + e.Side = e1.Side; + break; + } + e = e.NextInAEL; + } + outRec2.Idx = outRec1.Idx; + } + + //------------------------------------------------------------------------------ + + private void ReversePolyPtLinks(OutPt pp) + { + if (pp == null) return; + OutPt pp1; + OutPt pp2; + pp1 = pp; + do + { + pp2 = pp1.Next; + pp1.Next = pp1.Prev; + pp1.Prev = pp2; + pp1 = pp2; + } + while (pp1 != pp); + } + + //------------------------------------------------------------------------------ + + private static void SwapSides(TEdge edge1, TEdge edge2) + { + EdgeSide side = edge1.Side; + edge1.Side = edge2.Side; + edge2.Side = side; + } + + //------------------------------------------------------------------------------ + + private static void SwapPolyIndexes(TEdge edge1, TEdge edge2) + { + int outIdx = edge1.OutIdx; + edge1.OutIdx = edge2.OutIdx; + edge2.OutIdx = outIdx; + } + + //------------------------------------------------------------------------------ + + private void IntersectEdges(TEdge e1, TEdge e2, IntPoint pt) + { + //e1 will be to the left of e2 BELOW the intersection. Therefore e1 is before + //e2 in AEL except when e1 is being inserted at the intersection point ... + + bool e1Contributing = (e1.OutIdx >= 0); + bool e2Contributing = (e2.OutIdx >= 0); + +#if use_xyz + SetZ(ref pt, e1, e2); +#endif + +#if use_lines + //if either edge is on an OPEN path ... + if (e1.WindDelta == 0 || e2.WindDelta == 0) + { + //ignore subject-subject open path intersections UNLESS they + //are both open paths, AND they are both 'contributing maximas' ... + if (e1.WindDelta == 0 && e2.WindDelta == 0) return; + //if intersecting a subj line with a subj poly ... + else if (e1.PolyTyp == e2.PolyTyp && + e1.WindDelta != e2.WindDelta && m_ClipType == ClipType.ctUnion) + { + if (e1.WindDelta == 0) + { + if (e2Contributing) + { + AddOutPt(e1, pt); + if (e1Contributing) e1.OutIdx = Unassigned; + } + } + else + { + if (e1Contributing) + { + AddOutPt(e2, pt); + if (e2Contributing) e2.OutIdx = Unassigned; + } + } + } + else if (e1.PolyTyp != e2.PolyTyp) + { + if ((e1.WindDelta == 0) && Math.Abs(e2.WindCnt) == 1 && + (m_ClipType != ClipType.ctUnion || e2.WindCnt2 == 0)) + { + AddOutPt(e1, pt); + if (e1Contributing) e1.OutIdx = Unassigned; + } + else if ((e2.WindDelta == 0) && (Math.Abs(e1.WindCnt) == 1) && + (m_ClipType != ClipType.ctUnion || e1.WindCnt2 == 0)) + { + AddOutPt(e2, pt); + if (e2Contributing) e2.OutIdx = Unassigned; + } + } + return; + } +#endif + + //update winding counts... + //assumes that e1 will be to the Right of e2 ABOVE the intersection + if (e1.PolyTyp == e2.PolyTyp) + { + if (IsEvenOddFillType(e1)) + { + int oldE1WindCnt = e1.WindCnt; + e1.WindCnt = e2.WindCnt; + e2.WindCnt = oldE1WindCnt; + } + else + { + if (e1.WindCnt + e2.WindDelta == 0) e1.WindCnt = -e1.WindCnt; + else e1.WindCnt += e2.WindDelta; + if (e2.WindCnt - e1.WindDelta == 0) e2.WindCnt = -e2.WindCnt; + else e2.WindCnt -= e1.WindDelta; + } + } + else + { + if (!IsEvenOddFillType(e2)) e1.WindCnt2 += e2.WindDelta; + else e1.WindCnt2 = (e1.WindCnt2 == 0) ? 1 : 0; + if (!IsEvenOddFillType(e1)) e2.WindCnt2 -= e1.WindDelta; + else e2.WindCnt2 = (e2.WindCnt2 == 0) ? 1 : 0; + } + + PolyFillType e1FillType, e2FillType, e1FillType2, e2FillType2; + if (e1.PolyTyp == PolyType.ptSubject) + { + e1FillType = m_SubjFillType; + e1FillType2 = m_ClipFillType; + } + else + { + e1FillType = m_ClipFillType; + e1FillType2 = m_SubjFillType; + } + if (e2.PolyTyp == PolyType.ptSubject) + { + e2FillType = m_SubjFillType; + e2FillType2 = m_ClipFillType; + } + else + { + e2FillType = m_ClipFillType; + e2FillType2 = m_SubjFillType; + } + + int e1Wc, e2Wc; + switch (e1FillType) + { + case PolyFillType.pftPositive: e1Wc = e1.WindCnt; break; + case PolyFillType.pftNegative: e1Wc = -e1.WindCnt; break; + default: e1Wc = Math.Abs(e1.WindCnt); break; + } + switch (e2FillType) + { + case PolyFillType.pftPositive: e2Wc = e2.WindCnt; break; + case PolyFillType.pftNegative: e2Wc = -e2.WindCnt; break; + default: e2Wc = Math.Abs(e2.WindCnt); break; + } + + if (e1Contributing && e2Contributing) + { + if ((e1Wc != 0 && e1Wc != 1) || (e2Wc != 0 && e2Wc != 1) || + (e1.PolyTyp != e2.PolyTyp && m_ClipType != ClipType.ctXor)) + { + AddLocalMaxPoly(e1, e2, pt); + } + else + { + AddOutPt(e1, pt); + AddOutPt(e2, pt); + SwapSides(e1, e2); + SwapPolyIndexes(e1, e2); + } + } + else if (e1Contributing) + { + if (e2Wc == 0 || e2Wc == 1) + { + AddOutPt(e1, pt); + SwapSides(e1, e2); + SwapPolyIndexes(e1, e2); + } + } + else if (e2Contributing) + { + if (e1Wc == 0 || e1Wc == 1) + { + AddOutPt(e2, pt); + SwapSides(e1, e2); + SwapPolyIndexes(e1, e2); + } + } + else if ((e1Wc == 0 || e1Wc == 1) && (e2Wc == 0 || e2Wc == 1)) + { + //neither edge is currently contributing ... + cInt e1Wc2, e2Wc2; + switch (e1FillType2) + { + case PolyFillType.pftPositive: e1Wc2 = e1.WindCnt2; break; + case PolyFillType.pftNegative: e1Wc2 = -e1.WindCnt2; break; + default: e1Wc2 = Math.Abs(e1.WindCnt2); break; + } + switch (e2FillType2) + { + case PolyFillType.pftPositive: e2Wc2 = e2.WindCnt2; break; + case PolyFillType.pftNegative: e2Wc2 = -e2.WindCnt2; break; + default: e2Wc2 = Math.Abs(e2.WindCnt2); break; + } + + if (e1.PolyTyp != e2.PolyTyp) + { + AddLocalMinPoly(e1, e2, pt); + } + else if (e1Wc == 1 && e2Wc == 1) + switch (m_ClipType) + { + case ClipType.ctIntersection: + if (e1Wc2 > 0 && e2Wc2 > 0) + AddLocalMinPoly(e1, e2, pt); + break; + case ClipType.ctUnion: + if (e1Wc2 <= 0 && e2Wc2 <= 0) + AddLocalMinPoly(e1, e2, pt); + break; + case ClipType.ctDifference: + if (((e1.PolyTyp == PolyType.ptClip) && (e1Wc2 > 0) && (e2Wc2 > 0)) || + ((e1.PolyTyp == PolyType.ptSubject) && (e1Wc2 <= 0) && (e2Wc2 <= 0))) + AddLocalMinPoly(e1, e2, pt); + break; + case ClipType.ctXor: + AddLocalMinPoly(e1, e2, pt); + break; + } + else + SwapSides(e1, e2); + } + } + + //------------------------------------------------------------------------------ + + private void DeleteFromSEL(TEdge e) + { + TEdge SelPrev = e.PrevInSEL; + TEdge SelNext = e.NextInSEL; + if (SelPrev == null && SelNext == null && (e != m_SortedEdges)) + return; //already deleted + if (SelPrev != null) + SelPrev.NextInSEL = SelNext; + else m_SortedEdges = SelNext; + if (SelNext != null) + SelNext.PrevInSEL = SelPrev; + e.NextInSEL = null; + e.PrevInSEL = null; + } + + //------------------------------------------------------------------------------ + + private void ProcessHorizontals() + { + TEdge horzEdge; //m_SortedEdges; + while (PopEdgeFromSEL(out horzEdge)) + ProcessHorizontal(horzEdge); + } + + //------------------------------------------------------------------------------ + + void GetHorzDirection(TEdge HorzEdge, out Direction Dir, out cInt Left, out cInt Right) + { + if (HorzEdge.Bot.X < HorzEdge.Top.X) + { + Left = HorzEdge.Bot.X; + Right = HorzEdge.Top.X; + Dir = Direction.dLeftToRight; + } + else + { + Left = HorzEdge.Top.X; + Right = HorzEdge.Bot.X; + Dir = Direction.dRightToLeft; + } + } + + //------------------------------------------------------------------------ + + private void ProcessHorizontal(TEdge horzEdge) + { + Direction dir; + cInt horzLeft, horzRight; + bool IsOpen = horzEdge.WindDelta == 0; + + GetHorzDirection(horzEdge, out dir, out horzLeft, out horzRight); + + TEdge eLastHorz = horzEdge, eMaxPair = null; + while (eLastHorz.NextInLML != null && IsHorizontal(eLastHorz.NextInLML)) + eLastHorz = eLastHorz.NextInLML; + if (eLastHorz.NextInLML == null) + eMaxPair = GetMaximaPair(eLastHorz); + + Maxima currMax = m_Maxima; + if (currMax != null) + { + //get the first maxima in range (X) ... + if (dir == Direction.dLeftToRight) + { + while (currMax != null && currMax.X <= horzEdge.Bot.X) + currMax = currMax.Next; + if (currMax != null && currMax.X >= eLastHorz.Top.X) + currMax = null; + } + else + { + while (currMax.Next != null && currMax.Next.X < horzEdge.Bot.X) + currMax = currMax.Next; + if (currMax.X <= eLastHorz.Top.X) currMax = null; + } + } + + OutPt op1 = null; + for (;;) //loop through consec. horizontal edges + { + bool IsLastHorz = (horzEdge == eLastHorz); + TEdge e = GetNextInAEL(horzEdge, dir); + while (e != null) + { + //this code block inserts extra coords into horizontal edges (in output + //polygons) whereever maxima touch these horizontal edges. This helps + //'simplifying' polygons (ie if the Simplify property is set). + if (currMax != null) + { + if (dir == Direction.dLeftToRight) + { + while (currMax != null && currMax.X < e.Curr.X) + { + if (horzEdge.OutIdx >= 0 && !IsOpen) + AddOutPt(horzEdge, new IntPoint(currMax.X, horzEdge.Bot.Y)); + currMax = currMax.Next; + } + } + else + { + while (currMax != null && currMax.X > e.Curr.X) + { + if (horzEdge.OutIdx >= 0 && !IsOpen) + AddOutPt(horzEdge, new IntPoint(currMax.X, horzEdge.Bot.Y)); + currMax = currMax.Prev; + } + } + } + + if ((dir == Direction.dLeftToRight && e.Curr.X > horzRight) || + (dir == Direction.dRightToLeft && e.Curr.X < horzLeft)) break; + + //Also break if we've got to the end of an intermediate horizontal edge ... + //nb: Smaller Dx's are to the right of larger Dx's ABOVE the horizontal. + if (e.Curr.X == horzEdge.Top.X && horzEdge.NextInLML != null && + e.Dx < horzEdge.NextInLML.Dx) break; + + if (horzEdge.OutIdx >= 0 && !IsOpen) //note: may be done multiple times + { +#if use_xyz + if (dir == Direction.dLeftToRight) SetZ(ref e.Curr, horzEdge, e); + else SetZ(ref e.Curr, e, horzEdge); +#endif + + op1 = AddOutPt(horzEdge, e.Curr); + TEdge eNextHorz = m_SortedEdges; + while (eNextHorz != null) + { + if (eNextHorz.OutIdx >= 0 && + HorzSegmentsOverlap(horzEdge.Bot.X, + horzEdge.Top.X, eNextHorz.Bot.X, eNextHorz.Top.X)) + { + OutPt op2 = GetLastOutPt(eNextHorz); + AddJoin(op2, op1, eNextHorz.Top); + } + eNextHorz = eNextHorz.NextInSEL; + } + AddGhostJoin(op1, horzEdge.Bot); + } + + //OK, so far we're still in range of the horizontal Edge but make sure + //we're at the last of consec. horizontals when matching with eMaxPair + if (e == eMaxPair && IsLastHorz) + { + if (horzEdge.OutIdx >= 0) + AddLocalMaxPoly(horzEdge, eMaxPair, horzEdge.Top); + DeleteFromAEL(horzEdge); + DeleteFromAEL(eMaxPair); + return; + } + + if (dir == Direction.dLeftToRight) + { + IntPoint Pt = new IntPoint(e.Curr.X, horzEdge.Curr.Y); + IntersectEdges(horzEdge, e, Pt); + } + else + { + IntPoint Pt = new IntPoint(e.Curr.X, horzEdge.Curr.Y); + IntersectEdges(e, horzEdge, Pt); + } + TEdge eNext = GetNextInAEL(e, dir); + SwapPositionsInAEL(horzEdge, e); + e = eNext; + } //end while(e != null) + + //Break out of loop if HorzEdge.NextInLML is not also horizontal ... + if (horzEdge.NextInLML == null || !IsHorizontal(horzEdge.NextInLML)) break; + + UpdateEdgeIntoAEL(ref horzEdge); + if (horzEdge.OutIdx >= 0) AddOutPt(horzEdge, horzEdge.Bot); + GetHorzDirection(horzEdge, out dir, out horzLeft, out horzRight); + } //end for (;;) + + if (horzEdge.OutIdx >= 0 && op1 == null) + { + op1 = GetLastOutPt(horzEdge); + TEdge eNextHorz = m_SortedEdges; + while (eNextHorz != null) + { + if (eNextHorz.OutIdx >= 0 && + HorzSegmentsOverlap(horzEdge.Bot.X, + horzEdge.Top.X, eNextHorz.Bot.X, eNextHorz.Top.X)) + { + OutPt op2 = GetLastOutPt(eNextHorz); + AddJoin(op2, op1, eNextHorz.Top); + } + eNextHorz = eNextHorz.NextInSEL; + } + AddGhostJoin(op1, horzEdge.Top); + } + + if (horzEdge.NextInLML != null) + { + if (horzEdge.OutIdx >= 0) + { + op1 = AddOutPt(horzEdge, horzEdge.Top); + + UpdateEdgeIntoAEL(ref horzEdge); + if (horzEdge.WindDelta == 0) return; + //nb: HorzEdge is no longer horizontal here + TEdge ePrev = horzEdge.PrevInAEL; + TEdge eNext = horzEdge.NextInAEL; + if (ePrev != null && ePrev.Curr.X == horzEdge.Bot.X && + ePrev.Curr.Y == horzEdge.Bot.Y && ePrev.WindDelta != 0 && + (ePrev.OutIdx >= 0 && ePrev.Curr.Y > ePrev.Top.Y && + SlopesEqual(horzEdge, ePrev, m_UseFullRange))) + { + OutPt op2 = AddOutPt(ePrev, horzEdge.Bot); + AddJoin(op1, op2, horzEdge.Top); + } + else if (eNext != null && eNext.Curr.X == horzEdge.Bot.X && + eNext.Curr.Y == horzEdge.Bot.Y && eNext.WindDelta != 0 && + eNext.OutIdx >= 0 && eNext.Curr.Y > eNext.Top.Y && + SlopesEqual(horzEdge, eNext, m_UseFullRange)) + { + OutPt op2 = AddOutPt(eNext, horzEdge.Bot); + AddJoin(op1, op2, horzEdge.Top); + } + } + else + UpdateEdgeIntoAEL(ref horzEdge); + } + else + { + if (horzEdge.OutIdx >= 0) AddOutPt(horzEdge, horzEdge.Top); + DeleteFromAEL(horzEdge); + } + } + + //------------------------------------------------------------------------------ + + private TEdge GetNextInAEL(TEdge e, Direction Direction) + { + return Direction == Direction.dLeftToRight ? e.NextInAEL : e.PrevInAEL; + } + + //------------------------------------------------------------------------------ + + private bool IsMinima(TEdge e) + { + return e != null && (e.Prev.NextInLML != e) && (e.Next.NextInLML != e); + } + + //------------------------------------------------------------------------------ + + private bool IsMaxima(TEdge e, double Y) + { + return (e != null && e.Top.Y == Y && e.NextInLML == null); + } + + //------------------------------------------------------------------------------ + + private bool IsIntermediate(TEdge e, double Y) + { + return (e.Top.Y == Y && e.NextInLML != null); + } + + //------------------------------------------------------------------------------ + + internal TEdge GetMaximaPair(TEdge e) + { + if ((e.Next.Top == e.Top) && e.Next.NextInLML == null) + return e.Next; + else if ((e.Prev.Top == e.Top) && e.Prev.NextInLML == null) + return e.Prev; + else + return null; + } + + //------------------------------------------------------------------------------ + + internal TEdge GetMaximaPairEx(TEdge e) + { + //as above but returns null if MaxPair isn't in AEL (unless it's horizontal) + TEdge result = GetMaximaPair(e); + if (result == null || result.OutIdx == Skip || + ((result.NextInAEL == result.PrevInAEL) && !IsHorizontal(result))) return null; + return result; + } + + //------------------------------------------------------------------------------ + + private bool ProcessIntersections(cInt topY) + { + if (m_ActiveEdges == null) return true; + try + { + BuildIntersectList(topY); + if (m_IntersectList.Count == 0) return true; + if (m_IntersectList.Count == 1 || FixupIntersectionOrder()) + ProcessIntersectList(); + else + return false; + } + catch + { + m_SortedEdges = null; + m_IntersectList.Clear(); + throw new ClipperException("ProcessIntersections error"); + } + m_SortedEdges = null; + return true; + } + + //------------------------------------------------------------------------------ + + private void BuildIntersectList(cInt topY) + { + if (m_ActiveEdges == null) return; + + //prepare for sorting ... + TEdge e = m_ActiveEdges; + m_SortedEdges = e; + while (e != null) + { + e.PrevInSEL = e.PrevInAEL; + e.NextInSEL = e.NextInAEL; + e.Curr.X = TopX(e, topY); + e = e.NextInAEL; + } + + //bubblesort ... + bool isModified = true; + while (isModified && m_SortedEdges != null) + { + isModified = false; + e = m_SortedEdges; + while (e.NextInSEL != null) + { + TEdge eNext = e.NextInSEL; + IntPoint pt; + if (e.Curr.X > eNext.Curr.X) + { + IntersectPoint(e, eNext, out pt); + if (pt.Y < topY) + pt = new IntPoint(TopX(e, topY), topY); + IntersectNode newNode = new IntersectNode(); + newNode.Edge1 = e; + newNode.Edge2 = eNext; + newNode.Pt = pt; + m_IntersectList.Add(newNode); + + SwapPositionsInSEL(e, eNext); + isModified = true; + } + else + e = eNext; + } + if (e.PrevInSEL != null) e.PrevInSEL.NextInSEL = null; + else break; + } + m_SortedEdges = null; + } + + //------------------------------------------------------------------------------ + + private bool EdgesAdjacent(IntersectNode inode) + { + return (inode.Edge1.NextInSEL == inode.Edge2) || + (inode.Edge1.PrevInSEL == inode.Edge2); + } + + //------------------------------------------------------------------------------ + + private static int IntersectNodeSort(IntersectNode node1, IntersectNode node2) + { + //the following typecast is safe because the differences in Pt.Y will + //be limited to the height of the scanbeam. + return (int)(node2.Pt.Y - node1.Pt.Y); + } + + //------------------------------------------------------------------------------ + + private bool FixupIntersectionOrder() + { + //pre-condition: intersections are sorted bottom-most first. + //Now it's crucial that intersections are made only between adjacent edges, + //so to ensure this the order of intersections may need adjusting ... + m_IntersectList.Sort(m_IntersectNodeComparer); + + CopyAELToSEL(); + int cnt = m_IntersectList.Count; + for (int i = 0; i < cnt; i++) + { + if (!EdgesAdjacent(m_IntersectList[i])) + { + int j = i + 1; + while (j < cnt && !EdgesAdjacent(m_IntersectList[j])) j++; + if (j == cnt) return false; + + IntersectNode tmp = m_IntersectList[i]; + m_IntersectList[i] = m_IntersectList[j]; + m_IntersectList[j] = tmp; + } + SwapPositionsInSEL(m_IntersectList[i].Edge1, m_IntersectList[i].Edge2); + } + return true; + } + + //------------------------------------------------------------------------------ + + private void ProcessIntersectList() + { + for (int i = 0; i < m_IntersectList.Count; i++) + { + IntersectNode iNode = m_IntersectList[i]; + { + IntersectEdges(iNode.Edge1, iNode.Edge2, iNode.Pt); + SwapPositionsInAEL(iNode.Edge1, iNode.Edge2); + } + } + m_IntersectList.Clear(); + } + + //------------------------------------------------------------------------------ + + internal static cInt Round(double value) + { + return value < 0 ? (cInt)(value - 0.5) : (cInt)(value + 0.5); + } + + //------------------------------------------------------------------------------ + + private static cInt TopX(TEdge edge, cInt currentY) + { + if (currentY == edge.Top.Y) + return edge.Top.X; + return edge.Bot.X + Round(edge.Dx * (currentY - edge.Bot.Y)); + } + + //------------------------------------------------------------------------------ + + private void IntersectPoint(TEdge edge1, TEdge edge2, out IntPoint ip) + { + ip = new IntPoint(); + double b1, b2; + //nb: with very large coordinate values, it's possible for SlopesEqual() to + //return false but for the edge.Dx value be equal due to double precision rounding. + if (edge1.Dx == edge2.Dx) + { + ip.Y = edge1.Curr.Y; + ip.X = TopX(edge1, ip.Y); + return; + } + + if (edge1.Delta.X == 0) + { + ip.X = edge1.Bot.X; + if (IsHorizontal(edge2)) + { + ip.Y = edge2.Bot.Y; + } + else + { + b2 = edge2.Bot.Y - (edge2.Bot.X / edge2.Dx); + ip.Y = Round(ip.X / edge2.Dx + b2); + } + } + else if (edge2.Delta.X == 0) + { + ip.X = edge2.Bot.X; + if (IsHorizontal(edge1)) + { + ip.Y = edge1.Bot.Y; + } + else + { + b1 = edge1.Bot.Y - (edge1.Bot.X / edge1.Dx); + ip.Y = Round(ip.X / edge1.Dx + b1); + } + } + else + { + b1 = edge1.Bot.X - edge1.Bot.Y * edge1.Dx; + b2 = edge2.Bot.X - edge2.Bot.Y * edge2.Dx; + double q = (b2 - b1) / (edge1.Dx - edge2.Dx); + ip.Y = Round(q); + if (Math.Abs(edge1.Dx) < Math.Abs(edge2.Dx)) + ip.X = Round(edge1.Dx * q + b1); + else + ip.X = Round(edge2.Dx * q + b2); + } + + if (ip.Y < edge1.Top.Y || ip.Y < edge2.Top.Y) + { + if (edge1.Top.Y > edge2.Top.Y) + ip.Y = edge1.Top.Y; + else + ip.Y = edge2.Top.Y; + if (Math.Abs(edge1.Dx) < Math.Abs(edge2.Dx)) + ip.X = TopX(edge1, ip.Y); + else + ip.X = TopX(edge2, ip.Y); + } + //finally, don't allow 'ip' to be BELOW curr.Y (ie bottom of scanbeam) ... + if (ip.Y > edge1.Curr.Y) + { + ip.Y = edge1.Curr.Y; + //better to use the more vertical edge to derive X ... + if (Math.Abs(edge1.Dx) > Math.Abs(edge2.Dx)) + ip.X = TopX(edge2, ip.Y); + else + ip.X = TopX(edge1, ip.Y); + } + } + + //------------------------------------------------------------------------------ + + private void ProcessEdgesAtTopOfScanbeam(cInt topY) + { + TEdge e = m_ActiveEdges; + while (e != null) + { + //1. process maxima, treating them as if they're 'bent' horizontal edges, + // but exclude maxima with horizontal edges. nb: e can't be a horizontal. + bool IsMaximaEdge = IsMaxima(e, topY); + + if (IsMaximaEdge) + { + TEdge eMaxPair = GetMaximaPairEx(e); + IsMaximaEdge = (eMaxPair == null || !IsHorizontal(eMaxPair)); + } + + if (IsMaximaEdge) + { + if (StrictlySimple) InsertMaxima(e.Top.X); + TEdge ePrev = e.PrevInAEL; + DoMaxima(e); + if (ePrev == null) e = m_ActiveEdges; + else e = ePrev.NextInAEL; + } + else + { + //2. promote horizontal edges, otherwise update Curr.X and Curr.Y ... + if (IsIntermediate(e, topY) && IsHorizontal(e.NextInLML)) + { + UpdateEdgeIntoAEL(ref e); + if (e.OutIdx >= 0) + AddOutPt(e, e.Bot); + AddEdgeToSEL(e); + } + else + { + e.Curr.X = TopX(e, topY); + e.Curr.Y = topY; +#if use_xyz + if (e.Top.Y == topY) e.Curr.Z = e.Top.Z; + else if (e.Bot.Y == topY) e.Curr.Z = e.Bot.Z; + else e.Curr.Z = 0; +#endif + } + //When StrictlySimple and 'e' is being touched by another edge, then + //make sure both edges have a vertex here ... + if (StrictlySimple) + { + TEdge ePrev = e.PrevInAEL; + if ((e.OutIdx >= 0) && (e.WindDelta != 0) && ePrev != null && + (ePrev.OutIdx >= 0) && (ePrev.Curr.X == e.Curr.X) && + (ePrev.WindDelta != 0)) + { + IntPoint ip = new IntPoint(e.Curr); +#if use_xyz + SetZ(ref ip, ePrev, e); +#endif + OutPt op = AddOutPt(ePrev, ip); + OutPt op2 = AddOutPt(e, ip); + AddJoin(op, op2, ip); //StrictlySimple (type-3) join + } + } + + e = e.NextInAEL; + } + } + + //3. Process horizontals at the Top of the scanbeam ... + ProcessHorizontals(); + m_Maxima = null; + + //4. Promote intermediate vertices ... + e = m_ActiveEdges; + while (e != null) + { + if (IsIntermediate(e, topY)) + { + OutPt op = null; + if (e.OutIdx >= 0) + op = AddOutPt(e, e.Top); + UpdateEdgeIntoAEL(ref e); + + //if output polygons share an edge, they'll need joining later ... + TEdge ePrev = e.PrevInAEL; + TEdge eNext = e.NextInAEL; + if (ePrev != null && ePrev.Curr.X == e.Bot.X && + ePrev.Curr.Y == e.Bot.Y && op != null && + ePrev.OutIdx >= 0 && ePrev.Curr.Y > ePrev.Top.Y && + SlopesEqual(e.Curr, e.Top, ePrev.Curr, ePrev.Top, m_UseFullRange) && + (e.WindDelta != 0) && (ePrev.WindDelta != 0)) + { + OutPt op2 = AddOutPt(ePrev, e.Bot); + AddJoin(op, op2, e.Top); + } + else if (eNext != null && eNext.Curr.X == e.Bot.X && + eNext.Curr.Y == e.Bot.Y && op != null && + eNext.OutIdx >= 0 && eNext.Curr.Y > eNext.Top.Y && + SlopesEqual(e.Curr, e.Top, eNext.Curr, eNext.Top, m_UseFullRange) && + (e.WindDelta != 0) && (eNext.WindDelta != 0)) + { + OutPt op2 = AddOutPt(eNext, e.Bot); + AddJoin(op, op2, e.Top); + } + } + e = e.NextInAEL; + } + } + + //------------------------------------------------------------------------------ + + private void DoMaxima(TEdge e) + { + TEdge eMaxPair = GetMaximaPairEx(e); + if (eMaxPair == null) + { + if (e.OutIdx >= 0) + AddOutPt(e, e.Top); + DeleteFromAEL(e); + return; + } + + TEdge eNext = e.NextInAEL; + while (eNext != null && eNext != eMaxPair) + { + IntersectEdges(e, eNext, e.Top); + SwapPositionsInAEL(e, eNext); + eNext = e.NextInAEL; + } + + if (e.OutIdx == Unassigned && eMaxPair.OutIdx == Unassigned) + { + DeleteFromAEL(e); + DeleteFromAEL(eMaxPair); + } + else if (e.OutIdx >= 0 && eMaxPair.OutIdx >= 0) + { + if (e.OutIdx >= 0) AddLocalMaxPoly(e, eMaxPair, e.Top); + DeleteFromAEL(e); + DeleteFromAEL(eMaxPair); + } +#if use_lines + else if (e.WindDelta == 0) + { + if (e.OutIdx >= 0) + { + AddOutPt(e, e.Top); + e.OutIdx = Unassigned; + } + DeleteFromAEL(e); + + if (eMaxPair.OutIdx >= 0) + { + AddOutPt(eMaxPair, e.Top); + eMaxPair.OutIdx = Unassigned; + } + DeleteFromAEL(eMaxPair); + } +#endif + else throw new ClipperException("DoMaxima error"); + } + + //------------------------------------------------------------------------------ + + public static void ReversePaths(Paths polys) + { + foreach (var poly in polys) { poly.Reverse(); } + } + + //------------------------------------------------------------------------------ + + public static bool Orientation(Path poly) + { + return Area(poly) >= 0; + } + + //------------------------------------------------------------------------------ + + private int PointCount(OutPt pts) + { + if (pts == null) return 0; + int result = 0; + OutPt p = pts; + do + { + result++; + p = p.Next; + } + while (p != pts); + return result; + } + + //------------------------------------------------------------------------------ + + private void BuildResult(Paths polyg) + { + polyg.Clear(); + polyg.Capacity = m_PolyOuts.Count; + for (int i = 0; i < m_PolyOuts.Count; i++) + { + OutRec outRec = m_PolyOuts[i]; + if (outRec.Pts == null) continue; + OutPt p = outRec.Pts.Prev; + int cnt = PointCount(p); + if (cnt < 2) continue; + Path pg = new Path(cnt); + for (int j = 0; j < cnt; j++) + { + pg.Add(p.Pt); + p = p.Prev; + } + polyg.Add(pg); + } + } + + //------------------------------------------------------------------------------ + + private void BuildResult2(PolyTree polytree) + { + polytree.Clear(); + + //add each output polygon/contour to polytree ... + polytree.m_AllPolys.Capacity = m_PolyOuts.Count; + for (int i = 0; i < m_PolyOuts.Count; i++) + { + OutRec outRec = m_PolyOuts[i]; + int cnt = PointCount(outRec.Pts); + if ((outRec.IsOpen && cnt < 2) || + (!outRec.IsOpen && cnt < 3)) continue; + FixHoleLinkage(outRec); + PolyNode pn = new PolyNode(); + polytree.m_AllPolys.Add(pn); + outRec.PolyNode = pn; + pn.m_polygon.Capacity = cnt; + OutPt op = outRec.Pts.Prev; + for (int j = 0; j < cnt; j++) + { + pn.m_polygon.Add(op.Pt); + op = op.Prev; + } + } + + //fixup PolyNode links etc ... + polytree.m_Childs.Capacity = m_PolyOuts.Count; + for (int i = 0; i < m_PolyOuts.Count; i++) + { + OutRec outRec = m_PolyOuts[i]; + if (outRec.PolyNode == null) continue; + else if (outRec.IsOpen) + { + outRec.PolyNode.IsOpen = true; + polytree.AddChild(outRec.PolyNode); + } + else if (outRec.FirstLeft != null && + outRec.FirstLeft.PolyNode != null) + outRec.FirstLeft.PolyNode.AddChild(outRec.PolyNode); + else + polytree.AddChild(outRec.PolyNode); + } + } + + //------------------------------------------------------------------------------ + + private void FixupOutPolyline(OutRec outrec) + { + OutPt pp = outrec.Pts; + OutPt lastPP = pp.Prev; + while (pp != lastPP) + { + pp = pp.Next; + if (pp.Pt == pp.Prev.Pt) + { + if (pp == lastPP) lastPP = pp.Prev; + OutPt tmpPP = pp.Prev; + tmpPP.Next = pp.Next; + pp.Next.Prev = tmpPP; + pp = tmpPP; + } + } + if (pp == pp.Prev) outrec.Pts = null; + } + + //------------------------------------------------------------------------------ + + private void FixupOutPolygon(OutRec outRec) + { + //FixupOutPolygon() - removes duplicate points and simplifies consecutive + //parallel edges by removing the middle vertex. + OutPt lastOK = null; + outRec.BottomPt = null; + OutPt pp = outRec.Pts; + bool preserveCol = PreserveCollinear || StrictlySimple; + for (;;) + { + if (pp.Prev == pp || pp.Prev == pp.Next) + { + outRec.Pts = null; + return; + } + //test for duplicate points and collinear edges ... + if ((pp.Pt == pp.Next.Pt) || (pp.Pt == pp.Prev.Pt) || + (SlopesEqual(pp.Prev.Pt, pp.Pt, pp.Next.Pt, m_UseFullRange) && + (!preserveCol || !Pt2IsBetweenPt1AndPt3(pp.Prev.Pt, pp.Pt, pp.Next.Pt)))) + { + lastOK = null; + pp.Prev.Next = pp.Next; + pp.Next.Prev = pp.Prev; + pp = pp.Prev; + } + else if (pp == lastOK) break; + else + { + if (lastOK == null) lastOK = pp; + pp = pp.Next; + } + } + outRec.Pts = pp; + } + + //------------------------------------------------------------------------------ + + OutPt DupOutPt(OutPt outPt, bool InsertAfter) + { + OutPt result = new OutPt(); + result.Pt = outPt.Pt; + result.Idx = outPt.Idx; + if (InsertAfter) + { + result.Next = outPt.Next; + result.Prev = outPt; + outPt.Next.Prev = result; + outPt.Next = result; + } + else + { + result.Prev = outPt.Prev; + result.Next = outPt; + outPt.Prev.Next = result; + outPt.Prev = result; + } + return result; + } + + //------------------------------------------------------------------------------ + + bool GetOverlap(cInt a1, cInt a2, cInt b1, cInt b2, out cInt Left, out cInt Right) + { + if (a1 < a2) + { + if (b1 < b2) {Left = Math.Max(a1, b1); Right = Math.Min(a2, b2); } + else {Left = Math.Max(a1, b2); Right = Math.Min(a2, b1); } + } + else + { + if (b1 < b2) {Left = Math.Max(a2, b1); Right = Math.Min(a1, b2); } + else { Left = Math.Max(a2, b2); Right = Math.Min(a1, b1); } + } + return Left < Right; + } + + //------------------------------------------------------------------------------ + + bool JoinHorz(OutPt op1, OutPt op1b, OutPt op2, OutPt op2b, + IntPoint Pt, bool DiscardLeft) + { + Direction Dir1 = (op1.Pt.X > op1b.Pt.X ? + Direction.dRightToLeft : Direction.dLeftToRight); + Direction Dir2 = (op2.Pt.X > op2b.Pt.X ? + Direction.dRightToLeft : Direction.dLeftToRight); + if (Dir1 == Dir2) return false; + + //When DiscardLeft, we want Op1b to be on the Left of Op1, otherwise we + //want Op1b to be on the Right. (And likewise with Op2 and Op2b.) + //So, to facilitate this while inserting Op1b and Op2b ... + //when DiscardLeft, make sure we're AT or RIGHT of Pt before adding Op1b, + //otherwise make sure we're AT or LEFT of Pt. (Likewise with Op2b.) + if (Dir1 == Direction.dLeftToRight) + { + while (op1.Next.Pt.X <= Pt.X && + op1.Next.Pt.X >= op1.Pt.X && op1.Next.Pt.Y == Pt.Y) + op1 = op1.Next; + if (DiscardLeft && (op1.Pt.X != Pt.X)) op1 = op1.Next; + op1b = DupOutPt(op1, !DiscardLeft); + if (op1b.Pt != Pt) + { + op1 = op1b; + op1.Pt = Pt; + op1b = DupOutPt(op1, !DiscardLeft); + } + } + else + { + while (op1.Next.Pt.X >= Pt.X && + op1.Next.Pt.X <= op1.Pt.X && op1.Next.Pt.Y == Pt.Y) + op1 = op1.Next; + if (!DiscardLeft && (op1.Pt.X != Pt.X)) op1 = op1.Next; + op1b = DupOutPt(op1, DiscardLeft); + if (op1b.Pt != Pt) + { + op1 = op1b; + op1.Pt = Pt; + op1b = DupOutPt(op1, DiscardLeft); + } + } + + if (Dir2 == Direction.dLeftToRight) + { + while (op2.Next.Pt.X <= Pt.X && + op2.Next.Pt.X >= op2.Pt.X && op2.Next.Pt.Y == Pt.Y) + op2 = op2.Next; + if (DiscardLeft && (op2.Pt.X != Pt.X)) op2 = op2.Next; + op2b = DupOutPt(op2, !DiscardLeft); + if (op2b.Pt != Pt) + { + op2 = op2b; + op2.Pt = Pt; + op2b = DupOutPt(op2, !DiscardLeft); + } + } + else + { + while (op2.Next.Pt.X >= Pt.X && + op2.Next.Pt.X <= op2.Pt.X && op2.Next.Pt.Y == Pt.Y) + op2 = op2.Next; + if (!DiscardLeft && (op2.Pt.X != Pt.X)) op2 = op2.Next; + op2b = DupOutPt(op2, DiscardLeft); + if (op2b.Pt != Pt) + { + op2 = op2b; + op2.Pt = Pt; + op2b = DupOutPt(op2, DiscardLeft); + } + } + + if ((Dir1 == Direction.dLeftToRight) == DiscardLeft) + { + op1.Prev = op2; + op2.Next = op1; + op1b.Next = op2b; + op2b.Prev = op1b; + } + else + { + op1.Next = op2; + op2.Prev = op1; + op1b.Prev = op2b; + op2b.Next = op1b; + } + return true; + } + + //------------------------------------------------------------------------------ + + private bool JoinPoints(Join j, OutRec outRec1, OutRec outRec2) + { + OutPt op1 = j.OutPt1, op1b; + OutPt op2 = j.OutPt2, op2b; + + //There are 3 kinds of joins for output polygons ... + //1. Horizontal joins where Join.OutPt1 & Join.OutPt2 are vertices anywhere + //along (horizontal) collinear edges (& Join.OffPt is on the same horizontal). + //2. Non-horizontal joins where Join.OutPt1 & Join.OutPt2 are at the same + //location at the Bottom of the overlapping segment (& Join.OffPt is above). + //3. StrictlySimple joins where edges touch but are not collinear and where + //Join.OutPt1, Join.OutPt2 & Join.OffPt all share the same point. + bool isHorizontal = (j.OutPt1.Pt.Y == j.OffPt.Y); + + if (isHorizontal && (j.OffPt == j.OutPt1.Pt) && (j.OffPt == j.OutPt2.Pt)) + { + //Strictly Simple join ... + if (outRec1 != outRec2) return false; + op1b = j.OutPt1.Next; + while (op1b != op1 && (op1b.Pt == j.OffPt)) + op1b = op1b.Next; + bool reverse1 = (op1b.Pt.Y > j.OffPt.Y); + op2b = j.OutPt2.Next; + while (op2b != op2 && (op2b.Pt == j.OffPt)) + op2b = op2b.Next; + bool reverse2 = (op2b.Pt.Y > j.OffPt.Y); + if (reverse1 == reverse2) return false; + if (reverse1) + { + op1b = DupOutPt(op1, false); + op2b = DupOutPt(op2, true); + op1.Prev = op2; + op2.Next = op1; + op1b.Next = op2b; + op2b.Prev = op1b; + j.OutPt1 = op1; + j.OutPt2 = op1b; + return true; + } + else + { + op1b = DupOutPt(op1, true); + op2b = DupOutPt(op2, false); + op1.Next = op2; + op2.Prev = op1; + op1b.Prev = op2b; + op2b.Next = op1b; + j.OutPt1 = op1; + j.OutPt2 = op1b; + return true; + } + } + else if (isHorizontal) + { + //treat horizontal joins differently to non-horizontal joins since with + //them we're not yet sure where the overlapping is. OutPt1.Pt & OutPt2.Pt + //may be anywhere along the horizontal edge. + op1b = op1; + while (op1.Prev.Pt.Y == op1.Pt.Y && op1.Prev != op1b && op1.Prev != op2) + op1 = op1.Prev; + while (op1b.Next.Pt.Y == op1b.Pt.Y && op1b.Next != op1 && op1b.Next != op2) + op1b = op1b.Next; + if (op1b.Next == op1 || op1b.Next == op2) return false; //a flat 'polygon' + + op2b = op2; + while (op2.Prev.Pt.Y == op2.Pt.Y && op2.Prev != op2b && op2.Prev != op1b) + op2 = op2.Prev; + while (op2b.Next.Pt.Y == op2b.Pt.Y && op2b.Next != op2 && op2b.Next != op1) + op2b = op2b.Next; + if (op2b.Next == op2 || op2b.Next == op1) return false; //a flat 'polygon' + + cInt Left, Right; + //Op1 -. Op1b & Op2 -. Op2b are the extremites of the horizontal edges + if (!GetOverlap(op1.Pt.X, op1b.Pt.X, op2.Pt.X, op2b.Pt.X, out Left, out Right)) + return false; + + //DiscardLeftSide: when overlapping edges are joined, a spike will created + //which needs to be cleaned up. However, we don't want Op1 or Op2 caught up + //on the discard Side as either may still be needed for other joins ... + IntPoint Pt; + bool DiscardLeftSide; + if (op1.Pt.X >= Left && op1.Pt.X <= Right) + { + Pt = op1.Pt; DiscardLeftSide = (op1.Pt.X > op1b.Pt.X); + } + else if (op2.Pt.X >= Left && op2.Pt.X <= Right) + { + Pt = op2.Pt; DiscardLeftSide = (op2.Pt.X > op2b.Pt.X); + } + else if (op1b.Pt.X >= Left && op1b.Pt.X <= Right) + { + Pt = op1b.Pt; DiscardLeftSide = op1b.Pt.X > op1.Pt.X; + } + else + { + Pt = op2b.Pt; DiscardLeftSide = (op2b.Pt.X > op2.Pt.X); + } + j.OutPt1 = op1; + j.OutPt2 = op2; + return JoinHorz(op1, op1b, op2, op2b, Pt, DiscardLeftSide); + } + else + { + //nb: For non-horizontal joins ... + // 1. Jr.OutPt1.Pt.Y == Jr.OutPt2.Pt.Y + // 2. Jr.OutPt1.Pt > Jr.OffPt.Y + + //make sure the polygons are correctly oriented ... + op1b = op1.Next; + while ((op1b.Pt == op1.Pt) && (op1b != op1)) op1b = op1b.Next; + bool Reverse1 = ((op1b.Pt.Y > op1.Pt.Y) || + !SlopesEqual(op1.Pt, op1b.Pt, j.OffPt, m_UseFullRange)); + if (Reverse1) + { + op1b = op1.Prev; + while ((op1b.Pt == op1.Pt) && (op1b != op1)) op1b = op1b.Prev; + if ((op1b.Pt.Y > op1.Pt.Y) || + !SlopesEqual(op1.Pt, op1b.Pt, j.OffPt, m_UseFullRange)) return false; + } + op2b = op2.Next; + while ((op2b.Pt == op2.Pt) && (op2b != op2)) op2b = op2b.Next; + bool Reverse2 = ((op2b.Pt.Y > op2.Pt.Y) || + !SlopesEqual(op2.Pt, op2b.Pt, j.OffPt, m_UseFullRange)); + if (Reverse2) + { + op2b = op2.Prev; + while ((op2b.Pt == op2.Pt) && (op2b != op2)) op2b = op2b.Prev; + if ((op2b.Pt.Y > op2.Pt.Y) || + !SlopesEqual(op2.Pt, op2b.Pt, j.OffPt, m_UseFullRange)) return false; + } + + if ((op1b == op1) || (op2b == op2) || (op1b == op2b) || + ((outRec1 == outRec2) && (Reverse1 == Reverse2))) return false; + + if (Reverse1) + { + op1b = DupOutPt(op1, false); + op2b = DupOutPt(op2, true); + op1.Prev = op2; + op2.Next = op1; + op1b.Next = op2b; + op2b.Prev = op1b; + j.OutPt1 = op1; + j.OutPt2 = op1b; + return true; + } + else + { + op1b = DupOutPt(op1, true); + op2b = DupOutPt(op2, false); + op1.Next = op2; + op2.Prev = op1; + op1b.Prev = op2b; + op2b.Next = op1b; + j.OutPt1 = op1; + j.OutPt2 = op1b; + return true; + } + } + } + + //---------------------------------------------------------------------- + + public static int PointInPolygon(IntPoint pt, Path path) + { + //returns 0 if false, +1 if true, -1 if pt ON polygon boundary + //See "The Point in Polygon Problem for Arbitrary Polygons" by Hormann & Agathos + //http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.5498&rep=rep1&type=pdf + int result = 0, cnt = path.Count; + if (cnt < 3) return 0; + IntPoint ip = path[0]; + for (int i = 1; i <= cnt; ++i) + { + IntPoint ipNext = (i == cnt ? path[0] : path[i]); + if (ipNext.Y == pt.Y) + { + if ((ipNext.X == pt.X) || (ip.Y == pt.Y && + ((ipNext.X > pt.X) == (ip.X < pt.X)))) return -1; + } + if ((ip.Y < pt.Y) != (ipNext.Y < pt.Y)) + { + if (ip.X >= pt.X) + { + if (ipNext.X > pt.X) result = 1 - result; + else + { + double d = (double)(ip.X - pt.X) * (ipNext.Y - pt.Y) - + (double)(ipNext.X - pt.X) * (ip.Y - pt.Y); + if (d == 0) return -1; + else if ((d > 0) == (ipNext.Y > ip.Y)) result = 1 - result; + } + } + else + { + if (ipNext.X > pt.X) + { + double d = (double)(ip.X - pt.X) * (ipNext.Y - pt.Y) - + (double)(ipNext.X - pt.X) * (ip.Y - pt.Y); + if (d == 0) return -1; + else if ((d > 0) == (ipNext.Y > ip.Y)) result = 1 - result; + } + } + } + ip = ipNext; + } + return result; + } + + //------------------------------------------------------------------------------ + + //See "The Point in Polygon Problem for Arbitrary Polygons" by Hormann & Agathos + //http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.5498&rep=rep1&type=pdf + private static int PointInPolygon(IntPoint pt, OutPt op) + { + //returns 0 if false, +1 if true, -1 if pt ON polygon boundary + int result = 0; + OutPt startOp = op; + cInt ptx = pt.X, pty = pt.Y; + cInt poly0x = op.Pt.X, poly0y = op.Pt.Y; + do + { + op = op.Next; + cInt poly1x = op.Pt.X, poly1y = op.Pt.Y; + + if (poly1y == pty) + { + if ((poly1x == ptx) || (poly0y == pty && + ((poly1x > ptx) == (poly0x < ptx)))) return -1; + } + if ((poly0y < pty) != (poly1y < pty)) + { + if (poly0x >= ptx) + { + if (poly1x > ptx) result = 1 - result; + else + { + double d = (double)(poly0x - ptx) * (poly1y - pty) - + (double)(poly1x - ptx) * (poly0y - pty); + if (d == 0) return -1; + if ((d > 0) == (poly1y > poly0y)) result = 1 - result; + } + } + else + { + if (poly1x > ptx) + { + double d = (double)(poly0x - ptx) * (poly1y - pty) - + (double)(poly1x - ptx) * (poly0y - pty); + if (d == 0) return -1; + if ((d > 0) == (poly1y > poly0y)) result = 1 - result; + } + } + } + poly0x = poly1x; poly0y = poly1y; + } + while (startOp != op); + return result; + } + + //------------------------------------------------------------------------------ + + private static bool Poly2ContainsPoly1(OutPt outPt1, OutPt outPt2) + { + OutPt op = outPt1; + do + { + //nb: PointInPolygon returns 0 if false, +1 if true, -1 if pt on polygon + int res = PointInPolygon(op.Pt, outPt2); + if (res >= 0) return res > 0; + op = op.Next; + } + while (op != outPt1); + return true; + } + + //---------------------------------------------------------------------- + + private void FixupFirstLefts1(OutRec OldOutRec, OutRec NewOutRec) + { + foreach (OutRec outRec in m_PolyOuts) + { + OutRec firstLeft = ParseFirstLeft(outRec.FirstLeft); + if (outRec.Pts != null && firstLeft == OldOutRec) + { + if (Poly2ContainsPoly1(outRec.Pts, NewOutRec.Pts)) + outRec.FirstLeft = NewOutRec; + } + } + } + + //---------------------------------------------------------------------- + + private void FixupFirstLefts2(OutRec innerOutRec, OutRec outerOutRec) + { + //A polygon has split into two such that one is now the inner of the other. + //It's possible that these polygons now wrap around other polygons, so check + //every polygon that's also contained by OuterOutRec's FirstLeft container + //(including nil) to see if they've become inner to the new inner polygon ... + OutRec orfl = outerOutRec.FirstLeft; + foreach (OutRec outRec in m_PolyOuts) + { + if (outRec.Pts == null || outRec == outerOutRec || outRec == innerOutRec) + continue; + OutRec firstLeft = ParseFirstLeft(outRec.FirstLeft); + if (firstLeft != orfl && firstLeft != innerOutRec && firstLeft != outerOutRec) + continue; + if (Poly2ContainsPoly1(outRec.Pts, innerOutRec.Pts)) + outRec.FirstLeft = innerOutRec; + else if (Poly2ContainsPoly1(outRec.Pts, outerOutRec.Pts)) + outRec.FirstLeft = outerOutRec; + else if (outRec.FirstLeft == innerOutRec || outRec.FirstLeft == outerOutRec) + outRec.FirstLeft = orfl; + } + } + + //---------------------------------------------------------------------- + + private void FixupFirstLefts3(OutRec OldOutRec, OutRec NewOutRec) + { + //same as FixupFirstLefts1 but doesn't call Poly2ContainsPoly1() + foreach (OutRec outRec in m_PolyOuts) + { + OutRec firstLeft = ParseFirstLeft(outRec.FirstLeft); + if (outRec.Pts != null && firstLeft == OldOutRec) + outRec.FirstLeft = NewOutRec; + } + } + + //---------------------------------------------------------------------- + + private static OutRec ParseFirstLeft(OutRec FirstLeft) + { + while (FirstLeft != null && FirstLeft.Pts == null) + FirstLeft = FirstLeft.FirstLeft; + return FirstLeft; + } + + //------------------------------------------------------------------------------ + + private void JoinCommonEdges() + { + for (int i = 0; i < m_Joins.Count; i++) + { + Join join = m_Joins[i]; + + OutRec outRec1 = GetOutRec(join.OutPt1.Idx); + OutRec outRec2 = GetOutRec(join.OutPt2.Idx); + + if (outRec1.Pts == null || outRec2.Pts == null) continue; + if (outRec1.IsOpen || outRec2.IsOpen) continue; + + //get the polygon fragment with the correct hole state (FirstLeft) + //before calling JoinPoints() ... + OutRec holeStateRec; + if (outRec1 == outRec2) holeStateRec = outRec1; + else if (OutRec1RightOfOutRec2(outRec1, outRec2)) holeStateRec = outRec2; + else if (OutRec1RightOfOutRec2(outRec2, outRec1)) holeStateRec = outRec1; + else holeStateRec = GetLowermostRec(outRec1, outRec2); + + if (!JoinPoints(join, outRec1, outRec2)) continue; + + if (outRec1 == outRec2) + { + //instead of joining two polygons, we've just created a new one by + //splitting one polygon into two. + outRec1.Pts = join.OutPt1; + outRec1.BottomPt = null; + outRec2 = CreateOutRec(); + outRec2.Pts = join.OutPt2; + + //update all OutRec2.Pts Idx's ... + UpdateOutPtIdxs(outRec2); + + if (Poly2ContainsPoly1(outRec2.Pts, outRec1.Pts)) + { + //outRec1 contains outRec2 ... + outRec2.IsHole = !outRec1.IsHole; + outRec2.FirstLeft = outRec1; + + if (m_UsingPolyTree) FixupFirstLefts2(outRec2, outRec1); + + if ((outRec2.IsHole ^ ReverseSolution) == (Area(outRec2) > 0)) + ReversePolyPtLinks(outRec2.Pts); + } + else if (Poly2ContainsPoly1(outRec1.Pts, outRec2.Pts)) + { + //outRec2 contains outRec1 ... + outRec2.IsHole = outRec1.IsHole; + outRec1.IsHole = !outRec2.IsHole; + outRec2.FirstLeft = outRec1.FirstLeft; + outRec1.FirstLeft = outRec2; + + if (m_UsingPolyTree) FixupFirstLefts2(outRec1, outRec2); + + if ((outRec1.IsHole ^ ReverseSolution) == (Area(outRec1) > 0)) + ReversePolyPtLinks(outRec1.Pts); + } + else + { + //the 2 polygons are completely separate ... + outRec2.IsHole = outRec1.IsHole; + outRec2.FirstLeft = outRec1.FirstLeft; + + //fixup FirstLeft pointers that may need reassigning to OutRec2 + if (m_UsingPolyTree) FixupFirstLefts1(outRec1, outRec2); + } + } + else + { + //joined 2 polygons together ... + + outRec2.Pts = null; + outRec2.BottomPt = null; + outRec2.Idx = outRec1.Idx; + + outRec1.IsHole = holeStateRec.IsHole; + if (holeStateRec == outRec2) + outRec1.FirstLeft = outRec2.FirstLeft; + outRec2.FirstLeft = outRec1; + + //fixup FirstLeft pointers that may need reassigning to OutRec1 + if (m_UsingPolyTree) FixupFirstLefts3(outRec2, outRec1); + } + } + } + + //------------------------------------------------------------------------------ + + private void UpdateOutPtIdxs(OutRec outrec) + { + OutPt op = outrec.Pts; + do + { + op.Idx = outrec.Idx; + op = op.Prev; + } + while (op != outrec.Pts); + } + + //------------------------------------------------------------------------------ + + private void DoSimplePolygons() + { + int i = 0; + while (i < m_PolyOuts.Count) + { + OutRec outrec = m_PolyOuts[i++]; + OutPt op = outrec.Pts; + if (op == null || outrec.IsOpen) continue; + do //for each Pt in Polygon until duplicate found do ... + { + OutPt op2 = op.Next; + while (op2 != outrec.Pts) + { + if ((op.Pt == op2.Pt) && op2.Next != op && op2.Prev != op) + { + //split the polygon into two ... + OutPt op3 = op.Prev; + OutPt op4 = op2.Prev; + op.Prev = op4; + op4.Next = op; + op2.Prev = op3; + op3.Next = op2; + + outrec.Pts = op; + OutRec outrec2 = CreateOutRec(); + outrec2.Pts = op2; + UpdateOutPtIdxs(outrec2); + if (Poly2ContainsPoly1(outrec2.Pts, outrec.Pts)) + { + //OutRec2 is contained by OutRec1 ... + outrec2.IsHole = !outrec.IsHole; + outrec2.FirstLeft = outrec; + if (m_UsingPolyTree) FixupFirstLefts2(outrec2, outrec); + } + else if (Poly2ContainsPoly1(outrec.Pts, outrec2.Pts)) + { + //OutRec1 is contained by OutRec2 ... + outrec2.IsHole = outrec.IsHole; + outrec.IsHole = !outrec2.IsHole; + outrec2.FirstLeft = outrec.FirstLeft; + outrec.FirstLeft = outrec2; + if (m_UsingPolyTree) FixupFirstLefts2(outrec, outrec2); + } + else + { + //the 2 polygons are separate ... + outrec2.IsHole = outrec.IsHole; + outrec2.FirstLeft = outrec.FirstLeft; + if (m_UsingPolyTree) FixupFirstLefts1(outrec, outrec2); + } + op2 = op; //ie get ready for the next iteration + } + op2 = op2.Next; + } + op = op.Next; + } + while (op != outrec.Pts); + } + } + + //------------------------------------------------------------------------------ + + public static double Area(Path poly) + { + int cnt = (int)poly.Count; + if (cnt < 3) return 0; + double a = 0; + for (int i = 0, j = cnt - 1; i < cnt; ++i) + { + a += ((double)poly[j].X + poly[i].X) * ((double)poly[j].Y - poly[i].Y); + j = i; + } + return -a * 0.5; + } + + //------------------------------------------------------------------------------ + + internal double Area(OutRec outRec) + { + return Area(outRec.Pts); + } + + //------------------------------------------------------------------------------ + + internal double Area(OutPt op) + { + OutPt opFirst = op; + if (op == null) return 0; + double a = 0; + do + { + a = a + (double)(op.Prev.Pt.X + op.Pt.X) * (double)(op.Prev.Pt.Y - op.Pt.Y); + op = op.Next; + } + while (op != opFirst); + return a * 0.5; + } + + //------------------------------------------------------------------------------ + // SimplifyPolygon functions ... + // Convert self-intersecting polygons into simple polygons + //------------------------------------------------------------------------------ + + public static Paths SimplifyPolygon(Path poly, + PolyFillType fillType = PolyFillType.pftEvenOdd) + { + Paths result = new Paths(); + Clipper c = new Clipper(); + c.StrictlySimple = true; + c.AddPath(poly, PolyType.ptSubject, true); + c.Execute(ClipType.ctUnion, result, fillType, fillType); + return result; + } + + //------------------------------------------------------------------------------ + + public static Paths SimplifyPolygons(Paths polys, + PolyFillType fillType = PolyFillType.pftEvenOdd) + { + Paths result = new Paths(); + Clipper c = new Clipper(); + c.StrictlySimple = true; + c.AddPaths(polys, PolyType.ptSubject, true); + c.Execute(ClipType.ctUnion, result, fillType, fillType); + return result; + } + + //------------------------------------------------------------------------------ + + private static double DistanceSqrd(IntPoint pt1, IntPoint pt2) + { + double dx = ((double)pt1.X - pt2.X); + double dy = ((double)pt1.Y - pt2.Y); + return (dx * dx + dy * dy); + } + + //------------------------------------------------------------------------------ + + private static double DistanceFromLineSqrd(IntPoint pt, IntPoint ln1, IntPoint ln2) + { + //The equation of a line in general form (Ax + By + C = 0) + //given 2 points (x¹,y¹) & (x²,y²) is ... + //(y¹ - y²)x + (x² - x¹)y + (y² - y¹)x¹ - (x² - x¹)y¹ = 0 + //A = (y¹ - y²); B = (x² - x¹); C = (y² - y¹)x¹ - (x² - x¹)y¹ + //perpendicular distance of point (x³,y³) = (Ax³ + By³ + C)/Sqrt(A² + B²) + //see http://en.wikipedia.org/wiki/Perpendicular_distance + double A = ln1.Y - ln2.Y; + double B = ln2.X - ln1.X; + double C = A * ln1.X + B * ln1.Y; + C = A * pt.X + B * pt.Y - C; + return (C * C) / (A * A + B * B); + } + + //--------------------------------------------------------------------------- + + private static bool SlopesNearCollinear(IntPoint pt1, + IntPoint pt2, IntPoint pt3, double distSqrd) + { + //this function is more accurate when the point that's GEOMETRICALLY + //between the other 2 points is the one that's tested for distance. + //nb: with 'spikes', either pt1 or pt3 is geometrically between the other pts + if (Math.Abs(pt1.X - pt2.X) > Math.Abs(pt1.Y - pt2.Y)) + { + if ((pt1.X > pt2.X) == (pt1.X < pt3.X)) + return DistanceFromLineSqrd(pt1, pt2, pt3) < distSqrd; + else if ((pt2.X > pt1.X) == (pt2.X < pt3.X)) + return DistanceFromLineSqrd(pt2, pt1, pt3) < distSqrd; + else + return DistanceFromLineSqrd(pt3, pt1, pt2) < distSqrd; + } + else + { + if ((pt1.Y > pt2.Y) == (pt1.Y < pt3.Y)) + return DistanceFromLineSqrd(pt1, pt2, pt3) < distSqrd; + else if ((pt2.Y > pt1.Y) == (pt2.Y < pt3.Y)) + return DistanceFromLineSqrd(pt2, pt1, pt3) < distSqrd; + else + return DistanceFromLineSqrd(pt3, pt1, pt2) < distSqrd; + } + } + + //------------------------------------------------------------------------------ + + private static bool PointsAreClose(IntPoint pt1, IntPoint pt2, double distSqrd) + { + double dx = (double)pt1.X - pt2.X; + double dy = (double)pt1.Y - pt2.Y; + return ((dx * dx) + (dy * dy) <= distSqrd); + } + + //------------------------------------------------------------------------------ + + private static OutPt ExcludeOp(OutPt op) + { + OutPt result = op.Prev; + result.Next = op.Next; + op.Next.Prev = result; + result.Idx = 0; + return result; + } + + //------------------------------------------------------------------------------ + + public static Path CleanPolygon(Path path, double distance = 1.415) + { + //distance = proximity in units/pixels below which vertices will be stripped. + //Default ~= sqrt(2) so when adjacent vertices or semi-adjacent vertices have + //both x & y coords within 1 unit, then the second vertex will be stripped. + + int cnt = path.Count; + + if (cnt == 0) return new Path(); + + OutPt[] outPts = new OutPt[cnt]; + for (int i = 0; i < cnt; ++i) outPts[i] = new OutPt(); + + for (int i = 0; i < cnt; ++i) + { + outPts[i].Pt = path[i]; + outPts[i].Next = outPts[(i + 1) % cnt]; + outPts[i].Next.Prev = outPts[i]; + outPts[i].Idx = 0; + } + + double distSqrd = distance * distance; + OutPt op = outPts[0]; + while (op.Idx == 0 && op.Next != op.Prev) + { + if (PointsAreClose(op.Pt, op.Prev.Pt, distSqrd)) + { + op = ExcludeOp(op); + cnt--; + } + else if (PointsAreClose(op.Prev.Pt, op.Next.Pt, distSqrd)) + { + ExcludeOp(op.Next); + op = ExcludeOp(op); + cnt -= 2; + } + else if (SlopesNearCollinear(op.Prev.Pt, op.Pt, op.Next.Pt, distSqrd)) + { + op = ExcludeOp(op); + cnt--; + } + else + { + op.Idx = 1; + op = op.Next; + } + } + + if (cnt < 3) cnt = 0; + Path result = new Path(cnt); + for (int i = 0; i < cnt; ++i) + { + result.Add(op.Pt); + op = op.Next; + } + outPts = null; + return result; + } + + //------------------------------------------------------------------------------ + + public static Paths CleanPolygons(Paths polys, + double distance = 1.415) + { + Paths result = new Paths(polys.Count); + for (int i = 0; i < polys.Count; i++) + result.Add(CleanPolygon(polys[i], distance)); + return result; + } + + //------------------------------------------------------------------------------ + + internal static Paths Minkowski(Path pattern, Path path, bool IsSum, bool IsClosed) + { + int delta = (IsClosed ? 1 : 0); + int polyCnt = pattern.Count; + int pathCnt = path.Count; + Paths result = new Paths(pathCnt); + if (IsSum) + for (int i = 0; i < pathCnt; i++) + { + Path p = new Path(polyCnt); + foreach (IntPoint ip in pattern) + p.Add(new IntPoint(path[i].X + ip.X, path[i].Y + ip.Y)); + result.Add(p); + } + else + for (int i = 0; i < pathCnt; i++) + { + Path p = new Path(polyCnt); + foreach (IntPoint ip in pattern) + p.Add(new IntPoint(path[i].X - ip.X, path[i].Y - ip.Y)); + result.Add(p); + } + + Paths quads = new Paths((pathCnt + delta) * (polyCnt + 1)); + for (int i = 0; i < pathCnt - 1 + delta; i++) + for (int j = 0; j < polyCnt; j++) + { + Path quad = new Path(4); + quad.Add(result[i % pathCnt][j % polyCnt]); + quad.Add(result[(i + 1) % pathCnt][j % polyCnt]); + quad.Add(result[(i + 1) % pathCnt][(j + 1) % polyCnt]); + quad.Add(result[i % pathCnt][(j + 1) % polyCnt]); + if (!Orientation(quad)) quad.Reverse(); + quads.Add(quad); + } + return quads; + } + + //------------------------------------------------------------------------------ + + public static Paths MinkowskiSum(Path pattern, Path path, bool pathIsClosed) + { + Paths paths = Minkowski(pattern, path, true, pathIsClosed); + Clipper c = new Clipper(); + c.AddPaths(paths, PolyType.ptSubject, true); + c.Execute(ClipType.ctUnion, paths, PolyFillType.pftNonZero, PolyFillType.pftNonZero); + return paths; + } + + //------------------------------------------------------------------------------ + + private static Path TranslatePath(Path path, IntPoint delta) + { + Path outPath = new Path(path.Count); + for (int i = 0; i < path.Count; i++) + outPath.Add(new IntPoint(path[i].X + delta.X, path[i].Y + delta.Y)); + return outPath; + } + + //------------------------------------------------------------------------------ + + public static Paths MinkowskiSum(Path pattern, Paths paths, bool pathIsClosed) + { + Paths solution = new Paths(); + Clipper c = new Clipper(); + for (int i = 0; i < paths.Count; ++i) + { + Paths tmp = Minkowski(pattern, paths[i], true, pathIsClosed); + c.AddPaths(tmp, PolyType.ptSubject, true); + if (pathIsClosed) + { + Path path = TranslatePath(paths[i], pattern[0]); + c.AddPath(path, PolyType.ptClip, true); + } + } + c.Execute(ClipType.ctUnion, solution, + PolyFillType.pftNonZero, PolyFillType.pftNonZero); + return solution; + } + + //------------------------------------------------------------------------------ + + public static Paths MinkowskiDiff(Path poly1, Path poly2) + { + Paths paths = Minkowski(poly1, poly2, false, true); + Clipper c = new Clipper(); + c.AddPaths(paths, PolyType.ptSubject, true); + c.Execute(ClipType.ctUnion, paths, PolyFillType.pftNonZero, PolyFillType.pftNonZero); + return paths; + } + + //------------------------------------------------------------------------------ + + internal enum NodeType { ntAny, ntOpen, ntClosed }; + + public static Paths PolyTreeToPaths(PolyTree polytree) + { + Paths result = new Paths(); + result.Capacity = polytree.Total; + AddPolyNodeToPaths(polytree, NodeType.ntAny, result); + return result; + } + + //------------------------------------------------------------------------------ + + internal static void AddPolyNodeToPaths(PolyNode polynode, NodeType nt, Paths paths) + { + bool match = true; + switch (nt) + { + case NodeType.ntOpen: return; + case NodeType.ntClosed: match = !polynode.IsOpen; break; + default: break; + } + + if (polynode.m_polygon.Count > 0 && match) + paths.Add(polynode.m_polygon); + foreach (PolyNode pn in polynode.Childs) + AddPolyNodeToPaths(pn, nt, paths); + } + + //------------------------------------------------------------------------------ + + public static Paths OpenPathsFromPolyTree(PolyTree polytree) + { + Paths result = new Paths(); + result.Capacity = polytree.ChildCount; + for (int i = 0; i < polytree.ChildCount; i++) + if (polytree.Childs[i].IsOpen) + result.Add(polytree.Childs[i].m_polygon); + return result; + } + + //------------------------------------------------------------------------------ + + public static Paths ClosedPathsFromPolyTree(PolyTree polytree) + { + Paths result = new Paths(); + result.Capacity = polytree.Total; + AddPolyNodeToPaths(polytree, NodeType.ntClosed, result); + return result; + } + + //------------------------------------------------------------------------------ + } //end Clipper + + public class ClipperOffset + { + private Paths m_destPolys; + private Path m_srcPoly; + private Path m_destPoly; + private List m_normals = new List(); + private double m_delta, m_sinA, m_sin, m_cos; + private double m_miterLim, m_StepsPerRad; + + private IntPoint m_lowest; + private PolyNode m_polyNodes = new PolyNode(); + + public double ArcTolerance { get; set; } + public double MiterLimit { get; set; } + + private const double two_pi = Math.PI * 2; + private const double def_arc_tolerance = 0.25; + + public ClipperOffset( + double miterLimit = 2.0, double arcTolerance = def_arc_tolerance) + { + MiterLimit = miterLimit; + ArcTolerance = arcTolerance; + m_lowest.X = -1; + } + + //------------------------------------------------------------------------------ + + public void Clear() + { + m_polyNodes.Childs.Clear(); + m_lowest.X = -1; + } + + //------------------------------------------------------------------------------ + + internal static cInt Round(double value) + { + return value < 0 ? (cInt)(value - 0.5) : (cInt)(value + 0.5); + } + + //------------------------------------------------------------------------------ + + public void AddPath(Path path, JoinType joinType, EndType endType) + { + int highI = path.Count - 1; + if (highI < 0) return; + PolyNode newNode = new PolyNode(); + newNode.m_jointype = joinType; + newNode.m_endtype = endType; + + //strip duplicate points from path and also get index to the lowest point ... + if (endType == EndType.etClosedLine || endType == EndType.etClosedPolygon) + while (highI > 0 && path[0] == path[highI]) highI--; + newNode.m_polygon.Capacity = highI + 1; + newNode.m_polygon.Add(path[0]); + int j = 0, k = 0; + for (int i = 1; i <= highI; i++) + if (newNode.m_polygon[j] != path[i]) + { + j++; + newNode.m_polygon.Add(path[i]); + if (path[i].Y > newNode.m_polygon[k].Y || + (path[i].Y == newNode.m_polygon[k].Y && + path[i].X < newNode.m_polygon[k].X)) k = j; + } + if (endType == EndType.etClosedPolygon && j < 2) return; + + m_polyNodes.AddChild(newNode); + + //if this path's lowest pt is lower than all the others then update m_lowest + if (endType != EndType.etClosedPolygon) return; + if (m_lowest.X < 0) + m_lowest = new IntPoint(m_polyNodes.ChildCount - 1, k); + else + { + IntPoint ip = m_polyNodes.Childs[(int)m_lowest.X].m_polygon[(int)m_lowest.Y]; + if (newNode.m_polygon[k].Y > ip.Y || + (newNode.m_polygon[k].Y == ip.Y && + newNode.m_polygon[k].X < ip.X)) + m_lowest = new IntPoint(m_polyNodes.ChildCount - 1, k); + } + } + + //------------------------------------------------------------------------------ + + public void AddPaths(Paths paths, JoinType joinType, EndType endType) + { + foreach (Path p in paths) + AddPath(p, joinType, endType); + } + + //------------------------------------------------------------------------------ + + private void FixOrientations() + { + //fixup orientations of all closed paths if the orientation of the + //closed path with the lowermost vertex is wrong ... + if (m_lowest.X >= 0 && + !Clipper.Orientation(m_polyNodes.Childs[(int)m_lowest.X].m_polygon)) + { + for (int i = 0; i < m_polyNodes.ChildCount; i++) + { + PolyNode node = m_polyNodes.Childs[i]; + if (node.m_endtype == EndType.etClosedPolygon || + (node.m_endtype == EndType.etClosedLine && + Clipper.Orientation(node.m_polygon))) + node.m_polygon.Reverse(); + } + } + else + { + for (int i = 0; i < m_polyNodes.ChildCount; i++) + { + PolyNode node = m_polyNodes.Childs[i]; + if (node.m_endtype == EndType.etClosedLine && + !Clipper.Orientation(node.m_polygon)) + node.m_polygon.Reverse(); + } + } + } + + //------------------------------------------------------------------------------ + + internal static DoublePoint GetUnitNormal(IntPoint pt1, IntPoint pt2) + { + double dx = (pt2.X - pt1.X); + double dy = (pt2.Y - pt1.Y); + if ((dx == 0) && (dy == 0)) return new DoublePoint(); + + double f = 1 * 1.0 / Math.Sqrt(dx * dx + dy * dy); + dx *= f; + dy *= f; + + return new DoublePoint(dy, -dx); + } + + //------------------------------------------------------------------------------ + + private void DoOffset(double delta) + { + m_destPolys = new Paths(); + m_delta = delta; + + //if Zero offset, just copy any CLOSED polygons to m_p and return ... + if (ClipperBase.near_zero(delta)) + { + m_destPolys.Capacity = m_polyNodes.ChildCount; + for (int i = 0; i < m_polyNodes.ChildCount; i++) + { + PolyNode node = m_polyNodes.Childs[i]; + if (node.m_endtype == EndType.etClosedPolygon) + m_destPolys.Add(node.m_polygon); + } + return; + } + + //see offset_triginometry3.svg in the documentation folder ... + if (MiterLimit > 2) m_miterLim = 2 / (MiterLimit * MiterLimit); + else m_miterLim = 0.5; + + double y; + if (ArcTolerance <= 0.0) + y = def_arc_tolerance; + else if (ArcTolerance > Math.Abs(delta) * def_arc_tolerance) + y = Math.Abs(delta) * def_arc_tolerance; + else + y = ArcTolerance; + //see offset_triginometry2.svg in the documentation folder ... + double steps = Math.PI / Math.Acos(1 - y / Math.Abs(delta)); + m_sin = Math.Sin(two_pi / steps); + m_cos = Math.Cos(two_pi / steps); + m_StepsPerRad = steps / two_pi; + if (delta < 0.0) m_sin = -m_sin; + + m_destPolys.Capacity = m_polyNodes.ChildCount * 2; + for (int i = 0; i < m_polyNodes.ChildCount; i++) + { + PolyNode node = m_polyNodes.Childs[i]; + m_srcPoly = node.m_polygon; + + int len = m_srcPoly.Count; + + if (len == 0 || (delta <= 0 && (len < 3 || + node.m_endtype != EndType.etClosedPolygon))) + continue; + + m_destPoly = new Path(); + + if (len == 1) + { + if (node.m_jointype == JoinType.jtRound) + { + double X = 1.0, Y = 0.0; + for (int j = 1; j <= steps; j++) + { + m_destPoly.Add(new IntPoint( + Round(m_srcPoly[0].X + X * delta), + Round(m_srcPoly[0].Y + Y * delta))); + double X2 = X; + X = X * m_cos - m_sin * Y; + Y = X2 * m_sin + Y * m_cos; + } + } + else + { + double X = -1.0, Y = -1.0; + for (int j = 0; j < 4; ++j) + { + m_destPoly.Add(new IntPoint( + Round(m_srcPoly[0].X + X * delta), + Round(m_srcPoly[0].Y + Y * delta))); + if (X < 0) X = 1; + else if (Y < 0) Y = 1; + else X = -1; + } + } + m_destPolys.Add(m_destPoly); + continue; + } + + //build m_normals ... + m_normals.Clear(); + m_normals.Capacity = len; + for (int j = 0; j < len - 1; j++) + m_normals.Add(GetUnitNormal(m_srcPoly[j], m_srcPoly[j + 1])); + if (node.m_endtype == EndType.etClosedLine || + node.m_endtype == EndType.etClosedPolygon) + m_normals.Add(GetUnitNormal(m_srcPoly[len - 1], m_srcPoly[0])); + else + m_normals.Add(new DoublePoint(m_normals[len - 2])); + + if (node.m_endtype == EndType.etClosedPolygon) + { + int k = len - 1; + for (int j = 0; j < len; j++) + OffsetPoint(j, ref k, node.m_jointype); + m_destPolys.Add(m_destPoly); + } + else if (node.m_endtype == EndType.etClosedLine) + { + int k = len - 1; + for (int j = 0; j < len; j++) + OffsetPoint(j, ref k, node.m_jointype); + m_destPolys.Add(m_destPoly); + m_destPoly = new Path(); + //re-build m_normals ... + DoublePoint n = m_normals[len - 1]; + for (int j = len - 1; j > 0; j--) + m_normals[j] = new DoublePoint(-m_normals[j - 1].X, -m_normals[j - 1].Y); + m_normals[0] = new DoublePoint(-n.X, -n.Y); + k = 0; + for (int j = len - 1; j >= 0; j--) + OffsetPoint(j, ref k, node.m_jointype); + m_destPolys.Add(m_destPoly); + } + else + { + int k = 0; + for (int j = 1; j < len - 1; ++j) + OffsetPoint(j, ref k, node.m_jointype); + + IntPoint pt1; + if (node.m_endtype == EndType.etOpenButt) + { + int j = len - 1; + pt1 = new IntPoint((cInt)Round(m_srcPoly[j].X + m_normals[j].X * + delta), (cInt)Round(m_srcPoly[j].Y + m_normals[j].Y * delta)); + m_destPoly.Add(pt1); + pt1 = new IntPoint((cInt)Round(m_srcPoly[j].X - m_normals[j].X * + delta), (cInt)Round(m_srcPoly[j].Y - m_normals[j].Y * delta)); + m_destPoly.Add(pt1); + } + else + { + int j = len - 1; + k = len - 2; + m_sinA = 0; + m_normals[j] = new DoublePoint(-m_normals[j].X, -m_normals[j].Y); + if (node.m_endtype == EndType.etOpenSquare) + DoSquare(j, k); + else + DoRound(j, k); + } + + //re-build m_normals ... + for (int j = len - 1; j > 0; j--) + m_normals[j] = new DoublePoint(-m_normals[j - 1].X, -m_normals[j - 1].Y); + + m_normals[0] = new DoublePoint(-m_normals[1].X, -m_normals[1].Y); + + k = len - 1; + for (int j = k - 1; j > 0; --j) + OffsetPoint(j, ref k, node.m_jointype); + + if (node.m_endtype == EndType.etOpenButt) + { + pt1 = new IntPoint((cInt)Round(m_srcPoly[0].X - m_normals[0].X * delta), + (cInt)Round(m_srcPoly[0].Y - m_normals[0].Y * delta)); + m_destPoly.Add(pt1); + pt1 = new IntPoint((cInt)Round(m_srcPoly[0].X + m_normals[0].X * delta), + (cInt)Round(m_srcPoly[0].Y + m_normals[0].Y * delta)); + m_destPoly.Add(pt1); + } + else + { + k = 1; + m_sinA = 0; + if (node.m_endtype == EndType.etOpenSquare) + DoSquare(0, 1); + else + DoRound(0, 1); + } + m_destPolys.Add(m_destPoly); + } + } + } + + //------------------------------------------------------------------------------ + + public void Execute(ref Paths solution, double delta) + { + solution.Clear(); + FixOrientations(); + DoOffset(delta); + //now clean up 'corners' ... + Clipper clpr = new Clipper(); + clpr.AddPaths(m_destPolys, PolyType.ptSubject, true); + if (delta > 0) + { + clpr.Execute(ClipType.ctUnion, solution, + PolyFillType.pftPositive, PolyFillType.pftPositive); + } + else + { + IntRect r = Clipper.GetBounds(m_destPolys); + Path outer = new Path(4); + + outer.Add(new IntPoint(r.left - 10, r.bottom + 10)); + outer.Add(new IntPoint(r.right + 10, r.bottom + 10)); + outer.Add(new IntPoint(r.right + 10, r.top - 10)); + outer.Add(new IntPoint(r.left - 10, r.top - 10)); + + clpr.AddPath(outer, PolyType.ptSubject, true); + clpr.ReverseSolution = true; + clpr.Execute(ClipType.ctUnion, solution, PolyFillType.pftNegative, PolyFillType.pftNegative); + if (solution.Count > 0) solution.RemoveAt(0); + } + } + + //------------------------------------------------------------------------------ + + public void Execute(ref PolyTree solution, double delta) + { + solution.Clear(); + FixOrientations(); + DoOffset(delta); + + //now clean up 'corners' ... + Clipper clpr = new Clipper(); + clpr.AddPaths(m_destPolys, PolyType.ptSubject, true); + if (delta > 0) + { + clpr.Execute(ClipType.ctUnion, solution, + PolyFillType.pftPositive, PolyFillType.pftPositive); + } + else + { + IntRect r = Clipper.GetBounds(m_destPolys); + Path outer = new Path(4); + + outer.Add(new IntPoint(r.left - 10, r.bottom + 10)); + outer.Add(new IntPoint(r.right + 10, r.bottom + 10)); + outer.Add(new IntPoint(r.right + 10, r.top - 10)); + outer.Add(new IntPoint(r.left - 10, r.top - 10)); + + clpr.AddPath(outer, PolyType.ptSubject, true); + clpr.ReverseSolution = true; + clpr.Execute(ClipType.ctUnion, solution, PolyFillType.pftNegative, PolyFillType.pftNegative); + //remove the outer PolyNode rectangle ... + if (solution.ChildCount == 1 && solution.Childs[0].ChildCount > 0) + { + PolyNode outerNode = solution.Childs[0]; + solution.Childs.Capacity = outerNode.ChildCount; + solution.Childs[0] = outerNode.Childs[0]; + solution.Childs[0].m_Parent = solution; + for (int i = 1; i < outerNode.ChildCount; i++) + solution.AddChild(outerNode.Childs[i]); + } + else + solution.Clear(); + } + } + + //------------------------------------------------------------------------------ + + void OffsetPoint(int j, ref int k, JoinType jointype) + { + //cross product ... + m_sinA = (m_normals[k].X * m_normals[j].Y - m_normals[j].X * m_normals[k].Y); + + if (Math.Abs(m_sinA * m_delta) < 1.0) + { + //dot product ... + double cosA = (m_normals[k].X * m_normals[j].X + m_normals[j].Y * m_normals[k].Y); + if (cosA > 0) // angle ==> 0 degrees + { + m_destPoly.Add(new IntPoint(Round(m_srcPoly[j].X + m_normals[k].X * m_delta), + Round(m_srcPoly[j].Y + m_normals[k].Y * m_delta))); + return; + } + //else angle ==> 180 degrees + } + else if (m_sinA > 1.0) m_sinA = 1.0; + else if (m_sinA < -1.0) m_sinA = -1.0; + + if (m_sinA * m_delta < 0) + { + m_destPoly.Add(new IntPoint(Round(m_srcPoly[j].X + m_normals[k].X * m_delta), + Round(m_srcPoly[j].Y + m_normals[k].Y * m_delta))); + m_destPoly.Add(m_srcPoly[j]); + m_destPoly.Add(new IntPoint(Round(m_srcPoly[j].X + m_normals[j].X * m_delta), + Round(m_srcPoly[j].Y + m_normals[j].Y * m_delta))); + } + else + switch (jointype) + { + case JoinType.jtMiter: + { + double r = 1 + (m_normals[j].X * m_normals[k].X + + m_normals[j].Y * m_normals[k].Y); + if (r >= m_miterLim) DoMiter(j, k, r); else DoSquare(j, k); + break; + } + case JoinType.jtSquare: DoSquare(j, k); break; + case JoinType.jtRound: DoRound(j, k); break; + } + k = j; + } + + //------------------------------------------------------------------------------ + + internal void DoSquare(int j, int k) + { + double dx = Math.Tan(Math.Atan2(m_sinA, + m_normals[k].X * m_normals[j].X + m_normals[k].Y * m_normals[j].Y) / 4); + m_destPoly.Add(new IntPoint( + Round(m_srcPoly[j].X + m_delta * (m_normals[k].X - m_normals[k].Y * dx)), + Round(m_srcPoly[j].Y + m_delta * (m_normals[k].Y + m_normals[k].X * dx)))); + m_destPoly.Add(new IntPoint( + Round(m_srcPoly[j].X + m_delta * (m_normals[j].X + m_normals[j].Y * dx)), + Round(m_srcPoly[j].Y + m_delta * (m_normals[j].Y - m_normals[j].X * dx)))); + } + + //------------------------------------------------------------------------------ + + internal void DoMiter(int j, int k, double r) + { + double q = m_delta / r; + m_destPoly.Add(new IntPoint(Round(m_srcPoly[j].X + (m_normals[k].X + m_normals[j].X) * q), + Round(m_srcPoly[j].Y + (m_normals[k].Y + m_normals[j].Y) * q))); + } + + //------------------------------------------------------------------------------ + + internal void DoRound(int j, int k) + { + double a = Math.Atan2(m_sinA, + m_normals[k].X * m_normals[j].X + m_normals[k].Y * m_normals[j].Y); + int steps = Math.Max((int)Round(m_StepsPerRad * Math.Abs(a)), 1); + + double X = m_normals[k].X, Y = m_normals[k].Y, X2; + for (int i = 0; i < steps; ++i) + { + m_destPoly.Add(new IntPoint( + Round(m_srcPoly[j].X + X * m_delta), + Round(m_srcPoly[j].Y + Y * m_delta))); + X2 = X; + X = X * m_cos - m_sin * Y; + Y = X2 * m_sin + Y * m_cos; + } + m_destPoly.Add(new IntPoint( + Round(m_srcPoly[j].X + m_normals[j].X * m_delta), + Round(m_srcPoly[j].Y + m_normals[j].Y * m_delta))); + } + + //------------------------------------------------------------------------------ + } + + class ClipperException : Exception + { + public ClipperException(string description) : base(description) {} + } + //------------------------------------------------------------------------------ +} //end ClipperLib namespace diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Clipper.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Clipper.cs.meta new file mode 100644 index 0000000..3c9384e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Clipper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc4c383146400014d810176d3a637934 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/ConformingSpline.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/ConformingSpline.cs new file mode 100644 index 0000000..acfda7a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/ConformingSpline.cs @@ -0,0 +1,58 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.U2D; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +// Demo Script Usage: +// When you want multiple SpriteShapes to share a common Spline, +// attach this script to the secondary objects you would like to +// copy the Spline and set the ParentObject to the original object +// you are copying from. + +[ExecuteInEditMode] +public class ConformingSpline : MonoBehaviour +{ + + public GameObject m_ParentObject; + private int hashCode; + + // Use this for initialization + void Start() + { + + } + + // Update is called once per frame + void Update() + { + if (m_ParentObject != null) + { + hashCode = CopySpline(m_ParentObject, gameObject, hashCode); + } + } + + private static int CopySpline(GameObject src, GameObject dst, int hashCode) + { +#if UNITY_EDITOR + var parentSpriteShapeController = src.GetComponent(); + var mirrorSpriteShapeController = dst.GetComponent(); + + if (parentSpriteShapeController != null && mirrorSpriteShapeController != null && parentSpriteShapeController.spline.GetHashCode() != hashCode) + { + SerializedObject srcController = new SerializedObject(parentSpriteShapeController); + SerializedObject dstController = new SerializedObject(mirrorSpriteShapeController); + SerializedProperty srcSpline = srcController.FindProperty("m_Spline"); + dstController.CopyFromSerializedProperty(srcSpline); + dstController.ApplyModifiedProperties(); + EditorUtility.SetDirty(mirrorSpriteShapeController); + return parentSpriteShapeController.spline.GetHashCode(); + } +#endif + return hashCode; + } + +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/ConformingSpline.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/ConformingSpline.cs.meta new file mode 100644 index 0000000..133519a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/ConformingSpline.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: db6f6067a1e6dd34ca4e2c4b7145e79b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GenerateSpriteShapes.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GenerateSpriteShapes.cs new file mode 100644 index 0000000..89229d6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GenerateSpriteShapes.cs @@ -0,0 +1,43 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.U2D; + +// Please add this Component to Camera or some top level object on each loadable scene. +public class GenerateSpriteShapes : MonoBehaviour +{ + + // Once all SpriteShapes are rendered, remove this Component if On or remove it from elsewhere. + public bool destroyOnCompletion = true; + + void OnGUI() + { + + // Loop all invisible SpriteShapeRenderers and generate geometry. + SpriteShapeRenderer[] spriteShapeRenderers = (SpriteShapeRenderer[]) GameObject.FindObjectsOfType (typeof(SpriteShapeRenderer)); + CommandBuffer rc = new CommandBuffer(); + rc.GetTemporaryRT(0, 256, 256, 0); + rc.SetRenderTarget(0); + foreach (var spriteShapeRenderer in spriteShapeRenderers) + { + var spriteShapeController = spriteShapeRenderer.gameObject.GetComponent(); + if (spriteShapeRenderer != null && spriteShapeController != null) + { + if (!spriteShapeRenderer.isVisible) + { + spriteShapeController.BakeMesh(); + rc.DrawRenderer(spriteShapeRenderer, spriteShapeRenderer.sharedMaterial); + // Debug.Log("generating shape for " + spriteShapeRenderer.gameObject.name); + } + } + } + rc.ReleaseTemporaryRT(0); + Graphics.ExecuteCommandBuffer(rc); + + // SpriteShape Renderers are generated. This component is no longer needed. Delete this [or] remove this Component from elsewhere. + if (destroyOnCompletion) + Destroy(this); + + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GenerateSpriteShapes.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GenerateSpriteShapes.cs.meta new file mode 100644 index 0000000..7554a10 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GenerateSpriteShapes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fccb8cf469e193a4ea6c24362f061c12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GeometryCollider.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GeometryCollider.cs new file mode 100644 index 0000000..ca54090 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GeometryCollider.cs @@ -0,0 +1,171 @@ +using System.Collections; +using System.Collections.Generic; +using Unity.Collections; +using UnityEngine; +using UnityEngine.Experimental.U2D; +using UnityEngine.U2D; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +[ExecuteAlways] +public class GeometryCollider : MonoBehaviour +{ + [SerializeField] + bool m_UpdateCollider = false; + + int m_HashCode = 0; + + void Start() + { + + } + + // Update is called once per frame + void Update() + { + if (m_UpdateCollider) + Bake(gameObject, false); + } + + static public void Bake(GameObject go, bool forced) + { + var spriteShapeController = go.GetComponent(); + var spriteShapeRenderer = go.GetComponent(); + var polyCollider = go.GetComponent(); + var geometryCollider = go.GetComponent(); + + if (spriteShapeController != null && polyCollider != null) + { + var spline = spriteShapeController.spline; + if (geometryCollider != null) + { + int splineHashCode = spline.GetHashCode(); + if (splineHashCode == geometryCollider.m_HashCode && !forced) + return; + geometryCollider.m_HashCode = splineHashCode; + } + NativeArray indexArray; + NativeSlice posArray; + NativeSlice uv0Array; + NativeArray geomArray; + spriteShapeRenderer.GetChannels(65536, out indexArray, out posArray, out uv0Array); + geomArray = spriteShapeRenderer.GetSegments(spline.GetPointCount() * 8); + + NativeArray indexArrayLocal = new NativeArray(indexArray.Length, Allocator.Temp); + + List points = new List(); + int indexCount = 0, vertexCount = 0, counter = 0; + for (int u = 0; u < geomArray.Length; ++u) + { + if (geomArray[u].indexCount > 0) + { + for (int i = 0; i < geomArray[u].indexCount; ++i) + { + indexArrayLocal[counter] = (ushort)(indexArray[counter] + vertexCount); + counter++; + } + vertexCount += geomArray[u].vertexCount; + indexCount += geomArray[u].indexCount; + } + } + Debug.Log(go.name + " : " + counter); + OuterEdges(polyCollider, indexArrayLocal, posArray, indexCount); + } + } + + // Generate the outer edges from the Renderer mesh. Based on code from www.h3xed.com + static void OuterEdges(PolygonCollider2D polygonCollider, NativeArray triangles, NativeSlice vertices, int triangleCount) + { + // Get just the outer edges from the mesh's triangles (ignore or remove any shared edges) + Dictionary> edges = new Dictionary>(); + for (int i = 0; i < triangleCount; i += 3) + { + for (int e = 0; e < 3; e++) + { + int vert1 = triangles[i + e]; + int vert2 = triangles[i + e + 1 > i + 2 ? i : i + e + 1]; + string edge = Mathf.Min(vert1, vert2) + ":" + Mathf.Max(vert1, vert2); + if (edges.ContainsKey(edge)) + { + edges.Remove(edge); + } + else + { + edges.Add(edge, new KeyValuePair(vert1, vert2)); + } + } + } + + // Create edge lookup (Key is first vertex, Value is second vertex, of each edge) + Dictionary lookup = new Dictionary(); + foreach (KeyValuePair edge in edges.Values) + { + if (lookup.ContainsKey(edge.Key) == false) + { + lookup.Add(edge.Key, edge.Value); + } + } + + // Create empty polygon collider + polygonCollider.pathCount = 0; + + // Loop through edge vertices in order + int startVert = 0; + int nextVert = startVert; + int highestVert = startVert; + List colliderPath = new List(); + while (true) + { + + // Add vertex to collider path + colliderPath.Add(vertices[nextVert]); + + // Get next vertex + nextVert = lookup[nextVert]; + + // Store highest vertex (to know what shape to move to next) + if (nextVert > highestVert) + { + highestVert = nextVert; + } + + // Shape complete + if (nextVert == startVert) + { + + // Add path to polygon collider + polygonCollider.pathCount++; + polygonCollider.SetPath(polygonCollider.pathCount - 1, colliderPath.ToArray()); + colliderPath.Clear(); + + // Go to next shape if one exists + if (lookup.ContainsKey(highestVert + 1)) + { + + // Set starting and next vertices + startVert = highestVert + 1; + nextVert = startVert; + + // Continue to next loop + continue; + } + + // No more verts + break; + } + } + } + +#if UNITY_EDITOR + + [MenuItem("SpriteShape/Generate Geometry Collider", false, 358)] + public static void BakeGeometryCollider() + { + if (Selection.activeGameObject != null) + GeometryCollider.Bake(Selection.activeGameObject, true); + } + +#endif +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GeometryCollider.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GeometryCollider.cs.meta new file mode 100644 index 0000000..075e328 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/GeometryCollider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e0ecd6fe4dd55d640bd7ef3235e0e425 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/LegacyCollider.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/LegacyCollider.cs new file mode 100644 index 0000000..dae8235 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/LegacyCollider.cs @@ -0,0 +1,159 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.U2D; +using ExtrasClipperLib; + +#if UNITY_EDITOR + using UnityEditor; +#endif + +public enum ColliderCornerType +{ + Square, + Round, + Sharp +} + +[ExecuteAlways] +public class LegacyCollider : MonoBehaviour +{ + [SerializeField] + ColliderCornerType m_ColliderCornerType = ColliderCornerType.Square; + [SerializeField] + float m_ColliderOffset = 1.0f; + [SerializeField] + bool m_UpdateCollider = false; + + const float s_ClipperScale = 100000.0f; + int m_HashCode = 0; + + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + if (m_UpdateCollider) + Bake(gameObject, false); + } + + static void SampleCurve(float colliderDetail, Vector3 startPoint, Vector3 startTangent, Vector3 endPoint, Vector3 endTangent, ref List path) + { + + if (startTangent.sqrMagnitude > 0f || endTangent.sqrMagnitude > 0f) + { + for (int j = 0; j <= colliderDetail; ++j) + { + float t = j / (float)colliderDetail; + Vector3 newPoint = BezierUtility.BezierPoint(startPoint, startTangent + startPoint, endTangent + endPoint, endPoint, t) * s_ClipperScale; + + path.Add(new IntPoint((System.Int64)newPoint.x, (System.Int64)newPoint.y)); + } + } + else + { + Vector3 newPoint = startPoint * s_ClipperScale; + path.Add(new IntPoint((System.Int64)newPoint.x, (System.Int64)newPoint.y)); + + newPoint = endPoint * s_ClipperScale; + path.Add(new IntPoint((System.Int64)newPoint.x, (System.Int64)newPoint.y)); + } + } + + public static void Bake(GameObject go, bool forced) + { + var sc = go.GetComponent(); + var lc = go.GetComponent(); + + if (sc != null) + { + List path = new List(); + int splinePointCount = sc.spline.GetPointCount(); + int pathPointCount = splinePointCount; + + ColliderCornerType cct = ColliderCornerType.Square; + float co = 1.0f; + + if (lc != null) + { + int hashCode = sc.spline.GetHashCode() + lc.m_ColliderCornerType.GetHashCode() + lc.m_ColliderOffset.GetHashCode(); + if (lc.m_HashCode == hashCode && !forced) + return; + + lc.m_HashCode = hashCode; + cct = lc.m_ColliderCornerType; + co = lc.m_ColliderOffset; + } + + if (sc.spline.isOpenEnded) + pathPointCount--; + + for (int i = 0; i < pathPointCount; ++i) + { + int nextIndex = SplineUtility.NextIndex(i, splinePointCount); + SampleCurve(sc.colliderDetail, sc.spline.GetPosition(i), sc.spline.GetRightTangent(i), sc.spline.GetPosition(nextIndex), sc.spline.GetLeftTangent(nextIndex), ref path); + } + + if (co != 0f) + { + List> solution = new List>(); + ClipperOffset clipOffset = new ClipperOffset(); + + EndType endType = EndType.etClosedPolygon; + + if (sc.spline.isOpenEnded) + { + endType = EndType.etOpenSquare; + + if (cct == ColliderCornerType.Round) + endType = EndType.etOpenRound; + } + + clipOffset.ArcTolerance = 200f / sc.colliderDetail; + clipOffset.AddPath(path, (ExtrasClipperLib.JoinType)cct, endType); + clipOffset.Execute(ref solution, s_ClipperScale * co); + + if (solution.Count > 0) + path = solution[0]; + } + + List pathPoints = new List(path.Count); + for (int i = 0; i < path.Count; ++i) + { + IntPoint ip = path[i]; + pathPoints.Add(new Vector2(ip.X / s_ClipperScale, ip.Y / s_ClipperScale)); + } + + var pc = go.GetComponent(); + if (pc) + { + pc.pathCount = 0; + pc.SetPath(0, pathPoints.ToArray()); + } + + var ec = go.GetComponent(); + if (ec) + { + if (co > 0f || co < 0f && !sc.spline.isOpenEnded) + pathPoints.Add(pathPoints[0]); + ec.points = pathPoints.ToArray(); + } + } + } + +#if UNITY_EDITOR + + [MenuItem("SpriteShape/Generate Legacy Collider", false, 358)] + public static void BakeLegacyCollider() + { + if (Selection.activeGameObject != null) + LegacyCollider.Bake(Selection.activeGameObject, true); + } + +#endif +} + diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/LegacyCollider.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/LegacyCollider.cs.meta new file mode 100644 index 0000000..dd6fe01 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/LegacyCollider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a8e65bafadf93f41a17da25163f2f51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/SimpleDraw.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/SimpleDraw.cs new file mode 100644 index 0000000..ca04c87 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/SimpleDraw.cs @@ -0,0 +1,59 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.U2D; + +// Dynamic modification of spline to follow the path of mouse movement. +// This script is just a simplified demo to demonstrate the idea. + +public class SimpleDraw : MonoBehaviour +{ + public float minimumDistance = 1.0f; + private Vector3 lastPosition; + + // Use this for initialization + void Start() + { + + } + + private void Smoothen(SpriteShapeController sc, int pointIndex) + { + Vector3 position = sc.spline.GetPosition(pointIndex); + Vector3 positionNext = sc.spline.GetPosition(SplineUtility.NextIndex(pointIndex, sc.spline.GetPointCount())); + Vector3 positionPrev = sc.spline.GetPosition(SplineUtility.PreviousIndex(pointIndex, sc.spline.GetPointCount())); + Vector3 forward = gameObject.transform.forward; + + float scale = Mathf.Min((positionNext - position).magnitude, (positionPrev - position).magnitude) * 0.33f; + + Vector3 leftTangent = (positionPrev - position).normalized * scale; + Vector3 rightTangent = (positionNext - position).normalized * scale; + + sc.spline.SetTangentMode(pointIndex, ShapeTangentMode.Continuous); + SplineUtility.CalculateTangents(position, positionPrev, positionNext, forward, scale, out rightTangent, out leftTangent); + + sc.spline.SetLeftTangent(pointIndex, leftTangent); + sc.spline.SetRightTangent(pointIndex, rightTangent); + } + + // Update is called once per frame + void Update() + { + var mp = Input.mousePosition; + mp.z = 10.0f; + mp = Camera.main.ScreenToWorldPoint(mp); + var dt = Mathf.Abs((mp - lastPosition).magnitude); + var md = (minimumDistance > 1.0f) ? minimumDistance : 1.0f; + if (Input.GetMouseButton(0) && dt > md) + { + var spriteShapeController = gameObject.GetComponent(); + var spline = spriteShapeController.spline; + spline.InsertPointAt(spline.GetPointCount(), mp); + var newPointIndex = spline.GetPointCount() - 1; + Smoothen(spriteShapeController, newPointIndex - 1); + + spline.SetHeight(newPointIndex, UnityEngine.Random.Range(0.1f, 2.0f)); + lastPosition = mp; + } + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/SimpleDraw.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/SimpleDraw.cs.meta new file mode 100644 index 0000000..8eeecb8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/SimpleDraw.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 922bb1bbfeaeb9a4c9204b7d0bc3d8c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Sprinkler.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Sprinkler.cs new file mode 100644 index 0000000..d791415 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Sprinkler.cs @@ -0,0 +1,53 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.U2D; + +public class Sprinkler : MonoBehaviour +{ + + public GameObject m_Prefab; + public float m_RandomFactor = 10.0f; + public bool m_UseNormals = false; + + float Angle(Vector3 a, Vector3 b) + { + float dot = Vector3.Dot(a, b); + float det = (a.x * b.y) - (b.x * a.y); + return Mathf.Atan2(det, dot) * Mathf.Rad2Deg; + } + + // Use this for initialization. Plant the Prefabs on Startup + void Start () + { + SpriteShapeController ssc = GetComponent(); + Spline spl = ssc.spline; + + for (int i = 1; i < spl.GetPointCount() - 1; ++i) + { + if (Random.Range(0, 100) > (100 - m_RandomFactor) ) + { + var go = GameObject.Instantiate(m_Prefab); + go.transform.position = spl.GetPosition(i); + + if (m_UseNormals) + { + Vector3 lt = Vector3.Normalize(spl.GetPosition(i - 1) - spl.GetPosition(i)); + Vector3 rt = Vector3.Normalize(spl.GetPosition(i + 1) - spl.GetPosition(i)); + float a = Angle(Vector3.up, lt); + float b = Angle(lt, rt); + float c = a + (b * 0.5f); + if (b > 0) + c = (180 + c); + go.transform.rotation = Quaternion.Euler(0, 0, c); + } + } + } + } + + // Update is called once per frame + void Update () + { + + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Sprinkler.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Sprinkler.cs.meta new file mode 100644 index 0000000..023e9c9 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Scripts/Sprinkler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c3eb1d33a6f9114bb5b51099948d2ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles.meta new file mode 100644 index 0000000..6966e1c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa08311cde7ea4c6183e9807841a6484 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Branch.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Branch.asset new file mode 100644 index 0000000..c4f0c2d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Branch.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Branch + m_EditorClassIdentifier: + m_Angles: + - m_Start: -180 + m_End: 180 + m_Order: 0 + m_Sprites: + - {fileID: 21300000, guid: e205c552afc6743cb9c52e5ff6504efc, type: 3} + m_FillTexture: {fileID: 0} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Branch.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Branch.asset.meta new file mode 100644 index 0000000..a502484 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Branch.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67e0d7ab8806749199e5b764729aa46a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Castle Wall.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Castle Wall.asset new file mode 100644 index 0000000..df92ba1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Castle Wall.asset @@ -0,0 +1,64 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Castle Wall + m_EditorClassIdentifier: + m_Angles: + - m_Start: -64 + m_End: 61 + m_Order: 7 + m_Sprites: + - {fileID: 21300002, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - {fileID: 21300012, guid: a8321f6fae34f034787010a903e29648, type: 3} + - m_Start: 61 + m_End: 127 + m_Order: 4 + m_Sprites: + - {fileID: 21300014, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - m_Start: 127 + m_End: 233 + m_Order: 8 + m_Sprites: + - {fileID: 21300010, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - m_Start: -127 + m_End: -64 + m_Order: 3 + m_Sprites: + - {fileID: 21300006, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + m_FillTexture: {fileID: 2800000, guid: 7d8cda48c729c46329cd9d3c69a3a4e6, type: 3} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 21300000, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - m_CornerType: 1 + m_Sprites: + - {fileID: 21300004, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - m_CornerType: 2 + m_Sprites: + - {fileID: 21300012, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - m_CornerType: 3 + m_Sprites: + - {fileID: 21300008, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 21300012, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + - m_CornerType: 7 + m_Sprites: + - {fileID: 21300008, guid: 3bc0f8978d0114d568eb440fca26e64b, type: 3} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Castle Wall.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Castle Wall.asset.meta new file mode 100644 index 0000000..a31245d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Castle Wall.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a710fe91ca336478e999261a86254e9f +timeCreated: 1507533165 +licenseType: Pro +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple1.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple1.asset new file mode 100644 index 0000000..dc94871 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple1.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Simple1 + m_EditorClassIdentifier: + m_Angles: + - m_Start: -180 + m_End: 180 + m_Order: 0 + m_Sprites: + - {fileID: 21300000, guid: e74b518a65bc45f4cace9a2fef6af29d, type: 3} + m_FillTexture: {fileID: 0} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple1.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple1.asset.meta new file mode 100644 index 0000000..4fb3854 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 541c57e7ddb8adc46b7ca9573818a619 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple2.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple2.asset new file mode 100644 index 0000000..844c485 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple2.asset @@ -0,0 +1,49 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Simple2 + m_EditorClassIdentifier: + m_Angles: + - m_Start: -180 + m_End: 180 + m_Order: 0 + m_Sprites: + - {fileID: 21300000, guid: 418ab5c27d3054eb89959d9c715e00c9, type: 3} + - {fileID: 21300000, guid: e74b518a65bc45f4cace9a2fef6af29d, type: 3} + m_FillTexture: {fileID: 0} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple2.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple2.asset.meta new file mode 100644 index 0000000..9fa1d51 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e03579ec9d1b6c54ea364bd8ee0bcfd8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple3.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple3.asset new file mode 100644 index 0000000..d33b86e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple3.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Simple3 + m_EditorClassIdentifier: + m_Angles: + - m_Start: -180 + m_End: 180 + m_Order: 0 + m_Sprites: + - {fileID: 21300000, guid: c6dabd295b8ab514fa47b5d4e2b0266e, type: 3} + m_FillTexture: {fileID: 0} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple3.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple3.asset.meta new file mode 100644 index 0000000..f386197 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Simple3.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 19b9cf308de41834c9968d12bec673b1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Tree A.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Tree A.asset new file mode 100644 index 0000000..123e0fc --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Tree A.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Tree A + m_EditorClassIdentifier: + m_Angles: [] + m_FillTexture: {fileID: 2800000, guid: a94adaf94669646788de8f639270804a, type: 3} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Tree A.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Tree A.asset.meta new file mode 100644 index 0000000..90f7ad5 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprite Shape Profiles/Tree A.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e3fa9c7ff3ad4112a30689e933384ed +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites.meta new file mode 100644 index 0000000..7c05943 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5e7111d750837fe4e9af7b360e7d667c +folderAsset: yes +timeCreated: 1475184630 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/CastleWall.psd b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/CastleWall.psd new file mode 100644 index 0000000..002de35 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/CastleWall.psd differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/CastleWall.psd.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/CastleWall.psd.meta new file mode 100644 index 0000000..271a056 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/CastleWall.psd.meta @@ -0,0 +1,479 @@ +fileFormatVersion: 2 +guid: 3bc0f8978d0114d568eb440fca26e64b +TextureImporter: + internalIDToNameTable: + - first: + 213: 21300000 + second: CWall_TopLeft + - first: + 213: 21300002 + second: CWall_Top + - first: + 213: 21300004 + second: CWall_TopRight + - first: + 213: 21300006 + second: CWall_Right + - first: + 213: 21300008 + second: CWall_BottomRight + - first: + 213: 21300010 + second: CWall_Bottom + - first: + 213: 21300012 + second: CWall_BottomLeft + - first: + 213: 21300014 + second: CWall_Left + - first: + 213: 21300016 + second: CastleWall_0 + - first: + 213: 21300018 + second: CastleBlock01 + - first: + 213: 21300020 + second: CastleWall_Stand + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 64 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: CWall_TopLeft + rect: + serializedVersion: 2 + x: 0 + y: 447 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + physicsShape: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: 85bb4a12799104aea82ffd023631f5eb + internalID: 21300000 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_Top + rect: + serializedVersion: 2 + x: 65 + y: 447 + width: 191 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -95.5, y: 32} + - {x: -95.5, y: -32} + - {x: 95.5, y: -32} + - {x: 95.5, y: 32} + physicsShape: + - - {x: -95.5, y: 32} + - {x: -95.5, y: -32} + - {x: 95.5, y: -32} + - {x: 95.5, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: c0d4dbb40862b42719bed0178fc33863 + internalID: 21300002 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_TopRight + rect: + serializedVersion: 2 + x: 256 + y: 447 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + physicsShape: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: e691435be8e234c8ba6bbd44cf93bf9f + internalID: 21300004 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_Right + rect: + serializedVersion: 2 + x: 193 + y: 383 + width: 192 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + physicsShape: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: e8d31f3d729f846cf901c9b695c0a286 + internalID: 21300006 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_BottomRight + rect: + serializedVersion: 2 + x: 385 + y: 447 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + physicsShape: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: b5f6cd57c80af465b9d7279b93edc0bd + internalID: 21300008 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_Bottom + rect: + serializedVersion: 2 + x: 1 + y: 319 + width: 192 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + physicsShape: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: 940402297287e479a98329d757431010 + internalID: 21300010 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_BottomLeft + rect: + serializedVersion: 2 + x: 321 + y: 447 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + physicsShape: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: 5196786b599a246edb4ade9ef6e46b5f + internalID: 21300012 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_Left + rect: + serializedVersion: 2 + x: 1 + y: 383 + width: 192 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + physicsShape: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: 6f193a5bf4ad94d5280067f257f134f8 + internalID: 21300014 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CastleBlock01 + rect: + serializedVersion: 2 + x: 0 + y: 127 + width: 257 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 65, y: 0, z: 64, w: 0} + outline: + - - {x: -66.5, y: 64} + - {x: -128.5, y: 2} + - {x: -128.5, y: -64} + - {x: 67.5, y: -64} + - {x: 128.5, y: -6} + - {x: 128.5, y: 64} + physicsShape: + - - {x: -67.5, y: 64} + - {x: -128.5, y: 2} + - {x: -128.5, y: -64} + - {x: 67.5, y: -64} + - {x: 128.5, y: -2} + - {x: 128.5, y: 64} + tessellationDetail: 0 + bones: [] + spriteID: 9adb64494e8944defbfc84a91967bc6b + internalID: 21300018 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CastleWall_0 + rect: + serializedVersion: 2 + x: 261 + y: 160 + width: 160 + height: 156 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -21, y: 75} + - {x: -69, y: 73} + - {x: -71, y: 71} + - {x: -74, y: 52} + - {x: -73, y: 33} + - {x: -80, y: 24} + - {x: -80, y: -14} + - {x: -70, y: -78} + - {x: 36, y: -78} + - {x: 59, y: -74} + - {x: 80, y: -11} + - {x: 80, y: 75} + physicsShape: + - - {x: 71.5, y: 63.5} + - {x: -77.5, y: 35.5} + - {x: -77.5, y: 9.5} + - {x: -66.5, y: -63.5} + - {x: 34.5, y: -63.5} + - {x: 61.5, y: -33.5} + - {x: 77.5, y: 47.5} + - {x: 77.5, y: 63.5} + tessellationDetail: 0 + bones: [] + spriteID: bbf07de53ae6044018a1edfbc9640bcb + internalID: 21300016 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 720371aceba864ae092233b0f03d0d69 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/IceSprite.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/IceSprite.png new file mode 100644 index 0000000..b6d43d0 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/IceSprite.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/IceSprite.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/IceSprite.png.meta new file mode 100644 index 0000000..b8a8330 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/IceSprite.png.meta @@ -0,0 +1,152 @@ +fileFormatVersion: 2 +guid: e74b518a65bc45f4cace9a2fef6af29d +TextureImporter: + internalIDToNameTable: + - first: + 213: 21300000 + second: IceSprite_0 + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 2 + spritePivot: {x: 0.5, y: 1} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: IceSprite_0 + rect: + serializedVersion: 2 + x: 42 + y: 105 + width: 170 + height: 40 + alignment: 7 + pivot: {x: 0.5, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 90ea334be9f96ef4bb890e2fc7bcf3de + internalID: 21300000 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 79445debcbead99418b13722644a8ad2 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/PlankSprite.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/PlankSprite.png new file mode 100644 index 0000000..b24cf6d Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/PlankSprite.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/PlankSprite.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/PlankSprite.png.meta new file mode 100644 index 0000000..78c2770 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/PlankSprite.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 418ab5c27d3054eb89959d9c715e00c9 +TextureImporter: + internalIDToNameTable: + - first: + 213: 21300000 + second: PlankSprite_0 + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: PlankSprite_0 + rect: + serializedVersion: 2 + x: 47 + y: 112 + width: 166 + height: 40 + alignment: 2 + pivot: {x: 0.5, y: 1} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 2830d711a22d0714a8ce4c5de8b159d7 + internalID: 21300000 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: f36163a69805f48408e07f7f014bf3aa + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/RoadSprite.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/RoadSprite.png new file mode 100644 index 0000000..8e4e372 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/RoadSprite.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/RoadSprite.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/RoadSprite.png.meta new file mode 100644 index 0000000..aef309b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/RoadSprite.png.meta @@ -0,0 +1,164 @@ +fileFormatVersion: 2 +guid: c6dabd295b8ab514fa47b5d4e2b0266e +TextureImporter: + internalIDToNameTable: + - first: + 213: 21300000 + second: RoadSprite_0 + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 1, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: RoadSprite_0 + rect: + serializedVersion: 2 + x: 0 + y: 8 + width: 63 + height: 48 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: ed6607adfdf684d4da85b7999d1f5202 + internalID: 21300000 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: b468cefc15307564da2e53ce4a456f36 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/Tree Fill A.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/Tree Fill A.png new file mode 100644 index 0000000..0e6adfc Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/Tree Fill A.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/Tree Fill A.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/Tree Fill A.png.meta new file mode 100644 index 0000000..e5544b6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/Tree Fill A.png.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: a94adaf94669646788de8f639270804a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: e160e2ebf6044493bbf686cbdbdfa624 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeSprite.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeSprite.png new file mode 100644 index 0000000..efe026f Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeSprite.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeSprite.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeSprite.png.meta new file mode 100644 index 0000000..3f2ea07 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeSprite.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 029f005d8b06f834fa06df50fc4e7dba +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 7 + spritePivot: {x: 0.5, y: 0} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 962e294447b82444d861c1dac41c399a + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeTrunk01.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeTrunk01.png new file mode 100644 index 0000000..e3a0780 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeTrunk01.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeTrunk01.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeTrunk01.png.meta new file mode 100644 index 0000000..1662304 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Sprites/TreeTrunk01.png.meta @@ -0,0 +1,104 @@ +fileFormatVersion: 2 +guid: e205c552afc6743cb9c52e5ff6504efc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 347, y: 0, z: 261, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: e12b09d0e25b640d5979fab44e0b92b8 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Textures.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Textures.meta new file mode 100644 index 0000000..3d62e20 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Textures.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0a333212fd4f241e08d2d1e7cb7966cb +folderAsset: yes +timeCreated: 1506491026 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Textures/CastleWallFill.psd b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Textures/CastleWallFill.psd new file mode 100644 index 0000000..7e67400 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Textures/CastleWallFill.psd differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Textures/CastleWallFill.psd.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Textures/CastleWallFill.psd.meta new file mode 100644 index 0000000..d4fe3b4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Extras/Textures/CastleWallFill.psd.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 7d8cda48c729c46329cd9d3c69a3a4e6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/.sample.json b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/.sample.json new file mode 100644 index 0000000..019d422 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/.sample.json @@ -0,0 +1,5 @@ +{ + "displayName": "Sprite Shape Samples", + "interactiveImport": "false", + "description": "Samples to get started with SpriteShape", +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/1 Basics.unity b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/1 Basics.unity new file mode 100644 index 0000000..1471eec --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/1 Basics.unity @@ -0,0 +1,409 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_ExportTrainingData: 0 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &1548241049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1548241052} + - component: {fileID: 1548241051} + - component: {fileID: 1548241050} + m_Layer: 0 + m_Name: Sprite Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1548241050 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1548241049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: -3.700837, y: -6.766616, z: 0} + leftTangent: {x: 2.2290852, y: 0.0030808449, z: 0} + rightTangent: {x: -2.2290854, y: -0.0030808449, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -9.497262, y: -7.2778487, z: 0} + leftTangent: {x: 2.4109612, y: -0.8270464, z: 0} + rightTangent: {x: -2.4109612, y: 0.8270464, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -11.833321, y: -0.3431406, z: 0} + leftTangent: {x: 0.06476021, y: -1.367369, z: 0} + rightTangent: {x: -0.06476021, y: 1.367369, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -10.046913, y: 2.0612364, z: 0} + leftTangent: {x: -1.1659508, y: -0.30263352, z: 0} + rightTangent: {x: 1.1659508, y: 0.30263352, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -5.4826956, y: 1.4389285, z: 0} + leftTangent: {x: -3.6403365, y: -0.10659623, z: 0} + rightTangent: {x: 3.6403365, y: 0.10659623, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 0.14317775, y: 0.8184576, z: 0} + leftTangent: {x: -2.1591895, y: -0.10868645, z: 0} + rightTangent: {x: 2.1591895, y: 0.10868645, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 4.145725, y: 1.6875689, z: 0} + leftTangent: {x: -2.1027875, y: -0.09012818, z: 0} + rightTangent: {x: 2.1027875, y: 0.09012818, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 7.954253, y: 1.4916439, z: 0} + leftTangent: {x: -1.3438807, y: -0.019803762, z: 0} + rightTangent: {x: 2.5201635, y: 0.037137747, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 11.347618, y: -1.087086, z: 0} + leftTangent: {x: -0.14069843, y: 1.7271918, z: 0} + rightTangent: {x: 0.14069843, y: -1.7271918, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 9.503413, y: -6.5200095, z: 0} + leftTangent: {x: 1.7579708, y: 0.8249035, z: 0} + rightTangent: {x: -1.7579708, y: -0.824903, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 3.4283261, y: -6.5464716, z: 0} + leftTangent: {x: 3.0763397, y: 0.00007724762, z: 0} + rightTangent: {x: -3.0763397, y: -0.00007724762, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + m_SpriteShape: {fileID: 11400000, guid: d39b7adf6769e40ecb09cfb263673d20, type: 2} + m_FillPixelPerUnit: 50 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 16 + m_ColliderOffset: 0 + m_UpdateCollider: 1 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1971053207 &1548241051 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1548241049} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 9f145c794d2be4ed98c48eefdf471e02, type: 3} + m_Sprites: + - {fileID: 21300000, guid: 8a213466b4b3642faa34dd7853586d96, type: 3} + - {fileID: 21300000, guid: 8c2b3b75a86844168b54c83f67a5fe8e, type: 3} + m_LocalAABB: + m_Center: {x: -0.22740936, y: -2.713738, z: -0.0050049997} + m_Extent: {x: 11.608943, y: 4.830732, z: 0.0050049997} +--- !u!4 &1548241052 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1548241049} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1817488799 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1817488802} + - component: {fileID: 1817488801} + - component: {fileID: 1817488800} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1817488800 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817488799} + m_Enabled: 1 +--- !u!20 &1817488801 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817488799} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 10 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1817488802 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817488799} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/1 Basics.unity.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/1 Basics.unity.meta new file mode 100644 index 0000000..d2dc181 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/1 Basics.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c7f03a831818c4fd78a01af80c1625a8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/2 Corners.unity b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/2 Corners.unity new file mode 100644 index 0000000..59342e7 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/2 Corners.unity @@ -0,0 +1,1365 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_ExportTrainingData: 0 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &148932347 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 148932351} + - component: {fileID: 148932348} + - component: {fileID: 148932349} + m_Layer: 0 + m_Name: Background Castle Wall + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &148932348 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148932347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: -1.5087647, y: 4, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 1.5087647, y: 4, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 1.5087647, y: 8.5, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 8.549667, y: 8.5, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 8.549667, y: 4, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 11.567196, y: 4, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 11.567196, y: 8.5, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 19.613945, y: 8.5, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 19.613941, y: -8.5, z: 0} + leftTangent: {x: 0.018205643, y: 1.2784569, z: 0} + rightTangent: {x: -0.03827858, y: -2.6887, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -19.613949, y: -8.5, z: 0} + leftTangent: {x: -0.009170532, y: -1.4367714, z: 0} + rightTangent: {x: 0.009435654, y: 1.4787006, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -19.613947, y: 8.5, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -11.567201, y: 8.5, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -11.567199, y: 4, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -8.549672, y: 4, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -8.549667, y: 8.5, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -1.5087647, y: 8.5, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + m_SpriteShape: {fileID: 11400000, guid: 49058e371087b49b18fb1c4177f3b7bd, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1971053207 &148932349 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148932347} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 815f15421880340e1ac8fb4767057d51, type: 3} + m_Sprites: + - {fileID: 21300006, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 21300014, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 21300002, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 21300012, guid: a8321f6fae34f034787010a903e29648, type: 3} + - {fileID: 21300010, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 21300000, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 21300004, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 21300012, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 21300008, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 0} + - {fileID: 0} + - {fileID: 21300012, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 21300008, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + m_LocalAABB: + m_Center: {x: -0.0000019073486, y: 0, z: -0.0050649997} + m_Extent: {x: 20.113949, y: 9.000001, z: 0.0050649997} +--- !u!4 &148932351 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148932347} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.9941908, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &743373521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 743373524} + - component: {fileID: 743373523} + - component: {fileID: 743373522} + m_Layer: 0 + m_Name: Platform Supports 02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1971053207 &743373522 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743373521} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300016, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 0} + m_LocalAABB: + m_Center: {x: -0.24448252, y: 1.4645088, z: -0.00501} + m_Extent: {x: 3.0169244, y: 1.4645088, z: 0.00501} +--- !u!114 &743373523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743373521} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -3.244074, y: 1.6193502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.657366, y: 1.6419101, z: 0} + leftTangent: {x: -1.1476898, y: 0.70850587, z: 0} + rightTangent: {x: 0.9156313, y: -0.56524897, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 1 + corner: 0 + - position: {x: 1.2286466, y: 1.6729, z: 0} + leftTangent: {x: -0.48632717, y: 0.1658783, z: 0} + rightTangent: {x: 1.9114523, y: -0.35046864, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.742056, y: 1.7106463, z: 0} + leftTangent: {x: -2.1672134, y: 0.049874783, z: 0} + rightTangent: {x: 2.55785, y: -0.058864117, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 1 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e22936b0b355342d7b0855d7e938963e, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!4 &743373524 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743373521} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.93, y: -3.03, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &863446550 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 863446553} + - component: {fileID: 863446552} + - component: {fileID: 863446551} + m_Layer: 0 + m_Name: Platform 02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1971053207 &863446551 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863446550} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300018, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 0} + m_LocalAABB: + m_Center: {x: 0.65924764, y: -0.34545112, z: -0.005} + m_Extent: {x: 3.7870207, y: 1.0617188, z: 0.005} +--- !u!114 &863446552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863446550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -2.0958834, y: -0.39064693, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.4300003, y: -0.29999995, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: d5a6d064bf23c452287ef7371144927c, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!4 &863446553 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863446550} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.20000005, y: 0.16000013, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1108206408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1108206412} + - component: {fileID: 1108206409} + - component: {fileID: 1108206410} + m_Layer: 0 + m_Name: Platform 01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1108206409 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108206408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -7.25, y: -1.75, z: 0} + leftTangent: {x: 1.4365501, y: -0.00849247, z: 0} + rightTangent: {x: 1.4347038, y: 0.07331753, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.25, y: -2.25, z: 0} + leftTangent: {x: -1.9918365, y: -0.24203491, z: 0} + rightTangent: {x: 1.9918365, y: 0.24203491, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.25, y: -0.75, z: 0} + leftTangent: {x: -1.1856556, y: -0.51208687, z: 0} + rightTangent: {x: 1.4588194, y: 0.6300669, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.75, y: -0.75, z: 0} + leftTangent: {x: -1.556633, y: 1.3201184, z: 0} + rightTangent: {x: 1.7604151, y: -1.492938, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: d5a6d064bf23c452287ef7371144927c, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 16 + m_ColliderOffset: -1 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1971053207 &1108206410 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108206408} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300018, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 0} + m_LocalAABB: + m_Center: {x: -0.6706662, y: -1.1484635, z: -0.005} + m_Extent: {x: 7.8728127, y: 2.149938, z: 0.005} +--- !u!4 &1108206412 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108206408} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -9.75, y: -3.25, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1242806276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1242806280} + - component: {fileID: 1242806279} + - component: {fileID: 1242806278} + - component: {fileID: 1242806277} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1242806277 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242806276} + m_Enabled: 1 +--- !u!124 &1242806278 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242806276} + m_Enabled: 1 +--- !u!20 &1242806279 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242806276} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0.19607843, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 10 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1242806280 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242806276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1680581995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1680581999} + - component: {fileID: 1680581996} + - component: {fileID: 1680581997} + m_Layer: 0 + m_Name: Platform 03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1680581996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1680581995} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -6.5958834, y: -0.8906467, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.31037712, y: 0.21611452, z: 0} + leftTangent: {x: -1.9731617, y: -0.3641789, z: 0} + rightTangent: {x: 2.4578047, y: 0.4536276, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 6.107708, y: 3.1037588, z: 0} + leftTangent: {x: -2.9189305, y: -0.060035706, z: 0} + rightTangent: {x: 1.9259801, y: 0.03961301, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: d5a6d064bf23c452287ef7371144927c, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1971053207 &1680581997 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1680581995} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300018, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 0} + m_LocalAABB: + m_Center: {x: -0.3205309, y: 1.064537, z: -0.005} + m_Extent: {x: 7.4460506, y: 3.1131372, z: 0.005} +--- !u!4 &1680581999 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1680581995} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 11.83, y: -2.31, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1804489810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1804489814} + - component: {fileID: 1804489811} + - component: {fileID: 1804489812} + m_Layer: 0 + m_Name: Platform Supports 01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1804489811 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804489810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -7.06981, y: 1.6025028, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6791887, y: 1.4878502, z: 0} + leftTangent: {x: -1.1476898, y: 0.70850587, z: 0} + rightTangent: {x: 0.9156313, y: -0.56524897, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 1 + corner: 0 + - position: {x: -2.8751068, y: 0.9929681, z: 0} + leftTangent: {x: -0.48632717, y: 0.1658783, z: 0} + rightTangent: {x: 1.9114523, y: -0.35046864, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.544878, y: 1.0378137, z: 0} + leftTangent: {x: -2.1672134, y: 0.049874783, z: 0} + rightTangent: {x: 2.55785, y: -0.058864117, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 1 + corner: 0 + - position: {x: 0.6537266, y: 2.6101074, z: 0} + leftTangent: {x: -0.81578255, y: -1.1062441, z: 0} + rightTangent: {x: 3.626093, y: 0.50750494, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.0591574, y: 2.694005, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 1 + corner: 0 + - position: {x: 4.5411544, y: 3.1485863, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.938326, y: 3.0802164, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e22936b0b355342d7b0855d7e938963e, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1971053207 &1804489812 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804489810} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300016, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 0} + m_LocalAABB: + m_Center: {x: -0.5860243, y: 2.0703952, z: -0.00503} + m_Extent: {x: 6.5839233, y: 2.295485, z: 0.00503} +--- !u!4 &1804489814 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1804489810} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10.55, y: -7.64, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1897297955 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1897297958} + - component: {fileID: 1897297957} + - component: {fileID: 1897297956} + m_Layer: 0 + m_Name: Platform Supports 03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1971053207 &1897297956 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897297955} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300016, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 0} + m_LocalAABB: + m_Center: {x: -0.5359664, y: 2.7398272, z: -0.00503} + m_Extent: {x: 6.960102, y: 3.3909473, z: 0.00503} +--- !u!114 &1897297957 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897297955} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: -7.417392, y: 0.5650878, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1325207, y: 0.6482034, z: 0} + leftTangent: {x: -1.1476898, y: 0.70850587, z: 0} + rightTangent: {x: 0.9156313, y: -0.56524897, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 1 + corner: 0 + - position: {x: -2.0394, y: 1.3667214, z: 0} + leftTangent: {x: -0.48632717, y: 0.1658783, z: 0} + rightTangent: {x: 1.9114523, y: -0.35046864, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.64398956, y: 1.420696, z: 0} + leftTangent: {x: -2.1672134, y: 0.049874783, z: 0} + rightTangent: {x: 2.55785, y: -0.058864117, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 1 + corner: 0 + - position: {x: 1.4602585, y: 2.7928703, z: 0} + leftTangent: {x: -0.81578255, y: -1.1062441, z: 0} + rightTangent: {x: 3.626093, y: 0.50750494, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.7366886, y: 2.8838847, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 1 + corner: 0 + - position: {x: 5.1822586, y: 4.9121447, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.4070053, y: 4.8949175, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e22936b0b355342d7b0855d7e938963e, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!4 &1897297958 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897297955} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 12.15, y: -4.77, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/2 Corners.unity.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/2 Corners.unity.meta new file mode 100644 index 0000000..3e30345 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/2 Corners.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7a37ba72831c14c5499ff8be9454c363 +timeCreated: 1507270691 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/3 Platformer.unity b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/3 Platformer.unity new file mode 100644 index 0000000..dd224bd --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/3 Platformer.unity @@ -0,0 +1,32604 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_ExportTrainingData: 0 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &4501258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4501259} + - component: {fileID: 4501261} + - component: {fileID: 4501260} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4501259 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4501258} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 263283932} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &4501260 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4501258} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &4501261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4501258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &25886065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 25886066} + - component: {fileID: 25886068} + - component: {fileID: 25886067} + - component: {fileID: 25886069} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &25886066 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25886065} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 10.29, y: -2.29, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 2011677551} + m_Father: {fileID: 1524777626} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &25886067 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25886065} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &25886068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25886065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &25886069 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25886065} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &29679715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 29679716} + - component: {fileID: 29679718} + - component: {fileID: 29679717} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &29679716 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29679715} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 979700885} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &29679717 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29679715} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &29679718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29679715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &34753519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 34753522} + - component: {fileID: 34753521} + - component: {fileID: 34753520} + m_Layer: 0 + m_Name: Grass Flourish + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &34753520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34753519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 1 + m_ControlPoints: + - position: {x: 1.6084752, y: -3.4914136, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: -1.0337515, y: -0.06073761, z: 0} + mode: 2 + height: 0.2 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2114797, y: -5.116028, z: 0} + leftTangent: {x: -0.510972, y: 0.48611307, z: 0} + rightTangent: {x: 0.510972, y: -0.48611307, z: 0} + mode: 1 + height: 0.5 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 3.180717, y: -4.6245165, z: 0} + leftTangent: {x: -0.58045006, y: -0.7854457, z: 0} + rightTangent: {x: 0.58045006, y: 0.7854457, z: 0} + mode: 1 + height: 0.7 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 1.7320638, y: -2.0433316, z: 0} + leftTangent: {x: 2.1683693, y: -0.09350157, z: 0} + rightTangent: {x: -2.1683693, y: 0.09350157, z: 0} + mode: 1 + height: 0.7 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -0.090479374, y: -5.9630413, z: 0} + leftTangent: {x: -1.7771192, y: 1.935802, z: 0} + rightTangent: {x: 2.442913, y: -2.6610465, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.337136, y: -2.4922872, z: 0} + leftTangent: {x: 1.0074177, y: -3.064838, z: 0} + rightTangent: {x: -1.0074177, y: 3.064838, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.120853, y: 4.901344, z: 0} + leftTangent: {x: 0.05233097, y: -3.4266396, z: 0} + rightTangent: {x: -0.052108765, y: 3.4121118, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9884439, y: 3.6024313, z: 0} + leftTangent: {x: -0.04334736, y: 2.6522145, z: 0} + rightTangent: {x: 0.04698944, y: -2.8750658, z: 0} + mode: 1 + height: 0.616 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5900702, y: 4.5365825, z: 0} + leftTangent: {x: 2.2081165, y: -1.5098982, z: 0} + rightTangent: {x: -2.0926647, y: 1.4309525, z: 0} + mode: 1 + height: 0.332 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.632441, y: 7.1060967, z: 0} + leftTangent: {x: -0.9104872, y: 2.1231809, z: 0} + rightTangent: {x: 1.0787821, y: -2.5156312, z: 0} + mode: 1 + height: 0.257 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.8802476, y: 6.578318, z: 0} + leftTangent: {x: 0.11614323, y: -0.698462, z: 0} + rightTangent: {x: -0.11614323, y: 0.698462, z: 0} + mode: 1 + height: 0.207 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.5572705, y: 5.240605, z: 0} + leftTangent: {x: 0.62535286, y: 0.57301664, z: 0} + rightTangent: {x: -0.62535286, y: -0.57301664, z: 0} + mode: 1 + height: 0.15 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4593334, y: 5.7831354, z: 0} + leftTangent: {x: 2.0323112, y: 1.6209698, z: 0} + rightTangent: {x: -2.0323114, y: -1.6209698, z: 0} + mode: 0 + height: 0.1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: d640701756c1640db828d0d387d08c8d, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 8 + m_ColliderOffset: 0.473 + m_UpdateCollider: 1 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1971053207 &34753521 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34753519} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 6 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 0} + m_Sprites: + - {fileID: 21300000, guid: 4f39beab6f36e4012aa0112a3a02828d, type: 3} + m_LocalAABB: + m_Center: {x: 1.0317383, y: 0.16758013, z: -0.005} + m_Extent: {x: 5.7285886, y: 7.7861276, z: 0.005} +--- !u!4 &34753522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 34753519} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.57, y: -0.13, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &59143516 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 59143517} + - component: {fileID: 59143519} + - component: {fileID: 59143518} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &59143517 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 59143516} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 286644245} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &59143518 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 59143516} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &59143519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 59143516} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &78273745 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 78273746} + - component: {fileID: 78273748} + - component: {fileID: 78273747} + - component: {fileID: 78273749} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &78273746 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 78273745} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -10.79, y: -1.8199997, z: 1.42} + m_LocalScale: {x: 0.89092064, y: 0.89092064, z: 0.89092064} + m_Children: + - {fileID: 1339511685} + m_Father: {fileID: 1524777626} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &78273747 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 78273745} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &78273748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 78273745} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &78273749 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 78273745} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &151788793 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 151788794} + - component: {fileID: 151788796} + - component: {fileID: 151788795} + - component: {fileID: 151788797} + m_Layer: 0 + m_Name: Tree B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &151788794 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 151788793} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.72, y: -1.56, z: 0} + m_LocalScale: {x: 0.9812116, y: 0.9812116, z: 0.9812116} + m_Children: + - {fileID: 739625615} + m_Father: {fileID: 2056216027} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &151788795 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 151788793} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.6428366, y: 1.7089672, z: 0} + m_Extent: {x: 3.7357302, y: 3.6895504, z: 0} +--- !u!114 &151788796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 151788793} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.359375, y: 3.670249, z: 0} + leftTangent: {x: 0.41431007, y: 0.28194088, z: -0} + rightTangent: {x: -0.41431007, y: -0.28194088, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.43426514, y: 0.2129879, z: 0} + rightTangent: {x: -0.43426514, y: -0.2129879, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9951401, y: 1.8612032, z: 0} + leftTangent: {x: 0.25881386, y: 0.30647945, z: 0} + rightTangent: {x: -0.25881386, y: -0.30647945, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.05688286, y: 0.58109426, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.029663086, y: 0.2388587, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.7826357, y: 1.5290413, z: 0} + leftTangent: {x: -0.11582279, y: -0.65826845, z: 0} + rightTangent: {x: 0.11582279, y: 0.65826845, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.577505, y: 3.9892187, z: 0} + leftTangent: {x: 0.206254, y: -0.21478653, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0928936, y: 4.5724335, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.9805527, y: 4.9319496, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.621972, y: 4.854555, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.9119539, y: 3.9721088, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2991333, y: 4.114603, z: 0} + leftTangent: {x: -0.14927785, y: 0.20863414, z: -0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.13505363, y: -0.33310318, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.04481411, y: -0.89365387, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.72527885, y: 5.110651, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3317413, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.32624054, y: 0.31383038, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.09288406, y: -0.34268284, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.976551, y: 4.190735, z: 0} + leftTangent: {x: -0.30699492, y: -0.22119066, z: -0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &151788797 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 151788793} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &173102064 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 173102065} + - component: {fileID: 173102067} + - component: {fileID: 173102066} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &173102065 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173102064} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1122971306} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &173102066 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173102064} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &173102067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173102064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &217255371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 217255372} + - component: {fileID: 217255373} + m_Layer: 0 + m_Name: Trees A + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &217255372 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 217255371} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 936688497} + - {fileID: 693693579} + - {fileID: 1359782555} + - {fileID: 1108512469} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!210 &217255373 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 217255371} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 2 +--- !u!1 &220145343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 220145344} + - component: {fileID: 220145346} + - component: {fileID: 220145345} + m_Layer: 0 + m_Name: Tree B Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &220145344 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 220145343} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5600014, y: 7.707, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 226413388} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &220145345 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 220145343} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -68 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: -0.16163683, y: -0.43569756, z: 0} + m_Extent: {x: 6.390791, y: 4.612397, z: 0} +--- !u!114 &220145346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 220145343} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.3653526, y: 1.601366, z: 0} + leftTangent: {x: -0.23857307, y: 1.0432768, z: 0} + rightTangent: {x: 0.70567703, y: -0.47177505, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9491177, y: -0.15643597, z: 0} + leftTangent: {x: 0.14288712, y: 0.8998499, z: 0} + rightTangent: {x: 0.66734123, y: -0.8329916, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.849682, y: -1.503334, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.164957, y: -2.6048594, z: 0} + leftTangent: {x: 0.25256538, y: 0.8498125, z: 0} + rightTangent: {x: 0.17482376, y: -0.91559696, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.6007023, y: -3.0324564, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.9996967, y: -4.520874, z: 0} + leftTangent: {x: 0.90444565, y: 0.60025024, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5278225, y: -3.0331078, z: 0} + leftTangent: {x: 0.61400414, y: -0.9835596, z: 0} + rightTangent: {x: -1.1278362, y: 0.31757736, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 1.1998024, y: 0.30182362, z: 0} + rightTangent: {x: -1.1998024, y: -0.30182362, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.6677666, y: 0.12108803, z: 0} + rightTangent: {x: -0.6677666, y: -0.12108803, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9365845, y: -4.1772814, z: 0} + leftTangent: {x: 0.4178133, y: 0.61941147, z: 0} + rightTangent: {x: -0.4178133, y: -0.61941147, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8817806, y: -4.8703394, z: 0} + leftTangent: {x: 0.7535715, y: -0.47049904, z: 0} + rightTangent: {x: -0.037129402, y: 0.20738316, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.98199, y: -3.5650816, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.25583172, y: 0.15120792, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.9609966, y: -3.624712, z: 0} + leftTangent: {x: 0.14338875, y: -0.7308178, z: 0} + rightTangent: {x: -0.14338875, y: 0.7308178, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.031051636, y: 0.17361355, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.2672396, y: -2.206296, z: 0} + leftTangent: {x: -0.023076057, y: -0.94235516, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.0325413, y: -1.1945362, z: 0} + leftTangent: {x: -0.07049179, y: -0.19197655, z: 0} + rightTangent: {x: 0.07483387, y: 0.20380211, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.4445724, y: -0.19776535, z: 0} + leftTangent: {x: -0.13088131, y: -0.9560871, z: 0} + rightTangent: {x: -0.5174608, y: 0.53443336, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8060017, y: 1.2272987, z: 0} + leftTangent: {x: -0.19268036, y: -0.6882601, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.371358, y: 2.7870255, z: 0} + leftTangent: {x: -0.41646194, y: -0.37121582, z: -0} + rightTangent: {x: 0.41646194, y: 0.37121582, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.2252283, y: 3.520977, z: 0} + leftTangent: {x: -0.7642946, y: -0.094537735, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5865917, y: 4.07885, z: 0} + leftTangent: {x: -0.31127167, y: -0.04250908, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.8731518, y: 3.6445904, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.11139107, y: 4.1052113, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: 0.1998787, y: -0.026630402, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7204857, y: 3.9332504, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: 0.26924896, y: -0.043870926, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.6085148, y: 0.841589, z: 0} + rightTangent: {x: 0.92959213, y: -0.11259842, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &226413387 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 226413388} + - component: {fileID: 226413390} + - component: {fileID: 226413389} + - component: {fileID: 226413391} + m_Layer: 0 + m_Name: Tree B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &226413388 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226413387} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 13.67, y: -1.4600003, z: 0} + m_LocalScale: {x: 0.85662717, y: 0.85662717, z: 0.85662717} + m_Children: + - {fileID: 220145344} + m_Father: {fileID: 2056216027} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &226413389 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226413387} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.6428366, y: 1.7089672, z: 0} + m_Extent: {x: 3.7357302, y: 3.6895504, z: 0} +--- !u!114 &226413390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226413387} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.359375, y: 3.670249, z: 0} + leftTangent: {x: 0.41431007, y: 0.28194088, z: -0} + rightTangent: {x: -0.41431007, y: -0.28194088, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.43426514, y: 0.2129879, z: 0} + rightTangent: {x: -0.43426514, y: -0.2129879, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9951401, y: 1.8612032, z: 0} + leftTangent: {x: 0.25881386, y: 0.30647945, z: 0} + rightTangent: {x: -0.25881386, y: -0.30647945, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.05688286, y: 0.58109426, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.029663086, y: 0.2388587, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.7826357, y: 1.5290413, z: 0} + leftTangent: {x: -0.11582279, y: -0.65826845, z: 0} + rightTangent: {x: 0.11582279, y: 0.65826845, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.577505, y: 3.9892187, z: 0} + leftTangent: {x: 0.206254, y: -0.21478653, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0928936, y: 4.5724335, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.9805527, y: 4.9319496, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.621972, y: 4.854555, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.9119539, y: 3.9721088, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2991333, y: 4.114603, z: 0} + leftTangent: {x: -0.14927785, y: 0.20863414, z: -0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.13505363, y: -0.33310318, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.04481411, y: -0.89365387, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.72527885, y: 5.110651, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3317413, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.32624054, y: 0.31383038, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.09288406, y: -0.34268284, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.976551, y: 4.190735, z: 0} + leftTangent: {x: -0.30699492, y: -0.22119066, z: -0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &226413391 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226413387} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &255668688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 255668689} + - component: {fileID: 255668691} + - component: {fileID: 255668690} + m_Layer: 0 + m_Name: Tree B Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &255668689 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 255668688} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5600014, y: 7.707, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1715408667} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &255668690 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 255668688} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -68 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: -0.16163683, y: -0.43569756, z: 0} + m_Extent: {x: 6.390791, y: 4.612397, z: 0} +--- !u!114 &255668691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 255668688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.3653526, y: 1.601366, z: 0} + leftTangent: {x: -0.23857307, y: 1.0432768, z: 0} + rightTangent: {x: 0.70567703, y: -0.47177505, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9491177, y: -0.15643597, z: 0} + leftTangent: {x: 0.14288712, y: 0.8998499, z: 0} + rightTangent: {x: 0.66734123, y: -0.8329916, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.849682, y: -1.503334, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.164957, y: -2.6048594, z: 0} + leftTangent: {x: 0.25256538, y: 0.8498125, z: 0} + rightTangent: {x: 0.17482376, y: -0.91559696, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.6007023, y: -3.0324564, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.9996967, y: -4.520874, z: 0} + leftTangent: {x: 0.90444565, y: 0.60025024, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5278225, y: -3.0331078, z: 0} + leftTangent: {x: 0.61400414, y: -0.9835596, z: 0} + rightTangent: {x: -1.1278362, y: 0.31757736, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 1.1998024, y: 0.30182362, z: 0} + rightTangent: {x: -1.1998024, y: -0.30182362, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.6677666, y: 0.12108803, z: 0} + rightTangent: {x: -0.6677666, y: -0.12108803, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9365845, y: -4.1772814, z: 0} + leftTangent: {x: 0.4178133, y: 0.61941147, z: 0} + rightTangent: {x: -0.4178133, y: -0.61941147, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8817806, y: -4.8703394, z: 0} + leftTangent: {x: 0.7535715, y: -0.47049904, z: 0} + rightTangent: {x: -0.037129402, y: 0.20738316, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.98199, y: -3.5650816, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.25583172, y: 0.15120792, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.9609966, y: -3.624712, z: 0} + leftTangent: {x: 0.14338875, y: -0.7308178, z: 0} + rightTangent: {x: -0.14338875, y: 0.7308178, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.031051636, y: 0.17361355, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.2672396, y: -2.206296, z: 0} + leftTangent: {x: -0.023076057, y: -0.94235516, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.0325413, y: -1.1945362, z: 0} + leftTangent: {x: -0.07049179, y: -0.19197655, z: 0} + rightTangent: {x: 0.07483387, y: 0.20380211, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.4445724, y: -0.19776535, z: 0} + leftTangent: {x: -0.13088131, y: -0.9560871, z: 0} + rightTangent: {x: -0.5174608, y: 0.53443336, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8060017, y: 1.2272987, z: 0} + leftTangent: {x: -0.19268036, y: -0.6882601, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.371358, y: 2.7870255, z: 0} + leftTangent: {x: -0.41646194, y: -0.37121582, z: -0} + rightTangent: {x: 0.41646194, y: 0.37121582, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.2252283, y: 3.520977, z: 0} + leftTangent: {x: -0.7642946, y: -0.094537735, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5865917, y: 4.07885, z: 0} + leftTangent: {x: -0.31127167, y: -0.04250908, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.8731518, y: 3.6445904, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.11139107, y: 4.1052113, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: 0.1998787, y: -0.026630402, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7204857, y: 3.9332504, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: 0.26924896, y: -0.043870926, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.6085148, y: 0.841589, z: 0} + rightTangent: {x: 0.92959213, y: -0.11259842, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &258690430 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 258690431} + - component: {fileID: 258690433} + - component: {fileID: 258690432} + m_Layer: 0 + m_Name: Tree B Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &258690431 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 258690430} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5600014, y: 7.707, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 288543831} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &258690432 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 258690430} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -68 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: -0.16163683, y: -0.43569756, z: 0} + m_Extent: {x: 6.390791, y: 4.612397, z: 0} +--- !u!114 &258690433 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 258690430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.3653526, y: 1.601366, z: 0} + leftTangent: {x: -0.23857307, y: 1.0432768, z: 0} + rightTangent: {x: 0.70567703, y: -0.47177505, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9491177, y: -0.15643597, z: 0} + leftTangent: {x: 0.14288712, y: 0.8998499, z: 0} + rightTangent: {x: 0.66734123, y: -0.8329916, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.849682, y: -1.503334, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.164957, y: -2.6048594, z: 0} + leftTangent: {x: 0.25256538, y: 0.8498125, z: 0} + rightTangent: {x: 0.17482376, y: -0.91559696, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.6007023, y: -3.0324564, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.9996967, y: -4.520874, z: 0} + leftTangent: {x: 0.90444565, y: 0.60025024, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5278225, y: -3.0331078, z: 0} + leftTangent: {x: 0.61400414, y: -0.9835596, z: 0} + rightTangent: {x: -1.1278362, y: 0.31757736, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 1.1998024, y: 0.30182362, z: 0} + rightTangent: {x: -1.1998024, y: -0.30182362, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.6677666, y: 0.12108803, z: 0} + rightTangent: {x: -0.6677666, y: -0.12108803, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9365845, y: -4.1772814, z: 0} + leftTangent: {x: 0.4178133, y: 0.61941147, z: 0} + rightTangent: {x: -0.4178133, y: -0.61941147, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8817806, y: -4.8703394, z: 0} + leftTangent: {x: 0.7535715, y: -0.47049904, z: 0} + rightTangent: {x: -0.037129402, y: 0.20738316, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.98199, y: -3.5650816, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.25583172, y: 0.15120792, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.9609966, y: -3.624712, z: 0} + leftTangent: {x: 0.14338875, y: -0.7308178, z: 0} + rightTangent: {x: -0.14338875, y: 0.7308178, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.031051636, y: 0.17361355, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.2672396, y: -2.206296, z: 0} + leftTangent: {x: -0.023076057, y: -0.94235516, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.0325413, y: -1.1945362, z: 0} + leftTangent: {x: -0.07049179, y: -0.19197655, z: 0} + rightTangent: {x: 0.07483387, y: 0.20380211, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.4445724, y: -0.19776535, z: 0} + leftTangent: {x: -0.13088131, y: -0.9560871, z: 0} + rightTangent: {x: -0.5174608, y: 0.53443336, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8060017, y: 1.2272987, z: 0} + leftTangent: {x: -0.19268036, y: -0.6882601, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.371358, y: 2.7870255, z: 0} + leftTangent: {x: -0.41646194, y: -0.37121582, z: -0} + rightTangent: {x: 0.41646194, y: 0.37121582, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.2252283, y: 3.520977, z: 0} + leftTangent: {x: -0.7642946, y: -0.094537735, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5865917, y: 4.07885, z: 0} + leftTangent: {x: -0.31127167, y: -0.04250908, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.8731518, y: 3.6445904, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.11139107, y: 4.1052113, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: 0.1998787, y: -0.026630402, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7204857, y: 3.9332504, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: 0.26924896, y: -0.043870926, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.6085148, y: 0.841589, z: 0} + rightTangent: {x: 0.92959213, y: -0.11259842, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &263283931 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 263283932} + - component: {fileID: 263283934} + - component: {fileID: 263283933} + - component: {fileID: 263283935} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &263283932 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 263283931} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 15.67, y: -2.21, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 4501259} + m_Father: {fileID: 1524777626} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &263283933 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 263283931} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &263283934 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 263283931} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &263283935 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 263283931} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &286644244 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 286644245} + - component: {fileID: 286644247} + - component: {fileID: 286644246} + - component: {fileID: 286644248} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &286644245 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 286644244} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3.66, y: -2.2599998, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 59143517} + m_Father: {fileID: 1524777626} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &286644246 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 286644244} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &286644247 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 286644244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &286644248 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 286644244} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &288543830 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 288543831} + - component: {fileID: 288543833} + - component: {fileID: 288543832} + - component: {fileID: 288543834} + m_Layer: 0 + m_Name: Tree B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &288543831 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 288543830} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.43, y: -2.4000003, z: 0} + m_LocalScale: {x: 0.69838667, y: 0.69838667, z: 0.69838667} + m_Children: + - {fileID: 258690431} + m_Father: {fileID: 2056216027} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &288543832 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 288543830} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.6428366, y: 1.7089672, z: 0} + m_Extent: {x: 3.7357302, y: 3.6895504, z: 0} +--- !u!114 &288543833 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 288543830} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.359375, y: 3.670249, z: 0} + leftTangent: {x: 0.41431007, y: 0.28194088, z: -0} + rightTangent: {x: -0.41431007, y: -0.28194088, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.43426514, y: 0.2129879, z: 0} + rightTangent: {x: -0.43426514, y: -0.2129879, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9951401, y: 1.8612032, z: 0} + leftTangent: {x: 0.25881386, y: 0.30647945, z: 0} + rightTangent: {x: -0.25881386, y: -0.30647945, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.05688286, y: 0.58109426, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.029663086, y: 0.2388587, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.7826357, y: 1.5290413, z: 0} + leftTangent: {x: -0.11582279, y: -0.65826845, z: 0} + rightTangent: {x: 0.11582279, y: 0.65826845, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.577505, y: 3.9892187, z: 0} + leftTangent: {x: 0.206254, y: -0.21478653, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0928936, y: 4.5724335, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.9805527, y: 4.9319496, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.621972, y: 4.854555, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.9119539, y: 3.9721088, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2991333, y: 4.114603, z: 0} + leftTangent: {x: -0.14927785, y: 0.20863414, z: -0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.13505363, y: -0.33310318, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.04481411, y: -0.89365387, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.72527885, y: 5.110651, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3317413, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.32624054, y: 0.31383038, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.09288406, y: -0.34268284, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.976551, y: 4.190735, z: 0} + leftTangent: {x: -0.30699492, y: -0.22119066, z: -0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &288543834 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 288543830} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &309034923 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 309034927} + - component: {fileID: 309034926} + - component: {fileID: 309034925} + - component: {fileID: 309034924} + m_Layer: 0 + m_Name: Platform C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!60 &309034924 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 309034923} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 3.0250463, y: 0.9507808} + - {x: 3.0030367, y: 0.61795557} + - {x: 2.990002, y: 0.13971052} + - {x: 2.985929, y: -0.45136473} + - {x: 2.9897914, y: -1.1287277} + - {x: 3.0162053, y: -2.646098} + - {x: 3.0825987, y: -4.9802184} + - {x: 3.179102, y: -7.586825} + - {x: 3.1936255, y: -7.9365234} + - {x: 3.008885, y: -8.127368} + - {x: -3.3092043, y: -8.070499} + - {x: -3.5257041, y: -7.807804} + - {x: -3.2809, y: -6.4396276} + - {x: -3.099454, y: -5.3310676} + - {x: -2.8978481, y: -3.9806426} + - {x: -2.7989843, y: -3.2514956} + - {x: -2.624112, y: -1.759408} + - {x: -2.5556655, y: -1.0264643} + - {x: -2.5048695, y: -0.32265204} + - {x: -2.4753547, y: 0.33615062} + - {x: -2.470376, y: 0.92801523} + - {x: -2.4935992, y: 1.2950448} + - {x: -2.549866, y: 1.6760496} + - {x: -2.6353729, y: 2.071072} + - {x: -2.7453732, y: 2.4723222} + - {x: -2.915644, y: 2.9842463} + - {x: -3.1696107, y: 3.6415355} + - {x: -3.4758747, y: 4.325003} + - {x: -3.8584857, y: 5.078388} + - {x: -4.1916447, y: 5.6625} + - {x: -4.2415433, y: 6.02104} + - {x: -3.3461955, y: 6.160091} + - {x: -2.5642607, y: 6.249132} + - {x: -1.8584745, y: 6.3024793} + - {x: -1.0603778, y: 6.32931} + - {x: -0.6411891, y: 6.3268137} + - {x: -0.21607688, y: 6.310396} + - {x: 0.20953158, y: 6.277413} + - {x: 0.6304322, y: 6.2249923} + - {x: 1.0402049, y: 6.1502285} + - {x: 1.4359834, y: 6.0548553} + - {x: 1.8324744, y: 5.9419365} + - {x: 2.2257497, y: 5.8152137} + - {x: 2.61203, y: 5.6782804} + - {x: 3.347643, y: 5.387919} + - {x: 4.0063167, y: 5.0989933} + - {x: 4.7752643, y: 4.729692} + - {x: 5.206425, y: 4.505529} + - {x: 5.7340894, y: 4.219923} + - {x: 5.523766, y: 3.7900662} + - {x: 4.966995, y: 3.4662204} + - {x: 4.499846, y: 3.1670477} + - {x: 4.093342, y: 2.85955} + - {x: 3.7513459, y: 2.5390031} + - {x: 3.4748487, y: 2.199769} + - {x: 3.2620914, y: 1.8327029} + - {x: 3.1789637, y: 1.6344026} + - {x: 3.1113846, y: 1.4233558} + - {x: 3.059826, y: 1.1972514} + - {x: 3.0250463, y: 0.95078075} +--- !u!114 &309034925 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 309034923} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 2.5118475, y: 1.0068536, z: 0} + leftTangent: {x: 0.15024757, y: 1.4633666, z: 0} + rightTangent: {x: -0.15024757, y: -1.4633666, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6635466, y: -7.608237, z: 0} + leftTangent: {x: 2.1658692, y: 1.2717664, z: 0} + rightTangent: {x: -2.1348014, y: -1.253524, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.9545746, y: -7.55767, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.9545746, y: 0.94233024, z: 0} + leftTangent: {x: 0.044664383, y: -2.9358013, z: 0} + rightTangent: {x: -0.030313492, y: 1.9925003, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.569666, y: 5.6189322, z: 0} + leftTangent: {x: 1.4493587, y: -1.0680176, z: 0} + rightTangent: {x: -1.8886337, y: 1.3917145, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9341588, y: 5.658404, z: 0} + leftTangent: {x: -1.8514233, y: 0.40062523, z: 0} + rightTangent: {x: 1.8514233, y: -0.40062523, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.966945, y: 4.063082, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: -1.3543115, y: -0.76698637, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 18082d4b1dde54612b6ce63fd49c9014, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 16 + m_ColliderOffset: 0.43 + m_UpdateCollider: 1 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1971053207 &309034926 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 309034923} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 5 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 3bab026df42df40a5a6b43d96aac577a, type: 3} + m_Sprites: + - {fileID: 1887494081247492234, guid: d501f6d7fa84c4038b7449696f44ff38, type: 3} + - {fileID: -4069628985407814602, guid: a4fef30bb3ca5463a9c33c123a81604a, type: 3} + m_LocalAABB: + m_Center: {x: 0.75439405, y: -0.9000788, z: -0.005025} + m_Extent: {x: 5.0186806, y: 7.311286, z: 0.005025} +--- !u!4 &309034927 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 309034923} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -13, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &316794812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 316794813} + - component: {fileID: 316794815} + - component: {fileID: 316794814} + m_Layer: 0 + m_Name: Tree B Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &316794813 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316794812} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5600014, y: 7.707, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1765691961} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &316794814 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316794812} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -68 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: -0.16163683, y: -0.43569756, z: 0} + m_Extent: {x: 6.390791, y: 4.612397, z: 0} +--- !u!114 &316794815 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316794812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.3653526, y: 1.601366, z: 0} + leftTangent: {x: -0.23857307, y: 1.0432768, z: 0} + rightTangent: {x: 0.70567703, y: -0.47177505, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9491177, y: -0.15643597, z: 0} + leftTangent: {x: 0.14288712, y: 0.8998499, z: 0} + rightTangent: {x: 0.66734123, y: -0.8329916, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.849682, y: -1.503334, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.164957, y: -2.6048594, z: 0} + leftTangent: {x: 0.25256538, y: 0.8498125, z: 0} + rightTangent: {x: 0.17482376, y: -0.91559696, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.6007023, y: -3.0324564, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.9996967, y: -4.520874, z: 0} + leftTangent: {x: 0.90444565, y: 0.60025024, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5278225, y: -3.0331078, z: 0} + leftTangent: {x: 0.61400414, y: -0.9835596, z: 0} + rightTangent: {x: -1.1278362, y: 0.31757736, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 1.1998024, y: 0.30182362, z: 0} + rightTangent: {x: -1.1998024, y: -0.30182362, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.6677666, y: 0.12108803, z: 0} + rightTangent: {x: -0.6677666, y: -0.12108803, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9365845, y: -4.1772814, z: 0} + leftTangent: {x: 0.4178133, y: 0.61941147, z: 0} + rightTangent: {x: -0.4178133, y: -0.61941147, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8817806, y: -4.8703394, z: 0} + leftTangent: {x: 0.7535715, y: -0.47049904, z: 0} + rightTangent: {x: -0.037129402, y: 0.20738316, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.98199, y: -3.5650816, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.25583172, y: 0.15120792, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.9609966, y: -3.624712, z: 0} + leftTangent: {x: 0.14338875, y: -0.7308178, z: 0} + rightTangent: {x: -0.14338875, y: 0.7308178, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.031051636, y: 0.17361355, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.2672396, y: -2.206296, z: 0} + leftTangent: {x: -0.023076057, y: -0.94235516, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.0325413, y: -1.1945362, z: 0} + leftTangent: {x: -0.07049179, y: -0.19197655, z: 0} + rightTangent: {x: 0.07483387, y: 0.20380211, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.4445724, y: -0.19776535, z: 0} + leftTangent: {x: -0.13088131, y: -0.9560871, z: 0} + rightTangent: {x: -0.5174608, y: 0.53443336, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8060017, y: 1.2272987, z: 0} + leftTangent: {x: -0.19268036, y: -0.6882601, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.371358, y: 2.7870255, z: 0} + leftTangent: {x: -0.41646194, y: -0.37121582, z: -0} + rightTangent: {x: 0.41646194, y: 0.37121582, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.2252283, y: 3.520977, z: 0} + leftTangent: {x: -0.7642946, y: -0.094537735, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5865917, y: 4.07885, z: 0} + leftTangent: {x: -0.31127167, y: -0.04250908, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.8731518, y: 3.6445904, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.11139107, y: 4.1052113, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: 0.1998787, y: -0.026630402, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7204857, y: 3.9332504, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: 0.26924896, y: -0.043870926, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.6085148, y: 0.841589, z: 0} + rightTangent: {x: 0.92959213, y: -0.11259842, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &390541823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 390541824} + - component: {fileID: 390541826} + - component: {fileID: 390541825} + m_Layer: 0 + m_Name: Tree A Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &390541824 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390541823} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1108512469} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &390541825 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390541823} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -46 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 944b339e9356d4737b4ca1c72673fb91, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &390541826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 390541823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8b26d0461d17044fbaf93e8736c54c4d, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &394561372 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 394561375} + - component: {fileID: 394561374} + - component: {fileID: 394561373} + - component: {fileID: 394561376} + m_Layer: 0 + m_Name: Platform A + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &394561373 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394561372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 2.3875027, y: -2.6218462, z: 0} + leftTangent: {x: 0.11825287, y: 2.111487, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7391298, y: -2.5346508, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0.33676732, y: 2.3179955, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.2784672, y: 3.1259649, z: 0} + leftTangent: {x: 1.3758769, y: -1.6697699, z: 0} + rightTangent: {x: 1.6418211, y: 0.15931678, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.82281995, y: 2.9447598, z: 0} + leftTangent: {x: -1.2553263, y: 0.25106525, z: 0} + rightTangent: {x: 1.244628, y: -0.24892569, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.940348, y: 2.1037767, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: -0.9688747, y: -0.7138046, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 18082d4b1dde54612b6ce63fd49c9014, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 16 + m_ColliderOffset: 0.43 + m_UpdateCollider: 1 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1971053207 &394561374 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394561372} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 3 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 3bab026df42df40a5a6b43d96aac577a, type: 3} + m_Sprites: + - {fileID: 1887494081247492234, guid: d501f6d7fa84c4038b7449696f44ff38, type: 3} + - {fileID: -4069628985407814602, guid: a4fef30bb3ca5463a9c33c123a81604a, type: 3} + m_LocalAABB: + m_Center: {x: 0.3682866, y: 0.2814362, z: -0.00502} + m_Extent: {x: 4.3198776, y: 3.5091481, z: 0.00502} +--- !u!4 &394561375 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394561372} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!60 &394561376 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394561372} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Points: + m_Paths: + - - {x: 2.7286763, y: -3.143724} + - {x: -3.097855, y: -3.0446234} + - {x: -3.3021674, y: -2.8065188} + - {x: -3.0439568, y: -1.1385807} + - {x: -2.9364457, y: -0.35156417} + - {x: -2.9019058, y: 0.01545863} + - {x: -2.8845472, y: 0.38736376} + - {x: -2.88606, y: 0.7003027} + - {x: -2.9098508, y: 1.0205188} + - {x: -2.957939, y: 1.3284982} + - {x: -3.0328977, y: 1.6271065} + - {x: -3.1378975, y: 1.919848} + - {x: -3.2769506, y: 2.2104557} + - {x: -3.4548745, y: 2.502341} + - {x: -3.8867638, y: 3.0777774} + - {x: -3.9247196, y: 3.5737903} + - {x: -2.9957583, y: 3.6560476} + - {x: -2.3633475, y: 3.6950462} + - {x: -1.7655398, y: 3.7086844} + - {x: -1.1959714, y: 3.698028} + - {x: -0.64850247, y: 3.664249} + - {x: -0.11713877, y: 3.6086662} + - {x: 0.6628432, y: 3.4876764} + - {x: 0.92185074, y: 3.4380186} + - {x: 1.1874232, y: 3.3820384} + - {x: 2.0318947, y: 3.1770186} + - {x: 3.110953, y: 2.8787615} + - {x: 4.0912185, y: 2.5837224} + - {x: 4.6636047, y: 2.4037926} + - {x: 4.5136185, y: 1.9143988} + - {x: 4.109991, y: 1.5726824} + - {x: 3.976213, y: 1.4276077} + - {x: 3.845628, y: 1.2519083} + - {x: 3.7199833, y: 1.0462233} + - {x: 3.600834, y: 0.81198883} + - {x: 3.4893827, y: 0.5510837} + - {x: 3.386478, y: 0.26559067} + - {x: 3.2926774, y: -0.042339005} + - {x: 3.2083104, y: -0.37056005} + - {x: 3.133543, y: -0.7169606} + - {x: 3.068419, y: -1.0794746} + - {x: 3.0128975, y: -1.4560796} + - {x: 2.9668736, y: -1.8447963} + - {x: 2.930199, y: -2.2436788} + - {x: 2.9023285, y: -2.6566389} + - {x: 2.8790958, y: -2.9999025} + - {x: 2.7286763, y: -3.143724} +--- !u!1 &476473963 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 476473966} + - component: {fileID: 476473965} + - component: {fileID: 476473964} + m_Layer: 0 + m_Name: Platform B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &476473964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476473963} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: -1.0731622, y: -4.003207, z: 0} + leftTangent: {x: 5.1672316, y: -0.0071132183, z: 0} + rightTangent: {x: -4.3504725, y: 0.0059888363, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -10.697466, y: -7.2295046, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -10.73526, y: -1.302077, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: -3.3259087, y: -1.9908376, z: 0} + leftTangent: {x: -2.9361215, y: 0.010605335, z: 0} + rightTangent: {x: 4.143947, y: -0.014967918, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 13.242569, y: -1.6489708, z: 0} + leftTangent: {x: -3.841302, y: 3.1487699, z: 0} + rightTangent: {x: -0.38798904, y: -2.0748296, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + - position: {x: 11.707584, y: -6.889369, z: 0} + leftTangent: {x: 2.4809856, y: 2.3652925, z: 0} + rightTangent: {x: -2.4809856, y: -2.3652928, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 1 + m_SpriteShape: {fileID: 11400000, guid: 18082d4b1dde54612b6ce63fd49c9014, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 16 + m_ColliderOffset: 0 + m_UpdateCollider: 1 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1971053207 &476473965 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476473963} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 4 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 3bab026df42df40a5a6b43d96aac577a, type: 3} + m_Sprites: + - {fileID: 1887494081247492234, guid: d501f6d7fa84c4038b7449696f44ff38, type: 3} + - {fileID: -4069628985407814602, guid: a4fef30bb3ca5463a9c33c123a81604a, type: 3} + m_LocalAABB: + m_Center: {x: 1.3499527, y: -3.9271798, z: -0.005015} + m_Extent: {x: 12.765057, y: 4.170549, z: 0.005015} +--- !u!4 &476473966 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 476473963} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &568635847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 568635848} + - component: {fileID: 568635850} + - component: {fileID: 568635849} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &568635848 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568635847} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 611676649} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &568635849 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568635847} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &568635850 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568635847} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &611676648 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 611676649} + - component: {fileID: 611676651} + - component: {fileID: 611676650} + - component: {fileID: 611676652} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &611676649 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611676648} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -8.66, y: -1.77, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 568635848} + m_Father: {fileID: 1524777626} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &611676650 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611676648} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &611676651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611676648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &611676652 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611676648} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &635919995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 635919996} + - component: {fileID: 635919998} + - component: {fileID: 635919997} + - component: {fileID: 635919999} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &635919996 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635919995} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5.71, y: -1.8699999, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 1943032838} + m_Father: {fileID: 1524777626} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &635919997 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635919995} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &635919998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635919995} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &635919999 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635919995} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &693693578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 693693579} + - component: {fileID: 693693581} + - component: {fileID: 693693580} + - component: {fileID: 693693582} + m_Layer: 0 + m_Name: Tree A + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &693693579 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 693693578} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5.1199985, y: -1.9700003, z: 0} + m_LocalScale: {x: 0.7146551, y: 0.7146551, z: 0.7146551} + m_Children: + - {fileID: 2146085262} + m_Father: {fileID: 217255372} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &693693580 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 693693578} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 944b339e9356d4737b4ca1c72673fb91, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &693693581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 693693578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8b26d0461d17044fbaf93e8736c54c4d, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &693693582 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 693693578} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &739625614 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 739625615} + - component: {fileID: 739625617} + - component: {fileID: 739625616} + m_Layer: 0 + m_Name: Tree B Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &739625615 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 739625614} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5600014, y: 7.707, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 151788794} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &739625616 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 739625614} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -68 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: -0.16163683, y: -0.43569756, z: 0} + m_Extent: {x: 6.390791, y: 4.612397, z: 0} +--- !u!114 &739625617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 739625614} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.3653526, y: 1.601366, z: 0} + leftTangent: {x: -0.23857307, y: 1.0432768, z: 0} + rightTangent: {x: 0.70567703, y: -0.47177505, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9491177, y: -0.15643597, z: 0} + leftTangent: {x: 0.14288712, y: 0.8998499, z: 0} + rightTangent: {x: 0.66734123, y: -0.8329916, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.849682, y: -1.503334, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.164957, y: -2.6048594, z: 0} + leftTangent: {x: 0.25256538, y: 0.8498125, z: 0} + rightTangent: {x: 0.17482376, y: -0.91559696, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.6007023, y: -3.0324564, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.9996967, y: -4.520874, z: 0} + leftTangent: {x: 0.90444565, y: 0.60025024, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5278225, y: -3.0331078, z: 0} + leftTangent: {x: 0.61400414, y: -0.9835596, z: 0} + rightTangent: {x: -1.1278362, y: 0.31757736, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 1.1998024, y: 0.30182362, z: 0} + rightTangent: {x: -1.1998024, y: -0.30182362, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.6677666, y: 0.12108803, z: 0} + rightTangent: {x: -0.6677666, y: -0.12108803, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9365845, y: -4.1772814, z: 0} + leftTangent: {x: 0.4178133, y: 0.61941147, z: 0} + rightTangent: {x: -0.4178133, y: -0.61941147, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8817806, y: -4.8703394, z: 0} + leftTangent: {x: 0.7535715, y: -0.47049904, z: 0} + rightTangent: {x: -0.037129402, y: 0.20738316, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.98199, y: -3.5650816, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.25583172, y: 0.15120792, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.9609966, y: -3.624712, z: 0} + leftTangent: {x: 0.14338875, y: -0.7308178, z: 0} + rightTangent: {x: -0.14338875, y: 0.7308178, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.031051636, y: 0.17361355, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.2672396, y: -2.206296, z: 0} + leftTangent: {x: -0.023076057, y: -0.94235516, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.0325413, y: -1.1945362, z: 0} + leftTangent: {x: -0.07049179, y: -0.19197655, z: 0} + rightTangent: {x: 0.07483387, y: 0.20380211, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.4445724, y: -0.19776535, z: 0} + leftTangent: {x: -0.13088131, y: -0.9560871, z: 0} + rightTangent: {x: -0.5174608, y: 0.53443336, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8060017, y: 1.2272987, z: 0} + leftTangent: {x: -0.19268036, y: -0.6882601, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.371358, y: 2.7870255, z: 0} + leftTangent: {x: -0.41646194, y: -0.37121582, z: -0} + rightTangent: {x: 0.41646194, y: 0.37121582, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.2252283, y: 3.520977, z: 0} + leftTangent: {x: -0.7642946, y: -0.094537735, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5865917, y: 4.07885, z: 0} + leftTangent: {x: -0.31127167, y: -0.04250908, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.8731518, y: 3.6445904, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.11139107, y: 4.1052113, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: 0.1998787, y: -0.026630402, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7204857, y: 3.9332504, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: 0.26924896, y: -0.043870926, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.6085148, y: 0.841589, z: 0} + rightTangent: {x: 0.92959213, y: -0.11259842, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &861329491 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 861329492} + - component: {fileID: 861329494} + - component: {fileID: 861329493} + - component: {fileID: 861329495} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &861329492 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861329491} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5.18, y: -1.5299997, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 906611947} + m_Father: {fileID: 1524777626} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &861329493 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861329491} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &861329494 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861329491} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &861329495 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861329491} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &906611946 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 906611947} + - component: {fileID: 906611949} + - component: {fileID: 906611948} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &906611947 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906611946} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 861329492} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &906611948 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906611946} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &906611949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906611946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &917189143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 917189146} + - component: {fileID: 917189145} + - component: {fileID: 917189144} + - component: {fileID: 917189147} + m_Layer: 0 + m_Name: Tree B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1971053207 &917189144 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917189143} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.6428366, y: 1.7089672, z: 0} + m_Extent: {x: 3.7357302, y: 3.6895504, z: 0} +--- !u!114 &917189145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917189143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.359375, y: 3.670249, z: 0} + leftTangent: {x: 0.41431007, y: 0.28194088, z: -0} + rightTangent: {x: -0.41431007, y: -0.28194088, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.43426514, y: 0.2129879, z: 0} + rightTangent: {x: -0.43426514, y: -0.2129879, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9951401, y: 1.8612032, z: 0} + leftTangent: {x: 0.25881386, y: 0.30647945, z: 0} + rightTangent: {x: -0.25881386, y: -0.30647945, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.05688286, y: 0.58109426, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.029663086, y: 0.2388587, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.7826357, y: 1.5290413, z: 0} + leftTangent: {x: -0.11582279, y: -0.65826845, z: 0} + rightTangent: {x: 0.11582279, y: 0.65826845, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.577505, y: 3.9892187, z: 0} + leftTangent: {x: 0.206254, y: -0.21478653, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0928936, y: 4.5724335, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.9805527, y: 4.9319496, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.621972, y: 4.854555, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.9119539, y: 3.9721088, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2991333, y: 4.114603, z: 0} + leftTangent: {x: -0.14927785, y: 0.20863414, z: -0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.13505363, y: -0.33310318, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.04481411, y: -0.89365387, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.72527885, y: 5.110651, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3317413, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.32624054, y: 0.31383038, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.09288406, y: -0.34268284, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.976551, y: 4.190735, z: 0} + leftTangent: {x: -0.30699492, y: -0.22119066, z: -0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!4 &917189146 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917189143} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -12.81, y: -2.5300004, z: 0} + m_LocalScale: {x: 0.7568043, y: 0.7568043, z: 0.7568043} + m_Children: + - {fileID: 1085396596} + m_Father: {fileID: 2056216027} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!210 &917189147 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917189143} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &936688496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 936688497} + - component: {fileID: 936688499} + - component: {fileID: 936688498} + - component: {fileID: 936688500} + m_Layer: 0 + m_Name: Tree A + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &936688497 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 936688496} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -15.95, y: -1.97, z: 0} + m_LocalScale: {x: 0.9748, y: 0.9748, z: 0.9748} + m_Children: + - {fileID: 1501966455} + m_Father: {fileID: 217255372} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &936688498 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 936688496} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 944b339e9356d4737b4ca1c72673fb91, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &936688499 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 936688496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8b26d0461d17044fbaf93e8736c54c4d, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &936688500 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 936688496} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &979700884 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 979700885} + - component: {fileID: 979700887} + - component: {fileID: 979700886} + - component: {fileID: 979700888} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &979700885 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 979700884} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 7.27, y: -1.4000001, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 29679716} + m_Father: {fileID: 1524777626} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &979700886 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 979700884} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &979700887 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 979700884} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &979700888 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 979700884} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1085396595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1085396596} + - component: {fileID: 1085396598} + - component: {fileID: 1085396597} + m_Layer: 0 + m_Name: Tree B Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1085396596 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085396595} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5600014, y: 7.707, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 917189146} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1085396597 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085396595} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -68 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: -0.16163683, y: -0.43569756, z: 0} + m_Extent: {x: 6.390791, y: 4.612397, z: 0} +--- !u!114 &1085396598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085396595} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.3653526, y: 1.601366, z: 0} + leftTangent: {x: -0.23857307, y: 1.0432768, z: 0} + rightTangent: {x: 0.70567703, y: -0.47177505, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9491177, y: -0.15643597, z: 0} + leftTangent: {x: 0.14288712, y: 0.8998499, z: 0} + rightTangent: {x: 0.66734123, y: -0.8329916, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.849682, y: -1.503334, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.164957, y: -2.6048594, z: 0} + leftTangent: {x: 0.25256538, y: 0.8498125, z: 0} + rightTangent: {x: 0.17482376, y: -0.91559696, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.6007023, y: -3.0324564, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.9996967, y: -4.520874, z: 0} + leftTangent: {x: 0.90444565, y: 0.60025024, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5278225, y: -3.0331078, z: 0} + leftTangent: {x: 0.61400414, y: -0.9835596, z: 0} + rightTangent: {x: -1.1278362, y: 0.31757736, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 1.1998024, y: 0.30182362, z: 0} + rightTangent: {x: -1.1998024, y: -0.30182362, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.6677666, y: 0.12108803, z: 0} + rightTangent: {x: -0.6677666, y: -0.12108803, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9365845, y: -4.1772814, z: 0} + leftTangent: {x: 0.4178133, y: 0.61941147, z: 0} + rightTangent: {x: -0.4178133, y: -0.61941147, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8817806, y: -4.8703394, z: 0} + leftTangent: {x: 0.7535715, y: -0.47049904, z: 0} + rightTangent: {x: -0.037129402, y: 0.20738316, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.98199, y: -3.5650816, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.25583172, y: 0.15120792, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.9609966, y: -3.624712, z: 0} + leftTangent: {x: 0.14338875, y: -0.7308178, z: 0} + rightTangent: {x: -0.14338875, y: 0.7308178, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.031051636, y: 0.17361355, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.2672396, y: -2.206296, z: 0} + leftTangent: {x: -0.023076057, y: -0.94235516, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.0325413, y: -1.1945362, z: 0} + leftTangent: {x: -0.07049179, y: -0.19197655, z: 0} + rightTangent: {x: 0.07483387, y: 0.20380211, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.4445724, y: -0.19776535, z: 0} + leftTangent: {x: -0.13088131, y: -0.9560871, z: 0} + rightTangent: {x: -0.5174608, y: 0.53443336, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8060017, y: 1.2272987, z: 0} + leftTangent: {x: -0.19268036, y: -0.6882601, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.371358, y: 2.7870255, z: 0} + leftTangent: {x: -0.41646194, y: -0.37121582, z: -0} + rightTangent: {x: 0.41646194, y: 0.37121582, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.2252283, y: 3.520977, z: 0} + leftTangent: {x: -0.7642946, y: -0.094537735, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5865917, y: 4.07885, z: 0} + leftTangent: {x: -0.31127167, y: -0.04250908, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.8731518, y: 3.6445904, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.11139107, y: 4.1052113, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: 0.1998787, y: -0.026630402, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7204857, y: 3.9332504, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: 0.26924896, y: -0.043870926, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.6085148, y: 0.841589, z: 0} + rightTangent: {x: 0.92959213, y: -0.11259842, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &1108512468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1108512469} + - component: {fileID: 1108512471} + - component: {fileID: 1108512470} + - component: {fileID: 1108512472} + m_Layer: 0 + m_Name: Tree A + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1108512469 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108512468} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 15.08, y: -1.9700003, z: 0} + m_LocalScale: {x: 0.67880195, y: 0.67880195, z: 0.67880195} + m_Children: + - {fileID: 390541824} + m_Father: {fileID: 217255372} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1108512470 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108512468} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 944b339e9356d4737b4ca1c72673fb91, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1108512471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108512468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8b26d0461d17044fbaf93e8736c54c4d, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &1108512472 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108512468} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1122971305 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1122971306} + - component: {fileID: 1122971308} + - component: {fileID: 1122971307} + - component: {fileID: 1122971309} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1122971306 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1122971305} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 12.1, y: -2.0499997, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 173102065} + m_Father: {fileID: 1524777626} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1122971307 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1122971305} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1122971308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1122971305} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &1122971309 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1122971305} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1157984932 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1157984933} + - component: {fileID: 1157984935} + - component: {fileID: 1157984934} + m_Layer: 0 + m_Name: Tree A Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1157984933 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1157984932} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1359782555} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1157984934 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1157984932} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -46 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 944b339e9356d4737b4ca1c72673fb91, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &1157984935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1157984932} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8b26d0461d17044fbaf93e8736c54c4d, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &1266665538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1266665539} + - component: {fileID: 1266665541} + - component: {fileID: 1266665540} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1266665539 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266665538} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1564830665} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1266665540 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266665538} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &1266665541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266665538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &1292257332 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1292257333} + - component: {fileID: 1292257335} + - component: {fileID: 1292257334} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1292257333 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292257332} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1549235776} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1292257334 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292257332} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &1292257335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292257332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &1334050442 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1334050443} + - component: {fileID: 1334050445} + - component: {fileID: 1334050444} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1334050443 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1334050442} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1885952535} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1334050444 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1334050442} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &1334050445 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1334050442} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &1339511684 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1339511685} + - component: {fileID: 1339511687} + - component: {fileID: 1339511686} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1339511685 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1339511684} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 78273746} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1339511686 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1339511684} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &1339511687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1339511684} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &1359782554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1359782555} + - component: {fileID: 1359782557} + - component: {fileID: 1359782556} + - component: {fileID: 1359782558} + m_Layer: 0 + m_Name: Tree A + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1359782555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1359782554} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 6.97, y: -1.9700003, z: 0} + m_LocalScale: {x: 1.1293057, y: 1.1293057, z: 1.1293057} + m_Children: + - {fileID: 1157984933} + m_Father: {fileID: 217255372} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1359782556 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1359782554} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 944b339e9356d4737b4ca1c72673fb91, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1359782557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1359782554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8b26d0461d17044fbaf93e8736c54c4d, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &1359782558 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1359782554} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1501966454 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1501966455} + - component: {fileID: 1501966457} + - component: {fileID: 1501966456} + m_Layer: 0 + m_Name: Tree A Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1501966455 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1501966454} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 936688497} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1501966456 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1501966454} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -46 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 944b339e9356d4737b4ca1c72673fb91, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &1501966457 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1501966454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8b26d0461d17044fbaf93e8736c54c4d, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &1509054607 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1509054608} + - component: {fileID: 1509054610} + - component: {fileID: 1509054609} + - component: {fileID: 1509054611} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1509054608 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1509054607} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -7.76, y: -2.3899999, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 1668355870} + m_Father: {fileID: 1524777626} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1509054609 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1509054607} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1509054610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1509054607} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &1509054611 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1509054607} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1524777625 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1524777626} + - component: {fileID: 1524777627} + m_Layer: 0 + m_Name: Trees C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1524777626 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524777625} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 263283932} + - {fileID: 78273746} + - {fileID: 611676649} + - {fileID: 1509054608} + - {fileID: 861329492} + - {fileID: 1885952535} + - {fileID: 2141145265} + - {fileID: 286644245} + - {fileID: 635919996} + - {fileID: 979700885} + - {fileID: 25886066} + - {fileID: 1122971306} + - {fileID: 1564830665} + - {fileID: 1549235776} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!210 &1524777627 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524777625} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1549235773 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1549235776} + - component: {fileID: 1549235775} + - component: {fileID: 1549235774} + - component: {fileID: 1549235777} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1971053207 &1549235774 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1549235773} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1549235775 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1549235773} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!4 &1549235776 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1549235773} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -12.79, y: -1.0899997, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 1292257333} + m_Father: {fileID: 1524777626} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!210 &1549235777 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1549235773} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1564830664 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1564830665} + - component: {fileID: 1564830667} + - component: {fileID: 1564830666} + - component: {fileID: 1564830668} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1564830665 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1564830664} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 14.21, y: -0.7199998, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 1266665539} + m_Father: {fileID: 1524777626} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1564830666 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1564830664} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1564830667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1564830664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &1564830668 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1564830664} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1611974223 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1611974224} + - component: {fileID: 1611974226} + - component: {fileID: 1611974225} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1611974224 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1611974223} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2141145265} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1611974225 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1611974223} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &1611974226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1611974223} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &1668355869 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1668355870} + - component: {fileID: 1668355872} + - component: {fileID: 1668355871} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1668355870 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1668355869} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1509054608} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1668355871 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1668355869} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &1668355872 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1668355869} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &1715408666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1715408667} + - component: {fileID: 1715408669} + - component: {fileID: 1715408668} + - component: {fileID: 1715408670} + m_Layer: 0 + m_Name: Tree B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1715408667 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715408666} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 8.93, y: -2.5000002, z: 0} + m_LocalScale: {x: 0.67636573, y: 0.67636573, z: 0.67636573} + m_Children: + - {fileID: 255668689} + m_Father: {fileID: 2056216027} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1715408668 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715408666} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.6428366, y: 1.7089672, z: 0} + m_Extent: {x: 3.7357302, y: 3.6895504, z: 0} +--- !u!114 &1715408669 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715408666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.359375, y: 3.670249, z: 0} + leftTangent: {x: 0.41431007, y: 0.28194088, z: -0} + rightTangent: {x: -0.41431007, y: -0.28194088, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.43426514, y: 0.2129879, z: 0} + rightTangent: {x: -0.43426514, y: -0.2129879, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9951401, y: 1.8612032, z: 0} + leftTangent: {x: 0.25881386, y: 0.30647945, z: 0} + rightTangent: {x: -0.25881386, y: -0.30647945, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.05688286, y: 0.58109426, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.029663086, y: 0.2388587, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.7826357, y: 1.5290413, z: 0} + leftTangent: {x: -0.11582279, y: -0.65826845, z: 0} + rightTangent: {x: 0.11582279, y: 0.65826845, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.577505, y: 3.9892187, z: 0} + leftTangent: {x: 0.206254, y: -0.21478653, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0928936, y: 4.5724335, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.9805527, y: 4.9319496, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.621972, y: 4.854555, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.9119539, y: 3.9721088, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2991333, y: 4.114603, z: 0} + leftTangent: {x: -0.14927785, y: 0.20863414, z: -0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.13505363, y: -0.33310318, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.04481411, y: -0.89365387, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.72527885, y: 5.110651, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3317413, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.32624054, y: 0.31383038, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.09288406, y: -0.34268284, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.976551, y: 4.190735, z: 0} + leftTangent: {x: -0.30699492, y: -0.22119066, z: -0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &1715408670 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715408666} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1765691960 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1765691961} + - component: {fileID: 1765691963} + - component: {fileID: 1765691962} + - component: {fileID: 1765691964} + m_Layer: 0 + m_Name: Tree B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1765691961 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1765691960} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.72, y: -1.5600002, z: 0} + m_LocalScale: {x: 0.9053248, y: 0.9053248, z: 0.9053248} + m_Children: + - {fileID: 316794813} + m_Father: {fileID: 2056216027} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1765691962 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1765691960} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.6428366, y: 1.7089672, z: 0} + m_Extent: {x: 3.7357302, y: 3.6895504, z: 0} +--- !u!114 &1765691963 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1765691960} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.359375, y: 3.670249, z: 0} + leftTangent: {x: 0.41431007, y: 0.28194088, z: -0} + rightTangent: {x: -0.41431007, y: -0.28194088, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.43426514, y: 0.2129879, z: 0} + rightTangent: {x: -0.43426514, y: -0.2129879, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9951401, y: 1.8612032, z: 0} + leftTangent: {x: 0.25881386, y: 0.30647945, z: 0} + rightTangent: {x: -0.25881386, y: -0.30647945, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.05688286, y: 0.58109426, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.029663086, y: 0.2388587, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.7826357, y: 1.5290413, z: 0} + leftTangent: {x: -0.11582279, y: -0.65826845, z: 0} + rightTangent: {x: 0.11582279, y: 0.65826845, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.577505, y: 3.9892187, z: 0} + leftTangent: {x: 0.206254, y: -0.21478653, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0928936, y: 4.5724335, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.9805527, y: 4.9319496, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.621972, y: 4.854555, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.9119539, y: 3.9721088, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2991333, y: 4.114603, z: 0} + leftTangent: {x: -0.14927785, y: 0.20863414, z: -0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.13505363, y: -0.33310318, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.04481411, y: -0.89365387, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.72527885, y: 5.110651, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3317413, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.32624054, y: 0.31383038, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.09288406, y: -0.34268284, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.976551, y: 4.190735, z: 0} + leftTangent: {x: -0.30699492, y: -0.22119066, z: -0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: e7f74cbc8d9e64d30a689bae88315b93, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &1765691964 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1765691960} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1817488799 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1817488802} + - component: {fileID: 1817488801} + - component: {fileID: 1817488800} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1817488800 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817488799} + m_Enabled: 1 +--- !u!20 &1817488801 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817488799} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.20545456, g: 0.37275326, b: 0.67800003, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 10 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1817488802 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817488799} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1885952534 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1885952535} + - component: {fileID: 1885952537} + - component: {fileID: 1885952536} + - component: {fileID: 1885952538} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1885952535 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885952534} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2.18, y: -2, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 1334050443} + m_Father: {fileID: 1524777626} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1885952536 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885952534} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &1885952537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885952534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &1885952538 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885952534} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1943032837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1943032838} + - component: {fileID: 1943032840} + - component: {fileID: 1943032839} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1943032838 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1943032837} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 635919996} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &1943032839 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1943032837} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &1943032840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1943032837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &2011677550 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2011677551} + - component: {fileID: 2011677553} + - component: {fileID: 2011677552} + m_Layer: 0 + m_Name: Tree C Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2011677551 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2011677550} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 25886066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &2011677552 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2011677550} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -152 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &2011677553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2011677550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!1 &2056216026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2056216027} + - component: {fileID: 2056216028} + m_Layer: 0 + m_Name: Trees B + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2056216027 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2056216026} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 917189146} + - {fileID: 288543831} + - {fileID: 1765691961} + - {fileID: 1715408667} + - {fileID: 226413388} + - {fileID: 151788794} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!210 &2056216028 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2056216026} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 +--- !u!1 &2141145264 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2141145265} + - component: {fileID: 2141145267} + - component: {fileID: 2141145266} + - component: {fileID: 2141145268} + m_Layer: 0 + m_Name: Tree C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2141145265 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141145264} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.76, y: -2, z: 1.42} + m_LocalScale: {x: 0.51976, y: 0.51976, z: 0.51976} + m_Children: + - {fileID: 1611974224} + m_Father: {fileID: 1524777626} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &2141145266 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141145264} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.61055565, y: 1.7089672, z: 0} + m_Extent: {x: 3.768011, y: 3.6895504, z: 0} +--- !u!114 &2141145267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141145264} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 3.2161665, y: 3.7039447, z: 0} + leftTangent: {x: 0.29637432, y: 0.3156371, z: 0} + rightTangent: {x: -0.18563461, y: -0.12632513, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4945831, y: 3.3575697, z: 0} + leftTangent: {x: 0.28138256, y: 0.13293266, z: 0} + rightTangent: {x: -0.34662533, y: -0.16375494, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6725292, y: 2.835577, z: 0} + leftTangent: {x: 0.23968983, y: 0.117557526, z: 0} + rightTangent: {x: -0.40787888, y: -0.20004654, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.2641973, y: 2.2486148, z: 0} + leftTangent: {x: 0.21426773, y: 0.30344486, z: 0} + rightTangent: {x: -0.013861656, y: -0.019630432, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9024763, y: 1.9370184, z: 0} + leftTangent: {x: 0.25271893, y: 0.13478279, z: 0} + rightTangent: {x: -0.1273861, y: -0.19007063, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83741856, y: 1.205905, z: 0} + leftTangent: {x: -0.01540947, y: 0.30619144, z: 0} + rightTangent: {x: 0.010803223, y: -0.21466827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.8321533, y: 0.48545122, z: 0} + leftTangent: {x: -0.023444176, y: 0.23949337, z: 0} + rightTangent: {x: 0.05688286, y: -0.58109426, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.91511345, y: -0.9579406, z: 0} + leftTangent: {x: -0.1334362, y: 0.42494583, z: 0} + rightTangent: {x: 0.1334362, y: -0.42494583, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3592415, y: -1.9805832, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.5145779, y: -1.9126239, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.178504, y: -1.1498156, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.91342354, y: 0.3069253, z: 0} + leftTangent: {x: -0.06021799, y: -0.48489377, z: -0} + rightTangent: {x: 0.014711857, y: 0.11846447, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.711041, y: 1.000072, z: 0} + leftTangent: {x: -0.05616665, y: -0.261549, z: 0} + rightTangent: {x: 0.0570817, y: 0.2658105, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.6562767, y: 1.6638246, z: 0} + leftTangent: {x: -0.015919685, y: -0.1831832, z: 0} + rightTangent: {x: 0.031583786, y: 0.36343002, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.95652676, y: 2.7984266, z: 0} + leftTangent: {x: 0.1873169, y: -0.41380215, z: 0} + rightTangent: {x: -0.1873169, y: 0.41380262, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7770863, y: 3.541214, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.220262, y: 3.564436, z: 0} + leftTangent: {x: 0.15812826, y: -0.080470085, z: -0} + rightTangent: {x: -0.15812826, y: 0.080470085, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.6112013, y: 4.05661, z: 0} + leftTangent: {x: 0.032327175, y: -0.22142982, z: 0} + rightTangent: {x: -0.206254, y: 0.21478653, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.0591974, y: 4.336563, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.1574554, y: 4.5612955, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.7904515, y: 4.7113476, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2803297, y: 4.391474, z: 0} + leftTangent: {x: -0.16483545, y: 0.27308178, z: 0} + rightTangent: {x: -0.037330627, y: -0.23173237, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.0535293, y: 3.9288006, z: 0} + leftTangent: {x: -0.051990986, y: 0.01066494, z: 0} + rightTangent: {x: 0.14825106, y: -0.03041172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7603226, y: 3.9468374, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.7951679, y: 4.372101, z: 0} + leftTangent: {x: 0.113922596, y: -0.19186401, z: 0} + rightTangent: {x: -0.113922596, y: 0.19186401, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.236267, y: 5.0282946, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.6668215, y: 5.157666, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3540664, y: 4.439948, z: 0} + leftTangent: {x: -0.108444214, y: 0.30963707, z: 0} + rightTangent: {x: -0.0831933, y: -0.2580328, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2570138, y: 4.0135155, z: 0} + leftTangent: {x: -0.042501926, y: 0.059401512, z: 0} + rightTangent: {x: 0.14927785, y: -0.20863414, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.61097145, y: 3.5265284, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.79677916, y: 3.9602566, z: 0} + leftTangent: {x: 0.12550545, y: -0.21432257, z: 0} + rightTangent: {x: -0.05933857, y: 0.101331234, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.024796, y: 4.2295275, z: 0} + leftTangent: {x: 0.056889057, y: -0.11766052, z: 0} + rightTangent: {x: -0.18988562, y: 0.3927288, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.2740116, y: 5.2245064, z: 0} + leftTangent: {x: -0.0698576, y: -0.17230129, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.58708763, y: 5.3985176, z: 0} + leftTangent: {x: -0.19785118, y: -0.041404724, z: 0} + rightTangent: {x: 0.021735191, y: -0.43342495, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.5141282, y: 4.297098, z: 0} + leftTangent: {x: -0.087246895, y: 0.29190826, z: 0} + rightTangent: {x: 0.03632927, y: -0.12154961, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.32701302, y: 4.0581894, z: 0} + leftTangent: {x: -0.053714752, y: 0.08466339, z: 0} + rightTangent: {x: 0.08326244, y: -0.1312356, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.20596313, y: 3.7745, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.041446686, y: 3.5324764, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.038399696, y: 3.9766502, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.042672634, y: 4.3592806, z: 0} + leftTangent: {x: 0.011422487, y: -0.12856482, z: -0} + rightTangent: {x: -0.011422487, y: 0.12856482, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.24588203, y: 5.0692883, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.2021923, y: 5.1523314, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.47027874, y: 4.4432325, z: 0} + leftTangent: {x: -0.01453297, y: 0.12667656, z: -0} + rightTangent: {x: 0.01453297, y: -0.12667656, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.41903877, y: 4.060259, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.53061104, y: 3.866706, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.7490721, y: 4.0666647, z: 0} + leftTangent: {x: -0.07262421, y: -0.14140224, z: 0} + rightTangent: {x: 0.07117653, y: 0.13858509, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.83037186, y: 4.522544, z: 0} + leftTangent: {x: -0.012257576, y: -0.09680939, z: 0} + rightTangent: {x: 0.024763772, y: 0.19558822, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.969573, y: 5.026411, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.4917965, y: 5.0735054, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3690004, y: 4.648546, z: 0} + leftTangent: {x: 0.020481981, y: 0.13927653, z: -0} + rightTangent: {x: -0.020481981, y: -0.13927653, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.175128, y: 4.061081, z: 0} + leftTangent: {x: 0.0147908535, y: 0.09184909, z: 0} + rightTangent: {x: -0.0147908535, y: -0.09184909, z: -0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.1583805, y: 3.7965221, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.3441639, y: 3.7633934, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.8233624, y: 4.280553, z: 0} + leftTangent: {x: -0.32624054, y: -0.31383038, z: 0} + rightTangent: {x: 0.10512543, y: 0.10112572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9973726, y: 4.6721106, z: 0} + leftTangent: {x: -0.06396866, y: -0.1184988, z: 0} + rightTangent: {x: 0.13454914, y: 0.24924564, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.2609882, y: 5.106245, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8487377, y: 4.85763, z: 0} + leftTangent: {x: -0.18434525, y: 0.09165478, z: 0} + rightTangent: {x: -0.023777962, y: -0.08772373, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4676914, y: 4.539255, z: 0} + leftTangent: {x: 0.10719395, y: 0.13840485, z: 0} + rightTangent: {x: -0.12870502, y: -0.16617966, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.1631107, y: 4.0083466, z: 0} + leftTangent: {x: 0.12242985, y: 0.16440964, z: 0} + rightTangent: {x: -0.17392349, y: -0.23356056, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.7915497, y: 3.5935783, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5975342, y: 3.977995, z: 0} + leftTangent: {x: -0.40057755, y: -0.17875051, z: 0} + rightTangent: {x: 0.060819626, y: 0.027139664, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.8040981, y: 3.9970493, z: 0} + leftTangent: {x: -0.07244396, y: -0.020699501, z: 0} + rightTangent: {x: 0.11561108, y: 0.03303337, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.0860624, y: 4.148615, z: 0} + leftTangent: {x: -0.053355217, y: -0.038443565, z: 0} + rightTangent: {x: 0.30699492, y: 0.22119066, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.9016972, y: 4.94341, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.3785667, y: 4.67953, z: 0} + leftTangent: {x: 0, y: 0, z: 0} + rightTangent: {x: 0, y: 0, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 7963c0cfd94934625ac7a688152294d9, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 +--- !u!210 &2141145268 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141145264} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &2146085261 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2146085262} + - component: {fileID: 2146085264} + - component: {fileID: 2146085263} + m_Layer: 0 + m_Name: Tree A Canopy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2146085262 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146085261} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.51, y: 7.41, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 693693579} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1971053207 &2146085263 +SpriteShapeRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146085261} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -46 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_MaskInteraction: 0 + m_ShapeTexture: {fileID: 2800000, guid: 944b339e9356d4737b4ca1c72673fb91, type: 3} + m_Sprites: [] + m_LocalAABB: + m_Center: {x: 0.0007739067, y: -0.4286661, z: 0} + m_Extent: {x: 6.748953, y: 5.028426, z: 0} +--- !u!114 &2146085264 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2146085261} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Spline: + m_IsOpenEnded: 0 + m_ControlPoints: + - position: {x: 4.842697, y: 3.0536528, z: 0} + leftTangent: {x: -0.46514416, y: 0.6982794, z: 0} + rightTangent: {x: -0.98501754, y: -0.19482803, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.149143, y: 2.2038698, z: 0} + leftTangent: {x: -0.25518036, y: 0.18873692, z: 0} + rightTangent: {x: 0.34710693, y: -0.25672722, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.749752, y: 2.1744652, z: 0} + leftTangent: {x: -0.37604332, y: 0.8819065, z: 0} + rightTangent: {x: -0.6860409, y: -0.41157246, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2604628, y: 1.6912718, z: 0} + leftTangent: {x: -0.059747696, y: 0.2612772, z: 0} + rightTangent: {x: 0.94542885, y: -0.04471779, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2868843, y: 0.65911484, z: 0} + leftTangent: {x: -0.08357048, y: 0.233428, z: 0} + rightTangent: {x: 0.1258831, y: -0.35161018, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.122902, y: 0.66643333, z: 0} + leftTangent: {x: -0.29554272, y: 0.18166637, z: 0} + rightTangent: {x: -0.6404972, y: -0.30658436, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.842326, y: 0.31585217, z: 0} + leftTangent: {x: -0.05978012, y: 0.15721035, z: 0} + rightTangent: {x: 0.04073143, y: -0.107115746, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.6654167, y: 0.18912315, z: 0} + leftTangent: {x: -0.06389809, y: 0.5598202, z: 0} + rightTangent: {x: -0.46305275, y: 0.1414814, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.368513, y: -0.011343002, z: 0} + leftTangent: {x: -0.021983147, y: 0.015303612, z: 0} + rightTangent: {x: 0.16562653, y: -0.11529827, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.561116, y: -0.73729897, z: 0} + leftTangent: {x: 0.19778919, y: 0.2788496, z: 0} + rightTangent: {x: -0.1742773, y: 0.6115341, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.184222, y: -0.5616255, z: 0} + leftTangent: {x: 0.68896294, y: 0.8554535, z: 0} + rightTangent: {x: -0.43468094, y: 0.39962196, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.729164, y: -0.6656771, z: 0} + leftTangent: {x: 0.122961044, y: 0.28598404, z: 0} + rightTangent: {x: 0.45636845, y: -0.05565548, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.2144938, y: -0.859148, z: 0} + leftTangent: {x: 0.1869936, y: 0.18153954, z: 0} + rightTangent: {x: -0.1869936, y: -0.18153954, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.1457024, y: -1.1232643, z: 0} + leftTangent: {x: -0.5345783, y: 0.036352158, z: 0} + rightTangent: {x: 0.14191914, y: -0.42528534, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.714102, y: -1.7794142, z: 0} + leftTangent: {x: 0.1886692, y: 0.4288845, z: 0} + rightTangent: {x: -0.54428864, y: 0.32612705, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.600374, y: -2.1254349, z: 0} + leftTangent: {x: 0.08338165, y: 0.104310036, z: -0} + rightTangent: {x: -0.08338165, y: -0.104310036, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.181938, y: -2.2180634, z: 0} + leftTangent: {x: 0.10590649, y: 0.4469347, z: 0} + rightTangent: {x: -0.10590458, y: 0.15244389, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8189154, y: -1.6906357, z: 0} + leftTangent: {x: 0.32985497, y: 0.16756153, z: 0} + rightTangent: {x: -0.10930061, y: 0.1140461, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.9714613, y: -2.0932398, z: 0} + leftTangent: {x: -0.08672142, y: 0.48350525, z: 0} + rightTangent: {x: 0.06339455, y: -0.353446, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8072453, y: -2.1588326, z: 0} + leftTangent: {x: -0.14785767, y: 0.35762978, z: 0} + rightTangent: {x: 0.7605448, y: -0.23285866, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 6.17338, y: -3.2872, z: 0} + leftTangent: {x: 0.28656864, y: 0.2684822, z: 0} + rightTangent: {x: -0.026841164, y: 0.62389946, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.8428383, y: -3.3735342, z: 0} + leftTangent: {x: 0.12148476, y: 0.5996351, z: 0} + rightTangent: {x: -0.4254961, y: 0.7156172, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2637434, y: -3.2851763, z: 0} + leftTangent: {x: 0.13748741, y: 0.28014755, z: 0} + rightTangent: {x: -0.26539803, y: -0.5407772, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.765026, y: -3.6137066, z: 0} + leftTangent: {x: -0.1565094, y: 0.26346588, z: 0} + rightTangent: {x: 0.1565094, y: -0.26346588, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.759465, y: -4.0411563, z: 0} + leftTangent: {x: 0.01789093, y: 0.06118679, z: 0} + rightTangent: {x: -0.042197227, y: -0.1443119, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.2751274, y: -3.9274988, z: 0} + leftTangent: {x: 0.19284344, y: 0.22602367, z: 0} + rightTangent: {x: 0.13536263, y: -0.14547539, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 5.4815645, y: -4.2211666, z: 0} + leftTangent: {x: 0.026311874, y: 0.04362297, z: 0} + rightTangent: {x: -0.09507955, y: -0.15763362, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.957515, y: -4.596761, z: 0} + leftTangent: {x: 0.44955254, y: 0.17905235, z: 0} + rightTangent: {x: -0.7130451, y: -0.45710754, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.401864, y: -4.3257003, z: 0} + leftTangent: {x: 0.1128853, y: -0.12269877, z: -0} + rightTangent: {x: -0.05100727, y: 0.05544138, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.405222, y: -3.7872267, z: 0} + leftTangent: {x: 0.6351795, y: -0.11997414, z: 0} + rightTangent: {x: 0.05604744, y: 0.3643427, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 4.173502, y: -3.3677387, z: 0} + leftTangent: {x: 0.334507, y: -0.24208546, z: 0} + rightTangent: {x: -0.4423027, y: 0.32009602, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.8946753, y: -3.8394208, z: 0} + leftTangent: {x: 0.24389267, y: -0.22975159, z: 0} + rightTangent: {x: -0.24389267, y: 0.22975111, z: 0} + mode: 1 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.3099508, y: -4.16985, z: 0} + leftTangent: {x: 0.3787346, y: 0.038001537, z: 0} + rightTangent: {x: 0.110370636, y: 0.36677504, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.180334, y: -3.5487986, z: 0} + leftTangent: {x: 0.39083004, y: -0.0067796707, z: 0} + rightTangent: {x: -0.10656071, y: 0.095106125, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.6059914, y: -3.4799633, z: 0} + leftTangent: {x: 0.43336868, y: 0.28313637, z: 0} + rightTangent: {x: -0.13688469, y: 0.114209175, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.4267352, y: -3.0078354, z: 0} + leftTangent: {x: 0.58955383, y: 0.4144659, z: 0} + rightTangent: {x: -0.6038761, y: 0.65348434, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.6166661, y: -2.6917048, z: 0} + leftTangent: {x: 0.27279282, y: -0.93830156, z: 0} + rightTangent: {x: -0.30190563, y: -0.005326271, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.9129431, y: -3.2032948, z: 0} + leftTangent: {x: 0.20650005, y: 0.4817562, z: 0} + rightTangent: {x: -0.33580494, y: 0.6037283, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.2539997, y: -3.135602, z: 0} + leftTangent: {x: 0.44612813, y: 0.11222839, z: 0} + rightTangent: {x: -0.35859704, y: -0.09020901, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -1.3104165, y: -3.277318, z: 0} + leftTangent: {x: 0.23278904, y: 0.6811428, z: 0} + rightTangent: {x: -0.5718541, y: 0.6515808, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.8319044, y: -3.1292267, z: 0} + leftTangent: {x: 0.46818423, y: 0.08489704, z: 0} + rightTangent: {x: -0.2812922, y: -0.05100727, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.278289, y: -3.8055553, z: 0} + leftTangent: {x: 0.31745243, y: 0.3524227, z: 0} + rightTangent: {x: -0.33680677, y: 0.6963768, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.9952595, y: -4.0934596, z: 0} + leftTangent: {x: 0.24181223, y: 0.35848808, z: 0} + rightTangent: {x: -0.21053219, y: -0.31211567, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.4443274, y: -4.769828, z: 0} + leftTangent: {x: -0.14350319, y: 1.0470924, z: 0} + rightTangent: {x: -0.7089062, y: -0.25762463, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.024274, y: -5.4570923, z: 0} + leftTangent: {x: 0.21583176, y: 0.5733261, z: 0} + rightTangent: {x: -0.45623875, y: 0.6600208, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.8562536, y: -3.8500762, z: 0} + leftTangent: {x: -0.25752544, y: -0.66076374, z: 0} + rightTangent: {x: -0.13257408, y: 0.07835674, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.533455, y: -3.7817793, z: 0} + leftTangent: {x: 0.55585384, y: 0.5684366, z: 0} + rightTangent: {x: -0.17933083, y: 0.509676, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.103485, y: -3.9516172, z: 0} + leftTangent: {x: 0.45466328, y: 0.77949333, z: 0} + rightTangent: {x: -0.5624981, y: 0.7559643, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.3386383, y: -2.498311, z: 0} + leftTangent: {x: -0.3080988, y: -0.2314291, z: 0} + rightTangent: {x: 0.0177145, y: 0.09904194, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.910779, y: -2.4954557, z: 0} + leftTangent: {x: 0.30684566, y: -0.08076191, z: 0} + rightTangent: {x: -0.15530014, y: 0.035564423, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.409728, y: -2.5751123, z: 0} + leftTangent: {x: 0.5852232, y: 0.953145, z: 0} + rightTangent: {x: -0.5660629, y: 0.45170593, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.7559204, y: -1.1190958, z: 0} + leftTangent: {x: -0.79974174, y: -0.066244125, z: 0} + rightTangent: {x: 0.041540146, y: 0.113129616, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.1818695, y: -0.73166656, z: 0} + leftTangent: {x: 0.84655, y: 0.2932682, z: 0} + rightTangent: {x: -0.04629135, y: 0.046333313, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.712138, y: -1.4716253, z: 0} + leftTangent: {x: 0.314332, y: 0.50869083, z: 0} + rightTangent: {x: -0.12867546, y: 0.10830879, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -6.411022, y: 0.07046509, z: 0} + leftTangent: {x: -0.18693066, y: -0.39098167, z: 0} + rightTangent: {x: 0.6308994, y: 0.27458572, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.464736, y: 0.1550293, z: 0} + leftTangent: {x: -0.08733368, y: -0.40212727, z: 0} + rightTangent: {x: 0.08283138, y: 0.38139915, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.6063585, y: 0.6617527, z: 0} + leftTangent: {x: 0.8201084, y: -0.013622284, z: 0} + rightTangent: {x: -0.06596756, y: 0.19331455, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -5.8227644, y: 1.361414, z: 0} + leftTangent: {x: 0.83205414, y: 0.2078495, z: 0} + rightTangent: {x: 0.19268036, y: 0.6882601, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.588561, y: 1.7893763, z: 0} + leftTangent: {x: -0.186059, y: -0.20398903, z: 0} + rightTangent: {x: 0.20092964, y: 0.22029305, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.667205, y: 2.2387218, z: 0} + leftTangent: {x: 0.2551403, y: -0.23510647, z: 0} + rightTangent: {x: -0.0376606, y: 0.19423485, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -4.580907, y: 2.8373194, z: 0} + leftTangent: {x: 0.7170656, y: -0.089307785, z: 0} + rightTangent: {x: 0.50866604, y: 0.43827343, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.4655323, y: 2.9239826, z: 0} + leftTangent: {x: -0.19108582, y: -0.12285614, z: 0} + rightTangent: {x: 0.19291592, y: 0.124032974, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -3.837128, y: 3.5377407, z: 0} + leftTangent: {x: 0.9121423, y: -0.5974684, z: 0} + rightTangent: {x: 0.56984806, y: 0.45535278, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.3444424, y: 3.4395485, z: 0} + leftTangent: {x: -0.28999424, y: -0.1061039, z: 0} + rightTangent: {x: 0.29269123, y: 0.1070919, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -2.2152555, y: 4.5231056, z: 0} + leftTangent: {x: 0.66106176, y: -0.8388176, z: 0} + rightTangent: {x: 0.6042404, y: 0.3724308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: -0.68036103, y: 3.4601822, z: 0} + leftTangent: {x: -0.21909523, y: 0.00019645691, z: 0} + rightTangent: {x: 0.49437714, y: -0.00044631958, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.0082848, y: 4.59976, z: 0} + leftTangent: {x: -0.52832985, y: 0.0703907, z: 0} + rightTangent: {x: -0.99039173, y: -1.0995512, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 0.85266876, y: 3.4385777, z: 0} + leftTangent: {x: -0.56994057, y: 0.139328, z: 0} + rightTangent: {x: 0.9365616, y: -0.22895241, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 1.9803336, y: 4.193098, z: 0} + leftTangent: {x: -0.58667946, y: 0.0955925, z: 0} + rightTangent: {x: -0.66955566, y: -0.7060642, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 2.5440044, y: 3.2979183, z: 0} + leftTangent: {x: -0.36831474, y: 0.16205788, z: 0} + rightTangent: {x: 0.43422318, y: -0.1910572, z: 0} + mode: 0 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.6531794, y: 4.0017204, z: 0} + leftTangent: {x: -0.32584476, y: 0.007930756, z: 0} + rightTangent: {x: -0.49174595, y: -0.58016014, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + - position: {x: 3.7744694, y: 3.112564, z: 0} + leftTangent: {x: -0.019541502, y: 0.027026176, z: 0} + rightTangent: {x: 0.2474041, y: -0.029967308, z: 0} + mode: 2 + height: 1 + bevelCutoff: 0 + bevelSize: 0 + spriteIndex: 0 + corner: 0 + m_SpriteShape: {fileID: 11400000, guid: 8b26d0461d17044fbaf93e8736c54c4d, type: 2} + m_FillPixelPerUnit: 100 + m_StretchTiling: 1 + m_SplineDetail: 16 + m_AdaptiveUV: 1 + m_StretchUV: 0 + m_WorldSpaceUV: 0 + m_ColliderDetail: 4 + m_ColliderOffset: 0 + m_UpdateCollider: 0 + m_OptimizeCollider: 1 + m_OptimizeGeometry: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/3 Platformer.unity.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/3 Platformer.unity.meta new file mode 100644 index 0000000..76b4a7c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/3 Platformer.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 821f2d8bf21d24b0cb004c6339f75628 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles.meta new file mode 100644 index 0000000..a356c26 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6556cec7862aa449a80e114e74be18a7 +folderAsset: yes +timeCreated: 1505270069 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Basic.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Basic.asset new file mode 100644 index 0000000..9f70916 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Basic.asset @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Basic + m_EditorClassIdentifier: + m_Angles: + - m_Start: -92 + m_End: 86 + m_Order: 0 + m_Sprites: + - {fileID: 21300000, guid: 8a213466b4b3642faa34dd7853586d96, type: 3} + - m_Start: -274 + m_End: -92 + m_Order: 0 + m_Sprites: + - {fileID: 21300000, guid: 8c2b3b75a86844168b54c83f67a5fe8e, type: 3} + m_FillTexture: {fileID: 2800000, guid: 9f145c794d2be4ed98c48eefdf471e02, type: 3} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Basic.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Basic.asset.meta new file mode 100644 index 0000000..1601183 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Basic.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d39b7adf6769e40ecb09cfb263673d20 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Castle Wall.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Castle Wall.asset new file mode 100644 index 0000000..223babe --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Castle Wall.asset @@ -0,0 +1,64 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Castle Wall + m_EditorClassIdentifier: + m_Angles: + - m_Start: -64 + m_End: 61 + m_Order: 7 + m_Sprites: + - {fileID: 21300002, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 21300012, guid: a8321f6fae34f034787010a903e29648, type: 3} + - m_Start: 61 + m_End: 127 + m_Order: 4 + m_Sprites: + - {fileID: 21300014, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - m_Start: 127 + m_End: 233 + m_Order: 8 + m_Sprites: + - {fileID: 21300010, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - m_Start: -127 + m_End: -64 + m_Order: 3 + m_Sprites: + - {fileID: 21300006, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + m_FillTexture: {fileID: 2800000, guid: 815f15421880340e1ac8fb4767057d51, type: 3} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 21300000, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - m_CornerType: 1 + m_Sprites: + - {fileID: 21300004, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - m_CornerType: 2 + m_Sprites: + - {fileID: 21300012, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - m_CornerType: 3 + m_Sprites: + - {fileID: 21300008, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 21300012, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - m_CornerType: 7 + m_Sprites: + - {fileID: 21300008, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Castle Wall.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Castle Wall.asset.meta new file mode 100644 index 0000000..ed5f7f5 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Castle Wall.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 49058e371087b49b18fb1c4177f3b7bd +timeCreated: 1507533165 +licenseType: Pro +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass Strip.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass Strip.asset new file mode 100644 index 0000000..9c88e92 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass Strip.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Grass Strip + m_EditorClassIdentifier: + m_Angles: + - m_Start: -180 + m_End: 180 + m_Order: 5 + m_Sprites: + - {fileID: 21300000, guid: 4f39beab6f36e4012aa0112a3a02828d, type: 3} + m_FillTexture: {fileID: 0} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass Strip.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass Strip.asset.meta new file mode 100644 index 0000000..da2a336 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass Strip.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d640701756c1640db828d0d387d08c8d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass and Rocks.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass and Rocks.asset new file mode 100644 index 0000000..deb595c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass and Rocks.asset @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Grass and Rocks + m_EditorClassIdentifier: + m_Angles: + - m_Start: 45 + m_End: 315 + m_Order: 0 + m_Sprites: + - {fileID: 1887494081247492234, guid: d501f6d7fa84c4038b7449696f44ff38, type: 3} + - m_Start: -45 + m_End: 45 + m_Order: 1 + m_Sprites: + - {fileID: -4069628985407814602, guid: a4fef30bb3ca5463a9c33c123a81604a, type: 3} + m_FillTexture: {fileID: 2800000, guid: 3bab026df42df40a5a6b43d96aac577a, type: 3} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass and Rocks.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass and Rocks.asset.meta new file mode 100644 index 0000000..dbb1687 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Grass and Rocks.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18082d4b1dde54612b6ce63fd49c9014 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform Supports.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform Supports.asset new file mode 100644 index 0000000..3e0a573 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform Supports.asset @@ -0,0 +1,49 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Platform Supports + m_EditorClassIdentifier: + m_Angles: + - m_Start: -180 + m_End: 180 + m_Order: 0 + m_Sprites: + - {fileID: 21300016, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 0} + m_FillTexture: {fileID: 0} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform Supports.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform Supports.asset.meta new file mode 100644 index 0000000..d54451c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform Supports.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e22936b0b355342d7b0855d7e938963e +timeCreated: 1507270293 +licenseType: Pro +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform.asset new file mode 100644 index 0000000..fcbfb9b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform.asset @@ -0,0 +1,49 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Platform + m_EditorClassIdentifier: + m_Angles: + - m_Start: -180 + m_End: 180 + m_Order: 0 + m_Sprites: + - {fileID: 21300018, guid: 2a23c00cde465461fb598526b91deedc, type: 3} + - {fileID: 0} + m_FillTexture: {fileID: 0} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform.asset.meta new file mode 100644 index 0000000..cfe75ce --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Platform.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d5a6d064bf23c452287ef7371144927c +timeCreated: 1507270293 +licenseType: Pro +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree A.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree A.asset new file mode 100644 index 0000000..676ffa6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree A.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Tree A + m_EditorClassIdentifier: + m_Angles: [] + m_FillTexture: {fileID: 2800000, guid: 944b339e9356d4737b4ca1c72673fb91, type: 3} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree A.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree A.asset.meta new file mode 100644 index 0000000..86db96d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree A.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b26d0461d17044fbaf93e8736c54c4d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree B.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree B.asset new file mode 100644 index 0000000..dc09298 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree B.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Tree B + m_EditorClassIdentifier: + m_Angles: [] + m_FillTexture: {fileID: 2800000, guid: ddb6c47c0e7d0472781803547ddba869, type: 3} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree B.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree B.asset.meta new file mode 100644 index 0000000..66f17b3 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree B.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e7f74cbc8d9e64d30a689bae88315b93 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree C.asset b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree C.asset new file mode 100644 index 0000000..9972a7e --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree C.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3} + m_Name: Tree C + m_EditorClassIdentifier: + m_Angles: [] + m_FillTexture: {fileID: 2800000, guid: 5d7be72d5dc404d048456a48d2b1838e, type: 3} + m_CornerSprites: + - m_CornerType: 0 + m_Sprites: + - {fileID: 0} + - m_CornerType: 1 + m_Sprites: + - {fileID: 0} + - m_CornerType: 2 + m_Sprites: + - {fileID: 0} + - m_CornerType: 3 + m_Sprites: + - {fileID: 0} + - m_CornerType: 4 + m_Sprites: + - {fileID: 0} + - m_CornerType: 5 + m_Sprites: + - {fileID: 0} + - m_CornerType: 6 + m_Sprites: + - {fileID: 0} + - m_CornerType: 7 + m_Sprites: + - {fileID: 0} + m_FillOffset: 0 + m_UseSpriteBorders: 1 diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree C.asset.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree C.asset.meta new file mode 100644 index 0000000..5cd4ef4 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprite Shape Profiles/Tree C.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7963c0cfd94934625ac7a688152294d9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites.meta new file mode 100644 index 0000000..2dd49e2 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e2b06c2628824e9baa4806f97a36d27 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/CastleWall.psd b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/CastleWall.psd new file mode 100644 index 0000000..002de35 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/CastleWall.psd differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/CastleWall.psd.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/CastleWall.psd.meta new file mode 100644 index 0000000..b6e0290 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/CastleWall.psd.meta @@ -0,0 +1,473 @@ +fileFormatVersion: 2 +guid: 2a23c00cde465461fb598526b91deedc +TextureImporter: + internalIDToNameTable: + - first: + 213: 21300000 + second: CWall_TopLeft + - first: + 213: 21300002 + second: CWall_Top + - first: + 213: 21300004 + second: CWall_TopRight + - first: + 213: 21300006 + second: CWall_Right + - first: + 213: 21300008 + second: CWall_BottomRight + - first: + 213: 21300010 + second: CWall_Bottom + - first: + 213: 21300012 + second: CWall_BottomLeft + - first: + 213: 21300014 + second: CWall_Left + - first: + 213: 21300016 + second: CastleWall_0 + - first: + 213: 21300018 + second: CastleBlock01 + - first: + 213: 21300020 + second: CastleWall_Stand + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 64 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: CWall_TopLeft + rect: + serializedVersion: 2 + x: 0 + y: 447 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + physicsShape: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: 85bb4a12799104aea82ffd023631f5eb + internalID: 21300000 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_Top + rect: + serializedVersion: 2 + x: 65 + y: 447 + width: 191 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -95.5, y: 32} + - {x: -95.5, y: -32} + - {x: 95.5, y: -32} + - {x: 95.5, y: 32} + physicsShape: + - - {x: -95.5, y: 32} + - {x: -95.5, y: -32} + - {x: 95.5, y: -32} + - {x: 95.5, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: c0d4dbb40862b42719bed0178fc33863 + internalID: 21300002 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_TopRight + rect: + serializedVersion: 2 + x: 256 + y: 447 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + physicsShape: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: e691435be8e234c8ba6bbd44cf93bf9f + internalID: 21300004 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_Right + rect: + serializedVersion: 2 + x: 193 + y: 383 + width: 192 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + physicsShape: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: e8d31f3d729f846cf901c9b695c0a286 + internalID: 21300006 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_BottomRight + rect: + serializedVersion: 2 + x: 385 + y: 447 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + physicsShape: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: b5f6cd57c80af465b9d7279b93edc0bd + internalID: 21300008 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_Bottom + rect: + serializedVersion: 2 + x: 1 + y: 319 + width: 192 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + physicsShape: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: 940402297287e479a98329d757431010 + internalID: 21300010 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_BottomLeft + rect: + serializedVersion: 2 + x: 321 + y: 447 + width: 64 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + physicsShape: + - - {x: -32, y: 32} + - {x: -32, y: -32} + - {x: 32, y: -32} + - {x: 32, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: 5196786b599a246edb4ade9ef6e46b5f + internalID: 21300012 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CWall_Left + rect: + serializedVersion: 2 + x: 1 + y: 383 + width: 192 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + physicsShape: + - - {x: -96, y: 32} + - {x: -96, y: -32} + - {x: 96, y: -32} + - {x: 96, y: 32} + tessellationDetail: 0 + bones: [] + spriteID: 6f193a5bf4ad94d5280067f257f134f8 + internalID: 21300014 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CastleBlock01 + rect: + serializedVersion: 2 + x: 0 + y: 127 + width: 257 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 65, y: 0, z: 64, w: 0} + outline: + - - {x: -66.5, y: 64} + - {x: -128.5, y: 2} + - {x: -128.5, y: -64} + - {x: 67.5, y: -64} + - {x: 128.5, y: -6} + - {x: 128.5, y: 64} + physicsShape: + - - {x: -67.5, y: 64} + - {x: -128.5, y: 2} + - {x: -128.5, y: -64} + - {x: 67.5, y: -64} + - {x: 128.5, y: -2} + - {x: 128.5, y: 64} + tessellationDetail: 0 + bones: [] + spriteID: 9adb64494e8944defbfc84a91967bc6b + internalID: 21300018 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: CastleWall_0 + rect: + serializedVersion: 2 + x: 261 + y: 160 + width: 160 + height: 156 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: + - - {x: -21, y: 75} + - {x: -69, y: 73} + - {x: -71, y: 71} + - {x: -74, y: 52} + - {x: -73, y: 33} + - {x: -80, y: 24} + - {x: -80, y: -14} + - {x: -70, y: -78} + - {x: 36, y: -78} + - {x: 59, y: -74} + - {x: 80, y: -11} + - {x: 80, y: 75} + physicsShape: + - - {x: 71.5, y: 63.5} + - {x: -77.5, y: 35.5} + - {x: -77.5, y: 9.5} + - {x: -66.5, y: -63.5} + - {x: 34.5, y: -63.5} + - {x: 61.5, y: -33.5} + - {x: 77.5, y: 47.5} + - {x: 77.5, y: 63.5} + tessellationDetail: 0 + bones: [] + spriteID: bbf07de53ae6044018a1edfbc9640bcb + internalID: 21300016 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: e4f4d11a8c7904f3bb1c819a5022a54d + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Dark Grey Fill.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Dark Grey Fill.png new file mode 100644 index 0000000..9e4802a Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Dark Grey Fill.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Dark Grey Fill.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Dark Grey Fill.png.meta new file mode 100644 index 0000000..f7faa0a --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Dark Grey Fill.png.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 9f145c794d2be4ed98c48eefdf471e02 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 25 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: d67ad2464202046f49c52dd3db7d7739 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Outline.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Outline.png new file mode 100644 index 0000000..c322bc5 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Outline.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Outline.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Outline.png.meta new file mode 100644 index 0000000..4fe165c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Outline.png.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 8a213466b4b3642faa34dd7853586d96 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 2 + spritePivot: {x: 0.5, y: 1} + spritePixelsToUnits: 50 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: d699de361857c486da8bfa4efd75d388 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Strip.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Strip.png new file mode 100644 index 0000000..9ec8350 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Strip.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Strip.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Strip.png.meta new file mode 100644 index 0000000..83ba3f0 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Strip.png.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 4f39beab6f36e4012aa0112a3a02828d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.55} + spritePixelsToUnits: 100 + spriteBorder: {x: 128, y: 0, z: 128, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 85f47b77175674af293949de1c4594fd + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Flowers.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Flowers.png new file mode 100644 index 0000000..d8aa983 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Flowers.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Flowers.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Flowers.png.meta new file mode 100644 index 0000000..ee2fd13 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Flowers.png.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 715d5c70d2ef94e2b87c9ba60ec550b0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 9 + spritePivot: {x: 0.5, y: 0.21} + spritePixelsToUnits: 100 + spriteBorder: {x: 128, y: 0, z: 128, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: a4684bca6a22a46389c68b3a5b0a9965 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Small Rocks.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Small Rocks.png new file mode 100644 index 0000000..5436e55 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Small Rocks.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Small Rocks.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Small Rocks.png.meta new file mode 100644 index 0000000..754081c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top - With Small Rocks.png.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: edb6cf28f071342d7bbc2a3b3d8ab101 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 9 + spritePivot: {x: 0.5, y: 0.21} + spritePixelsToUnits: 100 + spriteBorder: {x: 128, y: 0, z: 128, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 0bd06bacadb7f44858bc0fde76fa100c + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top.png new file mode 100644 index 0000000..9ec8350 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top.png.meta new file mode 100644 index 0000000..0f3f5c6 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Grass Top.png.meta @@ -0,0 +1,125 @@ +fileFormatVersion: 2 +guid: a4fef30bb3ca5463a9c33c123a81604a +TextureImporter: + internalIDToNameTable: + - first: + 213: -4069628985407814602 + second: Grass Top_0 + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 9 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 128, y: 0, z: 128, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Grass Top_0 + rect: + serializedVersion: 2 + x: 68 + y: 10 + width: 376 + height: 117 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 60, y: 0, z: 60, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 4df404220b61148108a5978aeb89f09d + internalID: -4069628985407814602 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 85f47b77175674af293949de1c4594fd + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Orange Outline.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Orange Outline.png new file mode 100644 index 0000000..784c8e4 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Orange Outline.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Orange Outline.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Orange Outline.png.meta new file mode 100644 index 0000000..4406d38 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Orange Outline.png.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 8c2b3b75a86844168b54c83f67a5fe8e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 2 + spritePivot: {x: 0.5, y: 1} + spritePixelsToUnits: 50 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 356ec7419b771445ea2ff8415bd5e862 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rock Fill.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rock Fill.png new file mode 100644 index 0000000..9cf91ec Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rock Fill.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rock Fill.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rock Fill.png.meta new file mode 100644 index 0000000..a55482c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rock Fill.png.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 3bab026df42df40a5a6b43d96aac577a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 09c044b8d86ad4e2e98b3381c428d9b4 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rocks.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rocks.png new file mode 100644 index 0000000..650b8d1 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rocks.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rocks.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rocks.png.meta new file mode 100644 index 0000000..e861f6c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Rocks.png.meta @@ -0,0 +1,125 @@ +fileFormatVersion: 2 +guid: d501f6d7fa84c4038b7449696f44ff38 +TextureImporter: + internalIDToNameTable: + - first: + 213: 1887494081247492234 + second: Rocks_0 + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 86, y: 0, z: 76, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Rocks_0 + rect: + serializedVersion: 2 + x: 94 + y: 7 + width: 330 + height: 120 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 35, y: 0, z: 35, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 02cef4068645a4e76909459977c9b305 + internalID: 1887494081247492234 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: efb6638f6e9ae430b8efdc5a7b3accdd + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree FIll C.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree FIll C.png new file mode 100644 index 0000000..c54ab6d Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree FIll C.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree FIll C.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree FIll C.png.meta new file mode 100644 index 0000000..605f202 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree FIll C.png.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: 5d7be72d5dc404d048456a48d2b1838e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 8b0419a5e86774cd5b33c646a82053a6 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill A.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill A.png new file mode 100644 index 0000000..0e6adfc Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill A.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill A.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill A.png.meta new file mode 100644 index 0000000..c27adb8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill A.png.meta @@ -0,0 +1,112 @@ +fileFormatVersion: 2 +guid: 944b339e9356d4737b4ca1c72673fb91 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: e160e2ebf6044493bbf686cbdbdfa624 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill B.png b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill B.png new file mode 100644 index 0000000..3100978 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill B.png differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill B.png.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill B.png.meta new file mode 100644 index 0000000..0b57e91 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Sprites/Tree Fill B.png.meta @@ -0,0 +1,101 @@ +fileFormatVersion: 2 +guid: ddb6c47c0e7d0472781803547ddba869 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: c0b035ae67dfa4e66aa97fd83b179c51 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Textures.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Textures.meta new file mode 100644 index 0000000..c0bba28 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Textures.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 50ccdb76056dc4d5aa4b4b11347f29d8 +folderAsset: yes +timeCreated: 1506491026 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Textures/CastleWallFill.psd b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Textures/CastleWallFill.psd new file mode 100644 index 0000000..7e67400 Binary files /dev/null and b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Textures/CastleWallFill.psd differ diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Textures/CastleWallFill.psd.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Textures/CastleWallFill.psd.meta new file mode 100644 index 0000000..2eef52b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Samples~/Samples/Textures/CastleWallFill.psd.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 815f15421880340e1ac8fb4767057d51 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests.meta new file mode 100644 index 0000000..ab0b27d --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cf00ad4c95f59411ba959a51a6c8be34 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/PlaceholderTests.cs b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/PlaceholderTests.cs new file mode 100644 index 0000000..4b6d08c --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/PlaceholderTests.cs @@ -0,0 +1,10 @@ +using NUnit.Framework; + +public class SpriteShapePlaceholder +{ + [Test] + public void PlaceHolderTest() + { + Assert.Pass("SpriteShape tests are in a separate package."); + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/PlaceholderTests.cs.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/PlaceholderTests.cs.meta new file mode 100644 index 0000000..25a50d1 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/PlaceholderTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ae1953898c2e4565a0a2b0af0a10575 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/Unity.2D.SpriteShape.EditorTests.asmdef b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/Unity.2D.SpriteShape.EditorTests.asmdef new file mode 100644 index 0000000..19e647b --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/Unity.2D.SpriteShape.EditorTests.asmdef @@ -0,0 +1,22 @@ +{ + "name": "Unity.2D.SpriteShape.EditorTests", + "references": [ + "UnityEngine.TestRunner", + "UnityEditor.TestRunner" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/Unity.2D.SpriteShape.EditorTests.asmdef.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/Unity.2D.SpriteShape.EditorTests.asmdef.meta new file mode 100644 index 0000000..2a1fa99 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Tests/Unity.2D.SpriteShape.EditorTests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 03bfc083748b8452197dde3b8ea7f575 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Third Party Notices.md b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Third Party Notices.md new file mode 100644 index 0000000..8c3df42 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Third Party Notices.md @@ -0,0 +1,31 @@ +This package contains third-party software components governed by the license(s) indicated below: +--------- + +Component Name: LibTessDotNet + +License Type: SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) + + +Copyright (C) 2011 Silicon Graphics, Inc. +All Rights Reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice including the dates of first publication and either this +permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be +included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +be used in advertising or otherwise to promote the sale, use or other dealings in +this Software without prior written authorization from Silicon Graphics, Inc. + diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Third Party Notices.md.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Third Party Notices.md.meta new file mode 100644 index 0000000..b371f02 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/Third Party Notices.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7a6ed47ab3732e642a9f8b492ed24191 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/package.json b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/package.json new file mode 100644 index 0000000..97ce882 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/package.json @@ -0,0 +1,46 @@ +{ + "name": "com.unity.2d.spriteshape", + "version": "3.0.14", + "unity": "2019.4", + "unityRelease": "0a10", + "displayName": "2D SpriteShape", + "description": "SpriteShape Runtime & Editor Package contains the tooling and the runtime component that allows you to create very organic looking spline based 2D worlds. It comes with intuitive configurator and a highly performant renderer.", + "keywords": [ + "2d", + "shape", + "spriteshape", + "smartsprite", + "spline", + "terrain2d" + ], + "category": "2D", + "dependencies": { + "com.unity.mathematics": "1.1.0", + "com.unity.2d.common": "2.0.2", + "com.unity.2d.path": "2.0.6" + }, + "samples": [ + { + "displayName": "Sprite Shape Samples", + "description": "Samples to get started with SpriteShape", + "path": "Samples~/Samples" + }, + { + "displayName": "Sprite Shape Extras", + "description": "This sample has utility scripts that ihas various use-cases of Spriteshape", + "path": "Samples~/Extras" + } + ], + "relatedPackages": { + "com.unity.2d.spriteshape.tests": "3.0.14", + "com.unity.2d.common.tests": "2.0.2" + }, + "upmCi": { + "footprint": "ab5a62e08d685fbb064be2b1ba9002474a89ab35" + }, + "repository": { + "url": "https://github.cds.internal.unity3d.com/unity/2d.git", + "type": "git", + "revision": "29ea650b8c577781bb2fae453ff381ad0aae8347" + } +} diff --git a/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/package.json.meta b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/package.json.meta new file mode 100644 index 0000000..2e0bce8 --- /dev/null +++ b/Library/PackageCache/com.unity.2d.spriteshape@3.0.14/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4eabc3d1ad1424372b03cfc117521e24 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/.npmignore b/Library/PackageCache/com.unity.collab-proxy@1.2.16/.npmignore new file mode 100644 index 0000000..1586aea --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/.npmignore @@ -0,0 +1,6 @@ + +automation/** +utr_output/** +.Editor/** +.yamato/** +*.zip* \ No newline at end of file diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/CHANGELOG.md b/Library/PackageCache/com.unity.collab-proxy@1.2.16/CHANGELOG.md new file mode 100644 index 0000000..3c6c85d --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/CHANGELOG.md @@ -0,0 +1,31 @@ +# Changelog +All notable changes to this package will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [1.2.16] - 2019-02-11 +Update stylesheet to pass USS validation + +## [1.2.15] - 2018-11-16 +Added support for non-experimental UIElements. + +## [1.2.11] - 2018-09-04 +Made some performance improvements to reduce impact on ReloadAssemblies. + +## [1.2.9] - 2018-08-13 +Test issues for the Collab History Window are now fixed. + +## [1.2.7] - 2018-08-07 +Toolbar drop-down will no longer show up when package is uninstalled. + +## [1.2.6] - 2018-06-15 +Fixed an issue where Collab's History window wouldn't load properly. + +## [1.2.5] - 2018-05-21 +This is the first release of *Unity Package CollabProxy*. + +### Added +- Collab history and toolbar windows +- Collab view and presenter classes +- Collab Editor tests for view and presenter diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/CHANGELOG.md.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/CHANGELOG.md.meta new file mode 100644 index 0000000..38274a6 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 782c49e6e68074dc7ba12c95537825ce +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/DEPENDENCIES.md b/Library/PackageCache/com.unity.collab-proxy@1.2.16/DEPENDENCIES.md new file mode 100644 index 0000000..57808d5 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/DEPENDENCIES.md @@ -0,0 +1,9 @@ + + + + Unity.CollabProxy.Dependencies + 1.1.0-experimental + Rohit Garg + Dependencies for the CollabProxy package + + diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/DEPENDENCIES.md.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/DEPENDENCIES.md.meta new file mode 100644 index 0000000..24e45c2 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/DEPENDENCIES.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 470530e667ad4475786b28fa3187ce95 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Documentation~/collab-proxy.md b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Documentation~/collab-proxy.md new file mode 100644 index 0000000..c1800d6 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Documentation~/collab-proxy.md @@ -0,0 +1,5 @@ +# About Unity Collaborate + +Collaborate is a simple way for teams to save, share, and sync their Unity project. + +Please refer to the online documentation [here.](https://docs.unity3d.com/Manual/UnityCollaborate.html) \ No newline at end of file diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor.meta new file mode 100644 index 0000000..b54ca87 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d31e5d760880a4e52a3a75322481d0d2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/AssemblyInfo.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/AssemblyInfo.cs new file mode 100644 index 0000000..d7266b6 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/AssemblyInfo.cs @@ -0,0 +1,4 @@ +using System.Runtime.CompilerServices; +using UnityEngine; + +[assembly: InternalsVisibleTo("Unity.CollabProxy.EditorTests")] diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/AssemblyInfo.cs.meta new file mode 100644 index 0000000..e384b31 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4ef26aa386b44923b61c9c4b505a67c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab.meta new file mode 100644 index 0000000..694fc4e --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c18cb9388313e4287ad5895ee735c47d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Bootstrap.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Bootstrap.cs new file mode 100644 index 0000000..029ce1c --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Bootstrap.cs @@ -0,0 +1,24 @@ +using UnityEditor; +using UnityEditor.Collaboration; +using UnityEngine; + +namespace CollabProxy.UI +{ + [InitializeOnLoad] + public class Bootstrap + { + private const float kCollabToolbarButtonWidth = 78.0f; + + static Bootstrap() + { + Collab.ShowHistoryWindow = CollabHistoryWindow.ShowHistoryWindow; + Collab.ShowToolbarAtPosition = CollabToolbarWindow.ShowCenteredAtPosition; + Collab.IsToolbarVisible = CollabToolbarWindow.IsVisible; + Collab.CloseToolbar = CollabToolbarWindow.CloseToolbar; + Toolbar.AddSubToolbar(new CollabToolbarButton + { + Width = kCollabToolbarButtonWidth + }); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Bootstrap.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Bootstrap.cs.meta new file mode 100644 index 0000000..641d54b --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Bootstrap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8aa8171e088f94069bbd1978a053f7dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabAnalytics.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabAnalytics.cs new file mode 100644 index 0000000..c7f90aa --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabAnalytics.cs @@ -0,0 +1,21 @@ +using System; + +namespace UnityEditor.Collaboration +{ + internal static class CollabAnalytics + { + [Serializable] + private struct CollabUserActionAnalyticsEvent + { + public string category; + public string action; + } + + public static void SendUserAction(string category, string action) + { + EditorAnalytics.SendCollabUserAction(new CollabUserActionAnalyticsEvent() { category = category, action = action }); + } + + public static readonly string historyCategoryString = "History"; + }; +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabAnalytics.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabAnalytics.cs.meta new file mode 100644 index 0000000..2f46e9b --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabAnalytics.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f944311c8fff2479fa3ba741f6039fc8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabHistoryWindow.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabHistoryWindow.cs new file mode 100644 index 0000000..b855bce --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabHistoryWindow.cs @@ -0,0 +1,330 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEditor.Collaboration; + +#if UNITY_2019_1_OR_NEWER +using UnityEditor.UIElements; +using UnityEngine.UIElements; +#else +using UnityEditor.Experimental.UIElements; +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + +using UnityEngine; +using UnityEditor.Connect; + +namespace UnityEditor +{ + internal class CollabHistoryWindow : EditorWindow, ICollabHistoryWindow + { +#if UNITY_2019_1_OR_NEWER + private const string ResourcesPath = "Packages/com.unity.collab-proxy/Editor/Resources/Styles/"; +#else + private const string ResourcesPath = "StyleSheets/"; +#endif + + + const string kWindowTitle = "Collab History"; + const string kServiceUrl = "developer.cloud.unity3d.com"; + + [MenuItem("Window/Asset Management/Collab History", false, 1)] + public static void ShowHistoryWindow() + { + EditorWindow.GetWindow(kWindowTitle); + } + + [MenuItem("Window/Asset Management/Collab History", true)] + public static bool ValidateShowHistoryWindow() + { + return Collab.instance.IsCollabEnabledForCurrentProject(); + } + + CollabHistoryPresenter m_Presenter; + Dictionary m_Views; + List m_HistoryItems = new List(); + HistoryState m_State; + VisualElement m_Container; + PagedListView m_Pager; + ScrollView m_HistoryView; + int m_ItemsPerPage = 5; + string m_InProgressRev; + bool m_RevisionActionsEnabled; + + public CollabHistoryWindow() + { + minSize = new Vector2(275, 50); + } + + public void OnEnable() + { + SetupGUI(); + name = "CollabHistory"; + + if (m_Presenter == null) + { + m_Presenter = new CollabHistoryPresenter(this, new CollabHistoryItemFactory(), new RevisionsService(Collab.instance, UnityConnect.instance)); + } + m_Presenter.OnWindowEnabled(); + } + + public void OnDisable() + { + m_Presenter.OnWindowDisabled(); + } + + public bool revisionActionsEnabled + { + get { return m_RevisionActionsEnabled; } + set + { + if (m_RevisionActionsEnabled == value) + return; + + m_RevisionActionsEnabled = value; + foreach (var historyItem in m_HistoryItems) + { + historyItem.RevisionActionsEnabled = value; + } + } + } + + private void AddStyleSheetPath(VisualElement root, string path) + { +#if UNITY_2019_1_OR_NEWER + root.styleSheets.Add(EditorGUIUtility.Load(path) as StyleSheet); +#else + root.AddStyleSheetPath(path); +#endif + } + + + public void SetupGUI() + { +#if UNITY_2019_1_OR_NEWER + var root = this.rootVisualElement; +#else + var root = this.GetRootVisualContainer(); +#endif + AddStyleSheetPath(root, ResourcesPath + "CollabHistoryCommon.uss"); + if (EditorGUIUtility.isProSkin) + { + AddStyleSheetPath(root, ResourcesPath + "CollabHistoryDark.uss"); + } + else + { + AddStyleSheetPath(root, ResourcesPath + "CollabHistoryLight.uss"); + } + + m_Container = new VisualElement(); + m_Container.StretchToParentSize(); + root.Add(m_Container); + + m_Pager = new PagedListView() + { + name = "PagedElement", + pageSize = m_ItemsPerPage + }; + + var errorView = new StatusView() + { + message = "An Error Occurred", + icon = EditorGUIUtility.LoadIconRequired("Collab.Warning") as Texture, + }; + + var noInternetView = new StatusView() + { + message = "No Internet Connection", + icon = EditorGUIUtility.LoadIconRequired("Collab.NoInternet") as Texture, + }; + + var maintenanceView = new StatusView() + { + message = "Maintenance", + }; + + var loginView = new StatusView() + { + message = "Sign in to access Collaborate", + buttonText = "Sign in...", + callback = SignInClick, + }; + + var noSeatView = new StatusView() + { + message = "Ask your project owner for access to Unity Teams", + buttonText = "Learn More", + callback = NoSeatClick, + }; + + var waitingView = new StatusView() + { + message = "Updating...", + }; + + m_HistoryView = new ScrollView() { name = "HistoryContainer", showHorizontal = false}; + m_HistoryView.contentContainer.StretchToParentWidth(); + m_HistoryView.Add(m_Pager); + + m_Views = new Dictionary() + { + {HistoryState.Error, errorView}, + {HistoryState.Offline, noInternetView}, + {HistoryState.Maintenance, maintenanceView}, + {HistoryState.LoggedOut, loginView}, + {HistoryState.NoSeat, noSeatView}, + {HistoryState.Waiting, waitingView}, + {HistoryState.Ready, m_HistoryView} + }; + } + + public void UpdateState(HistoryState state, bool force) + { + if (state == m_State && !force) + return; + + m_State = state; + switch (state) + { + case HistoryState.Ready: + UpdateHistoryView(m_Pager); + break; + case HistoryState.Disabled: + Close(); + return; + } + + m_Container.Clear(); + m_Container.Add(m_Views[m_State]); + } + + public void UpdateRevisions(IEnumerable datas, string tip, int totalRevisions, int currentPage) + { + var elements = new List(); + var isFullDateObtained = false; // Has everything from this date been obtained? + m_HistoryItems.Clear(); + + if (datas != null) + { + DateTime currentDate = DateTime.MinValue; + foreach (var data in datas) + { + if (data.timeStamp.Date != currentDate.Date) + { + elements.Add(new CollabHistoryRevisionLine(data.timeStamp, isFullDateObtained)); + currentDate = data.timeStamp; + } + + var item = new CollabHistoryItem(data); + m_HistoryItems.Add(item); + + var container = new VisualElement(); + container.style.flexDirection = FlexDirection.Row; + if (data.current) + { + isFullDateObtained = true; + container.AddToClassList("currentRevision"); + container.AddToClassList("obtainedRevision"); + } + else if (data.obtained) + { + container.AddToClassList("obtainedRevision"); + } + else + { + container.AddToClassList("absentRevision"); + } + // If we use the index as-is, the latest commit will become #1, but we want it to be last + container.Add(new CollabHistoryRevisionLine(data.index)); + container.Add(item); + elements.Add(container); + } + } + + m_HistoryView.scrollOffset = new Vector2(0, 0); + m_Pager.totalItems = totalRevisions; + m_Pager.curPage = currentPage; + m_Pager.items = elements; + } + + public string inProgressRevision + { + get { return m_InProgressRev; } + set + { + m_InProgressRev = value; + foreach (var historyItem in m_HistoryItems) + { + historyItem.SetInProgressStatus(value); + } + } + } + + public int itemsPerPage + { + set + { + if (m_ItemsPerPage == value) + return; + m_Pager.pageSize = m_ItemsPerPage; + } + } + + public PageChangeAction OnPageChangeAction + { + set { m_Pager.OnPageChanged = value; } + } + + public RevisionAction OnGoBackAction + { + set { CollabHistoryItem.s_OnGoBack = value; } + } + + public RevisionAction OnUpdateAction + { + set { CollabHistoryItem.s_OnUpdate = value; } + } + + public RevisionAction OnRestoreAction + { + set { CollabHistoryItem.s_OnRestore = value; } + } + + public ShowBuildAction OnShowBuildAction + { + set { CollabHistoryItem.s_OnShowBuild = value; } + } + + public Action OnShowServicesAction + { + set { CollabHistoryItem.s_OnShowServices = value; } + } + + void UpdateHistoryView(VisualElement history) + { + } + + void NoSeatClick() + { + var connection = UnityConnect.instance; + var env = connection.GetEnvironment(); + // Map environment to url - prod is special + if (env == "production") + env = ""; + else + env += "-"; + + var url = "https://" + env + kServiceUrl + + "/orgs/" + connection.GetOrganizationId() + + "/projects/" + connection.GetProjectName() + + "/unity-teams/"; + Application.OpenURL(url); + } + + void SignInClick() + { + UnityConnect.instance.ShowLogin(); + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabHistoryWindow.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabHistoryWindow.cs.meta new file mode 100644 index 0000000..74358d4 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabHistoryWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fed9dda667cab45d398d06402bba03f4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarButton.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarButton.cs new file mode 100644 index 0000000..eebe4ac --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarButton.cs @@ -0,0 +1,297 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor.Collaboration; +using UnityEditor.Connect; +using UnityEditor.Web; +using UnityEngine; + +namespace UnityEditor +{ + internal class CollabToolbarButton : SubToolbar, IDisposable + { + // Must match s_CollabIcon array + enum CollabToolbarState + { + NeedToEnableCollab, + UpToDate, + Conflict, + OperationError, + ServerHasChanges, + FilesToPush, + InProgress, + Disabled, + Offline + } + + private class CollabToolbarContent + { + readonly string m_iconName; + readonly string m_toolTip; + readonly CollabToolbarState m_state; + + static Dictionary m_CollabIcons; + + public CollabToolbarState RegisteredForState + { + get { return m_state; } + } + + public GUIContent GuiContent + { + get + { + if (m_CollabIcons == null) + { + m_CollabIcons = new Dictionary(); + } + + if (!m_CollabIcons.ContainsKey(this)) + { + m_CollabIcons.Add(this, EditorGUIUtility.TrTextContentWithIcon("Collab", m_toolTip, m_iconName)); + } + + return m_CollabIcons[this]; + } + } + + public CollabToolbarContent(CollabToolbarState state, string iconName, string toolTip) + { + m_state = state; + m_iconName = iconName; + m_toolTip = toolTip; + } + } + + CollabToolbarContent[] m_toolbarContents; + CollabToolbarState m_CollabToolbarState = CollabToolbarState.UpToDate; + const float kCollabButtonWidth = 78.0f; + ButtonWithAnimatedIconRotation m_CollabButton; + string m_DynamicTooltip; + static bool m_ShowCollabTooltip = false; + + private GUIContent currentCollabContent + { + get + { + CollabToolbarContent toolbarContent = + m_toolbarContents.FirstOrDefault(c => c.RegisteredForState.Equals(m_CollabToolbarState)); + GUIContent content = new GUIContent(toolbarContent == null? m_toolbarContents.First().GuiContent : toolbarContent.GuiContent); + if (!m_ShowCollabTooltip) + { + content.tooltip = null; + } + else if (m_DynamicTooltip != "") + { + content.tooltip = m_DynamicTooltip; + } + + if (Collab.instance.AreTestsRunning()) + { + content.text = "CTF"; + } + + return content; + } + } + + public CollabToolbarButton() + { + m_toolbarContents = new[] + { + new CollabToolbarContent(CollabToolbarState.NeedToEnableCollab, "CollabNew", " You need to enable collab."), + new CollabToolbarContent(CollabToolbarState.UpToDate, "Collab", " You are up to date."), + new CollabToolbarContent(CollabToolbarState.Conflict, "CollabConflict", " Please fix your conflicts prior to publishing."), + new CollabToolbarContent(CollabToolbarState.OperationError, "CollabError", " Last operation failed. Please retry later."), + new CollabToolbarContent(CollabToolbarState.ServerHasChanges, "CollabPull", " Please update, there are server changes."), + new CollabToolbarContent(CollabToolbarState.FilesToPush, "CollabPush", " You have files to publish."), + new CollabToolbarContent(CollabToolbarState.InProgress, "CollabProgress", " Operation in progress."), + new CollabToolbarContent(CollabToolbarState.Disabled, "CollabNew", " Collab is disabled."), + new CollabToolbarContent(CollabToolbarState.Offline, "CollabNew", " Please check your network connection.") + }; + + Collab.instance.StateChanged += OnCollabStateChanged; + UnityConnect.instance.StateChanged += OnUnityConnectStateChanged; + UnityConnect.instance.UserStateChanged += OnUnityConnectUserStateChanged; + } + + void OnUnityConnectUserStateChanged(UserInfo state) + { + UpdateCollabToolbarState(); + } + + void OnUnityConnectStateChanged(ConnectInfo state) + { + UpdateCollabToolbarState(); + } + + public override void OnGUI(Rect rect) + { + DoCollabDropDown(rect); + } + + Rect GUIToScreenRect(Rect guiRect) + { + Vector2 screenPoint = GUIUtility.GUIToScreenPoint(new Vector2(guiRect.x, guiRect.y)); + guiRect.x = screenPoint.x; + guiRect.y = screenPoint.y; + return guiRect; + } + + void ShowPopup(Rect rect) + { + // window should be centered on the button + ReserveRight(kCollabButtonWidth / 2, ref rect); + ReserveBottom(5, ref rect); + // calculate screen rect before saving assets since it might open the AssetSaveDialog window + var screenRect = GUIToScreenRect(rect); + // save all the assets + AssetDatabase.SaveAssets(); + if (Collab.ShowToolbarAtPosition != null && Collab.ShowToolbarAtPosition(screenRect)) + { + GUIUtility.ExitGUI(); + } + } + + void DoCollabDropDown(Rect rect) + { + UpdateCollabToolbarState(); + GUIStyle collabButtonStyle = "OffsetDropDown"; + bool showPopup = Toolbar.requestShowCollabToolbar; + Toolbar.requestShowCollabToolbar = false; + + bool enable = !EditorApplication.isPlaying; + + using (new EditorGUI.DisabledScope(!enable)) + { + bool animate = m_CollabToolbarState == CollabToolbarState.InProgress; + + EditorGUIUtility.SetIconSize(new Vector2(12, 12)); + if (GetCollabButton().OnGUI(rect, currentCollabContent, animate, collabButtonStyle)) + { + showPopup = true; + } + EditorGUIUtility.SetIconSize(Vector2.zero); + } + + if (m_CollabToolbarState == CollabToolbarState.Disabled) + return; + + if (showPopup) + { + ShowPopup(rect); + } + } + + public void OnCollabStateChanged(CollabInfo info) + { + UpdateCollabToolbarState(); + } + + public void UpdateCollabToolbarState() + { + var currentCollabState = CollabToolbarState.UpToDate; + bool networkAvailable = UnityConnect.instance.connectInfo.online && UnityConnect.instance.connectInfo.loggedIn; + m_DynamicTooltip = ""; + + if (UnityConnect.instance.isDisableCollabWindow) + { + currentCollabState = CollabToolbarState.Disabled; + } + else if (networkAvailable) + { + Collab collab = Collab.instance; + CollabInfo currentInfo = collab.collabInfo; + UnityErrorInfo errInfo; + bool error = false; + if (collab.GetError((UnityConnect.UnityErrorFilter.ByContext | UnityConnect.UnityErrorFilter.ByChild), out errInfo)) + { + error = (errInfo.priority <= (int)UnityConnect.UnityErrorPriority.Error); + m_DynamicTooltip = errInfo.shortMsg; + } + + if (!currentInfo.ready) + { + currentCollabState = CollabToolbarState.InProgress; + } + else if (error) + { + currentCollabState = CollabToolbarState.OperationError; + } + else if (currentInfo.inProgress) + { + currentCollabState = CollabToolbarState.InProgress; + } + else + { + bool collabEnable = Collab.instance.IsCollabEnabledForCurrentProject(); + + if (UnityConnect.instance.projectInfo.projectBound == false || !collabEnable) + { + currentCollabState = CollabToolbarState.NeedToEnableCollab; + } + else if (currentInfo.update) + { + currentCollabState = CollabToolbarState.ServerHasChanges; + } + else if (currentInfo.conflict) + { + currentCollabState = CollabToolbarState.Conflict; + } + else if (currentInfo.publish) + { + currentCollabState = CollabToolbarState.FilesToPush; + } + } + } + else + { + currentCollabState = CollabToolbarState.Offline; + } + + if (Collab.IsToolbarVisible != null) + { + if (currentCollabState != m_CollabToolbarState || + Collab.IsToolbarVisible() == m_ShowCollabTooltip) + { + m_CollabToolbarState = currentCollabState; + m_ShowCollabTooltip = !Collab.IsToolbarVisible(); + Toolbar.RepaintToolbar(); + } + } + } + + void ReserveRight(float width, ref Rect pos) + { + pos.x += width; + } + + void ReserveBottom(float height, ref Rect pos) + { + pos.y += height; + } + + ButtonWithAnimatedIconRotation GetCollabButton() + { + if (m_CollabButton == null) + { + const int repaintsPerSecond = 20; + const float animSpeed = 500f; + const bool mouseDownButton = true; + m_CollabButton = new ButtonWithAnimatedIconRotation(() => (float)EditorApplication.timeSinceStartup * animSpeed, Toolbar.RepaintToolbar, repaintsPerSecond, mouseDownButton); + } + + return m_CollabButton; + } + + public void Dispose() + { + Collab.instance.StateChanged -= OnCollabStateChanged; + UnityConnect.instance.StateChanged -= OnUnityConnectStateChanged; + UnityConnect.instance.UserStateChanged -= OnUnityConnectUserStateChanged; + + if (m_CollabButton != null) + m_CollabButton.Clear(); + } + } +} // namespace \ No newline at end of file diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarButton.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarButton.cs.meta new file mode 100644 index 0000000..949d8db --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 882f1a4147a284f028899b9c018e63eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarWindow.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarWindow.cs new file mode 100644 index 0000000..2793875 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarWindow.cs @@ -0,0 +1,137 @@ +using UnityEngine; +using UnityEditor.Collaboration; +using UnityEditor.Web; +using UnityEditor.Connect; + +namespace UnityEditor +{ + [InitializeOnLoad] + internal class WebViewStatic : ScriptableSingleton + { + [SerializeField] + WebView m_WebView; + + static public WebView GetWebView() + { + return instance.m_WebView; + } + + static public void SetWebView(WebView webView) + { + instance.m_WebView = webView; + } + } + + [InitializeOnLoad] + internal class CollabToolbarWindow : WebViewEditorStaticWindow, IHasCustomMenu + { + internal override WebView webView + { + get {return WebViewStatic.GetWebView(); } + set {WebViewStatic.SetWebView(value); } + } + + private const string kWindowName = "Unity Collab Toolbar"; + + private static long s_LastClosedTime; + private static CollabToolbarWindow s_CollabToolbarWindow; + + public static bool s_ToolbarIsVisible = false; + + const int kWindowWidth = 320; + const int kWindowHeight = 350; + + public static void CloseToolbar() + { + foreach (CollabToolbarWindow window in Resources.FindObjectsOfTypeAll()) + window.Close(); + } + + [MenuItem("Window/Asset Management/Collab Toolbar", false /*IsValidateFunction*/, 2, true /* IsInternalMenu */)] + public static CollabToolbarWindow ShowToolbarWindow() + { + //Create a new window if it does not exist + if (s_CollabToolbarWindow == null) + { + s_CollabToolbarWindow = GetWindow(false, kWindowName) as CollabToolbarWindow; + } + + return s_CollabToolbarWindow; + } + + [MenuItem("Window/Asset Management/Collab Toolbar", true /*IsValidateFunction*/)] + public static bool ValidateShowToolbarWindow() + { + return true; + } + + public static bool IsVisible() + { + return s_ToolbarIsVisible; + } + + public static bool ShowCenteredAtPosition(Rect buttonRect) + { + buttonRect.x -= kWindowWidth / 2; + // We could not use realtimeSinceStartUp since it is set to 0 when entering/exitting playmode, we assume an increasing time when comparing time. + long nowMilliSeconds = System.DateTime.Now.Ticks / System.TimeSpan.TicksPerMillisecond; + bool justClosed = nowMilliSeconds < s_LastClosedTime + 50; + if (!justClosed) + { + // Method may have been triggered programmatically, without a user event to consume. + if (Event.current.type != EventType.Layout) + { + Event.current.Use(); + } + if (s_CollabToolbarWindow == null) + s_CollabToolbarWindow = CreateInstance() as CollabToolbarWindow; + var windowSize = new Vector2(kWindowWidth, kWindowHeight); + s_CollabToolbarWindow.initialOpenUrl = "file:///" + EditorApplication.userJavascriptPackagesPath + "unityeditor-collab-toolbar/dist/index.html"; + s_CollabToolbarWindow.Init(); + s_CollabToolbarWindow.ShowAsDropDown(buttonRect, windowSize); + s_CollabToolbarWindow.OnFocus(); + return true; + } + return false; + } + + // Receives HTML title + public void OnReceiveTitle(string title) + { + titleContent.text = title; + } + + public new void OnInitScripting() + { + base.OnInitScripting(); + } + + public override void OnEnable() + { + minSize = new Vector2(kWindowWidth, kWindowHeight); + maxSize = new Vector2(kWindowWidth, kWindowHeight); + initialOpenUrl = "file:///" + EditorApplication.userJavascriptPackagesPath + "unityeditor-collab-toolbar/dist/index.html"; + base.OnEnable(); + s_ToolbarIsVisible = true; + } + + internal new void OnDisable() + { + s_LastClosedTime = System.DateTime.Now.Ticks / System.TimeSpan.TicksPerMillisecond; + if (s_CollabToolbarWindow) + { + s_ToolbarIsVisible = false; + NotifyVisibility(s_ToolbarIsVisible); + } + s_CollabToolbarWindow = null; + + base.OnDisable(); + } + + public new void OnDestroy() + { + OnLostFocus(); + base.OnDestroy(); + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarWindow.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarWindow.cs.meta new file mode 100644 index 0000000..b08bf2a --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/CollabToolbarWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6f516f1ec21a54a59a92bf99db2d9535 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Presenters.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Presenters.meta new file mode 100644 index 0000000..9133153 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Presenters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d437fe60bb34f45728664a5d930c1635 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Presenters/CollabHistoryPresenter.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Presenters/CollabHistoryPresenter.cs new file mode 100644 index 0000000..91d500b --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Presenters/CollabHistoryPresenter.cs @@ -0,0 +1,228 @@ +using System.Collections.Generic; +using UnityEditor.Connect; +using UnityEditor.Web; + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryPresenter + { + public const int ItemsPerPage = 5; + ICollabHistoryWindow m_Window; + ICollabHistoryItemFactory m_Factory; + IRevisionsService m_Service; + ConnectInfo m_ConnectState; + CollabInfo m_CollabState; + bool m_IsCollabError; + int m_TotalRevisions; + int m_CurrentPage; + int m_RequestedPage; + bool m_FetchInProgress; + + BuildAccess m_BuildAccess; + string m_ProgressRevision; + public bool BuildServiceEnabled {get; set; } + + public CollabHistoryPresenter(ICollabHistoryWindow window, ICollabHistoryItemFactory factory, IRevisionsService service) + { + m_Window = window; + m_Factory = factory; + m_Service = service; + m_CurrentPage = 0; + m_BuildAccess = new BuildAccess(); + m_Service.FetchRevisionsCallback += OnFetchRevisions; + } + + public void OnWindowEnabled() + { + UnityConnect.instance.StateChanged += OnConnectStateChanged; + Collab.instance.StateChanged += OnCollabStateChanged; + Collab.instance.RevisionUpdated += OnCollabRevisionUpdated; + Collab.instance.JobsCompleted += OnCollabJobsCompleted; + Collab.instance.ErrorOccurred += OnCollabError; + Collab.instance.ErrorCleared += OnCollabErrorCleared; + EditorApplication.playModeStateChanged += OnPlayModeStateChanged; + m_ConnectState = UnityConnect.instance.GetConnectInfo(); + m_CollabState = Collab.instance.GetCollabInfo(); + + m_Window.revisionActionsEnabled = !EditorApplication.isPlayingOrWillChangePlaymode; + + // Setup window callbacks + m_Window.OnPageChangeAction = OnUpdatePage; + m_Window.OnUpdateAction = OnUpdate; + m_Window.OnRestoreAction = OnRestore; + m_Window.OnGoBackAction = OnGoBack; + m_Window.OnShowBuildAction = ShowBuildForCommit; + m_Window.OnShowServicesAction = ShowServicePage; + m_Window.itemsPerPage = ItemsPerPage; + + // Initialize data + UpdateBuildServiceStatus(); + var state = RecalculateState(); + // Only try to load the page if we're ready + if (state == HistoryState.Ready) + OnUpdatePage(m_CurrentPage); + m_Window.UpdateState(state, true); + } + + public void OnWindowDisabled() + { + UnityConnect.instance.StateChanged -= OnConnectStateChanged; + Collab.instance.StateChanged -= OnCollabStateChanged; + Collab.instance.RevisionUpdated -= OnCollabRevisionUpdated; + Collab.instance.JobsCompleted -= OnCollabJobsCompleted; + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + } + + private void OnConnectStateChanged(ConnectInfo state) + { + m_ConnectState = state; + + m_Window.UpdateState(RecalculateState(), false); + } + + private void OnCollabStateChanged(CollabInfo state) + { + // Sometimes a collab state change will trigger even though everything is the same + if (m_CollabState.Equals(state)) + return; + + if (m_CollabState.tip != state.tip) + OnUpdatePage(m_CurrentPage); + + m_CollabState = state; + m_Window.UpdateState(RecalculateState(), false); + if (state.inProgress) + { + m_Window.inProgressRevision = m_ProgressRevision; + } + else + { + m_Window.inProgressRevision = null; + } + } + + private void OnCollabRevisionUpdated(CollabInfo state) + { + OnUpdatePage(m_CurrentPage); + } + + private void OnCollabJobsCompleted(CollabInfo state) + { + m_ProgressRevision = null; + } + + private void OnCollabError() + { + m_IsCollabError = true; + m_Window.UpdateState(RecalculateState(), false); + } + + private void OnCollabErrorCleared() + { + m_IsCollabError = false; + m_FetchInProgress = true; + m_Service.GetRevisions(m_CurrentPage * ItemsPerPage, ItemsPerPage); + m_Window.UpdateState(RecalculateState(), false); + } + + private void OnPlayModeStateChanged(PlayModeStateChange stateChange) + { + // If entering play mode, disable + if (stateChange == PlayModeStateChange.ExitingEditMode || + stateChange == PlayModeStateChange.EnteredPlayMode) + { + m_Window.revisionActionsEnabled = false; + } + // If exiting play mode, enable! + else if (stateChange == PlayModeStateChange.EnteredEditMode || + stateChange == PlayModeStateChange.ExitingPlayMode) + { + m_Window.revisionActionsEnabled = true; + } + } + + private HistoryState RecalculateState() + { + if (!m_ConnectState.online) + return HistoryState.Offline; + if (m_ConnectState.maintenance || m_CollabState.maintenance) + return HistoryState.Maintenance; + if (!m_ConnectState.loggedIn) + return HistoryState.LoggedOut; + if (!m_CollabState.seat) + return HistoryState.NoSeat; + if (!Collab.instance.IsCollabEnabledForCurrentProject()) + return HistoryState.Disabled; + if (!Collab.instance.IsConnected() || !m_CollabState.ready || m_FetchInProgress) + return HistoryState.Waiting; + if (m_ConnectState.error || m_IsCollabError) + return HistoryState.Error; + + return HistoryState.Ready; + } + + // TODO: Eventually this can be a listener on the build service status + public void UpdateBuildServiceStatus() + { + foreach (var service in UnityConnectServiceCollection.instance.GetAllServiceInfos()) + { + if (service.name.Equals("Build")) + { + BuildServiceEnabled = service.enabled; + } + } + } + + public void ShowBuildForCommit(string revisionID) + { + m_BuildAccess.ShowBuildForCommit(revisionID); + } + + public void ShowServicePage() + { + m_BuildAccess.ShowServicePage(); + } + + public void OnUpdatePage(int page) + { + m_FetchInProgress = true; + m_Service.GetRevisions(page * ItemsPerPage, ItemsPerPage); + m_Window.UpdateState(RecalculateState(), false); + m_RequestedPage = page; + } + + private void OnFetchRevisions(RevisionsResult data) + { + m_FetchInProgress = false; + IEnumerable items = null; + if (data != null) + { + m_CurrentPage = m_RequestedPage; + m_TotalRevisions = data.RevisionsInRepo; + items = m_Factory.GenerateElements(data.Revisions, m_TotalRevisions, m_CurrentPage * ItemsPerPage, m_Service.tipRevision, m_Window.inProgressRevision, m_Window.revisionActionsEnabled, BuildServiceEnabled, m_Service.currentUser); + } + + // State must be recalculated prior to inserting items + m_Window.UpdateState(RecalculateState(), false); + m_Window.UpdateRevisions(items, m_Service.tipRevision, m_TotalRevisions, m_CurrentPage); + } + + private void OnRestore(string revisionId, bool updatetorevision) + { + m_ProgressRevision = revisionId; + Collab.instance.ResyncToRevision(revisionId); + } + + private void OnGoBack(string revisionId, bool updatetorevision) + { + m_ProgressRevision = revisionId; + Collab.instance.GoBackToRevision(revisionId, false); + } + + private void OnUpdate(string revisionId, bool updatetorevision) + { + m_ProgressRevision = revisionId; + Collab.instance.Update(revisionId, updatetorevision); + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Presenters/CollabHistoryPresenter.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Presenters/CollabHistoryPresenter.cs.meta new file mode 100644 index 0000000..9c37ecd --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Presenters/CollabHistoryPresenter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7c91a123806d41a0873fcdcb629b1c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views.meta new file mode 100644 index 0000000..f62ac6b --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd0a39b4d296d4d509b4f1dbd08d0630 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/BuildStatusButton.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/BuildStatusButton.cs new file mode 100644 index 0000000..ac3754d --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/BuildStatusButton.cs @@ -0,0 +1,53 @@ +using System; +using UnityEditor; +using UnityEditor.Collaboration; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + +namespace UnityEditor.Collaboration +{ + internal class BuildStatusButton : Button + { + private readonly string iconPrefix = "Icons/Collab.Build"; + private readonly string iconSuffix = ".png"; + Label labelElement = new Label(); + Image iconElement = new Image() {name = "BuildIcon"}; + + public BuildStatusButton(Action clickEvent) : base(clickEvent) + { + iconElement.image = EditorGUIUtility.Load(iconPrefix + iconSuffix) as Texture; + labelElement.text = "Build Now"; + Add(iconElement); + Add(labelElement); + } + + public BuildStatusButton(Action clickEvent, BuildState state, int failures) : base(clickEvent) + { + switch (state) + { + case BuildState.InProgress: + iconElement.image = EditorGUIUtility.Load(iconPrefix + iconSuffix) as Texture; + labelElement.text = "In progress"; + break; + + case BuildState.Failed: + iconElement.image = EditorGUIUtility.Load(iconPrefix + "Failed" + iconSuffix) as Texture; + labelElement.text = failures + ((failures == 1) ? " failure" : " failures"); + break; + + case BuildState.Success: + iconElement.image = EditorGUIUtility.Load(iconPrefix + "Succeeded" + iconSuffix) as Texture; + labelElement.text = "success"; + break; + } + + Add(iconElement); + Add(labelElement); + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/BuildStatusButton.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/BuildStatusButton.cs.meta new file mode 100644 index 0000000..d74a58a --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/BuildStatusButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0217a80286f79419daa202f69409f19b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDown.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDown.cs new file mode 100644 index 0000000..e3bb05a --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDown.cs @@ -0,0 +1,78 @@ +using UnityEngine; +using System.Collections.Generic; +using UnityEditor.Connect; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryDropDown : VisualElement + { + private readonly VisualElement m_FilesContainer; + private readonly Label m_ToggleLabel; + private int m_ChangesTotal; + private string m_RevisionId; + + public CollabHistoryDropDown(ICollection changes, int changesTotal, bool changesTruncated, string revisionId) + { + m_FilesContainer = new VisualElement(); + m_ChangesTotal = changesTotal; + m_RevisionId = revisionId; + + m_ToggleLabel = new Label(ToggleText(false)); + m_ToggleLabel.AddManipulator(new Clickable(ToggleDropdown)); + Add(m_ToggleLabel); + + foreach (ChangeData change in changes) + { + m_FilesContainer.Add(new CollabHistoryDropDownItem(change.path, change.action)); + } + + if (changesTruncated) + { + m_FilesContainer.Add(new Button(ShowAllClick) + { + text = "Show all on dashboard" + }); + } + } + + private void ToggleDropdown() + { + if (Contains(m_FilesContainer)) + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "CollapseAssets"); + Remove(m_FilesContainer); + m_ToggleLabel.text = ToggleText(false); + } + else + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ExpandAssets"); + Add(m_FilesContainer); + m_ToggleLabel.text = ToggleText(true); + } + } + + private string ToggleText(bool open) + { + var icon = open ? "\u25bc" : "\u25b6"; + var change = m_ChangesTotal == 1 ? "Change" : "Changes"; + return string.Format("{0} {1} Asset {2}", icon, m_ChangesTotal, change); + } + + private void ShowAllClick() + { + var host = UnityConnect.instance.GetConfigurationURL(CloudConfigUrl.CloudServicesDashboard); + var org = UnityConnect.instance.GetOrganizationId(); + var proj = UnityConnect.instance.GetProjectGUID(); + var url = string.Format("{0}/collab/orgs/{1}/projects/{2}/commits?commit={3}", host, org, proj, m_RevisionId); + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ShowAllOnDashboard"); + Application.OpenURL(url); + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDown.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDown.cs.meta new file mode 100644 index 0000000..513b66b --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDown.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a483595b0257945278dc75c5ff7d82ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDownItem.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDownItem.cs new file mode 100644 index 0000000..3ad43f2 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDownItem.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Linq; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryDropDownItem : VisualElement + { + public CollabHistoryDropDownItem(string path, string action) + { + var fileName = Path.GetFileName(path); + var isFolder = Path.GetFileNameWithoutExtension(path).Equals(fileName); + var fileIcon = GetIconElement(action, fileName, isFolder); + var metaContainer = new VisualElement(); + var fileNameLabel = new Label + { + name = "FileName", + text = fileName + }; + var filePathLabel = new Label + { + name = "FilePath", + text = path + }; + metaContainer.Add(fileNameLabel); + metaContainer.Add(filePathLabel); + Add(fileIcon); + Add(metaContainer); + } + + private Image GetIconElement(string action, string fileName, bool isFolder) + { + var prefix = isFolder ? "Folder" : "File"; + var actionName = action.First().ToString().ToUpper() + action.Substring(1); + // Use the same icon for renamed and moved files + actionName = actionName.Equals("Renamed") ? "Moved" : actionName; + var iconElement = new Image + { + name = "FileIcon", + image = EditorGUIUtility.LoadIcon("Icons/Collab." + prefix + actionName + ".png") + }; + return iconElement; + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDownItem.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDownItem.cs.meta new file mode 100644 index 0000000..10bf40e --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryDropDownItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d912d4873af534bd4a9d44bf1b52f14e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItem.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItem.cs new file mode 100644 index 0000000..24e5d1d --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItem.cs @@ -0,0 +1,229 @@ +using System; +using System.Linq; +using System.Security.Cryptography; +using UnityEditor.Connect; +using UnityEditor.Web; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryItem : VisualElement + { + public static RevisionAction s_OnRestore; + public static RevisionAction s_OnGoBack; + public static RevisionAction s_OnUpdate; + public static ShowBuildAction s_OnShowBuild; + public static Action s_OnShowServices; + + private readonly string m_RevisionId; + private readonly string m_FullDescription; + private readonly DateTime m_TimeStamp; + private readonly Button m_Button; + private readonly HistoryProgressSpinner m_ProgressSpinner; + private VisualElement m_ActionsTray; + private VisualElement m_Details; + private Label m_Description; + private Label m_TimeAgo; + private readonly Button m_ExpandCollapseButton; + private bool m_Expanded; + + private const int kMaxDescriptionChars = 500; + + public bool RevisionActionsEnabled + { + set + { + m_Button.SetEnabled(value); + } + } + + public DateTime timeStamp + { + get { return m_TimeStamp; } + } + + public CollabHistoryItem(RevisionData data) + { + m_RevisionId = data.id; + m_TimeStamp = data.timeStamp; + name = "HistoryItem"; + m_ActionsTray = new VisualElement {name = "HistoryItemActionsTray"}; + m_ProgressSpinner = new HistoryProgressSpinner(); + m_Details = new VisualElement {name = "HistoryDetail"}; + var author = new Label(data.authorName) {name = "Author"}; + m_TimeAgo = new Label(TimeAgo.GetString(m_TimeStamp)); + m_FullDescription = data.comment; + var shouldTruncate = ShouldTruncateDescription(m_FullDescription); + if (shouldTruncate) + { + m_Description = new Label(GetTruncatedDescription(m_FullDescription)); + } + else + { + m_Description = new Label(m_FullDescription); + } + m_Description.name = "RevisionDescription"; + var dropdown = new CollabHistoryDropDown(data.changes, data.changesTotal, data.changesTruncated, data.id); + if (data.current) + { + m_Button = new Button(Restore) {name = "ActionButton", text = "Restore"}; + } + else if (data.obtained) + { + m_Button = new Button(GoBackTo) {name = "ActionButton", text = "Go back to..."}; + } + else + { + m_Button = new Button(UpdateTo) {name = "ActionButton", text = "Update"}; + } + m_Button.SetEnabled(data.enabled); + m_ProgressSpinner.ProgressEnabled = data.inProgress; + + m_ActionsTray.Add(m_ProgressSpinner); + m_ActionsTray.Add(m_Button); + + m_Details.Add(author); + m_Details.Add(m_TimeAgo); + m_Details.Add(m_Description); + + if (shouldTruncate) + { + m_ExpandCollapseButton = new Button(ToggleDescription) { name = "ToggleDescription", text = "Show More" }; + m_Details.Add(m_ExpandCollapseButton); + } + + if (data.buildState != BuildState.None) + { + BuildStatusButton buildButton; + if (data.buildState == BuildState.Configure) + buildButton = new BuildStatusButton(ShowServicePage); + else + buildButton = new BuildStatusButton(ShowBuildForCommit, data.buildState, data.buildFailures); + + m_Details.Add(buildButton); + } + + m_Details.Add(m_ActionsTray); + m_Details.Add(dropdown); + + Add(m_Details); + + this.schedule.Execute(UpdateTimeAgo).Every(1000 * 20); + } + + public static void SetUpCallbacks(RevisionAction Restore, RevisionAction GoBack, RevisionAction Update) + { + s_OnRestore = Restore; + s_OnGoBack = GoBack; + s_OnUpdate = Update; + } + + public void SetInProgressStatus(string revisionIdInProgress) + { + if (String.IsNullOrEmpty(revisionIdInProgress)) + { + m_Button.SetEnabled(true); + m_ProgressSpinner.ProgressEnabled = false; + } + else + { + m_Button.SetEnabled(false); + if (m_RevisionId.Equals(revisionIdInProgress)) + { + m_ProgressSpinner.ProgressEnabled = true; + } + } + } + + void ShowBuildForCommit() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ShowBuild"); + if (s_OnShowBuild != null) + { + s_OnShowBuild(m_RevisionId); + } + } + + void ShowServicePage() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ShowServices"); + if (s_OnShowServices != null) + { + s_OnShowServices(); + } + } + + void Restore() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "Restore"); + if (s_OnRestore != null) + { + s_OnRestore(m_RevisionId, false); + } + } + + void GoBackTo() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "GoBackTo"); + if (s_OnGoBack != null) + { + s_OnGoBack(m_RevisionId, false); + } + } + + void UpdateTo() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "Update"); + if (s_OnUpdate != null) + { + s_OnUpdate(m_RevisionId, true); + } + } + + void UpdateTimeAgo() + { + m_TimeAgo.text = TimeAgo.GetString(m_TimeStamp); + } + + bool ShouldTruncateDescription(string description) + { + return description.Contains(Environment.NewLine) || description.Length > kMaxDescriptionChars; + } + + string GetTruncatedDescription(string description) + { + string result = description.Contains(Environment.NewLine) ? + description.Substring(0, description.IndexOf(Environment.NewLine)) : description; + if (result.Length > kMaxDescriptionChars) + { + result = result.Substring(0, kMaxDescriptionChars) + "..."; + } + return result; + } + + void ToggleDescription() + { + if (m_Expanded) + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "CollapseDescription"); + m_Expanded = false; + m_ExpandCollapseButton.text = "Show More"; + m_Description.text = GetTruncatedDescription(m_FullDescription); + } + else + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ExpandDescription"); + m_Expanded = true; + m_ExpandCollapseButton.text = "Show Less"; + m_Description.text = m_FullDescription; + } + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItem.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItem.cs.meta new file mode 100644 index 0000000..290bd28 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4c1445ee948a4124bfa9fb818a17e36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItemFactory.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItemFactory.cs new file mode 100644 index 0000000..e7d7aa6 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItemFactory.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor.Collaboration; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryItemFactory : ICollabHistoryItemFactory + { + const int k_MaxChangesPerRevision = 10; + + public IEnumerable GenerateElements(IEnumerable revisions, int totalRevisions, int startIndex, string tipRev, string inProgressRevision, bool revisionActionsEnabled, bool buildServiceEnabled, string currentUser) + { + int index = startIndex; + + foreach (var rev in revisions) + { + index++; + var current = rev.revisionID == tipRev; + + // Calculate build status + BuildState buildState = BuildState.None; + int buildFailures = 0; + if (rev.buildStatuses != null && rev.buildStatuses.Length > 0) + { + bool inProgress = false; + foreach (CloudBuildStatus buildStatus in rev.buildStatuses) + { + if (buildStatus.complete) + { + if (!buildStatus.success) + { + buildFailures++; + } + } + else + { + inProgress = true; + break; + } + } + + if (inProgress) + { + buildState = BuildState.InProgress; + } + else if (buildFailures > 0) + { + buildState = BuildState.Failed; + } + else + { + buildState = BuildState.Success; + } + } + else if (current && !buildServiceEnabled) + { + buildState = BuildState.Configure; + } + + // Calculate the number of changes performed on files and folders (not meta files) + var paths = new Dictionary(); + foreach (ChangeAction change in rev.entries) + { + if (change.path.EndsWith(".meta")) + { + var path = change.path.Substring(0, change.path.Length - 5); + // Actions taken on meta files are secondary to any actions taken on the main file + if (!paths.ContainsKey(path)) + paths[path] = new ChangeData() {path = path, action = change.action}; + } + else + { + paths[change.path] = new ChangeData() {path = change.path, action = change.action}; + } + } + + var displayName = (rev.author != currentUser) ? rev.authorName : "You"; + + var item = new RevisionData + { + id = rev.revisionID, + index = totalRevisions - index + 1, + timeStamp = TimeStampToDateTime(rev.timeStamp), + authorName = displayName, + comment = rev.comment, + + obtained = rev.isObtained, + current = current, + inProgress = (rev.revisionID == inProgressRevision), + enabled = revisionActionsEnabled, + + buildState = buildState, + buildFailures = buildFailures, + + changes = paths.Values.Take(k_MaxChangesPerRevision).ToList(), + changesTotal = paths.Values.Count, + changesTruncated = paths.Values.Count > k_MaxChangesPerRevision, + }; + + yield return item; + } + } + + private static DateTime TimeStampToDateTime(double timeStamp) + { + DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + dateTime = dateTime.AddSeconds(timeStamp).ToLocalTime(); + return dateTime; + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItemFactory.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItemFactory.cs.meta new file mode 100644 index 0000000..3250d96 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryItemFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc46f91ea1e8e4ca2ab693fef9156dbe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryRevisionLine.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryRevisionLine.cs new file mode 100644 index 0000000..2b8fe65 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryRevisionLine.cs @@ -0,0 +1,94 @@ +using System; +using UnityEditor; +using UnityEditor.Collaboration; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryRevisionLine : VisualElement + { + public CollabHistoryRevisionLine(int number) + { + AddNumber(number); + AddLine("topLine"); + AddLine("bottomLine"); + AddIndicator(); + } + + public CollabHistoryRevisionLine(DateTime date, bool isFullDateObtained) + { + AddLine(isFullDateObtained ? "obtainedDateLine" : "absentDateLine"); + AddHeader(GetFormattedHeader(date)); + AddToClassList("revisionLineHeader"); + } + + private void AddHeader(string content) + { + Add(new Label + { + text = content + }); + } + + private void AddIndicator() + { + Add(new VisualElement + { + name = "RevisionIndicator" + }); + } + + private void AddLine(string className = null) + { + var line = new VisualElement + { + name = "RevisionLine" + }; + if (!String.IsNullOrEmpty(className)) + { + line.AddToClassList(className); + } + Add(line); + } + + private void AddNumber(int number) + { + Add(new Label + { + text = number.ToString(), + name = "RevisionIndex" + }); + } + + private string GetFormattedHeader(DateTime date) + { + string result = "Commits on " + date.ToString("MMM d"); + switch (date.Day) + { + case 1: + case 21: + case 31: + result += "st"; + break; + case 2: + case 22: + result += "nd"; + break; + case 3: + case 23: + result += "rd"; + break; + default: + result += "th"; + break; + } + return result; + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryRevisionLine.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryRevisionLine.cs.meta new file mode 100644 index 0000000..2659a3c --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/CollabHistoryRevisionLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c737f7a9d78541d1ab25f28f045dd32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/HistoryProgressSpinner.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/HistoryProgressSpinner.cs new file mode 100644 index 0000000..fad3b82 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/HistoryProgressSpinner.cs @@ -0,0 +1,69 @@ +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + +namespace UnityEditor.Collaboration +{ + internal class HistoryProgressSpinner : Image + { + private readonly Texture2D[] m_StatusWheelTextures; + private bool m_ProgressEnabled; + private IVisualElementScheduledItem m_Animation; + + public bool ProgressEnabled + { + set + { + if (m_ProgressEnabled == value) + return; + + m_ProgressEnabled = value; + visible = value; + + + if (value) + { + if (m_Animation == null) + { + m_Animation = this.schedule.Execute(AnimateProgress).Every(33); + } + else + { + m_Animation.Resume(); + } + } + else + { + if (m_Animation != null) + { + m_Animation.Pause(); + } + } + } + } + + public HistoryProgressSpinner() + { + m_StatusWheelTextures = new Texture2D[12]; + for (int i = 0; i < 12; i++) + { + m_StatusWheelTextures[i] = EditorGUIUtility.LoadIcon("WaitSpin" + i.ToString("00")); + } + image = m_StatusWheelTextures[0]; + style.width = m_StatusWheelTextures[0].width; + style.height = m_StatusWheelTextures[0].height; + visible = false; + } + + private void AnimateProgress(TimerState obj) + { + int frame = (int)Mathf.Repeat(Time.realtimeSinceStartup * 10, 11.99f); + image = m_StatusWheelTextures[frame]; + MarkDirtyRepaint(); + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/HistoryProgressSpinner.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/HistoryProgressSpinner.cs.meta new file mode 100644 index 0000000..0ded4e8 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/HistoryProgressSpinner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf6aca931950a4a6a886e214e9e649c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/ICollabHistoryItemFactory.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/ICollabHistoryItemFactory.cs new file mode 100644 index 0000000..03239a3 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/ICollabHistoryItemFactory.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using UnityEditor.Collaboration; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + +namespace UnityEditor.Collaboration +{ + internal interface ICollabHistoryItemFactory + { + IEnumerable GenerateElements(IEnumerable revsRevisions, int mTotalRevisions, int startIndex, string tipRev, string inProgressRevision, bool revisionActionsEnabled, bool buildServiceEnabled, string currentUser); + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/ICollabHistoryItemFactory.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/ICollabHistoryItemFactory.cs.meta new file mode 100644 index 0000000..08e9085 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/ICollabHistoryItemFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 821f5482c5a3f4389885f4432433f56f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/PagedListView.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/PagedListView.cs new file mode 100644 index 0000000..472a70e --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/PagedListView.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections.Generic; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + +namespace UnityEditor.Collaboration +{ + internal interface IPagerData + { + int curPage { get; } + int totalPages { get; } + PageChangeAction OnPageChanged { get; } + } + + internal class PagerElement : VisualElement + { + IPagerData m_Data; + readonly Label m_PageText; + readonly Button m_DownButton; + readonly Button m_UpButton; + + public PagerElement(IPagerData dataSource) + { + m_Data = dataSource; + + this.style.flexDirection = FlexDirection.Row; + this.style.alignSelf = Align.Center; + + Add(m_DownButton = new Button(OnPageDownClicked) {text = "\u25c5 Newer"}); + m_DownButton.AddToClassList("PagerDown"); + + m_PageText = new Label(); + m_PageText.AddToClassList("PagerLabel"); + Add(m_PageText); + + Add(m_UpButton = new Button(OnPageUpClicked) {text = "Older \u25bb"}); + m_UpButton.AddToClassList("PagerUp"); + + UpdateControls(); + } + + void OnPageDownClicked() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "NewerPage"); + m_Data.OnPageChanged(m_Data.curPage - 1); + } + + void OnPageUpClicked() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "OlderPage"); + m_Data.OnPageChanged(m_Data.curPage + 1); + } + + public void Refresh() + { + UpdateControls(); + } + + void UpdateControls() + { + var curPage = m_Data.curPage; + var totalPages = m_Data.totalPages; + + m_PageText.text = (curPage + 1) + " / " + totalPages; + m_DownButton.SetEnabled(curPage > 0); + m_UpButton.SetEnabled(curPage < totalPages - 1); + } + } + + internal enum PagerLocation + { + Top, + Bottom, + } + + internal class PagedListView : VisualElement, IPagerData + { + public const int DefaultItemsPerPage = 10; + + readonly VisualElement m_ItemContainer; + readonly PagerElement m_PagerTop, m_PagerBottom; + int m_PageSize = DefaultItemsPerPage; + IEnumerable m_Items; + int m_TotalItems; + int m_CurPage; + + public int pageSize + { + set { m_PageSize = value; } + } + + public IEnumerable items + { + set + { + m_Items = value; + LayoutItems(); + } + } + + public int totalItems + { + set + { + if (m_TotalItems == value) + return; + + m_TotalItems = value; + UpdatePager(); + } + } + + public PageChangeAction OnPageChanged { get; set; } + + public PagedListView() + { + m_PagerTop = new PagerElement(this); + + m_ItemContainer = new VisualElement() + { + name = "PagerItems", + }; + Add(m_ItemContainer); + m_Items = new List(); + + m_PagerBottom = new PagerElement(this); + } + + void LayoutItems() + { + m_ItemContainer.Clear(); + foreach (var item in m_Items) + { + m_ItemContainer.Add(item); + } + } + + void UpdatePager() + { + if (m_PagerTop.parent != this && totalPages > 1 && curPage > 0) + Insert(0, m_PagerTop); + if (m_PagerTop.parent == this && (totalPages <= 1 || curPage == 0)) + Remove(m_PagerTop); + + if (m_PagerBottom.parent != this && totalPages > 1) + Add(m_PagerBottom); + if (m_PagerBottom.parent == this && totalPages <= 1) + Remove(m_PagerBottom); + + m_PagerTop.Refresh(); + m_PagerBottom.Refresh(); + } + + int pageCount + { + get + { + var pages = m_TotalItems / m_PageSize; + if (m_TotalItems % m_PageSize > 0) + pages++; + + return pages; + } + } + + public int curPage + { + get { return m_CurPage; } + set + { + m_CurPage = value; + UpdatePager(); + } + } + + public int totalPages + { + get + { + var extraPage = 0; + if (m_TotalItems % m_PageSize > 0) + extraPage = 1; + return m_TotalItems / m_PageSize + extraPage; + } + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/PagedListView.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/PagedListView.cs.meta new file mode 100644 index 0000000..565f7a2 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/PagedListView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50de529b6a28f4a7093045e08810a5df +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/StatusView.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/StatusView.cs new file mode 100644 index 0000000..9b50e7a --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/StatusView.cs @@ -0,0 +1,88 @@ +using System; +using UnityEditor; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + +namespace UnityEditor.Collaboration +{ + internal class StatusView : VisualElement + { + Image m_Image; + Label m_Message; + Button m_Button; + Action m_Callback; + + public Texture icon + { + get { return m_Image.image; } + set + { + m_Image.image = value; + m_Image.visible = value != null; + // Until "display: hidden" is added, this is the only way to hide an element + m_Image.style.height = value != null ? 150 : 0; + } + } + + public string message + { + get { return m_Message.text; } + set + { + m_Message.text = value; + m_Message.visible = value != null; + } + } + + public string buttonText + { + get { return m_Button.text; } + set + { + m_Button.text = value; + UpdateButton(); + } + } + + public Action callback + { + get { return m_Callback; } + set + { + m_Callback = value; + UpdateButton(); + } + } + + public StatusView() + { + name = "StatusView"; + + this.StretchToParentSize(); + + m_Image = new Image() { name = "StatusIcon", visible = false, style = { height = 0f }}; + m_Message = new Label() { name = "StatusMessage", visible = false}; + m_Button = new Button(InternalCallaback) { name = "StatusButton", visible = false}; + + Add(m_Image); + Add(m_Message); + Add(m_Button); + } + + private void UpdateButton() + { + m_Button.visible = m_Button.text != null && m_Callback != null; + } + + private void InternalCallaback() + { + m_Callback(); + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/StatusView.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/StatusView.cs.meta new file mode 100644 index 0000000..bb634b1 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Collab/Views/StatusView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 08e9894bdf0834710b22d3c0aa245ac0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources.meta new file mode 100644 index 0000000..01229c2 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6ab6fd2b91214e8a9c8ec2224a528de +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles.meta new file mode 100644 index 0000000..0ff0382 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b1ae1e78552c459d9ce27048ff51c7f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryCommon.uss b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryCommon.uss new file mode 100644 index 0000000..b20f08e --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryCommon.uss @@ -0,0 +1,259 @@ +.unity-button { + min-height:0; + -unity-text-align:middle-center; + margin-left:4px; + margin-top:3px; + margin-right:4px; + margin-bottom:3px; + border-left-width:6px; + border-top-width:4px; + border-right-width:6px; + border-bottom-width:4px; + padding-left:6px; + padding-top:2px; + padding-right:6px; + padding-bottom:3px; +} + +.unity-label { + overflow: hidden; + margin-left:4px; + margin-top:2px; + margin-right:4px; + margin-bottom:2px; + padding-left:2px; + padding-top:1px; + min-height: 0; +} + +#HistoryContainer { + flex: 1 0 0; +} + +#HistoryItem { + flex: 1 0 0; + flex-direction: row; +} + +#HistoryDetail { + margin-top: 10px; + margin-left: 10px; + margin-bottom: 10px; + margin-right: 10px; + padding-top: 4px; + flex: 1 0 0; +} + +#Author { + -unity-font-style: bold; + font-size: 12px; +} + +#HistoryDetail > Button { + align-self: flex-end; +} + +CollabHistoryRevisionLine { + width: 40px; +} + +#RevisionLine { + flex: 1 0 0; + margin-left: 35px; + width: 1.5px; +} + +#RevisionLine.topLine { + height: 20px; + flex: 0 0 auto; +} + +#RevisionLine.absentDateLine { + background-color: #797676; +} + +.absentRevision #RevisionLine { + background-color: #797676; +} + +.currentRevision #RevisionLine.topLine { + background-color: #797676; +} + +#RevisionIndex { + position: absolute; + min-width: 23px; + -unity-text-align: middle-right; + top: 15.8px; + font-size: 9px; +} + +#RevisionIndicator { + position: absolute; + background-color: #000; + border-radius: 3px; + width: 8px; + height: 8px; + border-bottom-width: 2px; + border-left-width: 2px; + border-right-width: 2px; + border-top-width: 2px; + top: 20px; + left: 32px; +} + +.revisionLineHeader { + width: 200px; + height: 20px; +} + +.revisionLineHeader > .unity-label { + position: absolute; + margin-left: 47px; + margin-top: 3px; +} + +#PagerItems { + flex-direction: column; +} + +PagerElement > .unity-label { + margin-top: 8px; +} + +.absentRevision #RevisionIndicator { + border-color: #797676; +} + +.absentRevision #RevisionIndex { + color: #797676; +} + +.currentRevision #HistoryDetail { + border-top-width: 2px; +} + +#HistoryItem #RevisionDescription { + white-space: normal; +} + +#HistoryItem #ToggleDescription { + align-self: flex-start; + padding-top: 0; + padding-left: 0; + padding-right: 0; + padding-bottom: 2px; +} + +#HistoryItem #ActionButton { + position: absolute; + right: 0; +} + +#HistoryItem #BuildIcon { + width: 16px; + height: 13px; +} + +#HistoryItemActionsTray { + flex: 1 0 0; + flex-direction: row; + align-items: center; + height: 38px; + margin-left: 10px; + margin-right: 10px; +} + +CollabHistoryDropDown { + border-top-width: 1px; +} + +CollabHistoryDropDown > .unity-label { + padding-top: 10px; + padding-bottom: 10px; +} + +CollabHistoryDropDownItem { + flex-direction: row; + border-top-width: 1px; + overflow: hidden; +} + +#FileIcon { + align-self: center; + width: 26px; + height: 26px; +} + +#FileName { + -unity-font-style: bold; + padding-bottom: 0; + margin-bottom: 0; +} + +#FileIcon { + padding-top: 0; + margin-top: 0; +} + +#ErrorBar { + height: 24px; + background-color: #ff0000; + color: #000; + font-size: 12px; +} + +#ErrorBar > #CloseButton { + position: absolute; + right: 0; + top: 0; + width: 24px; + height: 24px; + color: #000; + font-size: 18px; + -unity-font-style: bold; +} + +#StatusView { + flex-direction: column; + justify-content: center; + align-self: center; + align-items: center; + flex: 1 0 0; +} + +#StatusView > #StatusIcon { + width: 115px; + height: 150px; +} + +#StatusView > #StatusMessage { + font-size: 22px; + width: 230px; + white-space: normal; + -unity-text-align: middle-center; +} + +#StatusView > #StatusButton { + font-size: 12px; + margin-top: 20px; + background-image: none; + width: 108px; + height: 29px; +} + +BuildStatusButton.unity-button { + flex-direction: row; + align-self: flex-end; + align-items: center; + margin-right: 10px; + padding-left:0; + padding-top:0; + padding-right:0; + padding-bottom:0; +} + +BuildStatusButton.unity-button .unity-label { + padding-left: 2px; +} + diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryCommon.uss.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryCommon.uss.meta new file mode 100644 index 0000000..035b662 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryCommon.uss.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3a2d94c8977984b67984caeff9fa666e +ScriptedImporter: + fileIDToRecycleName: + 11400000: stylesheet + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryDark.uss b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryDark.uss new file mode 100644 index 0000000..de436f8 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryDark.uss @@ -0,0 +1,86 @@ +#HistoryContainer { + background-color: #292929; +} + +.obtainedRevision #HistoryDetail { + background-color: #333; +} + +.absentRevision #HistoryDetail { + background-color: #595959; +} + +#StatusView { + background-color: #292929; +} + +#StatusView > #StatusMessage { + color: #959995; +} + +BuildStatusButton.unity-button { + color: #B4B4B4; + background-image: resource("Builtin Skins/DarkSkin/Images/btn.png"); +} + +BuildStatusButton.unity-button:hover { + color: #FFF; +} + +BuildStatusButton.unity-button:hover:active { + background-image: resource("Builtin Skins/DarkSkin/Images/btn act.png"); +} + +BuildStatusButton.unity-button:checked { + color: #F0F0F0; + background-image: resource("Builtin Skins/DarkSkin/Images/btn on.png"); +} + +BuildStatusButton.unity-button:hover:checked { + color: #FFF; +} + +BuildStatusButton.unity-button:hover:active:checked { + background-image: resource("Builtin Skins/DarkSkin/Images/btn onact.png"); +} + +BuildStatusButton.unity-button:focus:checked { + background-image: resource("Builtin Skins/DarkSkin/Images/btn on focus.png"); +} + +CollabHistoryDropDown { + border-color: #292929; +} + +CollabHistoryDropDownItem { + border-color: #292929; +} + +#RevisionLine.obtainedDateLine { + background-color: #0cb4cc; +} + +.obtainedRevision #RevisionLine { + background-color: #0cb4cc; +} + +#RevisionIndex { + color: #0cb4cc; +} + +#RevisionIndicator { + border-color: #0cb4cc; +} + +.currentRevision #RevisionIndicator { + background-color: #0cb4cc; +} + +.currentRevision #HistoryDetail { + border-color: #0cb4cc; +} + +#StatusView > #StatusButton { + background-color: #0cb4cc; + border-color: #0cb4cc; +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryDark.uss.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryDark.uss.meta new file mode 100644 index 0000000..35a7d09 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryDark.uss.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 70d4d75a2877243758b0750cbc75b6eb +ScriptedImporter: + fileIDToRecycleName: + 11400000: stylesheet + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryLight.uss b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryLight.uss new file mode 100644 index 0000000..3f9b85f --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryLight.uss @@ -0,0 +1,86 @@ +#HistoryContainer { + background-color: #a2a2a2; +} + +.obtainedRevision #HistoryDetail { + background-color: #c2c2c2; +} + +.absentRevision #HistoryDetail { + background-color: #dedede; +} + +#StatusView { + background-color: #a2a2a3; +} + +#StatusView > #StatusMessage { + color: #000; +} + +BuildStatusButton.unity-button { + color: #111; + background-image: resource("Builtin Skins/LightSkin/Images/btn.png"); +} + +BuildStatusButton.unity-button:hover { + color: #000; +} + +BuildStatusButton.unity-button:hover:active { + background-image: resource("Builtin Skins/LightSkin/Images/btn act.png"); +} + +BuildStatusButton.unity-button:checked { + color: #F0F0F0; + background-image: resource("Builtin Skins/LightSkin/Images/btn on.png"); +} + +BuildStatusButton.unity-button:hover:checked { + color: #000; +} + +BuildStatusButton.unity-button:hover:active:checked { + background-image: resource("Builtin Skins/LightSkin/Images/btn onact.png"); +} + +BuildStatusButton.unity-button:focus:checked { + background-image: resource("Builtin Skins/LightSkin/Images/btn on focus.png"); +} + +CollabHistoryDropDown { + border-color: #a2a2a2; +} + +CollabHistoryDropDownItem { + border-color: #a2a2a2; +} + +#RevisionLine.obtainedDateLine { + background-color: #018d98; +} + +.obtainedRevision #RevisionLine { + background-color: #018d98; +} + +#RevisionIndex { + color: #018d98; +} + +#RevisionIndicator { + border-color: #018d98; +} + +.currentRevision #RevisionIndicator { + background-color: #018d98; +} + +.currentRevision #HistoryDetail { + border-color: #018d98; +} + +#StatusView > #StatusButton { + background-color: #018d98; + border-color: #018d98; +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryLight.uss.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryLight.uss.meta new file mode 100644 index 0000000..28c860e --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Resources/Styles/CollabHistoryLight.uss.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b52bde26a83564960bcb90217f72b910 +ScriptedImporter: + fileIDToRecycleName: + 11400000: stylesheet + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Unity.CollabProxy.Editor.asmdef b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Unity.CollabProxy.Editor.asmdef new file mode 100644 index 0000000..66511e1 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Unity.CollabProxy.Editor.asmdef @@ -0,0 +1,7 @@ +{ + "name": "Unity.CollabProxy.Editor", + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Unity.CollabProxy.Editor.asmdef.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Unity.CollabProxy.Editor.asmdef.meta new file mode 100644 index 0000000..03ebeca --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Editor/Unity.CollabProxy.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 645165c8169474bfbbeb8fb0bcfd26f5 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/LICENSE.md b/Library/PackageCache/com.unity.collab-proxy@1.2.16/LICENSE.md new file mode 100644 index 0000000..31bde4e --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/LICENSE.md @@ -0,0 +1,31 @@ +**Unity Companion Package License v1.0 ("_License_")** + +Copyright © 2017 Unity Technologies ApS ("**_Unity_**") + +Unity hereby grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available with this License ("**_Software_**"), subject to the following terms and conditions: + +1. *Unity Companion Use Only*. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity development engine software license ("**_Engine License_**"). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted. + +1. *No Modification of Engine License*. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way. + +1. *Ownership & Grant Back to You*. + + 3.1. You own your content. In this License, "derivative works" means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); “derivative works” of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content. + + 3.2. Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity. + + 3.3. You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License. + +1. *Trademarks*. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates ("**_Trademarks_**"). Descriptive uses of Trademarks are permitted; see, for example, Unity’s Branding Usage Guidelines at [https://unity3d.com/public-relations/brand](https://unity3d.com/public-relations/brand). + +1. *Notices & Third-Party Rights*. This License, including the copyright notice above, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity "third-party notices" or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms. + +1. *DISCLAIMER, LIMITATION OF LIABILITY*. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +1. *USE IS ACCEPTANCE and License Versions*. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License. + +1. *Use in Compliance with Law and Termination*. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License. + +1. *Severability*. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect. + +1. *Governing Law and Venue*. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License ("**_Dispute_**"). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute. diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/LICENSE.md.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/LICENSE.md.meta new file mode 100644 index 0000000..30f5c3a --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c754112a02f354a6696fa4f2b99e95a5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/README.md b/Library/PackageCache/com.unity.collab-proxy@1.2.16/README.md new file mode 100644 index 0000000..5cfbd88 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/README.md @@ -0,0 +1,16 @@ +# Collab Proxy UPM Package +This is the packaged version of Collab, currently limited to containing the History and Toolbar windows, along with supporting classes. + +## Development +Check this repository out in your {$PROJECT}/Packages/ folder, under the name com.unity.collab-proxy. The classes will be built by Unity. + +## Testing +In order to run the tests, you will need to add this project to the testables key in your manifest.json - once you have done this, the tests will be picked up by the Unity Test Runner window. + +## Building +You may build this project using msbuild. The commands to do so can be seen under .gitlab-ci.yml. + +## Deploying +Gitlab will automatically build your project when you deploy. You can download the resulting artifact, which will be a dll, and place it in your Editor/bin/ folder. Open the package in Unity to generate the meta files, and then you will be able to publish. + +We're currently looking into a way to avoid this manual process. diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/README.md.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/README.md.meta new file mode 100644 index 0000000..b3ad993 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ac281230df7b14becb40b3c479f1b429 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests.meta new file mode 100644 index 0000000..f43ddd3 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1369382d2c5e64dc5b2ec0b6b0a94531 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor.meta new file mode 100644 index 0000000..b80cefd --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4506ac79f5b274cb1b249ed7f4abfb9a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/HistoryTests.cs b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/HistoryTests.cs new file mode 100644 index 0000000..ba79a20 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/HistoryTests.cs @@ -0,0 +1,583 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEditor.Collaboration; +using UnityEngine.TestTools; +using NUnit.Framework; + +namespace UnityEditor.Collaboration.Tests +{ + [TestFixture] + internal class HistoryTests + { + private TestHistoryWindow _window; + private TestRevisionsService _service; + private CollabHistoryPresenter _presenter; + + [SetUp] + public void SetUp() + { + _window = new TestHistoryWindow(); + _service = new TestRevisionsService(); + _presenter = new CollabHistoryPresenter(_window, new CollabHistoryItemFactory(), _service); + } + + [TearDown] + public void TearDown() + { + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__PropagatesRevisionResult() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(authorName: "authorName", comment: "comment", revisionID: "revisionID"), + } + }; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual("revisionID", item.id); + Assert.AreEqual("authorName", item.authorName); + Assert.AreEqual("comment", item.comment); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__RevisionNumberingIsInOrder() + { + _service.result = new RevisionsResult() + { + RevisionsInRepo = 4, + Revisions = new List() + { + new Revision(revisionID: "0"), + new Revision(revisionID: "1"), + new Revision(revisionID: "2"), + new Revision(revisionID: "3"), + } + }; + + _presenter.OnUpdatePage(0); + var items = _window.items.ToArray(); + + Assert.AreEqual(4, items[0].index); + Assert.AreEqual(3, items[1].index); + Assert.AreEqual(2, items[2].index); + Assert.AreEqual(1, items[3].index); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__RevisionNumberingChangesForMorePages() + { + _service.result = new RevisionsResult() + { + RevisionsInRepo = 12, + Revisions = new List() + { + new Revision(revisionID: "0"), + new Revision(revisionID: "1"), + new Revision(revisionID: "2"), + new Revision(revisionID: "3"), + new Revision(revisionID: "4"), + } + }; + + _presenter.OnUpdatePage(1); + var items = _window.items.ToArray(); + + Assert.AreEqual(12, items[0].index); + Assert.AreEqual(11, items[1].index); + Assert.AreEqual(10, items[2].index); + Assert.AreEqual(9, items[3].index); + Assert.AreEqual(8, items[4].index); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__ObtainedIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(isObtained: false), + new Revision(isObtained: true), + } + }; + + _presenter.OnUpdatePage(0); + var items = _window.items.ToArray(); + + Assert.IsFalse(items[0].obtained); + Assert.IsTrue(items[1].obtained); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__CurrentIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "1"), + new Revision(revisionID: "2"), + new Revision(revisionID: "3"), + } + }; + _service.tipRevision = "2"; + + _presenter.OnUpdatePage(0); + var items = _window.items.ToArray(); + + Assert.AreEqual(false, items[0].current); + Assert.AreEqual(true, items[1].current); + Assert.AreEqual(false, items[2].current); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__InProgressIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "1"), + new Revision(revisionID: "2"), + new Revision(revisionID: "3"), + } + }; + _window.inProgressRevision = "2"; + + _presenter.OnUpdatePage(0); + var items = _window.items.ToArray(); + + Assert.IsFalse(items[0].inProgress); + Assert.IsTrue(items[1].inProgress); + Assert.IsFalse(items[2].inProgress); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__EnabledIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _window.revisionActionsEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(true, item.enabled); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__DisabledIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _window.revisionActionsEnabled = false; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(false, item.enabled); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasNoneWhenNotTip() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "1"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = false; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.None, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateTipHasNoneWhenEnabled() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.None, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasConfigureWhenTip() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = false; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Configure, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasConfigureWhenZeroBuildStatus() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = false; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Configure, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasNoneWhenZeroBuildStatuses() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.None, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasSuccessWhenCompleteAndSucceeded() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + revisionID: "0", + buildStatuses: new CloudBuildStatus[1] + { + new CloudBuildStatus(complete: true, success: true), + } + ), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Success, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasInProgress() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + revisionID: "0", + buildStatuses: new CloudBuildStatus[1] + { + new CloudBuildStatus(complete: false), + } + ), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.InProgress, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasFailure() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + revisionID: "0", + buildStatuses: new CloudBuildStatus[1] + { + new CloudBuildStatus(complete: true, success: false), + } + ), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Failed, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasFailureWhenAnyBuildsFail() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + revisionID: "0", + buildStatuses: new CloudBuildStatus[3] + { + new CloudBuildStatus(complete: true, success: false), + new CloudBuildStatus(complete: true, success: false), + new CloudBuildStatus(complete: true, success: true), + } + ), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Failed, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__ChangesPropagateThrough() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0", entries: GenerateChangeActions(3)), + } + }; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + var changes = item.changes.ToList(); + + Assert.AreEqual("Path0", changes[0].path); + Assert.AreEqual("Path1", changes[1].path); + Assert.AreEqual("Path2", changes[2].path); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__ChangesTotalIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0", entries: GenerateChangeActions(3)), + } + }; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(3, item.changes.Count); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__ChangesTruncatedIsCalculated() + { + for (var i = 0; i < 20; i++) + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0", entries: GenerateChangeActions(i)), + } + }; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(i > 10, item.changesTruncated); + } + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__OnlyKeeps10ChangeActions() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(authorName: "Test", author: "test", entries: GenerateChangeActions(12)), + } + }; + + _presenter.OnUpdatePage(1); + var item = _window.items.First(); + + Assert.AreEqual(10, item.changes.Count); + Assert.AreEqual(12, item.changesTotal); + Assert.AreEqual(true, item.changesTruncated); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__DeduplicatesMetaFiles() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + authorName: "Test", + author: "test", + revisionID: "", + entries: new ChangeAction[2] + { + new ChangeAction(path: "Path1", action: "Action1"), + new ChangeAction(path: "Path1.meta", action: "Action1"), + } + ), + } + }; + + _presenter.OnUpdatePage(1); + var item = _window.items.First(); + + Assert.AreEqual(1, item.changes.Count); + Assert.AreEqual(1, item.changesTotal); + Assert.AreEqual("Path1", item.changes.First().path); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__FolderMetaFilesAreCounted() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + authorName: "Test", + author: "test", + entries: new ChangeAction[1] + { + new ChangeAction(path: "Folder1.meta", action: "Action1"), + } + ), + } + }; + + _presenter.OnUpdatePage(1); + var item = _window.items.First(); + + Assert.AreEqual(1, item.changes.Count); + Assert.AreEqual(1, item.changesTotal); + Assert.AreEqual("Folder1", item.changes.First().path); + } + + private static ChangeAction[] GenerateChangeActions(int count) + { + var entries = new ChangeAction[count]; + for (var i = 0; i < count; i++) + entries[i] = new ChangeAction(path: "Path" + i, action: "Action" + i); + return entries; + } + } + + internal class TestRevisionsService : IRevisionsService + { + public RevisionsResult result; + public event RevisionsDelegate FetchRevisionsCallback; + + public string tipRevision { get; set; } + public string currentUser { get; set; } + + public void GetRevisions(int offset, int count) + { + if(FetchRevisionsCallback != null) + { + FetchRevisionsCallback(result); + } + } + } + + internal class TestHistoryWindow : ICollabHistoryWindow + { + public IEnumerable items; + + public bool revisionActionsEnabled { get; set; } + public int itemsPerPage { get; set; } + public string errMessage { get; set; } + public string inProgressRevision { get; set; } + public PageChangeAction OnPageChangeAction { get; set; } + public RevisionAction OnGoBackAction { get; set; } + public RevisionAction OnUpdateAction { get; set; } + public RevisionAction OnRestoreAction { get; set; } + public ShowBuildAction OnShowBuildAction { get; set; } + public Action OnShowServicesAction { get; set; } + + public void UpdateState(HistoryState state, bool force) + { + } + + public void UpdateRevisions(IEnumerable items, string tip, int totalRevisions, int currPage) + { + this.items = items; + } + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/HistoryTests.cs.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/HistoryTests.cs.meta new file mode 100644 index 0000000..d648a7f --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/HistoryTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 23a56a19774ed42b6b65646af08a003c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef new file mode 100644 index 0000000..3467a9e --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef @@ -0,0 +1,13 @@ +{ + "name": "Unity.CollabProxy.EditorTests", + "references": [ + "Unity.CollabProxy.Editor" + ], + "optionalUnityReferences": [ + "TestAssemblies" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef.meta new file mode 100644 index 0000000..57db5c7 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 782de34c17796430ba8d0ceddb60944e +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/package.json b/Library/PackageCache/com.unity.collab-proxy@1.2.16/package.json new file mode 100644 index 0000000..3402274 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/package.json @@ -0,0 +1,21 @@ +{ + "name": "com.unity.collab-proxy", + "displayName": "Unity Collaborate", + "version": "1.2.16", + "unity": "2018.3", + "description": "Collaborate is a simple way for teams to save, share, and sync their Unity project", + "keywords": [ + "collab", + "collaborate", + "teams", + "team", + "cloud", + "backup" + ], + "dependencies": {}, + "repository": { + "type": "git", + "url": "https://gitlab.cds.internal.unity3d.com/upm-packages/cloud-services/collab-proxy.git", + "revision": "070e173b6a36e1d6097b1d95e09c08840c23f6ca" + } +} diff --git a/Library/PackageCache/com.unity.collab-proxy@1.2.16/package.json.meta b/Library/PackageCache/com.unity.collab-proxy@1.2.16/package.json.meta new file mode 100644 index 0000000..c52d0c6 --- /dev/null +++ b/Library/PackageCache/com.unity.collab-proxy@1.2.16/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 57b0c806ba25b48aa8a6ecb3345a4a9b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/.gitlab-ci.yml b/Library/PackageCache/com.unity.ext.nunit@1.0.0/.gitlab-ci.yml new file mode 100644 index 0000000..4c64e22 --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/.gitlab-ci.yml @@ -0,0 +1,15 @@ +image: node:6.10.0 + +stages: + - push_to_packman_staging + +push_to_packman_staging: + stage: push_to_packman_staging + only: + - tags + script: + - sed -i "s/0.0.1-PLACEHOLDERVERSION/$CI_COMMIT_TAG/g" package.json + - sed -i "s/PLACEHOLDERSHA/$CI_COMMIT_SHA/g" package.json + - sed -i "s/0.0.1-PLACEHOLDERVERSION/$CI_COMMIT_TAG/g" CHANGELOG.md + - curl -u $USER_NAME:$API_KEY https://staging-packages.unity.com/auth > .npmrc + - npm publish diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/CHANGELOG.md b/Library/PackageCache/com.unity.ext.nunit@1.0.0/CHANGELOG.md new file mode 100644 index 0000000..225baea --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog +All notable changes to this package will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [1.0.0] - 2019-02-21 + +### This is the first release of *Unity Package com.unity.ext.nunit*. + +- Migrated the custom version of nunit from inside of unity. diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/CHANGELOG.md.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/CHANGELOG.md.meta new file mode 100644 index 0000000..d91fbde --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f49bbe06ffa5ae24abe32abdab430c24 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/Documentation~/ext.nunit.md b/Library/PackageCache/com.unity.ext.nunit@1.0.0/Documentation~/ext.nunit.md new file mode 100644 index 0000000..2a38b9d --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/Documentation~/ext.nunit.md @@ -0,0 +1,6 @@ +# Custom Nunit build to work with Unity + +This version of nunit works with all platforms, il2cpp and Mono AOT. + +For Nunit Documentation: +https://github.com/nunit/docs/wiki/NUnit-Documentation diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/LICENSE.md b/Library/PackageCache/com.unity.ext.nunit@1.0.0/LICENSE.md new file mode 100644 index 0000000..ccc1f59 --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/LICENSE.md @@ -0,0 +1,19 @@ +Copyright (c) 2018 Charlie Poole, Rob Prouse + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/LICENSE.md.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/LICENSE.md.meta new file mode 100644 index 0000000..90df748 --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f91a00d2dca52b843b2d50ccf750737d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/README.md b/Library/PackageCache/com.unity.ext.nunit@1.0.0/README.md new file mode 100644 index 0000000..2a38b9d --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/README.md @@ -0,0 +1,6 @@ +# Custom Nunit build to work with Unity + +This version of nunit works with all platforms, il2cpp and Mono AOT. + +For Nunit Documentation: +https://github.com/nunit/docs/wiki/NUnit-Documentation diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/README.md.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/README.md.meta new file mode 100644 index 0000000..e9a7f9f --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5da62a0c1c5218c4aa16b74546a7822d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35.meta new file mode 100644 index 0000000..278a2fa --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a36d8b72880a8004f96ac54ce4598ff9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom.meta new file mode 100644 index 0000000..750f82c --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2347243c7aa3e224f9282dc94e6fc3b2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/This is a custom build DONT include.txt b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/This is a custom build DONT include.txt new file mode 100644 index 0000000..0839eb9 --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/This is a custom build DONT include.txt @@ -0,0 +1,4 @@ +This is a custom nUnit build meant to be used by Unity editor and players. It shoul not be included or referenced from anywhere (unless you know what you're doing) + +Build from this repo +https://github.com/Unity-Technologies/nunit \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/This is a custom build DONT include.txt.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/This is a custom build DONT include.txt.meta new file mode 100644 index 0000000..5e251ee --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/This is a custom build DONT include.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3d67ccdf81bed8247ad0db2d5f47a7d1 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll new file mode 100644 index 0000000..3af863c Binary files /dev/null and b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll differ diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll.mdb b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll.mdb new file mode 100644 index 0000000..cb688df Binary files /dev/null and b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll.mdb differ diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll.mdb.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll.mdb.meta new file mode 100644 index 0000000..1e81d1e --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll.mdb.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6f768c3714a34a549960ea903fbadcc2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll.meta new file mode 100644 index 0000000..2870dbc --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.dll.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: f1605f5534186904fa2c4c42acbfe01e +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: ["UNITY_INCLUDE_TESTS"] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: {} + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.pdb b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.pdb new file mode 100644 index 0000000..cae9b39 Binary files /dev/null and b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.pdb differ diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.pdb.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.pdb.meta new file mode 100644 index 0000000..dc02745 --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.pdb.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f136f1f122a53c64c9af51baecaa9c96 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.xml b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.xml new file mode 100644 index 0000000..aea2099 --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.xml @@ -0,0 +1,18101 @@ + + + + nunit.framework + + + + + Basic Asserts on strings. + + + + + 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. + + + + + + + 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 + Arguments used in formatting the message + + + + Asserts that a string is found within another string. + + The expected string + The string to be examined + + + + Asserts that a string is not found within another string. + + The expected string + The string to be examined + 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 + + + + Asserts that a string starts with another string. + + The expected string + The string to be examined + 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 + + + + 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 + Arguments used in formatting the message + + + + Asserts that a string does not start with another string. + + The expected string + The string to be examined + + + + Asserts that a string ends with another string. + + The expected string + The string to be examined + 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 + + + + 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 + Arguments used in formatting the message + + + + Asserts that a string does not end with another string. + + The expected string + The string to be examined + + + + Asserts that two strings are equal, without regard to case. + + The expected string + The actual string + 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 + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + The message to display in case of failure + Arguments used in formatting the message + + + + Asserts that two strings are not equal, without regard to case. + + The expected string + The actual string + + + + 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 + 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 + + + + 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 + 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 + + + + Combines multiple filters so that a test must pass all + of them in order to pass this filter. + + + + + A base class for multi-part filters + + + + + 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. + + + + + 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. + + + + + 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 + + + + + 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 + + + + Unique Empty filter. + + + + + 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 + + + + 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 + + + + 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 test to which the filter is applied + True if the filter matches the any parent of the test + + + + Determine whether any ancestor of the test matches the filter criteria + + The test to which the filter is applied + True if the filter matches the an ancestor of the test + + + + Determine whether any descendant of the test matches the filter criteria. + + The test to be matched + True if at least one descendant matches the filter criteria + + + + Create a TestFilter instance from an xml representation. + + + + + Create a TestFilter from it's TNode representation + + + + + Adds an XML node + + True if recursive + The added XML node + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Indicates whether this is the EmptyFilter + + + + + Indicates whether this is a top-level filter, + not contained in any other filter. + + + + + Nested class provides an empty filter - one that always + returns true when called. It never matches explicitly. + + + + + Constructs an empty CompositeFilter + + + + + Constructs a CompositeFilter from an array of filters + + + + + + Adds a filter to the list of filters + + The filter to be added + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is matched by a test. + + The test to be matched + + + + Checks whether the CompositeFilter is explicit matched by a test. + + The test to be matched + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Return a list of the composing filters. + + + + + Gets the element name + + Element name + + + + Constructs an empty AndFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters pass, otherwise false + + + + Checks whether the AndFilter is matched by a test + + The test to be matched + True if all the component filters match, otherwise false + + + + Checks whether the AndFilter is explicit matched by a test. + + The test to be matched + True if all the component filters explicit match, otherwise false + + + + Gets the element name + + Element name + + + + SubstringConstraint can test whether a string contains + the expected substring. + + + + + StringConstraint is the abstract base for constraints + that operate on strings. It supports the IgnoreCase + modifier for string operations. + + + + + The Constraint class is the base of all built-in constraints + within NUnit. It provides the operator overloads used to combine + constraints. + + + + + Interface for all constraints + + + + + The IResolveConstraint interface is implemented by all + complete and resolvable constraints and expressions. + + + + + Return the top-level constraint for this expression + + + + + + 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 + + + + The display name of this Constraint for use by ToString(). + + + + + 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 + + + + + Construct a constraint with optional arguments + + Arguments to be saved + + + + 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 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. + + + + + 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 + + + + + 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. + + + + + The expected value + + + + + Indicates whether tests should be case-insensitive + + + + + Description of this constraint + + + + + Constructs a StringConstraint without an expected value + + + + + Constructs a StringConstraint given an expected value + + The expected value + + + + 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 + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Modify the constraint to ignore case in matching. + + + + + 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 + + + + Abstract base class used for prefixes + + + + + Construct given a base constraint + + + + + + The base constraint + + + + + Prefix used in forming the constraint description + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + AssignableToConstraint is used to test that an object + can be assigned to a given Type. + + + + + 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. + + + + 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. + + + + Summary description for MaxTimeAttribute. + + + + + PropertyAttribute is used to attach information to a test as a name/value pair.. + + + + + The abstract base class for all custom attributes defined by NUnit. + + + + + Default constructor + + + + + The IApplyToTest interface is implemented by self-applying + attributes that modify the state of a test in some way. + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + Construct a PropertyAttribute with a name and string value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and int value + + The name of the property + The property value + + + + Construct a PropertyAttribute with a name and double value + + The name of the property + The property value + + + + Constructor for derived classes that set the + property dictionary directly. + + + + + 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. + + + + + Modifies a test by adding properties to it. + + The test to modify + + + + Gets the property dictionary for this attribute + + + + + Objects implementing this interface are used to wrap + the entire test, including SetUp and TearDown. + + + + + ICommandWrapper is implemented by attributes and other + objects able to wrap a TestCommand with another command. + + + 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. + + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + Construct a MaxTimeAttribute, given a time in milliseconds. + + The maximum elapsed time in milliseconds + + + + 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. + + + 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. + + + + + Default characters for random functions. + + Default characters are the English alphabet (uppercase & lowercase), arabic numerals, and underscore + + + + 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. + + + + + Create a new Randomizer using the next seed + available to ensure that each randomizer gives + a unique sequence of values. + + + + + + Default constructor + + + + + Construct based on seed value + + + + + + Returns a random unsigned int. + + + + + Returns a random unsigned int less than the specified maximum. + + + + + Returns a random unsigned int within a specified range. + + + + + Returns a non-negative random short. + + + + + Returns a non-negative random short less than the specified maximum. + + + + + Returns a non-negative random short within a specified range. + + + + + Returns a random unsigned short. + + + + + Returns a random unsigned short less than the specified maximum. + + + + + Returns a random unsigned short within a specified range. + + + + + Returns a random long. + + + + + Returns a random long less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random ulong. + + + + + Returns a random ulong less than the specified maximum. + + + + + Returns a non-negative random long within a specified range. + + + + + Returns a random Byte + + + + + Returns a random Byte less than the specified maximum. + + + + + Returns a random Byte within a specified range + + + + + Returns a random SByte + + + + + Returns a random sbyte less than the specified maximum. + + + + + Returns a random sbyte within a specified range + + + + + Returns a random bool + + + + + Returns a random bool based on the probablility a true result + + + + + Returns a random double between 0.0 and the specified maximum. + + + + + Returns a random double within a specified range. + + + + + Returns a random float. + + + + + Returns a random float between 0.0 and the specified maximum. + + + + + Returns a random float within a specified range. + + + + + Returns a random enum value of the specified Type as an object. + + + + + Returns a random enum value of the specified Type. + + + + + 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 + + + + 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 + + + + 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 + + + + Returns a random decimal. + + + + + Returns a random decimal between positive zero and the specified maximum. + + + + + 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. + + + + + Initial seed used to create randomizers for this run + + + + + 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. + + + + 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 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents the result of running a test suite + + + + + The TestResult class represents the result of a test. + + + + + 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. + + + + + The minimum duration for tests + + + + + Error message for when child tests have errors + + + + + Error message for when child tests are ignored + + + + + Aggregate assertion count + + + + + Construct a test result given a Test + + The test to be used + + + + Returns the Xml representation of the result. + + If true, descendant results are included + An XmlNode representing the result + + + + Adds the XML representation of the result as a child of the + supplied parent node.. + + The parent node. + If true, descendant results are included + + + + + Set the result of the test + + The ResultState to use in the result + + + + Set the result of the test + + The ResultState to use in the result + A message associated with the result state + + + + 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 + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + + + + Set the test result based on the type of exception thrown + + The exception that was thrown + THe FailureSite to use in the result + + + + 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 + + + + Adds a reason element to a node and returns it. + + The target node. + The new reason element. + + + + Adds a failure element to a node and returns it. + + The target node. + The new failure element. + + + + Gets the test with which this result is associated. + + + + + 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 or sets 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. + + + + + Gets or sets the count of asserts executed + when running the test. + + + + + 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. + + + + + Gets the collection of child results. + + + + + Gets a TextWriter, which will write output to be included in the result. + + + + + Gets any text output written to this result. + + + + + Construct a TestSuiteResult base on a TestSuite + + The TestSuite to which the result applies + + + + Adds a child result to this result, setting this result's + ResultState to Failure if the child result failed. + + The result to be added + + + + 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. + + + + + Gets the collection of child results. + + + + + TestSuite represents a composite test, which contains other tests. + + + + + The Test abstract class represents a test within the framework. + + + + + 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. + + + + + Static value to seed ids. It's started at 1000 so any + uninitialized ids will stand out. + + + + + The SetUp methods. + + + + + The teardown methods + + + + + Used to cache the declaring type for this MethodInfo + + + + + Method property backing field + + + + + Constructs a test given its name + + The name of the test + + + + 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 + + + + TODO: Documentation needed for constructor + + + + + + Construct a test from a MethodInfo + + + + + + Creates a TestResult for this test. + + A TestResult suitable for this type of 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 + + + + Add standard attributes and members to a test node. + + + + + + + Returns the Xml representation of the test + + If true, include child tests recursively + + + + + 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 + + + + + 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 + + + + Gets or sets the id of the test + + + + + + Gets or sets the name of the test + + + + + Gets or sets the fully qualified name of the test + + + + + + Gets the name of the class where this test was declared. + 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 TypeInfo of the fixture used in running this test + or null if no fixture type is associated with it. + + + + + Gets a MethodInfo for the method implementing this test. + Returns null if the test is not implemented as a method. + + + + + Whether or not the test should be run + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + 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. + + + + + Gets a count of test cases represented by + or contained under this test. + + + + + Gets the properties for this test + + + + + Returns true if this is a TestSuite + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the parent as a Test object. + Used by the core to set the parent. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets or sets a fixture object for running this test. + + + + + Static prefix used for ids in this AppDomain. + Set by FrameworkController. + + + + + Gets or Sets the Int value representing the seed for the RandomGenerator + + + + + + Our collection of child tests + + + + + Initializes a new instance of the class. + + The name of the suite. + + + + Initializes a new instance of the class. + + Name of the parent suite. + The name of the suite. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Sorts tests under this suite. + + + + + Adds a test to the suite. + + The test. + + + + Overridden to return a TestSuiteResult. + + A TestResult for this test. + + + + 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 + + + + + Check that setup and teardown methods marked by certain attributes + meet NUnit's requirements and mark the tests not runnable otherwise. + + The attribute type to check for + + + + Gets this test's child tests + + The list of child tests + + + + Gets a count of test cases represented by + or contained under this test. + + + + + + The arguments to use in creating the fixture + + + + + Set to true to suppress sorting this suite's contents + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + 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. + + + + + 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 + + + + + Adds a key/value pair to the property set + + 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 + + + + + Returns an XmlNode representating the current PropertyBag. + + Not used + An XmlNode representing the PropertyBag + + + + Returns an XmlNode representing the PropertyBag after + adding it as a child of the supplied parent node. + + The parent node. + Not used + + + + + Gets a collection containing all the keys in the property set + + + + + + Gets or sets the list of _values for a particular key + + + + + Thrown when an assertion failed. Here to preserve the inner + exception and hence its stack trace. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + + + + Initializes a new instance of the class. + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + FullName filter selects tests based on their FullName + + + + + ValueMatchFilter selects tests based on some value, which + is expected to be contained in the test. + + + + + Construct a ValueMatchFilter for a single value. + + The value to be included. + + + + Match the input provided by the derived class + + The value to be matchedT + True for a match, false otherwise. + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Returns the value matched by the filter - used for testing + + + + + Indicates whether the value is a regular expression + + + + + Gets the element name + + Element name + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + NotFilter negates the operation of another filter + + + + + Construct a not filter on another filter + + The filter to be negated + + + + 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 + + + + Check whether the filter matches a test + + The test to be matched + True if it matches, 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 + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the base filter + + + + + SequentialStrategy creates test cases by using all of the + parameter data sources in parallel, substituting null + when any of them run out of data. + + + + + 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. + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + 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. + + + + + 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. + + An ITypeInfo for the fixture to be used. + A TestSuite object or one derived from TestSuite. + + + + Overload of BuildFrom called by tests that have arguments. + Builds a fixture using the provided type and information + in the ITestFixtureData object. + + The TypeInfo for which to construct a fixture. + An object implementing ITestFixtureData or null. + + + + + Method to add test cases to the newly constructed fixture. + + The fixture to which cases should be added + + + + 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 method for which a test is to be created + The test suite being built. + A newly constructed Test + + + + UniqueItemsConstraint tests whether all the items in a + collection are unique. + + + + + CollectionItemsEqualConstraint is the abstract base class for all + collection constraints that apply some notion of item equality + as a part of their operation. + + + + + 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 + + + + + + + Construct an empty CollectionConstraint + + + + + Construct a CollectionConstraint + + + + + + 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 + + + + Flag the constraint to ignore case and return self. + + + + + Check that all items are unique. + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + SamePathOrUnderConstraint tests that one path is under another + + + + + 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 + + + + 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 + + + + + Modifies the current instance to be case-sensitive + and returns it. + + + + + Initializes a new instance of the class. + + The expected path + + + + 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. + + + + + 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 + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + 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. + + + + + 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. + + + + + + + ValuesAttribute is used to provide literal arguments for + an individual parameter of a test. + + + + + The abstract base class for all data-providing attributes + defined by NUnit. Used to select all data sources for a + method, class or parameter. + + + + + Default constructor + + + + + 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 + + + + 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 + + + + + Constructs for use with an Enum parameter. Will pass every enum + value in to the test. + + + + + Construct with one argument + + + + + + Construct with two arguments + + + + + + + Construct with three arguments + + + + + + + + Construct with an array of arguments + + + + + + Get the collection of _values to be used as arguments + + + + + 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. + + + + + Marks a test to use a particular CombiningStrategy to join + any parameter data provided. Since this is the default, the + attribute is optional. + + + + + Construct a CombiningStrategyAttribute incorporating an + ICombiningStrategy and an IParamterDataProvider. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + Construct a CombiningStrategyAttribute incorporating an object + that implements ICombiningStrategy and an IParameterDataProvider. + This constructor is provided for CLS compliance. + + Combining strategy to be used in combining data + An IParameterDataProvider to supply data + + + + 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 + + + + Modify the test by adding the name of the combining strategy + to the properties. + + The test to modify + + + + Default constructor + + + + + CultureAttribute is used to mark a test fixture or an + individual method as applying to a particular Culture only. + + + + + Abstract base for Attributes that are used to include tests + in the test run based on environmental settings. + + + + + Constructor with no included items specified, for use + with named property syntax. + + + + + Constructor taking one or more included items + + Comma-delimited list of included items + + + + Name of the item that is needed in order for + a test to run. Multiple items may be given, + separated by a comma. + + + + + Name of the item to be excluded. Multiple items + may be given, separated by a comma. + + + + + The reason for including or excluding the test + + + + + Constructor with no cultures specified, for use + with named property syntax. + + + + + Constructor taking one or more cultures + + Comma-deliminted list of cultures + + + + Causes a test to be skipped if this CultureAttribute is not satisfied. + + The test to modify + + + + Tests to determine if the current culture is supported + based on the properties of this attribute. + + True, if the current culture is supported + + + + 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 + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + The current state of a work item + + + + + Ready to run or continue + + + + + Work Item is executing + + + + + Complete + + + + + 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. + + + + + Creates a work item. + + The test for which this WorkItem is being created. + The filter to be used in selecting any child Tests. + + + + + Construct a WorkItem for a particular test. + + The test that the WorkItem will run + + + + 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 + + + + Execute the current work item, including any + child work items. + + + + + Cancel (abort or stop) a WorkItem + + true if the WorkItem should be aborted, false if it should run to completion + + + + Method that performs actually performs the work. It should + set the State to WorkItemState.Complete when done. + + + + + Method called by the derived class when all work is complete + + + + + Event triggered when the item is complete + + + + + Gets the current state of the WorkItem + + + + + The test being executed by the work item + + + + + The execution context + + + + + The unique id of the worker executing this item. + + + + + The test actions to be performed before and after this test + + + + + The test result + + + + + TODO: Documentation needed for class + + + + + TODO: Documentation needed for class + + + + + 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. + + + + + Construct a TestCommand for a test. + + The test to be executed + + + + Runs the test in a specified context, returning a TestResult. + + The TestExecutionContext to be used for running the test. + A TestResult + + + + Gets the test associated with this command. + + + + TODO: Documentation needed for field + + + TODO: Documentation needed for method + + + + TODO: Documentation needed for constructor + + + + + + Initializes a new instance of the class. + + The inner command. + The max time allowed in milliseconds + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext + + The context in which the test should run. + A TestResult + + + + 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 ITestAssemblyBuilder interface is implemented by a class + that is able to build a suite of tests given an assembly or + an assembly filename. + + + + + Build a suite of tests from a provided assembly + + 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 + + + + Build a suite of tests given the filename of an assembly + + 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 + + + + 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. + + + + + 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 + + + + Initialize the internal trace using a provided TextWriter and level + + A TextWriter + The InternalTraceLevel + + + + Get a named Logger + + + + + + Get a logger named for a particular Type. + + + + + Gets a flag indicating whether the InternalTrace is initialized + + + + + The ITypeInfo interface is an abstraction of a .NET Type + + + + + Returns true if the Type wrapped is equal to the argument + + + + + 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. + + + + + Gets the underlying Type on which this ITypeInfo is based + + + + + Gets the base type of this type as an ITypeInfo + + + + + 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. + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Defines methods to manipulate thread-safe collections intended for producer/consumer usage. + + 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. + + + + + Attempts to add an object to the . + + The object to add to the . + true if the object was added successfully; otherwise, false. + The was invalid for this collection. + + + + Attempts to remove and return an object from the . + + + 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. + + + + Copies the elements contained in the to a new array. + + A new array containing the elements copied from the . + + + + Copies the elements of the to + an + , starting at a specified index. + + 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 . + + + + + 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 + + + + 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 + + + + 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 + + + + 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. + + + + + 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. + + + + + 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 properties of the test. + + + + + ResultAdapter adapts a TestResult for consumption by + the user test code. + + + + + Construct a ResultAdapter for a TestResult + + The TestResult to be adapted + + + + Gets a ResultState representing the outcome of the test. + + + + + Gets the message associated with a test + failure or with not running the test + + + + + Gets any stacktrace associated with an + error or failure. + + + + + 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. + + + + + ExceptionHelper provides static methods for working with exceptions + + + + + Rethrows an exception, preserving its stack trace + + The exception to rethrow + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined message string. + + + + Builds up a message, using the Message field of the specified exception + as well as any InnerExceptions. + + The exception. + A combined stack trace. + + + + Gets the stack trace of the exception. + + The exception. + A string representation of the stack trace. + + + + CultureDetector is a helper class used by NUnit to determine + whether a test should be run based on the current culture. + + + + + Default constructor uses the current culture. + + + + + Construct a CultureDetector for a particular culture for testing. + + The culture to be used + + + + Test to determine if one of a collection of cultures + is being used currently. + + + + + + + Tests to determine if the current culture is supported + based on a culture attribute. + + The attribute to examine + + + + + 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 + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + PairwiseStrategy creates test cases by combining the parameter + data so that all possible pairs of data items are used. + + + + 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 + + + + + + Gets the test cases generated by this strategy instance. + + A set of test cases. + + + + FleaRand is a pseudo-random number generator developed by Bob Jenkins: + http://burtleburtle.net/bob/rand/talksmall.html#flea + + + + + Initializes a new instance of the FleaRand class. + + The seed. + + + + 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. + + + + + Initializes a new instance of FeatureInfo class. + + Index of a dimension. + Index of a feature. + + + + 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. + + + + + Initializes a new instance of FeatureTuple class for a single feature. + + Single feature. + + + + Initializes a new instance of FeatureTuple class for a pair of features. + + First feature. + Second feature. + + + + TestCase represents a single test case covering a list of features. + + + + + Initializes a new instance of TestCaseInfo class. + + A number of features in the test case. + + + + PairwiseTestCaseGenerator class implements an algorithm which generates + a set of test cases which covers all pairs of possible values of test + function. + + + + 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. + + + + + + Creates a set of test cases for specified dimensions. + + + 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. + + + + + Provides data from fields marked with the DatapointAttribute or the + DatapointsAttribute. + + + + + 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 + + + + Determine whether any data is available for a parameter. + + A ParameterInfo 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. + + A ParameterInfo representing one + argument to a parameterized test + + An IEnumerable providing the required data + + + + + CombinatorialStrategy creates test cases by using all possible + combinations of the parameter data. + + + + + Gets the test cases generated by the CombiningStrategy. + + The test cases. + + + + ThrowsNothingConstraint tests that a delegate does not + throw an exception. + + + + + 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 + + + + Gets text describing a constraint + + + + + Operator that requires at least one of it's arguments to succeed + + + + + Abstract base class for all binary operators + + + + + 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. + + + + + 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. + + + + + + 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. + + + + + + Abstract method that produces a constraint by applying + the operator to its left and right constraint arguments. + + + + + Gets the left precedence of the operator + + + + + Gets the right precedence of the operator + + + + + Construct an OrOperator + + + + + Apply the operator to produce an OrConstraint + + + + + 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 + + + + 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 + + + + TestFixtureAttribute is used to mark a class that represents a TestFixture. + + + + + 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. + + + + + 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 + + + + + Get the TypeArgs if separately set + + + + + Default constructor + + + + + 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. + + + + + + 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. + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test fixture. + + + + + The arguments originally provided to the attribute + + + + + Properties pertaining to this fixture + + + + + Get or set the type arguments. If not set + explicitly, any leading arguments that are + Types are taken as type arguments. + + + + + Descriptive text for this fixture + + + + + The author of this fixture + + + + + The type that this fixture is testing + + + + + Gets or sets the ignore reason. May set RunState as a side effect. + + The ignore reason. + + + + Gets or sets the reason for not running the fixture. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets and sets the category for this fixture. + May be a comma-separated list of categories. + + + + + TestCaseAttribute is used to mark parameterized test cases + and provide them with their arguments. + + + + + 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 + + + + + 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. + + + + + Construct a TestCaseAttribute with a list of arguments. + This constructor is not CLS-Compliant + + + + + + Construct a TestCaseAttribute with a single argument + + + + + + Construct a TestCaseAttribute with a two arguments + + + + + + + Construct a TestCaseAttribute with a three arguments + + + + + + + + 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 arguments to be converted + The ParameterInfo array for the method + + + + 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 + + + + Gets or sets the name of the test. + + The name of the test. + + + + Gets or sets the RunState of this test case. + + + + + Gets the list of arguments to a test case + + + + + Gets the properties of the test case + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if the expected result has been set + + + + + Gets or sets the description. + + The description. + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the reason for ignoring the test + + + + + Gets or sets a value indicating whether this is explicit. + + + true if explicit; otherwise, false. + + + + + Gets or sets the reason for not running the test. + + The reason. + + + + Gets or sets the ignore reason. When set to a non-null + non-empty value, the test is marked as ignored. + + The ignore reason. + + + + Comma-delimited list of platforms to run the test for + + + + + Comma-delimited list of platforms to not run the test for + + + + + Gets and sets the category for this test case. + May be a comma-separated list of categories. + + + + + GenericMethodHelper is able to deduce the Type arguments for + a generic method from the actual arguments provided. + + + + + Construct a GenericMethodHelper for a method + + MethodInfo for the method to examine + + + + Return the type argments for the method, deducing them + from the arguments actually provided. + + The arguments to the method + An array of type arguments. + + + + TestActionCommand runs the BeforeTest actions for a test, + then runs the test and finally runs the AfterTestActions. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Provides internal logging to the NUnit framework + + + + + Interface for logging within the engine + + + + + Logs the specified message at the error level. + + The message. + + + + Logs the specified message at the error level. + + The message. + The arguments. + + + + Logs the specified message at the warning level. + + The message. + + + + Logs the specified message at the warning level. + + The message. + The arguments. + + + + Logs the specified message at the info level. + + The message. + + + + Logs the specified message at the info level. + + The message. + The arguments. + + + + Logs the specified message at the debug level. + + The message. + + + + Logs the specified message at the debug level. + + The message. + The arguments. + + + + Initializes a new instance of the class. + + The name. + The log level. + The writer where logs are sent. + + + + Logs the message at error level. + + The message. + + + + 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. + + + + Logs the message at info level. + + The message. + + + + Logs the message at info level. + + The message. + The message arguments. + + + + Logs the message at debug level. + + The message. + + + + Logs the message at debug level. + + The message. + The message arguments. + + + + ClassName filter selects tests based on the class FullName + + + + + Construct a FullNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + PropertyFilter is able to select or exclude tests + based on their properties. + + + + + + Construct a PropertyFilter using a property name and expected value + + A property name + The expected value of the property + + + + Check whether the filter matches a test + + The test to be matched + + + + + Adds an XML node + + Parent node + True if recursive + The added XML node + + + + Gets the element name + + Element name + + + + Env is a static class that provides some of the features of + System.Environment that are not available under all runtimes + + + + + The newline sequence in the current environment. + + + + + Path to the 'My Documents' folder + + + + + Directory used for file output if not specified on commandline. + + + + + 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. + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 less + The second value, expected to be greater + + + + 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 + + + + Represents a constraint that succeeds if all the + members of a collection match a base constraint. + + + + + Abstract base for operators that indicate how to + apply a constraint to items in a collection. + + + + + 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. + + + + + + + Constructs a CollectionOperator + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + they all succeed. + + + + + FileExistsConstraint is used to determine if a file exists + + + + + FileOrDirectoryExistsConstraint is used to determine if a file or directory exists + + + + + Initializes a new instance of the class that + will check files and directories. + + + + + Initializes a new instance of the class that + will only check files if ignoreDirectories is true. + + if set to true [ignore directories]. + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + If true, the constraint will only check if files exist, not directories + + + + + If true, the constraint will only check if directories exist, not files + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Initializes a new instance of the class. + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + 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. + + + + + 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. + + + + + 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 + + + + 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 + + + + Invoke the default constructor on a Type + + The Type to be constructed + An instance of the Type + + + + Invoke a constructor on a Type with arguments + + The Type to be constructed + Arguments to the constructor + An instance of the Type + + + + Returns an array of types from an array of objects. + Used because the compact framework doesn't support + Type.GetTypeArray() + + 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 + + + + 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 + + + + + + + + + Constructor delegate, makes it possible to use a factory to create objects + + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + 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 ITestCaseBuilder interface is exposed by a class that knows how to + build a test case from certain methods. + + + 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. + + + + + 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 test method to examine + The suite being populated + True is the builder can use this method + + + + Build a TestCase from the provided MethodInfo for + inclusion in the suite being constructed. + + The method to be used as a test case + The test suite being populated, or null + A TestCase or null + + + + 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. + + An IMethodInfo for the method being used as a test method + True if the builder can create a test case from this method + + + + 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 method for which a test is to be built + A Test representing one or more method invocations + + + + 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. + + 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 + + + + 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 method for which a test is to be built + The test fixture being populated, or null + A Test representing one or more method invocations + + + + Builds a ParameterizedMethodSuite containing individual test cases. + + The method for which a test is to be built. + The list of test cases to include. + A ParameterizedMethodSuite populated with test cases + + + + Build a simple, non-parameterized TestMethod for this method. + + The MethodInfo for which a test is to be built + The test suite for which the method is being built + A TestMethod. + + + + Abstract base class for operators that are able to reduce to a + constraint whether or not another syntactic element follows. + + + + + 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. + + + + + 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 + + + + 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. + + + + + 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 + + + + + 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 + + + + 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 + + + + 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. + + + + 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. + + + + + AndConstraint succeeds only if both members succeed. + + + + + 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 + + + + Create an AndConstraint from two other constraints + + The first constraint + The second constraint + + + + Apply both member constraints to an actual value, succeeding + succeeding only if both of them succeed. + + The actual value + True if the constraints both succeeded + + + + Gets text describing a constraint + + + + + 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. + + + + 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 + + + + 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 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 + + + + 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. + + + + + 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. + + + + + PlatformAttribute is used to mark a test fixture or an + individual method as applying to a particular platform only. + + + + + Constructor with no platforms specified, for use + with named property syntax. + + + + + Constructor taking one or more platforms + + Comma-delimited list of platforms + + + + Causes a test to be skipped if this PlatformAttribute is not satisfied. + + The test to modify + + + + Attribute used to mark a test that is to be ignored. + Ignored tests result in a warning message when the + tests are run. + + + + + Constructs the attribute giving a reason for ignoring the test + GetActionsFromAttributeProvider + The reason for ignoring the test + + + + Modifies a test by marking it as Ignored. + + The test to modify + + + + + + + + + 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. + + + + The IApplyToContext interface is implemented by attributes + that want to make changes to the execution context before + a test is run. + + + + + Apply changes to the execution context + + The execution context + + + + 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. + + + + + Construct a simple work item for a test. + + The test to be executed + The filter used to select this test + + + + Method that performs actually performs the work. + + + + + 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. + + + + + Initializes a new instance of the class. + + + + + + + + + + + + + + + + + + + + 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. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 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 matches the regular expression supplied as an argument. + + + + + Returns a ConstraintExpression that negates any + following constraint. + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + AssemblyHelper provides static methods for working + with assemblies. + + + + + Gets the path from which an assembly was loaded. + For builds where this is not possible, returns + the name of the assembly. + + The assembly. + The path. + + + + Gets the path to the directory from which an assembly was loaded. + + The assembly. + The path. + + + + Gets the AssemblyName of an assembly. + + The assembly + An AssemblyName + + + + Loads an assembly given a string, which may be the + path to the assembly or the AssemblyName + + + + + + + Gets the assembly path from code base. + + Public for testing purposes + The code base. + + + + + 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. + + + + + A MarshalByRefObject that lives forever + + + + + Obtains a lifetime service object to control the lifetime policy for this instance. + + + + + Construct a FrameworkController using the default builder and runner. + + 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 + + + + Construct a FrameworkController using the default builder and runner. + + 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 + + + + 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 + + + + Construct a FrameworkController, specifying the types to be used + for the runner and builder. This constructor is provided for + purposes of development. + + 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 + + + + Loads the tests in the assembly + + + + + + Returns info about the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of exploring the tests + + + + Runs the tests in an assembly + + A string containing the XML representation of the filter to use + The XML result of the test run + + + + Runs the tests in an assembly syncronously reporting back the test results through the callback + or through the return value + + 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 + + + + Runs the tests in an assembly asyncronously reporting back the test results through the callback + + The callback that receives the test results + A string containing the XML representation of the filter to use + + + + Stops the test run + + True to force the stop, false for a cooperative stop + + + + 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 + + + + Inserts environment element + + Target node + The new node + + + + Inserts settings element + + Target node + Settings dictionary + The new node + + + + Gets the ITestAssemblyBuilder used by this controller instance. + + The builder. + + + + Gets the ITestAssemblyRunner used by this controller instance. + + The runner. + + + + Gets the AssemblyName or the path for which this FrameworkController was created + + + + + Gets the Assembly for which this + + + + + Gets a dictionary of settings for the FrameworkController + + + + + A shim of the .NET interface for platforms that do not support it. + Used to indicate that a control can be the target of a callback event on the server. + + + + + Processes a callback event that targets a control. + + + + + + Returns the results of a callback event that targets a control. + + + + + + FrameworkControllerAction is the base class for all actions + performed against a FrameworkController. + + + + + LoadTestsAction loads a test into the FrameworkController + + + + + LoadTestsAction loads the tests in an assembly. + + The controller. + The callback handler. + + + + ExploreTestsAction returns info about the tests in an assembly + + + + + Initializes a new instance of the class. + + The controller for which this action is being performed. + Filter used to control which tests are included (NYI) + The callback handler. + + + + CountTestsAction counts the number of test cases in the loaded TestSuite + held by the FrameworkController. + + + + + Construct a CountsTestAction and perform the count of test cases. + + 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 + + + + RunTestsAction runs the loaded TestSuite held by the FrameworkController. + + + + + Construct a RunTestsAction and run all tests in the loaded TestSuite. + + 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 + + + + RunAsyncAction initiates an asynchronous test run, returning immediately + + + + + Construct a RunAsyncAction and run all tests in the loaded TestSuite. + + 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 + + + + StopRunAction stops an ongoing run. + + + + + Construct a StopRunAction and stop any ongoing run. If no + run is in process, no error is raised. + + 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. + + + + ExceptionTypeConstraint is a special version of ExactTypeConstraint + used to provided detailed info about the exception thrown in + an error message. + + + + + 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. + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + 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. + + + + + Constructs an ExceptionTypeConstraint + + + + + Applies the constraint to an actual value, returning a ConstraintResult. + + The value to be tested + A ConstraintResult + + + + TestProgressReporter translates ITestListener events into + the async callbacks that are used to inform the client + software about the progress of a test run. + + + + + Initializes a new instance of the class. + + The callback handler to be used for reporting progress. + + + + Called when a test has just started + + The test that is starting + + + + Called when a test has finished. Sends a result summary to the callback. + to + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Returns the parent test item for the targer test item if it exists + + + parent test item + + + + Makes a string safe for use as an attribute, replacing + characters characters that can't be used with their + corresponding xml representations. + + The string to be used + A new string with the _values replaced + + + + 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. + + + + + 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. + + + + + + Gets the name of the property to which the operator applies + + + + + NaNConstraint tests that the actual value is a double or float NaN + + + + + Test that the actual value is an NaN + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + CollectionContainsConstraint is used to test whether a collection + contains an expected object as a member. + + + + + Construct a CollectionContainsConstraint + + + + + + 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. + + + + 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 + + + + + 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. + + + + + 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. + + + + + 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. + + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RepeatAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + A simplified implementation of .NET 4 CountdownEvent + for use in earlier versions of .NET. Only the methods + used by NUnit are implemented. + + + + + Construct a CountdownEvent + + The initial count + + + + Decrement the count by one + + + + + Block the thread until the count reaches zero + + + + + Gets the initial count established for the CountdownEvent + + + + + Gets the current count remaining for the CountdownEvent + + + + + TheoryResultCommand adjusts the result of a Theory so that + it fails if all the results were inconclusive. + + + + + Constructs a TheoryResultCommand + + The command to be wrapped by this one + + + + Overridden to call the inner command and adjust the result + in case all chlid results were inconclusive. + + + + + + + NUnitTestCaseBuilder is a utility class used by attributes + that build test cases. + + + + + Constructs an + + + + + Builds a single NUnitTestMethod, either as a child of the fixture + or as one of a set of test cases under a ParameterizedTestMethodSuite. + + 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. + + + + + The TestStatus enum indicates the result of running a test + + + + + The test was inconclusive + + + + + The test has skipped + + + + + The test succeeded + + + + + The test failed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TestNameGenerator is able to create test names according to + a coded pattern. + + + + + Default pattern used to generate names + + + + + Construct a TestNameGenerator + + + + + Construct a TestNameGenerator + + The pattern used by this generator. + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + The display name + + + + Get the display name for a TestMethod and it's arguments + + A TestMethod + Arguments to be used + The display name + + + + The EqualConstraintResult class is tailored for formatting + and displaying the result of an EqualConstraint. + + + + + Construct an EqualConstraintResult + + + + + Write a failure message. Overridden to provide custom + failure messages for EqualConstraint. + + The MessageWriter to write to + + + + Display the failure information for two collections that did not match. + + 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 collections or arrays. If both are identical, the value is + only shown once. + + The MessageWriter on which to display + The expected collection or array + The actual collection or array + The indentation level for the message line + + + + 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. + + 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. + + The MessageWriter on which to display + The expected enumeration. + The actual enumeration + The depth of this failure in a set of nested collections + + + + 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. + + + + + 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. + + + + + + + Extensions for Assembly that are not available in pre-4.5 .NET releases + + + + + An easy way to get a single custom attribute from an assembly + + The attribute Type + The assembly + An attribute of Type T + + + + Type extensions that apply to all target frameworks + + + + + Determines if the given array is castable/matches the array. + + + + + + + + Determines if one type can be implicitly converted from another + + + + + + + + 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. + + + + + The TestCaseData class represents a set of arguments + and other parameter info to be used for a parameterized + test case. It is derived from TestCaseParameters and adds a + fluent syntax for use in initializing the test case. + + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + TestParameters is the abstract base class for all classes + that know how to provide data for constructing a test. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a ParameterSet from an object implementing ITestData + + + + + + Applies ParameterSet _values to the test itself. + + A test. + + + + The RunState for this set of parameters. + + + + + The arguments to be used in running the test, + which must match the method signature. + + + + + A name to be used for this test case in lieu + of the standard generated name containing + the argument list. + + + + + Gets the property dictionary for this test + + + + + The original arguments provided by the user, + used for display purposes. + + + + + The expected result to be returned + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + The expected result of the test, which + must match the method return type. + + + + + Gets a value indicating whether an expected result was specified. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + The third argument. + + + + Sets the expected result for the test + + The expected result + A modified TestCaseData + + + + Sets the name of the test case + + The modified TestCaseData instance + + + + Sets the description for the test case + being constructed. + + The description. + The modified TestCaseData instance. + + + + Applies a category to the test + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Applies a named property to the test + + + + + + + + Marks the test case as explicit. + + + + + Marks the test case as explicit, specifying the reason. + + + + + Ignores this TestCase, specifying the reason. + + The reason. + + + + + + + + + + + + + + + + + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set the working directory + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current WorkItemDispatcher. Made public for + use by nunitlite.tests + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + The unique name of the worker that spawned the context. + For builds with out the parallel feature, it is null. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter + + + + + If true, all tests must run on the same thread. No new thread may be spawned. + + + + + 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. + + + + + Link to a prior saved context + + + + + Indicates that a stop has been requested + + + + + The event listener currently receiving notifications + + + + + The number of assertions for the current test + + + + + The current culture + + + + + The current UI culture + + + + + The current test result + + + + + The current Principal. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + An existing instance of TestExecutionContext. + + + + Get the current context or return null if none is found. + + + + + + Clear the current context. This is provided to + prevent "leakage" of the CallContext containing + the current context back to any runners. + + + + + 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. + + + + + 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. + + + + + Increments the assert count by one. + + + + + Increments the assert count by a specified amount. + + + + + Adds a new ValueFormatterFactory to the chain of formatters + + The new factory + + + + Obtain lifetime service object + + + + + + Gets and sets the current context. + + + + + Gets or sets the current test + + + + + The time the current test started execution + + + + + The time the current test started in Ticks + + + + + Gets or sets the current test result + + + + + Gets a TextWriter that will send output to the current test result. + + + + + The current test object - that is the user fixture + object on which tests are being executed. + + + + + Get or set the working directory + + + + + Get or set indicator that run should stop on the first error + + + + + Gets an enum indicating whether a stop has been requested. + + + + + The current test event listener + + + + + The current WorkItemDispatcher. Made public for + use by nunitlite.tests + + + + + The ParallelScope to be used by tests running in this context. + For builds with out the parallel feature, it has no effect. + + + + + The unique name of the worker that spawned the context. + For builds with out the parallel feature, it is null. + + + + + Gets the RandomGenerator specific to this Test + + + + + Gets the assert count. + + The assert count. + + + + Gets or sets the test case timeout value + + + + + Gets a list of ITestActions set by upstream tests + + + + + Saves or restores the CurrentCulture + + + + + Saves or restores the CurrentUICulture + + + + + Gets or sets the current for the Thread. + + + + + The current head of the ValueFormatter chain, copied from MsgUtils.ValueFormatter + + + + + If true, all tests must run on the same thread. No new thread may be spawned. + + + + + Thrown when a test executes inconclusively. + + + + + Abstract base for Exceptions that terminate a test and provide a ResultState. + + + + 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 + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + 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 + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + Returns a new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + Returns a new DictionaryContainsKeyConstraint checking for the + presence of a particular key in the dictionary. + + + + + Returns a new DictionaryContainsValueConstraint checking for the + presence of a particular value in the dictionary. + + + + + Returns a constraint that succeeds if the actual + value contains the substring supplied as an argument. + + + + + 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. + + + + Flag the constraint to use a tolerance when determining equality. + + Tolerance value to be used + 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 + + + + 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. + + + + + 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 + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + 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 + + + + 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 + + + + + + + + Gets text describing a constraint + + + + + CollectionOrderedConstraint is used to test whether a collection is ordered. + + + + + Construct a CollectionOrderedConstraint + + + + + 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. + + + + + Test whether the collection is ordered + + + + + + + Returns the string representation of 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. + + + + + If used performs a default ascending comparison + + + + + If used performs a reverse comparison + + + + + Then signals a break between two ordering steps + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + An OrderingStep represents one stage of the sort + + + + + Attribute used to provide descriptive text about a + test case or fixture. + + + + + Construct a description Attribute + + The text of the description + + + + InvalidTestFixtureException is thrown when an appropriate test + fixture constructor using the provided arguments cannot be found. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Serialization Constructor + + + + + A CompositeWorkItem represents a test suite and + encapsulates the execution of the suite as well + as all its child tests. + + + + + A count of how many tests in the work item have a value for the Order Property + + + + + 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 + + + + Method that actually performs the work. Overridden + in CompositeWorkItem to do setup, run all child + items and then do teardown. + + + + + Sorts tests under this suite. + + + + + 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 + + + + List of Child WorkItems + + + + + 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. + + + + 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 TypeWrapper class wraps a Type so it may be used in + a platform-independent manner. + + + + + Construct a TypeWrapper for a specified Type. + + + + + Returns true if the Type wrapped is T + + + + + Get the display name for this type + + + + + Get the display name for an object of this type, constructed with the specified args. + + + + + Returns a new ITypeInfo representing an instance of this generic Type using the supplied Type arguments + + + + + Returns a Type representing a generic type definition from which this Type can be constructed. + + + + + Returns an array of custom attributes of the specified type applied to this type + + + + + Returns a value indicating whether the type has an attribute of the specified type. + + + + + + + + Returns a flag indicating whether this type has a method with an attribute of the specified type. + + + + + + + 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. + + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + Gets the underlying Type on which this TypeWrapper is based. + + + + + Gets the base type of this type as an ITypeInfo + + + + + 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 represents a static class. + + + + + DictionaryContainsValueConstraint is used to test whether a dictionary + contains an expected object as a value. + + + + + Construct a DictionaryContainsValueConstraint + + + + + + Test whether the expected value is contained in the dictionary + + + + + 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. + + + + + TestCaseSourceAttribute indicates the source to be used to + provide test fixture instances for a test class. + + + + + Error message string is public so the tests can use it + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + 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. + + + + Construct with a Type + + The type that will provide data + + + + Construct one or more TestFixtures from a given Type, + using available parameter data. + + The TypeInfo for which fixures are to be constructed. + One or more TestFixtures as TestSuite + + + + Returns a set of ITestFixtureData items for use as arguments + to a parameterized test fixture. + + The type for which data is needed. + + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + Attribute used to identify a method that is called once + to perform setup before any child tests are run. + + + + + Provides the Author of a test or test fixture. + + + + + Initializes a new instance of the class. + + The name of the author. + + + + Initializes a new instance of the class. + + The name of the author. + The email address of the author. + + + + The different targets a test action attribute can be applied to + + + + + Default target, which is determined by where the action attribute is attached + + + + + Target a individual test case + + + + + Target a suite of test cases + + + + + TestListener provides an implementation of ITestListener that + does nothing. It is used only through its NULL property. + + + + + Called when a test has just started + + The test that is starting + + + + Called when a test case has finished + + The result of the test + + + + Called when a test produces output for immediate display + + A TestOutput object containing the text to display + + + + Construct a new TestListener - private so it may not be used. + + + + + Get a listener that does nothing + + + + + PlatformHelper class is used by the PlatformAttribute class to + determine whether a platform is supported. + + + + + Comma-delimited list of all supported OS platform constants + + + + + Comma-delimited list of all supported Runtime platform constants + + + + + Default constructor uses the operating system and + common language runtime of the system. + + + + + Construct a PlatformHelper for a particular operating + system and common language runtime. Used in testing. + + OperatingSystem to be used + RuntimeFramework to be used + + + + Test to determine if one of a collection of platforms + is being used currently. + + + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Tests to determine if the current platform is supported + based on a platform attribute. + + The attribute to examine + + + + + Test to determine if the a particular platform or comma- + delimited set of platforms is in use. + + Name of the platform or comma-separated list of platform ids + True if the platform is in use on the system + + + + Return the last failure reason. Results are not + defined if called before IsSupported( Attribute ) + is called. + + + + + DefaultTestAssemblyBuilder loads a single assembly and builds a TestSuite + containing test fixtures present in the assembly. + + + + + The default suite builder used by the test assembly builder. + + + + + Initializes a new instance of the class. + + + + + Build a suite of tests from a provided assembly + + 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 + + + + + Build a suite of tests given the filename of an assembly + + 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 + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 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 new CollectionContainsConstraint checking for the + presence of a particular object in the collection. + + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + ComparisonAdapter class centralizes all comparisons of + _values in NUnit, adapting to the use of any provided + , + or . + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps an + + + + + Returns a ComparisonAdapter that wraps a + + + + + Compares two objects + + + + + Gets the default ComparisonAdapter, which wraps an + NUnitComparer object. + + + + + Construct a ComparisonAdapter for an + + + + + Compares two objects + + + + + + + + Construct a default ComparisonAdapter + + + + + 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 + + + + + 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. + + + + 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. + + + + + Default constructor + + + + + RangeAttribute is used to supply a range of _values to an + individual parameter of a parameterized test. + + + + + Construct a range of ints using default step of 1 + + + + + + + Construct a range of ints specifying the step size + + + + + + + + Construct a range of unsigned ints using default step of 1 + + + + + + + Construct a range of unsigned ints specifying the step size + + + + + + + + Construct a range of longs using a default step of 1 + + + + + + + Construct a range of longs + + + + + + + + Construct a range of unsigned longs using default step of 1 + + + + + + + Construct a range of unsigned longs specifying the step size + + + + + + + + Construct a range of doubles + + + + + + + + Construct a range of floats + + + + + + + + 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. + + + + + StackFilter class is used to remove internal NUnit + entries from a stack trace so that the resulting + trace provides better information about the test. + + + + + Filters a raw stack trace and returns the result. + + The original stack trace + A filtered stack trace + + + + A utility class to create TestCommands + + + + + Gets the command to be executed before any of + the child tests are run. + + A TestCommand + + + + Gets the command to be executed after all of the + child tests are run. + + A TestCommand + + + + Creates a test command for use in running this test. + + + + + + Creates a command for skipping a test. The result returned will + depend on the test RunState. + + + + + 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 + + + + The ParameterWrapper class wraps a ParameterInfo so that it may + be used in a platform-independent manner. + + + + + 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 + + + + + Construct a ParameterWrapper for a given method and parameter + + + + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the specified type are defined on the 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 ParameterInfo + + + + + Gets the Type of the parameter + + + + + A trace listener that writes to a separate file per domain + and process using it. + + + + + Construct an InternalTraceWriter that writes to a file. + + Path to the file to use + + + + Construct an InternalTraceWriter that writes to a + TextWriter provided by the caller. + + + + + + Writes a character to the text string or stream. + + The character to write to the text stream. + + + + Writes a string to the text string or stream. + + The string to write. + + + + Writes a string followed by a line terminator to the text string or stream. + + The string to write. If is null, only the line terminator is written. + + + + 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. + + + + Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. + + + + + Returns the character encoding in which the output is written. + + The character encoding in which the output is written. + + + + FullName filter selects tests based on their FullName + + + + + Construct a MethodNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Provides a platform-independent methods for getting attributes + for use by AttributeConstraint and AttributeExistsConstraint. + + + + + 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 SpecialValue enum is used to represent TestCase arguments + that cannot be used as arguments to an Attribute. + + + + + Null represents a null value, which cannot be used as an + argument to an attriute under .NET 1.x + + + + + TypeHelper provides static methods that operate on Types. + + + + + A special value, which is used to indicate that BestCommonType() method + was unable to find a common type for the specified arguments. + + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The display name for the Type + + + + Gets the display name for a Type as used by NUnit. + + The Type for which a display name is needed. + The arglist provided. + The display name for the Type + + + + 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. + + + + Determines whether the specified type is numeric. + + The type to be examined. + + true if the specified type is numeric; otherwise, false. + + + + + Convert an argument list to the required parameter types. + Currently, only widening numeric conversions are performed. + + An array of args to be converted + A ParameterInfo[] whose types will be used as targets + + + + Determines whether this instance can deduce type args for a generic type from the supplied arguments. + + 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. + + + + + Gets the _values for an enumeration, using Enum.GetTypes + where available, otherwise through reflection. + + + + + + + Gets the ids of the _values for an enumeration, + using Enum.GetNames where available, otherwise + through reflection. + + + + + + + ThreadUtility provides a set of static methods convenient + for working with threads. + + + + + Do our best to Kill a thread + + The thread to kill + + + + Do our best to kill a thread, passing state info + + The thread to kill + Info for the ThreadAbortException handler + + + + TestFixture is a surrogate for a user test fixture class, + containing one or more tests. + + + + + Any ITest that implements this interface is at a level that the implementing + class should be disposed at the end of the test run + + + + + Initializes a new instance of the class. + + Type of the fixture. + + + + Predicate constraint wraps a Predicate in a constraint, + returning success if the predicate is true. + + + + + Construct a PredicateConstraint from a predicate + + + + + Determines whether the predicate succeeds when applied + to the actual value. + + + + + Gets text describing a constraint + + + + + 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 + + + + 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 + + + + + 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 + + + + Current head of chain of value formatters. Public for testing. + + + + + 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() + {} + } + + + + + + Construct the attribute, specifying a combining strategy and source of parameter data. + + + + + Enumeration indicating whether the tests are + running normally or being cancelled. + + + + + Running normally with no stop requested + + + + + A graceful stop has been requested + + + + + A forced stop has been requested + + + + + The TestCaseParameters class encapsulates method arguments and + other selected parameters needed for constructing + a parameterized test case. + + + + + Default Constructor creates an empty parameter set + + + + + Construct a non-runnable ParameterSet, specifying + the provider exception that made it invalid. + + + + + Construct a parameter set with a list of arguments + + + + + + Construct a ParameterSet from an object implementing ITestCaseData + + + + + + Type arguments used to create a generic fixture instance + + + + + Provides methods to support legacy string comparison methods. + + + + + 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 + + + + 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. + + + + OneTimeSetUpCommand runs any one-time setup methods for a suite, + constructing the user test object if necessary. + + + + + 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 + + + + Overridden to run the one-time setup for a suite. + + The TestExecutionContext to be used. + A TestResult + + + + 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 + + + + + + Convert the TestOutput object to an XML string + + + + + Get the text + + + + + Get the output type + + + + + Get the name of the test that created the output + + + + + The IMethodInfo class is used to encapsulate information + about a method in a platform-independent manner. + + + + + 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 + + + + 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. + + + + + ThrowsExceptionConstraint tests that an exception has + been thrown, without any further tests. + + + + + Executes the code and returns success if an exception is thrown. + + A delegate representing the code to be tested + True if an exception is thrown, otherwise false + + + + Returns the ActualValueDelegate itself as the value to be tested. + + A delegate representing the code to be tested + The delegate itself + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + LevelOfParallelismAttribute is used to set the number of worker threads + that may be allocated by the framework for running tests. + + + + + Construct a LevelOfParallelismAttribute. + + The number of worker threads to be created by the framework. + + + + RepeatAttribute may be applied to test case in order + to run it multiple times. + + + + + Construct a RepeatAttribute + + The number of times to run the test + + + + Wrap a command and return the result. + + The command to be wrapped + The wrapped command + + + + The test command for the RetryAttribute + + + + + Initializes a new instance of the class. + + The inner command. + The number of repetitions + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + Represents the result of running a single test case. + + + + + Construct a TestCaseResult based on a TestMethod + + A TestMethod to which the result applies. + + + + 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. + + + + + Gets the collection of child results. + + + + + TestParameters class holds any named parameters supplied to the test run + + + + + Gets a flag indicating whether a parameter with the specified name exists.N + + Name of the parameter + True if it exists, otherwise false + + + + Get method is a simple alternative to the indexer + + Name of the paramter + Value of the parameter or null if not present + + + + 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 + + + + 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 + + + + Adds a parameter to the list + + Name of the parameter + Value of the parameter + + + + Gets the number of test parameters + + + + + Gets a collection of the test parameter names + + + + + Indexer provides access to the internal dictionary + + Name of the parameter + Value of the parameter or null if not present + + + + ParameterDataSourceProvider supplies individual argument _values for + single parameters using attributes implementing IParameterDataSource. + + + + + Determine whether any data is available for a parameter. + + A ParameterInfo 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 + + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + OrConstraint succeeds if either member succeeds + + + + + Create an OrConstraint from two other constraints + + The first constraint + The second 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 + + + + Gets text describing a constraint + + + + + 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. + + + + + 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 + + + + + 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 + + + + Abstract method to get the max line length + + + + + Tests whether a value is less than the value supplied to its constructor + + + + + 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 + + + + Initializes a new instance of the class. + + The expected value. + + + + EmptyStringConstraint tests whether a string is empty. + + + + + 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. + + + + + EmptyDirectoryConstraint is used to test that a directory is empty + + + + + 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. + + + + + 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. + + + + + 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. + + + + + OperatorStack is a type-safe stack for holding ConstraintOperators + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this 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 + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + Gets the topmost operator without modifying the stack. + + + + + ConstraintStack is a type-safe stack for holding Constraints + + + + + Initializes a new instance of the class. + + The ConstraintBuilder using this stack. + + + + 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 + + + + Gets a value indicating whether this is empty. + + true if empty; otherwise, false. + + + + CollectionEquivalentConstraint is used to determine whether two + collections are equivalent. + + + + + Construct a CollectionEquivalentConstraint + + + + + + Test whether two collections are equivalent + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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. + + + + + AttributeExistsConstraint tests for the presence of a + specified attribute on a Type. + + + + + Constructs an AttributeExistsConstraint for a specific attribute Type + + + + + + Tests whether the object provides the expected attribute. + + A Type, MethodInfo, or other ICustomAttributeProvider + True if the expected attribute is present, otherwise false + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Marks a test that must run on a separate thread. + + + + + Construct a RequiresThreadAttribute + + + + + Construct a RequiresThreadAttribute, specifying the apartment + + + + + 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. + + + + + Default constructor + + + + + Constructor with a reason + + The reason test is marked explicit + + + + Modifies a test by marking it as explicit. + + The test to modify + + + + OneTimeTearDownCommand performs any teardown actions + specified for a suite and calls Dispose on the user + test object, if any. + + + + + Construct a OneTimeTearDownCommand + + The test suite to which the command applies + A SetUpTearDownList for use by the command + A List of TestActionItems to be run before teardown. + + + + Overridden to run the teardown methods specified on the test. + + The TestExecutionContext to be used. + A TestResult + + + + Class that can build a tree of automatic namespace + suites from a group of fixtures. + + + + + NamespaceDictionary of all test suites we have created to represent + namespaces. Used to locate namespace parent suites for fixtures. + + + + + The root of the test suite being created by this builder. + + + + + Initializes a new instance of the class. + + The root suite. + + + + Adds the specified fixtures to the tree. + + The fixtures to be added. + + + + Adds the specified fixture to the tree. + + The fixture to be added. + + + + Gets the root entry in the tree created by the NamespaceTreeBuilder. + + The root suite. + + + + Built-in SuiteBuilder for all types of test classes. + + + + + The ISuiteBuilder interface is exposed by a class that knows how to + build a suite from one or more Types. + + + + + 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 type of the fixture to be used + True if the type can be used to build a TestSuite + + + + Build a TestSuite from type provided. + + The type of the fixture to be used + A TestSuite + + + + 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 fixture type to check + True if the fixture can be built, false if not + + + + Build a TestSuite from TypeInfo provided. + + The fixture type to build + A TestSuite built from that type + + + + 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 type being examined for attributes + A list of the attributes found. + + + + + + + + + + + + + + + + + + + + + + + + Provide actions to execute before and after tests. + + + + + When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. + + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + The target for the action attribute + + + + Executed before each test is run + + The test that is going to be run. + + + + Executed after each test is run + + The test that has just been run. + + + + Provides the target for the action attribute + + + + + Marks a test that must run in a particular threading apartment state, causing it + to run in a separate thread if necessary. + + + + + Construct an ApartmentAttribute + + The apartment state that this test must be run under. You must pass in a valid apartment state. + + + + The Iz class is a synonym for Is intended for use in VB, + which regards Is as a keyword. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 to the type supplied as an argument. + + + + + Returns a constraint that tests whether the actual value + is assignable to 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 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 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 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 + 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. + + + + + 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 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 whether a collection is ordered + + + + + Objects implementing this interface are used to wrap + the TestMethodCommand itself. They apply after SetUp + has been run and before TearDown. + + + + + 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. + + + + + Use an application-defined default value. + + + + + Make adjustments needed before and after running + the raw test - that is, after any SetUp has run + and before TearDown. + + + + + Run SetUp and TearDown for the test. This stage is used + internally by NUnit and should not normally appear + in user-defined decorators. + + + + + Make adjustments needed before and after running + the entire test - including SetUp and TearDown. + + + + + 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. + + + + 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. + + + + + + + Get the actual exception thrown - used by Assert.Throws. + + + + + Gets text describing a constraint + + + + + 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 + + + + Summary description for SamePathConstraint. + + + + + Initializes a new instance of the class. + + The expected path + + + + 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. + + + + + Operator that requires both it's arguments to succeed + + + + + Construct an AndOperator + + + + + Apply the operator to produce an AndConstraint + + + + + 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. + + + + + 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 + + + + 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. + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + TODO: Documentation needed for class + + + + + Initializes a new instance of the class. + + The test being skipped. + + + + Overridden to simply set the CurrentResult to the + appropriate Skipped state. + + The execution context for the test + A TestResult + + + + 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. + + + + + Construct a TextCapture object + + The default destination for non-intercepted output + + + + Writes a single character + + The char to write + + + + Writes a string + + The string to write + + + + Writes a string followed by a line terminator + + The string to write + + + + Gets the Encoding in use by this TextWriter + + + + + 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. + + + + + An IWorkItemDispatcher handles execution of work items. + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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. + + + + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + A directory containing the actual value + + + + Asserts that the directory exists. If it does not 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 + + + + Asserts that the directory exists. If it does not exist + an is thrown. + + The path to a directory containing the actual value + + + + Asserts that the directory does not exist. If it does 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 + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + A directory containing the actual value + + + + 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 + + + + Asserts that the directory does not exist. If it does exist + an is thrown. + + The path to a directory containing the actual value + + + + TestName filter selects tests based on their Name + + + + + Construct a TestNameFilter for a single name + + The name the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + The ParameterDataProvider class implements IParameterDataProvider + and hosts one or more individual providers. + + + + + Construct with a collection of individual providers + + + + + 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 + + + + 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. + + + + + + + Thrown when an assertion failed. + + + + 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 + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + XmlSerializableConstraint tests whether + an object is serializable in xml format. + + + + + 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 + + + + + Gets text describing a constraint + + + + 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/ + + + + + + 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 + + + + 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 + + + + 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 . + + + + + Returns an that wraps an . + + + + + Returns an EqualityAdapter that uses a predicate function for items comparison. + + + + + + + + + Returns an that wraps an . + + + + + Returns an that wraps an . + + + + + Returns an that wraps a . + + + + + that wraps an . + + + + + 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. + + + + + that wraps an . + + + + + EmptyCollectionConstraint tests whether a collection is empty. + + + + + Check that the collection is empty + + + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + Helper class with properties and methods that supply + a number of constraints used in Asserts. + + + + + 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 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 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 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. + + + + + 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 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 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 whether a collection is ordered + + + + + BinarySerializableConstraint tests whether + an object is serializable in binary format. + + + + + 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 + + + + + The Description of what this constraint tests, for + use in messages and in the ConstraintResult. + + + + + 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. + + + + + Construct a TimeoutAttribute given a time in milliseconds + + The timeout value in milliseconds + + + + 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() + {} + } + + + + + + Modifies a test by adding a description, if not already set. + + The test to modify + + + + 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 + + + + Descriptive text for this test + + + + + The author of this test + + + + + The type that this test is testing + + + + + Gets or sets the expected result. + + The result. + + + + Returns true if an expected result has been set + + + + + Summary description for SetUICultureAttribute. + + + + + Construct given the name of a culture + + + + + + Marks a test that must run in the STA, causing it + to run in a separate thread if necessary. + + + + + Construct a RequiresSTAAttribute + + + + + 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. + + + + + 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. + + + + + Construct a TestActionItem + + The ITestAction to be included + + + + Run the BeforeTest method of the action and remember that it has been run. + + The test to which the action applies + + + + Run the AfterTest action, but only if the BeforeTest + action was actually run. + + The test to which the action applies + + + + InternalTraceLevel is an enumeration controlling the + level of detailed presented in the internal log. + + + + + Use the default settings as specified by the user. + + + + + Do not display any trace messages + + + + + Display Error messages only + + + + + Display Warning level and higher messages + + + + + Display informational and higher messages + + + + + Display debug messages and higher - i.e. all messages + + + + + Display debug messages and higher - i.e. all messages + + + + + The ParallelScope enumeration permits specifying the degree to + which a test and its descendants may be run in parallel. + + + + + No Parallelism is permitted + + + + + The test itself may be run in parallel with others at the same level + + + + + Descendants of the test may be run in parallel with one another + + + + + Descendants of the test down to the level of TestFixtures may be run in parallel + + + + + 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 + + + + + The List class is a helper class with properties and methods + that supply a number of constraints used with lists and collections. + + + + + List.Map returns a ListMapper, which can be used to map + the original collection to another collection. + + + + + + + TestAssembly is a TestSuite that represents the execution + of tests in a managed assembly. + + + + + 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. + + + + Initializes a new instance of the class + for a path which could not be loaded. + + The path used to load the assembly. + + + + Gets the Assembly represented by this instance. + + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + SetUpFixture extends TestSuite and supports + Setup and TearDown methods. + + + + + Initializes a new instance of the class. + + The type. + + + + 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 + + + + 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. + + + + + Constructs a linear tolerance of a specified amount + + + + + Constructs a tolerance given an amount and + + + + + Tests that the current Tolerance is linear with a + numeric value, throwing an exception if it is not. + + + + + 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. + + + + + Gets the for the current Tolerance + + + + + 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 . + + + + + 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. + + + + + + + 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. + + + + + 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, 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 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 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 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 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 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 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. + + + + + With is currently a NOP - reserved for future use. + + + + + 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 whether a collection is ordered + + + + + Returns a constraint that succeeds if the value + is a file or directory and it exists. + + + + + Attribute used to apply a category to a test + + + + + The name of the category + + + + + 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 + + + + Protected constructor uses the Type name as the name + of the category. + + + + + Modifies a test by adding a category to it. + + The test to modify + + + + The name of the category + + + + + IdFilter selects tests based on their id + + + + + Construct an IdFilter for a single value + + The id the filter will recognize. + + + + Match a test against a single value. + + + + + Gets the element name + + Element name + + + + Represents a constraint that succeeds if none of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + none of them succeed. + + + + + Indicates which class the test or test fixture is testing + + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Initializes a new instance of the class. + + The type that is being tested. + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + Defines the order that the test will run in + + + + + + Modifies a test as defined for the specific attribute. + + The test to modify + + + + 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. + + + + + Apply changes to the TestExecutionContext + + The TestExecutionContext + + + + 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. + + + + + Flag (bool) indicating whether tests are being debugged. + + + + + Flag (bool) indicating whether to pause execution of tests to allow + the user to attache a debugger. + + + + + The InternalTraceLevel for this run. Values are: "Default", + "Off", "Error", "Warning", "Info", "Debug", "Verbose". + Default is "Off". "Debug" and "Verbose" are synonyms. + + + + + Full path of the directory to be used for work and result files. + This path is provided to tests by the frameowrk TestContext. + + + + + 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. + + + + + A TextWriter to which the internal trace will be sent. + + + + + A list of tests to be loaded. + + + + + 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 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. + + + + + If true, execution stops after the first error or failure. + + + + + If true, use of the event queue is suppressed and test events are synchronous. + + + + + The default naming pattern used in generating test names + + + + + Parameters to be passed on to the test + + + + + 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. + + + + + ParameterizedFixtureSuite serves as a container for the set of test + fixtures created from a given Type using various parameters. + + + + + Initializes a new instance of the class. + + The ITypeInfo for the type that represents the suite. + + + + Gets a string representing the type of test + + + + + + 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 + + + + + + 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. + + + + 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. + + + + + + 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. + + + + + + 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 + + + + + NUnitComparer encapsulates NUnit's default behavior + in comparing two objects. + + + + + Compares two objects + + + + + + + + Returns the default NUnitComparer. + + + + + 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. + + + + Attribute used to identify a method that is + called before any tests in a fixture are run. + + + + + 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. + + + + + 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. + + + + + 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 + + + + Asserts that a condition is true. If the condition is false the method throws + an . Works Identically to . + + The evaluated condition + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + 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 + + + + Returns a ListMapper based on a collection. + + The original collection + + + + + 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. + + + + + Prefix used for the expected value line of a message + + + + + Prefix used for the actual value line of a message + + + + + Length of a message prefix + + + + + Construct a TextMessageWriter + + + + + Construct a TextMessageWriter, specifying a user message + and optional formatting arguments. + + + + + + + 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 + + + + 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 + + + + 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 string comparisons + If true, clip the strings to fit the max line length + + + + 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 ConstraintResult 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 + + + + + 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. + + + + + 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 + + + + + Write a string + + + + + Write a string followed by a newline + + + + + Get the Encoding for this TextWriter + + + + + CollectionSupersetConstraint is used to determine whether + one collection is a superset of another + + + + + Construct a CollectionSupersetConstraint + + The collection that the actual value is expected to be a superset of + + + + Test whether the actual collection is a superset of + the expected collection provided. + + + + + + + Flag the constraint to use the supplied predicate function + + The comparison function to use. + Self. + + + + 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. + + + + + ParameterizedMethodSuite holds a collection of individual + TestMethods with their arguments applied. + + + + + Construct from a MethodInfo + + + + + + Gets a string representing the type of test + + + + + + OSPlatform represents a particular operating system platform + + + + + Platform ID for Unix as defined by Microsoft .NET 2.0 and greater + + + + + Platform ID for Unix as defined by Mono + + + + + Platform ID for XBox as defined by .NET and Mono, but not CF + + + + + Platform ID for MacOSX as defined by .NET and Mono, but not CF + + + + + Gets the actual OS Version, not the incorrect value that might be + returned for Win 8.1 and Win 10 + + + 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 + + + + Construct from a platform ID and version + + + + + Construct from a platform ID, version and product type + + + + + Get the OSPlatform under which we are currently running + + + + + Get the platform ID of this instance + + + + + Get the Version of this instance + + + + + Get the Product Type of this instance + + + + + Return true if this is a windows platform + + + + + Return true if this is a Unix or Linux platform + + + + + Return true if the platform is Win32S + + + + + Return true if the platform is Win32Windows + + + + + Return true if the platform is Win32NT + + + + + Return true if the platform is Windows CE + + + + + Return true if the platform is Xbox + + + + + Return true if the platform is MacOSX + + + + + Return true if the platform is Windows 95 + + + + + Return true if the platform is Windows 98 + + + + + Return true if the platform is Windows ME + + + + + Return true if the platform is NT 3 + + + + + Return true if the platform is NT 4 + + + + + Return true if the platform is NT 5 + + + + + Return true if the platform is Windows 2000 + + + + + Return true if the platform is Windows XP + + + + + Return true if the platform is Windows 2003 Server + + + + + Return true if the platform is NT 6 + + + + + Return true if the platform is NT 6.0 + + + + + Return true if the platform is NT 6.1 + + + + + Return true if the platform is NT 6.2 + + + + + Return true if the platform is NT 6.3 + + + + + Return true if the platform is Vista + + + + + Return true if the platform is Windows 2008 Server (original or R2) + + + + + Return true if the platform is Windows 2008 Server (original) + + + + + Return true if the platform is Windows 2008 Server R2 + + + + + Return true if the platform is Windows 2012 Server (original or R2) + + + + + Return true if the platform is Windows 2012 Server (original) + + + + + Return true if the platform is Windows 2012 Server R2 + + + + + Return true if the platform is Windows 7 + + + + + Return true if the platform is Windows 8 + + + + + Return true if the platform is Windows 8.1 + + + + + Return true if the platform is Windows 10 + + + + + Return true if the platform is Windows Server. This is named Windows + Server 10 to distinguish it from previous versions of Windows Server. + + + + + Product Type Enumeration used for Windows + + + + + Product type is unknown or unspecified + + + + + Product type is Workstation + + + + + Product type is Domain Controller + + + + + Product type is Server + + + + + Combines multiple filters so that a test must pass one + of them in order to pass this filter. + + + + + Constructs an empty OrFilter + + + + + Constructs an AndFilter from an array of filters + + + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters pass, otherwise false + + + + Checks whether the OrFilter is matched by a test + + The test to be matched + True if any of the component filters match, otherwise false + + + + 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 + + + + Gets the element name + + Element name + + + + 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 + + + + Apply the constraint to an actual value, returning true if it succeeds + + The actual argument + True if the constraint succeeds, otherwise false. + + + + 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. + + + + + Tests whether a value is greater than the value supplied to its constructor + + + + + Initializes a new instance of the class. + + The expected value. + + + + DictionaryContainsKeyConstraint is used to test whether a dictionary + contains an expected object as a key. + + + + + Construct a DictionaryContainsKeyConstraint + + + + + + Test whether the expected key is contained in the dictionary + + + + + 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. + + + + + 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. + + + + 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. + + + + + Flag the constraint to ignore case and return 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 + + + + + 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 + + + + The number of objects remaining in the tally + + + + + AllItemsConstraint applies another constraint to each + item in a collection, succeeding if they all succeed. + + + + + Construct an AllItemsConstraint on top of an existing constraint + + + + + + Apply the item constraint to each item in the collection, + failing if any item fails. + + + + + + + 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 set of Assert methods operating on one or more collections + + + + + 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. + + + + + + + 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 + + + + 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 + + + + Asserts that all items contained in collection are not equal to null. + + IEnumerable containing objects to be considered + + + + 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 + + + + Ensures that every object contained in collection exists within the collection + once and only once. + + IEnumerable of objects to be considered + + + + 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 + + + + 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 + + + + 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 + + + + 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 + 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. + 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 + The message that will be displayed on failure + Arguments to be used in formatting the message + + + + Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. + + 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. + + 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. + + 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. + + 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. + + 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. + + 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. + + The first IEnumerable of objects to be considered + The second IEnumerable of objects to be considered + + + + Asserts that expected and actual are not equivalent. + + 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. + + IEnumerable of objects to be considered + Object to be found within collection + + + + Asserts that collection contains actual as an item. + + 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. + + IEnumerable of objects to be considered + Object that cannot exist within collection + + + + Asserts that collection does not contain actual as an item. + + 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 + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset does not contain the subset + + 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. + + The IEnumerable subset to be considered + The IEnumerable superset to be considered + + + + Asserts that the superset contains the subset. + + 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 subset does not contain the superset + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset does not contain the superset + + 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 subset contains the superset. + + The IEnumerable superset to be considered + The IEnumerable subset to be considered + + + + Asserts that the subset contains the superset. + + 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 + + + + Assert that an array, list or other collection is empty + + 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 + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is empty + + 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 + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + 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 + + An array, list or other collection implementing IEnumerable + + + + Assert that an array, list or other collection is ordered + + 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 + + An array, list or other collection implementing IEnumerable + A custom comparer to perform the comparisons + + + + TestCaseSourceAttribute indicates the source to be used to + provide test cases for a test method. + + + + + Construct with the name of the method, property or field that will provide data + + The name of a static method, property or field that will provide data. + + + + 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. + 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. + + + + 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. + + + + Construct with a Type + + The type that will provide data + + + + Construct one or more TestMethods from a given MethodInfo, + using available parameter data. + + The IMethod for which tests are to be constructed. + The suite to which the tests will be added. + One or more TestMethods + + + + Returns a set of ITestCaseDataItems for use as arguments + to a parameterized test method. + + The method for which data is needed. + + + + + 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 name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Gets or sets the category associated with every fixture created from + this attribute. May be a single category or a comma-separated list. + + + + + TestMethodCommand is the lowest level concrete command + used to run actual test cases. + + + + + Initializes a new instance of the class. + + The test. + + + + 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 + + + + SetUpTearDownCommand runs any SetUp methods for a suite, + runs the test and then runs any TearDown methods. + + + + + Initializes a new instance of the class. + + The inner command. + + + + Runs the test, saving a TestResult in the supplied TestExecutionContext. + + The context in which the test should run. + A TestResult + + + + SetUpTearDownItem holds the setup and teardown methods + for a single level of the inheritance hierarchy. + + + + + Construct a SetUpTearDownNode + + A list of setup methods for this level + A list teardown methods for this level + + + + Run SetUp on this level. + + The execution context to use for running. + + + + Run TearDown for this level. + + + + + + Returns true if this level has any methods at all. + This flag is used to discard levels that do nothing. + + + + + 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 + + + + SubPathConstraint tests that the actual path is under the expected path + + + + + Initializes a new instance of the class. + + The expected path + + + + 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. + + + + + ParallelizableAttribute is used to mark tests that may be run in parallel. + + + + + Construct a ParallelizableAttribute using default ParallelScope.Self. + + + + + Construct a ParallelizableAttribute with a specified scope. + + The ParallelScope associated with this attribute. + + + + Modify the context to be used for child tests + + The current TestExecutionContext + + + + 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 ArgumentException + + + + + Creates a constraint specifying an expected ArgumentNUllException + + + + + Creates a constraint specifying an expected InvalidOperationException + + + + + Creates a constraint specifying that no exception is thrown + + + + + 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 + + + + RuntimeFramework represents a particular version + of a common language runtime implementation. + + + + + DefaultVersion is an empty Version, used to indicate that + NUnit should select the CLR version to use for the test. + + + + + 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 + + + + 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'. + + + + + + + Overridden to return the short name of the framework + + + + + + 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 + + + + Static method to return a RuntimeFramework object + for the framework that is currently in use. + + + + + The type of this runtime framework + + + + + The framework version for this runtime framework + + + + + The CLR version for this runtime framework + + + + + Return true if any CLR version may be used in + matching this RuntimeFramework object. + + + + + Returns the Display name for this framework + + + + + CategoryFilter is able to select or exclude tests + based on their categories. + + + + + + Construct a CategoryFilter using a single category name + + A category name + + + + Check whether the filter matches a test + + The test to be matched + + + + + Gets the element name + + Element name + + + + 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. + + + + + Default tolerance for floating point equality + + + + + Asserts on Files + + + + + 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. + + + + + + + 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 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 + + + + 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 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 + + + + 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 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 + + + + 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 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 + + + + 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 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 + + + + 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 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 + + + + 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 + + + + Asserts that the file exists. If it does not exist + an is thrown. + + A file containing the actual value + + + + 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 + + + + Asserts that the file exists. If it does not exist + an is thrown. + + The path to a file containing the actual value + + + + Asserts that the file does not exist. If it does 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 + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + A file containing the actual value + + + + 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 + + + + Asserts that the file does not exist. If it does exist + an is thrown. + + The path to a file containing the actual value + + + + Thrown when an assertion failed. + + + + + + + The error message that explains + the reason for the exception + The exception that caused the + current exception + + + + Serialization Constructor + + + + + Gets the ResultState provided by this exception + + + + + 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 + + + + + + Apply the item constraint to each item in the collection, + succeeding if any item succeeds. + + + + + + + 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. + + + + + SameAsConstraint tests whether an object is identical to + the object passed to its constructor + + + + + Initializes a new instance of the class. + + The expected object. + + + + 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. + + + + + 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 + + + + 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) + + + + + 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. + + + + + Marks a test to use a combinatorial join of any argument + data provided. Since this is the default, the attribute is + optional. + + + + + Default constructor + + + + + The PropertyNames class provides static constants for the + standard property ids that NUnit uses on tests. + + + + + The FriendlyName of the AppDomain in which the assembly is running + + + + + The selected strategy for joining parameter data into test cases + + + + + The process ID of the executing assembly + + + + + The stack trace from any data provider that threw + an exception. + + + + + The reason a test was not run + + + + + The author of the tests + + + + + The ApartmentState required for running the test + + + + + The categories applying to a test + + + + + The Description of a test + + + + + The number of threads to be used in running tests + + + + + The maximum time in ms, above which the test is considered to have failed + + + + + The ParallelScope associated with a test + + + + + The number of times the test should be repeated + + + + + Indicates that the test should be run on a separate thread + + + + + The culture to be set for a test + + + + + The UI culture to be set for a test + + + + + The type that is under test + + + + + The timeout value for the test + + + + + The test will be ignored until the given date + + + + + The optional Order the test will run in + + + + + The MethodWrapper class wraps a MethodInfo so that it may + be used in a platform-independent manner. + + + + + Construct a MethodWrapper for a Type and a MethodInfo. + + + + + Construct a MethodInfo for a given Type and method name. + + + + + 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 + + + + Returns an array of custom attributes of the specified type applied to this method + + + + + Gets a value indicating whether one or more attributes of the spcified type are defined on the method. + + + + + 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 + + + + Override ToString() so that error messages in NUnit's own tests make sense + + + + + 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. + + + + + Represents a constraint that succeeds if any of the + members of a collection match a base constraint. + + + + + Returns a constraint that will apply the argument + to the members of a collection, succeeding if + any of them succeed. + + + + + The TestMethod class represents a Test implemented as a method. + + + + + The ParameterSet used to create this test method + + + + + Initializes a new instance of the class. + + The method to be used as a test. + + + + 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 + + + + Overridden to return a TestCaseResult. + + A TestResult for this test. + + + + 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 + + + + + Gets a bool indicating whether the current test + has any descendant tests. + + + + + Gets this test's child tests + + A list of child tests + + + + Gets the name used for the top-level element in the + XML representation of this test + + + + + Returns the name of the method + + + + + 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. + + + + 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. + + + + + Gets text describing a constraint + + + + + 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. + + + + Delegate used to delay evaluation of the actual value + to be used in evaluating a constraint + + + + + 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. + + + + + ValueSourceAttribute indicates the source to be used to + provide data for one parameter of a test method. + + + + + 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. + + + + 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. + + + + 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 + + + + + The name of a the method, property or fiend to be used as a source + + + + + A Type to be used as a source + + + + + Summary description for SetCultureAttribute. + + + + + Construct given the name of a culture + + + + + + RandomAttribute is used to supply a set of random _values + to a single parameter of a parameterized test. + + + + + Construct a random set of values appropriate for the Type of the + parameter on which the attribute appears, specifying only the count. + + + + + + Construct a set of ints within a specified range + + + + + Construct a set of unsigned ints within a specified range + + + + + Construct a set of longs within a specified range + + + + + Construct a set of unsigned longs within a specified range + + + + + Construct a set of shorts within a specified range + + + + + Construct a set of unsigned shorts within a specified range + + + + + Construct a set of doubles within a specified range + + + + + Construct a set of floats within a specified range + + + + + Construct a set of bytes within a specified range + + + + + Construct a set of sbytes within a specified range + + + + + Get the collection of _values to be used as arguments. + + + + + Delegate used by tests that execute code and + capture any thrown exception. + + + + + 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 + + + + 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 + + + + + + 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. + + + + + 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 ITestAssemblyRunner interface is implemented by classes + that are able to execute a suite of tests loaded + from an assembly. + + + + + 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 + + + + Loads the tests found in an Assembly, returning an + indication of whether or not the load succeeded. + + The assembly to load + Dictionary of options to use in loading the test + An ITest representing the loaded tests + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive ITestListener notifications. + A test filter used to select tests to be run + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any test-running threads + + + + Gets the tree of loaded tests, or null if + no tests have been loaded. + + + + + Gets the tree of test results, if the test + run is completed, otherwise null. + + + + + Indicates whether a test has been loaded + + + + + Indicates whether a test is currently running + + + + + Indicates whether a test run is complete + + + + + 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. + + + + + 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. + + + + + Resolve the current expression to a Constraint + + + + + Appends an And Operator to the expression + + + + + Appends an Or operator to the expression. + + + + + Negates the test of the constraint it wraps. + + + + + Constructs a new NotOperator + + + + + Returns a NotConstraint applied to its argument. + + + + + SetUpFixtureAttribute is used to identify a SetUpFixture + + + + + 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. + + + + 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. + + + + + Construct a RequiresMTAAttribute + + + + + 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 + + + + Initializes a new instance of the class. + + The TestStatus. + The label. + The stage at which the result was produced + + + + The result is inconclusive + + + + + The test has been skipped. + + + + + The test has been ignored. + + + + + The test was skipped because it is explicit + + + + + The test succeeded + + + + + The test failed + + + + + The test encountered an unexpected exception + + + + + The test was cancelled by the user + + + + + The test was not runnable. + + + + + A suite failed because one or more child tests failed or had errors + + + + + A suite failed in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeSetUp + + + + + A suite had an unexpected exception in its OneTimeDown + + + + + 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. + + + + + 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. + + + + + 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 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. + + + + + Initializes a new instance of the class. + + The arguments. + + + + Initializes a new instance of the class. + + The argument. + + + + Initializes a new instance of the class. + + The first argument. + The second argument. + + + + 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. + + + + + 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. + + + + + Initializes a new instance of the class. + + + + + 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. + + + + 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. + + + + + 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. + + + + 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. + + + + 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. + + + + Returns an enumerator that iterates through a collection. + + An that can be used to iterate through the collection. + + + + 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 . + + + + 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 . + + + + + 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. + + + + Gets an object that can be used to synchronize access to the . This property is not supported. + + The SyncRoot property is not supported. + + + + Gets the number of elements contained in the . + + 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. + + + + + Gets a value that indicates whether the is empty. + + 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. + + + + + Implementation of ITestAssemblyRunner + + + + + Initializes a new instance of the class. + + The builder. + + + + Loads the tests found in an Assembly + + File name of the assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Loads the tests found in an Assembly + + The assembly to load + Dictionary of option settings for loading the assembly + True if the load was successful + + + + Count Test Cases using a filter + + The filter to apply + The number of test cases found + + + + Run selected tests and return a test result. The test is run synchronously, + and the listener interface is notified as it progresses. + + Interface to receive EventListener notifications. + A test filter used to select tests to be run + + + + + Run selected tests asynchronously, notifying the listener interface as it progresses. + + 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. + + + + + Wait for the ongoing run to complete. + + Time to wait in milliseconds + True if the run completed, otherwise false + + + + Signal any test run that is in process to stop. Return without error if no test is running. + + If true, kill any tests that are currently running + + + + Initiate the test run. + + + + + Create the initial TestExecutionContext used to run tests + + The ITestListener specified in the RunAsync call + + + + Handle the the Completed event for the top level work item + + + + + The tree of tests that was loaded by the builder + + + + + The test result, if a run has completed + + + + + Indicates whether a test is loaded + + + + + Indicates whether a test is running + + + + + Indicates whether a test run is complete + + + + + Our settings, specified when loading the assembly + + + + + The top level WorkItem created for the assembly as a whole + + + + + The TestExecutionContext for the top level WorkItem + + + + diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.xml.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.xml.meta new file mode 100644 index 0000000..bed4a72 --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/net35/unity-custom/nunit.framework.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9c7ad350fb20c854a9112cf4156d1b6e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/package.json b/Library/PackageCache/com.unity.ext.nunit@1.0.0/package.json new file mode 100644 index 0000000..c0bc305 --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/package.json @@ -0,0 +1,16 @@ +{ + "displayName": "Custom NUnit", + "name": "com.unity.ext.nunit", + "version": "1.0.0", + "unity": "2019.1", + "description": "Custom version of the nunit package build to work with Unity. Used by the Unity Test Framework.", + "keywords": ["nunit", "unittest", "test"], + "category": "Libraries", + "repository": { + "type": "git", + "url": "git@gitlab.cds.internal.unity3d.com/upm-packages/core/com.unity.ext.nunit.git", + "revision": "c8f5044ffe6adb909f9836160b0bdaa30f2d1ec9" + }, + "dependencies": { + } +} diff --git a/Library/PackageCache/com.unity.ext.nunit@1.0.0/package.json.meta b/Library/PackageCache/com.unity.ext.nunit@1.0.0/package.json.meta new file mode 100644 index 0000000..ad88492 --- /dev/null +++ b/Library/PackageCache/com.unity.ext.nunit@1.0.0/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8143d3a8390f2c64685e3bc272bd9e90 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/.editorconfig b/Library/PackageCache/com.unity.ide.rider@1.1.4/.editorconfig new file mode 100644 index 0000000..aca1979 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/.editorconfig @@ -0,0 +1,6 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/CHANGELOG.md b/Library/PackageCache/com.unity.ide.rider@1.1.4/CHANGELOG.md new file mode 100644 index 0000000..c93c873 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/CHANGELOG.md @@ -0,0 +1,74 @@ +# Code Editor Package for Rider + +## [1.1.4] - 2019-11-21 + +fix warning - unreachable code + + +## [1.1.3] - 2019-10-17 + + - Update External Editor, when new toolbox build was installed + - Add xaml to default list of extensions to include in csproj + - Avoid initializing Rider package in secondary Unity process, which does Asset processing + - Reflect multiple csc.rsp arguments to generated csproj files: https://github.com/JetBrains/resharper-unity/issues/1337 + - Setting, which allowed to override LangVersion removed in favor of langversion in csc.rsp + - Environment.NewLine is used in generated project files instead of Windows line separator. + +## [1.1.2] - 2019-09-18 + +performance optimizations: + - avoid multiple evaluations + - avoid reflection in DisableSyncSolutionOnceCallBack + - project generation optimization +fixes: + - avoid compilation error with incompatible `Test Framework` package + +## [1.1.1] - 2019-08-26 + +parse nowarn in csc.rsp +warning, when Unity was started from Rider, but external editor was different +improved unit test support +workaround to avoid Unity internal project-generation (fix #28) + + +## [1.1.0] - 2019-07-02 + +new setting to manage list of extensions to be opened with Rider +avoid breaking everything on any unhandled exception in RiderScriptEditor cctor +hide Rider settings, when different Editor is selected +dynamically load only newer rider plugins +path detection (work on unix symlinks) +speed up for project generation +lots of bug fixing + +## [1.0.8] - 2019-05-20 + +Fix NullReferenceException when External editor was pointing to non-existing Rider everything was broken by null-ref. + +## [1.0.7] - 2019-05-16 + +Initial migration steps from rider plugin to package. +Fix OSX check and opening of files. + +## [1.0.6] - 2019-04-30 + +Ensure asset database is refreshed when generating csproj and solution files. + +## [1.0.5] - 2019-04-27 + +Add support for generating all csproj files. + +## [1.0.4] - 2019-04-18 + +Fix relative package paths. +Fix opening editor on mac. + +## [1.0.3] - 2019-04-12 + +Fixing null reference issue for callbacks to Asset pipeline. + +## [1.0.2] - 2019-01-01 + +### This is the first release of *Unity Package rider_editor*. + +Using the newly created api to integrate Rider with Unity. diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/CHANGELOG.md.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/CHANGELOG.md.meta new file mode 100644 index 0000000..344cac5 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8645aa9c3c74fb34ba9499e14fb332b5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/CONTRIBUTING.md b/Library/PackageCache/com.unity.ide.rider@1.1.4/CONTRIBUTING.md new file mode 100644 index 0000000..576d096 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/CONTRIBUTING.md @@ -0,0 +1,6 @@ +# Contributing + +## All contributions are subject to the [Unity Contribution Agreement(UCA)](https://unity3d.com/legal/licenses/Unity_Contribution_Agreement) +By making a pull request, you are confirming agreement to the terms and conditions of the UCA, including that your Contributions are your original creation and that you have complete right and authority to make your Contributions. + +## Once you have a change ready following these ground rules. Simply make a pull request \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/CONTRIBUTING.md.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/CONTRIBUTING.md.meta new file mode 100644 index 0000000..81c20c6 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/CONTRIBUTING.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5e83f8baac96eaa47bdd9ca781cd2002 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Documentation~/README.md b/Library/PackageCache/com.unity.ide.rider@1.1.4/Documentation~/README.md new file mode 100644 index 0000000..9ddd634 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Documentation~/README.md @@ -0,0 +1,4 @@ +# Code Editor Package for Rider + +This package is not intended to be modified by users. +Nor does it provide any api intended to be included in user projects. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/LICENSE.md b/Library/PackageCache/com.unity.ide.rider@1.1.4/LICENSE.md new file mode 100644 index 0000000..eb18dfb --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Unity Technologies + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/LICENSE.md.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/LICENSE.md.meta new file mode 100644 index 0000000..be2f8e6 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5598b14661b5f4c43bed757f34b6d172 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider.meta new file mode 100644 index 0000000..cf6222d --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9129183a42052cd43b9c284d6dbd541e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor.meta new file mode 100644 index 0000000..49130a6 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1b393f6b29a9ee84c803af1ab4944b71 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Discovery.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Discovery.cs new file mode 100644 index 0000000..6c04ea3 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Discovery.cs @@ -0,0 +1,457 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using JetBrains.Annotations; +using Microsoft.Win32; +using Unity.CodeEditor; +using UnityEngine; + +namespace Packages.Rider.Editor +{ + public interface IDiscovery + { + CodeEditor.Installation[] PathCallback(); + } + + public class Discovery : IDiscovery + { + public CodeEditor.Installation[] PathCallback() + { + return RiderPathLocator.GetAllRiderPaths() + .Select(riderInfo => new CodeEditor.Installation + { + Path = riderInfo.Path, + Name = riderInfo.Presentation + }) + .OrderBy(a=>a.Name) + .ToArray(); + } + } + + /// + /// This code is a modified version of the JetBrains resharper-unity plugin listed here: + /// https://github.com/JetBrains/resharper-unity/blob/master/unity/JetBrains.Rider.Unity.Editor/EditorPlugin/RiderPathLocator.cs + /// + public static class RiderPathLocator + { +#if !(UNITY_4_7 || UNITY_5_5) + [UsedImplicitly] // Used in com.unity.ide.rider + public static RiderInfo[] GetAllRiderPaths() + { + try + { + switch (SystemInfo.operatingSystemFamily) + { + case OperatingSystemFamily.Windows: + { + return CollectRiderInfosWindows(); + } + + case OperatingSystemFamily.MacOSX: + { + return CollectRiderInfosMac(); + } + + case OperatingSystemFamily.Linux: + { + return CollectAllRiderPathsLinux(); + } + } + } + catch (Exception e) + { + Debug.LogException(e); + } + + return new RiderInfo[0]; + } +#endif + +#if RIDER_EDITOR_PLUGIN // can't be used in com.unity.ide.rider + internal static RiderInfo[] GetAllFoundInfos(OperatingSystemFamilyRider operatingSystemFamily) + { + try + { + switch (operatingSystemFamily) + { + case OperatingSystemFamilyRider.Windows: + { + return CollectRiderInfosWindows(); + } + case OperatingSystemFamilyRider.MacOSX: + { + return CollectRiderInfosMac(); + } + case OperatingSystemFamilyRider.Linux: + { + return CollectAllRiderPathsLinux(); + } + } + } + catch (Exception e) + { + Debug.LogException(e); + } + + return new RiderInfo[0]; + } + + internal static string[] GetAllFoundPaths(OperatingSystemFamilyRider operatingSystemFamily) + { + return GetAllFoundInfos(operatingSystemFamily).Select(a=>a.Path).ToArray(); + } +#endif + + private static RiderInfo[] CollectAllRiderPathsLinux() + { + var installInfos = new List(); + var home = Environment.GetEnvironmentVariable("HOME"); + if (!string.IsNullOrEmpty(home)) + { + var toolboxRiderRootPath = GetToolboxBaseDir(); + installInfos.AddRange(CollectPathsFromToolbox(toolboxRiderRootPath, "bin", "rider.sh", false) + .Select(a => new RiderInfo(a, true)).ToList()); + + //$Home/.local/share/applications/jetbrains-rider.desktop + var shortcut = new FileInfo(Path.Combine(home, @".local/share/applications/jetbrains-rider.desktop")); + + if (shortcut.Exists) + { + var lines = File.ReadAllLines(shortcut.FullName); + foreach (var line in lines) + { + if (!line.StartsWith("Exec=\"")) + continue; + var path = line.Split('"').Where((item, index) => index == 1).SingleOrDefault(); + if (string.IsNullOrEmpty(path)) + continue; + + if (installInfos.Any(a => a.Path == path)) // avoid adding similar build as from toolbox + continue; + installInfos.Add(new RiderInfo(path, false)); + } + } + } + + // snap install + var snapInstallPath = "/snap/rider/current/bin/rider.sh"; + if (new FileInfo(snapInstallPath).Exists) + installInfos.Add(new RiderInfo(snapInstallPath, false)); + + return installInfos.ToArray(); + } + + private static RiderInfo[] CollectRiderInfosMac() + { + var installInfos = new List(); + // "/Applications/*Rider*.app" + var folder = new DirectoryInfo("/Applications"); + if (folder.Exists) + { + installInfos.AddRange(folder.GetDirectories("*Rider*.app") + .Select(a => new RiderInfo(a.FullName, false)) + .ToList()); + } + + // /Users/user/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-1/181.3870.267/Rider EAP.app + var toolboxRiderRootPath = GetToolboxBaseDir(); + var paths = CollectPathsFromToolbox(toolboxRiderRootPath, "", "Rider*.app", true) + .Select(a => new RiderInfo(a, true)); + installInfos.AddRange(paths); + + return installInfos.ToArray(); + } + + private static RiderInfo[] CollectRiderInfosWindows() + { + var installInfos = new List(); + var toolboxRiderRootPath = GetToolboxBaseDir(); + var installPathsToolbox = CollectPathsFromToolbox(toolboxRiderRootPath, "bin", "rider64.exe", false).ToList(); + installInfos.AddRange(installPathsToolbox.Select(a => new RiderInfo(a, true)).ToList()); + + var installPaths = new List(); + const string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; + CollectPathsFromRegistry(registryKey, installPaths); + const string wowRegistryKey = @"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"; + CollectPathsFromRegistry(wowRegistryKey, installPaths); + + installInfos.AddRange(installPaths.Select(a => new RiderInfo(a, false)).ToList()); + + return installInfos.ToArray(); + } + + private static string GetToolboxBaseDir() + { + switch (SystemInfo.operatingSystemFamily) + { + case OperatingSystemFamily.Windows: + { + var localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + return Path.Combine(localAppData, @"JetBrains\Toolbox\apps\Rider"); + } + + case OperatingSystemFamily.MacOSX: + { + var home = Environment.GetEnvironmentVariable("HOME"); + if (!string.IsNullOrEmpty(home)) + { + return Path.Combine(home, @"Library/Application Support/JetBrains/Toolbox/apps/Rider"); + } + break; + } + + case OperatingSystemFamily.Linux: + { + var home = Environment.GetEnvironmentVariable("HOME"); + if (!string.IsNullOrEmpty(home)) + { + return Path.Combine(home, @".local/share/JetBrains/Toolbox/apps/Rider"); + } + break; + } + } + return string.Empty; + } + + internal static string GetBuildNumber(string path) + { + var file = new FileInfo(Path.Combine(path, GetRelativePathToBuildTxt())); + if (!file.Exists) + return string.Empty; + var text = File.ReadAllText(file.FullName); + if (text.Length > 3) + return text.Substring(3); + return string.Empty; + } + + internal static bool IsToolbox(string path) + { + return path.StartsWith(GetToolboxBaseDir()); + } + + private static string GetRelativePathToBuildTxt() + { + switch (SystemInfo.operatingSystemFamily) + { + case OperatingSystemFamily.Windows: + case OperatingSystemFamily.Linux: + return "../../build.txt"; + case OperatingSystemFamily.MacOSX: + return "Contents/Resources/build.txt"; + } + throw new Exception("Unknown OS"); + } + + private static void CollectPathsFromRegistry(string registryKey, List installPaths) + { + using (var key = Registry.LocalMachine.OpenSubKey(registryKey)) + { + if (key == null) return; + foreach (var subkeyName in key.GetSubKeyNames().Where(a => a.Contains("Rider"))) + { + using (var subkey = key.OpenSubKey(subkeyName)) + { + var folderObject = subkey?.GetValue("InstallLocation"); + if (folderObject == null) continue; + var folder = folderObject.ToString(); + var possiblePath = Path.Combine(folder, @"bin\rider64.exe"); + if (File.Exists(possiblePath)) + installPaths.Add(possiblePath); + } + } + } + } + + private static string[] CollectPathsFromToolbox(string toolboxRiderRootPath, string dirName, string searchPattern, + bool isMac) + { + if (!Directory.Exists(toolboxRiderRootPath)) + return new string[0]; + + var channelDirs = Directory.GetDirectories(toolboxRiderRootPath); + var paths = channelDirs.SelectMany(channelDir => + { + try + { + // use history.json - last entry stands for the active build https://jetbrains.slack.com/archives/C07KNP99D/p1547807024066500?thread_ts=1547731708.057700&cid=C07KNP99D + var historyFile = Path.Combine(channelDir, ".history.json"); + if (File.Exists(historyFile)) + { + var json = File.ReadAllText(historyFile); + var build = ToolboxHistory.GetLatestBuildFromJson(json); + if (build != null) + { + var buildDir = Path.Combine(channelDir, build); + var executablePaths = GetExecutablePaths(dirName, searchPattern, isMac, buildDir); + if (executablePaths.Any()) + return executablePaths; + } + } + + var channelFile = Path.Combine(channelDir, ".channel.settings.json"); + if (File.Exists(channelFile)) + { + var json = File.ReadAllText(channelFile).Replace("active-application", "active_application"); + var build = ToolboxInstallData.GetLatestBuildFromJson(json); + if (build != null) + { + var buildDir = Path.Combine(channelDir, build); + var executablePaths = GetExecutablePaths(dirName, searchPattern, isMac, buildDir); + if (executablePaths.Any()) + return executablePaths; + } + } + + // changes in toolbox json files format may brake the logic above, so return all found Rider installations + return Directory.GetDirectories(channelDir) + .SelectMany(buildDir => GetExecutablePaths(dirName, searchPattern, isMac, buildDir)); + } + catch (Exception e) + { + // do not write to Debug.Log, just log it. + Logger.Warn($"Failed to get RiderPath from {channelDir}", e); + } + + return new string[0]; + }) + .Where(c => !string.IsNullOrEmpty(c)) + .ToArray(); + return paths; + } + + private static string[] GetExecutablePaths(string dirName, string searchPattern, bool isMac, string buildDir) + { + var folder = new DirectoryInfo(Path.Combine(buildDir, dirName)); + if (!folder.Exists) + return new string[0]; + + if (!isMac) + return new[] {Path.Combine(folder.FullName, searchPattern)}.Where(File.Exists).ToArray(); + return folder.GetDirectories(searchPattern).Select(f => f.FullName) + .Where(Directory.Exists).ToArray(); + } + + // Disable the "field is never assigned" compiler warning. We never assign it, but Unity does. + // Note that Unity disable this warning in the generated C# projects +#pragma warning disable 0649 + + [Serializable] + class ToolboxHistory + { + public List history; + + [CanBeNull] + public static string GetLatestBuildFromJson(string json) + { + try + { +#if UNITY_4_7 || UNITY_5_5 + return JsonConvert.DeserializeObject(json).history.LastOrDefault()?.item.build; +#else + return JsonUtility.FromJson(json).history.LastOrDefault()?.item.build; +#endif + } + catch (Exception) + { + Logger.Warn($"Failed to get latest build from json {json}"); + } + + return null; + } + } + + [Serializable] + class ItemNode + { + public BuildNode item; + } + + [Serializable] + class BuildNode + { + public string build; + } + + // ReSharper disable once ClassNeverInstantiated.Global + [Serializable] + class ToolboxInstallData + { + // ReSharper disable once InconsistentNaming + public ActiveApplication active_application; + + [CanBeNull] + public static string GetLatestBuildFromJson(string json) + { + try + { +#if UNITY_4_7 || UNITY_5_5 + var toolbox = JsonConvert.DeserializeObject(json); +#else + var toolbox = JsonUtility.FromJson(json); +#endif + var builds = toolbox.active_application.builds; + if (builds != null && builds.Any()) + return builds.First(); + } + catch (Exception) + { + Logger.Warn($"Failed to get latest build from json {json}"); + } + + return null; + } + } + + [Serializable] + class ActiveApplication + { + // ReSharper disable once InconsistentNaming + public List builds; + } + +#pragma warning restore 0649 + + public struct RiderInfo + { + public bool IsToolbox; + public string Presentation; + public string BuildVersion; + public string Path; + + public RiderInfo(string path, bool isToolbox) + { + if (path == RiderScriptEditor.CurrentEditor) + { + RiderScriptEditorData.instance.Init(); + BuildVersion = RiderScriptEditorData.instance.currentEditorVersion; + } + else + BuildVersion = GetBuildNumber(path); + Path = new FileInfo(path).FullName; // normalize separators + var presentation = "Rider " + BuildVersion; + if (isToolbox) + presentation += " (JetBrains Toolbox)"; + + Presentation = presentation; + IsToolbox = isToolbox; + } + } + + private static class Logger + { + internal static void Warn(string message, Exception e = null) + { +#if RIDER_EDITOR_PLUGIN // can't be used in com.unity.ide.rider + Log.GetLog(typeof(RiderPathLocator).Name).Warn(message); + if (e != null) + Log.GetLog(typeof(RiderPathLocator).Name).Warn(e); +#else + Debug.LogError(message); + if (e != null) + Debug.LogException(e); +#endif + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Discovery.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Discovery.cs.meta new file mode 100644 index 0000000..ea4ef85 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Discovery.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dab656c79e1985c40b31faebcda44442 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/EditorPluginInterop.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/EditorPluginInterop.cs new file mode 100644 index 0000000..91e9624 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/EditorPluginInterop.cs @@ -0,0 +1,136 @@ +using System; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using Debug = UnityEngine.Debug; + +namespace Packages.Rider.Editor +{ + public static class EditorPluginInterop + { + private static string ourEntryPointTypeName = "JetBrains.Rider.Unity.Editor.PluginEntryPoint"; + + private static Assembly ourEditorPluginAssembly; + + public static Assembly EditorPluginAssembly + { + get + { + if (ourEditorPluginAssembly != null) + return ourEditorPluginAssembly; + var assemblies = AppDomain.CurrentDomain.GetAssemblies(); + ourEditorPluginAssembly = assemblies.FirstOrDefault(a => a.GetName().Name.Equals("JetBrains.Rider.Unity.Editor.Plugin.Full.Repacked")); + return ourEditorPluginAssembly; + } + } + + + private static void DisableSyncSolutionOnceCallBack() + { + // RiderScriptableSingleton.Instance.CsprojProcessedOnce = true; + // Otherwise EditorPlugin regenerates all on every AppDomain reload + var assembly = EditorPluginAssembly; + if (assembly == null) return; + var type = assembly.GetType("JetBrains.Rider.Unity.Editor.Utils.RiderScriptableSingleton"); + if (type == null) return; + var baseType = type.BaseType; + if (baseType == null) return; + var instance = baseType.GetProperty("Instance"); + if (instance == null) return; + var instanceVal = instance.GetValue(null); + var member = type.GetProperty("CsprojProcessedOnce"); + if (member==null) return; + member.SetValue(instanceVal, true); + } + + public static string LogPath + { + get + { + try + { + var assembly = EditorPluginAssembly; + if (assembly == null) return null; + var type = assembly.GetType(ourEntryPointTypeName); + if (type == null) return null; + var field = type.GetField("LogPath", BindingFlags.NonPublic | BindingFlags.Static); + if (field == null) return null; + return field.GetValue(null) as string; + } + catch (Exception) + { + Debug.Log("Unable to do OpenFile to Rider from dll, fallback to com.unity.ide.rider implementation."); + } + + return null; + } + } + + public static bool OpenFileDllImplementation(string path, int line, int column) + { + var openResult = false; + // reflection for fast OpenFileLineCol, when Rider is started and protocol connection is established + try + { + var assembly = EditorPluginAssembly; + if (assembly == null) return false; + var type = assembly.GetType(ourEntryPointTypeName); + if (type == null) return false; + var field = type.GetField("OpenAssetHandler", BindingFlags.NonPublic | BindingFlags.Static); + if (field == null) return false; + var handlerInstance = field.GetValue(null); + var method = handlerInstance.GetType() + .GetMethod("OnOpenedAsset", new[] {typeof(string), typeof(int), typeof(int)}); + if (method == null) return false; + var assetFilePath = path; + if (!string.IsNullOrEmpty(path)) + assetFilePath = Path.GetFullPath(path); + + openResult = (bool) method.Invoke(handlerInstance, new object[] {assetFilePath, line, column}); + } + catch (Exception e) + { + Debug.Log("Unable to do OpenFile to Rider from dll, fallback to com.unity.ide.rider implementation."); + Debug.LogException(e); + } + + return openResult; + } + + public static bool EditorPluginIsLoadedFromAssets(Assembly assembly) + { + if (assembly == null) + return false; + var location = assembly.Location; + var currentDir = Directory.GetCurrentDirectory(); + return location.StartsWith(currentDir, StringComparison.InvariantCultureIgnoreCase); + } + + + internal static void InitEntryPoint(Assembly assembly) + { + try + { + if (Version.TryParse(RiderScriptEditorData.instance.currentEditorVersion, out var version)) + { + if (version.Major < 192) + DisableSyncSolutionOnceCallBack(); // is require for Rider prior to 2019.2 + } + else + DisableSyncSolutionOnceCallBack(); + + var type = assembly.GetType("JetBrains.Rider.Unity.Editor.AfterUnity56.EntryPoint"); + if (type == null) + type = assembly.GetType("JetBrains.Rider.Unity.Editor.UnitTesting.EntryPoint"); // oldRider + RuntimeHelpers.RunClassConstructor(type.TypeHandle); + } + catch (TypeInitializationException ex) + { + Debug.LogException(ex); + if (ex.InnerException != null) + Debug.LogException(ex.InnerException); + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/EditorPluginInterop.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/EditorPluginInterop.cs.meta new file mode 100644 index 0000000..fda18d3 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/EditorPluginInterop.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9bd02a3a916be64c9b47b1305149423 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/LoggingLevel.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/LoggingLevel.cs new file mode 100644 index 0000000..19ef8ab --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/LoggingLevel.cs @@ -0,0 +1,22 @@ +namespace Packages.Rider.Editor +{ + public enum LoggingLevel + { + /// + /// Do not use it in logging. Only in config to disable logging. + /// + OFF, + /// For errors that lead to application failure + FATAL, + /// For errors that must be shown in Exception Browser + ERROR, + /// Suspicious situations but not errors + WARN, + /// Regular level for important events + INFO, + /// Additional info for debbuging + VERBOSE, + /// Methods & callstacks tracing, more than verbose + TRACE, + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/LoggingLevel.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/LoggingLevel.cs.meta new file mode 100644 index 0000000..c0494f3 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/LoggingLevel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 71bb46b59a9a7a346bbab1e185c723df +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PluginSettings.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PluginSettings.cs new file mode 100644 index 0000000..bda3fcb --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PluginSettings.cs @@ -0,0 +1,128 @@ +using Unity.CodeEditor; +using UnityEditor; +using UnityEngine; + +namespace Packages.Rider.Editor +{ + public class PluginSettings + { + public static LoggingLevel SelectedLoggingLevel + { + get => (LoggingLevel) EditorPrefs.GetInt("Rider_SelectedLoggingLevel", 0); + set + { + EditorPrefs.SetInt("Rider_SelectedLoggingLevel", (int) value); + } + } + + public static bool LogEventsCollectorEnabled + { + get { return EditorPrefs.GetBool("Rider_LogEventsCollectorEnabled", true); } + private set { EditorPrefs.SetBool("Rider_LogEventsCollectorEnabled", value); } + } + + + private static GUIStyle ourVersionInfoStyle = new GUIStyle() + { + normal = new GUIStyleState() + { + textColor = new Color(0, 0, 0, .6f), + }, + margin = new RectOffset(4, 4, 4, 4), + }; + + /// + /// Preferences menu layout + /// + /// + /// Contains all 3 toggles: Enable/Disable; Debug On/Off; Writing Launch File On/Off + /// + [SettingsProvider] + private static SettingsProvider RiderPreferencesItem() + { + if (!RiderScriptEditor.IsRiderInstallation(RiderScriptEditor.CurrentEditor)) + return null; + if (!RiderScriptEditorData.instance.shouldLoadEditorPlugin) + return null; + var provider = new SettingsProvider("Preferences/Rider", SettingsScope.User) + { + label = "Rider", + keywords = new[] { "Rider" }, + guiHandler = (searchContext) => + { + EditorGUIUtility.labelWidth = 200f; + EditorGUILayout.BeginVertical(); + + GUILayout.BeginVertical(); + LogEventsCollectorEnabled = + EditorGUILayout.Toggle(new GUIContent("Pass Console to Rider:"), LogEventsCollectorEnabled); + + GUILayout.EndVertical(); + GUILayout.Label(""); + + if (!string.IsNullOrEmpty(EditorPluginInterop.LogPath)) + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("Log file:"); + var previous = GUI.enabled; + GUI.enabled = previous && SelectedLoggingLevel != LoggingLevel.OFF; + var button = GUILayout.Button(new GUIContent("Open log")); + if (button) + { + //UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal(PluginEntryPoint.LogPath, 0); + // works much faster than the commented code, when Rider is already started + CodeEditor.CurrentEditor.OpenProject(EditorPluginInterop.LogPath, 0, 0); + } + + GUI.enabled = previous; + GUILayout.EndHorizontal(); + } + + var loggingMsg = + @"Sets the amount of Rider Debug output. If you are about to report an issue, please select Verbose logging level and attach Unity console output to the issue."; + SelectedLoggingLevel = + (LoggingLevel) EditorGUILayout.EnumPopup(new GUIContent("Logging Level:", loggingMsg), + SelectedLoggingLevel); + + + EditorGUILayout.HelpBox(loggingMsg, MessageType.None); + + var githubRepo = "https://github.com/JetBrains/resharper-unity"; + var caption = $"{githubRepo}"; + LinkButton(caption: caption, url: githubRepo); + + GUILayout.FlexibleSpace(); + GUILayout.BeginHorizontal(); + + GUILayout.FlexibleSpace(); + var assembly = EditorPluginInterop.EditorPluginAssembly; + if (assembly != null) + { + var version = assembly.GetName().Version; + GUILayout.Label("Plugin version: " + version, ourVersionInfoStyle); + } + + GUILayout.EndHorizontal(); + + EditorGUILayout.EndVertical(); + } + }; + return provider; + } + + private static void LinkButton(string caption, string url) + { + var style = GUI.skin.label; + style.richText = true; + + var bClicked = GUILayout.Button(caption, style); + + var rect = GUILayoutUtility.GetLastRect(); + rect.width = style.CalcSize(new GUIContent(caption)).x; + EditorGUIUtility.AddCursorRect(rect, MouseCursor.Link); + + if (bClicked) + Application.OpenURL(url); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PluginSettings.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PluginSettings.cs.meta new file mode 100644 index 0000000..279a4cc --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PluginSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1bfe12aa306c0c74db4f4f1a1a0ae5ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PostProcessors.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PostProcessors.meta new file mode 100644 index 0000000..40cdc60 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PostProcessors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa290bd9a165a0543a4bf85ac73914bc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PostProcessors/RiderAssetPostprocessor.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PostProcessors/RiderAssetPostprocessor.cs new file mode 100644 index 0000000..230633f --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PostProcessors/RiderAssetPostprocessor.cs @@ -0,0 +1,16 @@ +using Unity.CodeEditor; +using UnityEditor; + +namespace Packages.Rider.Editor.PostProcessors +{ + public class RiderAssetPostprocessor: AssetPostprocessor + { + public static bool OnPreGeneratingCSProjectFiles() + { + var path = RiderScriptEditor.GetEditorRealPath(CodeEditor.CurrentEditorInstallation); + if (RiderScriptEditor.IsRiderInstallation(path)) + return !ProjectGeneration.isRiderProjectGeneration; + return false; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PostProcessors/RiderAssetPostprocessor.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PostProcessors/RiderAssetPostprocessor.cs.meta new file mode 100644 index 0000000..68658cc --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/PostProcessors/RiderAssetPostprocessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45471ad7b8c1f964da5e3c07d57fbf4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration.meta new file mode 100644 index 0000000..37615b9 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 313cbe17019f1934397f91069831062c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/FileIOProvider.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/FileIOProvider.cs new file mode 100644 index 0000000..6ea51dc --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/FileIOProvider.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Text; + +namespace Packages.Rider.Editor { + class FileIOProvider : IFileIO + { + public bool Exists(string fileName) + { + return File.Exists(fileName); + } + + public string ReadAllText(string fileName) + { + return File.ReadAllText(fileName); + } + + public void WriteAllText(string fileName, string content) + { + File.WriteAllText(fileName, content, Encoding.UTF8); + } + } +} diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/FileIOProvider.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/FileIOProvider.cs.meta new file mode 100644 index 0000000..2763839 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/FileIOProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a6ba838b1348d5e46a7eaacd1646c1d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/GUIDProvider.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/GUIDProvider.cs new file mode 100644 index 0000000..476766e --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/GUIDProvider.cs @@ -0,0 +1,16 @@ +using System; + +namespace Packages.Rider.Editor { + class GUIDProvider : IGUIDGenerator + { + public string ProjectGuid(string projectName, string assemblyName) + { + return SolutionGuidGenerator.GuidForProject(projectName + assemblyName); + } + + public string SolutionGuid(string projectName, string extension) + { + return SolutionGuidGenerator.GuidForSolution(projectName, extension); // GetExtensionOfSourceFiles(assembly.sourceFiles) + } + } +} diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/GUIDProvider.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/GUIDProvider.cs.meta new file mode 100644 index 0000000..7b331f2 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/GUIDProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8cfde1a59fb35574189691a9de1df93b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/ProjectGeneration.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/ProjectGeneration.cs new file mode 100644 index 0000000..d0a2664 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/ProjectGeneration.cs @@ -0,0 +1,1090 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Security; +using System.Security.Cryptography; +using System.Text; +using System.Text.RegularExpressions; +using Packages.Rider.Editor.Util; +using UnityEditor; +using UnityEditor.Compilation; +using UnityEditor.PackageManager; +using UnityEditorInternal; +using UnityEngine; + +namespace Packages.Rider.Editor +{ + public interface IGenerator + { + bool SyncIfNeeded(IEnumerable affectedFiles, IEnumerable reimportedFiles); + void Sync(); + bool HasSolutionBeenGenerated(); + string SolutionFile(); + string ProjectDirectory { get; } + void GenerateAll(bool generateAll); + } + + public interface IFileIO + { + bool Exists(string fileName); + + string ReadAllText(string fileName); + void WriteAllText(string fileName, string content); + } + + public interface IGUIDGenerator + { + string ProjectGuid(string projectName, string assemblyName); + string SolutionGuid(string projectName, string extension); + } + + public interface IAssemblyNameProvider + { + string GetAssemblyNameFromScriptPath(string path); + IEnumerable GetAssemblies(Func shouldFileBePartOfSolution); + IEnumerable GetAllAssetPaths(); + UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath); + ResponseFileData ParseResponseFile(string responseFilePath, string projectDirectory, string[] systemReferenceDirectories); + } + + class AssemblyNameProvider : IAssemblyNameProvider + { + public string GetAssemblyNameFromScriptPath(string path) + { + return CompilationPipeline.GetAssemblyNameFromScriptPath(path); + } + + public IEnumerable GetAssemblies(Func shouldFileBePartOfSolution) + { + return CompilationPipeline.GetAssemblies() + .Where(i => 0 < i.sourceFiles.Length && i.sourceFiles.Any(shouldFileBePartOfSolution)); + } + + public IEnumerable GetAllAssetPaths() + { + return AssetDatabase.GetAllAssetPaths(); + } + + public UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath) + { + return UnityEditor.PackageManager.PackageInfo.FindForAssetPath(assetPath); + } + + public ResponseFileData ParseResponseFile(string responseFilePath, string projectDirectory, string[] systemReferenceDirectories) + { + return CompilationPipeline.ParseResponseFile( + responseFilePath, + projectDirectory, + systemReferenceDirectories + ); + } + } + + public class ProjectGeneration : IGenerator + { + enum ScriptingLanguage + { + None, + CSharp + } + + public static readonly string MSBuildNamespaceUri = "http://schemas.microsoft.com/developer/msbuild/2003"; + + /// + /// Map source extensions to ScriptingLanguages + /// + static readonly Dictionary k_BuiltinSupportedExtensions = + new Dictionary + { + {"cs", ScriptingLanguage.CSharp}, + {"uxml", ScriptingLanguage.None}, + {"uss", ScriptingLanguage.None}, + {"shader", ScriptingLanguage.None}, + {"compute", ScriptingLanguage.None}, + {"cginc", ScriptingLanguage.None}, + {"hlsl", ScriptingLanguage.None}, + {"glslinc", ScriptingLanguage.None}, + {"template", ScriptingLanguage.None}, + {"raytrace", ScriptingLanguage.None} + }; + + string m_SolutionProjectEntryTemplate = string.Join(Environment.NewLine, + @"Project(""{{{0}}}"") = ""{1}"", ""{2}"", ""{{{3}}}""", + @"EndProject").Replace(" ", "\t"); + + string m_SolutionProjectConfigurationTemplate = string.Join(Environment.NewLine, + @" {{{0}}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU", + @" {{{0}}}.Debug|Any CPU.Build.0 = Debug|Any CPU", + @" {{{0}}}.Release|Any CPU.ActiveCfg = Release|Any CPU", + @" {{{0}}}.Release|Any CPU.Build.0 = Release|Any CPU").Replace(" ", "\t"); + + static readonly string[] k_ReimportSyncExtensions = {".dll", ".asmdef"}; + + /// + /// Map ScriptingLanguages to project extensions + /// + /*static readonly Dictionary k_ProjectExtensions = new Dictionary + { + { ScriptingLanguage.CSharp, ".csproj" }, + { ScriptingLanguage.None, ".csproj" }, + };*/ + static readonly Regex k_ScriptReferenceExpression = new Regex( + @"^Library.ScriptAssemblies.(?(?.*)\.dll$)", + RegexOptions.Compiled | RegexOptions.IgnoreCase); + + string[] m_ProjectSupportedExtensions = new string[0]; + bool m_ShouldGenerateAll; + + public string ProjectDirectory { get; } + + public void GenerateAll(bool generateAll) + { + m_ShouldGenerateAll = generateAll; + } + + readonly string m_ProjectName; + readonly IAssemblyNameProvider m_AssemblyNameProvider; + readonly IFileIO m_FileIOProvider; + readonly IGUIDGenerator m_GUIDGenerator; + internal static bool isRiderProjectGeneration; // workaround to https://github.cds.internal.unity3d.com/unity/com.unity.ide.rider/issues/28 + + const string k_ToolsVersion = "4.0"; + const string k_ProductVersion = "10.0.20506"; + const string k_BaseDirectory = "."; + const string k_TargetFrameworkVersion = "v4.7.1"; + const string k_TargetLanguageVersion = "latest"; + + static readonly Regex scriptReferenceExpression = new Regex( + @"^Library.ScriptAssemblies.(?(?.*)\.dll$)", + RegexOptions.Compiled | RegexOptions.IgnoreCase); + + public ProjectGeneration() : this(Directory.GetParent(Application.dataPath).FullName) + { + } + + public ProjectGeneration(string tempDirectory) : this(tempDirectory, new AssemblyNameProvider(), new FileIOProvider(), new GUIDProvider()) + { + } + + public ProjectGeneration(string tempDirectory, IAssemblyNameProvider assemblyNameProvider, IFileIO fileIoProvider, IGUIDGenerator guidGenerator) + { + ProjectDirectory = tempDirectory.Replace('\\', '/'); + m_ProjectName = Path.GetFileName(ProjectDirectory); + m_AssemblyNameProvider = assemblyNameProvider; + m_FileIOProvider = fileIoProvider; + m_GUIDGenerator = guidGenerator; + } + + /// + /// Syncs the scripting solution if any affected files are relevant. + /// + /// + /// Whether the solution was synced. + /// + /// + /// A set of files whose status has changed + /// + /// + /// A set of files that got reimported + /// + public bool SyncIfNeeded(IEnumerable affectedFiles, IEnumerable reimportedFiles) + { + SetupProjectSupportedExtensions(); + + if (HasFilesBeenModified(affectedFiles, reimportedFiles)) + { + Sync(); + return true; + } + + return false; + } + + bool HasFilesBeenModified(IEnumerable affectedFiles, IEnumerable reimportedFiles) + { + return affectedFiles.Any(ShouldFileBePartOfSolution) || reimportedFiles.Any(ShouldSyncOnReimportedAsset); + } + + static bool ShouldSyncOnReimportedAsset(string asset) + { + return k_ReimportSyncExtensions.Contains(new FileInfo(asset).Extension); + } + + public void Sync() + { + SetupProjectSupportedExtensions(); + var types = GetAssetPostprocessorTypes(); + isRiderProjectGeneration = true; + bool externalCodeAlreadyGeneratedProjects = OnPreGeneratingCSProjectFiles(types); + isRiderProjectGeneration = false; + if (!externalCodeAlreadyGeneratedProjects) + { + GenerateAndWriteSolutionAndProjects(types); + } + + OnGeneratedCSProjectFiles(types); + } + + public bool HasSolutionBeenGenerated() + { + return m_FileIOProvider.Exists(SolutionFile()); + } + + void SetupProjectSupportedExtensions() + { + m_ProjectSupportedExtensions = EditorSettings.projectGenerationUserExtensions; + } + + bool ShouldFileBePartOfSolution(string file) + { + string extension = Path.GetExtension(file); + + // Exclude files coming from packages except if they are internalized. + if (!m_ShouldGenerateAll && IsInternalizedPackagePath(file)) + { + return false; + } + + // Dll's are not scripts but still need to be included.. + if (extension == ".dll") + return true; + + if (file.ToLower().EndsWith(".asmdef")) + return true; + + return IsSupportedExtension(extension); + } + + bool IsSupportedExtension(string extension) + { + extension = extension.TrimStart('.'); + if (k_BuiltinSupportedExtensions.ContainsKey(extension)) + return true; + if (m_ProjectSupportedExtensions.Contains(extension)) + return true; + return false; + } + + static ScriptingLanguage ScriptingLanguageFor(Assembly island) + { + return ScriptingLanguageFor(GetExtensionOfSourceFiles(island.sourceFiles)); + } + + static string GetExtensionOfSourceFiles(string[] files) + { + return files.Length > 0 ? GetExtensionOfSourceFile(files[0]) : "NA"; + } + + static string GetExtensionOfSourceFile(string file) + { + var ext = Path.GetExtension(file).ToLower(); + ext = ext.Substring(1); //strip dot + return ext; + } + + static ScriptingLanguage ScriptingLanguageFor(string extension) + { + return k_BuiltinSupportedExtensions.TryGetValue(extension.TrimStart('.'), out var result) + ? result + : ScriptingLanguage.None; + } + + public void GenerateAndWriteSolutionAndProjects(Type[] types) + { + // Only synchronize islands that have associated source files and ones that we actually want in the project. + // This also filters out DLLs coming from .asmdef files in packages. + var assemblies = m_AssemblyNameProvider.GetAssemblies(ShouldFileBePartOfSolution); + + var allAssetProjectParts = GenerateAllAssetProjectParts(); + + var monoIslands = assemblies.ToList(); + + SyncSolution(monoIslands, types); + var allProjectIslands = RelevantIslandsForMode(monoIslands).ToList(); + foreach (Assembly assembly in allProjectIslands) + { + var responseFileData = ParseResponseFileData(assembly); + SyncProject(assembly, allAssetProjectParts, responseFileData, allProjectIslands, types); + } + } + + IEnumerable ParseResponseFileData(Assembly assembly) + { + var systemReferenceDirectories = + CompilationPipeline.GetSystemAssemblyDirectories(assembly.compilerOptions.ApiCompatibilityLevel); + + Dictionary responseFilesData = assembly.compilerOptions.ResponseFiles.ToDictionary( + x => x, x => m_AssemblyNameProvider.ParseResponseFile( + x, + ProjectDirectory, + systemReferenceDirectories + )); + + Dictionary responseFilesWithErrors = responseFilesData.Where(x => x.Value.Errors.Any()) + .ToDictionary(x => x.Key, x => x.Value); + + if (responseFilesWithErrors.Any()) + { + foreach (var error in responseFilesWithErrors) + foreach (var valueError in error.Value.Errors) + { + Debug.LogError($"{error.Key} Parse Error : {valueError}"); + } + } + + return responseFilesData.Select(x => x.Value); + } + + Dictionary GenerateAllAssetProjectParts() + { + Dictionary stringBuilders = new Dictionary(); + + foreach (string asset in m_AssemblyNameProvider.GetAllAssetPaths()) + { + // Exclude files coming from packages except if they are internalized. + if (!m_ShouldGenerateAll && IsInternalizedPackagePath(asset)) + { + continue; + } + + string extension = Path.GetExtension(asset); + if (IsSupportedExtension(extension) && ScriptingLanguage.None == ScriptingLanguageFor(extension)) + { + // Find assembly the asset belongs to by adding script extension and using compilation pipeline. + var assemblyName = m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset + ".cs"); + + if (string.IsNullOrEmpty(assemblyName)) + { + continue; + } + + assemblyName = FileSystemUtil.FileNameWithoutExtension(assemblyName); + + if (!stringBuilders.TryGetValue(assemblyName, out var projectBuilder)) + { + projectBuilder = new StringBuilder(); + stringBuilders[assemblyName] = projectBuilder; + } + + projectBuilder.Append(" ") + .Append(Environment.NewLine); + } + } + + var result = new Dictionary(); + + foreach (var entry in stringBuilders) + result[entry.Key] = entry.Value.ToString(); + + return result; + } + + bool IsInternalizedPackagePath(string file) + { + if (string.IsNullOrWhiteSpace(file)) + { + return false; + } + + var packageInfo = m_AssemblyNameProvider.FindForAssetPath(file); + if (packageInfo == null) + { + return false; + } + + var packageSource = packageInfo.source; + return packageSource != PackageSource.Embedded && packageSource != PackageSource.Local; + } + + void SyncProject( + Assembly island, + Dictionary allAssetsProjectParts, + IEnumerable responseFilesData, + List allProjectIslands, + Type[] types) + { + SyncProjectFileIfNotChanged(ProjectFile(island), + ProjectText(island, allAssetsProjectParts, responseFilesData.ToList(), allProjectIslands), types); + } + + void SyncProjectFileIfNotChanged(string path, string newContents, Type[] types) + { + if (Path.GetExtension(path) == ".csproj") + { + newContents = OnGeneratedCSProject(path, newContents, types); + } + + SyncFileIfNotChanged(path, newContents); + } + + void SyncSolutionFileIfNotChanged(string path, string newContents, Type[] types) + { + newContents = OnGeneratedSlnSolution(path, newContents, types); + + SyncFileIfNotChanged(path, newContents); + } + + static List SafeGetTypes(System.Reflection.Assembly a) + { + List ret; + + try + { + ret = a.GetTypes().ToList(); + } + catch (System.Reflection.ReflectionTypeLoadException rtl) + { + ret = rtl.Types.ToList(); + } + catch (Exception) + { + return new List(); + } + + return ret.Where(r => r != null).ToList(); + } + + static void OnGeneratedCSProjectFiles(Type[] types) + { + var args = new object[0]; + foreach (var type in types) + { + var method = type.GetMethod("OnGeneratedCSProjectFiles", + System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | + System.Reflection.BindingFlags.Static); + if (method == null) + { + continue; + } + + method.Invoke(null, args); + } + } + + public static Type[] GetAssetPostprocessorTypes() + { + return TypeCache.GetTypesDerivedFrom().ToArray(); // doesn't find types from EditorPlugin, which is fine + } + + static bool OnPreGeneratingCSProjectFiles(Type[] types) + { + bool result = false; + foreach (var type in types) + { + var args = new object[0]; + var method = type.GetMethod("OnPreGeneratingCSProjectFiles", + System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | + System.Reflection.BindingFlags.Static); + if (method == null) + { + continue; + } + + var returnValue = method.Invoke(null, args); + if (method.ReturnType == typeof(bool)) + { + result |= (bool) returnValue; + } + } + + return result; + } + + static string OnGeneratedCSProject(string path, string content, Type[] types) + { + foreach (var type in types) + { + var args = new[] {path, content}; + var method = type.GetMethod("OnGeneratedCSProject", + System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | + System.Reflection.BindingFlags.Static); + if (method == null) + { + continue; + } + + var returnValue = method.Invoke(null, args); + if (method.ReturnType == typeof(string)) + { + content = (string) returnValue; + } + } + + return content; + } + + static string OnGeneratedSlnSolution(string path, string content, Type[] types) + { + foreach (var type in types) + { + var args = new[] {path, content}; + var method = type.GetMethod("OnGeneratedSlnSolution", + System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | + System.Reflection.BindingFlags.Static); + if (method == null) + { + continue; + } + + var returnValue = method.Invoke(null, args); + if (method.ReturnType == typeof(string)) + { + content = (string) returnValue; + } + } + + return content; + } + + void SyncFileIfNotChanged(string filename, string newContents) + { + try + { + if (m_FileIOProvider.Exists(filename) && newContents == m_FileIOProvider.ReadAllText(filename)) + { + return; + } + } + catch (Exception exception) + { + Debug.LogException(exception); + } + + m_FileIOProvider.WriteAllText(filename, newContents); + } + + string ProjectText(Assembly assembly, + Dictionary allAssetsProjectParts, + List responseFilesData, + List allProjectIslands) + { + var projectBuilder = new StringBuilder(ProjectHeader(assembly, responseFilesData)); + var references = new List(); + var projectReferences = new List(); + + foreach (string file in assembly.sourceFiles) + { + if (!ShouldFileBePartOfSolution(file)) + continue; + + var extension = Path.GetExtension(file).ToLower(); + var fullFile = EscapedRelativePathFor(file); + if (".dll" != extension) + { + projectBuilder.Append(" ").Append(Environment.NewLine); + } + else + { + references.Add(fullFile); + } + } + + // Append additional non-script files that should be included in project generation. + if (allAssetsProjectParts.TryGetValue(assembly.name, out var additionalAssetsForProject)) + projectBuilder.Append(additionalAssetsForProject); + + var islandRefs = references.Union(assembly.allReferences); + foreach (string reference in islandRefs) + { + if (reference.EndsWith("/UnityEditor.dll", StringComparison.Ordinal) + || reference.EndsWith("/UnityEngine.dll", StringComparison.Ordinal) + || reference.EndsWith("\\UnityEditor.dll", StringComparison.Ordinal) + || reference.EndsWith("\\UnityEngine.dll", StringComparison.Ordinal)) + continue; + + var match = k_ScriptReferenceExpression.Match(reference); + if (match.Success) + { + // assume csharp language + // Add a reference to a project except if it's a reference to a script assembly + // that we are not generating a project for. This will be the case for assemblies + // coming from .assembly.json files in non-internalized packages. + var dllName = match.Groups["dllname"].Value; + if (allProjectIslands.Any(i => Path.GetFileName(i.outputPath) == dllName)) + { + projectReferences.Add(match); + continue; + } + } + + string fullReference = Path.IsPathRooted(reference) ? reference : Path.Combine(ProjectDirectory, reference); + + AppendReference(fullReference, projectBuilder); + } + + var responseRefs = responseFilesData.SelectMany(x => x.FullPathReferences.Select(r => r)); + foreach (var reference in responseRefs) + { + AppendReference(reference, projectBuilder); + } + + if (0 < projectReferences.Count) + { + projectBuilder.AppendLine(" "); + projectBuilder.AppendLine(" "); + foreach (Match reference in projectReferences) + { + var referencedProject = reference.Groups["project"].Value; + + projectBuilder.Append(" ").Append(Environment.NewLine); + projectBuilder + .Append(" {") + .Append(m_GUIDGenerator.ProjectGuid(m_ProjectName, reference.Groups["project"].Value)) + .Append("}") + .Append(Environment.NewLine); + projectBuilder.Append(" ").Append(referencedProject).Append("").Append(Environment.NewLine); + projectBuilder.AppendLine(" "); + } + } + + projectBuilder.Append(ProjectFooter()); + return projectBuilder.ToString(); + } + + static void AppendReference(string fullReference, StringBuilder projectBuilder) + { + //replace \ with / and \\ with / + var escapedFullPath = SecurityElement.Escape(fullReference); + escapedFullPath = escapedFullPath.Replace("\\\\", "/").Replace("\\", "/"); + projectBuilder.Append(" ").Append(Environment.NewLine); + projectBuilder.Append(" ").Append(escapedFullPath).Append("").Append(Environment.NewLine); + projectBuilder.Append(" ").Append(Environment.NewLine); + } + + public string ProjectFile(Assembly assembly) + { + return Path.Combine(ProjectDirectory, $"{assembly.name}.csproj"); + } + + public string SolutionFile() + { + return Path.Combine(ProjectDirectory, $"{m_ProjectName}.sln"); + } + + string ProjectHeader( + Assembly assembly, + List responseFilesData + ) + { + var otherResponseFilesData = GetOtherArgumentsFromResponseFilesData(responseFilesData); + var arguments = new object[] + { + k_ToolsVersion, k_ProductVersion, m_GUIDGenerator.ProjectGuid(m_ProjectName, assembly.name), + InternalEditorUtility.GetEngineAssemblyPath(), + InternalEditorUtility.GetEditorAssemblyPath(), + string.Join(";", + new[] {"DEBUG", "TRACE"}.Concat(EditorUserBuildSettings.activeScriptCompilationDefines).Concat(assembly.defines) + .Concat(responseFilesData.SelectMany(x => x.Defines)).Distinct().ToArray()), + MSBuildNamespaceUri, + assembly.name, + EditorSettings.projectGenerationRootNamespace, + k_TargetFrameworkVersion, + GenerateLangVersion(otherResponseFilesData["langversion"]), + k_BaseDirectory, + assembly.compilerOptions.AllowUnsafeCode | responseFilesData.Any(x => x.Unsafe), + GenerateNoWarn(otherResponseFilesData["nowarn"].Distinct().ToArray()), + GenerateAnalyserItemGroup(otherResponseFilesData["analyzer"].Concat(otherResponseFilesData["a"]).SelectMany(x=>x.Split(';')).Distinct().ToArray()), + GenerateAnalyserAdditionalFiles(otherResponseFilesData["additionalfile"].SelectMany(x=>x.Split(';')).Distinct().ToArray()), + GenerateAnalyserRuleSet(otherResponseFilesData["ruleset"].Distinct().ToArray()), + GenerateWarningLevel(otherResponseFilesData["warn"].Concat(otherResponseFilesData["w"]).Distinct()), + GenerateWarningAsError(otherResponseFilesData["warnaserror"]), + GenerateDocumentationFile(otherResponseFilesData["doc"]) + }; + + try + { + return string.Format(GetProjectHeaderTemplate(), arguments); + } + catch (Exception) + { + throw new NotSupportedException( + "Failed creating c# project because the c# project header did not have the correct amount of arguments, which is " + + arguments.Length); + } + } + + private string GenerateDocumentationFile(IEnumerable paths) + { + if (!paths.Any()) + return String.Empty; + + + return $"{Environment.NewLine}{string.Join(Environment.NewLine, paths.Select(a => $" {a}"))}"; + } + + private string GenerateWarningAsError(IEnumerable enumerable) + { + string returnValue = String.Empty; + bool allWarningsAsErrors = false; + List warningIds = new List(); + + foreach (string s in enumerable) + { + if (s == "+") allWarningsAsErrors = true; + else if (s == "-") allWarningsAsErrors = false; + else + { + warningIds.Add(s); + } + } + + returnValue += $@" {allWarningsAsErrors}"; + if (warningIds.Any()) + { + returnValue += $"{Environment.NewLine} {string.Join(";", warningIds)}"; + } + + return $"{Environment.NewLine}{returnValue}"; + } + + private string GenerateWarningLevel(IEnumerable warningLevel) + { + var level = warningLevel.FirstOrDefault(); + if (!string.IsNullOrWhiteSpace(level)) + return level; + + return 4.ToString(); + } + + static string GetSolutionText() + { + return string.Join(Environment.NewLine, + @"", + @"Microsoft Visual Studio Solution File, Format Version {0}", + @"# Visual Studio {1}", + @"{2}", + @"Global", + @" GlobalSection(SolutionConfigurationPlatforms) = preSolution", + @" Debug|Any CPU = Debug|Any CPU", + @" Release|Any CPU = Release|Any CPU", + @" EndGlobalSection", + @" GlobalSection(ProjectConfigurationPlatforms) = postSolution", + @"{3}", + @" EndGlobalSection", + @" GlobalSection(SolutionProperties) = preSolution", + @" HideSolutionNode = FALSE", + @" EndGlobalSection", + @"EndGlobal", + @"").Replace(" ", "\t"); + } + + static string GetProjectFooterTemplate() + { + return string.Join(Environment.NewLine, + @" ", + @" ", + @" ", + @"", + @""); + } + + static string GetProjectHeaderTemplate() + { + var header = new[] + { + @"", + @"", + @" ", + @" {10}", + @" <_TargetFrameworkDirectories>non_empty_path_generated_by_unity.rider.package", + @" <_FullFrameworkReferenceAssemblyPaths>non_empty_path_generated_by_unity.rider.package", + @" true{16}", + @" ", + @" ", + @" Debug", + @" AnyCPU", + @" {1}", + @" 2.0", + @" {8}", + @" {{{2}}}", + @" Library", + @" Properties", + @" {7}", + @" {9}", + @" 512", + @" {11}", + @" ", + @" ", + @" true", + @" full", + @" false", + @" Temp\bin\Debug\", + @" {5}", + @" prompt", + @" {17}", + @" 0169{13}", + @" {12}{18}{19}", + @" ", + @" ", + @" pdbonly", + @" true", + @" Temp\bin\Release\", + @" prompt", + @" {17}", + @" 0169{13}", + @" {12}{18}{19}", + @" " + }; + + var forceExplicitReferences = new[] + { + @" ", + @" true", + @" true", + @" false", + @" false", + @" false", + @" " + }; + + var itemGroupStart = new[] + { + @" " + }; + + var footer = new[] + { + @" ", + @" {3}", + @" ", + @" ", + @" {4}", + @" ", + @" {14}{15}", + @" ", + @"" + }; + + var pieces = header.Concat(forceExplicitReferences).Concat(itemGroupStart).Concat(footer).ToArray(); + return string.Join(Environment.NewLine, pieces); + } + + void SyncSolution(IEnumerable islands, Type[] types) + { + SyncSolutionFileIfNotChanged(SolutionFile(), SolutionText(islands), types); + } + + string SolutionText(IEnumerable islands) + { + var fileversion = "11.00"; + var vsversion = "2010"; + + var relevantIslands = RelevantIslandsForMode(islands); + string projectEntries = GetProjectEntries(relevantIslands); + string projectConfigurations = string.Join(Environment.NewLine, + relevantIslands.Select(i => GetProjectActiveConfigurations(m_GUIDGenerator.ProjectGuid(m_ProjectName, i.name))).ToArray()); + return string.Format(GetSolutionText(), fileversion, vsversion, projectEntries, projectConfigurations); + } + + private static string GenerateAnalyserItemGroup(string[] paths) + { + // + // + // + // + if (!paths.Any()) + return string.Empty; + + var analyserBuilder = new StringBuilder(); + analyserBuilder.AppendLine(" "); + foreach (var path in paths) + { + analyserBuilder.AppendLine($" "); + } + analyserBuilder.AppendLine(" "); + return analyserBuilder.ToString(); + } + + private static ILookup GetOtherArgumentsFromResponseFilesData(List responseFilesData) + { + var paths = responseFilesData.SelectMany(x => + { + return x.OtherArguments + .Where(a => a.StartsWith("/") || a.StartsWith("-")) + .Select(b => + { + var index = b.IndexOf(":", StringComparison.Ordinal); + if (index > 0 && b.Length > index) + { + var key = b.Substring(1, index - 1); + return new KeyValuePair(key, b.Substring(index + 1)); + } + + const string warnaserror = "warnaserror"; + if (b.Substring(1).StartsWith(warnaserror)) + { + return new KeyValuePair(warnaserror, b.Substring(warnaserror.Length+ 1) ); + } + + return default; + }); + }) + .Distinct() + .ToLookup(o => o.Key, pair => pair.Value); + return paths; + } + + private string GenerateLangVersion(IEnumerable langVersionList) + { + var langVersion = langVersionList.FirstOrDefault(); + if (!string.IsNullOrWhiteSpace(langVersion)) + return langVersion; + return k_TargetLanguageVersion; + } + + private static string GenerateAnalyserRuleSet(string[] paths) + { + //..\path\to\myrules.ruleset + if (!paths.Any()) + return string.Empty; + + return $"{Environment.NewLine}{string.Join(Environment.NewLine, paths.Select(a => $" {a}"))}"; + } + + private static string GenerateAnalyserAdditionalFiles(string[] paths) + { + if (!paths.Any()) + return string.Empty; + + + var analyserBuilder = new StringBuilder(); + analyserBuilder.AppendLine(" "); + foreach (var path in paths) + { + analyserBuilder.AppendLine($" "); + } + analyserBuilder.AppendLine(" "); + return analyserBuilder.ToString(); + } + + private static string GenerateNoWarn(string[] codes) + { + if (!codes.Any()) + return string.Empty; + + return $",{string.Join(",", codes)}"; + } + + static IEnumerable RelevantIslandsForMode(IEnumerable islands) + { + IEnumerable relevantIslands = islands.Where(i => ScriptingLanguage.CSharp == ScriptingLanguageFor(i)); + return relevantIslands; + } + + /// + /// Get a Project("{guid}") = "MyProject", "MyProject.unityproj", "{projectguid}" + /// entry for each relevant language + /// + string GetProjectEntries(IEnumerable islands) + { + var projectEntries = islands.Select(i => string.Format( + m_SolutionProjectEntryTemplate, + m_GUIDGenerator.SolutionGuid(m_ProjectName, GetExtensionOfSourceFiles(i.sourceFiles)), + i.name, + Path.GetFileName(ProjectFile(i)), + m_GUIDGenerator.ProjectGuid(m_ProjectName, i.name) + )); + + return string.Join(Environment.NewLine, projectEntries.ToArray()); + } + + /// + /// Generate the active configuration string for a given project guid + /// + string GetProjectActiveConfigurations(string projectGuid) + { + return string.Format( + m_SolutionProjectConfigurationTemplate, + projectGuid); + } + + string EscapedRelativePathFor(string file) + { + var projectDir = ProjectDirectory.Replace('/', '\\'); + file = file.Replace('/', '\\'); + var path = SkipPathPrefix(file, projectDir); + + var packageInfo = m_AssemblyNameProvider.FindForAssetPath(path.Replace('\\', '/')); + if (packageInfo != null) + { + // We have to normalize the path, because the PackageManagerRemapper assumes + // dir seperators will be os specific. + var absolutePath = Path.GetFullPath(NormalizePath(path)).Replace('/', '\\'); + path = SkipPathPrefix(absolutePath, projectDir); + } + + return SecurityElement.Escape(path); + } + + static string SkipPathPrefix(string path, string prefix) + { + if (path.Replace("\\", "/").StartsWith($"{prefix}/")) + return path.Substring(prefix.Length + 1); + return path; + } + + static string NormalizePath(string path) + { + if (Path.DirectorySeparatorChar == '\\') + return path.Replace('/', Path.DirectorySeparatorChar); + return path.Replace('\\', Path.DirectorySeparatorChar); + } + + static string ProjectFooter() + { + return GetProjectFooterTemplate(); + } + + static string GetProjectExtension() + { + return ".csproj"; + } + } + + public static class SolutionGuidGenerator + { + public static string GuidForProject(string projectName) + { + return ComputeGuidHashFor(projectName + "salt"); + } + + public static string GuidForSolution(string projectName, string sourceFileExtension) + { + if (sourceFileExtension.ToLower() == "cs") + // GUID for a C# class library: http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs + return "FAE04EC0-301F-11D3-BF4B-00C04F79EFBC"; + + return ComputeGuidHashFor(projectName); + } + + static string ComputeGuidHashFor(string input) + { + var hash = MD5.Create().ComputeHash(Encoding.Default.GetBytes(input)); + return HashAsGuid(HashToString(hash)); + } + + static string HashAsGuid(string hash) + { + var guid = hash.Substring(0, 8) + "-" + hash.Substring(8, 4) + "-" + hash.Substring(12, 4) + "-" + + hash.Substring(16, 4) + "-" + hash.Substring(20, 12); + return guid.ToUpper(); + } + + static string HashToString(byte[] bs) + { + var sb = new StringBuilder(); + foreach (byte b in bs) + sb.Append(b.ToString("x2")); + return sb.ToString(); + } + } +} diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/ProjectGeneration.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/ProjectGeneration.cs.meta new file mode 100644 index 0000000..4a0705c --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/ProjectGeneration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7078f19173ceac84fb9e29b9f6175201 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderInitializer.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderInitializer.cs new file mode 100644 index 0000000..d481133 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderInitializer.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using UnityEngine; +using Debug = UnityEngine.Debug; + +namespace Packages.Rider.Editor +{ + internal class RiderInitializer + { + public void Initialize(string editorPath) + { + var assembly = EditorPluginInterop.EditorPluginAssembly; + if (EditorPluginInterop.EditorPluginIsLoadedFromAssets(assembly)) + { + Debug.LogError($"Please delete {assembly.Location}. Unity 2019.2+ loads it directly from Rider installation. To disable this, open Rider's settings, search and uncheck 'Automatically install and update Rider's Unity editor plugin'."); + return; + } + + var dllName = "JetBrains.Rider.Unity.Editor.Plugin.Full.Repacked.dll"; + var relPath = "../../plugins/rider-unity/EditorPlugin"; + if (SystemInfo.operatingSystemFamily == OperatingSystemFamily.MacOSX) + relPath = "Contents/plugins/rider-unity/EditorPlugin"; + var dllFile = new FileInfo(Path.Combine(Path.Combine(editorPath, relPath), dllName)); + + if (dllFile.Exists) + { + var bytes = File.ReadAllBytes(dllFile.FullName); + assembly = AppDomain.CurrentDomain.Load(bytes); // doesn't lock assembly on disk + // assembly = AppDomain.CurrentDomain.Load(AssemblyName.GetAssemblyName(dllFile.FullName)); // use this for external source debug + EditorPluginInterop.InitEntryPoint(assembly); + } + else + { + Debug.Log($"Unable to find Rider EditorPlugin {dllFile.FullName} for Unity "); + } + } + } +} diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderInitializer.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderInitializer.cs.meta new file mode 100644 index 0000000..11d46bc --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderInitializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5a0cc9645f0e2d4fb816156dcf3f4dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditor.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditor.cs new file mode 100644 index 0000000..debee95 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditor.cs @@ -0,0 +1,404 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using Packages.Rider.Editor.Util; +using Unity.CodeEditor; +using UnityEditor; +using UnityEngine; +using Debug = UnityEngine.Debug; + +namespace Packages.Rider.Editor +{ + [InitializeOnLoad] + public class RiderScriptEditor : IExternalCodeEditor + { + IDiscovery m_Discoverability; + IGenerator m_ProjectGeneration; + RiderInitializer m_Initiliazer = new RiderInitializer(); + + static RiderScriptEditor() + { + try + { + var projectGeneration = new ProjectGeneration(); + var editor = new RiderScriptEditor(new Discovery(), projectGeneration); + CodeEditor.Register(editor); + var path = GetEditorRealPath(CodeEditor.CurrentEditorInstallation); + + if (IsRiderInstallation(path)) + { + if (!RiderScriptEditorData.instance.InitializedOnce) + { + var installations = editor.Installations; + // is toolbox and outdated - update + if (installations.Any() && RiderPathLocator.IsToolbox(path) && installations.All(a => a.Path != path)) + { + var toolboxInstallations = installations.Where(a => a.Name.Contains("(JetBrains Toolbox)")).ToArray(); + if (toolboxInstallations.Any()) + { + var newEditor = toolboxInstallations.Last().Path; + CodeEditor.SetExternalScriptEditor(newEditor); + path = newEditor; + } + else + { + var newEditor = installations.Last().Path; + CodeEditor.SetExternalScriptEditor(newEditor); + path = newEditor; + } + } + + // exists, is non toolbox and outdated - notify + if (installations.Any() && FileSystemUtil.EditorPathExists(path) && installations.All(a => a.Path != path)) + { + var newEditorName = installations.Last().Name; + Debug.LogWarning($"Consider updating External Editor in Unity to Rider {newEditorName}."); + } + + ShowWarningOnUnexpectedScriptEditor(path); + RiderScriptEditorData.instance.InitializedOnce = true; + } + + if (!FileSystemUtil.EditorPathExists(path)) // previously used rider was removed + { + var installations = editor.Installations; + if (installations.Any()) + { + var newEditor = installations.Last().Path; + CodeEditor.SetExternalScriptEditor(newEditor); + path = newEditor; + } + } + RiderScriptEditorData.instance.Init(); + + editor.CreateSolutionIfDoesntExist(); + if (RiderScriptEditorData.instance.shouldLoadEditorPlugin) + { + editor.m_Initiliazer.Initialize(path); + } + + InitProjectFilesWatcher(); + } + } + catch (Exception e) + { + Debug.LogException(e); + } + } + + private static void ShowWarningOnUnexpectedScriptEditor(string path) + { + // Show warning, when Unity was started from Rider, but external editor is different https://github.com/JetBrains/resharper-unity/issues/1127 + var args = Environment.GetCommandLineArgs(); + var commandlineParser = new CommandLineParser(args); + if (commandlineParser.Options.ContainsKey("-riderPath")) + { + var originRiderPath = commandlineParser.Options["-riderPath"]; + var originRealPath = GetEditorRealPath(originRiderPath); + var originVersion = RiderPathLocator.GetBuildNumber(originRealPath); + var version = RiderPathLocator.GetBuildNumber(path); + if (originVersion != string.Empty && originVersion != version) + { + Debug.LogWarning("Unity was started by a version of Rider that is not the current default external editor. Advanced integration features cannot be enabled."); + Debug.Log($"Unity was started by Rider {originVersion}, but external editor is set to: {path}"); + } + } + } + + private static void InitProjectFilesWatcher() + { + var watcher = new FileSystemWatcher(); + watcher.Path = Directory.GetCurrentDirectory(); + watcher.NotifyFilter = NotifyFilters.LastWrite; //Watch for changes in LastWrite times + watcher.Filter = "*.*"; + + // Add event handlers. + watcher.Changed += OnChanged; + watcher.Created += OnChanged; + + watcher.EnableRaisingEvents = true; // Begin watching. + + AppDomain.CurrentDomain.DomainUnload += (EventHandler) ((_, __) => + { + watcher.Dispose(); + }); + } + + private static void OnChanged(object sender, FileSystemEventArgs e) + { + var extension = Path.GetExtension(e.FullPath); + if (extension == ".sln" || extension == ".csproj") + RiderScriptEditorData.instance.HasChanges = true; + } + + internal static string GetEditorRealPath(string path) + { + if (string.IsNullOrEmpty(path)) + { + return path; + } + + if (!FileSystemUtil.EditorPathExists(path)) + return path; + + if (SystemInfo.operatingSystemFamily != OperatingSystemFamily.Windows) + { + var realPath = FileSystemUtil.GetFinalPathName(path); + + // case of snap installation + if (SystemInfo.operatingSystemFamily == OperatingSystemFamily.Linux) + { + if (new FileInfo(path).Name.ToLowerInvariant() == "rider" && + new FileInfo(realPath).Name.ToLowerInvariant() == "snap") + { + var snapInstallPath = "/snap/rider/current/bin/rider.sh"; + if (new FileInfo(snapInstallPath).Exists) + return snapInstallPath; + } + } + + // in case of symlink + return realPath; + } + + return path; + } + + const string unity_generate_all = "unity_generate_all_csproj"; + + public RiderScriptEditor(IDiscovery discovery, IGenerator projectGeneration) + { + m_Discoverability = discovery; + m_ProjectGeneration = projectGeneration; + } + + private static string[] defaultExtensions + { + get + { + var customExtensions = new[] {"json", "asmdef", "log", "xaml"}; + return EditorSettings.projectGenerationBuiltinExtensions.Concat(EditorSettings.projectGenerationUserExtensions) + .Concat(customExtensions).Distinct().ToArray(); + } + } + + private static string[] HandledExtensions + { + get + { + return HandledExtensionsString.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries).Select(s => s.TrimStart('.', '*')) + .ToArray(); + } + } + + private static string HandledExtensionsString + { + get { return EditorPrefs.GetString("Rider_UserExtensions", string.Join(";", defaultExtensions));} + set { EditorPrefs.SetString("Rider_UserExtensions", value); } + } + + private static bool SupportsExtension(string path) + { + var extension = Path.GetExtension(path); + if (string.IsNullOrEmpty(extension)) + return false; + return HandledExtensions.Contains(extension.TrimStart('.')); + } + + public void OnGUI() + { + var prevGenerate = EditorPrefs.GetBool(unity_generate_all, false); + var generateAll = EditorGUILayout.Toggle("Generate all .csproj files.", prevGenerate); + if (generateAll != prevGenerate) + { + EditorPrefs.SetBool(unity_generate_all, generateAll); + } + + m_ProjectGeneration.GenerateAll(generateAll); + + if (RiderScriptEditorData.instance.shouldLoadEditorPlugin) + { + HandledExtensionsString = EditorGUILayout.TextField(new GUIContent("Extensions handled: "), HandledExtensionsString); + } + } + + public void SyncIfNeeded(string[] addedFiles, string[] deletedFiles, string[] movedFiles, string[] movedFromFiles, + string[] importedFiles) + { + m_ProjectGeneration.SyncIfNeeded(addedFiles.Union(deletedFiles).Union(movedFiles).Union(movedFromFiles), + importedFiles); + } + + public void SyncAll() + { + AssetDatabase.Refresh(); + if (RiderScriptEditorData.instance.HasChanges) + { + m_ProjectGeneration.Sync(); + RiderScriptEditorData.instance.HasChanges = false; + } + } + + public void Initialize(string editorInstallationPath) // is called each time ExternalEditor is changed + { + RiderScriptEditorData.instance.Invalidate(editorInstallationPath); + m_ProjectGeneration.Sync(); // regenerate csproj and sln for new editor + } + + public bool OpenProject(string path, int line, int column) + { + if (path != "" && !SupportsExtension(path)) // Assets - Open C# Project passes empty path here + { + return false; + } + + if (path == "" && SystemInfo.operatingSystemFamily == OperatingSystemFamily.MacOSX) + { + // there is a bug in DllImplementation - use package implementation here instead https://github.cds.internal.unity3d.com/unity/com.unity.ide.rider/issues/21 + return OpenOSXApp(path, line, column); + } + + if (!IsUnityScript(path)) + { + var fastOpenResult = EditorPluginInterop.OpenFileDllImplementation(path, line, column); + if (fastOpenResult) + return true; + } + + if (SystemInfo.operatingSystemFamily == OperatingSystemFamily.MacOSX) + { + return OpenOSXApp(path, line, column); + } + + var solution = GetSolutionFile(path); // TODO: If solution file doesn't exist resync. + solution = solution == "" ? "" : $"\"{solution}\""; + var process = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = CodeEditor.CurrentEditorInstallation, + Arguments = $"{solution} -l {line} \"{path}\"", + UseShellExecute = true, + } + }; + + process.Start(); + + return true; + } + + private bool OpenOSXApp(string path, int line, int column) + { + var solution = GetSolutionFile(path); // TODO: If solution file doesn't exist resync. + solution = solution == "" ? "" : $"\"{solution}\""; + var pathArguments = path == "" ? "" : $"-l {line} \"{path}\""; + var process = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = "open", + Arguments = $"-n \"{CodeEditor.CurrentEditorInstallation}\" --args {solution} {pathArguments}", + CreateNoWindow = true, + UseShellExecute = true, + } + }; + + process.Start(); + + return true; + } + + private string GetSolutionFile(string path) + { + if (IsUnityScript(path)) + { + return Path.Combine(GetBaseUnityDeveloperFolder(), "Projects/CSharp/Unity.CSharpProjects.gen.sln"); + } + + var solutionFile = m_ProjectGeneration.SolutionFile(); + if (File.Exists(solutionFile)) + { + return solutionFile; + } + + return ""; + } + + static bool IsUnityScript(string path) + { + if (UnityEditor.Unsupported.IsDeveloperBuild()) + { + var baseFolder = GetBaseUnityDeveloperFolder().Replace("\\", "/"); + var lowerPath = path.ToLowerInvariant().Replace("\\", "/"); + + if (lowerPath.Contains((baseFolder + "/Runtime").ToLowerInvariant()) + || lowerPath.Contains((baseFolder + "/Editor").ToLowerInvariant())) + { + return true; + } + } + + return false; + } + + static string GetBaseUnityDeveloperFolder() + { + return Directory.GetParent(EditorApplication.applicationPath).Parent.Parent.FullName; + } + + public bool TryGetInstallationForPath(string editorPath, out CodeEditor.Installation installation) + { + if (FileSystemUtil.EditorPathExists(editorPath) && IsRiderInstallation(editorPath)) + { + var info = new RiderPathLocator.RiderInfo(editorPath, false); + installation = new CodeEditor.Installation + { + Name = info.Presentation, + Path = info.Path + }; + return true; + } + + installation = default; + return false; + } + + public static bool IsRiderInstallation(string path) + { + if (IsAssetImportWorkerProcess()) + return false; + + if (string.IsNullOrEmpty(path)) + { + return false; + } + + var fileInfo = new FileInfo(path); + var filename = fileInfo.Name.ToLowerInvariant(); + return filename.StartsWith("rider", StringComparison.Ordinal); + } + + private static bool IsAssetImportWorkerProcess() + { +#if UNITY_2019_3_OR_NEWER + return UnityEditor.Experimental.AssetDatabaseExperimental.IsAssetImportWorkerProcess(); +#else + return false; +#endif + } + + public static string CurrentEditor // works fast, doesn't validate if executable really exists + => EditorPrefs.GetString("kScriptsDefaultApp"); + + public CodeEditor.Installation[] Installations => m_Discoverability.PathCallback(); + + public void CreateSolutionIfDoesntExist() + { + if (!m_ProjectGeneration.HasSolutionBeenGenerated()) + { + m_ProjectGeneration.Sync(); + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditor.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditor.cs.meta new file mode 100644 index 0000000..1676483 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4095d72f77fbb64ea39b8b3ca246622 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditorData.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditorData.cs new file mode 100644 index 0000000..f75ed0d --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditorData.cs @@ -0,0 +1,29 @@ +using System; +using UnityEditor; +using UnityEngine; + +namespace Packages.Rider.Editor +{ + public class RiderScriptEditorData : ScriptableSingleton + { + [SerializeField] internal bool HasChanges = true; // sln/csproj files were changed + [SerializeField] internal bool shouldLoadEditorPlugin; + [SerializeField] internal bool InitializedOnce; + [SerializeField] internal string currentEditorVersion; + + public void Init() + { + if (string.IsNullOrEmpty(currentEditorVersion)) + Invalidate(RiderScriptEditor.CurrentEditor); + } + + public void Invalidate(string editorInstallationPath) + { + currentEditorVersion = RiderPathLocator.GetBuildNumber(editorInstallationPath); + if (!Version.TryParse(currentEditorVersion, out var version)) + shouldLoadEditorPlugin = false; + + shouldLoadEditorPlugin = version >= new Version("191.7141.156"); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditorData.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditorData.cs.meta new file mode 100644 index 0000000..21a5abc --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditorData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f079e3afd077fb94fa2bda74d6409499 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting.meta new file mode 100644 index 0000000..f6e86c9 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a52391bc44c477f40a547ed4ef3b9560 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackData.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackData.cs new file mode 100644 index 0000000..01573fa --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackData.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEditor; + +namespace Packages.Rider.Editor.UnitTesting +{ + public class CallbackData : ScriptableSingleton + { + public bool isRider; + + [UsedImplicitly] public static event EventHandler Changed = (sender, args) => { }; + + internal void RaiseChangedEvent() + { + Changed(null, EventArgs.Empty); + } + + public List events = new List(); + + [UsedImplicitly] + public void Clear() + { + events.Clear(); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackData.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackData.cs.meta new file mode 100644 index 0000000..ce32722 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 010246a07de7cb34185a2a7b1c1fad59 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackInitializer.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackInitializer.cs new file mode 100644 index 0000000..10d528b --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackInitializer.cs @@ -0,0 +1,18 @@ +#if TEST_FRAMEWORK +using UnityEditor; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace Packages.Rider.Editor.UnitTesting +{ + [InitializeOnLoad] + internal static class CallbackInitializer + { + static CallbackInitializer() + { + if (CallbackData.instance.isRider) + ScriptableObject.CreateInstance().RegisterCallbacks(ScriptableObject.CreateInstance(), 0); + } + } +} +#endif \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackInitializer.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackInitializer.cs.meta new file mode 100644 index 0000000..d47c38c --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/CallbackInitializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa1c6b1a353ab464782fc1e7c051eb02 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/RiderTestRunner.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/RiderTestRunner.cs new file mode 100644 index 0000000..e08c346 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/RiderTestRunner.cs @@ -0,0 +1,47 @@ +using JetBrains.Annotations; +using UnityEngine; +#if TEST_FRAMEWORK +using UnityEditor; +using UnityEditor.TestTools.TestRunner.Api; +#endif + +namespace Packages.Rider.Editor.UnitTesting +{ + public static class RiderTestRunner + { +#if TEST_FRAMEWORK + private static readonly TestsCallback Callback = ScriptableObject.CreateInstance(); +#endif + [UsedImplicitly] + public static void RunTests(int testMode, string[] assemblyNames, string[] testNames, string[] categoryNames, string[] groupNames, int? buildTarget) + { +#if !TEST_FRAMEWORK + Debug.LogError("Update Test Framework package to v.1.1.1+ to run tests from Rider."); +#else + CallbackData.instance.isRider = true; + + var api = ScriptableObject.CreateInstance(); + var settings = new ExecutionSettings(); + var filter = new Filter + { + assemblyNames = assemblyNames, + testNames = testNames, + categoryNames = categoryNames, + groupNames = groupNames, + targetPlatform = (BuildTarget?) buildTarget + }; + + if (testMode > 0) // for future use - test-framework would allow running both Edit and Play test at once + filter.testMode = (TestMode) testMode; + + settings.filters = new []{ + filter + }; + api.Execute(settings); + + api.UnregisterCallbacks(Callback); // avoid multiple registrations + api.RegisterCallbacks(Callback); // This can be used to receive information about when the test suite and individual tests starts and stops. Provide this with a scriptable object implementing ICallbacks +#endif + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/RiderTestRunner.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/RiderTestRunner.cs.meta new file mode 100644 index 0000000..6ef5313 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/RiderTestRunner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c3b27069cb3ddf42ba1260eeefcdd1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestEvent.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestEvent.cs new file mode 100644 index 0000000..ce2e1b7 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestEvent.cs @@ -0,0 +1,31 @@ +using System; +using NUnit.Framework.Interfaces; + +namespace Packages.Rider.Editor.UnitTesting +{ + [Serializable] + public enum EventType { TestStarted, TestFinished, RunFinished } + + [Serializable] + public class TestEvent + { + public EventType type; + public string id; + public string assemblyName; + public string output; + public TestStatus testStatus; + public double duration; + public string parentId; + + public TestEvent(EventType type, string id, string assemblyName, string output, double duration, TestStatus testStatus, string parentID) + { + this.type = type; + this.id = id; + this.assemblyName = assemblyName; + this.output = output; + this.testStatus = testStatus; + this.duration = duration; + parentId = parentID; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestEvent.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestEvent.cs.meta new file mode 100644 index 0000000..7ec7c71 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestEvent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9413c47b3a14a64e8810ce76d1a6032 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestsCallback.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestsCallback.cs new file mode 100644 index 0000000..9995050 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestsCallback.cs @@ -0,0 +1,83 @@ +#if TEST_FRAMEWORK +using System; +using System.Text; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace Packages.Rider.Editor.UnitTesting +{ + public class TestsCallback : ScriptableObject, ICallbacks + { + public void RunFinished(ITestResultAdaptor result) + { + CallbackData.instance.isRider = false; + + CallbackData.instance.events.Add( + new TestEvent(EventType.RunFinished, "", "","", 0, ParseTestStatus(result.TestStatus), "")); + CallbackData.instance.RaiseChangedEvent(); + } + + public void TestStarted(ITestAdaptor result) + { + if (result.Method == null) return; + + CallbackData.instance.events.Add( + new TestEvent(EventType.TestStarted, GetUniqueName(result), result.Method.TypeInfo.Assembly.GetName().Name, "", 0, ParseTestStatus(TestStatus.Passed), result.ParentFullName)); + CallbackData.instance.RaiseChangedEvent(); + } + + public void TestFinished(ITestResultAdaptor result) + { + if (result.Test.Method == null) return; + + CallbackData.instance.events.Add( + new TestEvent(EventType.TestFinished, GetUniqueName(result.Test), result.Test.Method.TypeInfo.Assembly.GetName().Name, ExtractOutput(result), result.Duration, ParseTestStatus(result.TestStatus), result.Test.ParentFullName)); + CallbackData.instance.RaiseChangedEvent(); + } + + // todo: reimplement JetBrains.Rider.Unity.Editor.AfterUnity56.UnitTesting.TestEventsSender.GetUniqueName + private static string GetUniqueName(ITestAdaptor test) + { + string str = test.FullName; + return str; + } + + public void RunStarted(ITestAdaptor testsToRun) + { + } + + private static NUnit.Framework.Interfaces.TestStatus ParseTestStatus(TestStatus testStatus) + { + return (NUnit.Framework.Interfaces.TestStatus)Enum.Parse(typeof(NUnit.Framework.Interfaces.TestStatus), testStatus.ToString()); + } + + private static string ExtractOutput(ITestResultAdaptor testResult) + { + var stringBuilder = new StringBuilder(); + if (testResult.Message != null) + { + stringBuilder.AppendLine("Message: "); + stringBuilder.AppendLine(testResult.Message); + } + + if (!string.IsNullOrEmpty(testResult.Output)) + { + stringBuilder.AppendLine("Output: "); + stringBuilder.AppendLine(testResult.Output); + } + + if (!string.IsNullOrEmpty(testResult.StackTrace)) + { + stringBuilder.AppendLine("Stacktrace: "); + stringBuilder.AppendLine(testResult.StackTrace); + } + + var result = stringBuilder.ToString(); + if (result.Length > 0) + return result; + + return testResult.Output ?? string.Empty; + } + } +} +#endif \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestsCallback.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestsCallback.cs.meta new file mode 100644 index 0000000..068cba1 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/UnitTesting/TestsCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58aa570dbe0761f43b25ff6c2265bbe2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util.meta new file mode 100644 index 0000000..d7ba88e --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e726086cd652f82087d59d67d2c24cd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/CommandLineParser.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/CommandLineParser.cs new file mode 100644 index 0000000..c41490a --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/CommandLineParser.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; + +namespace Packages.Rider.Editor.Util +{ + public class CommandLineParser + { + public Dictionary Options = new Dictionary(); + + public CommandLineParser(string[] args) + { + var i = 0; + while (i < args.Length) + { + var arg = args[i]; + if (!arg.StartsWith("-")) + { + i++; + continue; + } + + string value = null; + if (i + 1 < args.Length && !args[i + 1].StartsWith("-")) + { + value = args[i + 1]; + i++; + } + + if (!(Options.ContainsKey(arg))) + { + Options.Add(arg, value); + } + i++; + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/CommandLineParser.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/CommandLineParser.cs.meta new file mode 100644 index 0000000..536d707 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/CommandLineParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 154ace4bd16de9f4e84052ac257786d6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/FileSystemUtil.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/FileSystemUtil.cs new file mode 100644 index 0000000..f558aca --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/FileSystemUtil.cs @@ -0,0 +1,66 @@ +using System; +using System.ComponentModel; +using System.IO; +using System.Text; +using JetBrains.Annotations; +using UnityEngine; + +namespace Packages.Rider.Editor.Util +{ + public static class FileSystemUtil + { + [NotNull] + public static string GetFinalPathName([NotNull] string path) + { + if (path == null) throw new ArgumentNullException("path"); + + // up to MAX_PATH. MAX_PATH on Linux currently 4096, on Mac OS X 1024 + // doc: http://man7.org/linux/man-pages/man3/realpath.3.html + var sb = new StringBuilder(8192); + var result = LibcNativeInterop.realpath(path, sb); + if (result == IntPtr.Zero) + { + throw new Win32Exception($"{path} was not resolved."); + } + + return new FileInfo(sb.ToString()).FullName; + } + + public static string FileNameWithoutExtension(string path) + { + if (string.IsNullOrEmpty(path)) + { + return ""; + } + + var indexOfDot = -1; + var indexOfSlash = 0; + for (var i = path.Length - 1; i >= 0; i--) + { + if (indexOfDot == -1 && path[i] == '.') + { + indexOfDot = i; + } + + if (indexOfSlash == 0 && path[i] == '/' || path[i] == '\\') + { + indexOfSlash = i + 1; + break; + } + } + + if (indexOfDot == -1) + { + indexOfDot = path.Length; + } + + return path.Substring(indexOfSlash, indexOfDot - indexOfSlash); + } + + public static bool EditorPathExists(string editorPath) + { + return SystemInfo.operatingSystemFamily == OperatingSystemFamily.MacOSX && new DirectoryInfo(editorPath).Exists + || SystemInfo.operatingSystemFamily != OperatingSystemFamily.MacOSX && new FileInfo(editorPath).Exists; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/FileSystemUtil.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/FileSystemUtil.cs.meta new file mode 100644 index 0000000..ebc001b --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/FileSystemUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bdbd564a9fdad0b738e76d030cad1204 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/LibcNativeInterop.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/LibcNativeInterop.cs new file mode 100644 index 0000000..a4070f2 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/LibcNativeInterop.cs @@ -0,0 +1,12 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; + +namespace Packages.Rider.Editor.Util +{ + internal static class LibcNativeInterop + { + [DllImport("libc", SetLastError = true)] + public static extern IntPtr realpath(string path, StringBuilder resolved_path); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/LibcNativeInterop.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/LibcNativeInterop.cs.meta new file mode 100644 index 0000000..fe70ee0 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/LibcNativeInterop.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 071c17858dc6c47ada7b2a1f1ded5402 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/RiderMenu.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/RiderMenu.cs new file mode 100644 index 0000000..63acff6 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/RiderMenu.cs @@ -0,0 +1,25 @@ +using JetBrains.Annotations; +using Packages.Rider.Editor; +using Unity.CodeEditor; + +// Is called via commandline from Rider Notification after checking out from source control. + +// ReSharper disable once CheckNamespace +namespace JetBrains.Rider.Unity.Editor +{ + public static class RiderMenu + { + [UsedImplicitly] + public static void MenuOpenProject() + { + if (RiderScriptEditor.IsRiderInstallation(RiderScriptEditor.CurrentEditor)) + { + // Force the project files to be sync + CodeEditor.CurrentEditor.SyncAll(); + + // Load Project + CodeEditor.CurrentEditor.OpenProject(); + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/RiderMenu.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/RiderMenu.cs.meta new file mode 100644 index 0000000..b78dfae --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/RiderMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8860c53ca4073d4f92c403e709c12ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/UnityUtils.cs b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/UnityUtils.cs new file mode 100644 index 0000000..03c9922 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/UnityUtils.cs @@ -0,0 +1,20 @@ +using System; +using System.Linq; +using UnityEngine; + +namespace Packages.Rider.Editor.Util +{ + public static class UnityUtils + { + internal static readonly string UnityApplicationVersion = Application.unityVersion; + + public static Version UnityVersion + { + get + { + var ver = UnityApplicationVersion.Split(".".ToCharArray()).Take(2).Aggregate((a, b) => a + "." + b); + return new Version(ver); + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/UnityUtils.cs.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/UnityUtils.cs.meta new file mode 100644 index 0000000..9a4e6fe --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/Util/UnityUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ec9edad2de6c4df3a146b543a0fbc4c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/com.unity.ide.rider.asmdef b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/com.unity.ide.rider.asmdef new file mode 100644 index 0000000..4caebc4 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/com.unity.ide.rider.asmdef @@ -0,0 +1,22 @@ +{ + "name": "Unity.Rider.Editor", + "references": [ + "GUID:0acc523941302664db1f4e527237feb3" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.test-framework", + "expression": "1.1.1", + "define": "TEST_FRAMEWORK" + } + ] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/com.unity.ide.rider.asmdef.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/com.unity.ide.rider.asmdef.meta new file mode 100644 index 0000000..7a89700 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/com.unity.ide.rider.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d528c8c98d269ca44a06cd9624a03945 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/package.json b/Library/PackageCache/com.unity.ide.rider@1.1.4/package.json new file mode 100644 index 0000000..eb7d7d5 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/package.json @@ -0,0 +1,19 @@ +{ + "name": "com.unity.ide.rider", + "displayName": "Rider Editor", + "description": "Code editor integration for supporting Rider as code editor for unity. Adds support for generating csproj files for code completion, auto discovery of installations, etc.", + "version": "1.1.4", + "unity": "2019.2", + "unityRelease": "0a12", + "dependencies": { + "com.unity.test-framework": "1.1.1" + }, + "relatedPackages": { + "com.unity.ide.rider.tests": "1.1.4" + }, + "repository": { + "type": "git", + "url": "git@github.cds.internal.unity3d.com:unity/com.unity.ide.rider.git", + "revision": "d2ef95989104a4ce866cdcb7f94cf3c67476fcc9" + } +} diff --git a/Library/PackageCache/com.unity.ide.rider@1.1.4/package.json.meta b/Library/PackageCache/com.unity.ide.rider@1.1.4/package.json.meta new file mode 100644 index 0000000..11bcd7b --- /dev/null +++ b/Library/PackageCache/com.unity.ide.rider@1.1.4/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 66c95bb3c74257f41bae2622511dc02d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/CHANGELOG.md b/Library/PackageCache/com.unity.ide.vscode@1.2.2/CHANGELOG.md new file mode 100644 index 0000000..9827f20 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/CHANGELOG.md @@ -0,0 +1,74 @@ +# Code Editor Package for Visual Studio Code + +## [1.2.2] - 2020-09-04 + +VSC-14 - synchronize solution file when adding new assembly + + +## [1.2.1] - 2020-05-15 + +Source filtering adds support for asmref + + +## [1.2.0] - 2020-03-04 + +Do not reference projects that has not been generated (case 1211057) +Only open files that exists (case 1188394) +Add individual toggle buttons for generating csprojects for packages +Add support for Roslyn analyzers in project generation through csc.rsp and compiled assembly references +Remove Release build target from csproj and sln + + +## [1.1.4] - 2020-01-02 + +Delta project generation, only recompute the csproj files whose script modified. + + +## [1.1.3] - 2019-10-22 + +Exe version of vscode will use Normal ProcessWindowStyle while cmd will use Hidden + + +## [1.1.2] - 2019-08-30 + +Fixing OSX open command arguments + + +## [1.1.1] - 2019-08-19 + +Support for Player Project. Generates specific csproj files containing files, reference, defines, +etc. that will show how the assembly will be compiled for a target platform. + + +## [1.1.0] - 2019-08-07 + +Adds support for choosing extensions to be opened with VSCode. This can be done through the GUI in Preferences. +Avoids opening all extensions after the change in core unity. + + +## [1.0.7] - 2019-05-15 + +Fix various OSX specific issues. +Generate project on load if they are not generated. +Fix path recognition. + + +## [1.0.6] - 2019-04-30 + +Ensure asset database is refreshed when generating csproj and solution files. + +## [1.0.5] - 2019-04-27 + +Add support for generating all csproj files. + +## [1.0.4] - 2019-04-18 + +Fix relative package paths. +Fix opening editor on mac. +Add %LOCALAPPDATA%/Programs to the path of install paths. + +## [1.0.3] - 2019-01-01 + +### This is the first release of *Unity Package vscode_editor*. + +Using the newly created api to integrate Visual Studio Code with Unity. diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/CHANGELOG.md.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/CHANGELOG.md.meta new file mode 100644 index 0000000..65aea0b --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4ddcdc3816429494a8bea67e973875f7 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/CONTRIBUTING.md b/Library/PackageCache/com.unity.ide.vscode@1.2.2/CONTRIBUTING.md new file mode 100644 index 0000000..576d096 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/CONTRIBUTING.md @@ -0,0 +1,6 @@ +# Contributing + +## All contributions are subject to the [Unity Contribution Agreement(UCA)](https://unity3d.com/legal/licenses/Unity_Contribution_Agreement) +By making a pull request, you are confirming agreement to the terms and conditions of the UCA, including that your Contributions are your original creation and that you have complete right and authority to make your Contributions. + +## Once you have a change ready following these ground rules. Simply make a pull request \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/CONTRIBUTING.md.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/CONTRIBUTING.md.meta new file mode 100644 index 0000000..31e836f --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/CONTRIBUTING.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fcb9be00baf924c4183fc0313e6185c5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Documentation~/README.md b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Documentation~/README.md new file mode 100644 index 0000000..d0a565f --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Documentation~/README.md @@ -0,0 +1,4 @@ +# Code Editor Package for Visual Studio Code + +This package is not intended to be modified by users. +Nor does it provide any api intended to be included in user projects. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor.meta new file mode 100644 index 0000000..568fa03 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58628227479c34542ac8c5193ccced84 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration.meta new file mode 100644 index 0000000..48ed36c --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c779d3735d950f341ba35154e8b3234b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/AssemblyNameProvider.cs b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/AssemblyNameProvider.cs new file mode 100644 index 0000000..c442d87 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/AssemblyNameProvider.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEditor.Compilation; +using UnityEditor.PackageManager; + +namespace VSCodeEditor +{ + public interface IAssemblyNameProvider + { + string[] ProjectSupportedExtensions { get; } + ProjectGenerationFlag ProjectGenerationFlag { get; } + string GetAssemblyNameFromScriptPath(string path); + IEnumerable GetAssemblies(Func shouldFileBePartOfSolution); + IEnumerable GetAllAssetPaths(); + IEnumerable GetRoslynAnalyzerPaths(); + UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath); + ResponseFileData ParseResponseFile(string responseFilePath, string projectDirectory, string[] systemReferenceDirectories); + bool IsInternalizedPackagePath(string path); + void ToggleProjectGeneration(ProjectGenerationFlag preference); + } + + internal class AssemblyNameProvider : IAssemblyNameProvider + { + ProjectGenerationFlag m_ProjectGenerationFlag = (ProjectGenerationFlag)EditorPrefs.GetInt("unity_project_generation_flag", 0); + + public string[] ProjectSupportedExtensions => EditorSettings.projectGenerationUserExtensions; + + public ProjectGenerationFlag ProjectGenerationFlag + { + get => m_ProjectGenerationFlag; + private set + { + EditorPrefs.SetInt("unity_project_generation_flag", (int)value); + m_ProjectGenerationFlag = value; + } + } + + public string GetAssemblyNameFromScriptPath(string path) + { + return CompilationPipeline.GetAssemblyNameFromScriptPath(path); + } + + public IEnumerable GetAssemblies(Func shouldFileBePartOfSolution) + { + return CompilationPipeline.GetAssemblies() + .Where(i => 0 < i.sourceFiles.Length && i.sourceFiles.Any(shouldFileBePartOfSolution)); + } + + public IEnumerable GetAllAssetPaths() + { + return AssetDatabase.GetAllAssetPaths(); + } + + public UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath) + { + return UnityEditor.PackageManager.PackageInfo.FindForAssetPath(assetPath); + } + + public ResponseFileData ParseResponseFile(string responseFilePath, string projectDirectory, string[] systemReferenceDirectories) + { + return CompilationPipeline.ParseResponseFile( + responseFilePath, + projectDirectory, + systemReferenceDirectories + ); + } + + public bool IsInternalizedPackagePath(string path) + { + if (string.IsNullOrWhiteSpace(path)) + { + return false; + } + var packageInfo = FindForAssetPath(path); + if (packageInfo == null) + { + return false; + } + var packageSource = packageInfo.source; + switch (packageSource) + { + case PackageSource.Embedded: + return !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Embedded); + case PackageSource.Registry: + return !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Registry); + case PackageSource.BuiltIn: + return !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.BuiltIn); + case PackageSource.Unknown: + return !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Unknown); + case PackageSource.Local: + return !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Local); + case PackageSource.Git: + return !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Git); +#if UNITY_2019_3_OR_NEWER + case PackageSource.LocalTarball: + return !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.LocalTarBall); +#endif + } + + return false; + } + + public void ToggleProjectGeneration(ProjectGenerationFlag preference) + { + if (ProjectGenerationFlag.HasFlag(preference)) + { + ProjectGenerationFlag ^= preference; + } + else + { + ProjectGenerationFlag |= preference; + } + } + + public IEnumerable GetRoslynAnalyzerPaths() + { + return PluginImporter.GetAllImporters() + .Where(i => !i.isNativePlugin && AssetDatabase.GetLabels(i).SingleOrDefault(l => l == "RoslynAnalyzer") != null) + .Select(i => i.assetPath); + } + } +} diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/AssemblyNameProvider.cs.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/AssemblyNameProvider.cs.meta new file mode 100644 index 0000000..a8ae38b --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/AssemblyNameProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d93ffb668978f7488211a331977b73b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/FileIO.cs b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/FileIO.cs new file mode 100644 index 0000000..aeff22e --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/FileIO.cs @@ -0,0 +1,38 @@ +using System.IO; +using System.Text; + +namespace VSCodeEditor +{ + public interface IFileIO + { + bool Exists(string fileName); + + string ReadAllText(string fileName); + void WriteAllText(string fileName, string content); + + void CreateDirectory(string pathName); + } + + class FileIOProvider : IFileIO + { + public bool Exists(string fileName) + { + return File.Exists(fileName); + } + + public string ReadAllText(string fileName) + { + return File.ReadAllText(fileName); + } + + public void WriteAllText(string fileName, string content) + { + File.WriteAllText(fileName, content, Encoding.UTF8); + } + + public void CreateDirectory(string pathName) + { + Directory.CreateDirectory(pathName); + } + } +} diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/FileIO.cs.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/FileIO.cs.meta new file mode 100644 index 0000000..91d8212 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/FileIO.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb221cf55b3544646b0c3b6bc790080f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/GUIDGenerator.cs b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/GUIDGenerator.cs new file mode 100644 index 0000000..0654966 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/GUIDGenerator.cs @@ -0,0 +1,21 @@ +namespace VSCodeEditor +{ + public interface IGUIDGenerator + { + string ProjectGuid(string projectName, string assemblyName); + string SolutionGuid(string projectName, string extension); + } + + class GUIDProvider : IGUIDGenerator + { + public string ProjectGuid(string projectName, string assemblyName) + { + return SolutionGuidGenerator.GuidForProject(projectName + assemblyName); + } + + public string SolutionGuid(string projectName, string extension) + { + return SolutionGuidGenerator.GuidForSolution(projectName, extension); // GetExtensionOfSourceFiles(assembly.sourceFiles) + } + } +} diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/GUIDGenerator.cs.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/GUIDGenerator.cs.meta new file mode 100644 index 0000000..9ce342e --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/GUIDGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e58bd3cca6475e54b93632bb6837aeea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGeneration.cs b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGeneration.cs new file mode 100644 index 0000000..b5cf363 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGeneration.cs @@ -0,0 +1,778 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Security; +using System.Security.Cryptography; +using System.Text; +using UnityEditor; +using UnityEditor.Compilation; +using UnityEngine; +using UnityEngine.Profiling; + +namespace VSCodeEditor +{ + public interface IGenerator + { + bool SyncIfNeeded(List affectedFiles, string[] reimportedFiles); + void Sync(); + string SolutionFile(); + string ProjectDirectory { get; } + IAssemblyNameProvider AssemblyNameProvider { get; } + void GenerateAll(bool generateAll); + bool SolutionExists(); + } + + public class ProjectGeneration : IGenerator + { + enum ScriptingLanguage + { + None, + CSharp + } + + public static readonly string MSBuildNamespaceUri = "http://schemas.microsoft.com/developer/msbuild/2003"; + + const string k_WindowsNewline = "\r\n"; + + const string k_SettingsJson = @"{ + ""files.exclude"": + { + ""**/.DS_Store"":true, + ""**/.git"":true, + ""**/.gitignore"":true, + ""**/.gitmodules"":true, + ""**/*.booproj"":true, + ""**/*.pidb"":true, + ""**/*.suo"":true, + ""**/*.user"":true, + ""**/*.userprefs"":true, + ""**/*.unityproj"":true, + ""**/*.dll"":true, + ""**/*.exe"":true, + ""**/*.pdf"":true, + ""**/*.mid"":true, + ""**/*.midi"":true, + ""**/*.wav"":true, + ""**/*.gif"":true, + ""**/*.ico"":true, + ""**/*.jpg"":true, + ""**/*.jpeg"":true, + ""**/*.png"":true, + ""**/*.psd"":true, + ""**/*.tga"":true, + ""**/*.tif"":true, + ""**/*.tiff"":true, + ""**/*.3ds"":true, + ""**/*.3DS"":true, + ""**/*.fbx"":true, + ""**/*.FBX"":true, + ""**/*.lxo"":true, + ""**/*.LXO"":true, + ""**/*.ma"":true, + ""**/*.MA"":true, + ""**/*.obj"":true, + ""**/*.OBJ"":true, + ""**/*.asset"":true, + ""**/*.cubemap"":true, + ""**/*.flare"":true, + ""**/*.mat"":true, + ""**/*.meta"":true, + ""**/*.prefab"":true, + ""**/*.unity"":true, + ""build/"":true, + ""Build/"":true, + ""Library/"":true, + ""library/"":true, + ""obj/"":true, + ""Obj/"":true, + ""ProjectSettings/"":true, + ""temp/"":true, + ""Temp/"":true + } +}"; + + /// + /// Map source extensions to ScriptingLanguages + /// + static readonly Dictionary k_BuiltinSupportedExtensions = new Dictionary + { + { "cs", ScriptingLanguage.CSharp }, + { "uxml", ScriptingLanguage.None }, + { "uss", ScriptingLanguage.None }, + { "shader", ScriptingLanguage.None }, + { "compute", ScriptingLanguage.None }, + { "cginc", ScriptingLanguage.None }, + { "hlsl", ScriptingLanguage.None }, + { "glslinc", ScriptingLanguage.None }, + { "template", ScriptingLanguage.None }, + { "raytrace", ScriptingLanguage.None } + }; + + string m_SolutionProjectEntryTemplate = string.Join("\r\n", @"Project(""{{{0}}}"") = ""{1}"", ""{2}"", ""{{{3}}}""", @"EndProject").Replace(" ", "\t"); + + string m_SolutionProjectConfigurationTemplate = string.Join("\r\n", @" {{{0}}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU", @" {{{0}}}.Debug|Any CPU.Build.0 = Debug|Any CPU").Replace(" ", "\t"); + + static readonly string[] k_ReimportSyncExtensions = { ".dll", ".asmdef" }; + + string[] m_ProjectSupportedExtensions = new string[0]; + public string ProjectDirectory { get; } + IAssemblyNameProvider IGenerator.AssemblyNameProvider => m_AssemblyNameProvider; + + public void GenerateAll(bool generateAll) + { + m_AssemblyNameProvider.ToggleProjectGeneration( + ProjectGenerationFlag.BuiltIn + | ProjectGenerationFlag.Embedded + | ProjectGenerationFlag.Git + | ProjectGenerationFlag.Local +#if UNITY_2019_3_OR_NEWER + | ProjectGenerationFlag.LocalTarBall +#endif + | ProjectGenerationFlag.PlayerAssemblies + | ProjectGenerationFlag.Registry + | ProjectGenerationFlag.Unknown); + } + + readonly string m_ProjectName; + readonly IAssemblyNameProvider m_AssemblyNameProvider; + readonly IFileIO m_FileIOProvider; + readonly IGUIDGenerator m_GUIDProvider; + + const string k_ToolsVersion = "4.0"; + const string k_ProductVersion = "10.0.20506"; + const string k_BaseDirectory = "."; + const string k_TargetFrameworkVersion = "v4.7.1"; + const string k_TargetLanguageVersion = "latest"; + + public ProjectGeneration(string tempDirectory) + : this(tempDirectory, new AssemblyNameProvider(), new FileIOProvider(), new GUIDProvider()) { } + + public ProjectGeneration(string tempDirectory, IAssemblyNameProvider assemblyNameProvider, IFileIO fileIO, IGUIDGenerator guidGenerator) + { + ProjectDirectory = tempDirectory.Replace('\\', '/'); + m_ProjectName = Path.GetFileName(ProjectDirectory); + m_AssemblyNameProvider = assemblyNameProvider; + m_FileIOProvider = fileIO; + m_GUIDProvider = guidGenerator; + } + + /// + /// Syncs the scripting solution if any affected files are relevant. + /// + /// + /// Whether the solution was synced. + /// + /// + /// A set of files whose status has changed + /// + /// + /// A set of files that got reimported + /// + public bool SyncIfNeeded(List affectedFiles, string[] reimportedFiles) + { + Profiler.BeginSample("SolutionSynchronizerSync"); + SetupProjectSupportedExtensions(); + + // Don't sync if we haven't synced before + if (SolutionExists() && HasFilesBeenModified(affectedFiles, reimportedFiles)) + { + var assemblies = m_AssemblyNameProvider.GetAssemblies(ShouldFileBePartOfSolution); + var allProjectAssemblies = RelevantAssembliesForMode(assemblies).ToList(); + SyncSolution(allProjectAssemblies); + + var allAssetProjectParts = GenerateAllAssetProjectParts(); + + var affectedNames = affectedFiles.Select(asset => m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset)).Where(name => !string.IsNullOrWhiteSpace(name)).Select(name => name.Split(new [] {".dll"}, StringSplitOptions.RemoveEmptyEntries)[0]); + var reimportedNames = reimportedFiles.Select(asset => m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset)).Where(name => !string.IsNullOrWhiteSpace(name)).Select(name => name.Split(new [] {".dll"}, StringSplitOptions.RemoveEmptyEntries)[0]); + var affectedAndReimported = new HashSet(affectedNames.Concat(reimportedNames)); + var assemblyNames = new HashSet(allProjectAssemblies.Select(assembly => Path.GetFileName(assembly.outputPath))); + + foreach (var assembly in allProjectAssemblies) + { + if (!affectedAndReimported.Contains(assembly.name)) + continue; + + SyncProject(assembly, allAssetProjectParts, ParseResponseFileData(assembly), assemblyNames); + } + + Profiler.EndSample(); + return true; + } + + Profiler.EndSample(); + return false; + } + + bool HasFilesBeenModified(List affectedFiles, string[] reimportedFiles) + { + return affectedFiles.Any(ShouldFileBePartOfSolution) || reimportedFiles.Any(ShouldSyncOnReimportedAsset); + } + + static bool ShouldSyncOnReimportedAsset(string asset) + { + return k_ReimportSyncExtensions.Contains(new FileInfo(asset).Extension); + } + + public void Sync() + { + SetupProjectSupportedExtensions(); + GenerateAndWriteSolutionAndProjects(); + } + + public bool SolutionExists() + { + return m_FileIOProvider.Exists(SolutionFile()); + } + + void SetupProjectSupportedExtensions() + { + m_ProjectSupportedExtensions = m_AssemblyNameProvider.ProjectSupportedExtensions; + } + + bool ShouldFileBePartOfSolution(string file) + { + // Exclude files coming from packages except if they are internalized. + if (m_AssemblyNameProvider.IsInternalizedPackagePath(file)) + { + return false; + } + + return HasValidExtension(file); + } + + bool HasValidExtension(string file) + { + string extension = Path.GetExtension(file); + + // Dll's are not scripts but still need to be included.. + if (extension == ".dll") + return true; + + if (file.ToLower().EndsWith(".asmdef")) + return true; + + return IsSupportedExtension(extension); + } + + bool IsSupportedExtension(string extension) + { + extension = extension.TrimStart('.'); + if (k_BuiltinSupportedExtensions.ContainsKey(extension)) + return true; + if (m_ProjectSupportedExtensions.Contains(extension)) + return true; + return false; + } + + static ScriptingLanguage ScriptingLanguageFor(Assembly assembly) + { + return ScriptingLanguageFor(GetExtensionOfSourceFiles(assembly.sourceFiles)); + } + + static string GetExtensionOfSourceFiles(string[] files) + { + return files.Length > 0 ? GetExtensionOfSourceFile(files[0]) : "NA"; + } + + static string GetExtensionOfSourceFile(string file) + { + var ext = Path.GetExtension(file).ToLower(); + ext = ext.Substring(1); //strip dot + return ext; + } + + static ScriptingLanguage ScriptingLanguageFor(string extension) + { + return k_BuiltinSupportedExtensions.TryGetValue(extension.TrimStart('.'), out var result) + ? result + : ScriptingLanguage.None; + } + + public void GenerateAndWriteSolutionAndProjects() + { + // Only synchronize assemblies that have associated source files and ones that we actually want in the project. + // This also filters out DLLs coming from .asmdef files in packages. + var assemblies = m_AssemblyNameProvider.GetAssemblies(ShouldFileBePartOfSolution); + + var allAssetProjectParts = GenerateAllAssetProjectParts(); + + SyncSolution(assemblies); + var allProjectAssemblies = RelevantAssembliesForMode(assemblies).ToList(); + var assemblyNames = new HashSet(allProjectAssemblies.Select(assembly => Path.GetFileName(assembly.outputPath))); + foreach (Assembly assembly in allProjectAssemblies) + { + var responseFileData = ParseResponseFileData(assembly); + SyncProject(assembly, allAssetProjectParts, responseFileData, assemblyNames); + } + + WriteVSCodeSettingsFiles(); + } + + List ParseResponseFileData(Assembly assembly) + { + var systemReferenceDirectories = CompilationPipeline.GetSystemAssemblyDirectories(assembly.compilerOptions.ApiCompatibilityLevel); + + Dictionary responseFilesData = assembly.compilerOptions.ResponseFiles.ToDictionary(x => x, x => m_AssemblyNameProvider.ParseResponseFile( + x, + ProjectDirectory, + systemReferenceDirectories + )); + + Dictionary responseFilesWithErrors = responseFilesData.Where(x => x.Value.Errors.Any()) + .ToDictionary(x => x.Key, x => x.Value); + + if (responseFilesWithErrors.Any()) + { + foreach (var error in responseFilesWithErrors) + foreach (var valueError in error.Value.Errors) + { + Debug.LogError($"{error.Key} Parse Error : {valueError}"); + } + } + + return responseFilesData.Select(x => x.Value).ToList(); + } + + Dictionary GenerateAllAssetProjectParts() + { + Dictionary stringBuilders = new Dictionary(); + + foreach (string asset in m_AssemblyNameProvider.GetAllAssetPaths()) + { + // Exclude files coming from packages except if they are internalized. + // TODO: We need assets from the assembly API + if (m_AssemblyNameProvider.IsInternalizedPackagePath(asset)) + { + continue; + } + + string extension = Path.GetExtension(asset); + if (IsSupportedExtension(extension) && ScriptingLanguage.None == ScriptingLanguageFor(extension)) + { + // Find assembly the asset belongs to by adding script extension and using compilation pipeline. + var assemblyName = m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset); + + if (string.IsNullOrEmpty(assemblyName)) + { + continue; + } + + assemblyName = Path.GetFileNameWithoutExtension(assemblyName); + + if (!stringBuilders.TryGetValue(assemblyName, out var projectBuilder)) + { + projectBuilder = new StringBuilder(); + stringBuilders[assemblyName] = projectBuilder; + } + + projectBuilder.Append(" ").Append(k_WindowsNewline); + } + } + + var result = new Dictionary(); + + foreach (var entry in stringBuilders) + result[entry.Key] = entry.Value.ToString(); + + return result; + } + + void SyncProject( + Assembly assembly, + Dictionary allAssetsProjectParts, + List responseFilesData, + HashSet assemblyNames) + { + SyncProjectFileIfNotChanged(ProjectFile(assembly), ProjectText(assembly, allAssetsProjectParts, responseFilesData, assemblyNames, GetAllRoslynAnalyzerPaths().ToArray())); + } + + private IEnumerable GetAllRoslynAnalyzerPaths() + { + return m_AssemblyNameProvider.GetRoslynAnalyzerPaths(); + } + + void SyncProjectFileIfNotChanged(string path, string newContents) + { + SyncFileIfNotChanged(path, newContents); + } + + void SyncSolutionFileIfNotChanged(string path, string newContents) + { + SyncFileIfNotChanged(path, newContents); + } + + void SyncFileIfNotChanged(string filename, string newContents) + { + if (m_FileIOProvider.Exists(filename)) + { + var currentContents = m_FileIOProvider.ReadAllText(filename); + + if (currentContents == newContents) + { + return; + } + } + + m_FileIOProvider.WriteAllText(filename, newContents); + } + + string ProjectText( + Assembly assembly, + Dictionary allAssetsProjectParts, + List responseFilesData, + HashSet assemblyNames, + string[] roslynAnalyzerDllPaths) + { + var projectBuilder = new StringBuilder(); + ProjectHeader(assembly, responseFilesData, roslynAnalyzerDllPaths, projectBuilder); + var references = new List(); + + foreach (string file in assembly.sourceFiles) + { + if (!HasValidExtension(file)) + continue; + + var extension = Path.GetExtension(file).ToLower(); + var fullFile = EscapedRelativePathFor(file); + if (".dll" != extension) + { + projectBuilder.Append(" ").Append(k_WindowsNewline); + } + else + { + references.Add(fullFile); + } + } + + // Append additional non-script files that should be included in project generation. + if (allAssetsProjectParts.TryGetValue(assembly.name, out var additionalAssetsForProject)) + projectBuilder.Append(additionalAssetsForProject); + + var responseRefs = responseFilesData.SelectMany(x => x.FullPathReferences.Select(r => r)); + var internalAssemblyReferences = assembly.assemblyReferences + .Where(i => !i.sourceFiles.Any(ShouldFileBePartOfSolution)).Select(i => i.outputPath); + var allReferences = + assembly.compiledAssemblyReferences + .Union(responseRefs) + .Union(references) + .Union(internalAssemblyReferences) + .Except(roslynAnalyzerDllPaths); + + foreach (var reference in allReferences) + { + string fullReference = Path.IsPathRooted(reference) ? reference : Path.Combine(ProjectDirectory, reference); + AppendReference(fullReference, projectBuilder); + } + + if (0 < assembly.assemblyReferences.Length) + { + projectBuilder.Append(" ").Append(k_WindowsNewline); + projectBuilder.Append(" ").Append(k_WindowsNewline); + foreach (Assembly reference in assembly.assemblyReferences.Where(i => i.sourceFiles.Any(ShouldFileBePartOfSolution))) + { + var referencedProject = reference.outputPath; + + projectBuilder.Append(" ").Append(k_WindowsNewline); + projectBuilder.Append(" {").Append(ProjectGuid(reference.name)).Append("}").Append(k_WindowsNewline); + projectBuilder.Append(" ").Append(reference.name).Append("").Append(k_WindowsNewline); + projectBuilder.Append(" false").Append(k_WindowsNewline); + projectBuilder.Append(" ").Append(k_WindowsNewline); + } + } + + projectBuilder.Append(ProjectFooter()); + return projectBuilder.ToString(); + } + + static void AppendReference(string fullReference, StringBuilder projectBuilder) + { + //replace \ with / and \\ with / + var escapedFullPath = SecurityElement.Escape(fullReference); + escapedFullPath = escapedFullPath.Replace("\\\\", "/"); + escapedFullPath = escapedFullPath.Replace("\\", "/"); + projectBuilder.Append(" ").Append(k_WindowsNewline); + projectBuilder.Append(" ").Append(escapedFullPath).Append("").Append(k_WindowsNewline); + projectBuilder.Append(" ").Append(k_WindowsNewline); + } + + public string ProjectFile(Assembly assembly) + { + var fileBuilder = new StringBuilder(assembly.name); + fileBuilder.Append(".csproj"); + return Path.Combine(ProjectDirectory, fileBuilder.ToString()); + } + + public string SolutionFile() + { + return Path.Combine(ProjectDirectory, $"{m_ProjectName}.sln"); + } + + void ProjectHeader( + Assembly assembly, + List responseFilesData, + string[] roslynAnalyzerDllPaths, + StringBuilder builder + ) + { + var otherArguments = GetOtherArgumentsFromResponseFilesData(responseFilesData); + GetProjectHeaderTemplate( + builder, + ProjectGuid(assembly.name), + assembly.name, + string.Join(";", new[] { "DEBUG", "TRACE" }.Concat(assembly.defines).Concat(responseFilesData.SelectMany(x => x.Defines)).Concat(EditorUserBuildSettings.activeScriptCompilationDefines).Distinct().ToArray()), + assembly.compilerOptions.AllowUnsafeCode | responseFilesData.Any(x => x.Unsafe), + GenerateAnalyserItemGroup(otherArguments["analyzer"].Concat(otherArguments["a"]) + .SelectMany(x => x.Split(';')) + .Concat(roslynAnalyzerDllPaths) + .Distinct() + .ToArray())); + } + + private static ILookup GetOtherArgumentsFromResponseFilesData(List responseFilesData) + { + var paths = responseFilesData.SelectMany(x => + { + return x.OtherArguments.Where(a => a.StartsWith("/") || a.StartsWith("-")) + .Select(b => + { + var index = b.IndexOf(":", StringComparison.Ordinal); + if (index > 0 && b.Length > index) + { + var key = b.Substring(1, index - 1); + return new KeyValuePair(key, b.Substring(index + 1)); + } + + const string warnaserror = "warnaserror"; + if (b.Substring(1).StartsWith(warnaserror)) + { + return new KeyValuePair(warnaserror, b.Substring(warnaserror.Length + 1)); + } + + return default; + }); + }) + .Distinct() + .ToLookup(o => o.Key, pair => pair.Value); + return paths; + } + + private static string GenerateAnalyserItemGroup(string[] paths) + { + // + // + // + // + if (!paths.Any()) + return string.Empty; + + var analyserBuilder = new StringBuilder(); + analyserBuilder.Append(" ").Append(k_WindowsNewline); + foreach (var path in paths) + { + analyserBuilder.Append($" ").Append(k_WindowsNewline); + } + analyserBuilder.Append(" ").Append(k_WindowsNewline); + return analyserBuilder.ToString(); + } + + static string GetSolutionText() + { + return string.Join("\r\n", @"", @"Microsoft Visual Studio Solution File, Format Version {0}", @"# Visual Studio {1}", @"{2}", @"Global", @" GlobalSection(SolutionConfigurationPlatforms) = preSolution", @" Debug|Any CPU = Debug|Any CPU", @" EndGlobalSection", @" GlobalSection(ProjectConfigurationPlatforms) = postSolution", @"{3}", @" EndGlobalSection", @" GlobalSection(SolutionProperties) = preSolution", @" HideSolutionNode = FALSE", @" EndGlobalSection", @"EndGlobal", @"").Replace(" ", "\t"); + } + + static string GetProjectFooterTemplate() + { + return string.Join("\r\n", @" ", @" ", @" ", @"", @""); + } + + static void GetProjectHeaderTemplate( + StringBuilder builder, + string assemblyGUID, + string assemblyName, + string defines, + bool allowUnsafe, + string analyzerBlock + ) + { + builder.Append(@"").Append(k_WindowsNewline); + builder.Append(@"").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_TargetLanguageVersion).Append("").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_WindowsNewline); + builder.Append(@" Debug").Append(k_WindowsNewline); + builder.Append(@" AnyCPU").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_ProductVersion).Append("").Append(k_WindowsNewline); + builder.Append(@" 2.0").Append(k_WindowsNewline); + builder.Append(@" ").Append(EditorSettings.projectGenerationRootNamespace).Append("").Append(k_WindowsNewline); + builder.Append(@" {").Append(assemblyGUID).Append("}").Append(k_WindowsNewline); + builder.Append(@" Library").Append(k_WindowsNewline); + builder.Append(@" Properties").Append(k_WindowsNewline); + builder.Append(@" ").Append(assemblyName).Append("").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_TargetFrameworkVersion).Append("").Append(k_WindowsNewline); + builder.Append(@" 512").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_BaseDirectory).Append("").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_WindowsNewline); + builder.Append(@" true").Append(k_WindowsNewline); + builder.Append(@" full").Append(k_WindowsNewline); + builder.Append(@" false").Append(k_WindowsNewline); + builder.Append(@" Temp\bin\Debug\").Append(k_WindowsNewline); + builder.Append(@" ").Append(defines).Append("").Append(k_WindowsNewline); + builder.Append(@" prompt").Append(k_WindowsNewline); + builder.Append(@" 4").Append(k_WindowsNewline); + builder.Append(@" 0169").Append(k_WindowsNewline); + builder.Append(@" ").Append(allowUnsafe).Append("").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_WindowsNewline); + builder.Append(@" true").Append(k_WindowsNewline); + builder.Append(@" true").Append(k_WindowsNewline); + builder.Append(@" false").Append(k_WindowsNewline); + builder.Append(@" false").Append(k_WindowsNewline); + builder.Append(@" false").Append(k_WindowsNewline); + builder.Append(@" ").Append(k_WindowsNewline); + builder.Append(analyzerBlock); + builder.Append(@" ").Append(k_WindowsNewline); + } + + void SyncSolution(IEnumerable assemblies) + { + SyncSolutionFileIfNotChanged(SolutionFile(), SolutionText(assemblies)); + } + + string SolutionText(IEnumerable assemblies) + { + var fileversion = "11.00"; + var vsversion = "2010"; + + var relevantAssemblies = RelevantAssembliesForMode(assemblies); + string projectEntries = GetProjectEntries(relevantAssemblies); + string projectConfigurations = string.Join(k_WindowsNewline, relevantAssemblies.Select(i => GetProjectActiveConfigurations(ProjectGuid(i.name))).ToArray()); + return string.Format(GetSolutionText(), fileversion, vsversion, projectEntries, projectConfigurations); + } + + static IEnumerable RelevantAssembliesForMode(IEnumerable assemblies) + { + return assemblies.Where(i => ScriptingLanguage.CSharp == ScriptingLanguageFor(i)); + } + + /// + /// Get a Project("{guid}") = "MyProject", "MyProject.csproj", "{projectguid}" + /// entry for each relevant language + /// + string GetProjectEntries(IEnumerable assemblies) + { + var projectEntries = assemblies.Select(i => string.Format( + m_SolutionProjectEntryTemplate, + SolutionGuid(i), + i.name, + Path.GetFileName(ProjectFile(i)), + ProjectGuid(i.name) + )); + + return string.Join(k_WindowsNewline, projectEntries.ToArray()); + } + + /// + /// Generate the active configuration string for a given project guid + /// + string GetProjectActiveConfigurations(string projectGuid) + { + return string.Format( + m_SolutionProjectConfigurationTemplate, + projectGuid); + } + + string EscapedRelativePathFor(string file) + { + var projectDir = ProjectDirectory.Replace('/', '\\'); + file = file.Replace('/', '\\'); + var path = SkipPathPrefix(file, projectDir); + + var packageInfo = m_AssemblyNameProvider.FindForAssetPath(path.Replace('\\', '/')); + if (packageInfo != null) + { + // We have to normalize the path, because the PackageManagerRemapper assumes + // dir seperators will be os specific. + var absolutePath = Path.GetFullPath(NormalizePath(path)).Replace('/', '\\'); + path = SkipPathPrefix(absolutePath, projectDir); + } + + return SecurityElement.Escape(path); + } + + static string SkipPathPrefix(string path, string prefix) + { + if (path.StartsWith($@"{prefix}\")) + return path.Substring(prefix.Length + 1); + return path; + } + + static string NormalizePath(string path) + { + if (Path.DirectorySeparatorChar == '\\') + return path.Replace('/', Path.DirectorySeparatorChar); + return path.Replace('\\', Path.DirectorySeparatorChar); + } + + string ProjectGuid(string assembly) + { + return m_GUIDProvider.ProjectGuid(m_ProjectName, assembly); + } + + string SolutionGuid(Assembly assembly) + { + return m_GUIDProvider.SolutionGuid(m_ProjectName, GetExtensionOfSourceFiles(assembly.sourceFiles)); + } + + static string ProjectFooter() + { + return GetProjectFooterTemplate(); + } + + static string GetProjectExtension() + { + return ".csproj"; + } + + void WriteVSCodeSettingsFiles() + { + var vsCodeDirectory = Path.Combine(ProjectDirectory, ".vscode"); + + if (!m_FileIOProvider.Exists(vsCodeDirectory)) + m_FileIOProvider.CreateDirectory(vsCodeDirectory); + + var vsCodeSettingsJson = Path.Combine(vsCodeDirectory, "settings.json"); + + if (!m_FileIOProvider.Exists(vsCodeSettingsJson)) + m_FileIOProvider.WriteAllText(vsCodeSettingsJson, k_SettingsJson); + } + } + + public static class SolutionGuidGenerator + { + static MD5 mD5 = MD5CryptoServiceProvider.Create(); + + public static string GuidForProject(string projectName) + { + return ComputeGuidHashFor(projectName + "salt"); + } + + public static string GuidForSolution(string projectName, string sourceFileExtension) + { + if (sourceFileExtension.ToLower() == "cs") + + // GUID for a C# class library: http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs + return "FAE04EC0-301F-11D3-BF4B-00C04F79EFBC"; + + return ComputeGuidHashFor(projectName); + } + + static string ComputeGuidHashFor(string input) + { + var hash = mD5.ComputeHash(Encoding.Default.GetBytes(input)); + return new Guid(hash).ToString(); + } + } +} diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGeneration.cs.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGeneration.cs.meta new file mode 100644 index 0000000..5039705 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGeneration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 97d6c87381e3e51488b49f5891490b70 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGenerationFlag.cs b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGenerationFlag.cs new file mode 100644 index 0000000..e51dd43 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGenerationFlag.cs @@ -0,0 +1,18 @@ +using System; + +namespace VSCodeEditor +{ + [Flags] + public enum ProjectGenerationFlag + { + None = 0, + Embedded = 1, + Local = 2, + Registry = 4, + Git = 8, + BuiltIn = 16, + Unknown = 32, + PlayerAssemblies = 64, + LocalTarBall = 128, + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGenerationFlag.cs.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGenerationFlag.cs.meta new file mode 100644 index 0000000..35bf027 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/ProjectGeneration/ProjectGenerationFlag.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f239f506223a98f4e9b5dd3a9f80edea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/Unity.com.unity.vscode.Editor.asmdef b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/Unity.com.unity.vscode.Editor.asmdef new file mode 100644 index 0000000..032da7c --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/Unity.com.unity.vscode.Editor.asmdef @@ -0,0 +1,9 @@ +{ + "name": "Unity.VSCode.Editor", + "references": [], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +} diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/Unity.com.unity.vscode.Editor.asmdef.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/Unity.com.unity.vscode.Editor.asmdef.meta new file mode 100644 index 0000000..4c94f56 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/Unity.com.unity.vscode.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8b845b123ab418448a8be2935fa804e0 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeDiscovery.cs b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeDiscovery.cs new file mode 100644 index 0000000..609d2cd --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeDiscovery.cs @@ -0,0 +1,137 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Unity.CodeEditor; + +namespace VSCodeEditor +{ + public interface IDiscovery + { + CodeEditor.Installation[] PathCallback(); + } + + public class VSCodeDiscovery : IDiscovery + { + List m_Installations; + + public CodeEditor.Installation[] PathCallback() + { + if (m_Installations == null) + { + m_Installations = new List(); + FindInstallationPaths(); + } + + return m_Installations.ToArray(); + } + + void FindInstallationPaths() + { + string[] possiblePaths = +#if UNITY_EDITOR_OSX + { + "/Applications/Visual Studio Code.app", + "/Applications/Visual Studio Code - Insiders.app" + }; +#elif UNITY_EDITOR_WIN + { + GetProgramFiles() + @"/Microsoft VS Code/bin/code.cmd", + GetProgramFiles() + @"/Microsoft VS Code/Code.exe", + GetProgramFiles() + @"/Microsoft VS Code Insiders/bin/code-insiders.cmd", + GetProgramFiles() + @"/Microsoft VS Code Insiders/Code.exe", + GetLocalAppData() + @"/Programs/Microsoft VS Code/bin/code.cmd", + GetLocalAppData() + @"/Programs/Microsoft VS Code/Code.exe", + GetLocalAppData() + @"/Programs/Microsoft VS Code Insiders/bin/code-insiders.cmd", + GetLocalAppData() + @"/Programs/Microsoft VS Code Insiders/Code.exe", + }; +#else + { + "/usr/bin/code", + "/bin/code", + "/usr/local/bin/code", + "/var/lib/flatpak/exports/bin/com.visualstudio.code", + "/snap/current/bin/code" + }; +#endif + var existingPaths = possiblePaths.Where(VSCodeExists).ToList(); + if (!existingPaths.Any()) + { + return; + } + + var lcp = GetLongestCommonPrefix(existingPaths); + switch (existingPaths.Count) + { + case 1: + { + var path = existingPaths.First(); + m_Installations = new List + { + new CodeEditor.Installation + { + Path = path, + Name = path.Contains("Insiders") + ? "Visual Studio Code Insiders" + : "Visual Studio Code" + } + }; + break; + } + case 2 when existingPaths.Any(path => !(path.Substring(lcp.Length).Contains("/") || path.Substring(lcp.Length).Contains("\\"))): + { + goto case 1; + } + default: + { + m_Installations = existingPaths.Select(path => new CodeEditor.Installation + { + Name = $"Visual Studio Code Insiders ({path.Substring(lcp.Length)})", + Path = path + }).ToList(); + + break; + } + } + } + +#if UNITY_EDITOR_WIN + static string GetProgramFiles() + { + return Environment.GetEnvironmentVariable("ProgramFiles")?.Replace("\\", "/"); + } + + static string GetLocalAppData() + { + return Environment.GetEnvironmentVariable("LOCALAPPDATA")?.Replace("\\", "/"); + } +#endif + + static string GetLongestCommonPrefix(List paths) + { + var baseLength = paths.First().Length; + for (var pathIndex = 1; pathIndex < paths.Count; pathIndex++) + { + baseLength = Math.Min(baseLength, paths[pathIndex].Length); + for (var i = 0; i < baseLength; i++) + { + if (paths[pathIndex][i] == paths[0][i]) continue; + + baseLength = i; + break; + } + } + + return paths[0].Substring(0, baseLength); + } + + static bool VSCodeExists(string path) + { +#if UNITY_EDITOR_OSX + return System.IO.Directory.Exists(path); +#else + return new FileInfo(path).Exists; +#endif + } + } +} diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeDiscovery.cs.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeDiscovery.cs.meta new file mode 100644 index 0000000..cbeca1b --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeDiscovery.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 380f7372e785c7d408552e2c760d269d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeScriptEditor.cs b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeScriptEditor.cs new file mode 100644 index 0000000..7efc69f --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeScriptEditor.cs @@ -0,0 +1,280 @@ +using System; +using System.IO; +using System.Linq; +using System.Diagnostics; +using UnityEditor; +using UnityEngine; +using Unity.CodeEditor; + +namespace VSCodeEditor +{ + [InitializeOnLoad] + public class VSCodeScriptEditor : IExternalCodeEditor + { + const string vscode_argument = "vscode_arguments"; + const string vscode_extension = "vscode_userExtensions"; + static readonly GUIContent k_ResetArguments = EditorGUIUtility.TrTextContent("Reset argument"); + string m_Arguments; + + IDiscovery m_Discoverability; + IGenerator m_ProjectGeneration; + + static readonly string[] k_SupportedFileNames = { "code.exe", "visualstudiocode.app", "visualstudiocode-insiders.app", "vscode.app", "code.app", "code.cmd", "code-insiders.cmd", "code", "com.visualstudio.code" }; + + static bool IsOSX => Application.platform == RuntimePlatform.OSXEditor; + + static string DefaultApp => EditorPrefs.GetString("kScriptsDefaultApp"); + + static string DefaultArgument { get; } = "\"$(ProjectPath)\" -g \"$(File)\":$(Line):$(Column)"; + + string Arguments + { + get => m_Arguments ?? (m_Arguments = EditorPrefs.GetString(vscode_argument, DefaultArgument)); + set + { + m_Arguments = value; + EditorPrefs.SetString(vscode_argument, value); + } + } + + static string[] defaultExtensions + { + get + { + var customExtensions = new[] { "json", "asmdef", "log" }; + return EditorSettings.projectGenerationBuiltinExtensions + .Concat(EditorSettings.projectGenerationUserExtensions) + .Concat(customExtensions) + .Distinct().ToArray(); + } + } + + static string[] HandledExtensions + { + get + { + return HandledExtensionsString + .Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries) + .Select(s => s.TrimStart('.', '*')) + .ToArray(); + } + } + + static string HandledExtensionsString + { + get => EditorPrefs.GetString(vscode_extension, string.Join(";", defaultExtensions)); + set => EditorPrefs.SetString(vscode_extension, value); + } + + public bool TryGetInstallationForPath(string editorPath, out CodeEditor.Installation installation) + { + var lowerCasePath = editorPath.ToLower(); + var filename = Path.GetFileName(lowerCasePath).Replace(" ", ""); + var installations = Installations; + if (!k_SupportedFileNames.Contains(filename)) + { + installation = default; + return false; + } + + if (!installations.Any()) + { + installation = new CodeEditor.Installation + { + Name = "Visual Studio Code", + Path = editorPath + }; + } + else + { + try + { + installation = installations.First(inst => inst.Path == editorPath); + } + catch (InvalidOperationException) + { + installation = new CodeEditor.Installation + { + Name = "Visual Studio Code", + Path = editorPath + }; + } + } + + return true; + } + + public void OnGUI() + { + Arguments = EditorGUILayout.TextField("External Script Editor Args", Arguments); + if (GUILayout.Button(k_ResetArguments, GUILayout.Width(120))) + { + Arguments = DefaultArgument; + } + + EditorGUILayout.LabelField("Generate .csproj files for:"); + EditorGUI.indentLevel++; + SettingsButton(ProjectGenerationFlag.Embedded, "Embedded packages", ""); + SettingsButton(ProjectGenerationFlag.Local, "Local packages", ""); + SettingsButton(ProjectGenerationFlag.Registry, "Registry packages", ""); + SettingsButton(ProjectGenerationFlag.Git, "Git packages", ""); + SettingsButton(ProjectGenerationFlag.BuiltIn, "Built-in packages", ""); +#if UNITY_2019_3_OR_NEWER + SettingsButton(ProjectGenerationFlag.LocalTarBall, "Local tarball", ""); +#endif + SettingsButton(ProjectGenerationFlag.Unknown, "Packages from unknown sources", ""); + RegenerateProjectFiles(); + EditorGUI.indentLevel--; + + HandledExtensionsString = EditorGUILayout.TextField(new GUIContent("Extensions handled: "), HandledExtensionsString); + } + + void RegenerateProjectFiles() + { + var rect = EditorGUI.IndentedRect(EditorGUILayout.GetControlRect(new GUILayoutOption[] { })); + rect.width = 252; + if (GUI.Button(rect, "Regenerate project files")) + { + m_ProjectGeneration.Sync(); + } + } + + void SettingsButton(ProjectGenerationFlag preference, string guiMessage, string toolTip) + { + var prevValue = m_ProjectGeneration.AssemblyNameProvider.ProjectGenerationFlag.HasFlag(preference); + var newValue = EditorGUILayout.Toggle(new GUIContent(guiMessage, toolTip), prevValue); + if (newValue != prevValue) + { + m_ProjectGeneration.AssemblyNameProvider.ToggleProjectGeneration(preference); + } + } + + public void CreateIfDoesntExist() + { + if (!m_ProjectGeneration.SolutionExists()) + { + m_ProjectGeneration.Sync(); + } + } + + public void SyncIfNeeded(string[] addedFiles, string[] deletedFiles, string[] movedFiles, string[] movedFromFiles, string[] importedFiles) + { + m_ProjectGeneration.SyncIfNeeded(addedFiles.Union(deletedFiles).Union(movedFiles).Union(movedFromFiles).ToList(), importedFiles); + } + + public void SyncAll() + { + AssetDatabase.Refresh(); + m_ProjectGeneration.Sync(); + } + + public bool OpenProject(string path, int line, int column) + { + if (path != "" && (!SupportsExtension(path) || !File.Exists(path))) // Assets - Open C# Project passes empty path here + { + return false; + } + + if (line == -1) + line = 1; + if (column == -1) + column = 0; + + string arguments; + if (Arguments != DefaultArgument) + { + arguments = m_ProjectGeneration.ProjectDirectory != path + ? CodeEditor.ParseArgument(Arguments, path, line, column) + : m_ProjectGeneration.ProjectDirectory; + } + else + { + arguments = $@"""{m_ProjectGeneration.ProjectDirectory}"""; + if (m_ProjectGeneration.ProjectDirectory != path && path.Length != 0) + { + arguments += $@" -g ""{path}"":{line}:{column}"; + } + } + + if (IsOSX) + { + return OpenOSX(arguments); + } + + var app = DefaultApp; + var process = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = app, + Arguments = arguments, + WindowStyle = app.EndsWith(".cmd", StringComparison.OrdinalIgnoreCase) ? ProcessWindowStyle.Hidden : ProcessWindowStyle.Normal, + CreateNoWindow = true, + UseShellExecute = true, + } + }; + + process.Start(); + return true; + } + + static bool OpenOSX(string arguments) + { + var process = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = "open", + Arguments = $"-n \"{DefaultApp}\" --args {arguments}", + UseShellExecute = true, + } + }; + + process.Start(); + return true; + } + + static bool SupportsExtension(string path) + { + var extension = Path.GetExtension(path); + if (string.IsNullOrEmpty(extension)) + return false; + return HandledExtensions.Contains(extension.TrimStart('.')); + } + + public CodeEditor.Installation[] Installations => m_Discoverability.PathCallback(); + + public VSCodeScriptEditor(IDiscovery discovery, IGenerator projectGeneration) + { + m_Discoverability = discovery; + m_ProjectGeneration = projectGeneration; + } + + static VSCodeScriptEditor() + { + var editor = new VSCodeScriptEditor(new VSCodeDiscovery(), new ProjectGeneration(Directory.GetParent(Application.dataPath).FullName)); + CodeEditor.Register(editor); + + if (IsVSCodeInstallation(CodeEditor.CurrentEditorInstallation)) + { + editor.CreateIfDoesntExist(); + } + } + + static bool IsVSCodeInstallation(string path) + { + if (string.IsNullOrEmpty(path)) + { + return false; + } + + var lowerCasePath = path.ToLower(); + var filename = Path + .GetFileName(lowerCasePath.Replace('\\', Path.DirectorySeparatorChar).Replace('/', Path.DirectorySeparatorChar)) + .Replace(" ", ""); + return k_SupportedFileNames.Contains(filename); + } + + public void Initialize(string editorInstallationPath) { } + } +} diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeScriptEditor.cs.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeScriptEditor.cs.meta new file mode 100644 index 0000000..a0aa5a4 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/Editor/VSCodeScriptEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac3f13489022aa34d861a0320a6917b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/LICENSE.md b/Library/PackageCache/com.unity.ide.vscode@1.2.2/LICENSE.md new file mode 100644 index 0000000..eb18dfb --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Unity Technologies + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/LICENSE.md.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/LICENSE.md.meta new file mode 100644 index 0000000..20c91bd --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c9aabac5924106d4790d7b3a924ca34d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/package.json b/Library/PackageCache/com.unity.ide.vscode@1.2.2/package.json new file mode 100644 index 0000000..23d8258 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/package.json @@ -0,0 +1,20 @@ +{ + "name": "com.unity.ide.vscode", + "displayName": "Visual Studio Code Editor", + "description": "Code editor integration for supporting Visual Studio Code as code editor for unity. Adds support for generating csproj files for intellisense purposes, auto discovery of installations, etc.", + "version": "1.2.2", + "unity": "2019.2", + "unityRelease": "0a12", + "dependencies": {}, + "relatedPackages": { + "com.unity.ide.vscode.tests": "1.2.2" + }, + "upmCi": { + "footprint": "31a9d6735d93048aea33e52d5a2ee60cd18a6ae2" + }, + "repository": { + "url": "https://github.cds.internal.unity3d.com/unity/com.unity.ide.vscode.git", + "type": "git", + "revision": "d4564dab663617ea31f5782b365961d5304bed3c" + } +} diff --git a/Library/PackageCache/com.unity.ide.vscode@1.2.2/package.json.meta b/Library/PackageCache/com.unity.ide.vscode@1.2.2/package.json.meta new file mode 100644 index 0000000..e559711 --- /dev/null +++ b/Library/PackageCache/com.unity.ide.vscode@1.2.2/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ffc6271f08270b64ca0aae9c49235d81 +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/CHANGELOG.md b/Library/PackageCache/com.unity.mathematics@1.1.0/CHANGELOG.md new file mode 100644 index 0000000..ca77b48 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog + +## [1.1.0] - 2019-07-08 + +- Release stable version + +## [1.1.0-preview.1] - 2019-06-27 + +- Add new math.bitmask to return a bit mask from a bool4 + +## [1.0.1] - 2019-04-15 + +- Release stable version +- Modify all math constants (e.g `math.PI`) to provide float constant by default instead of double. Use for example `math.PI_DBL` to get the previous double constant. + +## [1.0.0-preview.1] - 2019-02-28 + +- Fixed bug where modifications on prefabs could not be reverted for vector properties when using context menu in Inspector. +- Fixed structure of the package for internal validation diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/CHANGELOG.md.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/CHANGELOG.md.meta new file mode 100644 index 0000000..0df14d7 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 56de866d5032f461baa43decd9ce3bd8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Documentation~/mathematics.md b/Library/PackageCache/com.unity.mathematics@1.1.0/Documentation~/mathematics.md new file mode 100644 index 0000000..992642f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Documentation~/mathematics.md @@ -0,0 +1,79 @@ +# Unity.Mathematics + +A C# math library providing vector types and math functions with a shader like +syntax. Used by the Burst compiler to compile C#/IL to highly efficient +native code. + +The main goal of this library is to provide a friendly Math API familiar to SIMD and graphic/shaders developers, using the well known `float4`, `float3` types...etc. with all intrinsics functions provided by a static class `math` that can be imported easily into your C# program with `using static Unity.Mathematics.math`. + +In addition to this, the Burst compiler is able to recognize these types and provide the optimized SIMD type for the running CPU on all supported platforms (x64, ARMv7a...etc.) + +NOTICE: The API is a work in progress and we may introduce breaking changes (API and underlying behavior) + +## Usage + +You can use this library in your Unity game by using the Package Manager and referencing the package `com.unity.mathematics`. See the forum [Welcome](https://forum.unity.com/threads/welcome.522627) page for more details. + +```C# +using static Unity.Mathematics.math; +namespace MyNamespace +{ + using Unity.Mathematics; + + ... + var v1 = float3(1,2,3); + var v2 = float3(4,5,6); + v1 = normalize(v1); + v2 = normalize(v2); + var v3 = dot(v1, v2); + ... +} +``` + +## Building + +Open the `src\Unity.Mathematics.sln` under Visual Studio 2015 or MonoDevelop and compile in Debug\Release. + +## Contributing + +We don't yet accept PR on this repository. See the FAQ below. + +The project is using [editorconfig](http://editorconfig.org/) to keep files correctly formatted for EOL and spaces. + +We assume that your IDE has support for `editorconfig`, you can download the following extensions if your IDE is listed: + +- [VS2015/VS2017 EditorConfig extension](https://marketplace.visualstudio.com/items?itemName=EditorConfigTeam.EditorConfig) +- [Visual Studio Code EditorConfig extension](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) +- [SublimeText EditorConfig extension](https://github.com/sindresorhus/editorconfig-sublime) + +## Frequently Asked Question + +### Why developing another Math library instead of using existing Unity Vector3...etc.? + +After years of feedback and experience with the previous API, we believe that providing an API that is closer to the way graphics developers have been using math libraries should better help its adoption and the ease of its usage. HLSL / GLSL math library is a very well designed, well understood math library leading to greater consistency. + +### Why not using `System.Numerics.Vectors`? + +Mainly for the reason mentioned above, `System.Numerics.Vectors` is in many ways similar to our previous Vector library (more object oriented than graphics programming oriented). +Also the fact that our Burst compiler is able to recognize a lot more patterns for SIMD types and math intrinsics makes it easier to work with a dedicated API that reflects this ability. + +### Naming convention + +In C# `int` and `float` are considered builtin types. Burst extends this set of bultin types to also include vectors, matrices and quaternions. These types are bultin in the sense that Burst knows about them and is be able to generate better code using these types than what would be possible with equivalent code using custom types. + +To signify that these types are bultin their type names are in all lower case. The operators on these bultin types found in `Unity.Mathematics.math` are considered intrinsics and are thus always in lower case. + +There are no plans to extend the set of intrinsic types beyond the current set of vectors (`typeN`), matrices (`typeNxN`) and quaternions (`quaternion`). + +This convention has the added benefit of making the library highly compatible with shader code and makes porting or sharing code between the two almost frictionless. + +### Why can't we send a PR yet? + +We are working on providing a Contributor License Agreement (CLA) with a sign-over functionality and our UCL License doesn't cover this yet. + +## Licensing + +Unity Companion License (“License”) Software Copyright © 2019 Unity Technologies ApS + +For licensing details see [LICENSE.md](LICENSE.md) + diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Documentation~/mathematics.md.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Documentation~/mathematics.md.meta new file mode 100644 index 0000000..10f22f4 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Documentation~/mathematics.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d177df5c52517492b85d4191425323a9 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/LICENSE.md b/Library/PackageCache/com.unity.mathematics@1.1.0/LICENSE.md new file mode 100644 index 0000000..311c990 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/LICENSE.md @@ -0,0 +1,30 @@ +Unity Companion License (“License”) +Software Copyright © 2019 Unity Technologies ApS + +Unity Technologies ApS (“Unity”) grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available under this License (“Software”), subject to the following terms and conditions: + +1. Unity Companion Use Only. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity content authoring and rendering engine software license (“Engine License”). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted, and in no event may the Software be used for competitive analysis or to develop a competing product or service. + +2. No Modification of Engine License. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way. + +3. Ownership & Grant Back to You. + +3.1 You own your content. In this License, “derivative works” means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); “derivative works” of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content. + +3.2 Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity. + +3.3 You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License. + +4. Trademarks. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates (“Trademarks”). Descriptive uses of Trademarks are permitted; see, for example, Unity’s Branding Usage Guidelines at https://unity3d.com/public-relations/brand. + +5. Notices & Third-Party Rights. This License, including the copyright notice associated with the Software, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity “third-party notices” or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms. + +6. DISCLAIMER, LIMITATION OF LIABILITY. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +7. USE IS ACCEPTANCE and License Versions. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License. + +8. Use in Compliance with Law and Termination. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License. + +9. Severability. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect. + +10. Governing Law and Venue. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License (“Dispute”). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/LICENSE.md.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/LICENSE.md.meta new file mode 100644 index 0000000..d2a848b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a7f87992cd1d44040ae42b05e5fbdaa5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests.meta new file mode 100644 index 0000000..d34a237 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3503cbca3a6645cb8298d5cecf03cec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/TestCompilerAttribute.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/TestCompilerAttribute.cs new file mode 100644 index 0000000..044abbe --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/TestCompilerAttribute.cs @@ -0,0 +1,19 @@ +using System; +using NUnit.Framework; +using NUnit.Framework.Interfaces; + +namespace Burst.Compiler.IL.Tests +{ + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] + public class WindowsOnlyAttribute : Attribute + { + public WindowsOnlyAttribute(string reason) + { + } + } + + [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = false)] + public sealed class TestCompilerAttribute : TestCaseAttribute, ITestBuilder + { + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/TestCompilerAttribute.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/TestCompilerAttribute.cs.meta new file mode 100644 index 0000000..48e087e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/TestCompilerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b16d5a4bfd93114385ecd01f00a6914 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests.meta new file mode 100644 index 0000000..a145b33 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bccfda2dc5ad3b84eb3a644147ea0010 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared.meta new file mode 100644 index 0000000..10cf1f2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d6d62c94d82bf748b95682fa88ef3b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBitmanipulation.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBitmanipulation.cs new file mode 100644 index 0000000..1c1be1e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBitmanipulation.cs @@ -0,0 +1,547 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBitmanipulation + { + [TestCompiler] + public static void bitmask_bool4() + { + TestUtils.AreEqual(0b0000, bitmask(new bool4(false, false, false, false))); + TestUtils.AreEqual(0b0001, bitmask(new bool4(true, false, false, false))); + TestUtils.AreEqual(0b0010, bitmask(new bool4(false, true, false, false))); + TestUtils.AreEqual(0b0100, bitmask(new bool4(false, false, true, false))); + TestUtils.AreEqual(0b1000, bitmask(new bool4(false, false, false, true))); + + TestUtils.AreEqual(0b1111, bitmask(new bool4(true, true, true, true))); + TestUtils.AreEqual(0b1110, bitmask(new bool4(false, true, true, true))); + TestUtils.AreEqual(0b1101, bitmask(new bool4(true, false, true, true))); + TestUtils.AreEqual(0b1011, bitmask(new bool4(true, true, false, true))); + TestUtils.AreEqual(0b0111, bitmask(new bool4(true, true, true, false))); + } + + [TestCompiler] + public static void countbits_int1() + { + TestUtils.AreEqual(countbits( 0x01234567), 12); + TestUtils.AreEqual(countbits( 0x456789AB), 16); + TestUtils.AreEqual(countbits(-0x01234567), 21); + TestUtils.AreEqual(countbits(-0x456789AB), 17); + TestUtils.AreEqual(countbits(-1), 32); + } + + [TestCompiler] + public static void countbits_int2() + { + TestUtils.AreEqual(countbits(int2(0, 0x01234567)), int2(0, 12)); + TestUtils.AreEqual(countbits(int2(0x456789AB, -0x01234567)), int2(16, 21)); + TestUtils.AreEqual(countbits(int2(-0x456789AB, -1)), int2(17, 32)); + } + + [TestCompiler] + public static void countbits_int3() + { + TestUtils.AreEqual(countbits(int3(0, 0x01234567, 0x456789AB)), int3(0, 12, 16)); + TestUtils.AreEqual(countbits(int3(-0x01234567, -0x456789AB, -1)), int3(21, 17, 32)); + } + + [TestCompiler] + public static void countbits_int4() + { + TestUtils.AreEqual(countbits(int4(0, 0x01234567, 0x456789AB, -0x01234567)), int4(0, 12, 16, 21)); + TestUtils.AreEqual(countbits(int4(-0x456789AB, -1, -7, -15)), int4(17, 32, 30, 29)); + } + + [TestCompiler] + public static void countbits_uint() + { + TestUtils.AreEqual(countbits(0u), 0); + TestUtils.AreEqual(countbits(0x01234567u), 12); + TestUtils.AreEqual(countbits(0x456789ABu), 16); + TestUtils.AreEqual(countbits(0x89ABCDEFu), 20); + TestUtils.AreEqual(countbits(0xCDEF0123u), 16); + TestUtils.AreEqual(countbits(0xFFFFFFFFu), 32); + } + + [TestCompiler] + public static void countbits_uint2() + { + TestUtils.AreEqual(countbits(uint2(0, 0x01234567)), int2(0, 12)); + TestUtils.AreEqual(countbits(uint2(0x456789AB, 0x89ABCDEFu)), int2(16, 20)); + TestUtils.AreEqual(countbits(uint2(0xCDEF0123u, 0xFFFFFFFFu)), int2(16, 32)); + } + + [TestCompiler] + public static void countbits_uint3() + { + TestUtils.AreEqual(countbits(uint3(0, 0x01234567, 0x456789AB)), int3(0, 12, 16)); + TestUtils.AreEqual(countbits(uint3(0x89ABCDEFu, 0xCDEF0123u, 0xFFFFFFFFu)), int3(20, 16, 32)); + } + + [TestCompiler] + public static void countbits_uint4() + { + TestUtils.AreEqual(countbits(uint4(0, 0x01234567, 0x456789AB, 0x89ABCDEFu)), int4(0, 12, 16, 20)); + TestUtils.AreEqual(countbits(uint4(0xCDEF0123u, 0xFFFFFFFFu, 0xFFFFFFF5u, 0xFFFFFFF1u)), int4(16, 32, 30, 29)); + } + + [TestCompiler] + public static void countbits_long() + { + TestUtils.AreEqual(countbits(0L), 0); + TestUtils.AreEqual(countbits(0x0123456789ABCDEFL), 32); + TestUtils.AreEqual(countbits(-0x0123456789ABCDEFL), 33); + TestUtils.AreEqual(countbits(-1L), 64); + } + + [TestCompiler] + public static void countbits_ulong() + { + TestUtils.AreEqual(countbits(0UL), 0); + TestUtils.AreEqual(countbits(0x0123456789ABCDEFUL), 32); + TestUtils.AreEqual(countbits(0x89ABCDEF01234567UL), 32); + TestUtils.AreEqual(countbits(0xFFFFFFFFFFFFFFFFUL), 64); + } + + [TestCompiler] + public static void lzcnt_int() + { + TestUtils.AreEqual(lzcnt(0), 32); + TestUtils.AreEqual(lzcnt(1), 31); + TestUtils.AreEqual(lzcnt(2), 30); + TestUtils.AreEqual(lzcnt(3), 30); + TestUtils.AreEqual(lzcnt(0x5321), 17); + TestUtils.AreEqual(lzcnt(0x04435321), 5); + TestUtils.AreEqual(lzcnt(-1), 0); + TestUtils.AreEqual(lzcnt(-2147483648), 0); + } + + [TestCompiler] + public static void lzcnt_int2() + { + TestUtils.AreEqual(lzcnt(int2(0, 1)), int2(32, 31)); + TestUtils.AreEqual(lzcnt(int2(2, 3)), int2(30, 30)); + TestUtils.AreEqual(lzcnt(int2(0x5321, 0x04435321)), int2(17, 5)); + TestUtils.AreEqual(lzcnt(int2(-1, -2147483648)), int2(0, 0)); + } + + [TestCompiler] + public static void lzcnt_int3() + { + TestUtils.AreEqual(lzcnt(int3(0, 1, 2)), int3(32, 31, 30)); + TestUtils.AreEqual(lzcnt(int3(3, 0x5321, 0x04435321)), int3(30, 17, 5)); + TestUtils.AreEqual(lzcnt(int3(-1, -2147483648, 17)), int3(0, 0, 27)); + } + + [TestCompiler] + public static void lzcnt_int4() + { + TestUtils.AreEqual(lzcnt(int4(0, 1, 2, 3)), int4(32, 31, 30, 30)); + TestUtils.AreEqual(lzcnt(int4(0x5321, 0x04435321, -1, -2147483648)), int4(17, 5, 0, 0)); + } + + [TestCompiler] + public static void lzcnt_uint() + { + TestUtils.AreEqual(lzcnt(0u), 32); + TestUtils.AreEqual(lzcnt(1u), 31); + TestUtils.AreEqual(lzcnt(2u), 30); + TestUtils.AreEqual(lzcnt(3u), 30); + TestUtils.AreEqual(lzcnt(0x5321u), 17); + TestUtils.AreEqual(lzcnt(0x04435321u), 5); + TestUtils.AreEqual(lzcnt(0x84435320u), 0); + TestUtils.AreEqual(lzcnt(0xFFFFFFFFu), 0); + } + + [TestCompiler] + public static void lzcnt_uint2() + { + TestUtils.AreEqual(lzcnt(uint2(0u, 1u)), int2(32, 31)); + TestUtils.AreEqual(lzcnt(uint2(2u, 3u)), int2(30, 30)); + TestUtils.AreEqual(lzcnt(uint2(0x5321u, 0x04435321u)), int2(17, 5)); + TestUtils.AreEqual(lzcnt(uint2(0x84435320u, 0xFFFFFFFFu)), int2(0, 0)); + } + + [TestCompiler] + public static void lzcnt_uint3() + { + TestUtils.AreEqual(lzcnt(uint3(0u, 1u, 2u)), int3(32, 31, 30)); + TestUtils.AreEqual(lzcnt(uint3(3u, 0x5321u, 0x04435321u)), int3(30, 17, 5)); + TestUtils.AreEqual(lzcnt(uint3(0x84435320u, 0xFFFFFFFFu, 17)), int3(0, 0, 27)); + } + + [TestCompiler] + public static void lzcnt_uint4() + { + TestUtils.AreEqual(lzcnt(uint2(0u, 1u)), int2(32, 31)); + TestUtils.AreEqual(lzcnt(uint2(2u, 3u)), int2(30, 30)); + TestUtils.AreEqual(lzcnt(uint2(0x5321u, 0x04435321u)), int2(17, 5)); + TestUtils.AreEqual(lzcnt(uint2(0x84435320u, 0xFFFFFFFFu)), int2(0, 0)); + } + + [TestCompiler] + public static void lzcnt_long() + { + TestUtils.AreEqual(lzcnt(0L), 64); + TestUtils.AreEqual(lzcnt(1L), 63); + TestUtils.AreEqual(lzcnt(0x1FFF1234L), 35); + TestUtils.AreEqual(lzcnt(0x1FFFF1234L), 31); + TestUtils.AreEqual(lzcnt(0x1FFFFFFF1234L), 19); + TestUtils.AreEqual(lzcnt(-1L), 0); + TestUtils.AreEqual(lzcnt(-9223372036854775808L), 0); + } + + [TestCompiler] + public static void lzcnt_ulong() + { + TestUtils.AreEqual(lzcnt(0UL), 64); + TestUtils.AreEqual(lzcnt(1UL), 63); + TestUtils.AreEqual(lzcnt(0x1FFF1234UL), 35); + TestUtils.AreEqual(lzcnt(0x1FFFF1234UL), 31); + TestUtils.AreEqual(lzcnt(0x1FFFFFFF1234UL), 19); + TestUtils.AreEqual(lzcnt(0xFFFFFFFFFFFFFFFFUL), 0); + TestUtils.AreEqual(lzcnt(0x8000000000000000UL), 0); + } + + [TestCompiler] + public static void tzcnt_int() + { + TestUtils.AreEqual(tzcnt(0), 32); + TestUtils.AreEqual(tzcnt(1), 0); + TestUtils.AreEqual(tzcnt(2), 1); + TestUtils.AreEqual(tzcnt(3), 0); + TestUtils.AreEqual(tzcnt(0x53210), 4); + TestUtils.AreEqual(tzcnt(0x44420000), 17); + TestUtils.AreEqual(tzcnt(-2), 1); + TestUtils.AreEqual(tzcnt(-2147483647), 0); + TestUtils.AreEqual(tzcnt(-2147483648), 31); + } + + [TestCompiler] + public static void tzcnt_int2() + { + TestUtils.AreEqual(tzcnt(int2(0, 1)), int2(32, 0)); + TestUtils.AreEqual(tzcnt(int2(2, 3)), int2(1, 0)); + TestUtils.AreEqual(tzcnt(int2(0x53210, 0x44420000)), int2(4, 17)); + TestUtils.AreEqual(tzcnt(int2(-2, -2147483647)), int2(1, 0)); + TestUtils.AreEqual(tzcnt(int2(-2147483648, 20)), int2(31, 2)); + } + + [TestCompiler] + public static void tzcnt_int3() + { + TestUtils.AreEqual(tzcnt(int3(0, 1, 2)), int3(32, 0, 1)); + TestUtils.AreEqual(tzcnt(int3(3, 0x53210, 0x44420000)), int3(0, 4, 17)); + TestUtils.AreEqual(tzcnt(int3(-2, -2147483647, -2147483648)), int3(1, 0, 31)); + } + + [TestCompiler] + public static void tzcnt_int4() + { + TestUtils.AreEqual(tzcnt(int4(0, 1, 2, 3)), int4(32, 0, 1, 0)); + TestUtils.AreEqual(tzcnt(int4(0x53210, 0x44420000, -2, -2147483647)), int4(4, 17, 1, 0)); + TestUtils.AreEqual(tzcnt(int4(-2147483648, 20, 4132, -8)), int4(31, 2, 2, 3)); + } + + [TestCompiler] + public static void tzcnt_uint() + { + TestUtils.AreEqual(tzcnt(0u), 32); + TestUtils.AreEqual(tzcnt(1u), 0); + TestUtils.AreEqual(tzcnt(2u), 1); + TestUtils.AreEqual(tzcnt(3u), 0); + TestUtils.AreEqual(tzcnt(0x53210u), 4); + TestUtils.AreEqual(tzcnt(0x44420000u), 17); + TestUtils.AreEqual(tzcnt(0xFFFFFFFEu), 1); + TestUtils.AreEqual(tzcnt(0x80000001u), 0); + TestUtils.AreEqual(tzcnt(0x80000000u), 31); + } + + [TestCompiler] + public static void tzcnt_uint2() + { + TestUtils.AreEqual(tzcnt(uint2(0u, 1u)), int2(32, 0)); + TestUtils.AreEqual(tzcnt(uint2(2u, 3u)), int2(1, 0)); + TestUtils.AreEqual(tzcnt(uint2(0x53210u, 0x44420000u)), int2(4, 17)); + TestUtils.AreEqual(tzcnt(uint2(0xFFFFFFFEu, 0x80000001u)), int2(1, 0)); + TestUtils.AreEqual(tzcnt(uint2(0x80000000u, 20u)), int2(31, 2)); + } + + [TestCompiler] + public static void tzcnt_uint3() + { + TestUtils.AreEqual(tzcnt(uint3(0u, 1u, 2u)), int3(32, 0, 1)); + TestUtils.AreEqual(tzcnt(uint3(3u, 0x53210u, 0x44420000u)), int3(0, 4, 17)); + TestUtils.AreEqual(tzcnt(uint3(0xFFFFFFFEu, 0x80000001u, 0x80000000u)), int3(1, 0, 31)); + } + + [TestCompiler] + public static void tzcnt_uint4() + { + TestUtils.AreEqual(tzcnt(uint4(0u, 1u, 2u, 3u)), int4(32, 0, 1, 0)); + TestUtils.AreEqual(tzcnt(uint4(0x53210u, 0x44420000u, 0xFFFFFFFE, 0x80000001u)), int4(4, 17, 1, 0)); + TestUtils.AreEqual(tzcnt(uint4(0x80000000u, 20u, 4132u, 0xFFFFFFF8u)), int4(31, 2, 2, 3)); + } + + [TestCompiler] + public static void tzcnt_long() + { + TestUtils.AreEqual(tzcnt(0L), 64); + TestUtils.AreEqual(tzcnt(1L), 0); + TestUtils.AreEqual(tzcnt(2L), 1); + TestUtils.AreEqual(tzcnt(0x44420000L), 17); + TestUtils.AreEqual(tzcnt(0x444200000000L), 33); + TestUtils.AreEqual(tzcnt(-9223372036854775808L), 63); + TestUtils.AreEqual(tzcnt(-9223372036854775807L), 0); + } + + [TestCompiler] + public static void tzcnt_ulong() + { + TestUtils.AreEqual(tzcnt(0UL), 64); + TestUtils.AreEqual(tzcnt(1UL), 0); + TestUtils.AreEqual(tzcnt(2UL), 1); + TestUtils.AreEqual(tzcnt(0x44420000UL), 17); + TestUtils.AreEqual(tzcnt(0x444200000000UL), 33); + TestUtils.AreEqual(tzcnt(0x8000000000000000UL), 63); + TestUtils.AreEqual(tzcnt(0x8000000000000001UL), 0); + } + + [TestCompiler] + public static void reversebits_int() + { + TestUtils.AreEqual(reversebits(-1872213312), 0x03521609); + TestUtils.AreEqual(reversebits(0x1260dafa), 0x5f5b0648); + TestUtils.AreEqual(reversebits(-1312858670), 0x4bbafd8d); + TestUtils.AreEqual(reversebits(0x74239b12), 0x48d9c42e); + } + + [TestCompiler] + public static void reversebits_int2() + { + TestUtils.AreEqual(reversebits(int2(-1872213312, 0x1260dafa)), int2(0x03521609, 0x5f5b0648)); + TestUtils.AreEqual(reversebits(int2(-1312858670, 0x74239b12)), int2(0x4bbafd8d, 0x48d9c42e)); + } + + [TestCompiler] + public static void reversebits_int3() + { + TestUtils.AreEqual(reversebits(int3(-1872213312, 0x1260dafa, -1312858670)), int3(0x03521609, 0x5f5b0648, 0x4bbafd8d)); + TestUtils.AreEqual(reversebits(int3(0x74239b12, 0, -1)), int3(0x48d9c42e, 0, -1)); + } + + [TestCompiler] + public static void reversebits_int4() + { + TestUtils.AreEqual(reversebits(int4(-1872213312, 0x1260dafa, -1312858670, 0x74239b12)), int4(0x03521609, 0x5f5b0648, 0x4bbafd8d, 0x48d9c42e)); + } + + [TestCompiler] + public static void reversebits_uint() + { + TestUtils.AreEqual(reversebits(0x90684ac0u), 0x03521609u); + TestUtils.AreEqual(reversebits(0x1260dafau), 0x5f5b0648u); + TestUtils.AreEqual(reversebits(0xb1bf5dd2u), 0x4bbafd8du); + TestUtils.AreEqual(reversebits(0x74239b12u), 0x48d9c42eu); + } + + [TestCompiler] + public static void reversebits_uint2() + { + TestUtils.AreEqual(reversebits(uint2(0x90684ac0u, 0x1260dafau)), uint2(0x03521609u, 0x5f5b0648u)); + TestUtils.AreEqual(reversebits(uint2(0xb1bf5dd2u, 0x74239b12u)), uint2(0x4bbafd8du, 0x48d9c42eu)); + } + + [TestCompiler] + public static void reversebits_uint3() + { + TestUtils.AreEqual(reversebits(uint3(0x90684ac0u, 0x1260dafau, 0xb1bf5dd2u)), uint3(0x03521609u, 0x5f5b0648u, 0x4bbafd8du)); + TestUtils.AreEqual(reversebits(uint3(0x74239b12u, 0u, 0xFFFFFFFF)), uint3(0x48d9c42eu, 0u, 0xFFFFFFFF)); + } + + [TestCompiler] + public static void reversebits_uint4() + { + TestUtils.AreEqual(reversebits(uint4(0x90684ac0u, 0x1260dafau, 0xb1bf5dd2u, 0x74239b12u)), uint4(0x03521609u, 0x5f5b0648u, 0x4bbafd8du, 0x48d9c42eu)); + } + + [TestCompiler] + public static void reversebits_long() + { + TestUtils.AreEqual(reversebits(0x1260dafab1bf5dd2L), 0x4bbafd8d5f5b0648L); + } + + [TestCompiler] + public static void reversebits_ulong() + { + TestUtils.AreEqual(reversebits(0x1260dafab1bf5dd2ul), 0x4bbafd8d5f5b0648ul); + } + + [TestCompiler] + public static void rol_int() + { + TestUtils.AreEqual(rol(219257022, 11), -1933184920); + TestUtils.AreEqual(rol(-1586446996, 11), -2048170741); + TestUtils.AreEqual(rol(-279484078, 11), -1152739462); + TestUtils.AreEqual(rol(-1692078607, 11), 661621977); + } + + [TestCompiler] + public static void rol_int2() + { + TestUtils.AreEqual(rol(int2(219257022, -1586446996), 11), int2(-1933184920, -2048170741)); + TestUtils.AreEqual(rol(int2(-279484078, -1692078607), 11), int2(-1152739462, 661621977)); + } + + [TestCompiler] + public static void rol_int3() + { + TestUtils.AreEqual(rol(int3(219257022, -1586446996, -279484078), 11), int3(-1933184920, -2048170741, -1152739462)); + } + + + [TestCompiler] + public static void rol_int4() + { + TestUtils.AreEqual(rol(int4(219257022, -1586446996, -279484078, -1692078607), 11), int4(-1933184920, -2048170741, -1152739462, 661621977)); + } + + [TestCompiler] + public static void rol_uint() + { + TestUtils.AreEqual(rol(219257022u, 11), 2361782376u); + TestUtils.AreEqual(rol(2708520300u, 11), 2246796555u); + TestUtils.AreEqual(rol(4015483218u, 11), 3142227834u); + TestUtils.AreEqual(rol(2602888689u, 11), 661621977u); + } + + [TestCompiler] + public static void rol_uint2() + { + TestUtils.AreEqual(rol(uint2(219257022u, 2708520300u), 11), uint2(2361782376u, 2246796555u)); + TestUtils.AreEqual(rol(uint2(4015483218u, 2602888689u), 11), uint2(3142227834u, 661621977u)); + } + + [TestCompiler] + public static void rol_uint3() + { + TestUtils.AreEqual(rol(uint3(219257022u, 2708520300u, 4015483218u), 11), uint3(2361782376u, 2246796555u, 3142227834u)); + } + + [TestCompiler] + public static void rol_uint4() + { + TestUtils.AreEqual(rol(uint4(219257022u, 2708520300u, 4015483218u, 2602888689u), 11), uint4(2361782376u, 2246796555u, 3142227834u, 661621977u)); + } + + + [TestCompiler] + public static void rol_long() + { + TestUtils.AreEqual(rol(6894885722123239465L, 37), 4769317691753349395L); + TestUtils.AreEqual(rol(9017875690541231318L, 37), 7702732954299909421L); + TestUtils.AreEqual(rol(-6252342588442027279L, 37), 4304137451269976409L); + TestUtils.AreEqual(rol(2788577329702376155L, 37), -5493728106787075631L); + } + + [TestCompiler] + public static void rol_ulong() + { + TestUtils.AreEqual(rol(6894885722123239465UL, 37), 4769317691753349395UL); + TestUtils.AreEqual(rol(9017875690541231318UL, 37), 7702732954299909421UL); + TestUtils.AreEqual(rol(12194401485267524337UL, 37), 4304137451269976409UL); + TestUtils.AreEqual(rol(2788577329702376155UL, 37), 12953015966922475985UL); + } + + + [TestCompiler] + public static void ror_int() + { + TestUtils.AreEqual(ror(-1710129111, 11), 87245360); + TestUtils.AreEqual(ror(1232136068, 11), -259445220); + TestUtils.AreEqual(ror(1800875222, 11), -1697813787); + TestUtils.AreEqual(ror(-98246768, 11), -232831845); + } + + [TestCompiler] + public static void ror_int2() + { + TestUtils.AreEqual(ror(int2(-1710129111, 1232136068), 11), int2(87245360, -259445220)); + TestUtils.AreEqual(ror(int2(1800875222, -98246768), 11), int2(-1697813787, -232831845)); + } + + [TestCompiler] + public static void ror_int3() + { + TestUtils.AreEqual(ror(int3(-1710129111, 1232136068, 1800875222), 11), int3(87245360, -259445220, -1697813787)); + } + + [TestCompiler] + public static void ror_int4() + { + TestUtils.AreEqual(ror(int4(-1710129111, 1232136068, 1800875222, -98246768), 11), int4(87245360, -259445220, -1697813787, -232831845)); + } + + + [TestCompiler] + public static void ror_uint() + { + TestUtils.AreEqual(ror(2584838185u, 11), 87245360u); + TestUtils.AreEqual(ror(1232136068u, 11), 4035522076u); + TestUtils.AreEqual(ror(1800875222u, 11), 2597153509u); + TestUtils.AreEqual(ror(4196720528u, 11), 4062135451u); + } + + [TestCompiler] + public static void ror_uint2() + { + TestUtils.AreEqual(ror(uint2(2584838185u, 1232136068u), 11), uint2(87245360u, 4035522076u)); + TestUtils.AreEqual(ror(uint2(1800875222u, 4196720528u), 11), uint2(2597153509u, 4062135451u)); + } + + [TestCompiler] + public static void ror_uint3() + { + TestUtils.AreEqual(ror(uint3(2584838185u, 1232136068u, 1800875222u), 11), uint3(87245360u, 4035522076u, 2597153509u)); + } + + [TestCompiler] + public static void ror_uint4() + { + TestUtils.AreEqual(ror(uint4(2584838185u, 1232136068u, 1800875222u, 4196720528u), 11), uint4(87245360u, 4035522076u, 2597153509u, 4062135451u)); + } + + [TestCompiler] + public static void ror_long() + { + TestUtils.AreEqual(ror(6894885722123239465L, 37), 4958617126915898480L); + TestUtils.AreEqual(ror(9017875690541231318L, 37), 5429856151504760689L); + TestUtils.AreEqual(ror(-6252342588442027279L, 37), 6219170745001040316L); + TestUtils.AreEqual(ror(2788577329702376155L, 37), 8389344736564320290L); + } + + [TestCompiler] + public static void ror_ulong() + { + TestUtils.AreEqual(ror(6894885722123239465UL, 37), 4958617126915898480UL); + TestUtils.AreEqual(ror(9017875690541231318UL, 37), 5429856151504760689UL); + TestUtils.AreEqual(ror(12194401485267524337UL, 37), 6219170745001040316UL); + TestUtils.AreEqual(ror(2788577329702376155UL, 37), 8389344736564320290UL); + } + + + } + + + class Assert2 + { + public static void AreEqual(object a, object b) + { + + } + } + +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBitmanipulation.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBitmanipulation.cs.meta new file mode 100644 index 0000000..458cb42 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBitmanipulation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e5e8e2bd97f047f4aa27c8449c8844a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2.gen.cs new file mode 100644 index 0000000..89d4ff2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2.gen.cs @@ -0,0 +1,432 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool2 + { + [TestCompiler] + public static void bool2_constructor() + { + bool2 a = new bool2(false, true); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + } + + [TestCompiler] + public static void bool2_scalar_constructor() + { + bool2 a = new bool2(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + } + + [TestCompiler] + public static void bool2_static_constructor() + { + bool2 a = bool2(false, true); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + } + + [TestCompiler] + public static void bool2_static_scalar_constructor() + { + bool2 a = bool2(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + } + + [TestCompiler] + public static void bool2_operator_equal_wide_wide() + { + bool2 a0 = bool2(false, false); + bool2 b0 = bool2(false, true); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2 a1 = bool2(true, true); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2 a2 = bool2(true, true); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool2 a3 = bool2(true, true); + bool2 b3 = bool2(false, true); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2_operator_equal_wide_scalar() + { + bool2 a0 = bool2(true, true); + bool b0 = (false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2 a1 = bool2(false, true); + bool b1 = (true); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool2 a2 = bool2(false, true); + bool b2 = (true); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool2 a3 = bool2(true, false); + bool b3 = (false); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2_operator_equal_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(false, false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool2 b1 = bool2(false, true); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool2 b2 = bool2(true, false); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool2 b3 = bool2(false, false); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2_operator_not_equal_wide_wide() + { + bool2 a0 = bool2(true, false); + bool2 b0 = bool2(false, false); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool2 a1 = bool2(false, true); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2 a2 = bool2(true, true); + bool2 b2 = bool2(false, false); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2 a3 = bool2(true, true); + bool2 b3 = bool2(false, false); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2_operator_not_equal_wide_scalar() + { + bool2 a0 = bool2(false, false); + bool b0 = (false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool2 a1 = bool2(true, true); + bool b1 = (true); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool2 a2 = bool2(true, false); + bool b2 = (false); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool2 a3 = bool2(true, true); + bool b3 = (false); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(true, true); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool2 b2 = bool2(false, false); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool2 b3 = bool2(true, true); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_and_wide_wide() + { + bool2 a0 = bool2(false, true); + bool2 b0 = bool2(false, true); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool2 a1 = bool2(true, false); + bool2 b1 = bool2(false, false); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2 a2 = bool2(false, false); + bool2 b2 = bool2(false, true); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2 a3 = bool2(true, false); + bool2 b3 = bool2(true, false); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_and_wide_scalar() + { + bool2 a0 = bool2(false, false); + bool b0 = (false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2 a1 = bool2(true, true); + bool b1 = (true); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool2 a2 = bool2(false, true); + bool b2 = (true); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool2 a3 = bool2(true, false); + bool b3 = (false); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(false, false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (false); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool2 b3 = bool2(false, true); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_or_wide_wide() + { + bool2 a0 = bool2(true, false); + bool2 b0 = bool2(true, false); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 | b0, r0); + + bool2 a1 = bool2(false, true); + bool2 b1 = bool2(true, true); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2 a2 = bool2(true, false); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2 a3 = bool2(false, false); + bool2 b3 = bool2(true, true); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_or_wide_scalar() + { + bool2 a0 = bool2(false, false); + bool b0 = (true); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2 a1 = bool2(true, false); + bool b1 = (true); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2 a2 = bool2(true, true); + bool b2 = (false); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2 a3 = bool2(false, true); + bool b3 = (true); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(true, true); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool2 b1 = bool2(false, false); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool2 b3 = bool2(true, true); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_xor_wide_wide() + { + bool2 a0 = bool2(true, false); + bool2 b0 = bool2(false, true); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2 a1 = bool2(true, true); + bool2 b1 = bool2(false, false); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2 a2 = bool2(true, true); + bool2 b2 = bool2(false, true); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2 a3 = bool2(false, false); + bool2 b3 = bool2(false, false); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_xor_wide_scalar() + { + bool2 a0 = bool2(true, false); + bool b0 = (false); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2 a1 = bool2(false, true); + bool b1 = (true); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2 a2 = bool2(false, false); + bool b2 = (false); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2 a3 = bool2(true, true); + bool b3 = (false); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(true, false); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (false); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool2 b3 = bool2(true, true); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2_operator_logical_not() + { + bool2 a0 = bool2(false, true); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(!a0, r0); + + bool2 a1 = bool2(false, false); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(!a1, r1); + + bool2 a2 = bool2(false, true); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(!a2, r2); + + bool2 a3 = bool2(true, true); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2.gen.cs.meta new file mode 100644 index 0000000..19502cb --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc335ab357eef1346a23bc792570d94e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x2.gen.cs new file mode 100644 index 0000000..663c2ec --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x2.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool2x2 + { + [TestCompiler] + public static void bool2x2_operator_equal_wide_wide() + { + bool2x2 a0 = bool2x2(false, false, true, true); + bool2x2 b0 = bool2x2(false, true, true, false); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x2 a1 = bool2x2(true, true, true, true); + bool2x2 b1 = bool2x2(true, true, false, true); + bool2x2 r1 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x2 a2 = bool2x2(true, true, true, true); + bool2x2 b2 = bool2x2(true, true, false, false); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x2 a3 = bool2x2(true, false, false, false); + bool2x2 b3 = bool2x2(false, false, true, true); + bool2x2 r3 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_equal_wide_scalar() + { + bool2x2 a0 = bool2x2(true, true, false, true); + bool b0 = (false); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x2 a1 = bool2x2(true, true, true, true); + bool b1 = (false); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x2 a2 = bool2x2(false, false, false, true); + bool b2 = (false); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x2 a3 = bool2x2(false, false, false, true); + bool b3 = (false); + bool2x2 r3 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_equal_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(false, false, true, false); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool2x2 b1 = bool2x2(false, true, false, false); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool2x2 b2 = bool2x2(false, true, false, true); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool2x2 b3 = bool2x2(true, false, true, true); + bool2x2 r3 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_not_equal_wide_wide() + { + bool2x2 a0 = bool2x2(true, false, false, true); + bool2x2 b0 = bool2x2(false, false, true, false); + bool2x2 r0 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x2 a1 = bool2x2(true, true, true, true); + bool2x2 b1 = bool2x2(false, false, false, false); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x2 a2 = bool2x2(true, true, false, true); + bool2x2 b2 = bool2x2(true, true, false, false); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x2 a3 = bool2x2(true, false, true, false); + bool2x2 b3 = bool2x2(false, false, false, true); + bool2x2 r3 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_not_equal_wide_scalar() + { + bool2x2 a0 = bool2x2(false, false, true, true); + bool b0 = (false); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x2 a1 = bool2x2(true, false, false, true); + bool b1 = (true); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x2 a2 = bool2x2(false, false, true, false); + bool b2 = (true); + bool2x2 r2 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x2 a3 = bool2x2(true, true, true, false); + bool b3 = (true); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(true, true, false, true); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool2x2 b1 = bool2x2(true, false, false, false); + bool2x2 r1 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool2x2 b2 = bool2x2(true, true, false, true); + bool2x2 r2 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (true); + bool2x2 b3 = bool2x2(false, false, false, true); + bool2x2 r3 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_and_wide_wide() + { + bool2x2 a0 = bool2x2(false, true, true, false); + bool2x2 b0 = bool2x2(false, true, false, false); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x2 a1 = bool2x2(false, false, true, false); + bool2x2 b1 = bool2x2(false, true, true, false); + bool2x2 r1 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x2 a2 = bool2x2(true, true, false, true); + bool2x2 b2 = bool2x2(false, true, false, true); + bool2x2 r2 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x2 a3 = bool2x2(false, false, true, false); + bool2x2 b3 = bool2x2(true, false, true, true); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_and_wide_scalar() + { + bool2x2 a0 = bool2x2(false, false, true, true); + bool b0 = (false); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x2 a1 = bool2x2(true, true, true, true); + bool b1 = (false); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x2 a2 = bool2x2(false, false, true, false); + bool b2 = (false); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x2 a3 = bool2x2(true, false, true, false); + bool b3 = (false); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(false, false, true, true); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (false); + bool2x2 b1 = bool2x2(false, true, true, true); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (false); + bool2x2 b2 = bool2x2(true, false, true, true); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (false); + bool2x2 b3 = bool2x2(false, true, true, false); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_or_wide_wide() + { + bool2x2 a0 = bool2x2(true, false, false, true); + bool2x2 b0 = bool2x2(true, false, true, true); + bool2x2 r0 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x2 a1 = bool2x2(true, false, false, false); + bool2x2 b1 = bool2x2(true, true, true, true); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x2 a2 = bool2x2(false, false, true, true); + bool2x2 b2 = bool2x2(true, true, false, false); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x2 a3 = bool2x2(false, false, true, true); + bool2x2 b3 = bool2x2(true, true, true, true); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_or_wide_scalar() + { + bool2x2 a0 = bool2x2(false, false, true, true); + bool b0 = (true); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x2 a1 = bool2x2(false, false, true, false); + bool b1 = (true); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x2 a2 = bool2x2(true, false, false, true); + bool b2 = (true); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x2 a3 = bool2x2(false, false, true, false); + bool b3 = (true); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(true, true, false, false); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool2x2 b1 = bool2x2(false, true, true, false); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool2x2 b2 = bool2x2(true, false, false, false); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool2x2 b3 = bool2x2(false, false, false, false); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_xor_wide_wide() + { + bool2x2 a0 = bool2x2(true, false, true, true); + bool2x2 b0 = bool2x2(false, true, false, false); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x2 a1 = bool2x2(true, true, false, false); + bool2x2 b1 = bool2x2(false, true, false, false); + bool2x2 r1 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x2 a2 = bool2x2(false, false, true, false); + bool2x2 b2 = bool2x2(true, true, true, false); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x2 a3 = bool2x2(false, false, true, false); + bool2x2 b3 = bool2x2(false, false, true, true); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_xor_wide_scalar() + { + bool2x2 a0 = bool2x2(true, false, false, true); + bool b0 = (false); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x2 a1 = bool2x2(true, false, false, true); + bool b1 = (false); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x2 a2 = bool2x2(false, true, false, true); + bool b2 = (true); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x2 a3 = bool2x2(true, false, false, false); + bool b3 = (false); + bool2x2 r3 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(true, false, false, true); + bool2x2 r0 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (false); + bool2x2 b1 = bool2x2(true, true, true, true); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool2x2 b2 = bool2x2(true, true, true, true); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool2x2 b3 = bool2x2(true, false, true, false); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_logical_not() + { + bool2x2 a0 = bool2x2(false, true, false, true); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(!a0, r0); + + bool2x2 a1 = bool2x2(false, false, true, true); + bool2x2 r1 = bool2x2(true, true, false, false); + TestUtils.AreEqual(!a1, r1); + + bool2x2 a2 = bool2x2(false, true, true, false); + bool2x2 r2 = bool2x2(true, false, false, true); + TestUtils.AreEqual(!a2, r2); + + bool2x2 a3 = bool2x2(false, true, false, false); + bool2x2 r3 = bool2x2(true, false, true, true); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x2.gen.cs.meta new file mode 100644 index 0000000..4006bb9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ffa916172073c14499f3e88e1ddaccc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x3.gen.cs new file mode 100644 index 0000000..93dc179 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x3.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool2x3 + { + [TestCompiler] + public static void bool2x3_operator_equal_wide_wide() + { + bool2x3 a0 = bool2x3(false, false, true, true, true, true); + bool2x3 b0 = bool2x3(false, true, true, false, true, true); + bool2x3 r0 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x3 a1 = bool2x3(true, true, true, true, true, true); + bool2x3 b1 = bool2x3(false, true, true, true, false, false); + bool2x3 r1 = bool2x3(false, true, true, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x3 a2 = bool2x3(true, false, false, false, true, true); + bool2x3 b2 = bool2x3(false, false, true, true, true, true); + bool2x3 r2 = bool2x3(false, true, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x3 a3 = bool2x3(true, true, true, false, false, false); + bool2x3 b3 = bool2x3(true, false, false, true, false, true); + bool2x3 r3 = bool2x3(true, false, false, false, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_equal_wide_scalar() + { + bool2x3 a0 = bool2x3(true, true, false, true, true, false); + bool b0 = (false); + bool2x3 r0 = bool2x3(false, false, true, false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x3 a1 = bool2x3(true, true, false, false, false, false); + bool b1 = (true); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x3 a2 = bool2x3(true, false, false, false, true, true); + bool b2 = (false); + bool2x3 r2 = bool2x3(false, true, true, true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x3 a3 = bool2x3(false, true, false, true, false, true); + bool b3 = (false); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_equal_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(false, false, true, false, true, false); + bool2x3 r0 = bool2x3(false, false, true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool2x3 b1 = bool2x3(false, false, false, false, true, false); + bool2x3 r1 = bool2x3(false, false, false, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool2x3 b2 = bool2x3(true, true, false, true, true, false); + bool2x3 r2 = bool2x3(true, true, false, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool2x3 b3 = bool2x3(true, false, false, true, false, false); + bool2x3 r3 = bool2x3(false, true, true, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_not_equal_wide_wide() + { + bool2x3 a0 = bool2x3(true, false, false, true, true, true); + bool2x3 b0 = bool2x3(false, false, true, false, false, false); + bool2x3 r0 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x3 a1 = bool2x3(true, true, true, true, false, true); + bool2x3 b1 = bool2x3(false, false, true, true, false, false); + bool2x3 r1 = bool2x3(true, true, false, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x3 a2 = bool2x3(true, false, true, false, false, true); + bool2x3 b2 = bool2x3(false, false, false, true, true, false); + bool2x3 r2 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x3 a3 = bool2x3(true, true, false, true, false, false); + bool2x3 b3 = bool2x3(false, false, false, false, true, true); + bool2x3 r3 = bool2x3(true, true, false, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_not_equal_wide_scalar() + { + bool2x3 a0 = bool2x3(false, false, true, true, true, true); + bool b0 = (false); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x3 a1 = bool2x3(false, true, false, true, false, true); + bool b1 = (false); + bool2x3 r1 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x3 a2 = bool2x3(false, true, true, true, false, false); + bool b2 = (true); + bool2x3 r2 = bool2x3(true, false, false, false, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x3 a3 = bool2x3(true, true, true, false, false, false); + bool b3 = (true); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(true, true, false, true, false, true); + bool2x3 r0 = bool2x3(false, false, true, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool2x3 b1 = bool2x3(false, false, true, true, true, false); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool2x3 b2 = bool2x3(true, false, false, false, true, true); + bool2x3 r2 = bool2x3(false, true, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool2x3 b3 = bool2x3(false, true, false, true, false, false); + bool2x3 r3 = bool2x3(false, true, false, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_and_wide_wide() + { + bool2x3 a0 = bool2x3(false, true, true, false, false, false); + bool2x3 b0 = bool2x3(false, true, false, false, false, true); + bool2x3 r0 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x3 a1 = bool2x3(true, false, true, true, false, true); + bool2x3 b1 = bool2x3(true, false, false, true, false, true); + bool2x3 r1 = bool2x3(true, false, false, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x3 a2 = bool2x3(false, false, true, false, false, false); + bool2x3 b2 = bool2x3(true, false, true, true, false, false); + bool2x3 r2 = bool2x3(false, false, true, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x3 a3 = bool2x3(false, true, false, true, true, false); + bool2x3 b3 = bool2x3(false, true, false, false, false, true); + bool2x3 r3 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_and_wide_scalar() + { + bool2x3 a0 = bool2x3(false, false, true, true, true, false); + bool b0 = (false); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x3 a1 = bool2x3(true, true, false, false, false, true); + bool b1 = (true); + bool2x3 r1 = bool2x3(true, true, false, false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x3 a2 = bool2x3(false, false, false, true, false, true); + bool b2 = (true); + bool2x3 r2 = bool2x3(false, false, false, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x3 a3 = bool2x3(true, true, false, true, false, true); + bool b3 = (false); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(false, false, true, true, false, false); + bool2x3 r0 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool2x3 b1 = bool2x3(true, true, false, true, false, true); + bool2x3 r1 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool2x3 b2 = bool2x3(false, false, true, true, false, true); + bool2x3 r2 = bool2x3(false, false, true, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool2x3 b3 = bool2x3(false, true, true, true, true, true); + bool2x3 r3 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_or_wide_wide() + { + bool2x3 a0 = bool2x3(true, false, false, true, true, false); + bool2x3 b0 = bool2x3(true, false, true, true, true, true); + bool2x3 r0 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x3 a1 = bool2x3(false, false, false, false, true, true); + bool2x3 b1 = bool2x3(true, true, true, true, false, false); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x3 a2 = bool2x3(false, false, true, true, true, false); + bool2x3 b2 = bool2x3(true, true, true, true, true, true); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x3 a3 = bool2x3(true, true, false, true, false, false); + bool2x3 b3 = bool2x3(false, false, false, false, true, false); + bool2x3 r3 = bool2x3(true, true, false, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_or_wide_scalar() + { + bool2x3 a0 = bool2x3(false, false, true, true, false, true); + bool b0 = (true); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x3 a1 = bool2x3(false, false, true, true, false, false); + bool b1 = (true); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x3 a2 = bool2x3(true, true, false, true, false, false); + bool b2 = (false); + bool2x3 r2 = bool2x3(true, true, false, true, false, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x3 a3 = bool2x3(false, true, false, true, true, true); + bool b3 = (true); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(true, true, false, false, false, false); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (true); + bool2x3 b1 = bool2x3(true, false, true, true, false, false); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool2x3 b2 = bool2x3(false, false, false, false, false, true); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool2x3 b3 = bool2x3(true, true, true, true, true, false); + bool2x3 r3 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_xor_wide_wide() + { + bool2x3 a0 = bool2x3(true, false, true, true, true, true); + bool2x3 b0 = bool2x3(false, true, false, false, false, true); + bool2x3 r0 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x3 a1 = bool2x3(false, false, false, false, true, false); + bool2x3 b1 = bool2x3(false, false, true, true, true, false); + bool2x3 r1 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x3 a2 = bool2x3(false, false, true, false, true, false); + bool2x3 b2 = bool2x3(false, false, true, true, false, false); + bool2x3 r2 = bool2x3(false, false, false, true, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x3 a3 = bool2x3(false, false, true, true, true, true); + bool2x3 b3 = bool2x3(true, true, true, true, false, true); + bool2x3 r3 = bool2x3(true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_xor_wide_scalar() + { + bool2x3 a0 = bool2x3(true, false, false, true, true, false); + bool b0 = (false); + bool2x3 r0 = bool2x3(true, false, false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x3 a1 = bool2x3(false, true, false, true, true, false); + bool b1 = (false); + bool2x3 r1 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x3 a2 = bool2x3(true, false, false, false, false, false); + bool b2 = (true); + bool2x3 r2 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x3 a3 = bool2x3(false, false, false, true, true, false); + bool b3 = (false); + bool2x3 r3 = bool2x3(false, false, false, true, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(true, false, false, true, false, true); + bool2x3 r0 = bool2x3(false, true, true, false, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool2x3 b1 = bool2x3(true, true, true, true, true, true); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool2x3 b2 = bool2x3(true, true, false, true, false, true); + bool2x3 r2 = bool2x3(false, false, true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool2x3 b3 = bool2x3(false, false, false, true, false, true); + bool2x3 r3 = bool2x3(false, false, false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_logical_not() + { + bool2x3 a0 = bool2x3(false, true, false, true, false, false); + bool2x3 r0 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(!a0, r0); + + bool2x3 a1 = bool2x3(false, true, false, true, true, true); + bool2x3 r1 = bool2x3(true, false, true, false, false, false); + TestUtils.AreEqual(!a1, r1); + + bool2x3 a2 = bool2x3(false, false, true, false, false, true); + bool2x3 r2 = bool2x3(true, true, false, true, true, false); + TestUtils.AreEqual(!a2, r2); + + bool2x3 a3 = bool2x3(false, false, false, true, true, true); + bool2x3 r3 = bool2x3(true, true, true, false, false, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x3.gen.cs.meta new file mode 100644 index 0000000..f7b3ffb --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a058a163908539c4d9aa34e925e16c84 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x4.gen.cs new file mode 100644 index 0000000..7112e44 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x4.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool2x4 + { + [TestCompiler] + public static void bool2x4_operator_equal_wide_wide() + { + bool2x4 a0 = bool2x4(false, false, true, true, true, true, true, true); + bool2x4 b0 = bool2x4(false, true, true, false, true, true, false, true); + bool2x4 r0 = bool2x4(true, false, true, false, true, true, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x4 a1 = bool2x4(true, true, true, true, true, false, false, false); + bool2x4 b1 = bool2x4(true, true, false, false, false, false, true, true); + bool2x4 r1 = bool2x4(true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x4 a2 = bool2x4(true, true, true, true, true, false, false, false); + bool2x4 b2 = bool2x4(true, true, true, false, false, true, false, true); + bool2x4 r2 = bool2x4(true, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x4 a3 = bool2x4(false, true, false, true, true, true, true, true); + bool2x4 b3 = bool2x4(false, true, true, false, false, true, false, false); + bool2x4 r3 = bool2x4(true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_equal_wide_scalar() + { + bool2x4 a0 = bool2x4(true, true, false, true, true, false, true, true); + bool b0 = (false); + bool2x4 r0 = bool2x4(false, false, true, false, false, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x4 a1 = bool2x4(true, false, false, false, true, false, false, false); + bool b1 = (false); + bool2x4 r1 = bool2x4(false, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x4 a2 = bool2x4(false, true, false, false, true, false, true, false); + bool b2 = (true); + bool2x4 r2 = bool2x4(false, true, false, false, true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x4 a3 = bool2x4(true, true, false, false, true, false, true, true); + bool b3 = (false); + bool2x4 r3 = bool2x4(false, false, true, true, false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_equal_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(false, false, true, false, true, false, true, false); + bool2x4 r0 = bool2x4(false, false, true, false, true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool2x4 b1 = bool2x4(false, false, true, false, true, true, true, false); + bool2x4 r1 = bool2x4(true, true, false, true, false, false, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool2x4 b2 = bool2x4(true, false, false, true, false, false, true, false); + bool2x4 r2 = bool2x4(true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool2x4 b3 = bool2x4(true, false, false, true, false, true, true, true); + bool2x4 r3 = bool2x4(false, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_not_equal_wide_wide() + { + bool2x4 a0 = bool2x4(true, false, false, true, true, true, true, true); + bool2x4 b0 = bool2x4(false, false, true, false, false, false, false, false); + bool2x4 r0 = bool2x4(true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x4 a1 = bool2x4(true, true, false, true, true, false, true, false); + bool2x4 b1 = bool2x4(true, true, false, false, false, false, false, true); + bool2x4 r1 = bool2x4(false, false, false, true, true, false, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x4 a2 = bool2x4(false, true, true, true, false, true, false, false); + bool2x4 b2 = bool2x4(true, false, false, false, false, false, true, true); + bool2x4 r2 = bool2x4(true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x4 a3 = bool2x4(false, true, true, true, false, false, true, false); + bool2x4 b3 = bool2x4(true, false, false, false, true, true, false, false); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_not_equal_wide_scalar() + { + bool2x4 a0 = bool2x4(false, false, true, true, true, true, false, false); + bool b0 = (false); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x4 a1 = bool2x4(true, true, false, true, false, true, true, true); + bool b1 = (false); + bool2x4 r1 = bool2x4(true, true, false, true, false, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x4 a2 = bool2x4(true, false, true, true, true, true, false, false); + bool b2 = (false); + bool2x4 r2 = bool2x4(true, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x4 a3 = bool2x4(false, false, true, true, true, false, true, false); + bool b3 = (false); + bool2x4 r3 = bool2x4(false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(true, true, false, true, false, true, false, false); + bool2x4 r0 = bool2x4(false, false, true, false, true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool2x4 b1 = bool2x4(true, true, true, false, true, true, false, false); + bool2x4 r1 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool2x4 b2 = bool2x4(true, true, false, false, true, false, true, false); + bool2x4 r2 = bool2x4(true, true, false, false, true, false, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool2x4 b3 = bool2x4(true, true, true, false, false, true, false, false); + bool2x4 r3 = bool2x4(true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_and_wide_wide() + { + bool2x4 a0 = bool2x4(false, true, true, false, false, false, true, false); + bool2x4 b0 = bool2x4(false, true, false, false, false, true, true, false); + bool2x4 r0 = bool2x4(false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x4 a1 = bool2x4(true, true, false, true, false, false, true, false); + bool2x4 b1 = bool2x4(false, true, false, true, true, false, true, true); + bool2x4 r1 = bool2x4(false, true, false, true, false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x4 a2 = bool2x4(false, false, false, true, false, true, true, false); + bool2x4 b2 = bool2x4(false, false, false, true, false, false, false, true); + bool2x4 r2 = bool2x4(false, false, false, true, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x4 a3 = bool2x4(false, false, true, false, false, true, false, false); + bool2x4 b3 = bool2x4(true, false, false, false, true, false, false, true); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_and_wide_scalar() + { + bool2x4 a0 = bool2x4(false, false, true, true, true, false, true, true); + bool b0 = (false); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x4 a1 = bool2x4(true, false, false, true, false, true, false, false); + bool b1 = (false); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x4 a2 = bool2x4(true, true, true, false, true, false, true, false); + bool b2 = (false); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x4 a3 = bool2x4(true, true, false, false, true, false, false, true); + bool b3 = (true); + bool2x4 r3 = bool2x4(true, true, false, false, true, false, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(false, false, true, true, false, false, true, true); + bool2x4 r0 = bool2x4(false, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool2x4 b1 = bool2x4(false, true, false, true, true, false, false, true); + bool2x4 r1 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool2x4 b2 = bool2x4(false, true, true, false, true, true, true, true); + bool2x4 r2 = bool2x4(false, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool2x4 b3 = bool2x4(false, true, true, true, false, true, false, true); + bool2x4 r3 = bool2x4(false, true, true, true, false, true, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_or_wide_wide() + { + bool2x4 a0 = bool2x4(true, false, false, true, true, false, false, false); + bool2x4 b0 = bool2x4(true, false, true, true, true, true, true, true); + bool2x4 r0 = bool2x4(true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x4 a1 = bool2x4(false, false, true, true, false, false, true, true); + bool2x4 b1 = bool2x4(true, true, false, false, true, true, true, true); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x4 a2 = bool2x4(true, false, true, true, false, true, false, false); + bool2x4 b2 = bool2x4(true, true, false, false, false, false, true, false); + bool2x4 r2 = bool2x4(true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x4 a3 = bool2x4(false, false, true, false, true, false, false, true); + bool2x4 b3 = bool2x4(false, true, false, true, false, false, true, true); + bool2x4 r3 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_or_wide_scalar() + { + bool2x4 a0 = bool2x4(false, false, true, true, false, true, false, true); + bool b0 = (true); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x4 a1 = bool2x4(false, true, false, false, true, false, true, false); + bool b1 = (true); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x4 a2 = bool2x4(true, false, false, true, true, false, true, true); + bool b2 = (false); + bool2x4 r2 = bool2x4(true, false, false, true, true, false, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x4 a3 = bool2x4(true, true, true, true, true, false, false, false); + bool b3 = (true); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(true, true, false, false, false, false, true, true); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool2x4 b1 = bool2x4(true, true, false, false, false, false, false, false); + bool2x4 r1 = bool2x4(true, true, false, false, false, false, false, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool2x4 b2 = bool2x4(false, true, false, true, true, true, true, true); + bool2x4 r2 = bool2x4(false, true, false, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool2x4 b3 = bool2x4(true, false, false, true, true, false, false, false); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_xor_wide_wide() + { + bool2x4 a0 = bool2x4(true, false, true, true, true, true, false, false); + bool2x4 b0 = bool2x4(false, true, false, false, false, true, false, false); + bool2x4 r0 = bool2x4(true, true, true, true, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x4 a1 = bool2x4(false, false, true, false, false, false, true, false); + bool2x4 b1 = bool2x4(true, true, true, false, false, false, true, true); + bool2x4 r1 = bool2x4(true, true, false, false, false, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x4 a2 = bool2x4(true, false, false, false, true, true, true, true); + bool2x4 b2 = bool2x4(false, false, true, true, true, true, false, true); + bool2x4 r2 = bool2x4(true, false, true, true, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x4 a3 = bool2x4(true, false, true, true, false, false, true, false); + bool2x4 b3 = bool2x4(true, false, false, false, true, false, false, false); + bool2x4 r3 = bool2x4(false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_xor_wide_scalar() + { + bool2x4 a0 = bool2x4(true, false, false, true, true, false, false, false); + bool b0 = (false); + bool2x4 r0 = bool2x4(true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x4 a1 = bool2x4(true, true, true, false, true, true, false, false); + bool b1 = (false); + bool2x4 r1 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x4 a2 = bool2x4(false, false, false, false, false, false, true, true); + bool b2 = (false); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x4 a3 = bool2x4(false, false, false, false, true, true, false, false); + bool b3 = (false); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(true, false, false, true, false, true, true, true); + bool2x4 r0 = bool2x4(false, true, true, false, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool2x4 b1 = bool2x4(true, true, true, true, true, true, true, false); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool2x4 b2 = bool2x4(false, true, false, false, false, false, true, false); + bool2x4 r2 = bool2x4(true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool2x4 b3 = bool2x4(false, true, true, false, true, false, false, false); + bool2x4 r3 = bool2x4(true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_logical_not() + { + bool2x4 a0 = bool2x4(false, true, false, true, false, false, false, true); + bool2x4 r0 = bool2x4(true, false, true, false, true, true, true, false); + TestUtils.AreEqual(!a0, r0); + + bool2x4 a1 = bool2x4(true, true, true, true, false, false, false, true); + bool2x4 r1 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(!a1, r1); + + bool2x4 a2 = bool2x4(false, true, false, true, false, false, true, true); + bool2x4 r2 = bool2x4(true, false, true, false, true, true, false, false); + TestUtils.AreEqual(!a2, r2); + + bool2x4 a3 = bool2x4(true, true, true, false, true, false, false, true); + bool2x4 r3 = bool2x4(false, false, false, true, false, true, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x4.gen.cs.meta new file mode 100644 index 0000000..96b1e80 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa56fbe206d514b43a4f21c1ecd2a9bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3.gen.cs new file mode 100644 index 0000000..a3fcfc5 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3.gen.cs @@ -0,0 +1,436 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool3 + { + [TestCompiler] + public static void bool3_constructor() + { + bool3 a = new bool3(false, true, false); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, false); + } + + [TestCompiler] + public static void bool3_scalar_constructor() + { + bool3 a = new bool3(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, true); + } + + [TestCompiler] + public static void bool3_static_constructor() + { + bool3 a = bool3(false, true, false); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, false); + } + + [TestCompiler] + public static void bool3_static_scalar_constructor() + { + bool3 a = bool3(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, true); + } + + [TestCompiler] + public static void bool3_operator_equal_wide_wide() + { + bool3 a0 = bool3(false, false, true); + bool3 b0 = bool3(false, true, true); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3 a1 = bool3(true, true, true); + bool3 b1 = bool3(false, true, true); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool3 a2 = bool3(true, true, true); + bool3 b2 = bool3(false, true, true); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool3 a3 = bool3(true, true, true); + bool3 b3 = bool3(true, false, false); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3_operator_equal_wide_scalar() + { + bool3 a0 = bool3(true, true, false); + bool b0 = (false); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3 a1 = bool3(true, false, true); + bool b1 = (true); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool3 a2 = bool3(true, false, false); + bool b2 = (true); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3 a3 = bool3(false, true, false); + bool b3 = (false); + bool3 r3 = bool3(true, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3_operator_equal_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(false, false, true); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool3 b1 = bool3(true, false, true); + bool3 r1 = bool3(false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool3 b2 = bool3(false, false, false); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool3 b3 = bool3(false, true, true); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3_operator_not_equal_wide_wide() + { + bool3 a0 = bool3(true, false, false); + bool3 b0 = bool3(false, false, true); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3 a1 = bool3(true, true, true); + bool3 b1 = bool3(false, false, false); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3 a2 = bool3(true, true, true); + bool3 b2 = bool3(false, false, true); + bool3 r2 = bool3(true, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool3 a3 = bool3(true, false, true); + bool3 b3 = bool3(true, false, false); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3_operator_not_equal_wide_scalar() + { + bool3 a0 = bool3(false, false, true); + bool b0 = (false); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3 a1 = bool3(true, true, false); + bool b1 = (true); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3 a2 = bool3(false, false, true); + bool b2 = (true); + bool3 r2 = bool3(true, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool3 a3 = bool3(false, false, true); + bool b3 = (true); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(true, true, false); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (true); + bool3 b1 = bool3(false, true, false); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool3 b2 = bool3(false, true, true); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (true); + bool3 b3 = bool3(false, true, true); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_and_wide_wide() + { + bool3 a0 = bool3(false, true, true); + bool3 b0 = bool3(false, true, false); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3 a1 = bool3(false, false, false); + bool3 b1 = bool3(false, false, true); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3 a2 = bool3(true, false, true); + bool3 b2 = bool3(true, false, false); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3 a3 = bool3(true, false, true); + bool3 b3 = bool3(true, false, true); + bool3 r3 = bool3(true, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_and_wide_scalar() + { + bool3 a0 = bool3(false, false, true); + bool b0 = (false); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3 a1 = bool3(true, false, true); + bool b1 = (true); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool3 a2 = bool3(true, false, false); + bool b2 = (true); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3 a3 = bool3(false, false, true); + bool b3 = (true); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(false, false, true); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool3 b1 = bool3(false, false, true); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool3 b2 = bool3(true, false, true); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (false); + bool3 b3 = bool3(true, true, false); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_or_wide_wide() + { + bool3 a0 = bool3(true, false, false); + bool3 b0 = bool3(true, false, true); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3 a1 = bool3(true, true, false); + bool3 b1 = bool3(true, true, true); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3 a2 = bool3(false, false, false); + bool3 b2 = bool3(true, true, true); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3 a3 = bool3(false, true, true); + bool3 b3 = bool3(true, false, false); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_or_wide_scalar() + { + bool3 a0 = bool3(false, false, true); + bool b0 = (true); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3 a1 = bool3(true, true, false); + bool b1 = (false); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool3 a2 = bool3(true, true, true); + bool b2 = (false); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3 a3 = bool3(false, true, false); + bool b3 = (false); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(true, true, false); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool3 b1 = bool3(false, false, true); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool3 b2 = bool3(false, true, true); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool3 b3 = bool3(false, false, false); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_xor_wide_wide() + { + bool3 a0 = bool3(true, false, true); + bool3 b0 = bool3(false, true, false); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3 a1 = bool3(true, true, true); + bool3 b1 = bool3(false, false, true); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3 a2 = bool3(false, false, false); + bool3 b2 = bool3(false, false, true); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3 a3 = bool3(false, true, false); + bool3 b3 = bool3(true, true, false); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_xor_wide_scalar() + { + bool3 a0 = bool3(true, false, false); + bool b0 = (false); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3 a1 = bool3(true, false, false); + bool b1 = (true); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3 a2 = bool3(false, false, true); + bool b2 = (true); + bool3 r2 = bool3(true, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3 a3 = bool3(true, true, true); + bool b3 = (false); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(true, false, false); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool3 b1 = bool3(false, true, true); + bool3 r1 = bool3(true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool3 b2 = bool3(true, true, true); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool3 b3 = bool3(true, true, true); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3_operator_logical_not() + { + bool3 a0 = bool3(false, true, false); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(!a0, r0); + + bool3 a1 = bool3(true, false, false); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(!a1, r1); + + bool3 a2 = bool3(true, false, true); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(!a2, r2); + + bool3 a3 = bool3(true, false, false); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3.gen.cs.meta new file mode 100644 index 0000000..32e56c8 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d208b4e1c03551a499e9169aac737e5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x2.gen.cs new file mode 100644 index 0000000..e0af4f7 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x2.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool3x2 + { + [TestCompiler] + public static void bool3x2_operator_equal_wide_wide() + { + bool3x2 a0 = bool3x2(false, false, true, true, true, true); + bool3x2 b0 = bool3x2(false, true, true, false, true, true); + bool3x2 r0 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x2 a1 = bool3x2(true, true, true, true, true, true); + bool3x2 b1 = bool3x2(false, true, true, true, false, false); + bool3x2 r1 = bool3x2(false, true, true, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x2 a2 = bool3x2(true, false, false, false, true, true); + bool3x2 b2 = bool3x2(false, false, true, true, true, true); + bool3x2 r2 = bool3x2(false, true, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x2 a3 = bool3x2(true, true, true, false, false, false); + bool3x2 b3 = bool3x2(true, false, false, true, false, true); + bool3x2 r3 = bool3x2(true, false, false, false, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_equal_wide_scalar() + { + bool3x2 a0 = bool3x2(true, true, false, true, true, false); + bool b0 = (false); + bool3x2 r0 = bool3x2(false, false, true, false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x2 a1 = bool3x2(true, true, false, false, false, false); + bool b1 = (true); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x2 a2 = bool3x2(true, false, false, false, true, true); + bool b2 = (false); + bool3x2 r2 = bool3x2(false, true, true, true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x2 a3 = bool3x2(false, true, false, true, false, true); + bool b3 = (false); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_equal_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(false, false, true, false, true, false); + bool3x2 r0 = bool3x2(false, false, true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool3x2 b1 = bool3x2(false, false, false, false, true, false); + bool3x2 r1 = bool3x2(false, false, false, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool3x2 b2 = bool3x2(true, true, false, true, true, false); + bool3x2 r2 = bool3x2(true, true, false, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool3x2 b3 = bool3x2(true, false, false, true, false, false); + bool3x2 r3 = bool3x2(false, true, true, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_not_equal_wide_wide() + { + bool3x2 a0 = bool3x2(true, false, false, true, true, true); + bool3x2 b0 = bool3x2(false, false, true, false, false, false); + bool3x2 r0 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x2 a1 = bool3x2(true, true, true, true, false, true); + bool3x2 b1 = bool3x2(false, false, true, true, false, false); + bool3x2 r1 = bool3x2(true, true, false, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x2 a2 = bool3x2(true, false, true, false, false, true); + bool3x2 b2 = bool3x2(false, false, false, true, true, false); + bool3x2 r2 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x2 a3 = bool3x2(true, true, false, true, false, false); + bool3x2 b3 = bool3x2(false, false, false, false, true, true); + bool3x2 r3 = bool3x2(true, true, false, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_not_equal_wide_scalar() + { + bool3x2 a0 = bool3x2(false, false, true, true, true, true); + bool b0 = (false); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x2 a1 = bool3x2(false, true, false, true, false, true); + bool b1 = (false); + bool3x2 r1 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x2 a2 = bool3x2(false, true, true, true, false, false); + bool b2 = (true); + bool3x2 r2 = bool3x2(true, false, false, false, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x2 a3 = bool3x2(true, true, true, false, false, false); + bool b3 = (true); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(true, true, false, true, false, true); + bool3x2 r0 = bool3x2(false, false, true, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool3x2 b1 = bool3x2(false, false, true, true, true, false); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool3x2 b2 = bool3x2(true, false, false, false, true, true); + bool3x2 r2 = bool3x2(false, true, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool3x2 b3 = bool3x2(false, true, false, true, false, false); + bool3x2 r3 = bool3x2(false, true, false, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_and_wide_wide() + { + bool3x2 a0 = bool3x2(false, true, true, false, false, false); + bool3x2 b0 = bool3x2(false, true, false, false, false, true); + bool3x2 r0 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x2 a1 = bool3x2(true, false, true, true, false, true); + bool3x2 b1 = bool3x2(true, false, false, true, false, true); + bool3x2 r1 = bool3x2(true, false, false, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x2 a2 = bool3x2(false, false, true, false, false, false); + bool3x2 b2 = bool3x2(true, false, true, true, false, false); + bool3x2 r2 = bool3x2(false, false, true, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x2 a3 = bool3x2(false, true, false, true, true, false); + bool3x2 b3 = bool3x2(false, true, false, false, false, true); + bool3x2 r3 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_and_wide_scalar() + { + bool3x2 a0 = bool3x2(false, false, true, true, true, false); + bool b0 = (false); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x2 a1 = bool3x2(true, true, false, false, false, true); + bool b1 = (true); + bool3x2 r1 = bool3x2(true, true, false, false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x2 a2 = bool3x2(false, false, false, true, false, true); + bool b2 = (true); + bool3x2 r2 = bool3x2(false, false, false, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x2 a3 = bool3x2(true, true, false, true, false, true); + bool b3 = (false); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(false, false, true, true, false, false); + bool3x2 r0 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool3x2 b1 = bool3x2(true, true, false, true, false, true); + bool3x2 r1 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool3x2 b2 = bool3x2(false, false, true, true, false, true); + bool3x2 r2 = bool3x2(false, false, true, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool3x2 b3 = bool3x2(false, true, true, true, true, true); + bool3x2 r3 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_or_wide_wide() + { + bool3x2 a0 = bool3x2(true, false, false, true, true, false); + bool3x2 b0 = bool3x2(true, false, true, true, true, true); + bool3x2 r0 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x2 a1 = bool3x2(false, false, false, false, true, true); + bool3x2 b1 = bool3x2(true, true, true, true, false, false); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x2 a2 = bool3x2(false, false, true, true, true, false); + bool3x2 b2 = bool3x2(true, true, true, true, true, true); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x2 a3 = bool3x2(true, true, false, true, false, false); + bool3x2 b3 = bool3x2(false, false, false, false, true, false); + bool3x2 r3 = bool3x2(true, true, false, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_or_wide_scalar() + { + bool3x2 a0 = bool3x2(false, false, true, true, false, true); + bool b0 = (true); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x2 a1 = bool3x2(false, false, true, true, false, false); + bool b1 = (true); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x2 a2 = bool3x2(true, true, false, true, false, false); + bool b2 = (false); + bool3x2 r2 = bool3x2(true, true, false, true, false, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x2 a3 = bool3x2(false, true, false, true, true, true); + bool b3 = (true); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(true, true, false, false, false, false); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (true); + bool3x2 b1 = bool3x2(true, false, true, true, false, false); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool3x2 b2 = bool3x2(false, false, false, false, false, true); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool3x2 b3 = bool3x2(true, true, true, true, true, false); + bool3x2 r3 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_xor_wide_wide() + { + bool3x2 a0 = bool3x2(true, false, true, true, true, true); + bool3x2 b0 = bool3x2(false, true, false, false, false, true); + bool3x2 r0 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x2 a1 = bool3x2(false, false, false, false, true, false); + bool3x2 b1 = bool3x2(false, false, true, true, true, false); + bool3x2 r1 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x2 a2 = bool3x2(false, false, true, false, true, false); + bool3x2 b2 = bool3x2(false, false, true, true, false, false); + bool3x2 r2 = bool3x2(false, false, false, true, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x2 a3 = bool3x2(false, false, true, true, true, true); + bool3x2 b3 = bool3x2(true, true, true, true, false, true); + bool3x2 r3 = bool3x2(true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_xor_wide_scalar() + { + bool3x2 a0 = bool3x2(true, false, false, true, true, false); + bool b0 = (false); + bool3x2 r0 = bool3x2(true, false, false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x2 a1 = bool3x2(false, true, false, true, true, false); + bool b1 = (false); + bool3x2 r1 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x2 a2 = bool3x2(true, false, false, false, false, false); + bool b2 = (true); + bool3x2 r2 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x2 a3 = bool3x2(false, false, false, true, true, false); + bool b3 = (false); + bool3x2 r3 = bool3x2(false, false, false, true, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(true, false, false, true, false, true); + bool3x2 r0 = bool3x2(false, true, true, false, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool3x2 b1 = bool3x2(true, true, true, true, true, true); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool3x2 b2 = bool3x2(true, true, false, true, false, true); + bool3x2 r2 = bool3x2(false, false, true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool3x2 b3 = bool3x2(false, false, false, true, false, true); + bool3x2 r3 = bool3x2(false, false, false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_logical_not() + { + bool3x2 a0 = bool3x2(false, true, false, true, false, false); + bool3x2 r0 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(!a0, r0); + + bool3x2 a1 = bool3x2(false, true, false, true, true, true); + bool3x2 r1 = bool3x2(true, false, true, false, false, false); + TestUtils.AreEqual(!a1, r1); + + bool3x2 a2 = bool3x2(false, false, true, false, false, true); + bool3x2 r2 = bool3x2(true, true, false, true, true, false); + TestUtils.AreEqual(!a2, r2); + + bool3x2 a3 = bool3x2(false, false, false, true, true, true); + bool3x2 r3 = bool3x2(true, true, true, false, false, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x2.gen.cs.meta new file mode 100644 index 0000000..f8b84ee --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2bbc879646b3ce649a77073d236979fc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x3.gen.cs new file mode 100644 index 0000000..fc49a39 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x3.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool3x3 + { + [TestCompiler] + public static void bool3x3_operator_equal_wide_wide() + { + bool3x3 a0 = bool3x3(false, false, true, true, true, true, true, true, true); + bool3x3 b0 = bool3x3(false, true, true, false, true, true, false, true, true); + bool3x3 r0 = bool3x3(true, false, true, false, true, true, false, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x3 a1 = bool3x3(true, true, true, true, false, false, false, true, true); + bool3x3 b1 = bool3x3(true, false, false, false, false, true, true, true, true); + bool3x3 r1 = bool3x3(true, false, false, false, true, false, false, true, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x3 a2 = bool3x3(true, true, true, false, false, false, false, true, false); + bool3x3 b2 = bool3x3(true, false, false, true, false, true, false, true, true); + bool3x3 r2 = bool3x3(true, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x3 a3 = bool3x3(true, true, true, true, true, false, true, true, false); + bool3x3 b3 = bool3x3(false, false, true, false, false, false, true, true, false); + bool3x3 r3 = bool3x3(false, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_equal_wide_scalar() + { + bool3x3 a0 = bool3x3(true, true, false, true, true, false, true, true, true); + bool b0 = (false); + bool3x3 r0 = bool3x3(false, false, true, false, false, true, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x3 a1 = bool3x3(false, false, false, true, false, false, false, false, true); + bool b1 = (false); + bool3x3 r1 = bool3x3(true, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x3 a2 = bool3x3(true, false, true, false, true, false, true, false, true); + bool b2 = (false); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x3 a3 = bool3x3(false, true, false, true, true, false, false, false, false); + bool b3 = (false); + bool3x3 r3 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_equal_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(false, false, true, false, true, false, true, false, false); + bool3x3 r0 = bool3x3(false, false, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool3x3 b1 = bool3x3(false, true, false, true, true, true, false, true, true); + bool3x3 r1 = bool3x3(true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool3x3 b2 = bool3x3(false, true, false, false, true, false, false, true, false); + bool3x3 r2 = bool3x3(true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool3x3 b3 = bool3x3(true, false, true, true, true, true, false, false, true); + bool3x3 r3 = bool3x3(false, true, false, false, false, false, true, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_not_equal_wide_wide() + { + bool3x3 a0 = bool3x3(true, false, false, true, true, true, true, true, true); + bool3x3 b0 = bool3x3(false, false, true, false, false, false, false, false, true); + bool3x3 r0 = bool3x3(true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x3 a1 = bool3x3(true, false, true, true, false, true, false, false, true); + bool3x3 b1 = bool3x3(true, false, false, false, false, false, true, true, false); + bool3x3 r1 = bool3x3(false, false, true, true, false, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x3 a2 = bool3x3(true, true, false, true, false, false, false, true, true); + bool3x3 b2 = bool3x3(false, false, false, false, true, true, true, false, false); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x3 a3 = bool3x3(true, false, false, true, false, false, true, false, true); + bool3x3 b3 = bool3x3(false, true, true, false, false, true, false, false, true); + bool3x3 r3 = bool3x3(true, true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_not_equal_wide_scalar() + { + bool3x3 a0 = bool3x3(false, false, true, true, true, true, false, false, true); + bool b0 = (false); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x3 a1 = bool3x3(false, false, true, false, true, true, true, true, false); + bool b1 = (true); + bool3x3 r1 = bool3x3(true, true, false, true, false, false, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x3 a2 = bool3x3(false, true, true, true, false, false, false, false, false); + bool b2 = (true); + bool3x3 r2 = bool3x3(true, false, false, false, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x3 a3 = bool3x3(true, true, false, true, false, true, true, true, false); + bool b3 = (true); + bool3x3 r3 = bool3x3(false, false, true, false, true, false, false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(true, true, false, true, false, true, false, false, false); + bool3x3 r0 = bool3x3(false, false, true, false, true, false, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (true); + bool3x3 b1 = bool3x3(true, true, false, true, true, false, false, false, true); + bool3x3 r1 = bool3x3(false, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool3x3 b2 = bool3x3(false, false, true, false, true, false, false, true, true); + bool3x3 r2 = bool3x3(true, true, false, true, false, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (true); + bool3x3 b3 = bool3x3(false, false, true, false, false, true, false, true, false); + bool3x3 r3 = bool3x3(true, true, false, true, true, false, true, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_and_wide_wide() + { + bool3x3 a0 = bool3x3(false, true, true, false, false, false, true, false, true); + bool3x3 b0 = bool3x3(false, true, false, false, false, true, true, false, false); + bool3x3 r0 = bool3x3(false, true, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x3 a1 = bool3x3(true, false, true, false, false, true, false, false, false); + bool3x3 b1 = bool3x3(true, false, true, true, false, true, true, false, false); + bool3x3 r1 = bool3x3(true, false, true, false, false, true, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x3 a2 = bool3x3(false, true, false, true, true, false, false, false, true); + bool3x3 b2 = bool3x3(false, true, false, false, false, true, true, false, false); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x3 a3 = bool3x3(false, false, true, false, false, true, true, true, false); + bool3x3 b3 = bool3x3(false, true, false, false, true, false, false, false, true); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_and_wide_scalar() + { + bool3x3 a0 = bool3x3(false, false, true, true, true, false, true, true, true); + bool b0 = (false); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x3 a1 = bool3x3(false, false, true, false, true, false, false, true, false); + bool b1 = (false); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x3 a2 = bool3x3(true, false, true, false, true, false, true, true, true); + bool b2 = (true); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, true, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x3 a3 = bool3x3(false, true, false, false, true, false, true, true, false); + bool b3 = (false); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(false, false, true, true, false, false, true, true, true); + bool3x3 r0 = bool3x3(false, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (false); + bool3x3 b1 = bool3x3(true, false, true, true, false, false, true, true, false); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool3x3 b2 = bool3x3(true, false, true, true, true, true, true, false, true); + bool3x3 r2 = bool3x3(true, false, true, true, true, true, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool3x3 b3 = bool3x3(true, false, true, false, true, false, true, false, true); + bool3x3 r3 = bool3x3(true, false, true, false, true, false, true, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_or_wide_wide() + { + bool3x3 a0 = bool3x3(true, false, false, true, true, false, false, false, false); + bool3x3 b0 = bool3x3(true, false, true, true, true, true, true, true, true); + bool3x3 r0 = bool3x3(true, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x3 a1 = bool3x3(false, true, true, false, false, true, true, true, false); + bool3x3 b1 = bool3x3(true, false, false, true, true, true, true, true, true); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x3 a2 = bool3x3(true, true, false, true, false, false, false, false, true); + bool3x3 b2 = bool3x3(false, false, false, false, true, false, false, true, false); + bool3x3 r2 = bool3x3(true, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x3 a3 = bool3x3(false, true, false, false, true, false, false, false, true); + bool3x3 b3 = bool3x3(true, false, false, true, true, true, true, true, false); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_or_wide_scalar() + { + bool3x3 a0 = bool3x3(false, false, true, true, false, true, false, true, false); + bool b0 = (true); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x3 a1 = bool3x3(true, false, false, true, false, true, false, true, false); + bool b1 = (true); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x3 a2 = bool3x3(false, true, true, false, true, true, true, true, true); + bool b2 = (false); + bool3x3 r2 = bool3x3(false, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x3 a3 = bool3x3(true, true, false, false, false, true, false, false, true); + bool b3 = (true); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(true, true, false, false, false, false, true, true, false); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (true); + bool3x3 b1 = bool3x3(true, false, false, false, false, false, false, false, false); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool3x3 b2 = bool3x3(false, true, true, true, true, true, false, true, false); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool3x3 b3 = bool3x3(true, true, false, false, false, true, false, true, true); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_xor_wide_wide() + { + bool3x3 a0 = bool3x3(true, false, true, true, true, true, false, false, false); + bool3x3 b0 = bool3x3(false, true, false, false, false, true, false, false, true); + bool3x3 r0 = bool3x3(true, true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x3 a1 = bool3x3(false, true, false, false, false, true, false, true, false); + bool3x3 b1 = bool3x3(true, true, false, false, false, true, true, false, false); + bool3x3 r1 = bool3x3(true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x3 a2 = bool3x3(false, false, true, true, true, true, true, false, true); + bool3x3 b2 = bool3x3(true, true, true, true, false, true, true, false, false); + bool3x3 r2 = bool3x3(true, true, false, false, true, false, false, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x3 a3 = bool3x3(true, false, false, true, false, false, true, true, true); + bool3x3 b3 = bool3x3(false, true, false, false, false, false, false, true, false); + bool3x3 r3 = bool3x3(true, true, false, true, false, false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_xor_wide_scalar() + { + bool3x3 a0 = bool3x3(true, false, false, true, true, false, false, false, true); + bool b0 = (false); + bool3x3 r0 = bool3x3(true, false, false, true, true, false, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x3 a1 = bool3x3(false, true, false, true, true, false, false, false, false); + bool b1 = (true); + bool3x3 r1 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x3 a2 = bool3x3(false, false, false, false, true, true, false, false, false); + bool b2 = (false); + bool3x3 r2 = bool3x3(false, false, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x3 a3 = bool3x3(false, true, true, false, false, false, true, false, false); + bool b3 = (false); + bool3x3 r3 = bool3x3(false, true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(true, false, false, true, false, true, true, true, true); + bool3x3 r0 = bool3x3(false, true, true, false, true, false, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool3x3 b1 = bool3x3(true, true, true, true, true, true, false, true, false); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool3x3 b2 = bool3x3(false, false, false, false, true, false, true, false, true); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool3x3 b3 = bool3x3(false, true, false, false, false, false, true, false, false); + bool3x3 r3 = bool3x3(true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_logical_not() + { + bool3x3 a0 = bool3x3(false, true, false, true, false, false, false, true, true); + bool3x3 r0 = bool3x3(true, false, true, false, true, true, true, false, false); + TestUtils.AreEqual(!a0, r0); + + bool3x3 a1 = bool3x3(false, true, true, false, false, false, true, false, false); + bool3x3 r1 = bool3x3(true, false, false, true, true, true, false, true, true); + TestUtils.AreEqual(!a1, r1); + + bool3x3 a2 = bool3x3(true, true, false, false, true, true, true, true, true); + bool3x3 r2 = bool3x3(false, false, true, true, false, false, false, false, false); + TestUtils.AreEqual(!a2, r2); + + bool3x3 a3 = bool3x3(true, true, false, false, true, false, false, false, true); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x3.gen.cs.meta new file mode 100644 index 0000000..070d464 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 16fef77cdd788b54983aea9d37b2efb1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x4.gen.cs new file mode 100644 index 0000000..dae3750 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x4.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool3x4 + { + [TestCompiler] + public static void bool3x4_operator_equal_wide_wide() + { + bool3x4 a0 = bool3x4(false, false, true, true, true, true, true, true, true, true, true, true); + bool3x4 b0 = bool3x4(false, true, true, false, true, true, false, true, true, true, false, false); + bool3x4 r0 = bool3x4(true, false, true, false, true, true, false, true, true, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x4 a1 = bool3x4(true, false, false, false, true, true, true, true, true, false, false, false); + bool3x4 b1 = bool3x4(false, false, true, true, true, true, true, false, false, true, false, true); + bool3x4 r1 = bool3x4(false, true, false, false, true, true, true, false, false, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x4 a2 = bool3x4(false, true, false, true, true, true, true, true, false, true, true, false); + bool3x4 b2 = bool3x4(false, true, true, false, false, true, false, false, false, true, true, false); + bool3x4 r2 = bool3x4(true, true, false, false, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x4 a3 = bool3x4(false, true, true, false, false, true, true, true, true, false, true, false); + bool3x4 b3 = bool3x4(true, false, true, true, false, true, false, false, false, true, true, false); + bool3x4 r3 = bool3x4(false, false, true, false, true, true, false, false, false, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_equal_wide_scalar() + { + bool3x4 a0 = bool3x4(true, true, false, true, true, false, true, true, true, false, false, false); + bool b0 = (false); + bool3x4 r0 = bool3x4(false, false, true, false, false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x4 a1 = bool3x4(false, false, false, false, false, true, true, false, false, true, false, true); + bool b1 = (true); + bool3x4 r1 = bool3x4(false, false, false, false, false, true, true, false, false, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x4 a2 = bool3x4(false, false, true, false, false, true, false, true, true, false, false, false); + bool b2 = (true); + bool3x4 r2 = bool3x4(false, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x4 a3 = bool3x4(false, true, false, true, true, false, false, false, true, true, true, false); + bool b3 = (false); + bool3x4 r3 = bool3x4(true, false, true, false, false, true, true, true, false, false, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_equal_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(false, false, true, false, true, false, true, false, false, false, false, true); + bool3x4 r0 = bool3x4(false, false, true, false, true, false, true, false, false, false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool3x4 b1 = bool3x4(true, true, true, false, true, true, false, false, true, false, false, true); + bool3x4 r1 = bool3x4(false, false, false, true, false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool3x4 b2 = bool3x4(false, true, false, false, true, false, true, true, true, true, false, false); + bool3x4 r2 = bool3x4(true, false, true, true, false, true, false, false, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool3x4 b3 = bool3x4(false, false, true, true, true, false, true, false, false, true, true, true); + bool3x4 r3 = bool3x4(false, false, true, true, true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_not_equal_wide_wide() + { + bool3x4 a0 = bool3x4(true, false, false, true, true, true, true, true, true, true, false, true); + bool3x4 b0 = bool3x4(false, false, true, false, false, false, false, false, true, true, false, false); + bool3x4 r0 = bool3x4(true, false, true, true, true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x4 a1 = bool3x4(true, false, true, false, false, true, true, true, false, true, false, false); + bool3x4 b1 = bool3x4(false, false, false, true, true, false, false, false, false, false, true, true); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x4 a2 = bool3x4(false, true, true, true, false, false, true, false, false, true, false, true); + bool3x4 b2 = bool3x4(true, false, false, false, true, true, false, false, true, false, false, true); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x4 a3 = bool3x4(true, true, true, false, true, true, true, false, true, false, false, false); + bool3x4 b3 = bool3x4(true, true, true, false, false, true, false, false, false, true, true, true); + bool3x4 r3 = bool3x4(false, false, false, false, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_not_equal_wide_scalar() + { + bool3x4 a0 = bool3x4(false, false, true, true, true, true, false, false, true, false, true, false); + bool b0 = (false); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, false, true, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x4 a1 = bool3x4(true, true, true, true, true, false, false, true, true, true, true, false); + bool b1 = (false); + bool3x4 r1 = bool3x4(true, true, true, true, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x4 a2 = bool3x4(false, false, false, true, true, true, false, true, false, true, true, true); + bool b2 = (false); + bool3x4 r2 = bool3x4(false, false, false, true, true, true, false, true, false, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x4 a3 = bool3x4(false, true, true, false, true, false, false, false, false, true, true, false); + bool b3 = (false); + bool3x4 r3 = bool3x4(false, true, true, false, true, false, false, false, false, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(true, true, false, true, false, true, false, false, false, true, true, true); + bool3x4 r0 = bool3x4(false, false, true, false, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool3x4 b1 = bool3x4(true, true, false, false, false, true, true, false, false, true, false, true); + bool3x4 r1 = bool3x4(true, true, false, false, false, true, true, false, false, true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool3x4 b2 = bool3x4(false, true, true, true, false, false, true, false, false, true, false, true); + bool3x4 r2 = bool3x4(false, true, true, true, false, false, true, false, false, true, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool3x4 b3 = bool3x4(false, false, false, true, false, false, true, false, false, false, false, false); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_and_wide_wide() + { + bool3x4 a0 = bool3x4(false, true, true, false, false, false, true, false, true, true, false, true); + bool3x4 b0 = bool3x4(false, true, false, false, false, true, true, false, false, true, false, true); + bool3x4 r0 = bool3x4(false, true, false, false, false, false, true, false, false, true, false, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x4 a1 = bool3x4(false, false, true, false, false, false, false, true, false, true, true, false); + bool3x4 b1 = bool3x4(true, false, true, true, false, false, false, true, false, false, false, true); + bool3x4 r1 = bool3x4(false, false, true, false, false, false, false, true, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x4 a2 = bool3x4(false, false, true, false, false, true, false, false, true, true, true, false); + bool3x4 b2 = bool3x4(true, false, false, false, true, false, false, true, false, false, false, true); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x4 a3 = bool3x4(false, false, false, true, true, false, true, false, false, true, true, true); + bool3x4 b3 = bool3x4(true, true, false, true, false, false, false, true, false, false, true, true); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_and_wide_scalar() + { + bool3x4 a0 = bool3x4(false, false, true, true, true, false, true, true, true, false, false, false); + bool b0 = (false); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x4 a1 = bool3x4(true, true, false, false, true, false, true, true, false, true, false, true); + bool b1 = (false); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x4 a2 = bool3x4(false, true, true, false, false, true, false, false, true, false, true, true); + bool b2 = (true); + bool3x4 r2 = bool3x4(false, true, true, false, false, true, false, false, true, false, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x4 a3 = bool3x4(false, false, true, false, false, true, true, false, true, false, false, true); + bool b3 = (false); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(false, false, true, true, false, false, true, true, true, false, true, false); + bool3x4 r0 = bool3x4(false, false, true, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool3x4 b1 = bool3x4(true, false, false, true, true, false, true, true, false, true, true, true); + bool3x4 r1 = bool3x4(true, false, false, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool3x4 b2 = bool3x4(true, false, true, true, true, false, true, false, true, false, true, false); + bool3x4 r2 = bool3x4(true, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool3x4 b3 = bool3x4(true, true, false, true, true, false, true, false, false, false, true, true); + bool3x4 r3 = bool3x4(true, true, false, true, true, false, true, false, false, false, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_or_wide_wide() + { + bool3x4 a0 = bool3x4(true, false, false, true, true, false, false, false, false, false, true, true); + bool3x4 b0 = bool3x4(true, false, true, true, true, true, true, true, true, true, false, false); + bool3x4 r0 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x4 a1 = bool3x4(false, false, true, true, true, false, true, true, false, true, false, false); + bool3x4 b1 = bool3x4(true, true, true, true, true, true, false, false, false, false, true, false); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x4 a2 = bool3x4(false, false, true, false, true, false, false, true, false, false, false, true); + bool3x4 b2 = bool3x4(false, true, false, true, false, false, true, true, true, true, true, false); + bool3x4 r2 = bool3x4(false, true, true, true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x4 a3 = bool3x4(false, false, false, false, false, true, false, true, true, true, true, false); + bool3x4 b3 = bool3x4(true, true, true, true, true, true, true, false, true, true, false, false); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_or_wide_scalar() + { + bool3x4 a0 = bool3x4(false, false, true, true, false, true, false, true, false, true, true, false); + bool b0 = (true); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x4 a1 = bool3x4(false, false, true, false, true, false, false, false, true, true, false, true); + bool b1 = (true); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x4 a2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, false); + bool b2 = (true); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x4 a3 = bool3x4(true, true, true, false, false, false, false, true, true, true, true, false); + bool b3 = (true); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, false); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool3x4 b1 = bool3x4(false, false, false, false, false, false, true, false, true, true, true, true); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, true, false, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool3x4 b2 = bool3x4(false, true, false, false, true, true, false, false, false, true, false, true); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (true); + bool3x4 b3 = bool3x4(false, true, false, false, true, true, true, false, false, true, true, true); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_xor_wide_wide() + { + bool3x4 a0 = bool3x4(true, false, true, true, true, true, false, false, false, false, true, false); + bool3x4 b0 = bool3x4(false, true, false, false, false, true, false, false, true, true, true, false); + bool3x4 r0 = bool3x4(true, true, true, true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x4 a1 = bool3x4(false, false, true, false, true, false, false, false, true, true, true, true); + bool3x4 b1 = bool3x4(false, false, true, true, false, false, true, true, true, true, false, true); + bool3x4 r1 = bool3x4(false, false, false, true, true, false, true, true, false, false, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x4 a2 = bool3x4(true, false, true, true, false, false, true, false, false, true, true, true); + bool3x4 b2 = bool3x4(true, false, false, false, true, false, false, false, false, false, true, false); + bool3x4 r2 = bool3x4(false, false, true, true, true, false, true, false, false, true, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x4 a3 = bool3x4(true, false, true, true, true, true, false, true, false, true, false, true); + bool3x4 b3 = bool3x4(true, true, false, false, false, false, true, false, false, false, true, false); + bool3x4 r3 = bool3x4(false, true, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_xor_wide_scalar() + { + bool3x4 a0 = bool3x4(true, false, false, true, true, false, false, false, true, false, true, true); + bool b0 = (false); + bool3x4 r0 = bool3x4(true, false, false, true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x4 a1 = bool3x4(false, true, false, false, false, false, false, false, false, false, false, true); + bool b1 = (true); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x4 a2 = bool3x4(true, false, false, false, false, true, true, false, false, false, true, false); + bool b2 = (false); + bool3x4 r2 = bool3x4(true, false, false, false, false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x4 a3 = bool3x4(false, true, false, true, true, false, false, true, true, true, false, true); + bool b3 = (false); + bool3x4 r3 = bool3x4(false, true, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(true, false, false, true, false, true, true, true, true, true, true, true); + bool3x4 r0 = bool3x4(false, true, true, false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool3x4 b1 = bool3x4(true, true, true, false, true, false, true, false, false, false, false, true); + bool3x4 r1 = bool3x4(false, false, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (false); + bool3x4 b2 = bool3x4(true, false, true, true, false, true, false, false, false, false, true, false); + bool3x4 r2 = bool3x4(true, false, true, true, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool3x4 b3 = bool3x4(false, false, false, true, false, false, true, true, false, false, true, false); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_logical_not() + { + bool3x4 a0 = bool3x4(false, true, false, true, false, false, false, true, true, false, true, true); + bool3x4 r0 = bool3x4(true, false, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(!a0, r0); + + bool3x4 a1 = bool3x4(true, false, false, true, false, false, true, false, true, false, false, true); + bool3x4 r1 = bool3x4(false, true, true, false, true, true, false, true, false, true, true, false); + TestUtils.AreEqual(!a1, r1); + + bool3x4 a2 = bool3x4(true, true, true, true, false, true, false, false, true, false, false, false); + bool3x4 r2 = bool3x4(false, false, false, false, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(!a2, r2); + + bool3x4 a3 = bool3x4(true, false, false, false, false, true, false, true, true, true, false, true); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, false, false, false, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x4.gen.cs.meta new file mode 100644 index 0000000..3a70917 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce96cd62cfbd7e24c9173437069a42ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4.gen.cs new file mode 100644 index 0000000..229870a --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4.gen.cs @@ -0,0 +1,440 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool4 + { + [TestCompiler] + public static void bool4_constructor() + { + bool4 a = new bool4(false, true, false, true); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, false); + TestUtils.AreEqual(a.w, true); + } + + [TestCompiler] + public static void bool4_scalar_constructor() + { + bool4 a = new bool4(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, true); + TestUtils.AreEqual(a.w, true); + } + + [TestCompiler] + public static void bool4_static_constructor() + { + bool4 a = bool4(false, true, false, true); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, false); + TestUtils.AreEqual(a.w, true); + } + + [TestCompiler] + public static void bool4_static_scalar_constructor() + { + bool4 a = bool4(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, true); + TestUtils.AreEqual(a.w, true); + } + + [TestCompiler] + public static void bool4_operator_equal_wide_wide() + { + bool4 a0 = bool4(false, false, true, true); + bool4 b0 = bool4(false, true, true, false); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4 a1 = bool4(true, true, true, true); + bool4 b1 = bool4(true, true, false, true); + bool4 r1 = bool4(true, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool4 a2 = bool4(true, true, true, true); + bool4 b2 = bool4(true, true, false, false); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4 a3 = bool4(true, false, false, false); + bool4 b3 = bool4(false, false, true, true); + bool4 r3 = bool4(false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4_operator_equal_wide_scalar() + { + bool4 a0 = bool4(true, true, false, true); + bool b0 = (false); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4 a1 = bool4(true, true, true, true); + bool b1 = (false); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool4 a2 = bool4(false, false, false, true); + bool b2 = (false); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4 a3 = bool4(false, false, false, true); + bool b3 = (false); + bool4 r3 = bool4(true, true, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4_operator_equal_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(false, false, true, false); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool4 b1 = bool4(false, true, false, false); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool4 b2 = bool4(false, true, false, true); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool4 b3 = bool4(true, false, true, true); + bool4 r3 = bool4(true, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4_operator_not_equal_wide_wide() + { + bool4 a0 = bool4(true, false, false, true); + bool4 b0 = bool4(false, false, true, false); + bool4 r0 = bool4(true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4 a1 = bool4(true, true, true, true); + bool4 b1 = bool4(false, false, false, false); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4 a2 = bool4(true, true, false, true); + bool4 b2 = bool4(true, true, false, false); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4 a3 = bool4(true, false, true, false); + bool4 b3 = bool4(false, false, false, true); + bool4 r3 = bool4(true, false, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4_operator_not_equal_wide_scalar() + { + bool4 a0 = bool4(false, false, true, true); + bool b0 = (false); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4 a1 = bool4(true, false, false, true); + bool b1 = (true); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool4 a2 = bool4(false, false, true, false); + bool b2 = (true); + bool4 r2 = bool4(true, true, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4 a3 = bool4(true, true, true, false); + bool b3 = (true); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(true, true, false, true); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool4 b1 = bool4(true, false, false, false); + bool4 r1 = bool4(true, false, false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool4 b2 = bool4(true, true, false, true); + bool4 r2 = bool4(false, false, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (true); + bool4 b3 = bool4(false, false, false, true); + bool4 r3 = bool4(true, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_and_wide_wide() + { + bool4 a0 = bool4(false, true, true, false); + bool4 b0 = bool4(false, true, false, false); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4 a1 = bool4(false, false, true, false); + bool4 b1 = bool4(false, true, true, false); + bool4 r1 = bool4(false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4 a2 = bool4(true, true, false, true); + bool4 b2 = bool4(false, true, false, true); + bool4 r2 = bool4(false, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool4 a3 = bool4(false, false, true, false); + bool4 b3 = bool4(true, false, true, true); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_and_wide_scalar() + { + bool4 a0 = bool4(false, false, true, true); + bool b0 = (false); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4 a1 = bool4(true, true, true, true); + bool b1 = (false); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4 a2 = bool4(false, false, true, false); + bool b2 = (false); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4 a3 = bool4(true, false, true, false); + bool b3 = (false); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(false, false, true, true); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (false); + bool4 b1 = bool4(false, true, true, true); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (false); + bool4 b2 = bool4(true, false, true, true); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (false); + bool4 b3 = bool4(false, true, true, false); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_or_wide_wide() + { + bool4 a0 = bool4(true, false, false, true); + bool4 b0 = bool4(true, false, true, true); + bool4 r0 = bool4(true, false, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4 a1 = bool4(true, false, false, false); + bool4 b1 = bool4(true, true, true, true); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4 a2 = bool4(false, false, true, true); + bool4 b2 = bool4(true, true, false, false); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4 a3 = bool4(false, false, true, true); + bool4 b3 = bool4(true, true, true, true); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_or_wide_scalar() + { + bool4 a0 = bool4(false, false, true, true); + bool b0 = (true); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4 a1 = bool4(false, false, true, false); + bool b1 = (true); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4 a2 = bool4(true, false, false, true); + bool b2 = (true); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4 a3 = bool4(false, false, true, false); + bool b3 = (true); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(true, true, false, false); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool4 b1 = bool4(false, true, true, false); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool4 b2 = bool4(true, false, false, false); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool4 b3 = bool4(false, false, false, false); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_xor_wide_wide() + { + bool4 a0 = bool4(true, false, true, true); + bool4 b0 = bool4(false, true, false, false); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4 a1 = bool4(true, true, false, false); + bool4 b1 = bool4(false, true, false, false); + bool4 r1 = bool4(true, false, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4 a2 = bool4(false, false, true, false); + bool4 b2 = bool4(true, true, true, false); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4 a3 = bool4(false, false, true, false); + bool4 b3 = bool4(false, false, true, true); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_xor_wide_scalar() + { + bool4 a0 = bool4(true, false, false, true); + bool b0 = (false); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4 a1 = bool4(true, false, false, true); + bool b1 = (false); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4 a2 = bool4(false, true, false, true); + bool b2 = (true); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4 a3 = bool4(true, false, false, false); + bool b3 = (false); + bool4 r3 = bool4(true, false, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(true, false, false, true); + bool4 r0 = bool4(false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (false); + bool4 b1 = bool4(true, true, true, true); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool4 b2 = bool4(true, true, true, true); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool4 b3 = bool4(true, false, true, false); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4_operator_logical_not() + { + bool4 a0 = bool4(false, true, false, true); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(!a0, r0); + + bool4 a1 = bool4(false, false, true, true); + bool4 r1 = bool4(true, true, false, false); + TestUtils.AreEqual(!a1, r1); + + bool4 a2 = bool4(false, true, true, false); + bool4 r2 = bool4(true, false, false, true); + TestUtils.AreEqual(!a2, r2); + + bool4 a3 = bool4(false, true, false, false); + bool4 r3 = bool4(true, false, true, true); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4.gen.cs.meta new file mode 100644 index 0000000..0cecba9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33a8df9e636ae004ba204e2a6b925b42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x2.gen.cs new file mode 100644 index 0000000..e91b5ff --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x2.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool4x2 + { + [TestCompiler] + public static void bool4x2_operator_equal_wide_wide() + { + bool4x2 a0 = bool4x2(false, false, true, true, true, true, true, true); + bool4x2 b0 = bool4x2(false, true, true, false, true, true, false, true); + bool4x2 r0 = bool4x2(true, false, true, false, true, true, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x2 a1 = bool4x2(true, true, true, true, true, false, false, false); + bool4x2 b1 = bool4x2(true, true, false, false, false, false, true, true); + bool4x2 r1 = bool4x2(true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x2 a2 = bool4x2(true, true, true, true, true, false, false, false); + bool4x2 b2 = bool4x2(true, true, true, false, false, true, false, true); + bool4x2 r2 = bool4x2(true, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x2 a3 = bool4x2(false, true, false, true, true, true, true, true); + bool4x2 b3 = bool4x2(false, true, true, false, false, true, false, false); + bool4x2 r3 = bool4x2(true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_equal_wide_scalar() + { + bool4x2 a0 = bool4x2(true, true, false, true, true, false, true, true); + bool b0 = (false); + bool4x2 r0 = bool4x2(false, false, true, false, false, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x2 a1 = bool4x2(true, false, false, false, true, false, false, false); + bool b1 = (false); + bool4x2 r1 = bool4x2(false, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x2 a2 = bool4x2(false, true, false, false, true, false, true, false); + bool b2 = (true); + bool4x2 r2 = bool4x2(false, true, false, false, true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x2 a3 = bool4x2(true, true, false, false, true, false, true, true); + bool b3 = (false); + bool4x2 r3 = bool4x2(false, false, true, true, false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_equal_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(false, false, true, false, true, false, true, false); + bool4x2 r0 = bool4x2(false, false, true, false, true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool4x2 b1 = bool4x2(false, false, true, false, true, true, true, false); + bool4x2 r1 = bool4x2(true, true, false, true, false, false, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool4x2 b2 = bool4x2(true, false, false, true, false, false, true, false); + bool4x2 r2 = bool4x2(true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool4x2 b3 = bool4x2(true, false, false, true, false, true, true, true); + bool4x2 r3 = bool4x2(false, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_not_equal_wide_wide() + { + bool4x2 a0 = bool4x2(true, false, false, true, true, true, true, true); + bool4x2 b0 = bool4x2(false, false, true, false, false, false, false, false); + bool4x2 r0 = bool4x2(true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x2 a1 = bool4x2(true, true, false, true, true, false, true, false); + bool4x2 b1 = bool4x2(true, true, false, false, false, false, false, true); + bool4x2 r1 = bool4x2(false, false, false, true, true, false, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x2 a2 = bool4x2(false, true, true, true, false, true, false, false); + bool4x2 b2 = bool4x2(true, false, false, false, false, false, true, true); + bool4x2 r2 = bool4x2(true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x2 a3 = bool4x2(false, true, true, true, false, false, true, false); + bool4x2 b3 = bool4x2(true, false, false, false, true, true, false, false); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_not_equal_wide_scalar() + { + bool4x2 a0 = bool4x2(false, false, true, true, true, true, false, false); + bool b0 = (false); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x2 a1 = bool4x2(true, true, false, true, false, true, true, true); + bool b1 = (false); + bool4x2 r1 = bool4x2(true, true, false, true, false, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x2 a2 = bool4x2(true, false, true, true, true, true, false, false); + bool b2 = (false); + bool4x2 r2 = bool4x2(true, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x2 a3 = bool4x2(false, false, true, true, true, false, true, false); + bool b3 = (false); + bool4x2 r3 = bool4x2(false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(true, true, false, true, false, true, false, false); + bool4x2 r0 = bool4x2(false, false, true, false, true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool4x2 b1 = bool4x2(true, true, true, false, true, true, false, false); + bool4x2 r1 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool4x2 b2 = bool4x2(true, true, false, false, true, false, true, false); + bool4x2 r2 = bool4x2(true, true, false, false, true, false, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool4x2 b3 = bool4x2(true, true, true, false, false, true, false, false); + bool4x2 r3 = bool4x2(true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_and_wide_wide() + { + bool4x2 a0 = bool4x2(false, true, true, false, false, false, true, false); + bool4x2 b0 = bool4x2(false, true, false, false, false, true, true, false); + bool4x2 r0 = bool4x2(false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x2 a1 = bool4x2(true, true, false, true, false, false, true, false); + bool4x2 b1 = bool4x2(false, true, false, true, true, false, true, true); + bool4x2 r1 = bool4x2(false, true, false, true, false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x2 a2 = bool4x2(false, false, false, true, false, true, true, false); + bool4x2 b2 = bool4x2(false, false, false, true, false, false, false, true); + bool4x2 r2 = bool4x2(false, false, false, true, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x2 a3 = bool4x2(false, false, true, false, false, true, false, false); + bool4x2 b3 = bool4x2(true, false, false, false, true, false, false, true); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_and_wide_scalar() + { + bool4x2 a0 = bool4x2(false, false, true, true, true, false, true, true); + bool b0 = (false); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x2 a1 = bool4x2(true, false, false, true, false, true, false, false); + bool b1 = (false); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x2 a2 = bool4x2(true, true, true, false, true, false, true, false); + bool b2 = (false); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x2 a3 = bool4x2(true, true, false, false, true, false, false, true); + bool b3 = (true); + bool4x2 r3 = bool4x2(true, true, false, false, true, false, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(false, false, true, true, false, false, true, true); + bool4x2 r0 = bool4x2(false, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool4x2 b1 = bool4x2(false, true, false, true, true, false, false, true); + bool4x2 r1 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool4x2 b2 = bool4x2(false, true, true, false, true, true, true, true); + bool4x2 r2 = bool4x2(false, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool4x2 b3 = bool4x2(false, true, true, true, false, true, false, true); + bool4x2 r3 = bool4x2(false, true, true, true, false, true, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_or_wide_wide() + { + bool4x2 a0 = bool4x2(true, false, false, true, true, false, false, false); + bool4x2 b0 = bool4x2(true, false, true, true, true, true, true, true); + bool4x2 r0 = bool4x2(true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x2 a1 = bool4x2(false, false, true, true, false, false, true, true); + bool4x2 b1 = bool4x2(true, true, false, false, true, true, true, true); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x2 a2 = bool4x2(true, false, true, true, false, true, false, false); + bool4x2 b2 = bool4x2(true, true, false, false, false, false, true, false); + bool4x2 r2 = bool4x2(true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x2 a3 = bool4x2(false, false, true, false, true, false, false, true); + bool4x2 b3 = bool4x2(false, true, false, true, false, false, true, true); + bool4x2 r3 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_or_wide_scalar() + { + bool4x2 a0 = bool4x2(false, false, true, true, false, true, false, true); + bool b0 = (true); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x2 a1 = bool4x2(false, true, false, false, true, false, true, false); + bool b1 = (true); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x2 a2 = bool4x2(true, false, false, true, true, false, true, true); + bool b2 = (false); + bool4x2 r2 = bool4x2(true, false, false, true, true, false, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x2 a3 = bool4x2(true, true, true, true, true, false, false, false); + bool b3 = (true); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(true, true, false, false, false, false, true, true); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool4x2 b1 = bool4x2(true, true, false, false, false, false, false, false); + bool4x2 r1 = bool4x2(true, true, false, false, false, false, false, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool4x2 b2 = bool4x2(false, true, false, true, true, true, true, true); + bool4x2 r2 = bool4x2(false, true, false, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool4x2 b3 = bool4x2(true, false, false, true, true, false, false, false); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_xor_wide_wide() + { + bool4x2 a0 = bool4x2(true, false, true, true, true, true, false, false); + bool4x2 b0 = bool4x2(false, true, false, false, false, true, false, false); + bool4x2 r0 = bool4x2(true, true, true, true, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x2 a1 = bool4x2(false, false, true, false, false, false, true, false); + bool4x2 b1 = bool4x2(true, true, true, false, false, false, true, true); + bool4x2 r1 = bool4x2(true, true, false, false, false, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x2 a2 = bool4x2(true, false, false, false, true, true, true, true); + bool4x2 b2 = bool4x2(false, false, true, true, true, true, false, true); + bool4x2 r2 = bool4x2(true, false, true, true, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x2 a3 = bool4x2(true, false, true, true, false, false, true, false); + bool4x2 b3 = bool4x2(true, false, false, false, true, false, false, false); + bool4x2 r3 = bool4x2(false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_xor_wide_scalar() + { + bool4x2 a0 = bool4x2(true, false, false, true, true, false, false, false); + bool b0 = (false); + bool4x2 r0 = bool4x2(true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x2 a1 = bool4x2(true, true, true, false, true, true, false, false); + bool b1 = (false); + bool4x2 r1 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x2 a2 = bool4x2(false, false, false, false, false, false, true, true); + bool b2 = (false); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x2 a3 = bool4x2(false, false, false, false, true, true, false, false); + bool b3 = (false); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(true, false, false, true, false, true, true, true); + bool4x2 r0 = bool4x2(false, true, true, false, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool4x2 b1 = bool4x2(true, true, true, true, true, true, true, false); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool4x2 b2 = bool4x2(false, true, false, false, false, false, true, false); + bool4x2 r2 = bool4x2(true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool4x2 b3 = bool4x2(false, true, true, false, true, false, false, false); + bool4x2 r3 = bool4x2(true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_logical_not() + { + bool4x2 a0 = bool4x2(false, true, false, true, false, false, false, true); + bool4x2 r0 = bool4x2(true, false, true, false, true, true, true, false); + TestUtils.AreEqual(!a0, r0); + + bool4x2 a1 = bool4x2(true, true, true, true, false, false, false, true); + bool4x2 r1 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(!a1, r1); + + bool4x2 a2 = bool4x2(false, true, false, true, false, false, true, true); + bool4x2 r2 = bool4x2(true, false, true, false, true, true, false, false); + TestUtils.AreEqual(!a2, r2); + + bool4x2 a3 = bool4x2(true, true, true, false, true, false, false, true); + bool4x2 r3 = bool4x2(false, false, false, true, false, true, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x2.gen.cs.meta new file mode 100644 index 0000000..1893ebc --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7ec685ec2ccae14a851a50b1bcbebfa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x3.gen.cs new file mode 100644 index 0000000..aa0ad8b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x3.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool4x3 + { + [TestCompiler] + public static void bool4x3_operator_equal_wide_wide() + { + bool4x3 a0 = bool4x3(false, false, true, true, true, true, true, true, true, true, true, true); + bool4x3 b0 = bool4x3(false, true, true, false, true, true, false, true, true, true, false, false); + bool4x3 r0 = bool4x3(true, false, true, false, true, true, false, true, true, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x3 a1 = bool4x3(true, false, false, false, true, true, true, true, true, false, false, false); + bool4x3 b1 = bool4x3(false, false, true, true, true, true, true, false, false, true, false, true); + bool4x3 r1 = bool4x3(false, true, false, false, true, true, true, false, false, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x3 a2 = bool4x3(false, true, false, true, true, true, true, true, false, true, true, false); + bool4x3 b2 = bool4x3(false, true, true, false, false, true, false, false, false, true, true, false); + bool4x3 r2 = bool4x3(true, true, false, false, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x3 a3 = bool4x3(false, true, true, false, false, true, true, true, true, false, true, false); + bool4x3 b3 = bool4x3(true, false, true, true, false, true, false, false, false, true, true, false); + bool4x3 r3 = bool4x3(false, false, true, false, true, true, false, false, false, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_equal_wide_scalar() + { + bool4x3 a0 = bool4x3(true, true, false, true, true, false, true, true, true, false, false, false); + bool b0 = (false); + bool4x3 r0 = bool4x3(false, false, true, false, false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x3 a1 = bool4x3(false, false, false, false, false, true, true, false, false, true, false, true); + bool b1 = (true); + bool4x3 r1 = bool4x3(false, false, false, false, false, true, true, false, false, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x3 a2 = bool4x3(false, false, true, false, false, true, false, true, true, false, false, false); + bool b2 = (true); + bool4x3 r2 = bool4x3(false, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x3 a3 = bool4x3(false, true, false, true, true, false, false, false, true, true, true, false); + bool b3 = (false); + bool4x3 r3 = bool4x3(true, false, true, false, false, true, true, true, false, false, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_equal_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(false, false, true, false, true, false, true, false, false, false, false, true); + bool4x3 r0 = bool4x3(false, false, true, false, true, false, true, false, false, false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool4x3 b1 = bool4x3(true, true, true, false, true, true, false, false, true, false, false, true); + bool4x3 r1 = bool4x3(false, false, false, true, false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool4x3 b2 = bool4x3(false, true, false, false, true, false, true, true, true, true, false, false); + bool4x3 r2 = bool4x3(true, false, true, true, false, true, false, false, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool4x3 b3 = bool4x3(false, false, true, true, true, false, true, false, false, true, true, true); + bool4x3 r3 = bool4x3(false, false, true, true, true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_not_equal_wide_wide() + { + bool4x3 a0 = bool4x3(true, false, false, true, true, true, true, true, true, true, false, true); + bool4x3 b0 = bool4x3(false, false, true, false, false, false, false, false, true, true, false, false); + bool4x3 r0 = bool4x3(true, false, true, true, true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x3 a1 = bool4x3(true, false, true, false, false, true, true, true, false, true, false, false); + bool4x3 b1 = bool4x3(false, false, false, true, true, false, false, false, false, false, true, true); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x3 a2 = bool4x3(false, true, true, true, false, false, true, false, false, true, false, true); + bool4x3 b2 = bool4x3(true, false, false, false, true, true, false, false, true, false, false, true); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x3 a3 = bool4x3(true, true, true, false, true, true, true, false, true, false, false, false); + bool4x3 b3 = bool4x3(true, true, true, false, false, true, false, false, false, true, true, true); + bool4x3 r3 = bool4x3(false, false, false, false, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_not_equal_wide_scalar() + { + bool4x3 a0 = bool4x3(false, false, true, true, true, true, false, false, true, false, true, false); + bool b0 = (false); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, false, true, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x3 a1 = bool4x3(true, true, true, true, true, false, false, true, true, true, true, false); + bool b1 = (false); + bool4x3 r1 = bool4x3(true, true, true, true, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x3 a2 = bool4x3(false, false, false, true, true, true, false, true, false, true, true, true); + bool b2 = (false); + bool4x3 r2 = bool4x3(false, false, false, true, true, true, false, true, false, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x3 a3 = bool4x3(false, true, true, false, true, false, false, false, false, true, true, false); + bool b3 = (false); + bool4x3 r3 = bool4x3(false, true, true, false, true, false, false, false, false, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(true, true, false, true, false, true, false, false, false, true, true, true); + bool4x3 r0 = bool4x3(false, false, true, false, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool4x3 b1 = bool4x3(true, true, false, false, false, true, true, false, false, true, false, true); + bool4x3 r1 = bool4x3(true, true, false, false, false, true, true, false, false, true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool4x3 b2 = bool4x3(false, true, true, true, false, false, true, false, false, true, false, true); + bool4x3 r2 = bool4x3(false, true, true, true, false, false, true, false, false, true, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool4x3 b3 = bool4x3(false, false, false, true, false, false, true, false, false, false, false, false); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_and_wide_wide() + { + bool4x3 a0 = bool4x3(false, true, true, false, false, false, true, false, true, true, false, true); + bool4x3 b0 = bool4x3(false, true, false, false, false, true, true, false, false, true, false, true); + bool4x3 r0 = bool4x3(false, true, false, false, false, false, true, false, false, true, false, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x3 a1 = bool4x3(false, false, true, false, false, false, false, true, false, true, true, false); + bool4x3 b1 = bool4x3(true, false, true, true, false, false, false, true, false, false, false, true); + bool4x3 r1 = bool4x3(false, false, true, false, false, false, false, true, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x3 a2 = bool4x3(false, false, true, false, false, true, false, false, true, true, true, false); + bool4x3 b2 = bool4x3(true, false, false, false, true, false, false, true, false, false, false, true); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x3 a3 = bool4x3(false, false, false, true, true, false, true, false, false, true, true, true); + bool4x3 b3 = bool4x3(true, true, false, true, false, false, false, true, false, false, true, true); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_and_wide_scalar() + { + bool4x3 a0 = bool4x3(false, false, true, true, true, false, true, true, true, false, false, false); + bool b0 = (false); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x3 a1 = bool4x3(true, true, false, false, true, false, true, true, false, true, false, true); + bool b1 = (false); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x3 a2 = bool4x3(false, true, true, false, false, true, false, false, true, false, true, true); + bool b2 = (true); + bool4x3 r2 = bool4x3(false, true, true, false, false, true, false, false, true, false, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x3 a3 = bool4x3(false, false, true, false, false, true, true, false, true, false, false, true); + bool b3 = (false); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(false, false, true, true, false, false, true, true, true, false, true, false); + bool4x3 r0 = bool4x3(false, false, true, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool4x3 b1 = bool4x3(true, false, false, true, true, false, true, true, false, true, true, true); + bool4x3 r1 = bool4x3(true, false, false, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool4x3 b2 = bool4x3(true, false, true, true, true, false, true, false, true, false, true, false); + bool4x3 r2 = bool4x3(true, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool4x3 b3 = bool4x3(true, true, false, true, true, false, true, false, false, false, true, true); + bool4x3 r3 = bool4x3(true, true, false, true, true, false, true, false, false, false, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_or_wide_wide() + { + bool4x3 a0 = bool4x3(true, false, false, true, true, false, false, false, false, false, true, true); + bool4x3 b0 = bool4x3(true, false, true, true, true, true, true, true, true, true, false, false); + bool4x3 r0 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x3 a1 = bool4x3(false, false, true, true, true, false, true, true, false, true, false, false); + bool4x3 b1 = bool4x3(true, true, true, true, true, true, false, false, false, false, true, false); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x3 a2 = bool4x3(false, false, true, false, true, false, false, true, false, false, false, true); + bool4x3 b2 = bool4x3(false, true, false, true, false, false, true, true, true, true, true, false); + bool4x3 r2 = bool4x3(false, true, true, true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x3 a3 = bool4x3(false, false, false, false, false, true, false, true, true, true, true, false); + bool4x3 b3 = bool4x3(true, true, true, true, true, true, true, false, true, true, false, false); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_or_wide_scalar() + { + bool4x3 a0 = bool4x3(false, false, true, true, false, true, false, true, false, true, true, false); + bool b0 = (true); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x3 a1 = bool4x3(false, false, true, false, true, false, false, false, true, true, false, true); + bool b1 = (true); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x3 a2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, false); + bool b2 = (true); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x3 a3 = bool4x3(true, true, true, false, false, false, false, true, true, true, true, false); + bool b3 = (true); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, false); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool4x3 b1 = bool4x3(false, false, false, false, false, false, true, false, true, true, true, true); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, true, false, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool4x3 b2 = bool4x3(false, true, false, false, true, true, false, false, false, true, false, true); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (true); + bool4x3 b3 = bool4x3(false, true, false, false, true, true, true, false, false, true, true, true); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_xor_wide_wide() + { + bool4x3 a0 = bool4x3(true, false, true, true, true, true, false, false, false, false, true, false); + bool4x3 b0 = bool4x3(false, true, false, false, false, true, false, false, true, true, true, false); + bool4x3 r0 = bool4x3(true, true, true, true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x3 a1 = bool4x3(false, false, true, false, true, false, false, false, true, true, true, true); + bool4x3 b1 = bool4x3(false, false, true, true, false, false, true, true, true, true, false, true); + bool4x3 r1 = bool4x3(false, false, false, true, true, false, true, true, false, false, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x3 a2 = bool4x3(true, false, true, true, false, false, true, false, false, true, true, true); + bool4x3 b2 = bool4x3(true, false, false, false, true, false, false, false, false, false, true, false); + bool4x3 r2 = bool4x3(false, false, true, true, true, false, true, false, false, true, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x3 a3 = bool4x3(true, false, true, true, true, true, false, true, false, true, false, true); + bool4x3 b3 = bool4x3(true, true, false, false, false, false, true, false, false, false, true, false); + bool4x3 r3 = bool4x3(false, true, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_xor_wide_scalar() + { + bool4x3 a0 = bool4x3(true, false, false, true, true, false, false, false, true, false, true, true); + bool b0 = (false); + bool4x3 r0 = bool4x3(true, false, false, true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x3 a1 = bool4x3(false, true, false, false, false, false, false, false, false, false, false, true); + bool b1 = (true); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x3 a2 = bool4x3(true, false, false, false, false, true, true, false, false, false, true, false); + bool b2 = (false); + bool4x3 r2 = bool4x3(true, false, false, false, false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x3 a3 = bool4x3(false, true, false, true, true, false, false, true, true, true, false, true); + bool b3 = (false); + bool4x3 r3 = bool4x3(false, true, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(true, false, false, true, false, true, true, true, true, true, true, true); + bool4x3 r0 = bool4x3(false, true, true, false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool4x3 b1 = bool4x3(true, true, true, false, true, false, true, false, false, false, false, true); + bool4x3 r1 = bool4x3(false, false, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (false); + bool4x3 b2 = bool4x3(true, false, true, true, false, true, false, false, false, false, true, false); + bool4x3 r2 = bool4x3(true, false, true, true, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool4x3 b3 = bool4x3(false, false, false, true, false, false, true, true, false, false, true, false); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_logical_not() + { + bool4x3 a0 = bool4x3(false, true, false, true, false, false, false, true, true, false, true, true); + bool4x3 r0 = bool4x3(true, false, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(!a0, r0); + + bool4x3 a1 = bool4x3(true, false, false, true, false, false, true, false, true, false, false, true); + bool4x3 r1 = bool4x3(false, true, true, false, true, true, false, true, false, true, true, false); + TestUtils.AreEqual(!a1, r1); + + bool4x3 a2 = bool4x3(true, true, true, true, false, true, false, false, true, false, false, false); + bool4x3 r2 = bool4x3(false, false, false, false, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(!a2, r2); + + bool4x3 a3 = bool4x3(true, false, false, false, false, true, false, true, true, true, false, true); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, false, false, false, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x3.gen.cs.meta new file mode 100644 index 0000000..95824aa --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58c624ce115ab234d9a595288af4c5e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x4.gen.cs new file mode 100644 index 0000000..b0eead2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x4.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool4x4 + { + [TestCompiler] + public static void bool4x4_operator_equal_wide_wide() + { + bool4x4 a0 = bool4x4(false, false, true, true, true, true, true, true, true, true, true, true, true, false, false, false); + bool4x4 b0 = bool4x4(false, true, true, false, true, true, false, true, true, true, false, false, false, false, true, true); + bool4x4 r0 = bool4x4(true, false, true, false, true, true, false, true, true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x4 a1 = bool4x4(true, true, true, true, true, false, false, false, false, true, false, true, true, true, true, true); + bool4x4 b1 = bool4x4(true, true, true, false, false, true, false, true, false, true, true, false, false, true, false, false); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x4 a2 = bool4x4(false, true, true, false, false, true, true, false, false, true, true, true, true, false, true, false); + bool4x4 b2 = bool4x4(false, true, true, false, true, false, true, true, false, true, false, false, false, true, true, false); + bool4x4 r2 = bool4x4(true, true, true, true, false, false, true, false, true, true, false, false, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x4 a3 = bool4x4(false, false, false, false, false, true, true, false, false, true, true, false, false, true, true, false); + bool4x4 b3 = bool4x4(false, false, false, true, true, false, false, false, false, false, false, false, true, true, false, false); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, false, true, true, false, false, true, false, true, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_equal_wide_scalar() + { + bool4x4 a0 = bool4x4(true, true, false, true, true, false, true, true, true, false, false, false, false, true, false, false); + bool b0 = (false); + bool4x4 r0 = bool4x4(false, false, true, false, false, true, false, false, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x4 a1 = bool4x4(false, true, true, false, false, true, false, true, false, true, false, true, false, false, true, false); + bool b1 = (false); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, false, true, false, true, false, true, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x4 a2 = bool4x4(true, false, false, false, false, false, true, false, true, true, false, false, false, true, true, true); + bool b2 = (true); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, true, false, true, true, false, false, false, true, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x4 a3 = bool4x4(false, true, false, false, false, false, true, true, true, true, true, false, true, false, true, false); + bool b3 = (false); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, false, false, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_equal_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(false, false, true, false, true, false, true, false, false, false, false, true, false, true, true, true); + bool4x4 r0 = bool4x4(false, false, true, false, true, false, true, false, false, false, false, true, false, true, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool4x4 b1 = bool4x4(true, true, false, false, true, false, false, true, false, false, true, false, false, true, false, true); + bool4x4 r1 = bool4x4(false, false, true, true, false, true, true, false, true, true, false, true, true, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool4x4 b2 = bool4x4(true, true, false, false, true, false, false, true, true, true, false, true, false, false, true, true); + bool4x4 r2 = bool4x4(true, true, false, false, true, false, false, true, true, true, false, true, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool4x4 b3 = bool4x4(false, true, false, false, false, true, false, false, true, false, false, true, false, true, true, true); + bool4x4 r3 = bool4x4(false, true, false, false, false, true, false, false, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_not_equal_wide_wide() + { + bool4x4 a0 = bool4x4(true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, false); + bool4x4 b0 = bool4x4(false, false, true, false, false, false, false, false, true, true, false, false, false, false, false, true); + bool4x4 r0 = bool4x4(true, false, true, true, true, true, true, true, false, false, false, true, true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x4 a1 = bool4x4(false, true, true, true, false, true, false, false, false, true, true, true, false, false, true, false); + bool4x4 b1 = bool4x4(true, false, false, false, false, false, true, true, true, false, false, false, true, true, false, false); + bool4x4 r1 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x4 a2 = bool4x4(false, true, false, true, true, true, true, false, true, true, true, false, true, false, false, false); + bool4x4 b2 = bool4x4(true, false, false, true, true, true, true, false, false, true, false, false, false, true, true, true); + bool4x4 r2 = bool4x4(true, true, false, false, false, false, false, false, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x4 a3 = bool4x4(true, false, true, false, false, false, true, false, true, false, false, true, true, true, false, false); + bool4x4 b3 = bool4x4(false, false, true, false, false, true, true, false, true, true, true, true, true, true, false, true); + bool4x4 r3 = bool4x4(true, false, false, false, false, true, false, false, false, true, true, false, false, false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_not_equal_wide_scalar() + { + bool4x4 a0 = bool4x4(false, false, true, true, true, true, false, false, true, false, true, false, true, false, true, true); + bool b0 = (false); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x4 a1 = bool4x4(true, false, false, true, true, true, true, false, false, false, false, false, true, true, true, false); + bool b1 = (true); + bool4x4 r1 = bool4x4(false, true, true, false, false, false, false, true, true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x4 a2 = bool4x4(true, true, true, true, false, false, true, true, false, true, false, false, false, false, true, true); + bool b2 = (false); + bool4x4 r2 = bool4x4(true, true, true, true, false, false, true, true, false, true, false, false, false, false, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x4 a3 = bool4x4(false, true, true, true, false, true, true, true, true, false, false, false, false, true, false, true); + bool b3 = (true); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, false, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(true, true, false, true, false, true, false, false, false, true, true, true, false, true, true, false); + bool4x4 r0 = bool4x4(false, false, true, false, true, false, true, true, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool4x4 b1 = bool4x4(false, true, true, false, false, true, false, true, false, false, true, true, true, false, false, true); + bool4x4 r1 = bool4x4(false, true, true, false, false, true, false, true, false, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool4x4 b2 = bool4x4(false, true, false, true, false, false, false, false, true, false, false, true, false, false, false, false); + bool4x4 r2 = bool4x4(false, true, false, true, false, false, false, false, true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool4x4 b3 = bool4x4(true, true, true, false, true, true, true, true, false, true, false, true, false, false, false, false); + bool4x4 r3 = bool4x4(true, true, true, false, true, true, true, true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_and_wide_wide() + { + bool4x4 a0 = bool4x4(false, true, true, false, false, false, true, false, true, true, false, true, false, false, true, false); + bool4x4 b0 = bool4x4(false, true, false, false, false, true, true, false, false, true, false, true, true, false, true, true); + bool4x4 r0 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, true, false, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x4 a1 = bool4x4(false, false, false, true, false, true, true, false, false, false, true, false, false, true, false, false); + bool4x4 b1 = bool4x4(false, false, false, true, false, false, false, true, true, false, false, false, true, false, false, true); + bool4x4 r1 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x4 a2 = bool4x4(true, true, true, false, false, false, false, true, true, false, true, false, false, true, true, true); + bool4x4 b2 = bool4x4(false, false, false, true, true, true, false, true, false, false, false, true, false, false, true, true); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x4 a3 = bool4x4(false, true, true, false, true, true, true, true, false, false, false, false, true, false, false, false); + bool4x4 b3 = bool4x4(false, false, true, false, false, true, false, true, true, true, false, false, false, false, true, true); + bool4x4 r3 = bool4x4(false, false, true, false, false, true, false, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_and_wide_scalar() + { + bool4x4 a0 = bool4x4(false, false, true, true, true, false, true, true, true, false, false, false, true, false, true, false); + bool b0 = (false); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x4 a1 = bool4x4(false, false, true, true, false, true, false, true, false, true, true, true, false, false, true, false); + bool b1 = (true); + bool4x4 r1 = bool4x4(false, false, true, true, false, true, false, true, false, true, true, true, false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x4 a2 = bool4x4(false, false, true, true, false, false, false, true, false, false, true, true, false, true, false, false); + bool b2 = (true); + bool4x4 r2 = bool4x4(false, false, true, true, false, false, false, true, false, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x4 a3 = bool4x4(true, false, false, true, true, false, true, false, false, false, false, true, false, true, true, false); + bool b3 = (false); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(false, false, true, true, false, false, true, true, true, false, true, false, true, true, false, false); + bool4x4 r0 = bool4x4(false, false, true, true, false, false, true, true, true, false, true, false, true, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool4x4 b1 = bool4x4(true, false, true, true, false, true, true, true, true, true, false, true, true, true, false, true); + bool4x4 r1 = bool4x4(true, false, true, true, false, true, true, true, true, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (false); + bool4x4 b2 = bool4x4(true, false, true, false, true, true, true, false, true, true, false, true, false, false, false, true); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool4x4 b3 = bool4x4(true, false, true, true, false, false, true, false, true, true, true, false, true, true, false, false); + bool4x4 r3 = bool4x4(true, false, true, true, false, false, true, false, true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_or_wide_wide() + { + bool4x4 a0 = bool4x4(true, false, false, true, true, false, false, false, false, false, true, true, false, false, true, true); + bool4x4 b0 = bool4x4(true, false, true, true, true, true, true, true, true, true, false, false, true, true, true, true); + bool4x4 r0 = bool4x4(true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x4 a1 = bool4x4(true, false, true, true, false, true, false, false, false, false, true, false, true, false, false, true); + bool4x4 b1 = bool4x4(true, true, false, false, false, false, true, false, false, true, false, true, false, false, true, true); + bool4x4 r1 = bool4x4(true, true, true, true, false, true, true, false, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x4 a2 = bool4x4(false, false, false, true, false, false, false, false, false, true, false, true, true, true, true, false); + bool4x4 b2 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, false, true, true, false, false); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x4 a3 = bool4x4(false, false, false, true, false, true, true, false, true, false, false, false, false, false, true, false); + bool4x4 b3 = bool4x4(false, false, true, true, false, false, false, false, true, false, false, false, true, true, true, false); + bool4x4 r3 = bool4x4(false, false, true, true, false, true, true, false, true, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_or_wide_scalar() + { + bool4x4 a0 = bool4x4(false, false, true, true, false, true, false, true, false, true, true, false, false, true, false, true); + bool b0 = (true); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x4 a1 = bool4x4(false, false, false, false, true, true, false, true, true, true, true, true, true, true, true, false); + bool b1 = (true); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x4 a2 = bool4x4(false, true, false, false, true, true, true, true, false, false, false, false, true, true, true, true); + bool b2 = (false); + bool4x4 r2 = bool4x4(false, true, false, false, true, true, true, true, false, false, false, false, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x4 a3 = bool4x4(false, false, true, false, false, false, true, true, false, true, true, false, true, false, true, false); + bool b3 = (true); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(true, true, false, false, false, false, true, true, false, true, true, false, false, false, false, false); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool4x4 b1 = bool4x4(false, false, true, false, true, true, true, true, true, false, true, false, false, true, true, false); + bool4x4 r1 = bool4x4(false, false, true, false, true, true, true, true, true, false, true, false, false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool4x4 b2 = bool4x4(false, true, false, true, true, false, true, false, false, true, true, true, false, false, true, true); + bool4x4 r2 = bool4x4(false, true, false, true, true, false, true, false, false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (true); + bool4x4 b3 = bool4x4(true, true, true, false, true, true, true, true, true, false, true, true, false, true, false, true); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_xor_wide_wide() + { + bool4x4 a0 = bool4x4(true, false, true, true, true, true, false, false, false, false, true, false, false, false, true, false); + bool4x4 b0 = bool4x4(false, true, false, false, false, true, false, false, true, true, true, false, false, false, true, true); + bool4x4 r0 = bool4x4(true, true, true, true, true, false, false, false, true, true, false, false, false, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x4 a1 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, false, true, false); + bool4x4 b1 = bool4x4(false, false, true, true, true, true, false, true, true, false, false, false, true, false, false, false); + bool4x4 r1 = bool4x4(true, false, true, true, false, false, true, false, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x4 a2 = bool4x4(false, true, true, true, true, false, true, true, true, true, false, true, false, true, false, true); + bool4x4 b2 = bool4x4(false, false, true, false, true, true, false, false, false, false, true, false, false, false, true, false); + bool4x4 r2 = bool4x4(false, true, false, true, false, true, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x4 a3 = bool4x4(true, true, false, true, true, true, false, false, false, true, true, true, false, true, false, false); + bool4x4 b3 = bool4x4(true, false, true, false, true, false, true, false, false, true, true, false, true, true, true, true); + bool4x4 r3 = bool4x4(false, true, true, true, false, true, true, false, false, false, false, true, true, false, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_xor_wide_scalar() + { + bool4x4 a0 = bool4x4(true, false, false, true, true, false, false, false, true, false, true, true, false, true, true, false); + bool b0 = (false); + bool4x4 r0 = bool4x4(true, false, false, true, true, false, false, false, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x4 a1 = bool4x4(false, false, false, false, false, false, false, true, true, false, false, false, false, false, true, true); + bool b1 = (false); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x4 a2 = bool4x4(false, false, true, false, false, false, true, false, true, true, false, false, true, true, true, false); + bool b2 = (false); + bool4x4 r2 = bool4x4(false, false, true, false, false, false, true, false, true, true, false, false, true, true, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x4 a3 = bool4x4(true, false, false, true, true, true, false, false, true, true, true, true, false, true, true, false); + bool b3 = (false); + bool4x4 r3 = bool4x4(true, false, false, true, true, true, false, false, true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(true, false, false, true, false, true, true, true, true, true, true, true, true, true, true, true); + bool4x4 r0 = bool4x4(false, true, true, false, true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (false); + bool4x4 b1 = bool4x4(true, false, true, false, false, false, false, true, false, true, false, true, true, false, true, false); + bool4x4 r1 = bool4x4(true, false, true, false, false, false, false, true, false, true, false, true, true, false, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (false); + bool4x4 b2 = bool4x4(false, false, true, false, false, false, false, false, true, false, false, true, true, false, false, true); + bool4x4 r2 = bool4x4(false, false, true, false, false, false, false, false, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool4x4 b3 = bool4x4(true, false, false, false, false, false, false, false, true, true, true, true, false, false, true, false); + bool4x4 r3 = bool4x4(true, false, false, false, false, false, false, false, true, true, true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_logical_not() + { + bool4x4 a0 = bool4x4(false, true, false, true, false, false, false, true, true, false, true, true, true, false, false, false); + bool4x4 r0 = bool4x4(true, false, true, false, true, true, true, false, false, true, false, false, false, true, true, true); + TestUtils.AreEqual(!a0, r0); + + bool4x4 a1 = bool4x4(true, false, true, false, true, false, false, true, true, true, true, true, true, false, true, false); + bool4x4 r1 = bool4x4(false, true, false, true, false, true, true, false, false, false, false, false, false, true, false, true); + TestUtils.AreEqual(!a1, r1); + + bool4x4 a2 = bool4x4(false, false, false, false, true, true, false, false, false, false, true, false, true, true, true, false); + bool4x4 r2 = bool4x4(true, true, true, true, false, false, true, true, true, true, false, true, false, false, false, true); + TestUtils.AreEqual(!a2, r2); + + bool4x4 a3 = bool4x4(true, false, true, true, true, false, true, false, true, true, false, true, true, false, true, true); + bool4x4 r3 = bool4x4(false, true, false, false, false, true, false, true, false, false, true, false, false, true, false, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x4.gen.cs.meta new file mode 100644 index 0000000..65dfed0 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestBool4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d44f89a4f95a124b9fc8296247d76d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2.gen.cs new file mode 100644 index 0000000..64be2a1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2.gen.cs @@ -0,0 +1,1055 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble2 + { + [TestCompiler] + public static void double2_zero() + { + TestUtils.AreEqual(double2.zero.x, 0.0); + TestUtils.AreEqual(double2.zero.y, 0.0); + } + + [TestCompiler] + public static void double2_constructor() + { + double2 a = new double2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void double2_scalar_constructor() + { + double2 a = new double2(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + } + + [TestCompiler] + public static void double2_static_constructor() + { + double2 a = double2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void double2_static_scalar_constructor() + { + double2 a = double2(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + } + + [TestCompiler] + public static void double2_operator_equal_wide_wide() + { + double2 a0 = double2(-135.18925172425304, -49.094127439471947); + double2 b0 = double2(-220.01464591734793, 66.980020792679852); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2 a1 = double2(169.12980778940482, 240.80529772527757); + double2 b1 = double2(499.20158576369363, -371.113114291389); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2 a2 = double2(314.73919382446411, 442.39301916695808); + double2 b2 = double2(208.44865212610398, 390.80369133074009); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2 a3 = double2(177.92444881141398, 335.53340283759564); + double2 b3 = double2(-72.443806920407269, 362.97643273089841); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2_operator_equal_wide_scalar() + { + double2 a0 = double2(65.671194345537174, 404.41550440546848); + double b0 = (-155.8157547245807); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2 a1 = double2(-269.7301577393572, 152.99450476141385); + double b1 = (83.630607882342588); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2 a2 = double2(-155.86829836474186, 386.36515325417986); + double b2 = (314.67125597348024); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2 a3 = double2(290.04894007837811, -65.667489797653388); + double b3 = (-132.63519460178691); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double2 b0 = double2(-400.48919958644046, -71.286823544319191); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (156.97811491646712); + double2 b1 = double2(-225.23872791288363, 499.14180993435059); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-211.97992358542047); + double2 b2 = double2(428.31192394174263, -489.50133322621758); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-5.6915457275190988); + double2 b3 = double2(-30.865948453017495, -362.98307221149241); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2_operator_not_equal_wide_wide() + { + double2 a0 = double2(279.99414576217259, -43.342018386042696); + double2 b0 = double2(-460.912120318465, -476.00904844515446); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2 a1 = double2(-465.72473523846116, 317.46655645848557); + double2 b1 = double2(468.13642070635058, -341.01254312182431); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2 a2 = double2(85.714987079480238, 360.89050572034466); + double2 b2 = double2(-62.658060341448561, -458.80166718866752); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2 a3 = double2(366.08152668833804, 154.5428384070018); + double2 b3 = double2(-457.73023316717251, -59.523265627922171); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2_operator_not_equal_wide_scalar() + { + double2 a0 = double2(-155.44111282911206, -19.426602134214079); + double b0 = (-393.41354173860213); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2 a1 = double2(174.63305409934048, 59.177048472304364); + double b1 = (507.9207296352464); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2 a2 = double2(171.15146430356026, -398.17684835855704); + double b2 = (-58.923273352404692); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2 a3 = double2(492.20105361016522, 270.34102333259818); + double b3 = (-165.24150879925185); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double2 b0 = double2(459.55319592894671, 436.45324369727314); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-488.71416806090349); + double2 b1 = double2(392.76794475725296, -266.73665369056937); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (338.55788270503183); + double2 b2 = double2(-338.10012475498957, -152.3145445102428); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-452.82067868338); + double2 b3 = double2(209.43931422449612, 50.107968592135194); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_wide_wide() + { + double2 a0 = double2(51.710243010758518, -313.85556450200062); + double2 b0 = double2(-261.83523881707117, -19.810742149041403); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2 a1 = double2(283.04767359562572, 235.02188621974642); + double2 b1 = double2(-149.25882084167506, 205.99822316225539); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double2 a2 = double2(44.0783565249659, -207.25566659088042); + double2 b2 = double2(-306.02438535635565, 102.12168006884008); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2 a3 = double2(3.3829410091894943, -144.30134326978651); + double2 b3 = double2(231.90633760760829, 179.49885305180158); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_wide_scalar() + { + double2 a0 = double2(-221.86977325280651, -121.54646807608498); + double b0 = (199.06751808853244); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2 a1 = double2(-97.52392511140738, 67.118990214131259); + double b1 = (479.88107775146193); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2 a2 = double2(137.32880574899207, 258.27909362422258); + double b2 = (282.96659601990439); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2 a3 = double2(-111.41316061439608, 82.665427008022334); + double b3 = (-288.08113278452356); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double2 b0 = double2(-377.19654887597846, -505.14754104295167); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (375.92672198634909); + double2 b1 = double2(110.17393474940855, -118.09757452742082); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-40.45089079833167); + double2 b2 = double2(-299.74430932651478, 31.437125935888389); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-458.904539560389); + double2 b3 = double2(13.684679276163024, -458.50690839183841); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_wide_wide() + { + double2 a0 = double2(-229.29066501804192, 505.536608216137); + double2 b0 = double2(-445.84502407808088, -420.03529210576568); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2 a1 = double2(-73.80706862071861, 100.29203777215071); + double2 b1 = double2(299.02440108872224, -13.880978829171966); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double2 a2 = double2(-419.21478124112582, -159.55974753180504); + double2 b2 = double2(151.56173593903043, -163.5094302461992); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double2 a3 = double2(-396.7703608929973, 127.03739482119556); + double2 b3 = double2(-391.09603733154762, 479.2837710228207); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_wide_scalar() + { + double2 a0 = double2(11.156317000815761, -411.02322382993214); + double b0 = (-302.81693877969724); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double2 a1 = double2(385.88556188432756, -491.18003033622171); + double b1 = (-485.10304831206008); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double2 a2 = double2(405.17534632476759, 69.269281181166548); + double b2 = (173.57509740329124); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2 a3 = double2(501.30683183172107, -86.124509613087639); + double b3 = (-367.027771405423); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double2 b0 = double2(-226.20441423459187, -423.46500487973213); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (409.40550227156166); + double2 b1 = double2(453.87706277048073, 87.475727837288673); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (113.79560308987072); + double2 b2 = double2(176.40926154721956, -140.44002944810319); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-182.48286804113673); + double2 b3 = double2(-158.29329188088576, -162.68531830733889); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_equal_wide_wide() + { + double2 a0 = double2(240.09053169940159, 462.2131528622532); + double2 b0 = double2(-81.203838624620744, 493.63743876555816); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2 a1 = double2(293.08251561461134, -427.87067361728782); + double2 b1 = double2(-411.47211451617636, 99.164449499530974); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2 a2 = double2(-405.5227226715175, 204.59190211286386); + double2 b2 = double2(-295.66769875943089, -480.46254824123463); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2 a3 = double2(294.670105832941, -327.56444445604666); + double2 b3 = double2(74.414040361723892, 260.916124226952); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_equal_wide_scalar() + { + double2 a0 = double2(309.1924356469849, 69.673792633076118); + double b0 = (292.92427148154206); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2 a1 = double2(-101.72418622939114, -346.01106731314724); + double b1 = (-315.97240629604664); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2 a2 = double2(424.15386577330241, -483.90265320423185); + double b2 = (-410.87006945669191); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double2 a3 = double2(183.82114538169515, -257.87003791419329); + double b3 = (320.44249287268258); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double2 b0 = double2(51.159012579898786, 340.44369022010062); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (312.81429519914752); + double2 b1 = double2(354.19252626699983, 136.39671165142056); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-94.767871185563422); + double2 b2 = double2(288.544332877055, 304.04282369466625); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-148.61806089646092); + double2 b3 = double2(-506.30010127755816, 27.581254256694251); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_equal_wide_wide() + { + double2 a0 = double2(-386.59181302906563, -157.12078221008215); + double2 b0 = double2(153.44301350109424, 49.892483019219981); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2 a1 = double2(391.01526445477054, -511.88687133783793); + double2 b1 = double2(78.025787628267835, 138.81373292711271); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double2 a2 = double2(-5.4220387960886569, 287.64527501149348); + double2 b2 = double2(-225.51057802211056, -339.35611335344436); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double2 a3 = double2(-122.53520184500849, 7.4814426933794493); + double2 b3 = double2(-373.302078182484, 364.9358934671319); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_equal_wide_scalar() + { + double2 a0 = double2(495.457423679278, -14.345115906719627); + double b0 = (189.20512804258851); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2 a1 = double2(-463.47478053694346, -246.86571776441565); + double b1 = (217.51749215718246); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double2 a2 = double2(-377.65869706573835, -123.33294373533357); + double b2 = (53.815095211293169); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double2 a3 = double2(-221.50546441856096, -116.44038277326172); + double b3 = (252.99433410027734); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double2 b0 = double2(204.80295310020585, -101.10404853760451); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-122.05503827056617); + double2 b1 = double2(-70.456147941973143, -239.62025677395064); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-185.99272426683115); + double2 b2 = double2(-455.61258027312, 276.66581476697036); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (79.39918831707871); + double2 b3 = double2(416.42054791768112, 379.27350801009379); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2_operator_add_wide_wide() + { + double2 a0 = double2(465.14837644302679, 278.91072548502621); + double2 b0 = double2(483.99436186440028, -204.07667193379098); + double2 r0 = double2(949.14273830742707, 74.834053551235229); + TestUtils.AreEqual(a0 + b0, r0); + + double2 a1 = double2(-277.52992237616792, -65.197214395365336); + double2 b1 = double2(-365.67356007437854, -509.92086076639634); + double2 r1 = double2(-643.20348245054652, -575.11807516176168); + TestUtils.AreEqual(a1 + b1, r1); + + double2 a2 = double2(-473.32437561141529, -4.6955420992782138); + double2 b2 = double2(-270.69751108377125, 486.76397846954126); + double2 r2 = double2(-744.02188669518659, 482.06843637026304); + TestUtils.AreEqual(a2 + b2, r2); + + double2 a3 = double2(-470.53676698661258, -109.95011453980118); + double2 b3 = double2(267.49177587567442, 251.6425212601398); + double2 r3 = double2(-203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2_operator_add_wide_scalar() + { + double2 a0 = double2(459.89829728561369, -447.66336104258119); + double b0 = (500.99725913489112); + double2 r0 = double2(960.89555642050482, 53.333898092309937); + TestUtils.AreEqual(a0 + b0, r0); + + double2 a1 = double2(-94.438627525436971, -36.254356162741033); + double b1 = (126.42986279652916); + double2 r1 = double2(31.991235271092194, 90.175506633788132); + TestUtils.AreEqual(a1 + b1, r1); + + double2 a2 = double2(-349.64130060264904, -478.41478489265535); + double b2 = (-2.7912590516690443); + double2 r2 = double2(-352.43255965431808, -481.20604394432439); + TestUtils.AreEqual(a2 + b2, r2); + + double2 a3 = double2(443.11525246273504, 41.32102133767728); + double b3 = (268.092225914864); + double2 r3 = double2(711.207478377599, 309.41324725254128); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double2 b0 = double2(-264.08813178915909, -106.00925998855814); + double2 r0 = double2(-589.60089663304427, -431.52202483244332); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-355.44729320865463); + double2 b1 = double2(-447.33029362528134, -158.70021040677102); + double2 r1 = double2(-802.777586833936, -514.14750361542565); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-199.48369154682553); + double2 b2 = double2(180.31809123806568, 337.57936898692481); + double2 r2 = double2(-19.165600308759849, 138.09567744009928); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (-37.05501486596421); + double2 b3 = double2(230.80498014707348, -140.17433339924287); + double2 r3 = double2(193.74996528110927, -177.22934826520708); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2_operator_sub_wide_wide() + { + double2 a0 = double2(133.37101680290471, -131.8321183341705); + double2 b0 = double2(123.46028739002543, 359.56010048443454); + double2 r0 = double2(9.9107294128792773, -491.39221881860504); + TestUtils.AreEqual(a0 - b0, r0); + + double2 a1 = double2(-197.29314407952739, -485.286571013409); + double2 b1 = double2(-48.24847819667707, 478.97904680621764); + double2 r1 = double2(-149.04466588285032, -964.26561781962664); + TestUtils.AreEqual(a1 - b1, r1); + + double2 a2 = double2(-337.55033103448818, 471.66710470228782); + double2 b2 = double2(207.15832886805686, 142.36730462981723); + double2 r2 = double2(-544.708659902545, 329.29980007247059); + TestUtils.AreEqual(a2 - b2, r2); + + double2 a3 = double2(146.5066197600712, -130.58504372955537); + double2 b3 = double2(-125.60551005490379, -65.299004823574307); + double2 r3 = double2(272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2_operator_sub_wide_scalar() + { + double2 a0 = double2(48.936717294592768, 410.45158953706346); + double b0 = (-291.59041442144212); + double2 r0 = double2(340.52713171603489, 702.04200395850557); + TestUtils.AreEqual(a0 - b0, r0); + + double2 a1 = double2(-364.44171612544062, -460.06732318367222); + double b1 = (163.98060353285666); + double2 r1 = double2(-528.42231965829728, -624.04792671652888); + TestUtils.AreEqual(a1 - b1, r1); + + double2 a2 = double2(110.91942339340198, 180.26971420099483); + double b2 = (204.35834441164434); + double2 r2 = double2(-93.438921018242354, -24.088630210649512); + TestUtils.AreEqual(a2 - b2, r2); + + double2 a3 = double2(-377.92569344952972, 400.53491968686455); + double b3 = (-470.26204297983185); + double2 r3 = double2(92.33634953030213, 870.79696266669634); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double2 b0 = double2(452.35251757705237, 256.98980891750648); + double2 r0 = double2(-157.76605851844238, 37.59665014110351); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-275.159888634067); + double2 b1 = double2(-89.027518075437968, 488.22838829840919); + double2 r1 = double2(-186.13237055862902, -763.38827693247617); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-333.21728030462623); + double2 b2 = double2(-64.232989102710519, -66.041730196234653); + double2 r2 = double2(-268.98429120191571, -267.17555010839158); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (341.20492831859963); + double2 b3 = double2(-385.775056303374, 75.394746577085357); + double2 r3 = double2(726.9799846219737, 265.81018174151427); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2_operator_mul_wide_wide() + { + double2 a0 = double2(-394.78053898121254, -412.37219519744264); + double2 b0 = double2(-149.76397831261346, -345.04538671348496); + double2 r0 = double2(59123.904078224172, 142287.1235617903); + TestUtils.AreEqual(a0 * b0, r0); + + double2 a1 = double2(-25.874570143350638, -241.04595886964626); + double2 b1 = double2(-284.33404721148963, 267.97923648915219); + double2 r1 = double2(7357.0212487164608, -64595.312016683383); + TestUtils.AreEqual(a1 * b1, r1); + + double2 a2 = double2(-93.675987525692221, 244.15999257013198); + double2 b2 = double2(-326.64849558782225, -150.68967754705329); + double2 r2 = double2(30599.120397970968, -36792.390550284115); + TestUtils.AreEqual(a2 * b2, r2); + + double2 a3 = double2(494.68846606402121, 53.537962700025105); + double2 b3 = double2(207.73243794577775, 366.19289248352538); + double2 r3 = double2(102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2_operator_mul_wide_scalar() + { + double2 a0 = double2(328.20302191758674, -290.10672272839895); + double b0 = (192.21119055161773); + double2 r0 = double2(63084.293585418032, -55761.758562653624); + TestUtils.AreEqual(a0 * b0, r0); + + double2 a1 = double2(236.99572454998065, 357.90315811610924); + double b1 = (120.48136692889102); + double2 r1 = double2(28553.568850084604, 43120.661717995856); + TestUtils.AreEqual(a1 * b1, r1); + + double2 a2 = double2(134.86723214707672, -438.272912467957); + double b2 = (-477.31047104173825); + double2 r2 = double2(-64373.542104216656, 209192.25029491508); + TestUtils.AreEqual(a2 * b2, r2); + + double2 a3 = double2(-46.729179165665585, 422.08249374017237); + double b3 = (-238.40500103608008); + double2 r3 = double2(11140.470007405675, -100626.57735743705); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double2 b0 = double2(329.36093846399376, -198.68342671109525); + double2 r0 = double2(-152999.58486347177, 92295.346096036214); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (184.07942518223047); + double2 b1 = double2(256.01618754864489, 266.22629297255833); + double2 r1 = double2(47127.312641300661, 49006.78297878462); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (-97.894749448585685); + double2 b2 = double2(159.74810583877752, -351.82222263506719); + double2 r2 = double2(-15638.500795973274, 34441.548335304433); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (491.80157660497423); + double2 b3 = double2(49.902031206480274, 424.46256871915546); + double2 r3 = double2(24541.897623137622, 208751.36050587788); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2_operator_div_wide_wide() + { + double2 a0 = double2(246.26574933075619, -269.85612953354428); + double2 b0 = double2(172.11981423763552, -77.141104972521362); + double2 r0 = double2(1.4307809383918566, 3.4982144685336105); + TestUtils.AreEqual(a0 / b0, r0); + + double2 a1 = double2(-451.61952588130697, -7.38850236283082); + double2 b1 = double2(-325.8353723612779, -450.60868117334724); + double2 r1 = double2(1.3860359070548143, 0.016396715535066435); + TestUtils.AreEqual(a1 / b1, r1); + + double2 a2 = double2(-308.20558681534862, -373.394808704683); + double2 b2 = double2(-261.26215398556656, -122.44949847201326); + double2 r2 = double2(1.1796794220427942, 3.0493780159501847); + TestUtils.AreEqual(a2 / b2, r2); + + double2 a3 = double2(360.41863482092447, 25.80972458133931); + double2 b3 = double2(-93.210781379235357, -442.00522705633438); + double2 r3 = double2(-3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2_operator_div_wide_scalar() + { + double2 a0 = double2(-244.51745116175965, 69.112274917360537); + double b0 = (-60.024377612408443); + double2 r0 = double2(4.0736357608014941, -1.1514034408425655); + TestUtils.AreEqual(a0 / b0, r0); + + double2 a1 = double2(-333.02311888943575, 403.24561257066466); + double b1 = (257.39682519500923); + double2 r1 = double2(-1.2938120687274619, 1.5666300944666172); + TestUtils.AreEqual(a1 / b1, r1); + + double2 a2 = double2(154.34436066185322, -261.88639200007844); + double b2 = (131.52659160062979); + double2 r2 = double2(1.1734840748440269, -1.9911288570092047); + TestUtils.AreEqual(a2 / b2, r2); + + double2 a3 = double2(-348.92380516087815, 210.55792174607416); + double b3 = (-275.53868187383688); + double2 r3 = double2(1.26633328862567, -0.76416828415577609); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double2 b0 = double2(-422.676129776368, 248.12963235011773); + double2 r0 = double2(-0.098746193168297289, 0.1682090863683405); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (449.39137741988122); + double2 b1 = double2(245.85813796047967, -326.62061253498337); + double2 r1 = double2(1.8278482914896166, -1.3758818646871169); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (163.71510489457989); + double2 b2 = double2(333.664472020075, 38.291076916405473); + double2 r2 = double2(0.4906578872584611, 4.2755419298337261); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-472.97976062864984); + double2 b3 = double2(192.23013958345643, -200.29686960964318); + double2 r3 = double2(-2.4604870061143891, 2.3613936730535827); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2_operator_mod_wide_wide() + { + double2 a0 = double2(-442.30985924336585, 368.50046246522129); + double2 b0 = double2(-43.245045443645211, -144.19587690392319); + double2 r0 = double2(-9.8594048069137443, 80.1087086573749); + TestUtils.AreEqual(a0 % b0, r0); + + double2 a1 = double2(-1.0938966279355213, -364.67383473211612); + double2 b1 = double2(-62.640481739603217, -336.82826510855381); + double2 r1 = double2(-1.0938966279355213, -27.845569623562312); + TestUtils.AreEqual(a1 % b1, r1); + + double2 a2 = double2(-197.34394487987458, -34.034902350062); + double2 b2 = double2(-154.6102545981343, -154.02935583611452); + double2 r2 = double2(-42.73369028174028, -34.034902350062); + TestUtils.AreEqual(a2 % b2, r2); + + double2 a3 = double2(-101.34858350704826, 208.31857142612273); + double2 b3 = double2(487.0462093237071, -469.82909105244516); + double2 r3 = double2(-101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2_operator_mod_wide_scalar() + { + double2 a0 = double2(-433.41699548876704, -5.5141427542614565); + double b0 = (-90.499235433758827); + double2 r0 = double2(-71.420053753731736, -5.5141427542614565); + TestUtils.AreEqual(a0 % b0, r0); + + double2 a1 = double2(393.39439958771425, -120.80601626299602); + double b1 = (299.41153277988155); + double2 r1 = double2(93.982866807832693, -120.80601626299602); + TestUtils.AreEqual(a1 % b1, r1); + + double2 a2 = double2(-502.939041133476, 186.09479698263794); + double b2 = (-450.80766245853511); + double2 r2 = double2(-52.131378674940891, 186.09479698263794); + TestUtils.AreEqual(a2 % b2, r2); + + double2 a3 = double2(-84.473635951277629, 433.45469041981482); + double b3 = (-318.78148356023314); + double2 r3 = double2(-84.473635951277629, 114.67320685958168); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double2 b0 = double2(-159.14024384279747, 230.17333399046834); + double2 r0 = double2(-78.141915119319151, -166.24906881444576); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (14.779358632294134); + double2 b1 = double2(-303.15649738123477, 399.63502020371845); + double2 r1 = double2(14.779358632294134, 14.779358632294134); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (206.69470534412881); + double2 b2 = double2(397.04482263934096, -393.89064735634747); + double2 r2 = double2(206.69470534412881, 206.69470534412881); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-372.06709426085797); + double2 b3 = double2(201.01229796233224, -95.5668547598491); + double2 r3 = double2(-171.05479629852573, -85.366529981310691); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2_operator_plus() + { + double2 a0 = double2(271.6708086802023, -79.080240524876956); + double2 r0 = double2(271.6708086802023, -79.080240524876956); + TestUtils.AreEqual(+a0, r0); + + double2 a1 = double2(-330.98506203805334, 315.44952860262686); + double2 r1 = double2(-330.98506203805334, 315.44952860262686); + TestUtils.AreEqual(+a1, r1); + + double2 a2 = double2(319.22218742930431, -350.30858270745193); + double2 r2 = double2(319.22218742930431, -350.30858270745193); + TestUtils.AreEqual(+a2, r2); + + double2 a3 = double2(-320.51845875406565, -107.00351267075331); + double2 r3 = double2(-320.51845875406565, -107.00351267075331); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double2_operator_neg() + { + double2 a0 = double2(420.22718854445372, -196.25749811728366); + double2 r0 = double2(-420.22718854445372, 196.25749811728366); + TestUtils.AreEqual(-a0, r0); + + double2 a1 = double2(-335.42683068636188, -33.014395013923945); + double2 r1 = double2(335.42683068636188, 33.014395013923945); + TestUtils.AreEqual(-a1, r1); + + double2 a2 = double2(-498.57532071442125, -270.85946787095605); + double2 r2 = double2(498.57532071442125, 270.85946787095605); + TestUtils.AreEqual(-a2, r2); + + double2 a3 = double2(19.686896571743773, -180.60051473444349); + double2 r3 = double2(-19.686896571743773, 180.60051473444349); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double2_operator_prefix_inc() + { + double2 a0 = double2(-99.79557113526181, 458.74185082816609); + double2 r0 = double2(-98.79557113526181, 459.74185082816609); + TestUtils.AreEqual(++a0, r0); + + double2 a1 = double2(96.179026886904126, -315.728967098393); + double2 r1 = double2(97.179026886904126, -314.728967098393); + TestUtils.AreEqual(++a1, r1); + + double2 a2 = double2(-299.23014583216525, -456.89028832730384); + double2 r2 = double2(-298.23014583216525, -455.89028832730384); + TestUtils.AreEqual(++a2, r2); + + double2 a3 = double2(-76.507656371457358, 64.0964734852763); + double2 r3 = double2(-75.507656371457358, 65.0964734852763); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double2_operator_postfix_inc() + { + double2 a0 = double2(322.94356623429042, 472.05246542024076); + double2 r0 = double2(322.94356623429042, 472.05246542024076); + TestUtils.AreEqual(a0++, r0); + + double2 a1 = double2(203.48761925636211, -31.420532002775246); + double2 r1 = double2(203.48761925636211, -31.420532002775246); + TestUtils.AreEqual(a1++, r1); + + double2 a2 = double2(455.33662459595905, 55.736877228942149); + double2 r2 = double2(455.33662459595905, 55.736877228942149); + TestUtils.AreEqual(a2++, r2); + + double2 a3 = double2(153.75031645305, -427.40105100506969); + double2 r3 = double2(153.75031645305, -427.40105100506969); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double2_operator_prefix_dec() + { + double2 a0 = double2(-416.20121712992022, -96.637880131899351); + double2 r0 = double2(-417.20121712992022, -97.637880131899351); + TestUtils.AreEqual(--a0, r0); + + double2 a1 = double2(-50.145671629414721, 439.47906156977592); + double2 r1 = double2(-51.145671629414721, 438.47906156977592); + TestUtils.AreEqual(--a1, r1); + + double2 a2 = double2(-304.40081920493435, 246.08898293510492); + double2 r2 = double2(-305.40081920493435, 245.08898293510492); + TestUtils.AreEqual(--a2, r2); + + double2 a3 = double2(171.96452935597142, 298.28480710568135); + double2 r3 = double2(170.96452935597142, 297.28480710568135); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double2_operator_postfix_dec() + { + double2 a0 = double2(-376.59242719066907, 16.969734438215255); + double2 r0 = double2(-376.59242719066907, 16.969734438215255); + TestUtils.AreEqual(a0--, r0); + + double2 a1 = double2(-0.25066399585949739, 409.55752940175944); + double2 r1 = double2(-0.25066399585949739, 409.55752940175944); + TestUtils.AreEqual(a1--, r1); + + double2 a2 = double2(47.856652520530247, -262.062590959511); + double2 r2 = double2(47.856652520530247, -262.062590959511); + TestUtils.AreEqual(a2--, r2); + + double2 a3 = double2(-182.40572866350681, -129.23265582380475); + double2 r3 = double2(-182.40572866350681, -129.23265582380475); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void double2_shuffle_result_1() + { + double2 a = double2(0, 1); + double2 b = double2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (3)); + } + + [TestCompiler] + public static void double2_shuffle_result_2() + { + double2 a = double2(0, 1); + double2 b = double2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX), double2(0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftX), double2(1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), double2(2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX), double2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY), double2(0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double2(1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY), double2(2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), double2(3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX), double2(0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), double2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX), double2(2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), double2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY), double2(0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY), double2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY), double2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), double2(3, 3)); + } + + [TestCompiler] + public static void double2_shuffle_result_3() + { + double2 a = double2(0, 1); + double2 b = double2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY), double3(2, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightX), double3(2, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(1, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), double3(0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftX), double3(3, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), double3(2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX), double3(2, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY), double3(3, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightX), double3(3, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(0, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(3, 1, 1)); + } + + [TestCompiler] + public static void double2_shuffle_result_4() + { + double2 a = double2(0, 1); + double2 b = double2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX), double4(0, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(2, 1, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX), double4(3, 2, 3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), double4(2, 0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightX), double4(0, 3, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftY), double4(3, 0, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftX), double4(2, 2, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(2, 2, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.LeftY), double4(0, 1, 2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightY), double4(2, 1, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftY), double4(3, 3, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double4(2, 2, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), double4(3, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), double4(2, 2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(0, 3, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), double4(2, 0, 0, 0)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2.gen.cs.meta new file mode 100644 index 0000000..d496ffc --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aad8a485c4a133942b50e482a663b6a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x2.gen.cs new file mode 100644 index 0000000..6caad9b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x2.gen.cs @@ -0,0 +1,950 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble2x2 + { + [TestCompiler] + public static void double2x2_zero() + { + TestUtils.AreEqual(double2x2.zero.c0.x, 0.0); + TestUtils.AreEqual(double2x2.zero.c0.y, 0.0); + TestUtils.AreEqual(double2x2.zero.c1.x, 0.0); + TestUtils.AreEqual(double2x2.zero.c1.y, 0.0); + } + + [TestCompiler] + public static void double2x2_identity() + { + TestUtils.AreEqual(double2x2.identity.c0.x, 1.0); + TestUtils.AreEqual(double2x2.identity.c0.y, 0.0); + TestUtils.AreEqual(double2x2.identity.c1.x, 0.0); + TestUtils.AreEqual(double2x2.identity.c1.y, 1.0); + } + + [TestCompiler] + public static void double2x2_operator_equal_wide_wide() + { + double2x2 a0 = double2x2(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757); + double2x2 b0 = double2x2(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x2 a1 = double2x2(314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564); + double2x2 b1 = double2x2(208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x2 a2 = double2x2(168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double2x2 b2 = double2x2(194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x2 a3 = double2x2(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double2x2 b3 = double2x2(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_equal_wide_scalar() + { + double2x2 a0 = double2x2(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588); + double b0 = (-155.8157547245807); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x2 a1 = double2x2(152.99450476141385, 314.67125597348024, 386.36515325417986, 290.04894007837811); + double b1 = (-155.86829836474186); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x2 a2 = double2x2(-132.63519460178691, -69.683271678948415, -191.19075521789063, 186.84520086406042); + double b2 = (-65.667489797653388); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x2 a3 = double2x2(-232.89569221851218, -49.701092981594172, -300.88189925853248, 333.39685193328046); + double b3 = (-319.14406481345372); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double2x2 b0 = double2x2(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (499.14180993435059); + double2x2 b1 = double2x2(-211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-30.865948453017495); + double2x2 b2 = double2x2(-362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (390.36923879681581); + double2x2 b3 = double2x2(505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_not_equal_wide_wide() + { + double2x2 a0 = double2x2(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557); + double2x2 b0 = double2x2(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x2 a1 = double2x2(85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018); + double2x2 b1 = double2x2(-62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x2 a2 = double2x2(332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double2x2 b2 = double2x2(3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x2 a3 = double2x2(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double2x2 b3 = double2x2(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_not_equal_wide_scalar() + { + double2x2 a0 = double2x2(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464); + double b0 = (-393.41354173860213); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x2 a1 = double2x2(59.177048472304364, -58.923273352404692, -398.17684835855704, 492.20105361016522); + double b1 = (171.15146430356026); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x2 a2 = double2x2(-165.24150879925185, -380.24326222960059, 501.8990516615562, -134.34545642433011); + double b2 = (270.34102333259818); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x2 a3 = double2x2(458.40042302496749, 161.45995123752391, 261.51423442620512, -145.61239559278471); + double b3 = (46.771004937016869); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double2x2 b0 = double2x2(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-266.73665369056937); + double2x2 b1 = double2x2(338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (209.43931422449612); + double2x2 b2 = double2x2(50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (270.40006149485714); + double2x2 b3 = double2x2(-472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_wide_wide() + { + double2x2 a0 = double2x2(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642); + double2x2 b0 = double2x2(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double2x2 a1 = double2x2(44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651); + double2x2 b1 = double2x2(-306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158); + bool2x2 r1 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x2 a2 = double2x2(-69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double2x2 b2 = double2x2(473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x2 a3 = double2x2(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double2x2 b3 = double2x2(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_wide_scalar() + { + double2x2 a0 = double2x2(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193); + double b0 = (199.06751808853244); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double2x2 a1 = double2x2(67.118990214131259, 282.96659601990439, 258.27909362422258, -111.41316061439608); + double b1 = (137.32880574899207); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x2 a2 = double2x2(-288.08113278452356, -361.64292042406413, -68.088202269788951, 12.788020378345664); + double b2 = (82.665427008022334); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x2 a3 = double2x2(-66.703050406045747, 25.727694284975428, 101.37087182950734, -330.442660724019); + double b3 = (-78.762971199472872); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double2x2 b0 = double2x2(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-118.09757452742082); + double2x2 b1 = double2x2(-40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389); + bool2x2 r1 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (13.684679276163024); + double2x2 b2 = double2x2(-458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055); + bool2x2 r2 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-221.63786731550368); + double2x2 b3 = double2x2(-424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206); + bool2x2 r3 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_wide_wide() + { + double2x2 a0 = double2x2(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071); + double2x2 b0 = double2x2(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966); + bool2x2 r0 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2x2 a1 = double2x2(-419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556); + double2x2 b1 = double2x2(151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double2x2 a2 = double2x2(489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double2x2 b2 = double2x2(-77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2x2 a3 = double2x2(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double2x2 b3 = double2x2(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_wide_scalar() + { + double2x2 a0 = double2x2(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008); + double b0 = (-302.81693877969724); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double2x2 a1 = double2x2(-491.18003033622171, 173.57509740329124, 69.269281181166548, 501.30683183172107); + double b1 = (405.17534632476759); + bool2x2 r1 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double2x2 a2 = double2x2(-367.027771405423, -489.09058998948456, -172.51816066192379, -18.149639853346002); + double b2 = (-86.124509613087639); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double2x2 a3 = double2x2(-236.41493498367021, -27.239137900638923, 471.77934072528933, 240.16453253485474); + double b3 = (-238.8945134798505); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double2x2 b0 = double2x2(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (87.475727837288673); + double2x2 b1 = double2x2(113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673); + bool2x2 r1 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-158.29329188088576); + double2x2 b2 = double2x2(-162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (392.5205878655056); + double2x2 b3 = double2x2(-177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_equal_wide_wide() + { + double2x2 a0 = double2x2(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782); + double2x2 b0 = double2x2(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974); + bool2x2 r0 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x2 a1 = double2x2(-405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666); + double2x2 b1 = double2x2(-295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x2 a2 = double2x2(-456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double2x2 b2 = double2x2(306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool2x2 r2 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x2 a3 = double2x2(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double2x2 b3 = double2x2(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_equal_wide_scalar() + { + double2x2 a0 = double2x2(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664); + double b0 = (292.92427148154206); + bool2x2 r0 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x2 a1 = double2x2(-346.01106731314724, -410.87006945669191, -483.90265320423185, 183.82114538169515); + double b1 = (424.15386577330241); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x2 a2 = double2x2(320.44249287268258, -386.801748694294, -182.9388249772316, 349.25012962392077); + double b2 = (-257.87003791419329); + bool2x2 r2 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x2 a3 = double2x2(485.31159304329731, 259.15151822713744, 450.13007828692446, -128.5255282523695); + double b3 = (373.56911652794531); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double2x2 b0 = double2x2(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (136.39671165142056); + double2x2 b1 = double2x2(-94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-506.30010127755816); + double2x2 b2 = double2x2(27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-480.43516968210935); + double2x2 b3 = double2x2(421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_equal_wide_wide() + { + double2x2 a0 = double2x2(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793); + double2x2 b0 = double2x2(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x2 a1 = double2x2(-5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493); + double2x2 b1 = double2x2(-225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319); + bool2x2 r1 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x2 a2 = double2x2(152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double2x2 b2 = double2x2(-322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool2x2 r2 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x2 a3 = double2x2(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double2x2 b3 = double2x2(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool2x2 r3 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_equal_wide_scalar() + { + double2x2 a0 = double2x2(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246); + double b0 = (189.20512804258851); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x2 a1 = double2x2(-246.86571776441565, 53.815095211293169, -123.33294373533357, -221.50546441856096); + double b1 = (-377.65869706573835); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x2 a2 = double2x2(252.99433410027734, -395.36331028275345, 164.77259667439978, -287.00733889593153); + double b2 = (-116.44038277326172); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x2 a3 = double2x2(355.83704559683667, 273.01225555735277, -418.14240308205706, 249.38409697701411); + double b3 = (184.19556316369938); + bool2x2 r3 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double2x2 b0 = double2x2(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-239.62025677395064); + double2x2 b1 = double2x2(-185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (416.42054791768112); + double2x2 b2 = double2x2(379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-367.25635474140586); + double2x2 b3 = double2x2(494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_add_wide_wide() + { + double2x2 a0 = double2x2(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336); + double2x2 b0 = double2x2(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634); + double2x2 r0 = double2x2(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168); + TestUtils.AreEqual(a0 + b0, r0); + + double2x2 a1 = double2x2(-473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118); + double2x2 b1 = double2x2(-270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398); + double2x2 r1 = double2x2(-744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a1 + b1, r1); + + double2x2 a2 = double2x2(-178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double2x2 b2 = double2x2(244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double2x2 r2 = double2x2(65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a2 + b2, r2); + + double2x2 a3 = double2x2(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double2x2 b3 = double2x2(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double2x2 r3 = double2x2(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_add_wide_scalar() + { + double2x2 a0 = double2x2(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916); + double b0 = (500.99725913489112); + double2x2 r0 = double2x2(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029); + TestUtils.AreEqual(a0 + b0, r0); + + double2x2 a1 = double2x2(-36.254356162741033, -2.7912590516690443, -478.41478489265535, 443.11525246273504); + double b1 = (-349.64130060264904); + double2x2 r1 = double2x2(-385.89565676539007, -352.43255965431808, -828.05608549530439, 93.473951860086); + TestUtils.AreEqual(a1 + b1, r1); + + double2x2 a2 = double2x2(268.092225914864, -471.25607584009697, -2.6649749291431704, 78.985822952811532); + double b2 = (41.32102133767728); + double2x2 r2 = double2x2(309.41324725254128, -429.93505450241969, 38.65604640853411, 120.30684429048881); + TestUtils.AreEqual(a2 + b2, r2); + + double2x2 a3 = double2x2(202.14799151297098, 10.345855002452595, -151.24445898423181, 355.23276703210206); + double b3 = (311.7254551908585); + double2x2 r3 = double2x2(513.87344670382947, 322.07131019331109, 160.48099620662668, 666.95822222296056); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double2x2 b0 = double2x2(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134); + double2x2 r0 = double2x2(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-158.70021040677102); + double2x2 b1 = double2x2(-199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421); + double2x2 r1 = double2x2(-358.18390195359655, 21.617880831294656, 178.87915858015378, -195.75522527273523); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (230.80498014707348); + double2x2 b2 = double2x2(-140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458); + double2x2 r2 = double2x2(90.63064674783061, 248.82917606496676, 92.190621895804327, 257.70914375861594); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (-374.53758233345); + double2x2 b3 = double2x2(154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813); + double2x2 r3 = double2x2(-220.06998167749032, -106.15376191314022, -565.50060489284829, -185.92032870367188); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_sub_wide_wide() + { + double2x2 a0 = double2x2(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409); + double2x2 b0 = double2x2(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764); + double2x2 r0 = double2x2(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664); + TestUtils.AreEqual(a0 - b0, r0); + + double2x2 a1 = double2x2(-337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537); + double2x2 b1 = double2x2(207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307); + double2x2 r1 = double2x2(-544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a1 - b1, r1); + + double2x2 a2 = double2x2(110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double2x2 b2 = double2x2(-477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double2x2 r2 = double2x2(588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a2 - b2, r2); + + double2x2 a3 = double2x2(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double2x2 b3 = double2x2(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double2x2 r3 = double2x2(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_sub_wide_scalar() + { + double2x2 a0 = double2x2(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666); + double b0 = (-291.59041442144212); + double2x2 r0 = double2x2(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878); + TestUtils.AreEqual(a0 - b0, r0); + + double2x2 a1 = double2x2(-460.06732318367222, 204.35834441164434, 180.26971420099483, -377.92569344952972); + double b1 = (110.91942339340198); + double2x2 r1 = double2x2(-570.9867465770742, 93.438921018242354, 69.350290807592842, -488.8451168429317); + TestUtils.AreEqual(a1 - b1, r1); + + double2x2 a2 = double2x2(-470.26204297983185, 461.50756499800252, -246.28726660753006, 21.605312595891405); + double b2 = (400.53491968686455); + double2x2 r2 = double2x2(-870.79696266669634, 60.972645311137967, -646.82218629439467, -378.92960709097315); + TestUtils.AreEqual(a2 - b2, r2); + + double2x2 a3 = double2x2(246.35072171238755, -122.71842413894757, -122.93872099879138, 360.15095417581074); + double b3 = (-121.42736178330489); + double2x2 r3 = double2x2(367.77808349569244, -1.29106235564268, -1.5113592154864932, 481.57831595911563); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double2x2 b0 = double2x2(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968); + double2x2 r0 = double2x2(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (488.22838829840919); + double2x2 b1 = double2x2(-333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963); + double2x2 r1 = double2x2(821.44566860303541, 552.46137740111976, 554.27011849464384, 147.02345997980956); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-385.775056303374); + double2x2 b2 = double2x2(75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964); + double2x2 r2 = double2x2(-461.16980288045937, -740.71877275627048, -554.90647151083976, -473.991664630357); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (1.7350065716240124); + double2x2 b3 = double2x2(122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228); + double2x2 r3 = double2x2(-120.80303340815146, 266.68003428479665, 52.572186971349765, 349.3853294092163); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mul_wide_wide() + { + double2x2 a0 = double2x2(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626); + double2x2 b0 = double2x2(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219); + double2x2 r0 = double2x2(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383); + TestUtils.AreEqual(a0 * b0, r0); + + double2x2 a1 = double2x2(-93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105); + double2x2 b1 = double2x2(-326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538); + double2x2 r1 = double2x2(30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a1 * b1, r1); + + double2x2 a2 = double2x2(-239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double2x2 b2 = double2x2(358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double2x2 r2 = double2x2(-85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a2 * b2, r2); + + double2x2 a3 = double2x2(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double2x2 b3 = double2x2(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double2x2 r3 = double2x2(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mul_wide_scalar() + { + double2x2 a0 = double2x2(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102); + double b0 = (192.21119055161773); + double2x2 r0 = double2x2(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449); + TestUtils.AreEqual(a0 * b0, r0); + + double2x2 a1 = double2x2(357.90315811610924, -477.31047104173825, -438.272912467957, -46.729179165665585); + double b1 = (134.86723214707672); + double2x2 r1 = double2x2(48269.408311817213, -64373.542104216656, -59108.654629591387, -6302.235054578161); + TestUtils.AreEqual(a1 * b1, r1); + + double2x2 a2 = double2x2(-238.40500103608008, -48.83483722099794, 355.30832998608628, 119.35660391643489); + double b2 = (422.08249374017237); + double2x2 r2 = double2x2(-100626.57735743705, -20612.3298756342, 149969.42596718337, 50378.333025406864); + TestUtils.AreEqual(a2 * b2, r2); + + double2x2 a3 = double2x2(-196.995807977857, -325.55215683837991, 53.937323833786536, -87.4509838034636); + double b3 = (98.2360046367329); + double2x2 r3 = double2x2(-19352.081105929705, -31980.943188673486, 5298.5871942288177, -8590.8352504039049); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double2x2 b0 = double2x2(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489); + double2x2 r0 = double2x2(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (266.22629297255833); + double2x2 b1 = double2x2(-97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423); + double2x2 r1 = double2x2(-26062.156247174364, 42529.146026845636, -93664.326117500037, 130930.51061760196); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (49.902031206480274); + double2x2 b2 = double2x2(424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248); + double2x2 r2 = double2x2(21181.544350206073, 7990.2172332881028, -19760.809379495968, 6247.8185709406853); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-265.01581991138676); + double2x2 b3 = double2x2(314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444); + double2x2 r3 = double2x2(-83388.843747802981, 77573.316056417083, 9999.0147339576815, -43823.604475403918); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_div_wide_wide() + { + double2x2 a0 = double2x2(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082); + double2x2 b0 = double2x2(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724); + double2x2 r0 = double2x2(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435); + TestUtils.AreEqual(a0 / b0, r0); + + double2x2 a1 = double2x2(-308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931); + double2x2 b1 = double2x2(-261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438); + double2x2 r1 = double2x2(1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a1 / b1, r1); + + double2x2 a2 = double2x2(-274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double2x2 b2 = double2x2(484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double2x2 r2 = double2x2(-0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a2 / b2, r2); + + double2x2 a3 = double2x2(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double2x2 b3 = double2x2(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double2x2 r3 = double2x2(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_div_wide_scalar() + { + double2x2 a0 = double2x2(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923); + double b0 = (-60.024377612408443); + double2x2 r0 = double2x2(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752); + TestUtils.AreEqual(a0 / b0, r0); + + double2x2 a1 = double2x2(403.24561257066466, 131.52659160062979, -261.88639200007844, -348.92380516087815); + double b1 = (154.34436066185322); + double2x2 r1 = double2x2(2.6126358672353378, 0.85216324740743876, -1.6967668327956258, -2.2606838608462096); + TestUtils.AreEqual(a1 / b1, r1); + + double2x2 a2 = double2x2(-275.53868187383688, 287.64239968342815, 504.37224626185946, 491.78708600056689); + double b2 = (210.55792174607416); + double2x2 r2 = double2x2(-1.308612279171939, 1.3660963087882074, 2.39540855114497, 2.3356380131527215); + TestUtils.AreEqual(a2 / b2, r2); + + double2x2 a3 = double2x2(-26.63160015392657, 272.89512098622276, 178.09617313095191, -460.87559030059521); + double b3 = (-253.23667275776933); + double2x2 r3 = double2x2(0.10516486361910435, -1.0776287573769281, -0.70327954948810989, 1.8199401582781043); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double2x2 b0 = double2x2(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967); + double2x2 r0 = double2x2(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-326.62061253498337); + double2x2 b1 = double2x2(163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984); + double2x2 r1 = double2x2(-1.9950548408181534, -0.97888939316060053, -8.5299406242357652, 0.69055938482624146); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (192.23013958345643); + double2x2 b2 = double2x2(-200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058); + double2x2 r2 = double2x2(-0.95972613030893628, -0.3921611446125986, -0.91060063985548412, -0.59541194261204144); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-137.98529035317961); + double2x2 b3 = double2x2(84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729); + double2x2 r3 = double2x2(-1.6362590187453818, -0.38862149346102726, -0.49917398907636662, 0.36028617782843814); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mod_wide_wide() + { + double2x2 a0 = double2x2(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612); + double2x2 b0 = double2x2(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381); + double2x2 r0 = double2x2(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312); + TestUtils.AreEqual(a0 % b0, r0); + + double2x2 a1 = double2x2(-197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273); + double2x2 b1 = double2x2(-154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516); + double2x2 r1 = double2x2(-42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a1 % b1, r1); + + double2x2 a2 = double2x2(-140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double2x2 b2 = double2x2(-145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double2x2 r2 = double2x2(-140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a2 % b2, r2); + + double2x2 a3 = double2x2(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double2x2 b3 = double2x2(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double2x2 r3 = double2x2(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mod_wide_scalar() + { + double2x2 a0 = double2x2(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155); + double b0 = (-90.499235433758827); + double2x2 r0 = double2x2(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074); + TestUtils.AreEqual(a0 % b0, r0); + + double2x2 a1 = double2x2(-120.80601626299602, -450.80766245853511, 186.09479698263794, -84.473635951277629); + double b1 = (-502.939041133476); + double2x2 r1 = double2x2(-120.80601626299602, -450.80766245853511, 186.09479698263794, -84.473635951277629); + TestUtils.AreEqual(a1 % b1, r1); + + double2x2 a2 = double2x2(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434); + double b2 = (433.45469041981482); + double2x2 r2 = double2x2(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434); + TestUtils.AreEqual(a2 % b2, r2); + + double2x2 a3 = double2x2(222.36186109406958, 254.51082885196, -433.09369703433185, -203.08261284748215); + double b3 = (5.796394112425105); + double2x2 r3 = double2x2(2.09888482191559, 5.2658820176804966, -4.16053271487408, -0.20881891260347629); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double2x2 b0 = double2x2(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477); + double2x2 r0 = double2x2(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (399.63502020371845); + double2x2 b1 = double2x2(206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797); + double2x2 r1 = double2x2(192.94031485958965, 2.5901975643774904, 5.7443728473709825, 27.567925942860484); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (201.01229796233224); + double2x2 b2 = double2x2(-95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773); + double2x2 r2 = double2x2(9.8785884426340544, 201.01229796233224, 94.028722330009828, 201.01229796233224); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-34.808985011097491); + double2x2 b3 = double2x2(184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683); + double2x2 r3 = double2x2(-34.808985011097491, -34.808985011097491, -34.808985011097491, -34.808985011097491); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_plus() + { + double2x2 a0 = double2x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045); + double2x2 r0 = double2x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045); + TestUtils.AreEqual(+a0, r0); + + double2x2 a1 = double2x2(315.44952860262686, 190.32466015141677, -350.30858270745193, -320.51845875406565); + double2x2 r1 = double2x2(315.44952860262686, 190.32466015141677, -350.30858270745193, -320.51845875406565); + TestUtils.AreEqual(+a1, r1); + + double2x2 a2 = double2x2(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813); + double2x2 r2 = double2x2(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813); + TestUtils.AreEqual(+a2, r2); + + double2x2 a3 = double2x2(34.283600107898792, 465.35593555185756, 309.59316530339106, -316.93713655925222); + double2x2 r3 = double2x2(34.283600107898792, 465.35593555185756, 309.59316530339106, -316.93713655925222); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double2x2_operator_neg() + { + double2x2 a0 = double2x2(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592); + double2x2 r0 = double2x2(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592); + TestUtils.AreEqual(-a0, r0); + + double2x2 a1 = double2x2(-33.014395013923945, -495.8379526063045, -270.85946787095605, 19.686896571743773); + double2x2 r1 = double2x2(33.014395013923945, 495.8379526063045, 270.85946787095605, -19.686896571743773); + TestUtils.AreEqual(-a1, r1); + + double2x2 a2 = double2x2(268.23670662019254, 223.38126312167446, -410.39206070936848, -395.68154186554324); + double2x2 r2 = double2x2(-268.23670662019254, -223.38126312167446, 410.39206070936848, 395.68154186554324); + TestUtils.AreEqual(-a2, r2); + + double2x2 a3 = double2x2(-349.14948885010062, -238.21960913307015, 292.54351224216794, 469.29257867731735); + double2x2 r3 = double2x2(349.14948885010062, 238.21960913307015, -292.54351224216794, -469.29257867731735); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double2x2_operator_prefix_inc() + { + double2x2 a0 = double2x2(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633); + double2x2 r0 = double2x2(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633); + TestUtils.AreEqual(++a0, r0); + + double2x2 a1 = double2x2(-315.728967098393, -323.61485853959567, -456.89028832730384, -76.507656371457358); + double2x2 r1 = double2x2(-314.728967098393, -322.61485853959567, -455.89028832730384, -75.507656371457358); + TestUtils.AreEqual(++a1, r1); + + double2x2 a2 = double2x2(-305.58477344437722, 148.67930967578627, 363.2849182390072, -115.5592263283018); + double2x2 r2 = double2x2(-304.58477344437722, 149.67930967578627, 364.2849182390072, -114.5592263283018); + TestUtils.AreEqual(++a2, r2); + + double2x2 a3 = double2x2(-326.87781992874937, 339.8765849265626, -38.410431164507941, -153.3736775635619); + double2x2 r3 = double2x2(-325.87781992874937, 340.8765849265626, -37.410431164507941, -152.3736775635619); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double2x2_operator_postfix_inc() + { + double2x2 a0 = double2x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888); + double2x2 r0 = double2x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888); + TestUtils.AreEqual(a0++, r0); + + double2x2 a1 = double2x2(-31.420532002775246, 271.45466840986842, 55.736877228942149, 153.75031645305); + double2x2 r1 = double2x2(-31.420532002775246, 271.45466840986842, 55.736877228942149, 153.75031645305); + TestUtils.AreEqual(a1++, r1); + + double2x2 a2 = double2x2(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816); + double2x2 r2 = double2x2(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816); + TestUtils.AreEqual(a2++, r2); + + double2x2 a3 = double2x2(241.46487509527469, -170.10464366250886, -270.65246380057766, -162.86024792625579); + double2x2 r3 = double2x2(241.46487509527469, -170.10464366250886, -270.65246380057766, -162.86024792625579); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double2x2_operator_prefix_dec() + { + double2x2 a0 = double2x2(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341); + double2x2 r0 = double2x2(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341); + TestUtils.AreEqual(--a0, r0); + + double2x2 a1 = double2x2(439.47906156977592, 337.96895734312432, 246.08898293510492, 171.96452935597142); + double2x2 r1 = double2x2(438.47906156977592, 336.96895734312432, 245.08898293510492, 170.96452935597142); + TestUtils.AreEqual(--a1, r1); + + double2x2 a2 = double2x2(-227.44280134301761, 326.50782338087811, 400.720900006928, -478.03137253133178); + double2x2 r2 = double2x2(-228.44280134301761, 325.50782338087811, 399.720900006928, -479.03137253133178); + TestUtils.AreEqual(--a2, r2); + + double2x2 a3 = double2x2(-326.45297852459038, 112.79684668071422, -341.97629300783217, -503.27416181158003); + double2x2 r3 = double2x2(-327.45297852459038, 111.79684668071422, -342.97629300783217, -504.27416181158003); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double2x2_operator_postfix_dec() + { + double2x2 a0 = double2x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555); + double2x2 r0 = double2x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555); + TestUtils.AreEqual(a0--, r0); + + double2x2 a1 = double2x2(409.55752940175944, -281.11170376516492, -262.062590959511, -182.40572866350681); + double2x2 r1 = double2x2(409.55752940175944, -281.11170376516492, -262.062590959511, -182.40572866350681); + TestUtils.AreEqual(a1--, r1); + + double2x2 a2 = double2x2(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423); + double2x2 r2 = double2x2(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423); + TestUtils.AreEqual(a2--, r2); + + double2x2 a3 = double2x2(-230.22777878038016, 378.64123433578811, 487.34482287212495, -192.17785772689518); + double2x2 r3 = double2x2(-230.22777878038016, 378.64123433578811, 487.34482287212495, -192.17785772689518); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x2.gen.cs.meta new file mode 100644 index 0000000..0aee2fe --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb8a44886606504469cf3329b4993591 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x3.gen.cs new file mode 100644 index 0000000..997a376 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x3.gen.cs @@ -0,0 +1,943 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble2x3 + { + [TestCompiler] + public static void double2x3_zero() + { + TestUtils.AreEqual(double2x3.zero.c0.x, 0.0); + TestUtils.AreEqual(double2x3.zero.c0.y, 0.0); + TestUtils.AreEqual(double2x3.zero.c1.x, 0.0); + TestUtils.AreEqual(double2x3.zero.c1.y, 0.0); + TestUtils.AreEqual(double2x3.zero.c2.x, 0.0); + TestUtils.AreEqual(double2x3.zero.c2.y, 0.0); + } + + [TestCompiler] + public static void double2x3_operator_equal_wide_wide() + { + double2x3 a0 = double2x3(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808); + double2x3 b0 = double2x3(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x3 a1 = double2x3(177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double2x3 b1 = double2x3(-72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x3 a2 = double2x3(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297); + double2x3 b2 = double2x3(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x3 a3 = double2x3(269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double2x3 b3 = double2x3(89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_equal_wide_scalar() + { + double2x3 a0 = double2x3(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186); + double b0 = (-155.8157547245807); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x3 a1 = double2x3(314.67125597348024, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415, -191.19075521789063); + double b1 = (386.36515325417986); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x3 a2 = double2x3(186.84520086406042, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046, 386.377503336583); + double b2 = (-232.89569221851218); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x3 a3 = double2x3(-296.70189084517858, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858, 110.50128345866744); + double b3 = (-309.11719741910565); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double2x3 b0 = double2x3(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (428.31192394174263); + double2x3 b1 = double2x3(-489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (316.66882315122928); + double2x3 b2 = double2x3(390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619, -257.01294601010761); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-245.05497538533757); + double2x3 b3 = double2x3(326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192, -336.61242524562982); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_not_equal_wide_wide() + { + double2x3 a0 = double2x3(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466); + double2x3 b0 = double2x3(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x3 a1 = double2x3(366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double2x3 b1 = double2x3(-457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x3 a2 = double2x3(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965); + double2x3 b2 = double2x3(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x3 a3 = double2x3(62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double2x3 b3 = double2x3(-184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_not_equal_wide_scalar() + { + double2x3 a0 = double2x3(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026); + double b0 = (-393.41354173860213); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x3 a1 = double2x3(-58.923273352404692, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059, 501.8990516615562); + double b1 = (-398.17684835855704); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x3 a2 = double2x3(-134.34545642433011, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471, -0.44992661497087738); + double b2 = (458.40042302496749); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x3 a3 = double2x3(350.46143047439932, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778, -80.932258882062627); + double b3 = (202.22103724359579); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double2x3 b0 = double2x3(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-338.10012475498957); + double2x3 b1 = double2x3(-152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (489.74075697816011); + double2x3 b2 = double2x3(270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558, 358.74720900074919); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-15.414077527548216); + double2x3 b3 = double2x3(-342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936, -239.231014124691); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_wide_wide() + { + double2x3 a0 = double2x3(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042); + double2x3 b0 = double2x3(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008); + bool2x3 r0 = bool2x3(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2x3 a1 = double2x3(3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double2x3 b1 = double2x3(231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x3 a2 = double2x3(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991); + double2x3 b2 = double2x3(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978); + bool2x3 r2 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x3 a3 = double2x3(-140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double2x3 b3 = double2x3(7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool2x3 r3 = bool2x3(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_wide_scalar() + { + double2x3 a0 = double2x3(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207); + double b0 = (199.06751808853244); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2x3 a1 = double2x3(282.96659601990439, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413, -68.088202269788951); + double b1 = (258.27909362422258); + bool2x3 r1 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x3 a2 = double2x3(12.788020378345664, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019, -48.920521520506838); + double b2 = (-66.703050406045747); + bool2x3 r2 = bool2x3(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double2x3 a3 = double2x3(359.60440914686978, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904, -98.315578744893685); + double b3 = (-8.15008759878117); + bool2x3 r3 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double2x3 b0 = double2x3(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-299.74430932651478); + double2x3 b1 = double2x3(31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (488.74553679337055); + double2x3 b2 = double2x3(-221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206, -340.85755721705851); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-95.1117256130612); + double2x3 b3 = double2x3(15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863, 122.16476803746298); + bool2x3 r3 = bool2x3(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_wide_wide() + { + double2x3 a0 = double2x3(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504); + double2x3 b0 = double2x3(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992); + bool2x3 r0 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2x3 a1 = double2x3(-396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double2x3 b1 = double2x3(-391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double2x3 a2 = double2x3(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068); + double2x3 b2 = double2x3(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229); + bool2x3 r2 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2x3 a3 = double2x3(-345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double2x3 b3 = double2x3(226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_wide_scalar() + { + double2x3 a0 = double2x3(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759); + double b0 = (-302.81693877969724); + bool2x3 r0 = bool2x3(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2x3 a1 = double2x3(173.57509740329124, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456, -172.51816066192379); + double b1 = (69.269281181166548); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double2x3 a2 = double2x3(-18.149639853346002, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474, -481.47807930478734); + double b2 = (-236.41493498367021); + bool2x3 r2 = bool2x3(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2x3 a3 = double2x3(185.59438547193747, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845, -7.3478887115362568); + double b3 = (33.294723764664809); + bool2x3 r3 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double2x3 b0 = double2x3(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (176.40926154721956); + double2x3 b1 = double2x3(-140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987); + bool2x3 r1 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-102.58784227379965); + double2x3 b2 = double2x3(392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377, 374.04800503982608); + bool2x3 r2 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-368.99763958947619); + double2x3 b3 = double2x3(-210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956, -361.52483360912879); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_equal_wide_wide() + { + double2x3 a0 = double2x3(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386); + double2x3 b0 = double2x3(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463); + bool2x3 r0 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x3 a1 = double2x3(294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double2x3 b1 = double2x3(74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool2x3 r1 = bool2x3(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x3 a2 = double2x3(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224); + double2x3 b2 = double2x3(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419); + bool2x3 r2 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x3 a3 = double2x3(307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double2x3 b3 = double2x3(376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_equal_wide_scalar() + { + double2x3 a0 = double2x3(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241); + double b0 = (292.92427148154206); + bool2x3 r0 = bool2x3(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x3 a1 = double2x3(-410.87006945669191, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294, -182.9388249772316); + double b1 = (-483.90265320423185); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x3 a2 = double2x3(349.25012962392077, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695, -43.874866744445114); + double b2 = (485.31159304329731); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x3 a3 = double2x3(457.38574549992836, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862, 87.9161055497434); + double b3 = (-77.638293064030961); + bool2x3 r3 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double2x3 b0 = double2x3(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (288.544332877055); + double2x3 b1 = double2x3(304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419); + bool2x3 r1 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-488.6858386884843); + double2x3 b2 = double2x3(-480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638, -55.2435333986038); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-455.80483147865385); + double2x3 b3 = double2x3(131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588, -116.01998215355911); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_equal_wide_wide() + { + double2x3 a0 = double2x3(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348); + double2x3 b0 = double2x3(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436); + bool2x3 r0 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x3 a1 = double2x3(-122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double2x3 b1 = double2x3(-373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x3 a2 = double2x3(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916); + double2x3 b2 = double2x3(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937); + bool2x3 r2 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x3 a3 = double2x3(-156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double2x3 b3 = double2x3(254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool2x3 r3 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_equal_wide_scalar() + { + double2x3 a0 = double2x3(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835); + double b0 = (189.20512804258851); + bool2x3 r0 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x3 a1 = double2x3(53.815095211293169, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345, 164.77259667439978); + double b1 = (-123.33294373533357); + bool2x3 r1 = bool2x3(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x3 a2 = double2x3(-287.00733889593153, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411, 396.39213938098032); + double b2 = (355.83704559683667); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x3 a3 = double2x3(332.66542044871744, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234, 71.176674637560154); + double b3 = (243.76141392614761); + bool2x3 r3 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double2x3 b0 = double2x3(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-455.61258027312); + double2x3 b1 = double2x3(276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-74.560638224035813); + double2x3 b2 = double2x3(-367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646, -264.31016242891093); + bool2x3 r2 = bool2x3(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (243.11378275748052); + double2x3 b3 = double2x3(-22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009, -400.47050280145857); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_add_wide_wide() + { + double2x3 a0 = double2x3(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138); + double2x3 b0 = double2x3(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126); + double2x3 r0 = double2x3(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304); + TestUtils.AreEqual(a0 + b0, r0); + + double2x3 a1 = double2x3(-470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double2x3 b1 = double2x3(267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double2x3 r1 = double2x3(-203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a1 + b1, r1); + + double2x3 a2 = double2x3(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794); + double2x3 b2 = double2x3(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041); + double2x3 r2 = double2x3(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018); + TestUtils.AreEqual(a2 + b2, r2); + + double2x3 a3 = double2x3(-36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double2x3 b3 = double2x3(-141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double2x3 r3 = double2x3(-178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_add_wide_scalar() + { + double2x3 a0 = double2x3(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904); + double b0 = (500.99725913489112); + double2x3 r0 = double2x3(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208); + TestUtils.AreEqual(a0 + b0, r0); + + double2x3 a1 = double2x3(-2.7912590516690443, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697, -2.6649749291431704); + double b1 = (-478.41478489265535); + double2x3 r1 = double2x3(-481.20604394432439, -35.299532429920305, -210.32255897779135, -437.09376355497807, -949.67086073275232, -481.07975982179852); + TestUtils.AreEqual(a1 + b1, r1); + + double2x3 a2 = double2x3(78.985822952811532, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206, -197.80076584490052); + double b2 = (202.14799151297098); + double2x3 r2 = double2x3(281.13381446578251, 513.87344670382947, 212.49384651542357, 50.903532528739163, 557.380758545073, 4.34722566807045); + TestUtils.AreEqual(a2 + b2, r2); + + double2x3 a3 = double2x3(255.95526587961024, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746, -160.5840962680914); + double b3 = (244.14709793969394); + double2x3 r3 = double2x3(500.10236381930417, 62.52052834561124, 241.69217120934849, 545.04775263417878, 7.6551489865664735, 83.563001671602535); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double2x3 b0 = double2x3(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553); + double2x3 r0 = double2x3(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (180.31809123806568); + double2x3 b1 = double2x3(337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915); + double2x3 r1 = double2x3(517.89746022499048, 143.26307637210147, 411.12307138513916, 40.143757838822808, 198.34228715595896, 41.703732986796524); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (26.904163611542458); + double2x3 b2 = double2x3(-374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813, -504.91612386373623); + double2x3 r2 = double2x3(-347.63341872190756, 181.37176426750216, 295.28798403185226, -164.05885894785587, 215.52141724132059, -478.01196025219377); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (20.454013595568995); + double2x3 b3 = double2x3(197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923, 480.88455770950975); + double2x3 r3 = double2x3(218.3993588510898, 271.86595834040361, -400.63636178552929, 131.89941412392045, -52.814869428432928, 501.33857130507874); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_sub_wide_wide() + { + double2x3 a0 = double2x3(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782); + double2x3 b0 = double2x3(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723); + double2x3 r0 = double2x3(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059); + TestUtils.AreEqual(a0 - b0, r0); + + double2x3 a1 = double2x3(146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double2x3 b1 = double2x3(-125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double2x3 r1 = double2x3(272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a1 - b1, r1); + + double2x3 a2 = double2x3(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111); + double2x3 b2 = double2x3(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272); + double2x3 r2 = double2x3(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384); + TestUtils.AreEqual(a2 - b2, r2); + + double2x3 a3 = double2x3(-427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double2x3 b3 = double2x3(-80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double2x3 r3 = double2x3(-347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_sub_wide_scalar() + { + double2x3 a0 = double2x3(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198); + double b0 = (-291.59041442144212); + double2x3 r0 = double2x3(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441); + TestUtils.AreEqual(a0 - b0, r0); + + double2x3 a1 = double2x3(204.35834441164434, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252, -246.28726660753006); + double b1 = (180.26971420099483); + double2x3 r1 = double2x3(24.088630210649512, -558.19540765052454, -650.53175718082662, 220.26520548586973, 281.2378507970077, -426.55698080852488); + TestUtils.AreEqual(a1 - b1, r1); + + double2x3 a2 = double2x3(21.605312595891405, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074, 342.87457887403411); + double b2 = (246.35072171238755); + double2x3 r2 = double2x3(-224.74540911649615, -367.77808349569244, -369.06914585133512, -369.28944271117894, 113.80023246342319, 96.523857161646561); + TestUtils.AreEqual(a2 - b2, r2); + + double2x3 a3 = double2x3(18.929827460520869, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725, -121.16305619159857); + double b3 = (164.60235245740148); + double2x3 r3 = double2x3(-145.67252499688061, -67.558663876521678, 321.31262889565562, -370.36000936588272, 88.840874713305766, -285.76540864900005); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double2x3 b0 = double2x3(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623); + double2x3 r0 = double2x3(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-64.232989102710519); + double2x3 b1 = double2x3(-66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581); + double2x3 r1 = double2x3(1.8087410935241337, -405.43791742131015, 321.5420672006635, -139.62773567979588, -419.17670555560693, -233.36440431017633); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (88.216608326982964); + double2x3 b2 = double2x3(1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228, 4.0655586738445209); + double2x3 r2 = double2x3(86.481601755358952, -34.321431652792512, 353.1616360401556, 139.05378872670872, 435.86693116457525, 84.151049653138443); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-79.095424450512724); + double2x3 b3 = double2x3(354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867, 432.18467422583353); + double2x3 r3 = double2x3(-433.45376368679752, 213.39708719653868, -25.886441242828255, 167.25217588583575, -378.29876583549139, -511.28009867634626); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mul_wide_wide() + { + double2x3 a0 = double2x3(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198); + double2x3 b0 = double2x3(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329); + double2x3 r0 = double2x3(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115); + TestUtils.AreEqual(a0 * b0, r0); + + double2x3 a1 = double2x3(494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double2x3 b1 = double2x3(207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double2x3 r1 = double2x3(102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a1 * b1, r1); + + double2x3 a2 = double2x3(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284); + double2x3 b2 = double2x3(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025); + double2x3 r2 = double2x3(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295); + TestUtils.AreEqual(a2 * b2, r2); + + double2x3 a3 = double2x3(-104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double2x3 b3 = double2x3(254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double2x3 r3 = double2x3(-26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mul_wide_scalar() + { + double2x3 a0 = double2x3(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672); + double b0 = (192.21119055161773); + double2x3 r0 = double2x3(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103); + TestUtils.AreEqual(a0 * b0, r0); + + double2x3 a1 = double2x3(-477.31047104173825, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794, 355.30832998608628); + double b1 = (-438.272912467957); + double2x3 r1 = double2x3(209192.25029491508, 20480.133450173231, 104486.45415100912, -184987.32383324357, 21402.986338745359, -155722.01660712797); + TestUtils.AreEqual(a1 * b1, r1); + + double2x3 a2 = double2x3(119.35660391643489, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636, -130.47412949915702); + double b2 = (-196.995807977857); + double2x3 r2 = double2x3(-23512.750626011144, -19352.081105929705, 64132.410175310673, -10625.426688800102, 17227.4772128218, 25702.856560893983); + TestUtils.AreEqual(a2 * b2, r2); + + double2x3 a3 = double2x3(-222.59457145565869, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565, 257.54154241156834); + double b3 = (126.01503211167415); + double2x3 r3 = double2x3(-28050.262069869175, 36967.906886485951, 21974.747958150911, -41222.047013462026, 7136.1208132457368, 32454.105737083875); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double2x3 b0 = double2x3(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685); + double2x3 r0 = double2x3(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (159.74810583877752); + double2x3 b1 = double2x3(-351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058); + double2x3 r1 = double2x3(-56202.933657940659, 78564.37031116907, 7971.75496274279, 67807.091352347023, 25578.559377205791, -63258.985494075321); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (125.20168858636248); + double2x3 b2 = double2x3(-265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444, 356.51773302467438); + double2x3 r2 = double2x3(-33180.428155004964, 39395.4747681864, -36648.039210468662, -4723.8445210931741, 20703.629247854176, 44636.6221856712); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-188.81332906932261); + double2x3 b3 = double2x3(504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903, 53.7483275186961); + double2x3 r3 = double2x3(-95334.818889692615, -7660.55586853052, 39041.896096852419, 11631.407179777047, -22463.4218559328, -10148.400650713294); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_div_wide_wide() + { + double2x3 a0 = double2x3(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683); + double2x3 b0 = double2x3(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326); + double2x3 r0 = double2x3(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847); + TestUtils.AreEqual(a0 / b0, r0); + + double2x3 a1 = double2x3(360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double2x3 b1 = double2x3(-93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double2x3 r1 = double2x3(-3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a1 / b1, r1); + + double2x3 a2 = double2x3(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744); + double2x3 b2 = double2x3(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808); + double2x3 r2 = double2x3(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456); + TestUtils.AreEqual(a2 / b2, r2); + + double2x3 a3 = double2x3(-204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double2x3 b3 = double2x3(404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double2x3 r3 = double2x3(-0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_div_wide_scalar() + { + double2x3 a0 = double2x3(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322); + double b0 = (-60.024377612408443); + double2x3 r0 = double2x3(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117); + TestUtils.AreEqual(a0 / b0, r0); + + double2x3 a1 = double2x3(131.52659160062979, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815, 504.37224626185946); + double b1 = (-261.88639200007844); + double2x3 r1 = double2x3(-0.50222766672271535, 1.332347979198452, 1.0521305813925388, -0.80400482109055549, -1.0983480183397309, -1.9259200236020984); + TestUtils.AreEqual(a1 / b1, r1); + + double2x3 a2 = double2x3(491.78708600056689, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521, -502.64601611655485); + double b2 = (-26.63160015392657); + double2x3 r2 = double2x3(-18.466298801353012, 9.50887934987384, -10.247041837851679, -6.6874003853160646, 17.305591389056794, 18.874044864421883); + TestUtils.AreEqual(a2 / b2, r2); + + double2x3 a3 = double2x3(-84.324793139623864, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464, 81.646461763254592); + double b3 = (-174.69034036187935); + double2x3 r3 = double2x3(0.48271010844069023, -0.47968484747436224, -1.1279505580908942, -1.815602766558, -2.309155257105167, -0.4673782282072384); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double2x3 b0 = double2x3(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989); + double2x3 r0 = double2x3(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (333.664472020075); + double2x3 b1 = double2x3(38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057); + double2x3 r1 = double2x3(8.7138962622678129, -0.70545190258583745, 1.7357552397511267, -1.6658496594098089, -0.68069576158811729, -1.5805798319498852); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-322.85234108700058); + double2x3 b2 = double2x3(-137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729, -488.647160996053); + double2x3 r2 = double2x3(2.3397591167916914, -3.8284519565421338, -0.909280682306641, -1.1679468918067049, 0.8429828692281206, 0.660706470552089); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (344.84603826368505); + double2x3 b3 = double2x3(168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753, -344.19428865248074); + double2x3 r3 = double2x3(2.0422613456805525, -7.8027253618582941, 0.81998682921394372, -1.9636456657223711, -37.399650699527896, -1.0018935514989395); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mod_wide_wide() + { + double2x3 a0 = double2x3(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062); + double2x3 b0 = double2x3(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452); + double2x3 r0 = double2x3(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062); + TestUtils.AreEqual(a0 % b0, r0); + + double2x3 a1 = double2x3(-101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double2x3 b1 = double2x3(487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double2x3 r1 = double2x3(-101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a1 % b1, r1); + + double2x3 a2 = double2x3(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692); + double2x3 b2 = double2x3(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733); + double2x3 r2 = double2x3(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692); + TestUtils.AreEqual(a2 % b2, r2); + + double2x3 a3 = double2x3(142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double2x3 b3 = double2x3(4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double2x3 r3 = double2x3(1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mod_wide_scalar() + { + double2x3 a0 = double2x3(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476); + double b0 = (-90.499235433758827); + double2x3 r0 = double2x3(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862); + TestUtils.AreEqual(a0 % b0, r0); + + double2x3 a1 = double2x3(-450.80766245853511, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309, -172.33886607565864); + double b1 = (186.09479698263794); + double2x3 r1 = double2x3(-78.618068493259216, -84.473635951277629, -132.6866865775952, 61.265096454538934, -54.6001856581309, -172.33886607565864); + TestUtils.AreEqual(a1 % b1, r1); + + double2x3 a2 = double2x3(-429.71466728193434, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215, -75.356399809641971); + double b2 = (222.36186109406958); + double2x3 r2 = double2x3(-207.35280618786476, 5.796394112425105, 32.148967757890432, -210.73183594026227, -203.08261284748215, -75.356399809641971); + TestUtils.AreEqual(a2 % b2, r2); + + double2x3 a3 = double2x3(252.28909385031511, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949, 335.99997655302286); + double b3 = (-69.403906139267576); + double2x3 r3 = double2x3(44.077375432512383, 5.3372299696026175, -1.44480347700636, 67.1271541431206, -54.377722050239186, 58.384351995952557); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double2x3 b0 = double2x3(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881); + double2x3 r0 = double2x3(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (397.04482263934096); + double2x3 b1 = double2x3(-393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241); + double2x3 r1 = double2x3(3.1541752829934921, 24.977728378482993, 196.03252467700872, 14.777403599944591, 138.09335381262633, 76.094095742373725); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (469.3235559264773); + double2x3 b2 = double2x3(-34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683, 4.506670715523228); + double2x3 r2 = double2x3(16.806750782209917, 99.650487230927979, 94.529302164227374, 73.705398593892085, 109.04497580837682, 0.62980151206159007); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-111.40195732535886); + double2x3 b3 = double2x3(391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987, -433.52306505363578); + double2x3 r3 = double2x3(-111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_plus() + { + double2x3 a0 = double2x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431); + double2x3 r0 = double2x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431); + TestUtils.AreEqual(+a0, r0); + + double2x3 a1 = double2x3(190.32466015141677, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021); + double2x3 r1 = double2x3(190.32466015141677, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021); + TestUtils.AreEqual(+a1, r1); + + double2x3 a2 = double2x3(234.77393042052813, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724); + double2x3 r2 = double2x3(234.77393042052813, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724); + TestUtils.AreEqual(+a2, r2); + + double2x3 a3 = double2x3(301.78512229667285, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195); + double2x3 r3 = double2x3(301.78512229667285, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double2x3_operator_neg() + { + double2x3 a0 = double2x3(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125); + double2x3 r0 = double2x3(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125); + TestUtils.AreEqual(-a0, r0); + + double2x3 a1 = double2x3(-495.8379526063045, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446, -410.39206070936848); + double2x3 r1 = double2x3(495.8379526063045, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446, 410.39206070936848); + TestUtils.AreEqual(-a1, r1); + + double2x3 a2 = double2x3(-395.68154186554324, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735, 48.290685914592245); + double2x3 r2 = double2x3(395.68154186554324, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735, -48.290685914592245); + TestUtils.AreEqual(-a2, r2); + + double2x3 a3 = double2x3(88.7237785275671, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838, 196.38759169186824); + double2x3 r3 = double2x3(-88.7237785275671, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838, -196.38759169186824); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double2x3_operator_prefix_inc() + { + double2x3 a0 = double2x3(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525); + double2x3 r0 = double2x3(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525); + TestUtils.AreEqual(++a0, r0); + + double2x3 a1 = double2x3(-323.61485853959567, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627, 363.2849182390072); + double2x3 r1 = double2x3(-322.61485853959567, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627, 364.2849182390072); + TestUtils.AreEqual(++a1, r1); + + double2x3 a2 = double2x3(-115.5592263283018, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619, 261.62557304167444); + double2x3 r2 = double2x3(-114.5592263283018, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619, 262.62557304167444); + TestUtils.AreEqual(++a2, r2); + + double2x3 a3 = double2x3(155.03081877298223, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178, -264.38006246480165); + double2x3 r3 = double2x3(156.03081877298223, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178, -263.38006246480165); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double2x3_operator_postfix_inc() + { + double2x3 a0 = double2x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905); + double2x3 r0 = double2x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905); + TestUtils.AreEqual(a0++, r0); + + double2x3 a1 = double2x3(271.45466840986842, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729); + double2x3 r1 = double2x3(271.45466840986842, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729); + TestUtils.AreEqual(a1++, r1); + + double2x3 a2 = double2x3(-333.05045262586816, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769); + double2x3 r2 = double2x3(-333.05045262586816, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769); + TestUtils.AreEqual(a2++, r2); + + double2x3 a3 = double2x3(-449.92732045144186, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159); + double2x3 r3 = double2x3(-449.92732045144186, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double2x3_operator_prefix_dec() + { + double2x3 a0 = double2x3(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435); + double2x3 r0 = double2x3(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435); + TestUtils.AreEqual(--a0, r0); + + double2x3 a1 = double2x3(337.96895734312432, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811, 400.720900006928); + double2x3 r1 = double2x3(336.96895734312432, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811, 399.720900006928); + TestUtils.AreEqual(--a1, r1); + + double2x3 a2 = double2x3(-478.03137253133178, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003, -79.635249413380052); + double2x3 r2 = double2x3(-479.03137253133178, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003, -80.635249413380052); + TestUtils.AreEqual(--a2, r2); + + double2x3 a3 = double2x3(-131.0041454448384, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351, 181.47510703908051); + double2x3 r3 = double2x3(-132.0041454448384, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351, 180.47510703908051); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double2x3_operator_postfix_dec() + { + double2x3 a0 = double2x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247); + double2x3 r0 = double2x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247); + TestUtils.AreEqual(a0--, r0); + + double2x3 a1 = double2x3(-281.11170376516492, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819); + double2x3 r1 = double2x3(-281.11170376516492, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819); + TestUtils.AreEqual(a1--, r1); + + double2x3 a2 = double2x3(205.46112570793423, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457); + double2x3 r2 = double2x3(205.46112570793423, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457); + TestUtils.AreEqual(a2--, r2); + + double2x3 a3 = double2x3(-396.30206627226528, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358); + double2x3 r3 = double2x3(-396.30206627226528, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x3.gen.cs.meta new file mode 100644 index 0000000..a38035f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa8d4556e4d042c4199dca8671bc2817 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x4.gen.cs new file mode 100644 index 0000000..47d9e24 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x4.gen.cs @@ -0,0 +1,945 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble2x4 + { + [TestCompiler] + public static void double2x4_zero() + { + TestUtils.AreEqual(double2x4.zero.c0.x, 0.0); + TestUtils.AreEqual(double2x4.zero.c0.y, 0.0); + TestUtils.AreEqual(double2x4.zero.c1.x, 0.0); + TestUtils.AreEqual(double2x4.zero.c1.y, 0.0); + TestUtils.AreEqual(double2x4.zero.c2.x, 0.0); + TestUtils.AreEqual(double2x4.zero.c2.y, 0.0); + TestUtils.AreEqual(double2x4.zero.c3.x, 0.0); + TestUtils.AreEqual(double2x4.zero.c3.y, 0.0); + } + + [TestCompiler] + public static void double2x4_operator_equal_wide_wide() + { + double2x4 a0 = double2x4(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564); + double2x4 b0 = double2x4(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x4 a1 = double2x4(168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574, 188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double2x4 b1 = double2x4(194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467, -494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x4 a2 = double2x4(417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double2x4 b2 = double2x4(260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x4 a3 = double2x4(-22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868); + double2x4 b3 = double2x4(-174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_equal_wide_scalar() + { + double2x4 a0 = double2x4(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986); + double b0 = (-155.8157547245807); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x4 a1 = double2x4(290.04894007837811, -65.667489797653388, -69.683271678948415, -191.19075521789063, 186.84520086406042, -232.89569221851218, -319.14406481345372, -49.701092981594172); + double b1 = (-132.63519460178691); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x4 a2 = double2x4(-300.88189925853248, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858); + double b2 = (333.39685193328046); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x4 a3 = double2x4(110.50128345866744, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218); + double b3 = (-390.10359329269437); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double2x4 b0 = double2x4(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-5.6915457275190988); + double2x4 b1 = double2x4(-30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (443.19909283295226); + double2x4 b2 = double2x4(96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-336.61242524562982); + double2x4 b3 = double2x4(365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_not_equal_wide_wide() + { + double2x4 a0 = double2x4(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018); + double2x4 b0 = double2x4(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x4 a1 = double2x4(332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072, 398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double2x4 b1 = double2x4(3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992, -406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x4 a2 = double2x4(-192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double2x4 b2 = double2x4(93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x4 a3 = double2x4(-72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391); + double2x4 b3 = double2x4(415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_not_equal_wide_scalar() + { + double2x4 a0 = double2x4(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704); + double b0 = (-393.41354173860213); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x4 a1 = double2x4(492.20105361016522, 270.34102333259818, -380.24326222960059, 501.8990516615562, -134.34545642433011, 458.40042302496749, 46.771004937016869, 161.45995123752391); + double b1 = (-165.24150879925185); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x4 a2 = double2x4(261.51423442620512, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778); + double b2 = (-145.61239559278471); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x4 a3 = double2x4(-80.932258882062627, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792); + double b3 = (-328.58774844211888); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double2x4 b0 = double2x4(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-452.82067868338); + double2x4 b1 = double2x4(209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-384.69186681541237); + double2x4 b2 = double2x4(443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-239.231014124691); + double2x4 b3 = double2x4(411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_wide_wide() + { + double2x4 a0 = double2x4(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651); + double2x4 b0 = double2x4(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158); + bool2x4 r0 = bool2x4(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2x4 a1 = double2x4(-69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062, -19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double2x4 b1 = double2x4(473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916, -185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x4 a2 = double2x4(7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double2x4 b2 = double2x4(73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool2x4 r2 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x4 a3 = double2x4(269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373); + double2x4 b3 = double2x4(-382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766); + bool2x4 r3 = bool2x4(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_wide_scalar() + { + double2x4 a0 = double2x4(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258); + double b0 = (199.06751808853244); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double2x4 a1 = double2x4(-111.41316061439608, 82.665427008022334, -361.64292042406413, -68.088202269788951, 12.788020378345664, -66.703050406045747, -78.762971199472872, 25.727694284975428); + double b1 = (-288.08113278452356); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double2x4 a2 = double2x4(101.37087182950734, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904); + double b2 = (-330.442660724019); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x4 a3 = double2x4(-98.315578744893685, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025); + double b3 = (300.41017617863145); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double2x4 b0 = double2x4(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-458.904539560389); + double2x4 b1 = double2x4(13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-22.136127720650336); + double2x4 b2 = double2x4(-442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863); + bool2x4 r2 = bool2x4(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (122.16476803746298); + double2x4 b3 = double2x4(96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_wide_wide() + { + double2x4 a0 = double2x4(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556); + double2x4 b0 = double2x4(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207); + bool2x4 r0 = bool2x4(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + double2x4 a1 = double2x4(489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526, -425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double2x4 b1 = double2x4(-77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131, -206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool2x4 r1 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double2x4 a2 = double2x4(8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double2x4 b2 = double2x4(364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double2x4 a3 = double2x4(105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911); + double2x4 b3 = double2x4(-352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_wide_scalar() + { + double2x4 a0 = double2x4(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548); + double b0 = (-302.81693877969724); + bool2x4 r0 = bool2x4(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2x4 a1 = double2x4(501.30683183172107, -86.124509613087639, -489.09058998948456, -172.51816066192379, -18.149639853346002, -236.41493498367021, -238.8945134798505, -27.239137900638923); + double b1 = (-367.027771405423); + bool2x4 r1 = bool2x4(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double2x4 a2 = double2x4(471.77934072528933, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845); + double b2 = (240.16453253485474); + bool2x4 r2 = bool2x4(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2x4 a3 = double2x4(-7.3478887115362568, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031); + double b3 = (-261.86596477304863); + bool2x4 r3 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double2x4 b0 = double2x4(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (-182.48286804113673); + double2x4 b1 = double2x4(-158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-24.048938524000789); + double2x4 b2 = double2x4(172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956); + bool2x4 r2 = bool2x4(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-361.52483360912879); + double2x4 b3 = double2x4(-372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421); + bool2x4 r3 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_equal_wide_wide() + { + double2x4 a0 = double2x4(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666); + double2x4 b0 = double2x4(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952); + bool2x4 r0 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x4 a1 = double2x4(-456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697, 84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double2x4 b1 = double2x4(306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706, -280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool2x4 r1 = bool2x4(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x4 a2 = double2x4(36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double2x4 b2 = double2x4(95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool2x4 r2 = bool2x4(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x4 a3 = double2x4(-77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737); + double2x4 b3 = double2x4(-216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_equal_wide_scalar() + { + double2x4 a0 = double2x4(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185); + double b0 = (292.92427148154206); + bool2x4 r0 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x4 a1 = double2x4(183.82114538169515, -257.87003791419329, -386.801748694294, -182.9388249772316, 349.25012962392077, 485.31159304329731, 373.56911652794531, 259.15151822713744); + double b1 = (320.44249287268258); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x4 a2 = double2x4(450.13007828692446, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862); + double b2 = (-128.5255282523695); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x4 a3 = double2x4(87.9161055497434, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275); + double b3 = (-502.17362308044619); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double2x4 b0 = double2x4(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (-148.61806089646092); + double2x4 b1 = double2x4(-506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431); + bool2x4 r1 = bool2x4(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-101.01844673092404); + double2x4 b2 = double2x4(-283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588); + bool2x4 r2 = bool2x4(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-116.01998215355911); + double2x4 b3 = double2x4(-442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873); + bool2x4 r3 = bool2x4(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_equal_wide_wide() + { + double2x4 a0 = double2x4(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493); + double2x4 b0 = double2x4(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319); + bool2x4 r0 = bool2x4(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x4 a1 = double2x4(152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338, 349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double2x4 b1 = double2x4(-322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864, 73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool2x4 r1 = bool2x4(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x4 a2 = double2x4(-131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double2x4 b2 = double2x4(381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool2x4 r2 = bool2x4(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x4 a3 = double2x4(-223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255); + double2x4 b3 = double2x4(453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221); + bool2x4 r3 = bool2x4(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_equal_wide_scalar() + { + double2x4 a0 = double2x4(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357); + double b0 = (189.20512804258851); + bool2x4 r0 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x4 a1 = double2x4(-221.50546441856096, -116.44038277326172, -395.36331028275345, 164.77259667439978, -287.00733889593153, 355.83704559683667, 184.19556316369938, 273.01225555735277); + double b1 = (252.99433410027734); + bool2x4 r1 = bool2x4(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x4 a2 = double2x4(-418.14240308205706, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234); + double b2 = (249.38409697701411); + bool2x4 r2 = bool2x4(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x4 a3 = double2x4(71.176674637560154, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706); + double b3 = (-331.27167788672807); + bool2x4 r3 = bool2x4(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double2x4 b0 = double2x4(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (79.39918831707871); + double2x4 b1 = double2x4(416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856); + bool2x4 r1 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-429.17024846988278); + double2x4 b2 = double2x4(-213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-400.47050280145857); + double2x4 b3 = double2x4(-283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719); + bool2x4 r3 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_add_wide_wide() + { + double2x4 a0 = double2x4(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118); + double2x4 b0 = double2x4(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398); + double2x4 r0 = double2x4(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a0 + b0, r0); + + double2x4 a1 = double2x4(-178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068, 491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double2x4 b1 = double2x4(244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515, 462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double2x4 r1 = double2x4(65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328, 953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a1 + b1, r1); + + double2x4 a2 = double2x4(284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double2x4 b2 = double2x4(-269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double2x4 r2 = double2x4(14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a2 + b2, r2); + + double2x4 a3 = double2x4(-62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207); + double2x4 b3 = double2x4(492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005); + double2x4 r3 = double2x4(429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_add_wide_scalar() + { + double2x4 a0 = double2x4(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535); + double b0 = (500.99725913489112); + double2x4 r0 = double2x4(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776); + TestUtils.AreEqual(a0 + b0, r0); + + double2x4 a1 = double2x4(443.11525246273504, 41.32102133767728, -471.25607584009697, -2.6649749291431704, 78.985822952811532, 202.14799151297098, 311.7254551908585, 10.345855002452595); + double b1 = (268.092225914864); + double2x4 r1 = double2x4(711.207478377599, 309.41324725254128, -203.16384992523297, 265.42725098572083, 347.07804886767553, 470.240217427835, 579.8176811057225, 278.4380809173166); + TestUtils.AreEqual(a1 + b1, r1); + + double2x4 a2 = double2x4(-151.24445898423181, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746); + double b2 = (355.23276703210206); + double2x4 r2 = double2x4(203.98830804787025, 157.43200118720154, 611.1880329117123, 599.379864971796, 173.60619743801936, 352.77784030175661, 656.1334217265869, 118.7408180789746); + TestUtils.AreEqual(a2 + b2, r2); + + double2x4 a3 = double2x4(-160.5840962680914, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759); + double b3 = (-172.54221566605486); + double2x4 r3 = double2x4(-333.12631193414626, -415.48330183303136, 293.80188335748471, 65.445242435413093, 91.751799149323119, 200.32462463170509, -371.37999265798368, -554.47319056581387); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double2x4 b0 = double2x4(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481); + double2x4 r0 = double2x4(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-37.05501486596421); + double2x4 b1 = double2x4(230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098); + double2x4 r1 = double2x4(193.74996528110927, -177.22934826520708, -19.03081894807093, -175.66937311723336, -10.150851254421752, -411.59259719941423, 117.41258578999549, 231.32880555434559); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-190.96302255939833); + double2x4 b2 = double2x4(188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923); + double2x4 r2 = double2x4(-2.345768929620192, -695.87914642313456, -170.50900896382933, 6.9823226961224805, 60.448922185436288, -612.05339794049655, -79.517622031046869, -264.23190558340025); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (480.88455770950975); + double2x4 b3 = double2x4(438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067); + double2x4 r3 = double2x4(918.93757004613872, 547.72884680504387, 210.08855829485157, 436.86263581591777, 678.57927687772519, 499.99848770536414, 830.12232628377262, 847.11905042041042); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_sub_wide_wide() + { + double2x4 a0 = double2x4(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537); + double2x4 b0 = double2x4(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307); + double2x4 r0 = double2x4(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a0 - b0, r0); + + double2x4 a1 = double2x4(110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254, -470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double2x4 b1 = double2x4(-477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321, -446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double2x4 r1 = double2x4(588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464, -23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a1 - b1, r1); + + double2x4 a2 = double2x4(-508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double2x4 b2 = double2x4(-210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double2x4 r2 = double2x4(-297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a2 - b2, r2); + + double2x4 a3 = double2x4(-308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012); + double2x4 b3 = double2x4(-221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004); + double2x4 r3 = double2x4(-87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_sub_wide_scalar() + { + double2x4 a0 = double2x4(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483); + double b0 = (-291.59041442144212); + double2x4 r0 = double2x4(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695); + TestUtils.AreEqual(a0 - b0, r0); + + double2x4 a1 = double2x4(-377.92569344952972, 400.53491968686455, 461.50756499800252, -246.28726660753006, 21.605312595891405, 246.35072171238755, -121.42736178330489, -122.71842413894757); + double b1 = (-470.26204297983185); + double2x4 r1 = double2x4(92.33634953030213, 870.79696266669634, 931.76960797783431, 223.97477637230179, 491.86735557572325, 716.61276469221934, 348.83468119652696, 347.54361884088428); + TestUtils.AreEqual(a1 - b1, r1); + + double2x4 a2 = double2x4(-122.93872099879138, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725); + double b2 = (360.15095417581074); + double2x4 r2 = double2x4(-483.08967517460212, -17.276375301776625, -341.22112671528987, -195.54860171840926, -263.10726559493094, 125.76402717724636, -565.908611084292, -106.70772700510349); + TestUtils.AreEqual(a2 - b2, r2); + + double2x4 a3 = double2x4(-121.16305619159857, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121); + double b3 = (187.99838813953022); + double2x4 r3 = double2x4(-309.16144433112879, -638.81866151039424, -436.07175942699968, -214.99445353029034, 253.55423128491009, 261.91222155369462, 166.88763864659131, -89.1769023356851); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double2x4 b0 = double2x4(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653); + double2x4 r0 = double2x4(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (341.20492831859963); + double2x4 b1 = double2x4(-385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264); + double2x4 r1 = double2x4(726.9799846219737, 265.81018174151427, -13.738788134296783, 172.07351311113382, 252.98831999161666, 339.46992174697561, 218.66688833882415, 606.14995603177226); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-50.837180399725753); + double2x4 b2 = double2x4(-347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867); + double2x4 r2 = double2x4(296.81314243786653, -54.902739073570274, 28.258244050786971, -405.19551963601054, 241.65533124732565, 2.3718028079587157, 195.51041993662272, -350.04052178470442); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (432.18467422583353); + double2x4 b3 = double2x4(-163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042); + double2x4 r3 = double2x4(596.06467513184271, 255.44211876366376, 537.17051578740143, 877.98230450506423, 461.05782959473214, 601.772903245768, 702.54392036727813, 364.13704698352933); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mul_wide_wide() + { + double2x4 a0 = double2x4(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105); + double2x4 b0 = double2x4(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538); + double2x4 r0 = double2x4(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a0 * b0, r0); + + double2x4 a1 = double2x4(-239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887, 467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double2x4 b1 = double2x4(358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773, 184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double2x4 r1 = double2x4(-85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876, 86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a1 * b1, r1); + + double2x4 a2 = double2x4(464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double2x4 b2 = double2x4(-358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double2x4 r2 = double2x4(-166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a2 * b2, r2); + + double2x4 a3 = double2x4(-83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629); + double2x4 b3 = double2x4(-189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596); + double2x4 r3 = double2x4(15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mul_wide_scalar() + { + double2x4 a0 = double2x4(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957); + double b0 = (192.21119055161773); + double2x4 r0 = double2x4(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959); + TestUtils.AreEqual(a0 * b0, r0); + + double2x4 a1 = double2x4(-46.729179165665585, 422.08249374017237, -48.83483722099794, 355.30832998608628, 119.35660391643489, -196.995807977857, 98.2360046367329, -325.55215683837991); + double b1 = (-238.40500103608008); + double2x4 r1 = double2x4(11140.470007405675, -100626.57735743705, 11642.469418268816, -84707.28277846078, -28455.211280360661, 46964.785805064428, -23419.954787200673, 77613.262288352067); + TestUtils.AreEqual(a1 * b1, r1); + + double2x4 a2 = double2x4(53.937323833786536, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565); + double b2 = (-87.4509838034636); + double2x4 r2 = double2x4(-4716.8720329906373, 11410.090985601793, 19466.114263107731, -11020.138532190962, -25654.7157287796, -15249.873729908933, 28606.9725596326, -4952.2725598773932); + TestUtils.AreEqual(a2 * b2, r2); + + double2x4 a3 = double2x4(257.54154241156834, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707); + double b3 = (-475.60871551726422); + double2x4 r3 = double2x4(-122489.00217870105, 215304.21046994952, 23409.748796123691, -67346.645751367163, -205265.91247392457, -85778.498270021737, 19463.551649317793, -132953.32897149969); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double2x4 b0 = double2x4(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719); + double2x4 r0 = double2x4(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (491.80157660497423); + double2x4 b1 = double2x4(49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236); + double2x4 r1 = double2x4(24541.897623137622, 208751.36050587788, 78746.322298740954, -194749.53168969302, 61574.387840378076, -130335.19805767993, 154748.36498495867, -143956.23307234381); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (-37.729878681586058); + double2x4 b2 = double2x4(165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903); + double2x4 r2 = double2x4(-6239.0965218592164, -13451.370814855052, 7123.9039992519283, -19050.409039281636, -1530.7809304450689, 7801.599656624363, 2324.2616607220198, -4488.7836339481055); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (53.7483275186961); + double2x4 b3 = double2x4(-198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562); + double2x4 r3 = double2x4(-10678.14893114493, 5172.530114084163, -1087.9672315614384, -1672.8616560919363, 2090.2974779128417, -705.89332374427579, 27297.232007583982, 5107.0550180423643); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_div_wide_wide() + { + double2x4 a0 = double2x4(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931); + double2x4 b0 = double2x4(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438); + double2x4 r0 = double2x4(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a0 / b0, r0); + + double2x4 a1 = double2x4(-274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897, -136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double2x4 b1 = double2x4(484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831, 397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double2x4 r1 = double2x4(-0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668, -0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a1 / b1, r1); + + double2x4 a2 = double2x4(-24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double2x4 b2 = double2x4(-84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double2x4 r2 = double2x4(0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a2 / b2, r2); + + double2x4 a3 = double2x4(315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819); + double2x4 b3 = double2x4(-218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027); + double2x4 r3 = double2x4(-1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_div_wide_scalar() + { + double2x4 a0 = double2x4(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844); + double b0 = (-60.024377612408443); + double2x4 r0 = double2x4(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415); + TestUtils.AreEqual(a0 / b0, r0); + + double2x4 a1 = double2x4(-348.92380516087815, 210.55792174607416, 287.64239968342815, 504.37224626185946, 491.78708600056689, -26.63160015392657, -253.23667275776933, 272.89512098622276); + double b1 = (-275.53868187383688); + double2x4 r1 = double2x4(1.26633328862567, -0.76416828415577609, -1.0439274722782237, -1.8304952423805252, -1.7848204929199212, 0.096652854593100634, 0.91906033314669355, -0.990405844763297); + TestUtils.AreEqual(a1 / b1, r1); + + double2x4 a2 = double2x4(178.09617313095191, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464); + double b2 = (-460.87559030059521); + double2x4 r2 = double2x4(-0.3864300407291974, 1.0906327579395469, 0.18296649879987137, 0.37904012284083372, -0.18181980351156884, -0.42753851809715948, -0.68818629566630174, -0.87526249231169939); + TestUtils.AreEqual(a2 / b2, r2); + + double2x4 a3 = double2x4(81.646461763254592, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443); + double b3 = (60.606869964211683); + double2x4 r3 = double2x4(1.3471486287192653, -6.8236568110156472, 3.4210807809960628, 5.9161957033683157, 0.34235512924624228, -1.1315075519552849, 5.1265221708845941, 6.88708890896002); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double2x4 b0 = double2x4(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473); + double2x4 r0 = double2x4(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-472.97976062864984); + double2x4 b1 = double2x4(192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578); + double2x4 r1 = double2x4(-2.4604870061143891, 2.3613936730535827, 0.96490740062224467, 2.2405210421238673, 1.4650033480822544, 3.4277549398058063, -5.6086949343062837, -1.332099243925746); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (276.42724455354141); + double2x4 b2 = double2x4(-382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753); + double2x4 r2 = double2x4(-0.72176472675406045, -0.56569907004079412, 0.80159611502386607, 1.637068760560944, -6.2546343366637984, 0.65729825666863562, -1.574050736926506, -29.979414703991178); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-344.19428865248074); + double2x4 b3 = double2x4(-449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984); + double2x4 r3 = double2x4(0.766457668003967, -2.9242133353648381, 1.0212649511208138, -1.4377767669308814, 0.8840111068897808, -1.4180943710859133, -0.69355351967072676, -3.751608190071702); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mod_wide_wide() + { + double2x4 a0 = double2x4(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273); + double2x4 b0 = double2x4(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516); + double2x4 r0 = double2x4(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a0 % b0, r0); + + double2x4 a1 = double2x4(-140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467, -64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double2x4 b1 = double2x4(-145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892, -435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double2x4 r1 = double2x4(-140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467, -64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a1 % b1, r1); + + double2x4 a2 = double2x4(119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double2x4 b2 = double2x4(-433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double2x4 r2 = double2x4(119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a2 % b2, r2); + + double2x4 a3 = double2x4(156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078); + double2x4 b3 = double2x4(-131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288); + double2x4 r3 = double2x4(25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mod_wide_scalar() + { + double2x4 a0 = double2x4(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794); + double b0 = (-90.499235433758827); + double2x4 r0 = double2x4(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914); + TestUtils.AreEqual(a0 % b0, r0); + + double2x4 a1 = double2x4(-84.473635951277629, 433.45469041981482, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105, 254.51082885196); + double b1 = (-318.78148356023314); + double2x4 r1 = double2x4(-84.473635951277629, 114.67320685958168, -54.6001856581309, -172.33886607565864, -110.9331837217012, 222.36186109406958, 5.796394112425105, 254.51082885196); + TestUtils.AreEqual(a1 % b1, r1); + + double2x4 a2 = double2x4(-433.09369703433185, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949); + double b2 = (-203.08261284748215); + double2x4 r2 = double2x4(-26.928471339367547, -75.356399809641971, 49.206481002832959, -69.403906139267576, 5.3372299696026175, -75.977815186594512, 77.385365283761757, -128.91073375982734); + TestUtils.AreEqual(a2 % b2, r2); + + double2x4 a3 = double2x4(335.99997655302286, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444); + double b3 = (67.839589388966374); + double2x4 r3 = double2x4(64.641618997157366, -56.881177928709064, 38.175906437531125, 67.768218548860432, 66.57565406084791, -59.082266119812743, 32.20520497868074, 58.947341707976193); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double2x4 b0 = double2x4(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747); + double2x4 r0 = double2x4(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (-372.06709426085797); + double2x4 b1 = double2x4(201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992); + double2x4 r1 = double2x4(-171.05479629852573, -85.366529981310691, -113.11562543414334, -51.116367363890731, -372.06709426085797, -23.977244149883063, -2.3940255653086524, -372.06709426085797); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (-131.87271911086174); + double2x4 b2 = double2x4(-120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987); + double2x4 r2 = double2x4(-11.779859071494911, -1.1792683606881269, -20.470761785502873, -131.87271911086174, -131.87271911086174, -131.87271911086174, -131.87271911086174, -131.87271911086174); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-433.52306505363578); + double2x4 b3 = double2x4(-163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526); + double2x4 r3 = double2x4(-105.78935318150997, -79.515043057275591, -101.57257180175401, -9.093886618080262, -50.111194872349017, -1.08209943821754, -48.138891957764884, -165.39128883434051); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_plus() + { + double2x4 a0 = double2x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193); + double2x4 r0 = double2x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193); + TestUtils.AreEqual(+a0, r0); + + double2x4 a1 = double2x4(-320.51845875406565, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756); + double2x4 r1 = double2x4(-320.51845875406565, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756); + TestUtils.AreEqual(+a1, r1); + + double2x4 a2 = double2x4(309.59316530339106, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581); + double2x4 r2 = double2x4(309.59316530339106, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581); + TestUtils.AreEqual(+a2, r2); + + double2x4 a3 = double2x4(239.15236937215195, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652); + double2x4 r3 = double2x4(239.15236937215195, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double2x4_operator_neg() + { + double2x4 a0 = double2x4(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605); + double2x4 r0 = double2x4(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605); + TestUtils.AreEqual(-a0, r0); + + double2x4 a1 = double2x4(19.686896571743773, -180.60051473444349, 223.38126312167446, -410.39206070936848, -395.68154186554324, -349.14948885010062, -110.9393032113739, -238.21960913307015); + double2x4 r1 = double2x4(-19.686896571743773, 180.60051473444349, -223.38126312167446, 410.39206070936848, 395.68154186554324, 349.14948885010062, 110.9393032113739, 238.21960913307015); + TestUtils.AreEqual(-a1, r1); + + double2x4 a2 = double2x4(292.54351224216794, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838); + double2x4 r2 = double2x4(-292.54351224216794, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838); + TestUtils.AreEqual(-a2, r2); + + double2x4 a3 = double2x4(196.38759169186824, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679); + double2x4 r3 = double2x4(-196.38759169186824, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double2x4_operator_prefix_inc() + { + double2x4 a0 = double2x4(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384); + double2x4 r0 = double2x4(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384); + TestUtils.AreEqual(++a0, r0); + + double2x4 a1 = double2x4(-76.507656371457358, 64.0964734852763, 148.67930967578627, 363.2849182390072, -115.5592263283018, -326.87781992874937, -179.89464839729231, 339.8765849265626); + double2x4 r1 = double2x4(-75.507656371457358, 65.0964734852763, 149.67930967578627, 364.2849182390072, -114.5592263283018, -325.87781992874937, -178.89464839729231, 340.8765849265626); + TestUtils.AreEqual(++a1, r1); + + double2x4 a2 = double2x4(-38.410431164507941, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178); + double2x4 r2 = double2x4(-37.410431164507941, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178); + TestUtils.AreEqual(++a2, r2); + + double2x4 a3 = double2x4(-264.38006246480165, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289); + double2x4 r3 = double2x4(-263.38006246480165, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double2x4_operator_postfix_inc() + { + double2x4 a0 = double2x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149); + double2x4 r0 = double2x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149); + TestUtils.AreEqual(a0++, r0); + + double2x4 a1 = double2x4(153.75031645305, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886); + double2x4 r1 = double2x4(153.75031645305, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886); + TestUtils.AreEqual(a1++, r1); + + double2x4 a2 = double2x4(-270.65246380057766, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892); + double2x4 r2 = double2x4(-270.65246380057766, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892); + TestUtils.AreEqual(a2++, r2); + + double2x4 a3 = double2x4(188.00656685047159, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931); + double2x4 r3 = double2x4(188.00656685047159, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double2x4_operator_prefix_dec() + { + double2x4 a0 = double2x4(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492); + double2x4 r0 = double2x4(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492); + TestUtils.AreEqual(--a0, r0); + + double2x4 a1 = double2x4(171.96452935597142, 298.28480710568135, 326.50782338087811, 400.720900006928, -478.03137253133178, -326.45297852459038, -24.584499132160317, 112.79684668071422); + double2x4 r1 = double2x4(170.96452935597142, 297.28480710568135, 325.50782338087811, 399.720900006928, -479.03137253133178, -327.45297852459038, -25.584499132160317, 111.79684668071422); + TestUtils.AreEqual(--a1, r1); + + double2x4 a2 = double2x4(-341.97629300783217, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351); + double2x4 r2 = double2x4(-342.97629300783217, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351); + TestUtils.AreEqual(--a2, r2); + + double2x4 a3 = double2x4(181.47510703908051, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329); + double2x4 r3 = double2x4(180.47510703908051, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double2x4_operator_postfix_dec() + { + double2x4 a0 = double2x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511); + double2x4 r0 = double2x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511); + TestUtils.AreEqual(a0--, r0); + + double2x4 a1 = double2x4(-182.40572866350681, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811); + double2x4 r1 = double2x4(-182.40572866350681, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811); + TestUtils.AreEqual(a1--, r1); + + double2x4 a2 = double2x4(487.34482287212495, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342); + double2x4 r2 = double2x4(487.34482287212495, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342); + TestUtils.AreEqual(a2--, r2); + + double2x4 a3 = double2x4(311.29903068733358, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698); + double2x4 r3 = double2x4(311.29903068733358, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x4.gen.cs.meta new file mode 100644 index 0000000..1c44a3f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93f2834619d034346a15285ea2156089 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3.gen.cs new file mode 100644 index 0000000..fba5107 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3.gen.cs @@ -0,0 +1,1062 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble3 + { + [TestCompiler] + public static void double3_zero() + { + TestUtils.AreEqual(double3.zero.x, 0.0); + TestUtils.AreEqual(double3.zero.y, 0.0); + TestUtils.AreEqual(double3.zero.z, 0.0); + } + + [TestCompiler] + public static void double3_constructor() + { + double3 a = new double3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void double3_scalar_constructor() + { + double3 a = new double3(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + TestUtils.AreEqual(a.z, 17.0); + } + + [TestCompiler] + public static void double3_static_constructor() + { + double3 a = double3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void double3_static_scalar_constructor() + { + double3 a = double3(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + TestUtils.AreEqual(a.z, 17.0); + } + + [TestCompiler] + public static void double3_operator_equal_wide_wide() + { + double3 a0 = double3(-135.18925172425304, -49.094127439471947, 169.12980778940482); + double3 b0 = double3(-220.01464591734793, 66.980020792679852, 499.20158576369363); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3 a1 = double3(240.80529772527757, 314.73919382446411, 442.39301916695808); + double3 b1 = double3(-371.113114291389, 208.44865212610398, 390.80369133074009); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3 a2 = double3(177.92444881141398, 335.53340283759564, 168.1544516869609); + double3 b2 = double3(-72.443806920407269, 362.97643273089841, 194.6783255053117); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3 a3 = double3(350.72955982327903, 367.17843668869625, 46.941470406456574); + double3 b3 = double3(471.6448635867074, -404.04466719368691, -144.69675476136467); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3_operator_equal_wide_scalar() + { + double3 a0 = double3(65.671194345537174, 404.41550440546848, -269.7301577393572); + double b0 = (-155.8157547245807); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3 a1 = double3(83.630607882342588, -155.86829836474186, 314.67125597348024); + double b1 = (152.99450476141385); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3 a2 = double3(386.36515325417986, -132.63519460178691, -65.667489797653388); + double b2 = (290.04894007837811); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3 a3 = double3(-69.683271678948415, 186.84520086406042, -232.89569221851218); + double b3 = (-191.19075521789063); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double3 b0 = double3(-400.48919958644046, -71.286823544319191, 156.97811491646712); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-225.23872791288363); + double3 b1 = double3(499.14180993435059, -211.97992358542047, 428.31192394174263); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-489.50133322621758); + double3 b2 = double3(-5.6915457275190988, -30.865948453017495, -362.98307221149241); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (184.50319322594589); + double3 b3 = double3(-160.47062142215231, 316.66882315122928, 390.36923879681581); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3_operator_not_equal_wide_wide() + { + double3 a0 = double3(279.99414576217259, -43.342018386042696, -465.72473523846116); + double3 b0 = double3(-460.912120318465, -476.00904844515446, 468.13642070635058); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3 a1 = double3(317.46655645848557, 85.714987079480238, 360.89050572034466); + double3 b1 = double3(-341.01254312182431, -62.658060341448561, -458.80166718866752); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3 a2 = double3(366.08152668833804, 154.5428384070018, 332.426219856565); + double3 b2 = double3(-457.73023316717251, -59.523265627922171, 3.024243117787023); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3 a3 = double3(397.11323160543725, -431.3749584776233, 489.01079319837072); + double3 b3 = double3(155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3_operator_not_equal_wide_scalar() + { + double3 a0 = double3(-155.44111282911206, -19.426602134214079, 174.63305409934048); + double b0 = (-393.41354173860213); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3 a1 = double3(507.9207296352464, 171.15146430356026, -58.923273352404692); + double b1 = (59.177048472304364); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3 a2 = double3(-398.17684835855704, -165.24150879925185, 270.34102333259818); + double b2 = (492.20105361016522); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3 a3 = double3(-380.24326222960059, -134.34545642433011, 458.40042302496749); + double b3 = (501.8990516615562); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double3 b0 = double3(459.55319592894671, 436.45324369727314, -488.71416806090349); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (392.76794475725296); + double3 b1 = double3(-266.73665369056937, 338.55788270503183, -338.10012475498957); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-152.3145445102428); + double3 b2 = double3(-452.82067868338, 209.43931422449612, 50.107968592135194); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (372.4343656843688); + double3 b3 = double3(-488.0213141329686, 489.74075697816011, 270.40006149485714); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_wide_wide() + { + double3 a0 = double3(51.710243010758518, -313.85556450200062, 283.04767359562572); + double3 b0 = double3(-261.83523881707117, -19.810742149041403, -149.25882084167506); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double3 a1 = double3(235.02188621974642, 44.0783565249659, -207.25566659088042); + double3 b1 = double3(205.99822316225539, -306.02438535635565, 102.12168006884008); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3 a2 = double3(3.3829410091894943, -144.30134326978651, -69.369597705718888); + double3 b2 = double3(231.90633760760829, 179.49885305180158, 473.22488496882136); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double3 a3 = double3(-135.66796762108243, -194.78736576567746, -33.473868147225062); + double3 b3 = double3(15.891647107848712, 270.04990614114786, 490.91400240869916); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_wide_scalar() + { + double3 a0 = double3(-221.86977325280651, -121.54646807608498, -97.52392511140738); + double b0 = (199.06751808853244); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3 a1 = double3(479.88107775146193, 137.32880574899207, 282.96659601990439); + double b1 = (67.118990214131259); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double3 a2 = double3(258.27909362422258, -288.08113278452356, 82.665427008022334); + double b2 = (-111.41316061439608); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double3 a3 = double3(-361.64292042406413, 12.788020378345664, -66.703050406045747); + double b3 = (-68.088202269788951); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double3 b0 = double3(-377.19654887597846, -505.14754104295167, 375.92672198634909); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (110.17393474940855); + double3 b1 = double3(-118.09757452742082, -40.45089079833167, -299.74430932651478); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (31.437125935888389); + double3 b2 = double3(-458.904539560389, 13.684679276163024, -458.50690839183841); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (248.27646624682302); + double3 b3 = double3(389.23142999654237, 488.74553679337055, -221.63786731550368); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_wide_wide() + { + double3 a0 = double3(-229.29066501804192, 505.536608216137, -73.80706862071861); + double3 b0 = double3(-445.84502407808088, -420.03529210576568, 299.02440108872224); + bool3 r0 = bool3(true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double3 a1 = double3(100.29203777215071, -419.21478124112582, -159.55974753180504); + double3 b1 = double3(-13.880978829171966, 151.56173593903043, -163.5094302461992); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double3 a2 = double3(-396.7703608929973, 127.03739482119556, 489.13989733585151); + double3 b2 = double3(-391.09603733154762, 479.2837710228207, -77.674873149802409); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double3 a3 = double3(51.91890885863404, 155.38475544535777, -135.63165027258526); + double3 b3 = double3(-46.5841996886694, -415.37701888353422, 71.466978344818131); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_wide_scalar() + { + double3 a0 = double3(11.156317000815761, -411.02322382993214, 385.88556188432756); + double b0 = (-302.81693877969724); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3 a1 = double3(-485.10304831206008, 405.17534632476759, 173.57509740329124); + double b1 = (-491.18003033622171); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double3 a2 = double3(69.269281181166548, -367.027771405423, -86.124509613087639); + double b2 = (501.30683183172107); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3 a3 = double3(-489.09058998948456, -18.149639853346002, -236.41493498367021); + double b3 = (-172.51816066192379); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double3 b0 = double3(-226.20441423459187, -423.46500487973213, 409.40550227156166); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (453.87706277048073); + double3 b1 = double3(87.475727837288673, 113.79560308987072, 176.40926154721956); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-140.44002944810319); + double3 b2 = double3(-182.48286804113673, -158.29329188088576, -162.68531830733889); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-193.328676075362); + double3 b3 = double3(230.18129955519987, -102.58784227379965, 392.5205878655056); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_equal_wide_wide() + { + double3 a0 = double3(240.09053169940159, 462.2131528622532, 293.08251561461134); + double3 b0 = double3(-81.203838624620744, 493.63743876555816, -411.47211451617636); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double3 a1 = double3(-427.87067361728782, -405.5227226715175, 204.59190211286386); + double3 b1 = double3(99.164449499530974, -295.66769875943089, -480.46254824123463); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3 a2 = double3(294.670105832941, -327.56444445604666, -456.12326667091031); + double3 b2 = double3(74.414040361723892, 260.916124226952, 306.17329730939741); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double3 a3 = double3(282.3012408140587, 421.8811549720732, -311.71284809322697); + double3 b3 = double3(139.56480438055689, -505.75247955031341, -489.62680958659706); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_equal_wide_scalar() + { + double3 a0 = double3(309.1924356469849, 69.673792633076118, -101.72418622939114); + double b0 = (292.92427148154206); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double3 a1 = double3(-315.97240629604664, 424.15386577330241, -410.87006945669191); + double b1 = (-346.01106731314724); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double3 a2 = double3(-483.90265320423185, 320.44249287268258, -257.87003791419329); + double b2 = (183.82114538169515); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double3 a3 = double3(-386.801748694294, 349.25012962392077, 485.31159304329731); + double b3 = (-182.9388249772316); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double3 b0 = double3(51.159012579898786, 340.44369022010062, 312.81429519914752); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (354.19252626699983); + double3 b1 = double3(136.39671165142056, -94.767871185563422, 288.544332877055); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (304.04282369466625); + double3 b2 = double3(-148.61806089646092, -506.30010127755816, 27.581254256694251); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (48.471146844546865); + double3 b3 = double3(104.88351326104419, -488.6858386884843, -480.43516968210935); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_equal_wide_wide() + { + double3 a0 = double3(-386.59181302906563, -157.12078221008215, 391.01526445477054); + double3 b0 = double3(153.44301350109424, 49.892483019219981, 78.025787628267835); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double3 a1 = double3(-511.88687133783793, -5.4220387960886569, 287.64527501149348); + double3 b1 = double3(138.81373292711271, -225.51057802211056, -339.35611335344436); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3 a2 = double3(-122.53520184500849, 7.4814426933794493, 152.94642765491574); + double3 b2 = double3(-373.302078182484, 364.9358934671319, -322.71539870030961); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3 a3 = double3(48.986223482054811, 57.338148859021317, 300.46493138953338); + double3 b3 = double3(125.47818165900105, -25.776589167200314, 297.51890792395864); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_equal_wide_scalar() + { + double3 a0 = double3(495.457423679278, -14.345115906719627, -463.47478053694346); + double b0 = (189.20512804258851); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double3 a1 = double3(217.51749215718246, -377.65869706573835, 53.815095211293169); + double b1 = (-246.86571776441565); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3 a2 = double3(-123.33294373533357, 252.99433410027734, -116.44038277326172); + double b2 = (-221.50546441856096); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3 a3 = double3(-395.36331028275345, -287.00733889593153, 355.83704559683667); + double b3 = (164.77259667439978); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double3 b0 = double3(204.80295310020585, -101.10404853760451, -122.05503827056617); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-70.456147941973143); + double3 b1 = double3(-239.62025677395064, -185.99272426683115, -455.61258027312); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (276.66581476697036); + double3 b2 = double3(79.39918831707871, 416.42054791768112, 379.27350801009379); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-439.51472612820322); + double3 b3 = double3(67.141009600433108, -74.560638224035813, -367.25635474140586); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3_operator_add_wide_wide() + { + double3 a0 = double3(465.14837644302679, 278.91072548502621, -277.52992237616792); + double3 b0 = double3(483.99436186440028, -204.07667193379098, -365.67356007437854); + double3 r0 = double3(949.14273830742707, 74.834053551235229, -643.20348245054652); + TestUtils.AreEqual(a0 + b0, r0); + + double3 a1 = double3(-65.197214395365336, -473.32437561141529, -4.6955420992782138); + double3 b1 = double3(-509.92086076639634, -270.69751108377125, 486.76397846954126); + double3 r1 = double3(-575.11807516176168, -744.02188669518659, 482.06843637026304); + TestUtils.AreEqual(a1 + b1, r1); + + double3 a2 = double3(-470.53676698661258, -109.95011453980118, -178.70145782209067); + double3 b2 = double3(267.49177587567442, 251.6425212601398, 244.4951094335388); + double3 r2 = double3(-203.04499111093816, 141.69240672033862, 65.793651611448126); + TestUtils.AreEqual(a2 + b2, r2); + + double3 a3 = double3(-420.03378339299644, 290.71109236903078, -446.5296368294068); + double3 b3 = double3(-78.675763882079991, 352.20551340291536, 82.779185095233515); + double3 r3 = double3(-498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3_operator_add_wide_scalar() + { + double3 a0 = double3(459.89829728561369, -447.66336104258119, -94.438627525436971); + double b0 = (500.99725913489112); + double3 r0 = double3(960.89555642050482, 53.333898092309937, 406.55863160945415); + TestUtils.AreEqual(a0 + b0, r0); + + double3 a1 = double3(126.42986279652916, -349.64130060264904, -2.7912590516690443); + double b1 = (-36.254356162741033); + double3 r1 = double3(90.175506633788132, -385.89565676539007, -39.045615214410077); + TestUtils.AreEqual(a1 + b1, r1); + + double3 a2 = double3(-478.41478489265535, 268.092225914864, 41.32102133767728); + double b2 = (443.11525246273504); + double3 r2 = double3(-35.299532429920305, 711.207478377599, 484.43627380041232); + TestUtils.AreEqual(a2 + b2, r2); + + double3 a3 = double3(-471.25607584009697, 78.985822952811532, 202.14799151297098); + double b3 = (-2.6649749291431704); + double3 r3 = double3(-473.92105076924014, 76.320848023668361, 199.4830165838278); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double3 b0 = double3(-264.08813178915909, -106.00925998855814, -355.44729320865463); + double3 r0 = double3(-589.60089663304427, -431.52202483244332, -680.96005805253981); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-447.33029362528134); + double3 b1 = double3(-158.70021040677102, -199.48369154682553, 180.31809123806568); + double3 r1 = double3(-606.03050403205236, -646.81398517210687, -267.01220238721567); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (337.57936898692481); + double3 b2 = double3(-37.05501486596421, 230.80498014707348, -140.17433339924287); + double3 r2 = double3(300.5243541209606, 568.38434913399828, 197.40503558768194); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (18.02419591789328); + double3 b3 = double3(-138.61435825126915, 26.904163611542458, -374.53758233345); + double3 r3 = double3(-120.59016233337587, 44.928359529435738, -356.51338641555674); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3_operator_sub_wide_wide() + { + double3 a0 = double3(133.37101680290471, -131.8321183341705, -197.29314407952739); + double3 b0 = double3(123.46028739002543, 359.56010048443454, -48.24847819667707); + double3 r0 = double3(9.9107294128792773, -491.39221881860504, -149.04466588285032); + TestUtils.AreEqual(a0 - b0, r0); + + double3 a1 = double3(-485.286571013409, -337.55033103448818, 471.66710470228782); + double3 b1 = double3(478.97904680621764, 207.15832886805686, 142.36730462981723); + double3 r1 = double3(-964.26561781962664, -544.708659902545, 329.29980007247059); + TestUtils.AreEqual(a1 - b1, r1); + + double3 a2 = double3(146.5066197600712, -130.58504372955537, 110.77707367333448); + double3 b2 = double3(-125.60551005490379, -65.299004823574307, -477.876434787119); + double3 r2 = double3(272.112129814975, -65.286038905981059, 588.65350846045351); + TestUtils.AreEqual(a2 - b2, r2); + + double3 a3 = double3(-235.54160486699158, 78.879356659427, -347.68616811730254); + double3 b3 = double3(164.50000031501986, 428.00958915614035, 72.6278169493321); + double3 r3 = double3(-400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3_operator_sub_wide_scalar() + { + double3 a0 = double3(48.936717294592768, 410.45158953706346, -364.44171612544062); + double b0 = (-291.59041442144212); + double3 r0 = double3(340.52713171603489, 702.04200395850557, -72.8513017039985); + TestUtils.AreEqual(a0 - b0, r0); + + double3 a1 = double3(163.98060353285666, 110.91942339340198, 204.35834441164434); + double b1 = (-460.06732318367222); + double3 r1 = double3(624.04792671652888, 570.9867465770742, 664.42566759531655); + TestUtils.AreEqual(a1 - b1, r1); + + double3 a2 = double3(180.26971420099483, -470.26204297983185, 400.53491968686455); + double b2 = (-377.92569344952972); + double3 r2 = double3(558.19540765052454, -92.33634953030213, 778.46061313639427); + TestUtils.AreEqual(a2 - b2, r2); + + double3 a3 = double3(461.50756499800252, 21.605312595891405, 246.35072171238755); + double b3 = (-246.28726660753006); + double3 r3 = double3(707.79483160553264, 267.89257920342146, 492.63798831991761); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double3 b0 = double3(452.35251757705237, 256.98980891750648, -275.159888634067); + double3 r0 = double3(-157.76605851844238, 37.59665014110351, 569.746347692677); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-89.027518075437968); + double3 b1 = double3(488.22838829840919, -333.21728030462623, -64.232989102710519); + double3 r1 = double3(-577.25590637384721, 244.18976222918826, -24.794528972727448); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-66.041730196234653); + double3 b2 = double3(341.20492831859963, -385.775056303374, 75.394746577085357); + double3 r2 = double3(-407.24665851483428, 319.73332610713936, -141.43647677332); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (354.94371645289641); + double3 b3 = double3(169.13141520746581, 88.216608326982964, 1.7350065716240124); + double3 r3 = double3(185.8123012454306, 266.72710812591345, 353.2087098812724); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3_operator_mul_wide_wide() + { + double3 a0 = double3(-394.78053898121254, -412.37219519744264, -25.874570143350638); + double3 b0 = double3(-149.76397831261346, -345.04538671348496, -284.33404721148963); + double3 r0 = double3(59123.904078224172, 142287.1235617903, 7357.0212487164608); + TestUtils.AreEqual(a0 * b0, r0); + + double3 a1 = double3(-241.04595886964626, -93.675987525692221, 244.15999257013198); + double3 b1 = double3(267.97923648915219, -326.64849558782225, -150.68967754705329); + double3 r1 = double3(-64595.312016683383, 30599.120397970968, -36792.390550284115); + TestUtils.AreEqual(a1 * b1, r1); + + double3 a2 = double3(494.68846606402121, 53.537962700025105, -239.49641167349017); + double3 b2 = double3(207.73243794577775, 366.19289248352538, 358.88076202891807); + double3 r2 = double3(102762.84107913627, 19605.221418797286, -85950.654724573629); + TestUtils.AreEqual(a2 * b2, r2); + + double3 a3 = double3(236.67584644848284, -211.85620818466703, -216.65482030466887); + double3 b3 = double3(214.85359368792433, 253.42280900358355, -307.71382751488773); + double3 r3 = double3(50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3_operator_mul_wide_scalar() + { + double3 a0 = double3(328.20302191758674, -290.10672272839895, 236.99572454998065); + double b0 = (192.21119055161773); + double3 r0 = double3(63084.293585418032, -55761.758562653624, 45553.230371395039); + TestUtils.AreEqual(a0 * b0, r0); + + double3 a1 = double3(120.48136692889102, 134.86723214707672, -477.31047104173825); + double b1 = (357.90315811610924); + double3 r1 = double3(43120.661717995856, 48269.408311817213, -170830.92498772583); + TestUtils.AreEqual(a1 * b1, r1); + + double3 a2 = double3(-438.272912467957, -238.40500103608008, 422.08249374017237); + double b2 = (-46.729179165665585); + double3 r2 = double3(20480.133450173231, 11140.470007405675, -19723.568472675437); + TestUtils.AreEqual(a2 * b2, r2); + + double3 a3 = double3(-48.83483722099794, 119.35660391643489, -196.995807977857); + double b3 = (355.30832998608628); + double3 r3 = double3(-17351.424458135145, 42408.39561035925, -69994.2515468721); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double3 b0 = double3(329.36093846399376, -198.68342671109525, 184.07942518223047); + double3 r0 = double3(-152999.58486347177, 92295.346096036214, -85511.280621599); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (256.01618754864489); + double3 b1 = double3(266.22629297255833, -97.894749448585685, 159.74810583877752); + double3 r1 = double3(68158.240552042975, -25062.640534856713, 40898.101024961237); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (-351.82222263506719); + double3 b2 = double3(491.80157660497423, 49.902031206480274, 424.46256871915546); + double3 r2 = double3(-173026.72377659229, -17556.643533068374, -149335.36435216322); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (160.11807616060514); + double3 b3 = double3(-395.99208492599058, 125.20168858636248, -265.01581991138676); + double3 r3 = double3(-63405.490813176577, 20047.053508507553, -42433.823236336641); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3_operator_div_wide_wide() + { + double3 a0 = double3(246.26574933075619, -269.85612953354428, -451.61952588130697); + double3 b0 = double3(172.11981423763552, -77.141104972521362, -325.8353723612779); + double3 r0 = double3(1.4307809383918566, 3.4982144685336105, 1.3860359070548143); + TestUtils.AreEqual(a0 / b0, r0); + + double3 a1 = double3(-7.38850236283082, -308.20558681534862, -373.394808704683); + double3 b1 = double3(-450.60868117334724, -261.26215398556656, -122.44949847201326); + double3 r1 = double3(0.016396715535066435, 1.1796794220427942, 3.0493780159501847); + TestUtils.AreEqual(a1 / b1, r1); + + double3 a2 = double3(360.41863482092447, 25.80972458133931, -274.050461181463); + double3 b2 = double3(-93.210781379235357, -442.00522705633438, 484.36271380091216); + double3 r2 = double3(-3.8667054335113131, -0.05839235149599218, -0.56579594872388561); + TestUtils.AreEqual(a2 / b2, r2); + + double3 a3 = double3(127.53858977534742, -447.6717600522897, -137.4586017771897); + double3 b3 = double3(-390.78178686219348, 402.02531714086672, 316.65072193585831); + double3 r3 = double3(-0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3_operator_div_wide_scalar() + { + double3 a0 = double3(-244.51745116175965, 69.112274917360537, -333.02311888943575); + double b0 = (-60.024377612408443); + double3 r0 = double3(4.0736357608014941, -1.1514034408425655, 5.5481311449798705); + TestUtils.AreEqual(a0 / b0, r0); + + double3 a1 = double3(257.39682519500923, 154.34436066185322, 131.52659160062979); + double b1 = (403.24561257066466); + double3 r1 = double3(0.63831277308665835, 0.38275521382097105, 0.32616992597180733); + TestUtils.AreEqual(a1 / b1, r1); + + double3 a2 = double3(-261.88639200007844, -275.53868187383688, 210.55792174607416); + double b2 = (-348.92380516087815); + double3 r2 = double3(0.75055467161184541, 0.78968152300985706, -0.60344957446796244); + TestUtils.AreEqual(a2 / b2, r2); + + double3 a3 = double3(287.64239968342815, 491.78708600056689, -26.63160015392657); + double b3 = (504.37224626185946); + double3 r3 = double3(0.57029783421923308, 0.97504787316398334, -0.052801478176695719); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double3 b0 = double3(-422.676129776368, 248.12963235011773, 449.39137741988122); + double3 r0 = double3(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (245.85813796047967); + double3 b1 = double3(-326.62061253498337, 163.71510489457989, 333.664472020075); + double3 r1 = double3(-0.75273307478151441, 1.5017437646867933, 0.73684242278478951); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (38.291076916405473); + double3 b2 = double3(-472.97976062864984, 192.23013958345643, -200.29686960964318); + double3 r2 = double3(-0.080957115089896864, 0.19919392973119834, -0.19117161936195318); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-490.18150376257557); + double3 b3 = double3(-211.10257468517057, -322.85234108700058, -137.98529035317961); + double3 r3 = double3(2.3220062781972768, 1.5182838758802248, 3.5524185404685804); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3_operator_mod_wide_wide() + { + double3 a0 = double3(-442.30985924336585, 368.50046246522129, -1.0938966279355213); + double3 b0 = double3(-43.245045443645211, -144.19587690392319, -62.640481739603217); + double3 r0 = double3(-9.8594048069137443, 80.1087086573749, -1.0938966279355213); + TestUtils.AreEqual(a0 % b0, r0); + + double3 a1 = double3(-364.67383473211612, -197.34394487987458, -34.034902350062); + double3 b1 = double3(-336.82826510855381, -154.6102545981343, -154.02935583611452); + double3 r1 = double3(-27.845569623562312, -42.73369028174028, -34.034902350062); + TestUtils.AreEqual(a1 % b1, r1); + + double3 a2 = double3(-101.34858350704826, 208.31857142612273, -140.77031404374645); + double3 b2 = double3(487.0462093237071, -469.82909105244516, -145.20377237405802); + double3 r2 = double3(-101.34858350704826, 208.31857142612273, -140.77031404374645); + TestUtils.AreEqual(a2 % b2, r2); + + double3 a3 = double3(183.446989383291, -463.36838100076113, 83.839106360375467); + double3 b3 = double3(-203.38401780062543, -22.520082245823062, 224.6900237652892); + double3 r3 = double3(183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3_operator_mod_wide_scalar() + { + double3 a0 = double3(-433.41699548876704, -5.5141427542614565, 393.39439958771425); + double b0 = (-90.499235433758827); + double3 r0 = double3(-71.420053753731736, -5.5141427542614565, 31.39745785267894); + TestUtils.AreEqual(a0 % b0, r0); + + double3 a1 = double3(299.41153277988155, -502.939041133476, -450.80766245853511); + double b1 = (-120.80601626299602); + double3 r1 = double3(57.799500253889505, -19.714976081491898, -88.389613669547032); + TestUtils.AreEqual(a1 % b1, r1); + + double3 a2 = double3(186.09479698263794, -318.78148356023314, 433.45469041981482); + double b2 = (-84.473635951277629); + double3 r2 = double3(17.147525080082687, -65.360575706400255, 11.086510663426679); + TestUtils.AreEqual(a2 % b2, r2); + + double3 a3 = double3(-54.6001856581309, -429.71466728193434, 222.36186109406958); + double b3 = (-172.33886607565864); + double3 r3 = double3(-54.6001856581309, -85.036935130617053, 50.022995018410938); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double3 b0 = double3(-159.14024384279747, 230.17333399046834, 14.779358632294134); + double3 r0 = double3(-78.141915119319151, -166.24906881444576, -12.159078365266623); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (-303.15649738123477); + double3 b1 = double3(399.63502020371845, 206.69470534412881, 397.04482263934096); + double3 r1 = double3(-303.15649738123477, -96.461792037105965, -303.15649738123477); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (-393.89064735634747); + double3 b2 = double3(-372.06709426085797, 201.01229796233224, -95.5668547598491); + double3 r2 = double3(-21.8235530954895, -192.87834939401523, -11.6232283169511); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-258.95146882671463); + double3 b3 = double3(106.98357563232241, 469.3235559264773, -34.808985011097491); + double3 r3 = double3(-44.984317562069805, -258.95146882671463, -15.288573749032196); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3_operator_plus() + { + double3 a0 = double3(271.6708086802023, -79.080240524876956, -330.98506203805334); + double3 r0 = double3(271.6708086802023, -79.080240524876956, -330.98506203805334); + TestUtils.AreEqual(+a0, r0); + + double3 a1 = double3(31.824682965793045, 319.22218742930431, 190.32466015141677); + double3 r1 = double3(31.824682965793045, 319.22218742930431, 190.32466015141677); + TestUtils.AreEqual(+a1, r1); + + double3 a2 = double3(-350.30858270745193, 102.0544069288552, -107.00351267075331); + double3 r2 = double3(-350.30858270745193, 102.0544069288552, -107.00351267075331); + TestUtils.AreEqual(+a2, r2); + + double3 a3 = double3(-428.77622075973835, 234.77393042052813, 34.283600107898792); + double3 r3 = double3(-428.77622075973835, 234.77393042052813, 34.283600107898792); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double3_operator_neg() + { + double3 a0 = double3(420.22718854445372, -196.25749811728366, -335.42683068636188); + double3 r0 = double3(-420.22718854445372, 196.25749811728366, 335.42683068636188); + TestUtils.AreEqual(-a0, r0); + + double3 a1 = double3(509.04366969924592, -498.57532071442125, -495.8379526063045); + double3 r1 = double3(-509.04366969924592, 498.57532071442125, 495.8379526063045); + TestUtils.AreEqual(-a1, r1); + + double3 a2 = double3(-270.85946787095605, 268.23670662019254, -180.60051473444349); + double3 r2 = double3(270.85946787095605, -268.23670662019254, 180.60051473444349); + TestUtils.AreEqual(-a2, r2); + + double3 a3 = double3(223.38126312167446, -395.68154186554324, -349.14948885010062); + double3 r3 = double3(-223.38126312167446, 395.68154186554324, 349.14948885010062); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double3_operator_prefix_inc() + { + double3 a0 = double3(-99.79557113526181, 458.74185082816609, 96.179026886904126); + double3 r0 = double3(-98.79557113526181, 459.74185082816609, 97.179026886904126); + TestUtils.AreEqual(++a0, r0); + + double3 a1 = double3(-48.552469514567633, -299.23014583216525, -323.61485853959567); + double3 r1 = double3(-47.552469514567633, -298.23014583216525, -322.61485853959567); + TestUtils.AreEqual(++a1, r1); + + double3 a2 = double3(-456.89028832730384, -305.58477344437722, 64.0964734852763); + double3 r2 = double3(-455.89028832730384, -304.58477344437722, 65.0964734852763); + TestUtils.AreEqual(++a2, r2); + + double3 a3 = double3(148.67930967578627, -115.5592263283018, -326.87781992874937); + double3 r3 = double3(149.67930967578627, -114.5592263283018, -325.87781992874937); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double3_operator_postfix_inc() + { + double3 a0 = double3(322.94356623429042, 472.05246542024076, 203.48761925636211); + double3 r0 = double3(322.94356623429042, 472.05246542024076, 203.48761925636211); + TestUtils.AreEqual(a0++, r0); + + double3 a1 = double3(-49.854570650427888, 455.33662459595905, 271.45466840986842); + double3 r1 = double3(-49.854570650427888, 455.33662459595905, 271.45466840986842); + TestUtils.AreEqual(a1++, r1); + + double3 a2 = double3(55.736877228942149, -174.17301925186672, -427.40105100506969); + double3 r2 = double3(55.736877228942149, -174.17301925186672, -427.40105100506969); + TestUtils.AreEqual(a2++, r2); + + double3 a3 = double3(215.11022744658874, -333.05045262586816, 241.46487509527469); + double3 r3 = double3(215.11022744658874, -333.05045262586816, 241.46487509527469); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double3_operator_prefix_dec() + { + double3 a0 = double3(-416.20121712992022, -96.637880131899351, -50.145671629414721); + double3 r0 = double3(-417.20121712992022, -97.637880131899351, -51.145671629414721); + TestUtils.AreEqual(--a0, r0); + + double3 a1 = double3(-207.31644759295341, -304.40081920493435, 337.96895734312432); + double3 r1 = double3(-208.31644759295341, -305.40081920493435, 336.96895734312432); + TestUtils.AreEqual(--a1, r1); + + double3 a2 = double3(246.08898293510492, -227.44280134301761, 298.28480710568135); + double3 r2 = double3(245.08898293510492, -228.44280134301761, 297.28480710568135); + TestUtils.AreEqual(--a2, r2); + + double3 a3 = double3(326.50782338087811, -478.03137253133178, -326.45297852459038); + double3 r3 = double3(325.50782338087811, -479.03137253133178, -327.45297852459038); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double3_operator_postfix_dec() + { + double3 a0 = double3(-376.59242719066907, 16.969734438215255, -0.25066399585949739); + double3 r0 = double3(-376.59242719066907, 16.969734438215255, -0.25066399585949739); + TestUtils.AreEqual(a0--, r0); + + double3 a1 = double3(-202.32328734282555, 47.856652520530247, -281.11170376516492); + double3 r1 = double3(-202.32328734282555, 47.856652520530247, -281.11170376516492); + TestUtils.AreEqual(a1--, r1); + + double3 a2 = double3(-262.062590959511, 450.12809559801974, -129.23265582380475); + double3 r2 = double3(-262.062590959511, 450.12809559801974, -129.23265582380475); + TestUtils.AreEqual(a2--, r2); + + double3 a3 = double3(-332.15495768755443, 205.46112570793423, -230.22777878038016); + double3 r3 = double3(-332.15495768755443, 205.46112570793423, -230.22777878038016); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void double3_shuffle_result_1() + { + double3 a = double3(0, 1, 2); + double3 b = double3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (5)); + } + + [TestCompiler] + public static void double3_shuffle_result_2() + { + double3 a = double3(0, 1, 2); + double3 b = double3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), double2(4, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), double2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), double2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), double2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY), double2(5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), double2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftZ), double2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), double2(5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), double2(4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), double2(4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), double2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY), double2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), double2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), double2(1, 2)); + } + + [TestCompiler] + public static void double3_shuffle_result_3() + { + double3 a = double3(0, 1, 2); + double3 b = double3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.RightX), double3(1, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), double3(4, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX), double3(2, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY), double3(4, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.LeftZ), double3(5, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.LeftY), double3(2, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightX), double3(2, 4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftY, ShuffleComponent.RightZ), double3(2, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ), double3(4, 4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), double3(4, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double3(5, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightX), double3(5, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightZ), double3(4, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightY), double3(2, 3, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), double3(4, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightZ), double3(4, 0, 5)); + } + + [TestCompiler] + public static void double3_shuffle_result_4() + { + double3 a = double3(0, 1, 2); + double3 b = double3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY), double4(1, 2, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightY), double4(4, 2, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.LeftY), double4(4, 4, 5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double4(3, 3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), double4(4, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightZ), double4(3, 4, 3, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightZ), double4(1, 5, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), double4(4, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightZ, ShuffleComponent.LeftZ, ShuffleComponent.LeftX), double4(3, 5, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), double4(4, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double4(0, 2, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.RightZ), double4(1, 4, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), double4(2, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), double4(3, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(5, 3, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(2, 5, 0, 4)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3.gen.cs.meta new file mode 100644 index 0000000..1d5e306 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 617e00812628df941a5b85ca46e4ca9d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x2.gen.cs new file mode 100644 index 0000000..8022b75 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x2.gen.cs @@ -0,0 +1,943 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble3x2 + { + [TestCompiler] + public static void double3x2_zero() + { + TestUtils.AreEqual(double3x2.zero.c0.x, 0.0); + TestUtils.AreEqual(double3x2.zero.c0.y, 0.0); + TestUtils.AreEqual(double3x2.zero.c0.z, 0.0); + TestUtils.AreEqual(double3x2.zero.c1.x, 0.0); + TestUtils.AreEqual(double3x2.zero.c1.y, 0.0); + TestUtils.AreEqual(double3x2.zero.c1.z, 0.0); + } + + [TestCompiler] + public static void double3x2_operator_equal_wide_wide() + { + double3x2 a0 = double3x2(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808); + double3x2 b0 = double3x2(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x2 a1 = double3x2(177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double3x2 b1 = double3x2(-72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x2 a2 = double3x2(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297); + double3x2 b2 = double3x2(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x2 a3 = double3x2(269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double3x2 b3 = double3x2(89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_equal_wide_scalar() + { + double3x2 a0 = double3x2(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186); + double b0 = (-155.8157547245807); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x2 a1 = double3x2(314.67125597348024, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415, -191.19075521789063); + double b1 = (386.36515325417986); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x2 a2 = double3x2(186.84520086406042, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046, 386.377503336583); + double b2 = (-232.89569221851218); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x2 a3 = double3x2(-296.70189084517858, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858, 110.50128345866744); + double b3 = (-309.11719741910565); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double3x2 b0 = double3x2(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (428.31192394174263); + double3x2 b1 = double3x2(-489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (316.66882315122928); + double3x2 b2 = double3x2(390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619, -257.01294601010761); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-245.05497538533757); + double3x2 b3 = double3x2(326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192, -336.61242524562982); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_not_equal_wide_wide() + { + double3x2 a0 = double3x2(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466); + double3x2 b0 = double3x2(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x2 a1 = double3x2(366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double3x2 b1 = double3x2(-457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x2 a2 = double3x2(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965); + double3x2 b2 = double3x2(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x2 a3 = double3x2(62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double3x2 b3 = double3x2(-184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_not_equal_wide_scalar() + { + double3x2 a0 = double3x2(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026); + double b0 = (-393.41354173860213); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x2 a1 = double3x2(-58.923273352404692, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059, 501.8990516615562); + double b1 = (-398.17684835855704); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x2 a2 = double3x2(-134.34545642433011, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471, -0.44992661497087738); + double b2 = (458.40042302496749); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x2 a3 = double3x2(350.46143047439932, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778, -80.932258882062627); + double b3 = (202.22103724359579); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double3x2 b0 = double3x2(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-338.10012475498957); + double3x2 b1 = double3x2(-152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (489.74075697816011); + double3x2 b2 = double3x2(270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558, 358.74720900074919); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-15.414077527548216); + double3x2 b3 = double3x2(-342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936, -239.231014124691); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_wide_wide() + { + double3x2 a0 = double3x2(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042); + double3x2 b0 = double3x2(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008); + bool3x2 r0 = bool3x2(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x2 a1 = double3x2(3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double3x2 b1 = double3x2(231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x2 a2 = double3x2(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991); + double3x2 b2 = double3x2(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978); + bool3x2 r2 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double3x2 a3 = double3x2(-140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double3x2 b3 = double3x2(7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool3x2 r3 = bool3x2(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_wide_scalar() + { + double3x2 a0 = double3x2(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207); + double b0 = (199.06751808853244); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x2 a1 = double3x2(282.96659601990439, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413, -68.088202269788951); + double b1 = (258.27909362422258); + bool3x2 r1 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x2 a2 = double3x2(12.788020378345664, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019, -48.920521520506838); + double b2 = (-66.703050406045747); + bool3x2 r2 = bool3x2(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double3x2 a3 = double3x2(359.60440914686978, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904, -98.315578744893685); + double b3 = (-8.15008759878117); + bool3x2 r3 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double3x2 b0 = double3x2(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-299.74430932651478); + double3x2 b1 = double3x2(31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (488.74553679337055); + double3x2 b2 = double3x2(-221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206, -340.85755721705851); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-95.1117256130612); + double3x2 b3 = double3x2(15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863, 122.16476803746298); + bool3x2 r3 = bool3x2(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_wide_wide() + { + double3x2 a0 = double3x2(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504); + double3x2 b0 = double3x2(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992); + bool3x2 r0 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3x2 a1 = double3x2(-396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double3x2 b1 = double3x2(-391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double3x2 a2 = double3x2(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068); + double3x2 b2 = double3x2(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229); + bool3x2 r2 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x2 a3 = double3x2(-345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double3x2 b3 = double3x2(226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_wide_scalar() + { + double3x2 a0 = double3x2(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759); + double b0 = (-302.81693877969724); + bool3x2 r0 = bool3x2(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3x2 a1 = double3x2(173.57509740329124, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456, -172.51816066192379); + double b1 = (69.269281181166548); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double3x2 a2 = double3x2(-18.149639853346002, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474, -481.47807930478734); + double b2 = (-236.41493498367021); + bool3x2 r2 = bool3x2(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x2 a3 = double3x2(185.59438547193747, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845, -7.3478887115362568); + double b3 = (33.294723764664809); + bool3x2 r3 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double3x2 b0 = double3x2(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (176.40926154721956); + double3x2 b1 = double3x2(-140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987); + bool3x2 r1 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-102.58784227379965); + double3x2 b2 = double3x2(392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377, 374.04800503982608); + bool3x2 r2 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-368.99763958947619); + double3x2 b3 = double3x2(-210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956, -361.52483360912879); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_equal_wide_wide() + { + double3x2 a0 = double3x2(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386); + double3x2 b0 = double3x2(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463); + bool3x2 r0 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x2 a1 = double3x2(294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double3x2 b1 = double3x2(74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool3x2 r1 = bool3x2(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x2 a2 = double3x2(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224); + double3x2 b2 = double3x2(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419); + bool3x2 r2 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x2 a3 = double3x2(307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double3x2 b3 = double3x2(376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_equal_wide_scalar() + { + double3x2 a0 = double3x2(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241); + double b0 = (292.92427148154206); + bool3x2 r0 = bool3x2(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x2 a1 = double3x2(-410.87006945669191, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294, -182.9388249772316); + double b1 = (-483.90265320423185); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x2 a2 = double3x2(349.25012962392077, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695, -43.874866744445114); + double b2 = (485.31159304329731); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x2 a3 = double3x2(457.38574549992836, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862, 87.9161055497434); + double b3 = (-77.638293064030961); + bool3x2 r3 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double3x2 b0 = double3x2(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (288.544332877055); + double3x2 b1 = double3x2(304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419); + bool3x2 r1 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-488.6858386884843); + double3x2 b2 = double3x2(-480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638, -55.2435333986038); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-455.80483147865385); + double3x2 b3 = double3x2(131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588, -116.01998215355911); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_equal_wide_wide() + { + double3x2 a0 = double3x2(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348); + double3x2 b0 = double3x2(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436); + bool3x2 r0 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x2 a1 = double3x2(-122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double3x2 b1 = double3x2(-373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x2 a2 = double3x2(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916); + double3x2 b2 = double3x2(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937); + bool3x2 r2 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x2 a3 = double3x2(-156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double3x2 b3 = double3x2(254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool3x2 r3 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_equal_wide_scalar() + { + double3x2 a0 = double3x2(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835); + double b0 = (189.20512804258851); + bool3x2 r0 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x2 a1 = double3x2(53.815095211293169, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345, 164.77259667439978); + double b1 = (-123.33294373533357); + bool3x2 r1 = bool3x2(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x2 a2 = double3x2(-287.00733889593153, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411, 396.39213938098032); + double b2 = (355.83704559683667); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x2 a3 = double3x2(332.66542044871744, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234, 71.176674637560154); + double b3 = (243.76141392614761); + bool3x2 r3 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double3x2 b0 = double3x2(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-455.61258027312); + double3x2 b1 = double3x2(276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-74.560638224035813); + double3x2 b2 = double3x2(-367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646, -264.31016242891093); + bool3x2 r2 = bool3x2(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (243.11378275748052); + double3x2 b3 = double3x2(-22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009, -400.47050280145857); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_add_wide_wide() + { + double3x2 a0 = double3x2(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138); + double3x2 b0 = double3x2(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126); + double3x2 r0 = double3x2(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304); + TestUtils.AreEqual(a0 + b0, r0); + + double3x2 a1 = double3x2(-470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double3x2 b1 = double3x2(267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double3x2 r1 = double3x2(-203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a1 + b1, r1); + + double3x2 a2 = double3x2(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794); + double3x2 b2 = double3x2(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041); + double3x2 r2 = double3x2(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018); + TestUtils.AreEqual(a2 + b2, r2); + + double3x2 a3 = double3x2(-36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double3x2 b3 = double3x2(-141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double3x2 r3 = double3x2(-178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_add_wide_scalar() + { + double3x2 a0 = double3x2(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904); + double b0 = (500.99725913489112); + double3x2 r0 = double3x2(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208); + TestUtils.AreEqual(a0 + b0, r0); + + double3x2 a1 = double3x2(-2.7912590516690443, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697, -2.6649749291431704); + double b1 = (-478.41478489265535); + double3x2 r1 = double3x2(-481.20604394432439, -35.299532429920305, -210.32255897779135, -437.09376355497807, -949.67086073275232, -481.07975982179852); + TestUtils.AreEqual(a1 + b1, r1); + + double3x2 a2 = double3x2(78.985822952811532, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206, -197.80076584490052); + double b2 = (202.14799151297098); + double3x2 r2 = double3x2(281.13381446578251, 513.87344670382947, 212.49384651542357, 50.903532528739163, 557.380758545073, 4.34722566807045); + TestUtils.AreEqual(a2 + b2, r2); + + double3x2 a3 = double3x2(255.95526587961024, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746, -160.5840962680914); + double b3 = (244.14709793969394); + double3x2 r3 = double3x2(500.10236381930417, 62.52052834561124, 241.69217120934849, 545.04775263417878, 7.6551489865664735, 83.563001671602535); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double3x2 b0 = double3x2(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553); + double3x2 r0 = double3x2(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (180.31809123806568); + double3x2 b1 = double3x2(337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915); + double3x2 r1 = double3x2(517.89746022499048, 143.26307637210147, 411.12307138513916, 40.143757838822808, 198.34228715595896, 41.703732986796524); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (26.904163611542458); + double3x2 b2 = double3x2(-374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813, -504.91612386373623); + double3x2 r2 = double3x2(-347.63341872190756, 181.37176426750216, 295.28798403185226, -164.05885894785587, 215.52141724132059, -478.01196025219377); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (20.454013595568995); + double3x2 b3 = double3x2(197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923, 480.88455770950975); + double3x2 r3 = double3x2(218.3993588510898, 271.86595834040361, -400.63636178552929, 131.89941412392045, -52.814869428432928, 501.33857130507874); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_sub_wide_wide() + { + double3x2 a0 = double3x2(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782); + double3x2 b0 = double3x2(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723); + double3x2 r0 = double3x2(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059); + TestUtils.AreEqual(a0 - b0, r0); + + double3x2 a1 = double3x2(146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double3x2 b1 = double3x2(-125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double3x2 r1 = double3x2(272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a1 - b1, r1); + + double3x2 a2 = double3x2(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111); + double3x2 b2 = double3x2(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272); + double3x2 r2 = double3x2(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384); + TestUtils.AreEqual(a2 - b2, r2); + + double3x2 a3 = double3x2(-427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double3x2 b3 = double3x2(-80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double3x2 r3 = double3x2(-347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_sub_wide_scalar() + { + double3x2 a0 = double3x2(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198); + double b0 = (-291.59041442144212); + double3x2 r0 = double3x2(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441); + TestUtils.AreEqual(a0 - b0, r0); + + double3x2 a1 = double3x2(204.35834441164434, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252, -246.28726660753006); + double b1 = (180.26971420099483); + double3x2 r1 = double3x2(24.088630210649512, -558.19540765052454, -650.53175718082662, 220.26520548586973, 281.2378507970077, -426.55698080852488); + TestUtils.AreEqual(a1 - b1, r1); + + double3x2 a2 = double3x2(21.605312595891405, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074, 342.87457887403411); + double b2 = (246.35072171238755); + double3x2 r2 = double3x2(-224.74540911649615, -367.77808349569244, -369.06914585133512, -369.28944271117894, 113.80023246342319, 96.523857161646561); + TestUtils.AreEqual(a2 - b2, r2); + + double3x2 a3 = double3x2(18.929827460520869, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725, -121.16305619159857); + double b3 = (164.60235245740148); + double3x2 r3 = double3x2(-145.67252499688061, -67.558663876521678, 321.31262889565562, -370.36000936588272, 88.840874713305766, -285.76540864900005); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double3x2 b0 = double3x2(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623); + double3x2 r0 = double3x2(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-64.232989102710519); + double3x2 b1 = double3x2(-66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581); + double3x2 r1 = double3x2(1.8087410935241337, -405.43791742131015, 321.5420672006635, -139.62773567979588, -419.17670555560693, -233.36440431017633); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (88.216608326982964); + double3x2 b2 = double3x2(1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228, 4.0655586738445209); + double3x2 r2 = double3x2(86.481601755358952, -34.321431652792512, 353.1616360401556, 139.05378872670872, 435.86693116457525, 84.151049653138443); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-79.095424450512724); + double3x2 b3 = double3x2(354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867, 432.18467422583353); + double3x2 r3 = double3x2(-433.45376368679752, 213.39708719653868, -25.886441242828255, 167.25217588583575, -378.29876583549139, -511.28009867634626); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mul_wide_wide() + { + double3x2 a0 = double3x2(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198); + double3x2 b0 = double3x2(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329); + double3x2 r0 = double3x2(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115); + TestUtils.AreEqual(a0 * b0, r0); + + double3x2 a1 = double3x2(494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double3x2 b1 = double3x2(207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double3x2 r1 = double3x2(102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a1 * b1, r1); + + double3x2 a2 = double3x2(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284); + double3x2 b2 = double3x2(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025); + double3x2 r2 = double3x2(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295); + TestUtils.AreEqual(a2 * b2, r2); + + double3x2 a3 = double3x2(-104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double3x2 b3 = double3x2(254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double3x2 r3 = double3x2(-26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mul_wide_scalar() + { + double3x2 a0 = double3x2(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672); + double b0 = (192.21119055161773); + double3x2 r0 = double3x2(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103); + TestUtils.AreEqual(a0 * b0, r0); + + double3x2 a1 = double3x2(-477.31047104173825, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794, 355.30832998608628); + double b1 = (-438.272912467957); + double3x2 r1 = double3x2(209192.25029491508, 20480.133450173231, 104486.45415100912, -184987.32383324357, 21402.986338745359, -155722.01660712797); + TestUtils.AreEqual(a1 * b1, r1); + + double3x2 a2 = double3x2(119.35660391643489, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636, -130.47412949915702); + double b2 = (-196.995807977857); + double3x2 r2 = double3x2(-23512.750626011144, -19352.081105929705, 64132.410175310673, -10625.426688800102, 17227.4772128218, 25702.856560893983); + TestUtils.AreEqual(a2 * b2, r2); + + double3x2 a3 = double3x2(-222.59457145565869, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565, 257.54154241156834); + double b3 = (126.01503211167415); + double3x2 r3 = double3x2(-28050.262069869175, 36967.906886485951, 21974.747958150911, -41222.047013462026, 7136.1208132457368, 32454.105737083875); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double3x2 b0 = double3x2(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685); + double3x2 r0 = double3x2(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (159.74810583877752); + double3x2 b1 = double3x2(-351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058); + double3x2 r1 = double3x2(-56202.933657940659, 78564.37031116907, 7971.75496274279, 67807.091352347023, 25578.559377205791, -63258.985494075321); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (125.20168858636248); + double3x2 b2 = double3x2(-265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444, 356.51773302467438); + double3x2 r2 = double3x2(-33180.428155004964, 39395.4747681864, -36648.039210468662, -4723.8445210931741, 20703.629247854176, 44636.6221856712); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-188.81332906932261); + double3x2 b3 = double3x2(504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903, 53.7483275186961); + double3x2 r3 = double3x2(-95334.818889692615, -7660.55586853052, 39041.896096852419, 11631.407179777047, -22463.4218559328, -10148.400650713294); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_div_wide_wide() + { + double3x2 a0 = double3x2(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683); + double3x2 b0 = double3x2(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326); + double3x2 r0 = double3x2(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847); + TestUtils.AreEqual(a0 / b0, r0); + + double3x2 a1 = double3x2(360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double3x2 b1 = double3x2(-93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double3x2 r1 = double3x2(-3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a1 / b1, r1); + + double3x2 a2 = double3x2(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744); + double3x2 b2 = double3x2(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808); + double3x2 r2 = double3x2(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456); + TestUtils.AreEqual(a2 / b2, r2); + + double3x2 a3 = double3x2(-204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double3x2 b3 = double3x2(404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double3x2 r3 = double3x2(-0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_div_wide_scalar() + { + double3x2 a0 = double3x2(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322); + double b0 = (-60.024377612408443); + double3x2 r0 = double3x2(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117); + TestUtils.AreEqual(a0 / b0, r0); + + double3x2 a1 = double3x2(131.52659160062979, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815, 504.37224626185946); + double b1 = (-261.88639200007844); + double3x2 r1 = double3x2(-0.50222766672271535, 1.332347979198452, 1.0521305813925388, -0.80400482109055549, -1.0983480183397309, -1.9259200236020984); + TestUtils.AreEqual(a1 / b1, r1); + + double3x2 a2 = double3x2(491.78708600056689, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521, -502.64601611655485); + double b2 = (-26.63160015392657); + double3x2 r2 = double3x2(-18.466298801353012, 9.50887934987384, -10.247041837851679, -6.6874003853160646, 17.305591389056794, 18.874044864421883); + TestUtils.AreEqual(a2 / b2, r2); + + double3x2 a3 = double3x2(-84.324793139623864, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464, 81.646461763254592); + double b3 = (-174.69034036187935); + double3x2 r3 = double3x2(0.48271010844069023, -0.47968484747436224, -1.1279505580908942, -1.815602766558, -2.309155257105167, -0.4673782282072384); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double3x2 b0 = double3x2(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989); + double3x2 r0 = double3x2(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (333.664472020075); + double3x2 b1 = double3x2(38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057); + double3x2 r1 = double3x2(8.7138962622678129, -0.70545190258583745, 1.7357552397511267, -1.6658496594098089, -0.68069576158811729, -1.5805798319498852); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-322.85234108700058); + double3x2 b2 = double3x2(-137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729, -488.647160996053); + double3x2 r2 = double3x2(2.3397591167916914, -3.8284519565421338, -0.909280682306641, -1.1679468918067049, 0.8429828692281206, 0.660706470552089); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (344.84603826368505); + double3x2 b3 = double3x2(168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753, -344.19428865248074); + double3x2 r3 = double3x2(2.0422613456805525, -7.8027253618582941, 0.81998682921394372, -1.9636456657223711, -37.399650699527896, -1.0018935514989395); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mod_wide_wide() + { + double3x2 a0 = double3x2(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062); + double3x2 b0 = double3x2(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452); + double3x2 r0 = double3x2(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062); + TestUtils.AreEqual(a0 % b0, r0); + + double3x2 a1 = double3x2(-101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double3x2 b1 = double3x2(487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double3x2 r1 = double3x2(-101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a1 % b1, r1); + + double3x2 a2 = double3x2(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692); + double3x2 b2 = double3x2(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733); + double3x2 r2 = double3x2(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692); + TestUtils.AreEqual(a2 % b2, r2); + + double3x2 a3 = double3x2(142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double3x2 b3 = double3x2(4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double3x2 r3 = double3x2(1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mod_wide_scalar() + { + double3x2 a0 = double3x2(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476); + double b0 = (-90.499235433758827); + double3x2 r0 = double3x2(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862); + TestUtils.AreEqual(a0 % b0, r0); + + double3x2 a1 = double3x2(-450.80766245853511, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309, -172.33886607565864); + double b1 = (186.09479698263794); + double3x2 r1 = double3x2(-78.618068493259216, -84.473635951277629, -132.6866865775952, 61.265096454538934, -54.6001856581309, -172.33886607565864); + TestUtils.AreEqual(a1 % b1, r1); + + double3x2 a2 = double3x2(-429.71466728193434, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215, -75.356399809641971); + double b2 = (222.36186109406958); + double3x2 r2 = double3x2(-207.35280618786476, 5.796394112425105, 32.148967757890432, -210.73183594026227, -203.08261284748215, -75.356399809641971); + TestUtils.AreEqual(a2 % b2, r2); + + double3x2 a3 = double3x2(252.28909385031511, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949, 335.99997655302286); + double b3 = (-69.403906139267576); + double3x2 r3 = double3x2(44.077375432512383, 5.3372299696026175, -1.44480347700636, 67.1271541431206, -54.377722050239186, 58.384351995952557); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double3x2 b0 = double3x2(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881); + double3x2 r0 = double3x2(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (397.04482263934096); + double3x2 b1 = double3x2(-393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241); + double3x2 r1 = double3x2(3.1541752829934921, 24.977728378482993, 196.03252467700872, 14.777403599944591, 138.09335381262633, 76.094095742373725); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (469.3235559264773); + double3x2 b2 = double3x2(-34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683, 4.506670715523228); + double3x2 r2 = double3x2(16.806750782209917, 99.650487230927979, 94.529302164227374, 73.705398593892085, 109.04497580837682, 0.62980151206159007); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-111.40195732535886); + double3x2 b3 = double3x2(391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987, -433.52306505363578); + double3x2 r3 = double3x2(-111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_plus() + { + double3x2 a0 = double3x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431); + double3x2 r0 = double3x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431); + TestUtils.AreEqual(+a0, r0); + + double3x2 a1 = double3x2(190.32466015141677, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021); + double3x2 r1 = double3x2(190.32466015141677, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021); + TestUtils.AreEqual(+a1, r1); + + double3x2 a2 = double3x2(234.77393042052813, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724); + double3x2 r2 = double3x2(234.77393042052813, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724); + TestUtils.AreEqual(+a2, r2); + + double3x2 a3 = double3x2(301.78512229667285, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195); + double3x2 r3 = double3x2(301.78512229667285, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double3x2_operator_neg() + { + double3x2 a0 = double3x2(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125); + double3x2 r0 = double3x2(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125); + TestUtils.AreEqual(-a0, r0); + + double3x2 a1 = double3x2(-495.8379526063045, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446, -410.39206070936848); + double3x2 r1 = double3x2(495.8379526063045, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446, 410.39206070936848); + TestUtils.AreEqual(-a1, r1); + + double3x2 a2 = double3x2(-395.68154186554324, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735, 48.290685914592245); + double3x2 r2 = double3x2(395.68154186554324, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735, -48.290685914592245); + TestUtils.AreEqual(-a2, r2); + + double3x2 a3 = double3x2(88.7237785275671, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838, 196.38759169186824); + double3x2 r3 = double3x2(-88.7237785275671, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838, -196.38759169186824); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double3x2_operator_prefix_inc() + { + double3x2 a0 = double3x2(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525); + double3x2 r0 = double3x2(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525); + TestUtils.AreEqual(++a0, r0); + + double3x2 a1 = double3x2(-323.61485853959567, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627, 363.2849182390072); + double3x2 r1 = double3x2(-322.61485853959567, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627, 364.2849182390072); + TestUtils.AreEqual(++a1, r1); + + double3x2 a2 = double3x2(-115.5592263283018, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619, 261.62557304167444); + double3x2 r2 = double3x2(-114.5592263283018, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619, 262.62557304167444); + TestUtils.AreEqual(++a2, r2); + + double3x2 a3 = double3x2(155.03081877298223, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178, -264.38006246480165); + double3x2 r3 = double3x2(156.03081877298223, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178, -263.38006246480165); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double3x2_operator_postfix_inc() + { + double3x2 a0 = double3x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905); + double3x2 r0 = double3x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905); + TestUtils.AreEqual(a0++, r0); + + double3x2 a1 = double3x2(271.45466840986842, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729); + double3x2 r1 = double3x2(271.45466840986842, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729); + TestUtils.AreEqual(a1++, r1); + + double3x2 a2 = double3x2(-333.05045262586816, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769); + double3x2 r2 = double3x2(-333.05045262586816, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769); + TestUtils.AreEqual(a2++, r2); + + double3x2 a3 = double3x2(-449.92732045144186, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159); + double3x2 r3 = double3x2(-449.92732045144186, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double3x2_operator_prefix_dec() + { + double3x2 a0 = double3x2(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435); + double3x2 r0 = double3x2(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435); + TestUtils.AreEqual(--a0, r0); + + double3x2 a1 = double3x2(337.96895734312432, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811, 400.720900006928); + double3x2 r1 = double3x2(336.96895734312432, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811, 399.720900006928); + TestUtils.AreEqual(--a1, r1); + + double3x2 a2 = double3x2(-478.03137253133178, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003, -79.635249413380052); + double3x2 r2 = double3x2(-479.03137253133178, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003, -80.635249413380052); + TestUtils.AreEqual(--a2, r2); + + double3x2 a3 = double3x2(-131.0041454448384, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351, 181.47510703908051); + double3x2 r3 = double3x2(-132.0041454448384, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351, 180.47510703908051); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double3x2_operator_postfix_dec() + { + double3x2 a0 = double3x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247); + double3x2 r0 = double3x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247); + TestUtils.AreEqual(a0--, r0); + + double3x2 a1 = double3x2(-281.11170376516492, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819); + double3x2 r1 = double3x2(-281.11170376516492, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819); + TestUtils.AreEqual(a1--, r1); + + double3x2 a2 = double3x2(205.46112570793423, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457); + double3x2 r2 = double3x2(205.46112570793423, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457); + TestUtils.AreEqual(a2--, r2); + + double3x2 a3 = double3x2(-396.30206627226528, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358); + double3x2 r3 = double3x2(-396.30206627226528, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x2.gen.cs.meta new file mode 100644 index 0000000..26df49c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f95b40a83bedc474aa2badff08c0b04b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x3.gen.cs new file mode 100644 index 0000000..6c21c77 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x3.gen.cs @@ -0,0 +1,960 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble3x3 + { + [TestCompiler] + public static void double3x3_zero() + { + TestUtils.AreEqual(double3x3.zero.c0.x, 0.0); + TestUtils.AreEqual(double3x3.zero.c0.y, 0.0); + TestUtils.AreEqual(double3x3.zero.c0.z, 0.0); + TestUtils.AreEqual(double3x3.zero.c1.x, 0.0); + TestUtils.AreEqual(double3x3.zero.c1.y, 0.0); + TestUtils.AreEqual(double3x3.zero.c1.z, 0.0); + TestUtils.AreEqual(double3x3.zero.c2.x, 0.0); + TestUtils.AreEqual(double3x3.zero.c2.y, 0.0); + TestUtils.AreEqual(double3x3.zero.c2.z, 0.0); + } + + [TestCompiler] + public static void double3x3_identity() + { + TestUtils.AreEqual(double3x3.identity.c0.x, 1.0); + TestUtils.AreEqual(double3x3.identity.c0.y, 0.0); + TestUtils.AreEqual(double3x3.identity.c0.z, 0.0); + TestUtils.AreEqual(double3x3.identity.c1.x, 0.0); + TestUtils.AreEqual(double3x3.identity.c1.y, 1.0); + TestUtils.AreEqual(double3x3.identity.c1.z, 0.0); + TestUtils.AreEqual(double3x3.identity.c2.x, 0.0); + TestUtils.AreEqual(double3x3.identity.c2.y, 0.0); + TestUtils.AreEqual(double3x3.identity.c2.z, 1.0); + } + + [TestCompiler] + public static void double3x3_operator_equal_wide_wide() + { + double3x3 a0 = double3x3(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564, 168.1544516869609); + double3x3 b0 = double3x3(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841, 194.6783255053117); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x3 a1 = double3x3(350.72955982327903, 367.17843668869625, 46.941470406456574, 188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297); + double3x3 b1 = double3x3(471.6448635867074, -404.04466719368691, -144.69675476136467, -494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x3 a2 = double3x3(269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034, -22.98943401453522, 487.26083802024868, -419.73195596213077); + double3x3 b2 = double3x3(89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218, -174.08180888652885, 395.10115379612012, 350.33930723291792); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x3 a3 = double3x3(337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868, -68.728424342688356, 485.76997803420295, 413.16974969076443, -418.26928992675118); + double3x3 b3 = double3x3(-243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895, -468.3309554850361, 429.49572797748056, 477.38919781026857, -433.42541071093893); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_equal_wide_scalar() + { + double3x3 a0 = double3x3(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986, 290.04894007837811); + double b0 = (-155.8157547245807); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x3 a1 = double3x3(-132.63519460178691, -69.683271678948415, -191.19075521789063, 186.84520086406042, -232.89569221851218, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046); + double b1 = (-65.667489797653388); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x3 a2 = double3x3(386.377503336583, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858, 110.50128345866744, -390.10359329269437, 36.574313896044259); + double b2 = (-296.70189084517858); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x3 a3 = double3x3(-427.54144235492754, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218, -429.87391849508225, -275.15694750247383, -56.332365300661138, -95.835959717554942); + double b3 = (-268.17085111707956); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double3x3 b0 = double3x3(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-30.865948453017495); + double3x3 b1 = double3x3(-362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-257.01294601010761); + double3x3 b2 = double3x3(-245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192, -336.61242524562982, 365.10812752559229, -405.39083952707745); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-473.99549959320365); + double3x3 b3 = double3x3(298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834, 39.342111844263059, -350.40371744260369, -482.71723221368961, 239.96540772168214); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_not_equal_wide_wide() + { + double3x3 a0 = double3x3(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018, 332.426219856565); + double3x3 b0 = double3x3(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171, 3.024243117787023); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x3 a1 = double3x3(397.11323160543725, -431.3749584776233, 489.01079319837072, 398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965); + double3x3 b1 = double3x3(155.81276352508587, -19.839918384253963, -6.0169332055453992, -406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x3 a2 = double3x3(62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111, -72.206820760018559, 444.74925228801987, 238.81779991780309); + double3x3 b2 = double3x3(-184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584, 415.07170005099465, -467.72613189542949, -433.78467508488552); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x3 a3 = double3x3(365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391, -506.82837772128562, 245.47704779611763, -173.57105811572217, 390.33854669627669); + double3x3 b3 = double3x3(-212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739, 420.21507926481547, -239.17604529074208, -99.079094694498508, 4.4760239145141441); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_not_equal_wide_scalar() + { + double3x3 a0 = double3x3(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704, 492.20105361016522); + double b0 = (-393.41354173860213); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x3 a1 = double3x3(-165.24150879925185, -380.24326222960059, 501.8990516615562, -134.34545642433011, 458.40042302496749, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471); + double b1 = (270.34102333259818); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x3 a2 = double3x3(-0.44992661497087738, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778, -80.932258882062627, -328.58774844211888, -506.49033260088896); + double b2 = (350.46143047439932); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x3 a3 = double3x3(449.34814640942409, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792, 317.28609314434516, 401.93959612489664, 210.98484502126689, -147.09631616766393); + double b3 = (210.77098784724762); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double3x3 b0 = double3x3(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (209.43931422449612); + double3x3 b1 = double3x3(50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (358.74720900074919); + double3x3 b2 = double3x3(-15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936, -239.231014124691, 411.38655800902586, 139.76932460617707); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (334.52206031164246); + double3x3 b3 = double3x3(-223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027, 306.1256321902041, -178.33037885386977, 382.14199203166277, -340.86559478420094); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_wide_wide() + { + double3x3 a0 = double3x3(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651, -69.369597705718888); + double3x3 b0 = double3x3(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158, 473.22488496882136); + bool3x3 r0 = bool3x3(false, true, false, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x3 a1 = double3x3(-135.66796762108243, -194.78736576567746, -33.473868147225062, -19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991); + double3x3 b1 = double3x3(15.891647107848712, 270.04990614114786, 490.91400240869916, -185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978); + bool3x3 r1 = bool3x3(true, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x3 a2 = double3x3(-140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691, 269.10777128353141, 462.98824737173891, 223.8841808884797); + double3x3 b2 = double3x3(7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914, -382.31586259525079, 251.53517758638372, 143.17396957388803); + bool3x3 r2 = bool3x3(true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double3x3 a3 = double3x3(-287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373, -316.13839664875456, -417.52215905558421, 441.6434454590285, -191.95062908527939); + double3x3 b3 = double3x3(293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766, -114.55647259324627, 441.42973276666817, -113.33366709264629, 435.622928583819); + bool3x3 r3 = bool3x3(true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_wide_scalar() + { + double3x3 a0 = double3x3(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258, -111.41316061439608); + double b0 = (199.06751808853244); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x3 a1 = double3x3(-288.08113278452356, -361.64292042406413, -68.088202269788951, 12.788020378345664, -66.703050406045747, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019); + double b1 = (82.665427008022334); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x3 a2 = double3x3(-48.920521520506838, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904, -98.315578744893685, 300.41017617863145, 297.92523850962766); + double b2 = (359.60440914686978); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double3x3 a3 = double3x3(-492.108162870681, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025, -296.37211884948056, 272.4883617239484, 360.20793097103387, 389.7274403002707); + double b3 = (-395.80724806143309); + bool3x3 r3 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double3x3 b0 = double3x3(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (13.684679276163024); + double3x3 b1 = double3x3(-458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-340.85755721705851); + double3x3 b2 = double3x3(-95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863, 122.16476803746298, 96.75540046429046, -228.90633808304852); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-143.95269662884652); + double3x3 b3 = double3x3(-230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693, 190.57215914063727, 108.25831871305513, 132.55076056930739, -431.51522155828553); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_wide_wide() + { + double3x3 a0 = double3x3(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556, 489.13989733585151); + double3x3 b0 = double3x3(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207, -77.674873149802409); + bool3x3 r0 = bool3x3(true, true, false, true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3x3 a1 = double3x3(51.91890885863404, 155.38475544535777, -135.63165027258526, -425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068); + double3x3 b1 = double3x3(-46.5841996886694, -415.37701888353422, 71.466978344818131, -206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double3x3 a2 = double3x3(-345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678, 105.53519086983761, -170.92529280992471, 26.98023964230913); + double3x3 b2 = double3x3(226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437, -352.15977327533056, 9.8226540134394327, 186.72162613026876); + bool3x3 r2 = bool3x3(false, false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x3 a3 = double3x3(-188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911, -496.97184705034448, 339.88814202877143, 372.22833007025918, 313.2386917142378); + double3x3 b3 = double3x3(-325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156, 337.88991014002352, -249.50553929503332, -225.90130554228148, -249.49127757246202); + bool3x3 r3 = bool3x3(true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_wide_scalar() + { + double3x3 a0 = double3x3(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548, 501.30683183172107); + double b0 = (-302.81693877969724); + bool3x3 r0 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3x3 a1 = double3x3(-367.027771405423, -489.09058998948456, -172.51816066192379, -18.149639853346002, -236.41493498367021, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474); + double b1 = (-86.124509613087639); + bool3x3 r1 = bool3x3(false, false, false, true, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double3x3 a2 = double3x3(-481.47807930478734, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845, -7.3478887115362568, -261.86596477304863, 52.24950768996473); + double b2 = (185.59438547193747); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x3 a3 = double3x3(16.323217637987455, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031, 290.57303752124915, 180.263321722049, -482.86394690110529, 100.70627574841785); + double b3 = (-410.51010985416832); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double3x3 b0 = double3x3(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (-158.29329188088576); + double3x3 b1 = double3x3(-162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (374.04800503982608); + double3x3 b2 = double3x3(-368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956, -361.52483360912879, -372.45236056505348, -33.909547583157917); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-69.595290454847429); + double3x3 b3 = double3x3(-460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421, -107.00416784500896, 331.63653746789157, -340.84013120310385, -384.21461147079924); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_equal_wide_wide() + { + double3x3 a0 = double3x3(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666, -456.12326667091031); + double3x3 b0 = double3x3(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952, 306.17329730939741); + bool3x3 r0 = bool3x3(false, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x3 a1 = double3x3(282.3012408140587, 421.8811549720732, -311.71284809322697, 84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224); + double3x3 b1 = double3x3(139.56480438055689, -505.75247955031341, -489.62680958659706, -280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419); + bool3x3 r1 = bool3x3(false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x3 a2 = double3x3(307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485, -77.043453014010311, 438.18483253856414, 260.28234088620275); + double3x3 b2 = double3x3(376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041, -216.00231109187115, 66.734246046624207, 99.218598173567329); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x3 a3 = double3x3(386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737, -383.30294889179197, -5.1470377469188975, 319.34374752610165, 465.02220485407031); + double3x3 b3 = double3x3(233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022, -202.74836430454087, -312.47647133119244, 310.07189884319519, -320.3630436958573); + bool3x3 r3 = bool3x3(false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_equal_wide_scalar() + { + double3x3 a0 = double3x3(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185, 183.82114538169515); + double b0 = (292.92427148154206); + bool3x3 r0 = bool3x3(false, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x3 a1 = double3x3(320.44249287268258, -386.801748694294, -182.9388249772316, 349.25012962392077, 485.31159304329731, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695); + double b1 = (-257.87003791419329); + bool3x3 r1 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x3 a2 = double3x3(-43.874866744445114, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862, 87.9161055497434, -502.17362308044619, 125.95081263685177); + double b2 = (457.38574549992836); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x3 a3 = double3x3(-54.493607308014134, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275, -24.82758070194518, -451.04158684752957, 429.57755132651778, -308.43429031429548); + double b3 = (250.66739737739204); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double3x3 b0 = double3x3(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (-506.30010127755816); + double3x3 b1 = double3x3(27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-55.2435333986038); + double3x3 b2 = double3x3(-455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588, -116.01998215355911, -442.59525629626364, 297.33334579008317); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (36.687250392831515); + double3x3 b3 = double3x3(485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873, -215.90167794744565, 39.5603883450666, 22.947996388630941, -162.0605676928817); + bool3x3 r3 = bool3x3(true, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_equal_wide_wide() + { + double3x3 a0 = double3x3(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493, 152.94642765491574); + double3x3 b0 = double3x3(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319, -322.71539870030961); + bool3x3 r0 = bool3x3(false, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x3 a1 = double3x3(48.986223482054811, 57.338148859021317, 300.46493138953338, 349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916); + double3x3 b1 = double3x3(125.47818165900105, -25.776589167200314, 297.51890792395864, 73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x3 a2 = double3x3(-156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464, -223.49299560463663, 302.12299194099523, 459.85272834256887); + double3x3 b2 = double3x3(254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944, 453.68485209610537, -154.0116427661905, -97.290078923706915); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x3 a3 = double3x3(-347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255, -132.22179395156996, 303.68380489185631, 265.21013439130513, 9.75437188602723); + double3x3 b3 = double3x3(151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221, -129.35329276386335, 8.1077725925052846, 426.44951434920051, 410.69316477826476); + bool3x3 r3 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_equal_wide_scalar() + { + double3x3 a0 = double3x3(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357, -221.50546441856096); + double b0 = (189.20512804258851); + bool3x3 r0 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x3 a1 = double3x3(252.99433410027734, -395.36331028275345, 164.77259667439978, -287.00733889593153, 355.83704559683667, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411); + double b1 = (-116.44038277326172); + bool3x3 r1 = bool3x3(true, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x3 a2 = double3x3(396.39213938098032, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234, 71.176674637560154, -331.27167788672807, 307.89058008226129); + double b2 = (332.66542044871744); + bool3x3 r2 = bool3x3(true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x3 a3 = double3x3(-388.57851737950858, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706, -74.50001743924804, -343.38647357718389, 216.0315855555383, -420.40314813163275); + double b3 = (150.60576422075076); + bool3x3 r3 = bool3x3(false, false, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double3x3 b0 = double3x3(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (416.42054791768112); + double3x3 b1 = double3x3(379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646); + bool3x3 r1 = bool3x3(true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-264.31016242891093); + double3x3 b2 = double3x3(243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009, -400.47050280145857, -283.15963162256389, -42.319595595039232); + bool3x3 r2 = bool3x3(false, false, false, true, false, false, true, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-429.51037355396448); + double3x3 b3 = double3x3(499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719, 393.30091089443351, 18.023639925766588, -169.92393048569744, -285.88492669066648); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_add_wide_wide() + { + double3x3 a0 = double3x3(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118, -178.70145782209067); + double3x3 b0 = double3x3(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398, 244.4951094335388); + double3x3 r0 = double3x3(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862, 65.793651611448126); + TestUtils.AreEqual(a0 + b0, r0); + + double3x3 a1 = double3x3(-420.03378339299644, 290.71109236903078, -446.5296368294068, 491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794); + double3x3 b1 = double3x3(-78.675763882079991, 352.20551340291536, 82.779185095233515, 462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041); + double3x3 r1 = double3x3(-498.70954727507643, 642.91660577194614, -363.75045173417328, 953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018); + TestUtils.AreEqual(a1 + b1, r1); + + double3x3 a2 = double3x3(-36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847, -62.8800013358146, -79.55225447544467, 413.0982751385767); + double3x3 b2 = double3x3(-141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987, 492.69246768052335, 439.04383942067807, -511.74275922763292); + double3x3 r2 = double3x3(-178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834, 429.81246634470875, 359.4915849452334, -98.64448408905622); + TestUtils.AreEqual(a2 + b2, r2); + + double3x3 a3 = double3x3(-100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207, -261.12612998724273, -309.8303507817119, 378.36333220934648, -224.09398065511789); + double3x3 b3 = double3x3(-399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005, -474.8229422396156, 311.39072885708447, 326.84541979750873, 475.21193597987849); + double3x3 r3 = double3x3(-499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212, -735.94907222685833, 1.5603780753725687, 705.20875200685521, 251.1179553247606); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_add_wide_scalar() + { + double3x3 a0 = double3x3(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535, 443.11525246273504); + double b0 = (500.99725913489112); + double3x3 r0 = double3x3(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776, 944.11251159762617); + TestUtils.AreEqual(a0 + b0, r0); + + double3x3 a1 = double3x3(268.092225914864, -471.25607584009697, -2.6649749291431704, 78.985822952811532, 202.14799151297098, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206); + double b1 = (41.32102133767728); + double3x3 r1 = double3x3(309.41324725254128, -429.93505450241969, 38.65604640853411, 120.30684429048881, 243.46901285064826, 353.04647652853578, 51.666876340129875, -109.92343764655453, 396.55378836977934); + TestUtils.AreEqual(a1 + b1, r1); + + double3x3 a2 = double3x3(-197.80076584490052, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746, -160.5840962680914, -172.54221566605486, -242.9410861669765); + double b2 = (255.95526587961024); + double3x3 r2 = double3x3(58.154500034709713, 500.10236381930417, 74.328696285527542, 253.50033914926479, 556.85592057409508, 19.463316926482776, 95.371169611518837, 83.41305021355538, 13.014179712633734); + TestUtils.AreEqual(a2 + b2, r2); + + double3x3 a3 = double3x3(466.34409902353957, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759, 402.16034693371523, -117.02482729639149, 497.37375592504338, 485.90928124166521); + double b3 = (237.98745810146795); + double3x3 r3 = double3x3(704.33155712500752, 502.28147291684593, 610.8542983992279, 39.149681109539131, -143.94351679829106, 640.14780503518318, 120.96263080507646, 735.36121402651133, 723.89673934313316); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double3x3 b0 = double3x3(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421); + double3x3 r0 = double3x3(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626, -362.56777970984939); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (230.80498014707348); + double3x3 b1 = double3x3(-140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813); + double3x3 r1 = double3x3(90.63064674783061, 248.82917606496676, 92.190621895804327, 257.70914375861594, -143.73260218637654, 385.27258080303318, 499.18880056738328, 39.841957587675154, 419.42223377685161); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-504.91612386373623); + double3x3 b2 = double3x3(20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923, 480.88455770950975, 438.05301233662897, 66.844289095534123); + double3x3 r2 = double3x3(-484.46211026816724, -306.97077860821543, -253.50417911890162, -926.00649924483446, -393.47072333538478, -578.18500688773815, -24.031566154226482, -66.863111527107264, -438.07183476820211); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (-270.79599941465818); + double3x3 b3 = double3x3(-44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067, -413.48026890935387, -260.720191361718, 77.542334831106587, 183.95489009840173); + double3x3 r3 = double3x3(-314.81792130825016, -73.101280246442741, -251.68206941880379, 78.441769159604689, 95.438493296242484, -684.27626832401211, -531.51619077637611, -193.2536645835516, -86.84110931625645); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_sub_wide_wide() + { + double3x3 a0 = double3x3(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537, 110.77707367333448); + double3x3 b0 = double3x3(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307, -477.876434787119); + double3x3 r0 = double3x3(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059, 588.65350846045351); + TestUtils.AreEqual(a0 - b0, r0); + + double3x3 a1 = double3x3(-235.54160486699158, 78.879356659427, -347.68616811730254, -470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111); + double3x3 b1 = double3x3(164.50000031501986, 428.00958915614035, 72.6278169493321, -446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272); + double3x3 r1 = double3x3(-400.04160518201144, -349.13023249671335, -420.31398506663464, -23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384); + TestUtils.AreEqual(a1 - b1, r1); + + double3x3 a2 = double3x3(-427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458, -308.93956937870922, 454.53341052240387, 26.106923830745245); + double3x3 b2 = double3x3(-80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049, -221.32544551665217, -9.2588145775994235, 288.1738385111903); + double3x3 r2 = double3x3(-347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263, -87.614123862057056, 463.79222510000329, -262.06691468044505); + TestUtils.AreEqual(a2 - b2, r2); + + double3x3 a3 = double3x3(-482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012, 388.48155969590016, 138.71817285321572, -385.57360547854267, -149.36481745045859); + double3x3 b3 = double3x3(217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004, 72.119071755613732, -154.88059170305758, -469.65998361523265, -320.61543217330029); + double3x3 r3 = double3x3(-700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884, 316.36248794028643, 293.5987645562733, 84.086378136689973, 171.2506147228417); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_sub_wide_scalar() + { + double3x3 a0 = double3x3(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483, -377.92569344952972); + double b0 = (-291.59041442144212); + double3x3 r0 = double3x3(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695, -86.3352790280876); + TestUtils.AreEqual(a0 - b0, r0); + + double3x3 a1 = double3x3(-470.26204297983185, 461.50756499800252, -246.28726660753006, 21.605312595891405, 246.35072171238755, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074); + double b1 = (400.53491968686455); + double3x3 r1 = double3x3(-870.79696266669634, 60.972645311137967, -646.82218629439467, -378.92960709097315, -154.184197974477, -521.9622814701695, -523.25334382581218, -523.47364068565594, -40.383965511053816); + TestUtils.AreEqual(a1 - b1, r1); + + double3x3 a2 = double3x3(342.87457887403411, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725, -121.16305619159857, 187.99838813953022, -450.820273370864); + double b2 = (18.929827460520869); + double3x3 r2 = double3x3(323.94475141351325, 145.67252499688061, 78.113861120358933, 466.98515389253623, -224.68748436900211, 234.51339971018638, -140.09288365211944, 169.06856067900935, -469.75010083138488); + TestUtils.AreEqual(a2 - b2, r2); + + double3x3 a3 = double3x3(-248.07337128746946, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121, -189.19323381650878, 269.07481659067548, -59.118566302172155, 363.45839207407948); + double b3 = (-26.996065390760123); + double3x3 r3 = double3x3(-221.07730589670933, 468.54868481520043, 476.90667508398496, 381.88209217688166, 125.81755119460524, -162.19716842574866, 296.0708819814356, -32.122500911412033, 390.45445746483961); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double3x3 b0 = double3x3(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963); + double3x3 r0 = double3x3(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464, -46.618469259989638); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-385.775056303374); + double3x3 b1 = double3x3(75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228); + double3x3 r1 = double3x3(-461.16980288045937, -740.71877275627048, -554.90647151083976, -473.991664630357, -387.510062874998, -508.31309628314949, -120.83002859020138, -334.93787590364826, -38.124733465781731); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (4.0655586738445209); + double3x3 b2 = double3x3(-79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867, 432.18467422583353, -163.88000090600923, 176.74255546216978); + double3x3 r2 = double3x3(83.160983124357244, -350.29278056244027, 296.55807032089592, 57.27454188152899, 250.413159010193, -295.13778271113415, -428.119115551989, 167.94555957985375, -172.67699678832525); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-104.9858415615679); + double3x3 b3 = double3x3(-445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042, -65.531290323255234, 440.38039776328037, 427.36063142649857, -81.472953595906915); + double3x3 r3 = double3x3(340.81178871766281, -76.112686192669287, 64.602387458366536, 165.37340457987665, -173.0334688038721, -39.454551238312661, -545.36623932484827, -532.34647298806647, -23.51288796566098); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mul_wide_wide() + { + double3x3 a0 = double3x3(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105, -239.49641167349017); + double3x3 b0 = double3x3(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538, 358.88076202891807); + double3x3 r0 = double3x3(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286, -85950.654724573629); + TestUtils.AreEqual(a0 * b0, r0); + + double3x3 a1 = double3x3(236.67584644848284, -211.85620818466703, -216.65482030466887, 467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284); + double3x3 b1 = double3x3(214.85359368792433, 253.42280900358355, -307.71382751488773, 184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025); + double3x3 r1 = double3x3(50850.6561485879, -53689.195383006307, 66667.684005499876, 86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295); + TestUtils.AreEqual(a1 * b1, r1); + + double3x3 a2 = double3x3(-104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245, -83.11415318544681, 329.96027842627848, -316.97214594342381); + double3x3 b2 = double3x3(254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082, -189.74690946831691, -35.518455760329232, 120.31664210200154); + double3x3 r2 = double3x3(-26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995, 15770.6537000148, -11719.679551949688, -38137.024239778322); + TestUtils.AreEqual(a2 * b2, r2); + + double3x3 a3 = double3x3(474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629, -416.21309037516505, -103.27920513194016, -52.951897407393858, -40.828328390060165); + double3x3 b3 = double3x3(-136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596, 296.68037738310193, 341.001815239434, -257.09682166627459, 17.593622931089953); + double3x3 r3 = double3x3(-64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038, -123482.25672429107, -35218.396426477462, 13613.764524639606, -718.31821460143351); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mul_wide_scalar() + { + double3x3 a0 = double3x3(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957, -46.729179165665585); + double b0 = (192.21119055161773); + double3x3 r0 = double3x3(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959, -8981.8711609324328); + TestUtils.AreEqual(a0 * b0, r0); + + double3x3 a1 = double3x3(-238.40500103608008, -48.83483722099794, 355.30832998608628, 119.35660391643489, -196.995807977857, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636); + double b1 = (422.08249374017237); + double3x3 r1 = double3x3(-100626.57735743705, -20612.3298756342, 149969.42596718337, 50378.333025406864, -83148.481887654023, 41463.697812143357, -137409.86620083509, 22766.000149435855, -36911.529323797338); + TestUtils.AreEqual(a1 * b1, r1); + + double3x3 a2 = double3x3(-130.47412949915702, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565, 257.54154241156834, -475.60871551726422, -452.69189450363251); + double b2 = (-222.59457145565869); + double3x3 r2 = double3x3(29042.832941914974, -28050.262069869175, -65300.585597737627, -38816.477071210968, 72815.15336483845, -12605.335471982036, -57327.349265132405, 105867.91821114172, 100766.75825848634); + TestUtils.AreEqual(a2 * b2, r2); + + double3x3 a3 = double3x3(-49.220605157884108, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707, 120.01444226131514, -59.508660105759589, 319.48987236595246, -403.52316040709763); + double b3 = (141.60094959177115); + double3x3 r3 = double3x3(-6969.6844298380192, 61112.942586675614, 25538.465577488507, -5794.8000237431324, 39583.626244687934, 16994.158988929015, -8426.4827799095074, 45240.069311972635, -57139.26269591762); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double3x3 b0 = double3x3(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423); + double3x3 r0 = double3x3(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215, -228458.89803045939); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (49.902031206480274); + double3x3 b1 = double3x3(424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444); + double3x3 r1 = double3x3(21181.544350206073, 7990.2172332881028, -19760.809379495968, 6247.8185709406853, -13224.827715428979, 15701.978411577751, -14606.924371276589, -1882.7975833852222, 8251.910692891026); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (356.51773302467438); + double3x3 b2 = double3x3(-188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903, 53.7483275186961, -198.66941771221786, 96.23611287783649); + double3x3 r2 = double3x3(-67315.300044636751, 180011.40955674934, 14464.67802574805, -73718.991969705254, -21962.447990621149, 42415.481340905411, 19162.231880833257, -70829.170424092008, 34309.880798312937); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-20.241880664714529); + double3x3 b3 = double3x3(-31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562, 340.74862186086762, 438.98690172610191, -227.16596637813655, 452.57297894571582); + double3x3 r3 = double3x3(630.00780813897893, -787.21616197169351, 265.84284722682963, -10280.269885278565, -1923.3416739783402, -6897.3929403736183, -8885.920478112519, 4598.2663825107929, -9160.92823189354); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_div_wide_wide() + { + double3x3 a0 = double3x3(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931, -274.050461181463); + double3x3 b0 = double3x3(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438, 484.36271380091216); + double3x3 r0 = double3x3(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218, -0.56579594872388561); + TestUtils.AreEqual(a0 / b0, r0); + + double3x3 a1 = double3x3(127.53858977534742, -447.6717600522897, -137.4586017771897, -136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744); + double3x3 b1 = double3x3(-390.78178686219348, 402.02531714086672, 316.65072193585831, 397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808); + double3x3 r1 = double3x3(-0.32636779415802974, -1.1135412148569459, -0.43410165287743668, -0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456); + TestUtils.AreEqual(a1 / b1, r1); + + double3x3 a2 = double3x3(-204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016, 315.37384071730719, -122.66599255551864, 447.52615067340719); + double3x3 b2 = double3x3(404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568, -218.2096851888158, 458.51754042995981, 119.5872405132219); + double3x3 r2 = double3x3(-0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223, -1.4452788401413792, -0.26752737188743669, 3.7422566885296384); + TestUtils.AreEqual(a2 / b2, r2); + + double3x3 a3 = double3x3(-210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819, -106.2345221537326, 414.31254239301779, 7.1208250555772565, 274.07367361433512); + double3x3 b3 = double3x3(356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027, 220.25550351862591, -67.234494002179474, 2.229160071457386, -166.21096118083733); + double3x3 r3 = double3x3(-0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134, -0.48232403030396409, -6.1622021336189041, 3.1943982609206638, -1.6489506568471335); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_div_wide_scalar() + { + double3x3 a0 = double3x3(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844, -348.92380516087815); + double b0 = (-60.024377612408443); + double3x3 r0 = double3x3(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415, 5.8130349541308268); + TestUtils.AreEqual(a0 / b0, r0); + + double3x3 a1 = double3x3(-275.53868187383688, 287.64239968342815, 504.37224626185946, 491.78708600056689, -26.63160015392657, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521); + double b1 = (210.55792174607416); + double3x3 r1 = double3x3(-1.308612279171939, 1.3660963087882074, 2.39540855114497, 2.3356380131527215, -0.12648111233755144, -1.2026936372556161, 1.2960572498209078, 0.84582983938134593, -2.1888304485470549); + TestUtils.AreEqual(a1 / b1, r1); + + double3x3 a2 = double3x3(-502.64601611655485, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464, 81.646461763254592, 60.606869964211683, -413.56048102563273); + double b2 = (-84.324793139623864); + double3x3 r2 = double3x3(5.9608330765102533, 2.07163674949821, -0.99373275820533258, -2.3367038277581123, -3.7612694136921725, -4.7837308909160514, -0.968237913469476, -0.71873132097531078, 4.9043758736634526); + TestUtils.AreEqual(a2 / b2, r2); + + double3x3 a3 = double3x3(207.34099803089214, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443, 147.86623079509764, 506.6588964437409, -435.77857300070048, 210.67294011389504); + double b3 = (358.5621036768714); + double3x3 r3 = double3x3(0.57825686514195451, 0.057867444961519181, -0.19125593687022127, 0.8665234261885334, 1.1641076891758224, 0.41238666685298, 1.4130296850900095, -1.2153503354984077, 0.58754937555740427); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double3x3 b0 = double3x3(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984); + double3x3 r0 = double3x3(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514, -0.088244069266411956); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (192.23013958345643); + double3x3 b1 = double3x3(-200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729); + double3x3 r1 = double3x3(-0.95972613030893628, -0.3921611446125986, -0.91060063985548412, -0.59541194261204144, -1.3931205209731754, 2.2795060166416232, 0.5413965774317997, 0.695409527718326, -0.50192206775578785); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-488.647160996053); + double3x3 b2 = double3x3(344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753, -344.19428865248074, -449.07149216582604, 117.70491724726969); + double3x3 r2 = double3x3(-1.417000941801196, -2.8938862502335212, 11.056469186369281, -1.1619221092607348, 2.7824877576924365, 52.995340264266794, 1.4196841060585423, 1.0881277692319269, -4.1514591949418982); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-337.02741710144437); + double3x3 b3 = double3x3(239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984, -490.49213360738577, 485.75540922850155, -317.57225504404505, -451.62477871944418); + double3x3 r3 = double3x3(-1.4078391365070895, 0.86560407847111542, -1.3885665708292334, -0.67911223126728126, -3.6734915713639262, 0.68712094243537414, -0.69382123327607692, 1.0612621592358598, 0.74625537167616451); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mod_wide_wide() + { + double3x3 a0 = double3x3(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645); + double3x3 b0 = double3x3(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516, -145.20377237405802); + double3x3 r0 = double3x3(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645); + TestUtils.AreEqual(a0 % b0, r0); + + double3x3 a1 = double3x3(183.446989383291, -463.36838100076113, 83.839106360375467, -64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692); + double3x3 b1 = double3x3(-203.38401780062543, -22.520082245823062, 224.6900237652892, -435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733); + double3x3 r1 = double3x3(183.446989383291, -12.966736084299896, 83.839106360375467, -64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692); + TestUtils.AreEqual(a1 % b1, r1); + + double3x3 a2 = double3x3(142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531, 156.98570425668061, 507.61831092630439, 270.83043897842538); + double3x3 b2 = double3x3(4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009, -131.41830188195144, -473.98760078567432, 76.2178585884244); + double3x3 r2 = double3x3(1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291, 25.56740237472917, 33.630710140630072, 42.17686321315216); + TestUtils.AreEqual(a2 % b2, r2); + + double3x3 a3 = double3x3(337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078, 7.7614462411783052, 238.09472309709281, 12.852037674212852, -100.2406762113053); + double3x3 b3 = double3x3(92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288, 132.18024951414213, -179.87732204230377, 51.968538546920058, 367.21425860338582); + double3x3 r3 = double3x3(61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078, 7.7614462411783052, 58.217401054789036, 12.852037674212852, -100.2406762113053); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mod_wide_scalar() + { + double3x3 a0 = double3x3(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794, -84.473635951277629); + double b0 = (-90.499235433758827); + double3x3 r0 = double3x3(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914, -84.473635951277629); + TestUtils.AreEqual(a0 % b0, r0); + + double3x3 a1 = double3x3(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215); + double b1 = (433.45469041981482); + double3x3 r1 = double3x3(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215); + TestUtils.AreEqual(a1 % b1, r1); + + double3x3 a2 = double3x3(-75.356399809641971, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949, 335.99997655302286, 67.839589388966374, -124.72076731767544); + double b2 = (252.28909385031511); + double3x3 r2 = double3x3(-75.356399809641971, -69.403906139267576, 5.3372299696026175, -26.771334183761553, 231.26149712841095, -79.704252756994379, 83.71088270270775, 67.839589388966374, -124.72076731767544); + TestUtils.AreEqual(a2 % b2, r2); + + double3x3 a3 = double3x3(38.175906437531125, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444, -304.153164289963, -295.52024735860539, 313.72239532774427, -232.20264135683078); + double b3 = (271.28698671575955); + double3x3 r3 = double3x3(38.175906437531125, 134.48661428992023, -194.76144489774549, 235.72397314557986, 194.69789132601488, -32.866177574203448, -24.233260642845835, 42.435408611984712, -232.20264135683078); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double3x3 b0 = double3x3(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797); + double3x3 r0 = double3x3(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278, -24.355308544056129); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (201.01229796233224); + double3x3 b1 = double3x3(-95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683); + double3x3 r1 = double3x3(9.8785884426340544, 201.01229796233224, 94.028722330009828, 201.01229796233224, 26.967372906844787, 16.175763614557582, 201.01229796233224, 69.1395788514705, 80.919437922965415); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (4.506670715523228); + double3x3 b2 = double3x3(-111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987, -433.52306505363578, -163.8668559360629, 177.00401099818009); + double3x3 r2 = double3x3(4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (110.65016441729392); + double3x3 b3 = double3x3(17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526, 271.07511461483091, 423.70268912972074, -413.23324675729185, 127.95621091125361); + double3x3 r3 = double3x3(4.5428698084050438, 14.797196871972233, 110.65016441729392, 110.65016441729392, 110.65016441729392, 110.65016441729392, 110.65016441729392, 110.65016441729392, 110.65016441729392); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_plus() + { + double3x3 a0 = double3x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565); + double3x3 r0 = double3x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565); + TestUtils.AreEqual(+a0, r0); + + double3x3 a1 = double3x3(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222); + double3x3 r1 = double3x3(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222); + TestUtils.AreEqual(+a1, r1); + + double3x3 a2 = double3x3(-230.05266557915724, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195, 473.8031363309376, 285.80893935161123); + double3x3 r2 = double3x3(-230.05266557915724, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195, 473.8031363309376, 285.80893935161123); + TestUtils.AreEqual(+a2, r2); + + double3x3 a3 = double3x3(-273.26378191321334, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914, -29.083537353707243); + double3x3 r3 = double3x3(-273.26378191321334, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914, -29.083537353707243); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double3x3_operator_neg() + { + double3x3 a0 = double3x3(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605, 19.686896571743773); + double3x3 r0 = double3x3(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605, -19.686896571743773); + TestUtils.AreEqual(-a0, r0); + + double3x3 a1 = double3x3(268.23670662019254, 223.38126312167446, -410.39206070936848, -395.68154186554324, -349.14948885010062, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735); + double3x3 r1 = double3x3(-268.23670662019254, -223.38126312167446, 410.39206070936848, 395.68154186554324, 349.14948885010062, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735); + TestUtils.AreEqual(-a1, r1); + + double3x3 a2 = double3x3(48.290685914592245, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838, 196.38759169186824, -306.1655677790593, 149.66006023700356); + double3x3 r2 = double3x3(-48.290685914592245, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838, -196.38759169186824, 306.1655677790593, -149.66006023700356); + TestUtils.AreEqual(-a2, r2); + + double3x3 a3 = double3x3(320.3917383255399, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679, 363.71671049842462, 280.88790405955535, -270.65131939139746, -201.61574015469091); + double3x3 r3 = double3x3(-320.3917383255399, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679, -363.71671049842462, -280.88790405955535, 270.65131939139746, 201.61574015469091); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double3x3_operator_prefix_inc() + { + double3x3 a0 = double3x3(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384, -76.507656371457358); + double3x3 r0 = double3x3(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384, -75.507656371457358); + TestUtils.AreEqual(++a0, r0); + + double3x3 a1 = double3x3(-305.58477344437722, 148.67930967578627, 363.2849182390072, -115.5592263283018, -326.87781992874937, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619); + double3x3 r1 = double3x3(-304.58477344437722, 149.67930967578627, 364.2849182390072, -114.5592263283018, -325.87781992874937, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619); + TestUtils.AreEqual(++a1, r1); + + double3x3 a2 = double3x3(261.62557304167444, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178, -264.38006246480165, -377.55920785365589, 223.23241792583485); + double3x3 r2 = double3x3(262.62557304167444, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178, -263.38006246480165, -376.55920785365589, 224.23241792583485); + TestUtils.AreEqual(++a2, r2); + + double3x3 a3 = double3x3(-71.076339993195745, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289, 117.95409851798513, 139.52581245243823, 335.68968192473505, 162.6615141195532); + double3x3 r3 = double3x3(-70.076339993195745, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289, 118.95409851798513, 140.52581245243823, 336.68968192473505, 163.6615141195532); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double3x3_operator_postfix_inc() + { + double3x3 a0 = double3x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305); + double3x3 r0 = double3x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305); + TestUtils.AreEqual(a0++, r0); + + double3x3 a1 = double3x3(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579); + double3x3 r1 = double3x3(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579); + TestUtils.AreEqual(a1++, r1); + + double3x3 a2 = double3x3(454.48881003562769, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159, 417.72977919957123, 25.565661203845252); + double3x3 r2 = double3x3(454.48881003562769, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159, 417.72977919957123, 25.565661203845252); + TestUtils.AreEqual(a2++, r2); + + double3x3 a3 = double3x3(-463.72565982478005, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185, 64.577020436793987); + double3x3 r3 = double3x3(-463.72565982478005, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185, 64.577020436793987); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double3x3_operator_prefix_dec() + { + double3x3 a0 = double3x3(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492, 171.96452935597142); + double3x3 r0 = double3x3(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492, 170.96452935597142); + TestUtils.AreEqual(--a0, r0); + + double3x3 a1 = double3x3(-227.44280134301761, 326.50782338087811, 400.720900006928, -478.03137253133178, -326.45297852459038, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003); + double3x3 r1 = double3x3(-228.44280134301761, 325.50782338087811, 399.720900006928, -479.03137253133178, -327.45297852459038, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003); + TestUtils.AreEqual(--a1, r1); + + double3x3 a2 = double3x3(-79.635249413380052, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351, 181.47510703908051, -188.69222578252305, -505.2156915633081); + double3x3 r2 = double3x3(-80.635249413380052, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351, 180.47510703908051, -189.69222578252305, -506.2156915633081); + TestUtils.AreEqual(--a2, r2); + + double3x3 a3 = double3x3(-372.24192898918034, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329, 345.02153913351776, 4.7353689692613443, -68.653318198701982, 481.496122346025); + double3x3 r3 = double3x3(-373.24192898918034, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329, 344.02153913351776, 3.7353689692613443, -69.653318198701982, 480.496122346025); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double3x3_operator_postfix_dec() + { + double3x3 a0 = double3x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681); + double3x3 r0 = double3x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681); + TestUtils.AreEqual(a0--, r0); + + double3x3 a1 = double3x3(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518); + double3x3 r1 = double3x3(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518); + TestUtils.AreEqual(a1--, r1); + + double3x3 a2 = double3x3(-357.05418960985457, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358, 409.22248644811214, -428.25672479544613); + double3x3 r2 = double3x3(-357.05418960985457, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358, 409.22248644811214, -428.25672479544613); + TestUtils.AreEqual(a2--, r2); + + double3x3 a3 = double3x3(-425.2883748604396, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133, 449.63778540568319); + double3x3 r3 = double3x3(-425.2883748604396, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133, 449.63778540568319); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x3.gen.cs.meta new file mode 100644 index 0000000..c045174 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4971c82bdb64ccb49b92ffe0a2d2c59a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x4.gen.cs new file mode 100644 index 0000000..160dd7e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x4.gen.cs @@ -0,0 +1,949 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble3x4 + { + [TestCompiler] + public static void double3x4_zero() + { + TestUtils.AreEqual(double3x4.zero.c0.x, 0.0); + TestUtils.AreEqual(double3x4.zero.c0.y, 0.0); + TestUtils.AreEqual(double3x4.zero.c0.z, 0.0); + TestUtils.AreEqual(double3x4.zero.c1.x, 0.0); + TestUtils.AreEqual(double3x4.zero.c1.y, 0.0); + TestUtils.AreEqual(double3x4.zero.c1.z, 0.0); + TestUtils.AreEqual(double3x4.zero.c2.x, 0.0); + TestUtils.AreEqual(double3x4.zero.c2.y, 0.0); + TestUtils.AreEqual(double3x4.zero.c2.z, 0.0); + TestUtils.AreEqual(double3x4.zero.c3.x, 0.0); + TestUtils.AreEqual(double3x4.zero.c3.y, 0.0); + TestUtils.AreEqual(double3x4.zero.c3.z, 0.0); + } + + [TestCompiler] + public static void double3x4_operator_equal_wide_wide() + { + double3x4 a0 = double3x4(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double3x4 b0 = double3x4(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x4 a1 = double3x4(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double3x4 b1 = double3x4(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x4 a2 = double3x4(-22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868, -68.728424342688356, 485.76997803420295, 413.16974969076443, -418.26928992675118); + double3x4 b2 = double3x4(-174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895, -468.3309554850361, 429.49572797748056, 477.38919781026857, -433.42541071093893); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x4 a3 = double3x4(-346.79586593564409, 504.15964889161273, 345.18627635817336, -434.71304126955243, -499.77411078837429, 282.01905192156278, 259.15627944616426, 306.4559306141249, 435.22542759181249, -386.89967864886842, 211.3639925510455, -7.2298214469244044); + double3x4 b3 = double3x4(273.54640329701192, -34.976225153997632, 221.96845422590548, 85.919132511093835, -85.598944942280184, 392.76080316713114, -117.92407732732784, -445.30559393638077, -242.46897208060557, 173.64309533575693, 389.8977403072164, -14.290465123155343); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_equal_wide_scalar() + { + double3x4 a0 = double3x4(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415); + double b0 = (-155.8157547245807); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x4 a1 = double3x4(-191.19075521789063, -232.89569221851218, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981); + double b1 = (186.84520086406042); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x4 a2 = double3x4(-410.91687483848858, -390.10359329269437, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218, -429.87391849508225, -275.15694750247383, -56.332365300661138); + double b2 = (110.50128345866744); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x4 a3 = double3x4(-95.835959717554942, 253.00615632394613, -300.50952949212376, 314.86654320120181, 195.61619886924336, -26.128909838445907, -284.7746838465215, -242.67206560944771, 140.36059886792702, 505.64434194268858, 506.5379443143205, -502.369801993654); + double b3 = (-124.86533385369245); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double3x4 b0 = double3x4(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-160.47062142215231); + double3x4 b1 = double3x4(316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-227.09065185631192); + double3x4 b2 = double3x4(-336.61242524562982, 365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834, 39.342111844263059, -350.40371744260369, -482.71723221368961); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (239.96540772168214); + double3x4 b3 = double3x4(-3.4060323254233253, -1.4948394305514512, 105.96042184995508, 151.53752787017152, 63.283196240329744, -289.69317378182575, 137.55377942768564, -247.66646945088473, -339.42056409428858, 23.238285313937013, 21.177870045033274, 477.036560995987); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_not_equal_wide_wide() + { + double3x4 a0 = double3x4(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double3x4 b0 = double3x4(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x4 a1 = double3x4(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double3x4 b1 = double3x4(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x4 a2 = double3x4(-72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391, -506.82837772128562, 245.47704779611763, -173.57105811572217, 390.33854669627669); + double3x4 b2 = double3x4(415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739, 420.21507926481547, -239.17604529074208, -99.079094694498508, 4.4760239145141441); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x4 a3 = double3x4(252.83775555940235, 47.865854047176413, 457.710514043323, -313.22114601415637, 391.20388168432, 481.7861199238273, 26.887826693657757, -298.14237346227389, 240.07745634768037, -332.45515338166388, -333.60717240609563, -313.18967857639757); + double3x4 b3 = double3x4(264.34854352862976, 451.31233689343196, 232.95803343176749, -142.62218839611029, -300.22557820949032, 268.33322418310365, -112.1035507247334, -270.49403989989963, -71.9932391978769, 99.463272856298545, 321.70330134113476, 200.05965218323263); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_not_equal_wide_scalar() + { + double3x4 a0 = double3x4(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059); + double b0 = (-393.41354173860213); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x4 a1 = double3x4(501.8990516615562, 458.40042302496749, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562); + double b1 = (-134.34545642433011); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x4 a2 = double3x4(-497.45947789468778, -328.58774844211888, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792, 317.28609314434516, 401.93959612489664, 210.98484502126689); + double b2 = (-80.932258882062627); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x4 a3 = double3x4(-147.09631616766393, 207.73136410849702, 284.39206208120663, -509.0852923379677, 414.30764718274941, -52.294460082563774, -140.43793660981487, -316.78779402225643, -358.69683592333308, 312.31897249460178, 270.62946260656668, -140.01671153866533); + double b3 = (-193.39904531901658); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double3x4 b0 = double3x4(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-488.0213141329686); + double3x4 b1 = double3x4(489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-268.35225761511936); + double3x4 b2 = double3x4(-239.231014124691, 411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027, 306.1256321902041, -178.33037885386977, 382.14199203166277); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-340.86559478420094); + double3x4 b3 = double3x4(-17.580244787773211, -409.87484498036787, -349.70166914057995, 275.85432756871649, -229.37194906425287, -127.50573283410898, 90.753436369240944, -422.08713574990963, -2.4475424301100475, -280.55170954417054, -484.37435959483236, -33.76342226647); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_wide_wide() + { + double3x4 a0 = double3x4(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double3x4 b0 = double3x4(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool3x4 r0 = bool3x4(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x4 a1 = double3x4(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double3x4 b1 = double3x4(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool3x4 r1 = bool3x4(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x4 a2 = double3x4(269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373, -316.13839664875456, -417.52215905558421, 441.6434454590285, -191.95062908527939); + double3x4 b2 = double3x4(-382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766, -114.55647259324627, 441.42973276666817, -113.33366709264629, 435.622928583819); + bool3x4 r2 = bool3x4(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double3x4 a3 = double3x4(397.81158823418036, -144.66662485183525, 417.0790571724433, -322.9801315381099, -81.285095014276521, 319.32531538574267, 146.76406509557933, -316.58337488611386, -150.85755855909434, -314.60630550729405, 7.14312720631392, -458.82730767635036); + double3x4 b3 = double3x4(383.65612786992267, -293.711607831396, -391.35497612103586, 43.122021456771563, 433.2236590018606, -201.38245282014014, -241.42116629398481, 376.46986955053637, -503.39744472103075, -359.78095095221931, 118.63150149147566, -510.03052759078821); + bool3x4 r3 = bool3x4(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_wide_scalar() + { + double3x4 a0 = double3x4(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413); + double b0 = (199.06751808853244); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x4 a1 = double3x4(-68.088202269788951, -66.703050406045747, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779); + double b1 = (12.788020378345664); + bool3x4 r1 = bool3x4(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double3x4 a2 = double3x4(-334.62272349680904, 300.41017617863145, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025, -296.37211884948056, 272.4883617239484, 360.20793097103387); + double b2 = (-98.315578744893685); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double3x4 a3 = double3x4(389.7274403002707, -400.61523384629527, -85.469117442830054, -467.70215604626674, -51.387892031757133, 201.76466927387037, -47.8412668927765, -180.74006255936814, -409.01566929789988, 229.6990183469369, 176.19784816363722, -410.45517439882047); + double b3 = (68.736721786082171); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double3x4 b0 = double3x4(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (389.23142999654237); + double3x4 b1 = double3x4(488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594); + bool3x4 r1 = bool3x4(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-125.56811505442863); + double3x4 b2 = double3x4(122.16476803746298, 96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693, 190.57215914063727, 108.25831871305513, 132.55076056930739); + bool3x4 r2 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-431.51522155828553); + double3x4 b3 = double3x4(-192.20350727448402, -431.83499284825984, -85.581249515331024, 328.67053977058765, 273.5778516612844, -178.66905816768718, 352.63627235621038, -82.605815687498932, 238.90886675515628, 291.3353070185218, 183.35733875229835, -185.03260597262187); + bool3x4 r3 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_wide_wide() + { + double3x4 a0 = double3x4(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double3x4 b0 = double3x4(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool3x4 r0 = bool3x4(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double3x4 a1 = double3x4(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double3x4 b1 = double3x4(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double3x4 a2 = double3x4(105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911, -496.97184705034448, 339.88814202877143, 372.22833007025918, 313.2386917142378); + double3x4 b2 = double3x4(-352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156, 337.88991014002352, -249.50553929503332, -225.90130554228148, -249.49127757246202); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double3x4 a3 = double3x4(-419.10894437279035, -265.32978380160864, -42.501995344880015, 369.16390507722451, 67.169061453626, -256.69890868696336, -104.10592060168551, 499.57010268586225, 41.663492460578482, 151.15207416897272, 220.68833146835129, -344.65888110951471); + double3x4 b3 = double3x4(381.12288373574745, 325.54538145919582, 455.49881360283996, 333.31868401789973, 118.98035603341668, 223.19812236688949, -385.28907102406447, 333.88080159476067, -437.41072126729915, 243.97544943726405, -302.81988658701061, -32.710171476337223); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_wide_scalar() + { + double3x4 a0 = double3x4(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456); + double b0 = (-302.81693877969724); + bool3x4 r0 = bool3x4(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double3x4 a1 = double3x4(-172.51816066192379, -236.41493498367021, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754); + double b1 = (-18.149639853346002); + bool3x4 r1 = bool3x4(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double3x4 a2 = double3x4(-13.638212448748845, -261.86596477304863, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031, 290.57303752124915, 180.263321722049, -482.86394690110529); + double b2 = (-7.3478887115362568); + bool3x4 r2 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x4 a3 = double3x4(100.70627574841785, 501.31978749731547, -289.28097046971368, -25.849692595121326, 455.1624288294289, -63.3173549470107, -17.446765669363913, 53.017790103805169, 88.819595139855323, 182.3580006018085, -428.92720933860505, 408.336862515815); + double b3 = (180.6725166685286); + bool3x4 r3 = bool3x4(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double3x4 b0 = double3x4(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (230.18129955519987); + double3x4 b1 = double3x4(-102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (304.86444320569956); + double3x4 b2 = double3x4(-361.52483360912879, -372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421, -107.00416784500896, 331.63653746789157, -340.84013120310385); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-384.21461147079924); + double3x4 b3 = double3x4(-451.7265658097931, 467.97876355982328, -236.5691269545672, 44.654746314815611, -285.79786671595548, 42.7309816082618, 338.18510762703841, 274.01702202205411, -108.60437088301609, -211.37325606652223, -19.004157313613291, 194.114679188521); + bool3x4 r3 = bool3x4(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_equal_wide_wide() + { + double3x4 a0 = double3x4(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double3x4 b0 = double3x4(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool3x4 r0 = bool3x4(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x4 a1 = double3x4(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double3x4 b1 = double3x4(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool3x4 r1 = bool3x4(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x4 a2 = double3x4(-77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737, -383.30294889179197, -5.1470377469188975, 319.34374752610165, 465.02220485407031); + double3x4 b2 = double3x4(-216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022, -202.74836430454087, -312.47647133119244, 310.07189884319519, -320.3630436958573); + bool3x4 r2 = bool3x4(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x4 a3 = double3x4(145.93345100522663, -215.07482991697026, -146.46150667334979, -349.8939770897357, 29.599108948185631, -131.79663640437491, -438.99467464862141, 147.05792553120193, 221.11248956486236, -356.14535276784807, -32.830178991346713, 442.94199892642996); + double3x4 b3 = double3x4(186.07597288213481, -42.637794752902266, 82.565048971476472, 127.18911009989176, 198.28697428400017, -450.49204108235057, 20.901004085736872, 449.46589133211683, -478.77271841409276, 380.05395692403147, 99.1247280105598, -450.32978150357019); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_equal_wide_scalar() + { + double3x4 a0 = double3x4(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294); + double b0 = (292.92427148154206); + bool3x4 r0 = bool3x4(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x4 a1 = double3x4(-182.9388249772316, 485.31159304329731, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797); + double b1 = (349.25012962392077); + bool3x4 r1 = bool3x4(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x4 a2 = double3x4(402.48485893871862, -502.17362308044619, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275, -24.82758070194518, -451.04158684752957, 429.57755132651778); + double b2 = (87.9161055497434); + bool3x4 r2 = bool3x4(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x4 a3 = double3x4(-308.43429031429548, -279.40712011950421, 181.6722582232544, -290.14875401656548, -184.84408411050407, 447.6939139066701, 168.88657696958933, 26.378954661255193, 392.55852789085293, 255.60484015923214, 162.16346867483276, 195.49629482789726); + double b3 = (355.16031114904229); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double3x4 b0 = double3x4(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (104.88351326104419); + double3x4 b1 = double3x4(-488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-225.2235287284588); + double3x4 b2 = double3x4(-116.01998215355911, -442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873, -215.90167794744565, 39.5603883450666, 22.947996388630941); + bool3x4 r2 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-162.0605676928817); + double3x4 b3 = double3x4(236.73373352584133, -253.95195853614803, -204.71909985538531, -161.61653550044474, -64.3859322370896, -229.815656530585, -484.82564591096047, -135.04042989343424, 351.69478599712943, 111.82539778194644, -249.98255431371859, 435.80731769828469); + bool3x4 r3 = bool3x4(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_equal_wide_wide() + { + double3x4 a0 = double3x4(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double3x4 b0 = double3x4(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool3x4 r0 = bool3x4(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x4 a1 = double3x4(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double3x4 b1 = double3x4(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool3x4 r1 = bool3x4(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x4 a2 = double3x4(-223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255, -132.22179395156996, 303.68380489185631, 265.21013439130513, 9.75437188602723); + double3x4 b2 = double3x4(453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221, -129.35329276386335, 8.1077725925052846, 426.44951434920051, 410.69316477826476); + bool3x4 r2 = bool3x4(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x4 a3 = double3x4(-233.09288631803025, 26.567515147182917, 266.78067529703526, -250.0722254487091, 138.0408142255809, 174.27673848638165, -420.93164678147605, -42.854160567211977, 216.48505435534059, 240.05384623261818, -470.38216875045663, 98.396702573819425); + double3x4 b3 = double3x4(470.31343410458112, 220.39997993241991, -372.87269967276262, -242.17855965447546, 177.50623258273413, -172.63815864019011, 60.722858695649961, 478.25016067840636, 234.30301128807616, 297.82121171514564, 104.58457260233558, -462.41871926859892); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_equal_wide_scalar() + { + double3x4 a0 = double3x4(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345); + double b0 = (189.20512804258851); + bool3x4 r0 = bool3x4(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x4 a1 = double3x4(164.77259667439978, 355.83704559683667, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476); + double b1 = (-287.00733889593153); + bool3x4 r1 = bool3x4(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x4 a2 = double3x4(179.00504287472234, -331.27167788672807, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706, -74.50001743924804, -343.38647357718389, 216.0315855555383); + double b2 = (71.176674637560154); + bool3x4 r2 = bool3x4(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x4 a3 = double3x4(-420.40314813163275, -336.6411160606151, 317.0945958183587, -262.42494666875569, -228.41125522759336, 123.46545964268296, 264.10247362037308, 223.62332569045168, 440.53538366804617, -420.72700830024064, 74.844301497025526, -177.07789405485516); + double b3 = (-78.384021080277876); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double3x4 b0 = double3x4(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (67.141009600433108); + double3x4 b1 = double3x4(-74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852); + bool3x4 r1 = bool3x4(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (125.30356818312009); + double3x4 b2 = double3x4(-400.47050280145857, -283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719, 393.30091089443351, 18.023639925766588, -169.92393048569744); + bool3x4 r2 = bool3x4(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-285.88492669066648); + double3x4 b3 = double3x4(163.75110037799516, 191.85533317916804, 114.01553230826539, -395.98584169707533, 189.3665684151307, 176.19814618686132, 61.713796405919766, 507.54848241598745, 224.04381595554003, -422.99370570806491, -127.05500394061909, 95.528642460484321); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_add_wide_wide() + { + double3x4 a0 = double3x4(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double3x4 b0 = double3x4(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double3x4 r0 = double3x4(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a0 + b0, r0); + + double3x4 a1 = double3x4(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double3x4 b1 = double3x4(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double3x4 r1 = double3x4(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a1 + b1, r1); + + double3x4 a2 = double3x4(-62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207, -261.12612998724273, -309.8303507817119, 378.36333220934648, -224.09398065511789); + double3x4 b2 = double3x4(492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005, -474.8229422396156, 311.39072885708447, 326.84541979750873, 475.21193597987849); + double3x4 r2 = double3x4(429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212, -735.94907222685833, 1.5603780753725687, 705.20875200685521, 251.1179553247606); + TestUtils.AreEqual(a2 + b2, r2); + + double3x4 a3 = double3x4(-164.55573399577094, -69.873935493581882, 224.63463197678072, -383.99260038137095, 149.2212694386119, 169.38798363943954, 163.05393059693927, 57.02912500176069, 342.95008413072219, 168.68046696888302, -470.77026746737317, -117.63049631828); + double3x4 b3 = double3x4(314.152972606082, -262.59463393995287, -82.869108000243614, 156.29956658012213, 427.40157791012973, -279.09935177448176, -448.61522051720658, 284.33708847888613, 288.18558062621651, -232.39503847453511, -386.87190812959892, 162.90336831049217); + double3x4 r3 = double3x4(149.59723861031108, -332.46856943353475, 141.76552397653711, -227.69303380124882, 576.62284734874163, -109.71136813504222, -285.56128992026731, 341.36621348064682, 631.1356647569387, -63.714571505652088, -857.642175596972, 45.272871992212174); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_add_wide_scalar() + { + double3x4 a0 = double3x4(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697); + double b0 = (500.99725913489112); + double3x4 r0 = double3x4(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776, 944.11251159762617, 769.08948504975513, 542.3182804725684, 29.741183294794155); + TestUtils.AreEqual(a0 + b0, r0); + + double3x4 a1 = double3x4(-2.6649749291431704, 202.14799151297098, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484); + double b1 = (78.985822952811532); + double3x4 r1 = double3x4(76.320848023668361, 281.13381446578251, 390.71127814367003, 89.331677955264126, -72.258636031420281, 434.21858998491359, -118.814942892089, 334.94108883242177, 323.13292089250547, -102.64074664127116, 76.530896222466083, 379.88647764729637); + TestUtils.AreEqual(a1 + b1, r1); + + double3x4 a2 = double3x4(-236.49194895312746, -172.54221566605486, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759, 402.16034693371523, -117.02482729639149, 497.37375592504338); + double b2 = (-160.5840962680914); + double3x4 r2 = double3x4(-397.07604522121886, -333.12631193414626, -403.5251824350679, 305.76000275544817, 77.40336183337655, 103.70991854728658, 212.28274402966855, -359.42187326002022, -542.51507116785046, 241.57625066562383, -277.60892356448289, 336.789659656952); + TestUtils.AreEqual(a2 + b2, r2); + + double3x4 a3 = double3x4(485.90928124166521, 77.81479338454767, -271.54797304400614, -133.25178605562627, 211.86678777070097, 253.15022504196975, -342.78316823708974, -185.24833997769667, -403.38548845955427, -358.84824125787628, 65.247578889712486, 127.2016943093397); + double b3 = (-47.757128976172339); + double3x4 r3 = double3x4(438.15215226549287, 30.057664408375331, -319.30510202017848, -181.00891503179861, 164.10965879452863, 205.39309606579741, -390.54029721326208, -233.005468953869, -451.14261743572661, -406.60537023404862, 17.490449913540147, 79.444565333167361); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double3x4 b0 = double3x4(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328); + double3x4 r0 = double3x4(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626, -362.56777970984939, -94.7077846968117, -465.68709824312805, -307.4885689259919); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-138.61435825126915); + double3x4 b1 = double3x4(26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146); + double3x4 r1 = double3x4(-111.71019463972669, -513.15194058471911, 15.853242404690548, 129.76946216904065, -329.57738081066748, 50.002895378508981, -643.53048211500538, -118.16034465570016, 59.330987004251654, 112.79758649356546, -559.70473363236738, -27.168957722917696); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-73.268883024001923); + double3x4 b2 = double3x4(480.88455770950975, 438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067, -413.48026890935387, -260.720191361718, 77.542334831106587); + double3x4 r2 = double3x4(407.61567468550783, 364.78412931262704, -6.4245939284678, -344.06488243866011, -117.2908049175939, 124.42583614421352, -54.154953028147531, 275.96888555026095, 292.96560968689874, -486.74915193335579, -333.9890743857199, 4.2734518071046637); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (183.95489009840173); + double3x4 b3 = double3x4(-51.498981738229759, -472.4974751288525, 107.12689285498436, 349.07720033688338, 431.59597774576207, -314.11096468293618, 396.99665302643393, -167.30862935227742, -157.11451895400626, 287.76251591730977, -367.33903544365387, 96.2368000001818); + double3x4 r3 = double3x4(132.45590836017197, -288.54258503045077, 291.0817829533861, 533.03209043528511, 615.5508678441638, -130.15607458453445, 580.95154312483567, 16.646260746124312, 26.840371144395476, 471.7174060157115, -183.38414534525214, 280.19169009858354); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_sub_wide_wide() + { + double3x4 a0 = double3x4(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double3x4 b0 = double3x4(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double3x4 r0 = double3x4(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a0 - b0, r0); + + double3x4 a1 = double3x4(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double3x4 b1 = double3x4(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double3x4 r1 = double3x4(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a1 - b1, r1); + + double3x4 a2 = double3x4(-308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012, 388.48155969590016, 138.71817285321572, -385.57360547854267, -149.36481745045859); + double3x4 b2 = double3x4(-221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004, 72.119071755613732, -154.88059170305758, -469.65998361523265, -320.61543217330029); + double3x4 r2 = double3x4(-87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884, 316.36248794028643, 293.5987645562733, 84.086378136689973, 171.2506147228417); + TestUtils.AreEqual(a2 - b2, r2); + + double3x4 a3 = double3x4(-158.53404982319756, 508.07069015319962, 482.70080326623315, 114.56930237383085, 364.83137505353955, 229.03103052313952, -168.08806689460204, 373.44110911592895, -239.90097748483578, 379.92848437834925, 113.01185970800555, 306.83529319746197); + double3x4 b3 = double3x4(6.4122865229902573, -278.86505783668952, 15.838054425939049, 27.518323672711062, 429.86960979451874, -458.62247178453134, -172.064416250244, -284.52470673458868, 42.606667776874588, -223.47425208961323, -56.92974641589899, 61.8073423196596); + double3x4 r3 = double3x4(-164.94633634618782, 786.93574798988914, 466.8627488402941, 87.050978701119789, -65.038234740979192, 687.65350230767081, 3.9763493556419576, 657.96581585051763, -282.50764526171037, 603.40273646796254, 169.94160612390453, 245.02795087780237); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_sub_wide_scalar() + { + double3x4 a0 = double3x4(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252); + double b0 = (-291.59041442144212); + double3x4 r0 = double3x4(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695, -86.3352790280876, -178.67162855838973, 692.12533410830667, 753.09797941944464); + TestUtils.AreEqual(a0 - b0, r0); + + double3x4 a1 = double3x4(-246.28726660753006, 246.35072171238755, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124); + double b1 = (21.605312595891405); + double3x4 r1 = double3x4(-267.89257920342146, 224.74540911649615, -143.03267437919629, -144.32373673483897, -144.54403359468279, 338.54564157991933, 321.26926627814271, -2.6754851353705362, 142.99703986151007, 75.4383759849884, 464.3096687571657, -227.36296950437264); + TestUtils.AreEqual(a1 - b1, r1); + + double3x4 a2 = double3x4(253.44322717070725, 187.99838813953022, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121, -189.19323381650878, 269.07481659067548, -59.118566302172155); + double b2 = (-121.16305619159857); + double3x4 r2 = double3x4(374.60628336230582, 309.16144433112879, -329.65721717926544, -126.91031509587089, 94.166990800838448, 562.71567561603888, 571.07366588482341, 476.0490829777201, 219.98454199544369, -68.030177624910209, 390.23787278227405, 62.044489889426416); + TestUtils.AreEqual(a2 - b2, r2); + + double3x4 a3 = double3x4(363.45839207407948, -46.155220768486743, 109.9132454907118, 182.64693483274755, 229.01577411825576, -144.92867405010793, 469.25061414635309, -150.49230797146089, -192.31251177206286, -224.35684810595438, 285.87681855162452, -63.010835438506149); + double b3 = (-73.779217515969265); + double3x4 r3 = double3x4(437.23760959004875, 27.623996747482522, 183.69246300668107, 256.42615234871681, 302.794991634225, -71.149456534138665, 543.02983166232229, -76.713090455491624, -118.5332942560936, -150.57763058998512, 359.65603606759379, 10.768382077463116); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double3x4 b0 = double3x4(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641); + double3x4 r0 = double3x4(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464, -46.618469259989638, 680.361515361984, 219.19171248152463, -60.357257394286421); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (169.13141520746581); + double3x4 b1 = double3x4(88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848); + double3x4 r1 = double3x4(80.914806880482843, 167.39640863584179, 46.593375227690331, 434.07644292063844, 219.96859560719156, 516.78173804505809, 165.06585653362129, 248.22683965797853, -185.22692402881898, 461.62392685451721, 222.34039841515028, 415.47901554381428); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (299.20334138497867); + double3x4 b2 = double3x4(432.18467422583353, -163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042, -65.531290323255234, 440.38039776328037, 427.36063142649857); + double3x4 r2 = double3x4(-132.98133284085486, 463.0833422909879, 122.4607859228089, 404.18918294654657, 745.00097166420937, 328.07649675387728, 468.7915704049131, 569.56258752642316, 231.15571414267447, 364.73463170823391, -141.1770563783017, -128.1572900415199); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-81.472953595906915); + double3x4 b3 = double3x4(41.713177461974851, 175.82078059754372, -214.94915900703018, -163.44686253529363, -218.82914672551169, 389.1168579483018, -74.109779154001615, -448.13723751908969, -410.37498278653948, 363.21098177657041, -263.53538120143833, 473.54599283335074); + double3x4 r3 = double3x4(-123.18613105788177, -257.29373419345063, 133.47620541112326, 81.973908939386718, 137.35619312960478, -470.58981154420871, -7.3631744419053007, 366.66428392318278, 328.90202919063256, -444.68393537247732, 182.06242760553141, -555.01894642925765); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mul_wide_wide() + { + double3x4 a0 = double3x4(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double3x4 b0 = double3x4(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double3x4 r0 = double3x4(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a0 * b0, r0); + + double3x4 a1 = double3x4(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double3x4 b1 = double3x4(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double3x4 r1 = double3x4(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a1 * b1, r1); + + double3x4 a2 = double3x4(-83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629, -416.21309037516505, -103.27920513194016, -52.951897407393858, -40.828328390060165); + double3x4 b2 = double3x4(-189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596, 296.68037738310193, 341.001815239434, -257.09682166627459, 17.593622931089953); + double3x4 r2 = double3x4(15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038, -123482.25672429107, -35218.396426477462, 13613.764524639606, -718.31821460143351); + TestUtils.AreEqual(a2 * b2, r2); + + double3x4 a3 = double3x4(-86.185078899462269, -257.3165096050671, 363.85721819654907, -229.86001001571304, 8.925310854299596, -2.4494049560508984, 37.75829531520526, 264.45176113045386, -321.251278788434, -268.25605762575572, 43.91368081230371, 274.83309877795773); + double3x4 b3 = double3x4(-443.84511658355831, 291.3492387697795, 490.1916594403757, 361.32099049227361, -509.28972244136486, 315.35265913389276, 125.08305054767197, -167.72711451711467, 396.8876833379677, -0.32041144385954112, 143.41152603151818, -396.34749597885997); + double3x4 r3 = double3x4(38252.826391895, -74968.969196332953, 178359.77358712527, -83053.246493441373, -4545.5690876891422, -772.42636618638653, 4722.9227615057453, -44355.730823380291, -127500.67580770116, 85.95231074793665, 6297.7279789534741, -108929.41051275423); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mul_wide_scalar() + { + double3x4 a0 = double3x4(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794); + double b0 = (192.21119055161773); + double3x4 r0 = double3x4(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959, -8981.8711609324328, -45824.109082604613, 81128.978632794271, -9386.6022026424689); + TestUtils.AreEqual(a0 * b0, r0); + + double3x4 a1 = double3x4(355.30832998608628, -196.995807977857, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731); + double b1 = (119.35660391643489); + double3x4 r1 = double3x4(42408.39561035925, -23512.750626011144, 11725.115895759591, -38856.799837899605, 6437.7757971417432, -10437.852435932567, -15572.948995972518, -26568.132099181617, 15040.726275269915, 35014.583148776452, 20813.63821643246, -39043.941469222867); + TestUtils.AreEqual(a1 * b1, r1); + + double3x4 a2 = double3x4(56.629123475695565, -475.60871551726422, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707, 120.01444226131514, -59.508660105759589, 319.48987236595246); + double b2 = (257.54154241156834); + double3x4 r2 = double3x4(14584.35180534579, -122489.00217870105, -116586.9687476805, -12676.35057079227, 36468.126964807481, 111151.24256198283, 46448.952740874527, -10539.489603593216, 71994.066329993, 30908.704571643215, -15325.952110483087, 82281.9145140025); + TestUtils.AreEqual(a2 * b2, r2); + + double3x4 a3 = double3x4(-403.52316040709763, -335.39319554688092, -364.24254601273805, 150.68615085942952, 391.87204212316874, 179.3124121070432, 354.52978460608506, 497.76140164665946, 418.43656964713546, -413.33335967237753, -329.5207184895504, -322.70306339985837); + double b3 = (-408.19309849673562); + double3x4 r3 = double3x4(164715.36916176844, 136905.18770500287, 148681.29346127933, -61509.046819857074, -159959.46308849956, -73194.089096897529, -144716.61128773814, -203182.76885022805, -170802.91988860932, 168719.82479673345, 134508.08309912015, 131725.16334357671); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double3x4 b0 = double3x4(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514); + double3x4 r0 = double3x4(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215, -228458.89803045939, -23181.225114435249, -197177.59217890151, -74380.402533339569); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (-395.99208492599058); + double3x4 b1 = double3x4(125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382); + double3x4 r1 = double3x4(-49578.877699568278, 104944.1670650809, -124601.32420133064, 115911.64319954457, 14940.733323125947, -65482.130504472349, -141178.20041352851, 74768.583839978208, -199942.63055607979, -16066.235922134923, 81881.305260923924, 24394.173877692614); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (118.97158938225903); + double3x4 b2 = double3x4(53.7483275186961, -198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562, 340.74862186086762, 438.98690172610191, -227.16596637813655); + double3x4 r2 = double3x4(6394.523951537486, -23636.01638687048, 11449.363305046692, -2408.2087147671054, -3702.86889341192, 4626.8604942640131, -1562.4904910942491, 60422.253632894513, 11304.434586318854, 40539.405122601791, 52226.969416347893, -27026.296073563721); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (452.57297894571582); + double3x4 b3 = double3x4(144.01496774703958, -31.586035981581574, 42.297746916440246, -466.02715013270597, 287.454008951529, 328.99688378395365, -164.24312146205602, -511.26830100979112, -9.5943138644072974, 431.19011875204285, -132.14180642559279, -87.502642910695954); + double3x4 r3 = double3x4(65177.282966048886, -14294.986397270941, 19142.817324665328, -210911.29560514109, 130093.91714108193, 148895.09975796138, -74331.998751425723, -231386.2180285161, -4342.1272065549929, 195144.996535569, -59803.810977298665, -39601.331767716889); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_div_wide_wide() + { + double3x4 a0 = double3x4(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double3x4 b0 = double3x4(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double3x4 r0 = double3x4(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a0 / b0, r0); + + double3x4 a1 = double3x4(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double3x4 b1 = double3x4(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double3x4 r1 = double3x4(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a1 / b1, r1); + + double3x4 a2 = double3x4(315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819, -106.2345221537326, 414.31254239301779, 7.1208250555772565, 274.07367361433512); + double3x4 b2 = double3x4(-218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027, 220.25550351862591, -67.234494002179474, 2.229160071457386, -166.21096118083733); + double3x4 r2 = double3x4(-1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134, -0.48232403030396409, -6.1622021336189041, 3.1943982609206638, -1.6489506568471335); + TestUtils.AreEqual(a2 / b2, r2); + + double3x4 a3 = double3x4(-39.002680081409721, 39.065917748522907, -147.36416608996882, 434.38489290437894, 315.06720390686166, -106.63602714735828, -507.92525195885696, -17.176462896716089, -385.86535543290216, 226.00214849505676, 345.16843072751931, 201.5441692813971); + double3x4 b3 = double3x4(-247.73257290932003, 84.1609476004545, 477.14862726496006, 209.75077615014777, -386.72219985850256, -65.2773316210496, 410.45482773820629, 367.65071862174693, -456.57203862470203, 382.42795079873315, -163.86067278862964, -213.72138867793672); + double3x4 r3 = double3x4(0.15743864290178045, 0.464181058582947, -0.3088433198156047, 2.0709572611708924, -0.81471196642484278, 1.6335843469583855, -1.2374693087611059, -0.046719514002603893, 0.84513575687905829, 0.59096660697271775, -2.1064751221470064, -0.94302292591365366); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_div_wide_scalar() + { + double3x4 a0 = double3x4(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815); + double b0 = (-60.024377612408443); + double3x4 r0 = double3x4(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415, 5.8130349541308268, 4.590446295887566, -3.507873469437639, -4.7920929982948417); + TestUtils.AreEqual(a0 / b0, r0); + + double3x4 a1 = double3x4(504.37224626185946, -26.63160015392657, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678); + double b1 = (491.78708600056689); + double3x4 r1 = double3x4(1.0255906684407692, -0.05415270329789805, -0.51493152212922777, 0.55490501632632983, 0.36214080890026995, -0.9371445558862519, -1.0220805515742548, -0.17146605825986788, -0.35521538758274346, 0.17039143901317477, 0.40066539466642881, 0.64493004041920121); + TestUtils.AreEqual(a1 / b1, r1); + + double3x4 a2 = double3x4(403.38711781212464, 60.606869964211683, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443, 147.86623079509764, 506.6588964437409, -435.77857300070048); + double b2 = (81.646461763254592); + double3x4 r2 = double3x4(4.94065644855257, 0.742308590664343, -5.0652590705621705, 2.5394976530900575, 4.3916428946617758, 0.25413315349748711, -0.83992777621798842, 3.8054614476788506, 5.1123452617901393, 1.8110549753381424, 6.2055217764717066, -5.337384665416387); + TestUtils.AreEqual(a2 / b2, r2); + + double3x4 a3 = double3x4(210.67294011389504, -19.190853366251474, 416.5117301496266, 427.01360555506017, 417.1994099175555, -150.91182310456031, 488.98551463009119, -294.73874129668752, -357.29805271574207, 288.77164591884787, 453.4291381563196, 70.724425587209112); + double b3 = (-218.78147636110964); + double3x4 r3 = double3x4(-0.96293773868757038, 0.087716993620502046, -1.9037796849956046, -1.9517813512248774, -1.9069229116497379, 0.6897833656423128, -2.2350407482532773, 1.3471832542632936, 1.6331275328172847, -1.3199090285057589, -2.0725206982693196, -0.32326514457958477); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double3x4 b0 = double3x4(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557); + double3x4 r0 = double3x4(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514, -0.088244069266411956, 0.21712338579666474, -0.20837898685020731, -0.08514735549618288); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-211.10257468517057); + double3x4 b1 = double3x4(-322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663); + double3x4 r1 = double3x4(0.65386725700800707, 1.5298918757560602, -2.5032993794111431, -0.59454886559021247, -0.76368223047667771, 0.55119889640693076, 0.43201432758733604, -0.61216470906286558, -1.2502003225088718, 4.7765531010394247, -0.50196699874113548, 1.2020745776594923); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-9.2205684227964753); + double3x4 b2 = double3x4(-344.19428865248074, -449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984, -490.49213360738577, 485.75540922850155, -317.57225504404505); + double3x4 r2 = double3x4(0.026788847830377906, 0.02053251783658458, -0.078336306064650474, 0.027358511370073814, -0.038516383023364104, 0.023681639022834274, -0.03798911431613599, -0.018579499700682109, -0.1005012609230303, 0.018798606116234018, -0.018981916099382184, 0.029034552850083353); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-451.62477871944418); + double3x4 b3 = double3x4(394.01837677230048, -262.27140939527726, -314.24678697914203, 359.91591446470284, -101.61536865197837, 359.5172828917938, -424.97987981558771, -192.71958431635034, -169.7497170761925, -244.79002224877013, -187.14385255945092, -207.71366343633906); + double3x4 r3 = double3x4(-1.1462023228942793, 1.7219748799945886, 1.4371659391044802, -1.2548063605110056, 4.4444534789438208, -1.2561976856488777, 1.0626968479435275, 2.3434296017269292, 2.6605333222248113, 1.8449476599192278, 2.4132493402420168, 2.1742661086802313); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mod_wide_wide() + { + double3x4 a0 = double3x4(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double3x4 b0 = double3x4(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double3x4 r0 = double3x4(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a0 % b0, r0); + + double3x4 a1 = double3x4(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double3x4 b1 = double3x4(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double3x4 r1 = double3x4(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a1 % b1, r1); + + double3x4 a2 = double3x4(156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078, 7.7614462411783052, 238.09472309709281, 12.852037674212852, -100.2406762113053); + double3x4 b2 = double3x4(-131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288, 132.18024951414213, -179.87732204230377, 51.968538546920058, 367.21425860338582); + double3x4 r2 = double3x4(25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078, 7.7614462411783052, 58.217401054789036, 12.852037674212852, -100.2406762113053); + TestUtils.AreEqual(a2 % b2, r2); + + double3x4 a3 = double3x4(34.551971690054984, -251.18974530472872, -238.37224423064487, 511.51466512657453, 288.43353118022605, 367.10986702847754, 44.760454437118256, -437.04559084262962, -259.20560252815744, -228.56581531677665, 83.497246065874265, 424.36707397194914); + double3x4 b3 = double3x4(-395.21279234216212, 270.48524988372128, -73.104129586882948, 89.3499706207541, -288.30852355077332, -168.32464631289463, 311.61589994636176, -468.34193752163179, 381.9839486470371, -1.398853541071901, -102.28859357828674, -87.424866478622391); + double3x4 r3 = double3x4(34.551971690054984, -251.18974530472872, -19.059855469996023, 64.764812022804, 0.12500762945273891, 30.46057440268828, 44.760454437118256, -437.04559084262962, -259.20560252815744, -0.552688122056793, 83.497246065874265, 74.667608057459574); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mod_wide_scalar() + { + double3x4 a0 = double3x4(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309); + double b0 = (-90.499235433758827); + double3x4 r0 = double3x4(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914, -84.473635951277629, -47.283777258956661, 71.457748684779517, -54.6001856581309); + TestUtils.AreEqual(a0 % b0, r0); + + double3x4 a1 = double3x4(-172.33886607565864, 222.36186109406958, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606); + double b1 = (-429.71466728193434); + double3x4 r1 = double3x4(-172.33886607565864, 222.36186109406958, 5.796394112425105, 254.51082885196, -3.3790297523975141, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 53.835923696791724); + TestUtils.AreEqual(a1 % b1, r1); + + double3x4 a2 = double3x4(-331.99334660730949, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444, -304.153164289963, -295.52024735860539, 313.72239532774427); + double b2 = (335.99997655302286); + double3x4 r2 = double3x4(-331.99334660730949, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 69.773624452656918, -194.76144489774549, 235.72397314557986, 129.98490148875158, -304.153164289963, -295.52024735860539, 313.72239532774427); + TestUtils.AreEqual(a2 % b2, r2); + + double3x4 a3 = double3x4(-232.20264135683078, 244.09660899084838, 162.52424080787421, 390.01615423244243, 90.004538339564874, 155.93352062810845, 217.33769641506376, -306.81927671414769, 149.09372074394196, 503.82839917756075, -194.13014063338289, 214.86302171222076); + double b3 = (191.61973127705028); + double3x4 r3 = double3x4(-40.582910079780504, 52.4768777137981, 162.52424080787421, 6.7766916783418765, 90.004538339564874, 155.93352062810845, 25.717965138013483, -115.19954543709741, 149.09372074394196, 120.5889366234602, -2.510409356332616, 23.243290435170479); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double3x4 b0 = double3x4(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463); + double3x4 r0 = double3x4(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278, -24.355308544056129, -195.41010484258186, -14.154983765517727, -137.47093397819947); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (106.98357563232241); + double3x4 b1 = double3x4(469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082); + double3x4 r1 = double3x4(106.98357563232241, 2.5566205990299409, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241, 3.3301491752881702, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (499.95350598727987); + double3x4 b2 = double3x4(-433.52306505363578, -163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526, 271.07511461483091, 423.70268912972074, -413.23324675729185); + double3x4 r2 = double3x4(66.430440933644093, 8.3529381790911543, 145.94548399091968, 57.352848318104179, 4.7861311457984357, 20.68866826067142, 67.512540371861633, 114.56933289140898, 231.82172976798461, 228.87839137244896, 76.25081685755913, 86.720259229988017); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (127.95621091125361); + double3x4 b3 = double3x4(-298.20467843590518, -352.41809122283854, -175.60771592688172, -152.89928944078241, 34.619420306114193, -380.80295556634803, 0.35205721871557216, 485.90088986135129, 266.1508249091687, 483.82075928329527, 11.777843242407698, 274.1358426893762); + double3x4 r3 = double3x4(127.95621091125361, 127.95621091125361, 127.95621091125361, 127.95621091125361, 24.097949992911026, 127.95621091125361, 0.15944051750091148, 127.95621091125361, 127.95621091125361, 127.95621091125361, 10.177778487176624, 127.95621091125361); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_plus() + { + double3x4 a0 = double3x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835); + double3x4 r0 = double3x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835); + TestUtils.AreEqual(+a0, r0); + + double3x4 a1 = double3x4(377.23016208095021, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304); + double3x4 r1 = double3x4(377.23016208095021, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304); + TestUtils.AreEqual(+a1, r1); + + double3x4 a2 = double3x4(-364.80255644619581, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914); + double3x4 r2 = double3x4(-364.80255644619581, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914); + TestUtils.AreEqual(+a2, r2); + + double3x4 a3 = double3x4(-29.083537353707243, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589, 87.649255078122565); + double3x4 r3 = double3x4(-29.083537353707243, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589, 87.649255078122565); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double3x4_operator_neg() + { + double3x4 a0 = double3x4(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446); + double3x4 r0 = double3x4(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446); + TestUtils.AreEqual(-a0, r0); + + double3x4 a1 = double3x4(-410.39206070936848, -349.14948885010062, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645); + double3x4 r1 = double3x4(410.39206070936848, 349.14948885010062, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645); + TestUtils.AreEqual(-a1, r1); + + double3x4 a2 = double3x4(175.01502259774838, -306.1655677790593, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679, 363.71671049842462, 280.88790405955535, -270.65131939139746); + double3x4 r2 = double3x4(-175.01502259774838, 306.1655677790593, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679, -363.71671049842462, -280.88790405955535, 270.65131939139746); + TestUtils.AreEqual(-a2, r2); + + double3x4 a3 = double3x4(-201.61574015469091, 95.489228054643263, 191.07025322274785, 371.97357361948752, 296.51257981756362, -164.16993697181806, -347.45810691800813, -237.40496050445591, -228.70196615378467, 61.082260875535326, 128.33153134599866, 331.25579587149241); + double3x4 r3 = double3x4(201.61574015469091, -95.489228054643263, -191.07025322274785, -371.97357361948752, -296.51257981756362, 164.16993697181806, 347.45810691800813, 237.40496050445591, 228.70196615378467, -61.082260875535326, -128.33153134599866, -331.25579587149241); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double3x4_operator_prefix_inc() + { + double3x4 a0 = double3x4(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627); + double3x4 r0 = double3x4(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627); + TestUtils.AreEqual(++a0, r0); + + double3x4 a1 = double3x4(363.2849182390072, -326.87781992874937, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367); + double3x4 r1 = double3x4(364.2849182390072, -325.87781992874937, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367); + TestUtils.AreEqual(++a1, r1); + + double3x4 a2 = double3x4(-271.28932893988178, -377.55920785365589, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289, 117.95409851798513, 139.52581245243823, 335.68968192473505); + double3x4 r2 = double3x4(-270.28932893988178, -376.55920785365589, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289, 118.95409851798513, 140.52581245243823, 336.68968192473505); + TestUtils.AreEqual(++a2, r2); + + double3x4 a3 = double3x4(162.6615141195532, -254.73151385725083, -89.256037038404486, 314.36555233335378, 244.72812830876933, 34.010626570326622, -90.445278448260069, -472.63621614530507, -34.566777483824069, -71.271847996521672, -396.49010748252743, -314.987458614161); + double3x4 r3 = double3x4(163.6615141195532, -253.73151385725083, -88.256037038404486, 315.36555233335378, 245.72812830876933, 35.010626570326622, -89.445278448260069, -471.63621614530507, -33.566777483824069, -70.271847996521672, -395.49010748252743, -313.987458614161); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double3x4_operator_postfix_inc() + { + double3x4 a0 = double3x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874); + double3x4 r0 = double3x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874); + TestUtils.AreEqual(a0++, r0); + + double3x4 a1 = double3x4(159.86103184514729, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923); + double3x4 r1 = double3x4(159.86103184514729, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923); + TestUtils.AreEqual(a1++, r1); + + double3x4 a2 = double3x4(-341.49855271982892, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185); + double3x4 r2 = double3x4(-341.49855271982892, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185); + TestUtils.AreEqual(a2++, r2); + + double3x4 a3 = double3x4(64.577020436793987, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578, 439.299990143301); + double3x4 r3 = double3x4(64.577020436793987, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578, 439.299990143301); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double3x4_operator_prefix_dec() + { + double3x4 a0 = double3x4(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811); + double3x4 r0 = double3x4(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811); + TestUtils.AreEqual(--a0, r0); + + double3x4 a1 = double3x4(400.720900006928, -326.45297852459038, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357); + double3x4 r1 = double3x4(399.720900006928, -327.45297852459038, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357); + TestUtils.AreEqual(--a1, r1); + + double3x4 a2 = double3x4(-406.667706917351, -188.69222578252305, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329, 345.02153913351776, 4.7353689692613443, -68.653318198701982); + double3x4 r2 = double3x4(-407.667706917351, -189.69222578252305, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329, 344.02153913351776, 3.7353689692613443, -69.653318198701982); + TestUtils.AreEqual(--a2, r2); + + double3x4 a3 = double3x4(481.496122346025, -357.67329399551886, 153.32965023505017, -233.62431751639781, -35.238318221288864, 340.61965743667429, 259.92884195033878, 335.35490886091952, 85.364882747347, -1.3939745432668929, -407.41038651364408, -145.79341251486608); + double3x4 r3 = double3x4(480.496122346025, -358.67329399551886, 152.32965023505017, -234.62431751639781, -36.238318221288864, 339.61965743667429, 258.92884195033878, 334.35490886091952, 84.364882747347, -2.3939745432668929, -408.41038651364408, -146.79341251486608); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double3x4_operator_postfix_dec() + { + double3x4 a0 = double3x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443); + double3x4 r0 = double3x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443); + TestUtils.AreEqual(a0--, r0); + + double3x4 a1 = double3x4(-261.00890052551819, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933); + double3x4 r1 = double3x4(-261.00890052551819, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933); + TestUtils.AreEqual(a1--, r1); + + double3x4 a2 = double3x4(379.15614026559342, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133); + double3x4 r2 = double3x4(379.15614026559342, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133); + TestUtils.AreEqual(a2--, r2); + + double3x4 a3 = double3x4(449.63778540568319, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139, -240.61070048092432); + double3x4 r3 = double3x4(449.63778540568319, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139, -240.61070048092432); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x4.gen.cs.meta new file mode 100644 index 0000000..20c7480 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a43acb77473e8f64189c28afbb4c366a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4.gen.cs new file mode 100644 index 0000000..f36dbc3 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4.gen.cs @@ -0,0 +1,1069 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble4 + { + [TestCompiler] + public static void double4_zero() + { + TestUtils.AreEqual(double4.zero.x, 0.0); + TestUtils.AreEqual(double4.zero.y, 0.0); + TestUtils.AreEqual(double4.zero.z, 0.0); + TestUtils.AreEqual(double4.zero.w, 0.0); + } + + [TestCompiler] + public static void double4_constructor() + { + double4 a = new double4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void double4_scalar_constructor() + { + double4 a = new double4(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + TestUtils.AreEqual(a.z, 17.0); + TestUtils.AreEqual(a.w, 17.0); + } + + [TestCompiler] + public static void double4_static_constructor() + { + double4 a = double4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void double4_static_scalar_constructor() + { + double4 a = double4(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + TestUtils.AreEqual(a.z, 17.0); + TestUtils.AreEqual(a.w, 17.0); + } + + [TestCompiler] + public static void double4_operator_equal_wide_wide() + { + double4 a0 = double4(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757); + double4 b0 = double4(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4 a1 = double4(314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564); + double4 b1 = double4(208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4 a2 = double4(168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double4 b2 = double4(194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4 a3 = double4(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double4 b3 = double4(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4_operator_equal_wide_scalar() + { + double4 a0 = double4(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588); + double b0 = (-155.8157547245807); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4 a1 = double4(152.99450476141385, 314.67125597348024, 386.36515325417986, 290.04894007837811); + double b1 = (-155.86829836474186); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4 a2 = double4(-132.63519460178691, -69.683271678948415, -191.19075521789063, 186.84520086406042); + double b2 = (-65.667489797653388); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4 a3 = double4(-232.89569221851218, -49.701092981594172, -300.88189925853248, 333.39685193328046); + double b3 = (-319.14406481345372); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double4 b0 = double4(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (499.14180993435059); + double4 b1 = double4(-211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-30.865948453017495); + double4 b2 = double4(-362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (390.36923879681581); + double4 b3 = double4(505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4_operator_not_equal_wide_wide() + { + double4 a0 = double4(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557); + double4 b0 = double4(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4 a1 = double4(85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018); + double4 b1 = double4(-62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4 a2 = double4(332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double4 b2 = double4(3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4 a3 = double4(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double4 b3 = double4(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4_operator_not_equal_wide_scalar() + { + double4 a0 = double4(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464); + double b0 = (-393.41354173860213); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4 a1 = double4(59.177048472304364, -58.923273352404692, -398.17684835855704, 492.20105361016522); + double b1 = (171.15146430356026); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4 a2 = double4(-165.24150879925185, -380.24326222960059, 501.8990516615562, -134.34545642433011); + double b2 = (270.34102333259818); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4 a3 = double4(458.40042302496749, 161.45995123752391, 261.51423442620512, -145.61239559278471); + double b3 = (46.771004937016869); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double4 b0 = double4(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-266.73665369056937); + double4 b1 = double4(338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (209.43931422449612); + double4 b2 = double4(50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (270.40006149485714); + double4 b3 = double4(-472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_wide_wide() + { + double4 a0 = double4(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642); + double4 b0 = double4(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double4 a1 = double4(44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651); + double4 b1 = double4(-306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158); + bool4 r1 = bool4(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4 a2 = double4(-69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double4 b2 = double4(473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4 a3 = double4(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double4 b3 = double4(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_wide_scalar() + { + double4 a0 = double4(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193); + double b0 = (199.06751808853244); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double4 a1 = double4(67.118990214131259, 282.96659601990439, 258.27909362422258, -111.41316061439608); + double b1 = (137.32880574899207); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4 a2 = double4(-288.08113278452356, -361.64292042406413, -68.088202269788951, 12.788020378345664); + double b2 = (82.665427008022334); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4 a3 = double4(-66.703050406045747, 25.727694284975428, 101.37087182950734, -330.442660724019); + double b3 = (-78.762971199472872); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double4 b0 = double4(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-118.09757452742082); + double4 b1 = double4(-40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389); + bool4 r1 = bool4(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (13.684679276163024); + double4 b2 = double4(-458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055); + bool4 r2 = bool4(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-221.63786731550368); + double4 b3 = double4(-424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206); + bool4 r3 = bool4(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_wide_wide() + { + double4 a0 = double4(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071); + double4 b0 = double4(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966); + bool4 r0 = bool4(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double4 a1 = double4(-419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556); + double4 b1 = double4(151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double4 a2 = double4(489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double4 b2 = double4(-77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4 a3 = double4(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double4 b3 = double4(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_wide_scalar() + { + double4 a0 = double4(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008); + double b0 = (-302.81693877969724); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double4 a1 = double4(-491.18003033622171, 173.57509740329124, 69.269281181166548, 501.30683183172107); + double b1 = (405.17534632476759); + bool4 r1 = bool4(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4 a2 = double4(-367.027771405423, -489.09058998948456, -172.51816066192379, -18.149639853346002); + double b2 = (-86.124509613087639); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double4 a3 = double4(-236.41493498367021, -27.239137900638923, 471.77934072528933, 240.16453253485474); + double b3 = (-238.8945134798505); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double4 b0 = double4(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (87.475727837288673); + double4 b1 = double4(113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673); + bool4 r1 = bool4(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-158.29329188088576); + double4 b2 = double4(-162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (392.5205878655056); + double4 b3 = double4(-177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_equal_wide_wide() + { + double4 a0 = double4(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782); + double4 b0 = double4(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974); + bool4 r0 = bool4(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4 a1 = double4(-405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666); + double4 b1 = double4(-295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4 a2 = double4(-456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double4 b2 = double4(306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool4 r2 = bool4(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4 a3 = double4(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double4 b3 = double4(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_equal_wide_scalar() + { + double4 a0 = double4(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664); + double b0 = (292.92427148154206); + bool4 r0 = bool4(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4 a1 = double4(-346.01106731314724, -410.87006945669191, -483.90265320423185, 183.82114538169515); + double b1 = (424.15386577330241); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4 a2 = double4(320.44249287268258, -386.801748694294, -182.9388249772316, 349.25012962392077); + double b2 = (-257.87003791419329); + bool4 r2 = bool4(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4 a3 = double4(485.31159304329731, 259.15151822713744, 450.13007828692446, -128.5255282523695); + double b3 = (373.56911652794531); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double4 b0 = double4(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (136.39671165142056); + double4 b1 = double4(-94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-506.30010127755816); + double4 b2 = double4(27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-480.43516968210935); + double4 b3 = double4(421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_equal_wide_wide() + { + double4 a0 = double4(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793); + double4 b0 = double4(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4 a1 = double4(-5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493); + double4 b1 = double4(-225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319); + bool4 r1 = bool4(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double4 a2 = double4(152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double4 b2 = double4(-322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool4 r2 = bool4(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double4 a3 = double4(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double4 b3 = double4(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool4 r3 = bool4(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_equal_wide_scalar() + { + double4 a0 = double4(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246); + double b0 = (189.20512804258851); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double4 a1 = double4(-246.86571776441565, 53.815095211293169, -123.33294373533357, -221.50546441856096); + double b1 = (-377.65869706573835); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4 a2 = double4(252.99433410027734, -395.36331028275345, 164.77259667439978, -287.00733889593153); + double b2 = (-116.44038277326172); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double4 a3 = double4(355.83704559683667, 273.01225555735277, -418.14240308205706, 249.38409697701411); + double b3 = (184.19556316369938); + bool4 r3 = bool4(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double4 b0 = double4(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-239.62025677395064); + double4 b1 = double4(-185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (416.42054791768112); + double4 b2 = double4(379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-367.25635474140586); + double4 b3 = double4(494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4_operator_add_wide_wide() + { + double4 a0 = double4(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336); + double4 b0 = double4(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634); + double4 r0 = double4(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168); + TestUtils.AreEqual(a0 + b0, r0); + + double4 a1 = double4(-473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118); + double4 b1 = double4(-270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398); + double4 r1 = double4(-744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a1 + b1, r1); + + double4 a2 = double4(-178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double4 b2 = double4(244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double4 r2 = double4(65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a2 + b2, r2); + + double4 a3 = double4(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double4 b3 = double4(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double4 r3 = double4(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4_operator_add_wide_scalar() + { + double4 a0 = double4(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916); + double b0 = (500.99725913489112); + double4 r0 = double4(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029); + TestUtils.AreEqual(a0 + b0, r0); + + double4 a1 = double4(-36.254356162741033, -2.7912590516690443, -478.41478489265535, 443.11525246273504); + double b1 = (-349.64130060264904); + double4 r1 = double4(-385.89565676539007, -352.43255965431808, -828.05608549530439, 93.473951860086); + TestUtils.AreEqual(a1 + b1, r1); + + double4 a2 = double4(268.092225914864, -471.25607584009697, -2.6649749291431704, 78.985822952811532); + double b2 = (41.32102133767728); + double4 r2 = double4(309.41324725254128, -429.93505450241969, 38.65604640853411, 120.30684429048881); + TestUtils.AreEqual(a2 + b2, r2); + + double4 a3 = double4(202.14799151297098, 10.345855002452595, -151.24445898423181, 355.23276703210206); + double b3 = (311.7254551908585); + double4 r3 = double4(513.87344670382947, 322.07131019331109, 160.48099620662668, 666.95822222296056); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double4 b0 = double4(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134); + double4 r0 = double4(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-158.70021040677102); + double4 b1 = double4(-199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421); + double4 r1 = double4(-358.18390195359655, 21.617880831294656, 178.87915858015378, -195.75522527273523); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (230.80498014707348); + double4 b2 = double4(-140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458); + double4 r2 = double4(90.63064674783061, 248.82917606496676, 92.190621895804327, 257.70914375861594); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (-374.53758233345); + double4 b3 = double4(154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813); + double4 r3 = double4(-220.06998167749032, -106.15376191314022, -565.50060489284829, -185.92032870367188); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4_operator_sub_wide_wide() + { + double4 a0 = double4(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409); + double4 b0 = double4(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764); + double4 r0 = double4(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664); + TestUtils.AreEqual(a0 - b0, r0); + + double4 a1 = double4(-337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537); + double4 b1 = double4(207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307); + double4 r1 = double4(-544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a1 - b1, r1); + + double4 a2 = double4(110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double4 b2 = double4(-477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double4 r2 = double4(588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a2 - b2, r2); + + double4 a3 = double4(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double4 b3 = double4(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double4 r3 = double4(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4_operator_sub_wide_scalar() + { + double4 a0 = double4(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666); + double b0 = (-291.59041442144212); + double4 r0 = double4(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878); + TestUtils.AreEqual(a0 - b0, r0); + + double4 a1 = double4(-460.06732318367222, 204.35834441164434, 180.26971420099483, -377.92569344952972); + double b1 = (110.91942339340198); + double4 r1 = double4(-570.9867465770742, 93.438921018242354, 69.350290807592842, -488.8451168429317); + TestUtils.AreEqual(a1 - b1, r1); + + double4 a2 = double4(-470.26204297983185, 461.50756499800252, -246.28726660753006, 21.605312595891405); + double b2 = (400.53491968686455); + double4 r2 = double4(-870.79696266669634, 60.972645311137967, -646.82218629439467, -378.92960709097315); + TestUtils.AreEqual(a2 - b2, r2); + + double4 a3 = double4(246.35072171238755, -122.71842413894757, -122.93872099879138, 360.15095417581074); + double b3 = (-121.42736178330489); + double4 r3 = double4(367.77808349569244, -1.29106235564268, -1.5113592154864932, 481.57831595911563); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double4 b0 = double4(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968); + double4 r0 = double4(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (488.22838829840919); + double4 b1 = double4(-333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963); + double4 r1 = double4(821.44566860303541, 552.46137740111976, 554.27011849464384, 147.02345997980956); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-385.775056303374); + double4 b2 = double4(75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964); + double4 r2 = double4(-461.16980288045937, -740.71877275627048, -554.90647151083976, -473.991664630357); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (1.7350065716240124); + double4 b3 = double4(122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228); + double4 r3 = double4(-120.80303340815146, 266.68003428479665, 52.572186971349765, 349.3853294092163); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4_operator_mul_wide_wide() + { + double4 a0 = double4(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626); + double4 b0 = double4(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219); + double4 r0 = double4(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383); + TestUtils.AreEqual(a0 * b0, r0); + + double4 a1 = double4(-93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105); + double4 b1 = double4(-326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538); + double4 r1 = double4(30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a1 * b1, r1); + + double4 a2 = double4(-239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double4 b2 = double4(358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double4 r2 = double4(-85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a2 * b2, r2); + + double4 a3 = double4(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double4 b3 = double4(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double4 r3 = double4(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4_operator_mul_wide_scalar() + { + double4 a0 = double4(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102); + double b0 = (192.21119055161773); + double4 r0 = double4(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449); + TestUtils.AreEqual(a0 * b0, r0); + + double4 a1 = double4(357.90315811610924, -477.31047104173825, -438.272912467957, -46.729179165665585); + double b1 = (134.86723214707672); + double4 r1 = double4(48269.408311817213, -64373.542104216656, -59108.654629591387, -6302.235054578161); + TestUtils.AreEqual(a1 * b1, r1); + + double4 a2 = double4(-238.40500103608008, -48.83483722099794, 355.30832998608628, 119.35660391643489); + double b2 = (422.08249374017237); + double4 r2 = double4(-100626.57735743705, -20612.3298756342, 149969.42596718337, 50378.333025406864); + TestUtils.AreEqual(a2 * b2, r2); + + double4 a3 = double4(-196.995807977857, -325.55215683837991, 53.937323833786536, -87.4509838034636); + double b3 = (98.2360046367329); + double4 r3 = double4(-19352.081105929705, -31980.943188673486, 5298.5871942288177, -8590.8352504039049); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double4 b0 = double4(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489); + double4 r0 = double4(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (266.22629297255833); + double4 b1 = double4(-97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423); + double4 r1 = double4(-26062.156247174364, 42529.146026845636, -93664.326117500037, 130930.51061760196); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (49.902031206480274); + double4 b2 = double4(424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248); + double4 r2 = double4(21181.544350206073, 7990.2172332881028, -19760.809379495968, 6247.8185709406853); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-265.01581991138676); + double4 b3 = double4(314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444); + double4 r3 = double4(-83388.843747802981, 77573.316056417083, 9999.0147339576815, -43823.604475403918); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4_operator_div_wide_wide() + { + double4 a0 = double4(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082); + double4 b0 = double4(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724); + double4 r0 = double4(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435); + TestUtils.AreEqual(a0 / b0, r0); + + double4 a1 = double4(-308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931); + double4 b1 = double4(-261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438); + double4 r1 = double4(1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a1 / b1, r1); + + double4 a2 = double4(-274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double4 b2 = double4(484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double4 r2 = double4(-0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a2 / b2, r2); + + double4 a3 = double4(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double4 b3 = double4(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double4 r3 = double4(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4_operator_div_wide_scalar() + { + double4 a0 = double4(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923); + double b0 = (-60.024377612408443); + double4 r0 = double4(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752); + TestUtils.AreEqual(a0 / b0, r0); + + double4 a1 = double4(403.24561257066466, 131.52659160062979, -261.88639200007844, -348.92380516087815); + double b1 = (154.34436066185322); + double4 r1 = double4(2.6126358672353378, 0.85216324740743876, -1.6967668327956258, -2.2606838608462096); + TestUtils.AreEqual(a1 / b1, r1); + + double4 a2 = double4(-275.53868187383688, 287.64239968342815, 504.37224626185946, 491.78708600056689); + double b2 = (210.55792174607416); + double4 r2 = double4(-1.308612279171939, 1.3660963087882074, 2.39540855114497, 2.3356380131527215); + TestUtils.AreEqual(a2 / b2, r2); + + double4 a3 = double4(-26.63160015392657, 272.89512098622276, 178.09617313095191, -460.87559030059521); + double b3 = (-253.23667275776933); + double4 r3 = double4(0.10516486361910435, -1.0776287573769281, -0.70327954948810989, 1.8199401582781043); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double4 b0 = double4(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967); + double4 r0 = double4(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-326.62061253498337); + double4 b1 = double4(163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984); + double4 r1 = double4(-1.9950548408181534, -0.97888939316060053, -8.5299406242357652, 0.69055938482624146); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (192.23013958345643); + double4 b2 = double4(-200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058); + double4 r2 = double4(-0.95972613030893628, -0.3921611446125986, -0.91060063985548412, -0.59541194261204144); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-137.98529035317961); + double4 b3 = double4(84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729); + double4 r3 = double4(-1.6362590187453818, -0.38862149346102726, -0.49917398907636662, 0.36028617782843814); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4_operator_mod_wide_wide() + { + double4 a0 = double4(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612); + double4 b0 = double4(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381); + double4 r0 = double4(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312); + TestUtils.AreEqual(a0 % b0, r0); + + double4 a1 = double4(-197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273); + double4 b1 = double4(-154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516); + double4 r1 = double4(-42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a1 % b1, r1); + + double4 a2 = double4(-140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double4 b2 = double4(-145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double4 r2 = double4(-140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a2 % b2, r2); + + double4 a3 = double4(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double4 b3 = double4(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double4 r3 = double4(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4_operator_mod_wide_scalar() + { + double4 a0 = double4(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155); + double b0 = (-90.499235433758827); + double4 r0 = double4(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074); + TestUtils.AreEqual(a0 % b0, r0); + + double4 a1 = double4(-120.80601626299602, -450.80766245853511, 186.09479698263794, -84.473635951277629); + double b1 = (-502.939041133476); + double4 r1 = double4(-120.80601626299602, -450.80766245853511, 186.09479698263794, -84.473635951277629); + TestUtils.AreEqual(a1 % b1, r1); + + double4 a2 = double4(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434); + double b2 = (433.45469041981482); + double4 r2 = double4(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434); + TestUtils.AreEqual(a2 % b2, r2); + + double4 a3 = double4(222.36186109406958, 254.51082885196, -433.09369703433185, -203.08261284748215); + double b3 = (5.796394112425105); + double4 r3 = double4(2.09888482191559, 5.2658820176804966, -4.16053271487408, -0.20881891260347629); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double4 b0 = double4(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477); + double4 r0 = double4(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (399.63502020371845); + double4 b1 = double4(206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797); + double4 r1 = double4(192.94031485958965, 2.5901975643774904, 5.7443728473709825, 27.567925942860484); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (201.01229796233224); + double4 b2 = double4(-95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773); + double4 r2 = double4(9.8785884426340544, 201.01229796233224, 94.028722330009828, 201.01229796233224); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-34.808985011097491); + double4 b3 = double4(184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683); + double4 r3 = double4(-34.808985011097491, -34.808985011097491, -34.808985011097491, -34.808985011097491); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4_operator_plus() + { + double4 a0 = double4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045); + double4 r0 = double4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045); + TestUtils.AreEqual(+a0, r0); + + double4 a1 = double4(315.44952860262686, 190.32466015141677, -350.30858270745193, -320.51845875406565); + double4 r1 = double4(315.44952860262686, 190.32466015141677, -350.30858270745193, -320.51845875406565); + TestUtils.AreEqual(+a1, r1); + + double4 a2 = double4(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813); + double4 r2 = double4(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813); + TestUtils.AreEqual(+a2, r2); + + double4 a3 = double4(34.283600107898792, 465.35593555185756, 309.59316530339106, -316.93713655925222); + double4 r3 = double4(34.283600107898792, 465.35593555185756, 309.59316530339106, -316.93713655925222); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double4_operator_neg() + { + double4 a0 = double4(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592); + double4 r0 = double4(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592); + TestUtils.AreEqual(-a0, r0); + + double4 a1 = double4(-33.014395013923945, -495.8379526063045, -270.85946787095605, 19.686896571743773); + double4 r1 = double4(33.014395013923945, 495.8379526063045, 270.85946787095605, -19.686896571743773); + TestUtils.AreEqual(-a1, r1); + + double4 a2 = double4(268.23670662019254, 223.38126312167446, -410.39206070936848, -395.68154186554324); + double4 r2 = double4(-268.23670662019254, -223.38126312167446, 410.39206070936848, 395.68154186554324); + TestUtils.AreEqual(-a2, r2); + + double4 a3 = double4(-349.14948885010062, -238.21960913307015, 292.54351224216794, 469.29257867731735); + double4 r3 = double4(349.14948885010062, 238.21960913307015, -292.54351224216794, -469.29257867731735); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double4_operator_prefix_inc() + { + double4 a0 = double4(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633); + double4 r0 = double4(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633); + TestUtils.AreEqual(++a0, r0); + + double4 a1 = double4(-315.728967098393, -323.61485853959567, -456.89028832730384, -76.507656371457358); + double4 r1 = double4(-314.728967098393, -322.61485853959567, -455.89028832730384, -75.507656371457358); + TestUtils.AreEqual(++a1, r1); + + double4 a2 = double4(-305.58477344437722, 148.67930967578627, 363.2849182390072, -115.5592263283018); + double4 r2 = double4(-304.58477344437722, 149.67930967578627, 364.2849182390072, -114.5592263283018); + TestUtils.AreEqual(++a2, r2); + + double4 a3 = double4(-326.87781992874937, 339.8765849265626, -38.410431164507941, -153.3736775635619); + double4 r3 = double4(-325.87781992874937, 340.8765849265626, -37.410431164507941, -152.3736775635619); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double4_operator_postfix_inc() + { + double4 a0 = double4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888); + double4 r0 = double4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888); + TestUtils.AreEqual(a0++, r0); + + double4 a1 = double4(-31.420532002775246, 271.45466840986842, 55.736877228942149, 153.75031645305); + double4 r1 = double4(-31.420532002775246, 271.45466840986842, 55.736877228942149, 153.75031645305); + TestUtils.AreEqual(a1++, r1); + + double4 a2 = double4(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816); + double4 r2 = double4(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816); + TestUtils.AreEqual(a2++, r2); + + double4 a3 = double4(241.46487509527469, -170.10464366250886, -270.65246380057766, -162.86024792625579); + double4 r3 = double4(241.46487509527469, -170.10464366250886, -270.65246380057766, -162.86024792625579); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double4_operator_prefix_dec() + { + double4 a0 = double4(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341); + double4 r0 = double4(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341); + TestUtils.AreEqual(--a0, r0); + + double4 a1 = double4(439.47906156977592, 337.96895734312432, 246.08898293510492, 171.96452935597142); + double4 r1 = double4(438.47906156977592, 336.96895734312432, 245.08898293510492, 170.96452935597142); + TestUtils.AreEqual(--a1, r1); + + double4 a2 = double4(-227.44280134301761, 326.50782338087811, 400.720900006928, -478.03137253133178); + double4 r2 = double4(-228.44280134301761, 325.50782338087811, 399.720900006928, -479.03137253133178); + TestUtils.AreEqual(--a2, r2); + + double4 a3 = double4(-326.45297852459038, 112.79684668071422, -341.97629300783217, -503.27416181158003); + double4 r3 = double4(-327.45297852459038, 111.79684668071422, -342.97629300783217, -504.27416181158003); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double4_operator_postfix_dec() + { + double4 a0 = double4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555); + double4 r0 = double4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555); + TestUtils.AreEqual(a0--, r0); + + double4 a1 = double4(409.55752940175944, -281.11170376516492, -262.062590959511, -182.40572866350681); + double4 r1 = double4(409.55752940175944, -281.11170376516492, -262.062590959511, -182.40572866350681); + TestUtils.AreEqual(a1--, r1); + + double4 a2 = double4(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423); + double4 r2 = double4(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423); + TestUtils.AreEqual(a2--, r2); + + double4 a3 = double4(-230.22777878038016, 378.64123433578811, 487.34482287212495, -192.17785772689518); + double4 r3 = double4(-230.22777878038016, 378.64123433578811, 487.34482287212495, -192.17785772689518); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void double4_shuffle_result_1() + { + double4 a = double4(0, 1, 2, 3); + double4 b = double4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW), (7)); + } + + [TestCompiler] + public static void double4_shuffle_result_2() + { + double4 a = double4(0, 1, 2, 3); + double4 b = double4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), double2(5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX), double2(6, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), double2(1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftW), double2(7, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftZ), double2(7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), double2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW), double2(5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), double2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightW), double2(6, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ), double2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), double2(6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), double2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), double2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightY), double2(7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), double2(4, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW), double2(1, 3)); + } + + [TestCompiler] + public static void double4_shuffle_result_3() + { + double4 a = double4(0, 1, 2, 3); + double4 b = double4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightY), double3(2, 7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.LeftW), double3(6, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightX), double3(2, 7, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), double3(5, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), double3(7, 6, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightX), double3(3, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightW), double3(3, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.RightZ), double3(6, 5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), double3(5, 4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightW, ShuffleComponent.LeftX), double3(7, 7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(6, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightW), double3(6, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightY), double3(3, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), double3(6, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightW), double3(5, 1, 7)); + } + + [TestCompiler] + public static void double4_shuffle_result_4() + { + double4 a = double4(0, 1, 2, 3); + double4 b = double4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ), double4(1, 3, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightZ), double4(5, 3, 6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.RightW, ShuffleComponent.LeftZ), double4(6, 6, 7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ), double4(4, 5, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), double4(6, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightW), double4(4, 5, 5, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightW, ShuffleComponent.LeftX, ShuffleComponent.RightW), double4(1, 7, 0, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftX), double4(5, 0, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightW, ShuffleComponent.LeftW, ShuffleComponent.LeftY), double4(4, 7, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), double4(5, 4, 1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double4(0, 2, 6, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightW, ShuffleComponent.RightW), double4(2, 5, 7, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ, ShuffleComponent.RightX), double4(3, 4, 2, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), double4(4, 0, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(6, 4, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.LeftY, ShuffleComponent.RightY), double4(3, 7, 1, 5)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4.gen.cs.meta new file mode 100644 index 0000000..47631bf --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 872190ea505e35646b9b1e492b8316c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x2.gen.cs new file mode 100644 index 0000000..037d8c0 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x2.gen.cs @@ -0,0 +1,945 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble4x2 + { + [TestCompiler] + public static void double4x2_zero() + { + TestUtils.AreEqual(double4x2.zero.c0.x, 0.0); + TestUtils.AreEqual(double4x2.zero.c0.y, 0.0); + TestUtils.AreEqual(double4x2.zero.c0.z, 0.0); + TestUtils.AreEqual(double4x2.zero.c0.w, 0.0); + TestUtils.AreEqual(double4x2.zero.c1.x, 0.0); + TestUtils.AreEqual(double4x2.zero.c1.y, 0.0); + TestUtils.AreEqual(double4x2.zero.c1.z, 0.0); + TestUtils.AreEqual(double4x2.zero.c1.w, 0.0); + } + + [TestCompiler] + public static void double4x2_operator_equal_wide_wide() + { + double4x2 a0 = double4x2(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564); + double4x2 b0 = double4x2(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x2 a1 = double4x2(168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574, 188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double4x2 b1 = double4x2(194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467, -494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x2 a2 = double4x2(417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double4x2 b2 = double4x2(260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x2 a3 = double4x2(-22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868); + double4x2 b3 = double4x2(-174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_equal_wide_scalar() + { + double4x2 a0 = double4x2(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986); + double b0 = (-155.8157547245807); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x2 a1 = double4x2(290.04894007837811, -65.667489797653388, -69.683271678948415, -191.19075521789063, 186.84520086406042, -232.89569221851218, -319.14406481345372, -49.701092981594172); + double b1 = (-132.63519460178691); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x2 a2 = double4x2(-300.88189925853248, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858); + double b2 = (333.39685193328046); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x2 a3 = double4x2(110.50128345866744, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218); + double b3 = (-390.10359329269437); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double4x2 b0 = double4x2(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-5.6915457275190988); + double4x2 b1 = double4x2(-30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (443.19909283295226); + double4x2 b2 = double4x2(96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-336.61242524562982); + double4x2 b3 = double4x2(365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_not_equal_wide_wide() + { + double4x2 a0 = double4x2(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018); + double4x2 b0 = double4x2(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x2 a1 = double4x2(332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072, 398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double4x2 b1 = double4x2(3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992, -406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x2 a2 = double4x2(-192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double4x2 b2 = double4x2(93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x2 a3 = double4x2(-72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391); + double4x2 b3 = double4x2(415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_not_equal_wide_scalar() + { + double4x2 a0 = double4x2(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704); + double b0 = (-393.41354173860213); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x2 a1 = double4x2(492.20105361016522, 270.34102333259818, -380.24326222960059, 501.8990516615562, -134.34545642433011, 458.40042302496749, 46.771004937016869, 161.45995123752391); + double b1 = (-165.24150879925185); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x2 a2 = double4x2(261.51423442620512, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778); + double b2 = (-145.61239559278471); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x2 a3 = double4x2(-80.932258882062627, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792); + double b3 = (-328.58774844211888); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double4x2 b0 = double4x2(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-452.82067868338); + double4x2 b1 = double4x2(209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-384.69186681541237); + double4x2 b2 = double4x2(443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-239.231014124691); + double4x2 b3 = double4x2(411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_wide_wide() + { + double4x2 a0 = double4x2(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651); + double4x2 b0 = double4x2(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158); + bool4x2 r0 = bool4x2(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x2 a1 = double4x2(-69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062, -19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double4x2 b1 = double4x2(473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916, -185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4x2 a2 = double4x2(7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double4x2 b2 = double4x2(73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool4x2 r2 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4x2 a3 = double4x2(269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373); + double4x2 b3 = double4x2(-382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766); + bool4x2 r3 = bool4x2(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_wide_scalar() + { + double4x2 a0 = double4x2(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258); + double b0 = (199.06751808853244); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double4x2 a1 = double4x2(-111.41316061439608, 82.665427008022334, -361.64292042406413, -68.088202269788951, 12.788020378345664, -66.703050406045747, -78.762971199472872, 25.727694284975428); + double b1 = (-288.08113278452356); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double4x2 a2 = double4x2(101.37087182950734, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904); + double b2 = (-330.442660724019); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4x2 a3 = double4x2(-98.315578744893685, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025); + double b3 = (300.41017617863145); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double4x2 b0 = double4x2(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-458.904539560389); + double4x2 b1 = double4x2(13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-22.136127720650336); + double4x2 b2 = double4x2(-442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863); + bool4x2 r2 = bool4x2(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (122.16476803746298); + double4x2 b3 = double4x2(96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_wide_wide() + { + double4x2 a0 = double4x2(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556); + double4x2 b0 = double4x2(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207); + bool4x2 r0 = bool4x2(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + double4x2 a1 = double4x2(489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526, -425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double4x2 b1 = double4x2(-77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131, -206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool4x2 r1 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4x2 a2 = double4x2(8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double4x2 b2 = double4x2(364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double4x2 a3 = double4x2(105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911); + double4x2 b3 = double4x2(-352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_wide_scalar() + { + double4x2 a0 = double4x2(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548); + double b0 = (-302.81693877969724); + bool4x2 r0 = bool4x2(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double4x2 a1 = double4x2(501.30683183172107, -86.124509613087639, -489.09058998948456, -172.51816066192379, -18.149639853346002, -236.41493498367021, -238.8945134798505, -27.239137900638923); + double b1 = (-367.027771405423); + bool4x2 r1 = bool4x2(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4x2 a2 = double4x2(471.77934072528933, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845); + double b2 = (240.16453253485474); + bool4x2 r2 = bool4x2(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4x2 a3 = double4x2(-7.3478887115362568, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031); + double b3 = (-261.86596477304863); + bool4x2 r3 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double4x2 b0 = double4x2(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (-182.48286804113673); + double4x2 b1 = double4x2(-158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-24.048938524000789); + double4x2 b2 = double4x2(172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956); + bool4x2 r2 = bool4x2(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-361.52483360912879); + double4x2 b3 = double4x2(-372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421); + bool4x2 r3 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_equal_wide_wide() + { + double4x2 a0 = double4x2(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666); + double4x2 b0 = double4x2(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952); + bool4x2 r0 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x2 a1 = double4x2(-456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697, 84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double4x2 b1 = double4x2(306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706, -280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool4x2 r1 = bool4x2(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x2 a2 = double4x2(36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double4x2 b2 = double4x2(95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool4x2 r2 = bool4x2(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x2 a3 = double4x2(-77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737); + double4x2 b3 = double4x2(-216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_equal_wide_scalar() + { + double4x2 a0 = double4x2(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185); + double b0 = (292.92427148154206); + bool4x2 r0 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x2 a1 = double4x2(183.82114538169515, -257.87003791419329, -386.801748694294, -182.9388249772316, 349.25012962392077, 485.31159304329731, 373.56911652794531, 259.15151822713744); + double b1 = (320.44249287268258); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x2 a2 = double4x2(450.13007828692446, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862); + double b2 = (-128.5255282523695); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x2 a3 = double4x2(87.9161055497434, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275); + double b3 = (-502.17362308044619); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double4x2 b0 = double4x2(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (-148.61806089646092); + double4x2 b1 = double4x2(-506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431); + bool4x2 r1 = bool4x2(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-101.01844673092404); + double4x2 b2 = double4x2(-283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588); + bool4x2 r2 = bool4x2(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-116.01998215355911); + double4x2 b3 = double4x2(-442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873); + bool4x2 r3 = bool4x2(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_equal_wide_wide() + { + double4x2 a0 = double4x2(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493); + double4x2 b0 = double4x2(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319); + bool4x2 r0 = bool4x2(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x2 a1 = double4x2(152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338, 349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double4x2 b1 = double4x2(-322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864, 73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool4x2 r1 = bool4x2(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x2 a2 = double4x2(-131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double4x2 b2 = double4x2(381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool4x2 r2 = bool4x2(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x2 a3 = double4x2(-223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255); + double4x2 b3 = double4x2(453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221); + bool4x2 r3 = bool4x2(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_equal_wide_scalar() + { + double4x2 a0 = double4x2(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357); + double b0 = (189.20512804258851); + bool4x2 r0 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x2 a1 = double4x2(-221.50546441856096, -116.44038277326172, -395.36331028275345, 164.77259667439978, -287.00733889593153, 355.83704559683667, 184.19556316369938, 273.01225555735277); + double b1 = (252.99433410027734); + bool4x2 r1 = bool4x2(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x2 a2 = double4x2(-418.14240308205706, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234); + double b2 = (249.38409697701411); + bool4x2 r2 = bool4x2(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x2 a3 = double4x2(71.176674637560154, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706); + double b3 = (-331.27167788672807); + bool4x2 r3 = bool4x2(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double4x2 b0 = double4x2(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (79.39918831707871); + double4x2 b1 = double4x2(416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856); + bool4x2 r1 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-429.17024846988278); + double4x2 b2 = double4x2(-213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-400.47050280145857); + double4x2 b3 = double4x2(-283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719); + bool4x2 r3 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_add_wide_wide() + { + double4x2 a0 = double4x2(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118); + double4x2 b0 = double4x2(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398); + double4x2 r0 = double4x2(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a0 + b0, r0); + + double4x2 a1 = double4x2(-178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068, 491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double4x2 b1 = double4x2(244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515, 462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double4x2 r1 = double4x2(65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328, 953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a1 + b1, r1); + + double4x2 a2 = double4x2(284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double4x2 b2 = double4x2(-269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double4x2 r2 = double4x2(14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a2 + b2, r2); + + double4x2 a3 = double4x2(-62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207); + double4x2 b3 = double4x2(492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005); + double4x2 r3 = double4x2(429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_add_wide_scalar() + { + double4x2 a0 = double4x2(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535); + double b0 = (500.99725913489112); + double4x2 r0 = double4x2(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776); + TestUtils.AreEqual(a0 + b0, r0); + + double4x2 a1 = double4x2(443.11525246273504, 41.32102133767728, -471.25607584009697, -2.6649749291431704, 78.985822952811532, 202.14799151297098, 311.7254551908585, 10.345855002452595); + double b1 = (268.092225914864); + double4x2 r1 = double4x2(711.207478377599, 309.41324725254128, -203.16384992523297, 265.42725098572083, 347.07804886767553, 470.240217427835, 579.8176811057225, 278.4380809173166); + TestUtils.AreEqual(a1 + b1, r1); + + double4x2 a2 = double4x2(-151.24445898423181, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746); + double b2 = (355.23276703210206); + double4x2 r2 = double4x2(203.98830804787025, 157.43200118720154, 611.1880329117123, 599.379864971796, 173.60619743801936, 352.77784030175661, 656.1334217265869, 118.7408180789746); + TestUtils.AreEqual(a2 + b2, r2); + + double4x2 a3 = double4x2(-160.5840962680914, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759); + double b3 = (-172.54221566605486); + double4x2 r3 = double4x2(-333.12631193414626, -415.48330183303136, 293.80188335748471, 65.445242435413093, 91.751799149323119, 200.32462463170509, -371.37999265798368, -554.47319056581387); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double4x2 b0 = double4x2(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481); + double4x2 r0 = double4x2(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-37.05501486596421); + double4x2 b1 = double4x2(230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098); + double4x2 r1 = double4x2(193.74996528110927, -177.22934826520708, -19.03081894807093, -175.66937311723336, -10.150851254421752, -411.59259719941423, 117.41258578999549, 231.32880555434559); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-190.96302255939833); + double4x2 b2 = double4x2(188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923); + double4x2 r2 = double4x2(-2.345768929620192, -695.87914642313456, -170.50900896382933, 6.9823226961224805, 60.448922185436288, -612.05339794049655, -79.517622031046869, -264.23190558340025); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (480.88455770950975); + double4x2 b3 = double4x2(438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067); + double4x2 r3 = double4x2(918.93757004613872, 547.72884680504387, 210.08855829485157, 436.86263581591777, 678.57927687772519, 499.99848770536414, 830.12232628377262, 847.11905042041042); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_sub_wide_wide() + { + double4x2 a0 = double4x2(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537); + double4x2 b0 = double4x2(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307); + double4x2 r0 = double4x2(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a0 - b0, r0); + + double4x2 a1 = double4x2(110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254, -470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double4x2 b1 = double4x2(-477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321, -446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double4x2 r1 = double4x2(588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464, -23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a1 - b1, r1); + + double4x2 a2 = double4x2(-508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double4x2 b2 = double4x2(-210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double4x2 r2 = double4x2(-297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a2 - b2, r2); + + double4x2 a3 = double4x2(-308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012); + double4x2 b3 = double4x2(-221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004); + double4x2 r3 = double4x2(-87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_sub_wide_scalar() + { + double4x2 a0 = double4x2(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483); + double b0 = (-291.59041442144212); + double4x2 r0 = double4x2(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695); + TestUtils.AreEqual(a0 - b0, r0); + + double4x2 a1 = double4x2(-377.92569344952972, 400.53491968686455, 461.50756499800252, -246.28726660753006, 21.605312595891405, 246.35072171238755, -121.42736178330489, -122.71842413894757); + double b1 = (-470.26204297983185); + double4x2 r1 = double4x2(92.33634953030213, 870.79696266669634, 931.76960797783431, 223.97477637230179, 491.86735557572325, 716.61276469221934, 348.83468119652696, 347.54361884088428); + TestUtils.AreEqual(a1 - b1, r1); + + double4x2 a2 = double4x2(-122.93872099879138, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725); + double b2 = (360.15095417581074); + double4x2 r2 = double4x2(-483.08967517460212, -17.276375301776625, -341.22112671528987, -195.54860171840926, -263.10726559493094, 125.76402717724636, -565.908611084292, -106.70772700510349); + TestUtils.AreEqual(a2 - b2, r2); + + double4x2 a3 = double4x2(-121.16305619159857, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121); + double b3 = (187.99838813953022); + double4x2 r3 = double4x2(-309.16144433112879, -638.81866151039424, -436.07175942699968, -214.99445353029034, 253.55423128491009, 261.91222155369462, 166.88763864659131, -89.1769023356851); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double4x2 b0 = double4x2(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653); + double4x2 r0 = double4x2(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (341.20492831859963); + double4x2 b1 = double4x2(-385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264); + double4x2 r1 = double4x2(726.9799846219737, 265.81018174151427, -13.738788134296783, 172.07351311113382, 252.98831999161666, 339.46992174697561, 218.66688833882415, 606.14995603177226); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-50.837180399725753); + double4x2 b2 = double4x2(-347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867); + double4x2 r2 = double4x2(296.81314243786653, -54.902739073570274, 28.258244050786971, -405.19551963601054, 241.65533124732565, 2.3718028079587157, 195.51041993662272, -350.04052178470442); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (432.18467422583353); + double4x2 b3 = double4x2(-163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042); + double4x2 r3 = double4x2(596.06467513184271, 255.44211876366376, 537.17051578740143, 877.98230450506423, 461.05782959473214, 601.772903245768, 702.54392036727813, 364.13704698352933); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mul_wide_wide() + { + double4x2 a0 = double4x2(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105); + double4x2 b0 = double4x2(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538); + double4x2 r0 = double4x2(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a0 * b0, r0); + + double4x2 a1 = double4x2(-239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887, 467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double4x2 b1 = double4x2(358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773, 184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double4x2 r1 = double4x2(-85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876, 86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a1 * b1, r1); + + double4x2 a2 = double4x2(464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double4x2 b2 = double4x2(-358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double4x2 r2 = double4x2(-166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a2 * b2, r2); + + double4x2 a3 = double4x2(-83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629); + double4x2 b3 = double4x2(-189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596); + double4x2 r3 = double4x2(15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mul_wide_scalar() + { + double4x2 a0 = double4x2(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957); + double b0 = (192.21119055161773); + double4x2 r0 = double4x2(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959); + TestUtils.AreEqual(a0 * b0, r0); + + double4x2 a1 = double4x2(-46.729179165665585, 422.08249374017237, -48.83483722099794, 355.30832998608628, 119.35660391643489, -196.995807977857, 98.2360046367329, -325.55215683837991); + double b1 = (-238.40500103608008); + double4x2 r1 = double4x2(11140.470007405675, -100626.57735743705, 11642.469418268816, -84707.28277846078, -28455.211280360661, 46964.785805064428, -23419.954787200673, 77613.262288352067); + TestUtils.AreEqual(a1 * b1, r1); + + double4x2 a2 = double4x2(53.937323833786536, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565); + double b2 = (-87.4509838034636); + double4x2 r2 = double4x2(-4716.8720329906373, 11410.090985601793, 19466.114263107731, -11020.138532190962, -25654.7157287796, -15249.873729908933, 28606.9725596326, -4952.2725598773932); + TestUtils.AreEqual(a2 * b2, r2); + + double4x2 a3 = double4x2(257.54154241156834, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707); + double b3 = (-475.60871551726422); + double4x2 r3 = double4x2(-122489.00217870105, 215304.21046994952, 23409.748796123691, -67346.645751367163, -205265.91247392457, -85778.498270021737, 19463.551649317793, -132953.32897149969); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double4x2 b0 = double4x2(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719); + double4x2 r0 = double4x2(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (491.80157660497423); + double4x2 b1 = double4x2(49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236); + double4x2 r1 = double4x2(24541.897623137622, 208751.36050587788, 78746.322298740954, -194749.53168969302, 61574.387840378076, -130335.19805767993, 154748.36498495867, -143956.23307234381); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (-37.729878681586058); + double4x2 b2 = double4x2(165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903); + double4x2 r2 = double4x2(-6239.0965218592164, -13451.370814855052, 7123.9039992519283, -19050.409039281636, -1530.7809304450689, 7801.599656624363, 2324.2616607220198, -4488.7836339481055); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (53.7483275186961); + double4x2 b3 = double4x2(-198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562); + double4x2 r3 = double4x2(-10678.14893114493, 5172.530114084163, -1087.9672315614384, -1672.8616560919363, 2090.2974779128417, -705.89332374427579, 27297.232007583982, 5107.0550180423643); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_div_wide_wide() + { + double4x2 a0 = double4x2(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931); + double4x2 b0 = double4x2(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438); + double4x2 r0 = double4x2(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a0 / b0, r0); + + double4x2 a1 = double4x2(-274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897, -136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double4x2 b1 = double4x2(484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831, 397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double4x2 r1 = double4x2(-0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668, -0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a1 / b1, r1); + + double4x2 a2 = double4x2(-24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double4x2 b2 = double4x2(-84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double4x2 r2 = double4x2(0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a2 / b2, r2); + + double4x2 a3 = double4x2(315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819); + double4x2 b3 = double4x2(-218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027); + double4x2 r3 = double4x2(-1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_div_wide_scalar() + { + double4x2 a0 = double4x2(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844); + double b0 = (-60.024377612408443); + double4x2 r0 = double4x2(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415); + TestUtils.AreEqual(a0 / b0, r0); + + double4x2 a1 = double4x2(-348.92380516087815, 210.55792174607416, 287.64239968342815, 504.37224626185946, 491.78708600056689, -26.63160015392657, -253.23667275776933, 272.89512098622276); + double b1 = (-275.53868187383688); + double4x2 r1 = double4x2(1.26633328862567, -0.76416828415577609, -1.0439274722782237, -1.8304952423805252, -1.7848204929199212, 0.096652854593100634, 0.91906033314669355, -0.990405844763297); + TestUtils.AreEqual(a1 / b1, r1); + + double4x2 a2 = double4x2(178.09617313095191, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464); + double b2 = (-460.87559030059521); + double4x2 r2 = double4x2(-0.3864300407291974, 1.0906327579395469, 0.18296649879987137, 0.37904012284083372, -0.18181980351156884, -0.42753851809715948, -0.68818629566630174, -0.87526249231169939); + TestUtils.AreEqual(a2 / b2, r2); + + double4x2 a3 = double4x2(81.646461763254592, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443); + double b3 = (60.606869964211683); + double4x2 r3 = double4x2(1.3471486287192653, -6.8236568110156472, 3.4210807809960628, 5.9161957033683157, 0.34235512924624228, -1.1315075519552849, 5.1265221708845941, 6.88708890896002); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double4x2 b0 = double4x2(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473); + double4x2 r0 = double4x2(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-472.97976062864984); + double4x2 b1 = double4x2(192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578); + double4x2 r1 = double4x2(-2.4604870061143891, 2.3613936730535827, 0.96490740062224467, 2.2405210421238673, 1.4650033480822544, 3.4277549398058063, -5.6086949343062837, -1.332099243925746); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (276.42724455354141); + double4x2 b2 = double4x2(-382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753); + double4x2 r2 = double4x2(-0.72176472675406045, -0.56569907004079412, 0.80159611502386607, 1.637068760560944, -6.2546343366637984, 0.65729825666863562, -1.574050736926506, -29.979414703991178); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-344.19428865248074); + double4x2 b3 = double4x2(-449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984); + double4x2 r3 = double4x2(0.766457668003967, -2.9242133353648381, 1.0212649511208138, -1.4377767669308814, 0.8840111068897808, -1.4180943710859133, -0.69355351967072676, -3.751608190071702); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mod_wide_wide() + { + double4x2 a0 = double4x2(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273); + double4x2 b0 = double4x2(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516); + double4x2 r0 = double4x2(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a0 % b0, r0); + + double4x2 a1 = double4x2(-140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467, -64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double4x2 b1 = double4x2(-145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892, -435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double4x2 r1 = double4x2(-140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467, -64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a1 % b1, r1); + + double4x2 a2 = double4x2(119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double4x2 b2 = double4x2(-433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double4x2 r2 = double4x2(119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a2 % b2, r2); + + double4x2 a3 = double4x2(156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078); + double4x2 b3 = double4x2(-131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288); + double4x2 r3 = double4x2(25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mod_wide_scalar() + { + double4x2 a0 = double4x2(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794); + double b0 = (-90.499235433758827); + double4x2 r0 = double4x2(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914); + TestUtils.AreEqual(a0 % b0, r0); + + double4x2 a1 = double4x2(-84.473635951277629, 433.45469041981482, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105, 254.51082885196); + double b1 = (-318.78148356023314); + double4x2 r1 = double4x2(-84.473635951277629, 114.67320685958168, -54.6001856581309, -172.33886607565864, -110.9331837217012, 222.36186109406958, 5.796394112425105, 254.51082885196); + TestUtils.AreEqual(a1 % b1, r1); + + double4x2 a2 = double4x2(-433.09369703433185, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949); + double b2 = (-203.08261284748215); + double4x2 r2 = double4x2(-26.928471339367547, -75.356399809641971, 49.206481002832959, -69.403906139267576, 5.3372299696026175, -75.977815186594512, 77.385365283761757, -128.91073375982734); + TestUtils.AreEqual(a2 % b2, r2); + + double4x2 a3 = double4x2(335.99997655302286, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444); + double b3 = (67.839589388966374); + double4x2 r3 = double4x2(64.641618997157366, -56.881177928709064, 38.175906437531125, 67.768218548860432, 66.57565406084791, -59.082266119812743, 32.20520497868074, 58.947341707976193); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double4x2 b0 = double4x2(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747); + double4x2 r0 = double4x2(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (-372.06709426085797); + double4x2 b1 = double4x2(201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992); + double4x2 r1 = double4x2(-171.05479629852573, -85.366529981310691, -113.11562543414334, -51.116367363890731, -372.06709426085797, -23.977244149883063, -2.3940255653086524, -372.06709426085797); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (-131.87271911086174); + double4x2 b2 = double4x2(-120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987); + double4x2 r2 = double4x2(-11.779859071494911, -1.1792683606881269, -20.470761785502873, -131.87271911086174, -131.87271911086174, -131.87271911086174, -131.87271911086174, -131.87271911086174); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-433.52306505363578); + double4x2 b3 = double4x2(-163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526); + double4x2 r3 = double4x2(-105.78935318150997, -79.515043057275591, -101.57257180175401, -9.093886618080262, -50.111194872349017, -1.08209943821754, -48.138891957764884, -165.39128883434051); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_plus() + { + double4x2 a0 = double4x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193); + double4x2 r0 = double4x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193); + TestUtils.AreEqual(+a0, r0); + + double4x2 a1 = double4x2(-320.51845875406565, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756); + double4x2 r1 = double4x2(-320.51845875406565, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756); + TestUtils.AreEqual(+a1, r1); + + double4x2 a2 = double4x2(309.59316530339106, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581); + double4x2 r2 = double4x2(309.59316530339106, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581); + TestUtils.AreEqual(+a2, r2); + + double4x2 a3 = double4x2(239.15236937215195, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652); + double4x2 r3 = double4x2(239.15236937215195, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double4x2_operator_neg() + { + double4x2 a0 = double4x2(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605); + double4x2 r0 = double4x2(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605); + TestUtils.AreEqual(-a0, r0); + + double4x2 a1 = double4x2(19.686896571743773, -180.60051473444349, 223.38126312167446, -410.39206070936848, -395.68154186554324, -349.14948885010062, -110.9393032113739, -238.21960913307015); + double4x2 r1 = double4x2(-19.686896571743773, 180.60051473444349, -223.38126312167446, 410.39206070936848, 395.68154186554324, 349.14948885010062, 110.9393032113739, 238.21960913307015); + TestUtils.AreEqual(-a1, r1); + + double4x2 a2 = double4x2(292.54351224216794, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838); + double4x2 r2 = double4x2(-292.54351224216794, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838); + TestUtils.AreEqual(-a2, r2); + + double4x2 a3 = double4x2(196.38759169186824, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679); + double4x2 r3 = double4x2(-196.38759169186824, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double4x2_operator_prefix_inc() + { + double4x2 a0 = double4x2(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384); + double4x2 r0 = double4x2(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384); + TestUtils.AreEqual(++a0, r0); + + double4x2 a1 = double4x2(-76.507656371457358, 64.0964734852763, 148.67930967578627, 363.2849182390072, -115.5592263283018, -326.87781992874937, -179.89464839729231, 339.8765849265626); + double4x2 r1 = double4x2(-75.507656371457358, 65.0964734852763, 149.67930967578627, 364.2849182390072, -114.5592263283018, -325.87781992874937, -178.89464839729231, 340.8765849265626); + TestUtils.AreEqual(++a1, r1); + + double4x2 a2 = double4x2(-38.410431164507941, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178); + double4x2 r2 = double4x2(-37.410431164507941, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178); + TestUtils.AreEqual(++a2, r2); + + double4x2 a3 = double4x2(-264.38006246480165, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289); + double4x2 r3 = double4x2(-263.38006246480165, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double4x2_operator_postfix_inc() + { + double4x2 a0 = double4x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149); + double4x2 r0 = double4x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149); + TestUtils.AreEqual(a0++, r0); + + double4x2 a1 = double4x2(153.75031645305, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886); + double4x2 r1 = double4x2(153.75031645305, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886); + TestUtils.AreEqual(a1++, r1); + + double4x2 a2 = double4x2(-270.65246380057766, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892); + double4x2 r2 = double4x2(-270.65246380057766, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892); + TestUtils.AreEqual(a2++, r2); + + double4x2 a3 = double4x2(188.00656685047159, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931); + double4x2 r3 = double4x2(188.00656685047159, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double4x2_operator_prefix_dec() + { + double4x2 a0 = double4x2(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492); + double4x2 r0 = double4x2(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492); + TestUtils.AreEqual(--a0, r0); + + double4x2 a1 = double4x2(171.96452935597142, 298.28480710568135, 326.50782338087811, 400.720900006928, -478.03137253133178, -326.45297852459038, -24.584499132160317, 112.79684668071422); + double4x2 r1 = double4x2(170.96452935597142, 297.28480710568135, 325.50782338087811, 399.720900006928, -479.03137253133178, -327.45297852459038, -25.584499132160317, 111.79684668071422); + TestUtils.AreEqual(--a1, r1); + + double4x2 a2 = double4x2(-341.97629300783217, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351); + double4x2 r2 = double4x2(-342.97629300783217, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351); + TestUtils.AreEqual(--a2, r2); + + double4x2 a3 = double4x2(181.47510703908051, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329); + double4x2 r3 = double4x2(180.47510703908051, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double4x2_operator_postfix_dec() + { + double4x2 a0 = double4x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511); + double4x2 r0 = double4x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511); + TestUtils.AreEqual(a0--, r0); + + double4x2 a1 = double4x2(-182.40572866350681, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811); + double4x2 r1 = double4x2(-182.40572866350681, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811); + TestUtils.AreEqual(a1--, r1); + + double4x2 a2 = double4x2(487.34482287212495, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342); + double4x2 r2 = double4x2(487.34482287212495, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342); + TestUtils.AreEqual(a2--, r2); + + double4x2 a3 = double4x2(311.29903068733358, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698); + double4x2 r3 = double4x2(311.29903068733358, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x2.gen.cs.meta new file mode 100644 index 0000000..9e9f480 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5dfd972b64a9fd4193994214128a39b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x3.gen.cs new file mode 100644 index 0000000..577d536 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x3.gen.cs @@ -0,0 +1,949 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble4x3 + { + [TestCompiler] + public static void double4x3_zero() + { + TestUtils.AreEqual(double4x3.zero.c0.x, 0.0); + TestUtils.AreEqual(double4x3.zero.c0.y, 0.0); + TestUtils.AreEqual(double4x3.zero.c0.z, 0.0); + TestUtils.AreEqual(double4x3.zero.c0.w, 0.0); + TestUtils.AreEqual(double4x3.zero.c1.x, 0.0); + TestUtils.AreEqual(double4x3.zero.c1.y, 0.0); + TestUtils.AreEqual(double4x3.zero.c1.z, 0.0); + TestUtils.AreEqual(double4x3.zero.c1.w, 0.0); + TestUtils.AreEqual(double4x3.zero.c2.x, 0.0); + TestUtils.AreEqual(double4x3.zero.c2.y, 0.0); + TestUtils.AreEqual(double4x3.zero.c2.z, 0.0); + TestUtils.AreEqual(double4x3.zero.c2.w, 0.0); + } + + [TestCompiler] + public static void double4x3_operator_equal_wide_wide() + { + double4x3 a0 = double4x3(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double4x3 b0 = double4x3(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x3 a1 = double4x3(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double4x3 b1 = double4x3(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x3 a2 = double4x3(-22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868, -68.728424342688356, 485.76997803420295, 413.16974969076443, -418.26928992675118); + double4x3 b2 = double4x3(-174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895, -468.3309554850361, 429.49572797748056, 477.38919781026857, -433.42541071093893); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x3 a3 = double4x3(-346.79586593564409, 504.15964889161273, 345.18627635817336, -434.71304126955243, -499.77411078837429, 282.01905192156278, 259.15627944616426, 306.4559306141249, 435.22542759181249, -386.89967864886842, 211.3639925510455, -7.2298214469244044); + double4x3 b3 = double4x3(273.54640329701192, -34.976225153997632, 221.96845422590548, 85.919132511093835, -85.598944942280184, 392.76080316713114, -117.92407732732784, -445.30559393638077, -242.46897208060557, 173.64309533575693, 389.8977403072164, -14.290465123155343); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_equal_wide_scalar() + { + double4x3 a0 = double4x3(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415); + double b0 = (-155.8157547245807); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x3 a1 = double4x3(-191.19075521789063, -232.89569221851218, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981); + double b1 = (186.84520086406042); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x3 a2 = double4x3(-410.91687483848858, -390.10359329269437, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218, -429.87391849508225, -275.15694750247383, -56.332365300661138); + double b2 = (110.50128345866744); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x3 a3 = double4x3(-95.835959717554942, 253.00615632394613, -300.50952949212376, 314.86654320120181, 195.61619886924336, -26.128909838445907, -284.7746838465215, -242.67206560944771, 140.36059886792702, 505.64434194268858, 506.5379443143205, -502.369801993654); + double b3 = (-124.86533385369245); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double4x3 b0 = double4x3(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-160.47062142215231); + double4x3 b1 = double4x3(316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-227.09065185631192); + double4x3 b2 = double4x3(-336.61242524562982, 365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834, 39.342111844263059, -350.40371744260369, -482.71723221368961); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (239.96540772168214); + double4x3 b3 = double4x3(-3.4060323254233253, -1.4948394305514512, 105.96042184995508, 151.53752787017152, 63.283196240329744, -289.69317378182575, 137.55377942768564, -247.66646945088473, -339.42056409428858, 23.238285313937013, 21.177870045033274, 477.036560995987); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_not_equal_wide_wide() + { + double4x3 a0 = double4x3(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double4x3 b0 = double4x3(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x3 a1 = double4x3(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double4x3 b1 = double4x3(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x3 a2 = double4x3(-72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391, -506.82837772128562, 245.47704779611763, -173.57105811572217, 390.33854669627669); + double4x3 b2 = double4x3(415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739, 420.21507926481547, -239.17604529074208, -99.079094694498508, 4.4760239145141441); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x3 a3 = double4x3(252.83775555940235, 47.865854047176413, 457.710514043323, -313.22114601415637, 391.20388168432, 481.7861199238273, 26.887826693657757, -298.14237346227389, 240.07745634768037, -332.45515338166388, -333.60717240609563, -313.18967857639757); + double4x3 b3 = double4x3(264.34854352862976, 451.31233689343196, 232.95803343176749, -142.62218839611029, -300.22557820949032, 268.33322418310365, -112.1035507247334, -270.49403989989963, -71.9932391978769, 99.463272856298545, 321.70330134113476, 200.05965218323263); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_not_equal_wide_scalar() + { + double4x3 a0 = double4x3(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059); + double b0 = (-393.41354173860213); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x3 a1 = double4x3(501.8990516615562, 458.40042302496749, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562); + double b1 = (-134.34545642433011); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x3 a2 = double4x3(-497.45947789468778, -328.58774844211888, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792, 317.28609314434516, 401.93959612489664, 210.98484502126689); + double b2 = (-80.932258882062627); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x3 a3 = double4x3(-147.09631616766393, 207.73136410849702, 284.39206208120663, -509.0852923379677, 414.30764718274941, -52.294460082563774, -140.43793660981487, -316.78779402225643, -358.69683592333308, 312.31897249460178, 270.62946260656668, -140.01671153866533); + double b3 = (-193.39904531901658); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double4x3 b0 = double4x3(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-488.0213141329686); + double4x3 b1 = double4x3(489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-268.35225761511936); + double4x3 b2 = double4x3(-239.231014124691, 411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027, 306.1256321902041, -178.33037885386977, 382.14199203166277); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-340.86559478420094); + double4x3 b3 = double4x3(-17.580244787773211, -409.87484498036787, -349.70166914057995, 275.85432756871649, -229.37194906425287, -127.50573283410898, 90.753436369240944, -422.08713574990963, -2.4475424301100475, -280.55170954417054, -484.37435959483236, -33.76342226647); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_wide_wide() + { + double4x3 a0 = double4x3(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double4x3 b0 = double4x3(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool4x3 r0 = bool4x3(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x3 a1 = double4x3(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double4x3 b1 = double4x3(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool4x3 r1 = bool4x3(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4x3 a2 = double4x3(269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373, -316.13839664875456, -417.52215905558421, 441.6434454590285, -191.95062908527939); + double4x3 b2 = double4x3(-382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766, -114.55647259324627, 441.42973276666817, -113.33366709264629, 435.622928583819); + bool4x3 r2 = bool4x3(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4x3 a3 = double4x3(397.81158823418036, -144.66662485183525, 417.0790571724433, -322.9801315381099, -81.285095014276521, 319.32531538574267, 146.76406509557933, -316.58337488611386, -150.85755855909434, -314.60630550729405, 7.14312720631392, -458.82730767635036); + double4x3 b3 = double4x3(383.65612786992267, -293.711607831396, -391.35497612103586, 43.122021456771563, 433.2236590018606, -201.38245282014014, -241.42116629398481, 376.46986955053637, -503.39744472103075, -359.78095095221931, 118.63150149147566, -510.03052759078821); + bool4x3 r3 = bool4x3(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_wide_scalar() + { + double4x3 a0 = double4x3(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413); + double b0 = (199.06751808853244); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x3 a1 = double4x3(-68.088202269788951, -66.703050406045747, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779); + double b1 = (12.788020378345664); + bool4x3 r1 = bool4x3(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double4x3 a2 = double4x3(-334.62272349680904, 300.41017617863145, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025, -296.37211884948056, 272.4883617239484, 360.20793097103387); + double b2 = (-98.315578744893685); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double4x3 a3 = double4x3(389.7274403002707, -400.61523384629527, -85.469117442830054, -467.70215604626674, -51.387892031757133, 201.76466927387037, -47.8412668927765, -180.74006255936814, -409.01566929789988, 229.6990183469369, 176.19784816363722, -410.45517439882047); + double b3 = (68.736721786082171); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double4x3 b0 = double4x3(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (389.23142999654237); + double4x3 b1 = double4x3(488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594); + bool4x3 r1 = bool4x3(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-125.56811505442863); + double4x3 b2 = double4x3(122.16476803746298, 96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693, 190.57215914063727, 108.25831871305513, 132.55076056930739); + bool4x3 r2 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-431.51522155828553); + double4x3 b3 = double4x3(-192.20350727448402, -431.83499284825984, -85.581249515331024, 328.67053977058765, 273.5778516612844, -178.66905816768718, 352.63627235621038, -82.605815687498932, 238.90886675515628, 291.3353070185218, 183.35733875229835, -185.03260597262187); + bool4x3 r3 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_wide_wide() + { + double4x3 a0 = double4x3(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double4x3 b0 = double4x3(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool4x3 r0 = bool4x3(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double4x3 a1 = double4x3(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double4x3 b1 = double4x3(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4x3 a2 = double4x3(105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911, -496.97184705034448, 339.88814202877143, 372.22833007025918, 313.2386917142378); + double4x3 b2 = double4x3(-352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156, 337.88991014002352, -249.50553929503332, -225.90130554228148, -249.49127757246202); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double4x3 a3 = double4x3(-419.10894437279035, -265.32978380160864, -42.501995344880015, 369.16390507722451, 67.169061453626, -256.69890868696336, -104.10592060168551, 499.57010268586225, 41.663492460578482, 151.15207416897272, 220.68833146835129, -344.65888110951471); + double4x3 b3 = double4x3(381.12288373574745, 325.54538145919582, 455.49881360283996, 333.31868401789973, 118.98035603341668, 223.19812236688949, -385.28907102406447, 333.88080159476067, -437.41072126729915, 243.97544943726405, -302.81988658701061, -32.710171476337223); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_wide_scalar() + { + double4x3 a0 = double4x3(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456); + double b0 = (-302.81693877969724); + bool4x3 r0 = bool4x3(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double4x3 a1 = double4x3(-172.51816066192379, -236.41493498367021, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754); + double b1 = (-18.149639853346002); + bool4x3 r1 = bool4x3(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double4x3 a2 = double4x3(-13.638212448748845, -261.86596477304863, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031, 290.57303752124915, 180.263321722049, -482.86394690110529); + double b2 = (-7.3478887115362568); + bool4x3 r2 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4x3 a3 = double4x3(100.70627574841785, 501.31978749731547, -289.28097046971368, -25.849692595121326, 455.1624288294289, -63.3173549470107, -17.446765669363913, 53.017790103805169, 88.819595139855323, 182.3580006018085, -428.92720933860505, 408.336862515815); + double b3 = (180.6725166685286); + bool4x3 r3 = bool4x3(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double4x3 b0 = double4x3(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (230.18129955519987); + double4x3 b1 = double4x3(-102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (304.86444320569956); + double4x3 b2 = double4x3(-361.52483360912879, -372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421, -107.00416784500896, 331.63653746789157, -340.84013120310385); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-384.21461147079924); + double4x3 b3 = double4x3(-451.7265658097931, 467.97876355982328, -236.5691269545672, 44.654746314815611, -285.79786671595548, 42.7309816082618, 338.18510762703841, 274.01702202205411, -108.60437088301609, -211.37325606652223, -19.004157313613291, 194.114679188521); + bool4x3 r3 = bool4x3(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_equal_wide_wide() + { + double4x3 a0 = double4x3(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double4x3 b0 = double4x3(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool4x3 r0 = bool4x3(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x3 a1 = double4x3(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double4x3 b1 = double4x3(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool4x3 r1 = bool4x3(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x3 a2 = double4x3(-77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737, -383.30294889179197, -5.1470377469188975, 319.34374752610165, 465.02220485407031); + double4x3 b2 = double4x3(-216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022, -202.74836430454087, -312.47647133119244, 310.07189884319519, -320.3630436958573); + bool4x3 r2 = bool4x3(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x3 a3 = double4x3(145.93345100522663, -215.07482991697026, -146.46150667334979, -349.8939770897357, 29.599108948185631, -131.79663640437491, -438.99467464862141, 147.05792553120193, 221.11248956486236, -356.14535276784807, -32.830178991346713, 442.94199892642996); + double4x3 b3 = double4x3(186.07597288213481, -42.637794752902266, 82.565048971476472, 127.18911009989176, 198.28697428400017, -450.49204108235057, 20.901004085736872, 449.46589133211683, -478.77271841409276, 380.05395692403147, 99.1247280105598, -450.32978150357019); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_equal_wide_scalar() + { + double4x3 a0 = double4x3(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294); + double b0 = (292.92427148154206); + bool4x3 r0 = bool4x3(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x3 a1 = double4x3(-182.9388249772316, 485.31159304329731, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797); + double b1 = (349.25012962392077); + bool4x3 r1 = bool4x3(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x3 a2 = double4x3(402.48485893871862, -502.17362308044619, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275, -24.82758070194518, -451.04158684752957, 429.57755132651778); + double b2 = (87.9161055497434); + bool4x3 r2 = bool4x3(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x3 a3 = double4x3(-308.43429031429548, -279.40712011950421, 181.6722582232544, -290.14875401656548, -184.84408411050407, 447.6939139066701, 168.88657696958933, 26.378954661255193, 392.55852789085293, 255.60484015923214, 162.16346867483276, 195.49629482789726); + double b3 = (355.16031114904229); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double4x3 b0 = double4x3(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (104.88351326104419); + double4x3 b1 = double4x3(-488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-225.2235287284588); + double4x3 b2 = double4x3(-116.01998215355911, -442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873, -215.90167794744565, 39.5603883450666, 22.947996388630941); + bool4x3 r2 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-162.0605676928817); + double4x3 b3 = double4x3(236.73373352584133, -253.95195853614803, -204.71909985538531, -161.61653550044474, -64.3859322370896, -229.815656530585, -484.82564591096047, -135.04042989343424, 351.69478599712943, 111.82539778194644, -249.98255431371859, 435.80731769828469); + bool4x3 r3 = bool4x3(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_equal_wide_wide() + { + double4x3 a0 = double4x3(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double4x3 b0 = double4x3(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool4x3 r0 = bool4x3(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x3 a1 = double4x3(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double4x3 b1 = double4x3(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool4x3 r1 = bool4x3(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x3 a2 = double4x3(-223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255, -132.22179395156996, 303.68380489185631, 265.21013439130513, 9.75437188602723); + double4x3 b2 = double4x3(453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221, -129.35329276386335, 8.1077725925052846, 426.44951434920051, 410.69316477826476); + bool4x3 r2 = bool4x3(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x3 a3 = double4x3(-233.09288631803025, 26.567515147182917, 266.78067529703526, -250.0722254487091, 138.0408142255809, 174.27673848638165, -420.93164678147605, -42.854160567211977, 216.48505435534059, 240.05384623261818, -470.38216875045663, 98.396702573819425); + double4x3 b3 = double4x3(470.31343410458112, 220.39997993241991, -372.87269967276262, -242.17855965447546, 177.50623258273413, -172.63815864019011, 60.722858695649961, 478.25016067840636, 234.30301128807616, 297.82121171514564, 104.58457260233558, -462.41871926859892); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_equal_wide_scalar() + { + double4x3 a0 = double4x3(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345); + double b0 = (189.20512804258851); + bool4x3 r0 = bool4x3(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x3 a1 = double4x3(164.77259667439978, 355.83704559683667, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476); + double b1 = (-287.00733889593153); + bool4x3 r1 = bool4x3(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x3 a2 = double4x3(179.00504287472234, -331.27167788672807, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706, -74.50001743924804, -343.38647357718389, 216.0315855555383); + double b2 = (71.176674637560154); + bool4x3 r2 = bool4x3(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x3 a3 = double4x3(-420.40314813163275, -336.6411160606151, 317.0945958183587, -262.42494666875569, -228.41125522759336, 123.46545964268296, 264.10247362037308, 223.62332569045168, 440.53538366804617, -420.72700830024064, 74.844301497025526, -177.07789405485516); + double b3 = (-78.384021080277876); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double4x3 b0 = double4x3(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (67.141009600433108); + double4x3 b1 = double4x3(-74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852); + bool4x3 r1 = bool4x3(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (125.30356818312009); + double4x3 b2 = double4x3(-400.47050280145857, -283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719, 393.30091089443351, 18.023639925766588, -169.92393048569744); + bool4x3 r2 = bool4x3(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-285.88492669066648); + double4x3 b3 = double4x3(163.75110037799516, 191.85533317916804, 114.01553230826539, -395.98584169707533, 189.3665684151307, 176.19814618686132, 61.713796405919766, 507.54848241598745, 224.04381595554003, -422.99370570806491, -127.05500394061909, 95.528642460484321); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_add_wide_wide() + { + double4x3 a0 = double4x3(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double4x3 b0 = double4x3(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double4x3 r0 = double4x3(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a0 + b0, r0); + + double4x3 a1 = double4x3(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double4x3 b1 = double4x3(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double4x3 r1 = double4x3(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a1 + b1, r1); + + double4x3 a2 = double4x3(-62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207, -261.12612998724273, -309.8303507817119, 378.36333220934648, -224.09398065511789); + double4x3 b2 = double4x3(492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005, -474.8229422396156, 311.39072885708447, 326.84541979750873, 475.21193597987849); + double4x3 r2 = double4x3(429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212, -735.94907222685833, 1.5603780753725687, 705.20875200685521, 251.1179553247606); + TestUtils.AreEqual(a2 + b2, r2); + + double4x3 a3 = double4x3(-164.55573399577094, -69.873935493581882, 224.63463197678072, -383.99260038137095, 149.2212694386119, 169.38798363943954, 163.05393059693927, 57.02912500176069, 342.95008413072219, 168.68046696888302, -470.77026746737317, -117.63049631828); + double4x3 b3 = double4x3(314.152972606082, -262.59463393995287, -82.869108000243614, 156.29956658012213, 427.40157791012973, -279.09935177448176, -448.61522051720658, 284.33708847888613, 288.18558062621651, -232.39503847453511, -386.87190812959892, 162.90336831049217); + double4x3 r3 = double4x3(149.59723861031108, -332.46856943353475, 141.76552397653711, -227.69303380124882, 576.62284734874163, -109.71136813504222, -285.56128992026731, 341.36621348064682, 631.1356647569387, -63.714571505652088, -857.642175596972, 45.272871992212174); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_add_wide_scalar() + { + double4x3 a0 = double4x3(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697); + double b0 = (500.99725913489112); + double4x3 r0 = double4x3(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776, 944.11251159762617, 769.08948504975513, 542.3182804725684, 29.741183294794155); + TestUtils.AreEqual(a0 + b0, r0); + + double4x3 a1 = double4x3(-2.6649749291431704, 202.14799151297098, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484); + double b1 = (78.985822952811532); + double4x3 r1 = double4x3(76.320848023668361, 281.13381446578251, 390.71127814367003, 89.331677955264126, -72.258636031420281, 434.21858998491359, -118.814942892089, 334.94108883242177, 323.13292089250547, -102.64074664127116, 76.530896222466083, 379.88647764729637); + TestUtils.AreEqual(a1 + b1, r1); + + double4x3 a2 = double4x3(-236.49194895312746, -172.54221566605486, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759, 402.16034693371523, -117.02482729639149, 497.37375592504338); + double b2 = (-160.5840962680914); + double4x3 r2 = double4x3(-397.07604522121886, -333.12631193414626, -403.5251824350679, 305.76000275544817, 77.40336183337655, 103.70991854728658, 212.28274402966855, -359.42187326002022, -542.51507116785046, 241.57625066562383, -277.60892356448289, 336.789659656952); + TestUtils.AreEqual(a2 + b2, r2); + + double4x3 a3 = double4x3(485.90928124166521, 77.81479338454767, -271.54797304400614, -133.25178605562627, 211.86678777070097, 253.15022504196975, -342.78316823708974, -185.24833997769667, -403.38548845955427, -358.84824125787628, 65.247578889712486, 127.2016943093397); + double b3 = (-47.757128976172339); + double4x3 r3 = double4x3(438.15215226549287, 30.057664408375331, -319.30510202017848, -181.00891503179861, 164.10965879452863, 205.39309606579741, -390.54029721326208, -233.005468953869, -451.14261743572661, -406.60537023404862, 17.490449913540147, 79.444565333167361); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double4x3 b0 = double4x3(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328); + double4x3 r0 = double4x3(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626, -362.56777970984939, -94.7077846968117, -465.68709824312805, -307.4885689259919); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-138.61435825126915); + double4x3 b1 = double4x3(26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146); + double4x3 r1 = double4x3(-111.71019463972669, -513.15194058471911, 15.853242404690548, 129.76946216904065, -329.57738081066748, 50.002895378508981, -643.53048211500538, -118.16034465570016, 59.330987004251654, 112.79758649356546, -559.70473363236738, -27.168957722917696); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-73.268883024001923); + double4x3 b2 = double4x3(480.88455770950975, 438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067, -413.48026890935387, -260.720191361718, 77.542334831106587); + double4x3 r2 = double4x3(407.61567468550783, 364.78412931262704, -6.4245939284678, -344.06488243866011, -117.2908049175939, 124.42583614421352, -54.154953028147531, 275.96888555026095, 292.96560968689874, -486.74915193335579, -333.9890743857199, 4.2734518071046637); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (183.95489009840173); + double4x3 b3 = double4x3(-51.498981738229759, -472.4974751288525, 107.12689285498436, 349.07720033688338, 431.59597774576207, -314.11096468293618, 396.99665302643393, -167.30862935227742, -157.11451895400626, 287.76251591730977, -367.33903544365387, 96.2368000001818); + double4x3 r3 = double4x3(132.45590836017197, -288.54258503045077, 291.0817829533861, 533.03209043528511, 615.5508678441638, -130.15607458453445, 580.95154312483567, 16.646260746124312, 26.840371144395476, 471.7174060157115, -183.38414534525214, 280.19169009858354); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_sub_wide_wide() + { + double4x3 a0 = double4x3(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double4x3 b0 = double4x3(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double4x3 r0 = double4x3(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a0 - b0, r0); + + double4x3 a1 = double4x3(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double4x3 b1 = double4x3(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double4x3 r1 = double4x3(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a1 - b1, r1); + + double4x3 a2 = double4x3(-308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012, 388.48155969590016, 138.71817285321572, -385.57360547854267, -149.36481745045859); + double4x3 b2 = double4x3(-221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004, 72.119071755613732, -154.88059170305758, -469.65998361523265, -320.61543217330029); + double4x3 r2 = double4x3(-87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884, 316.36248794028643, 293.5987645562733, 84.086378136689973, 171.2506147228417); + TestUtils.AreEqual(a2 - b2, r2); + + double4x3 a3 = double4x3(-158.53404982319756, 508.07069015319962, 482.70080326623315, 114.56930237383085, 364.83137505353955, 229.03103052313952, -168.08806689460204, 373.44110911592895, -239.90097748483578, 379.92848437834925, 113.01185970800555, 306.83529319746197); + double4x3 b3 = double4x3(6.4122865229902573, -278.86505783668952, 15.838054425939049, 27.518323672711062, 429.86960979451874, -458.62247178453134, -172.064416250244, -284.52470673458868, 42.606667776874588, -223.47425208961323, -56.92974641589899, 61.8073423196596); + double4x3 r3 = double4x3(-164.94633634618782, 786.93574798988914, 466.8627488402941, 87.050978701119789, -65.038234740979192, 687.65350230767081, 3.9763493556419576, 657.96581585051763, -282.50764526171037, 603.40273646796254, 169.94160612390453, 245.02795087780237); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_sub_wide_scalar() + { + double4x3 a0 = double4x3(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252); + double b0 = (-291.59041442144212); + double4x3 r0 = double4x3(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695, -86.3352790280876, -178.67162855838973, 692.12533410830667, 753.09797941944464); + TestUtils.AreEqual(a0 - b0, r0); + + double4x3 a1 = double4x3(-246.28726660753006, 246.35072171238755, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124); + double b1 = (21.605312595891405); + double4x3 r1 = double4x3(-267.89257920342146, 224.74540911649615, -143.03267437919629, -144.32373673483897, -144.54403359468279, 338.54564157991933, 321.26926627814271, -2.6754851353705362, 142.99703986151007, 75.4383759849884, 464.3096687571657, -227.36296950437264); + TestUtils.AreEqual(a1 - b1, r1); + + double4x3 a2 = double4x3(253.44322717070725, 187.99838813953022, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121, -189.19323381650878, 269.07481659067548, -59.118566302172155); + double b2 = (-121.16305619159857); + double4x3 r2 = double4x3(374.60628336230582, 309.16144433112879, -329.65721717926544, -126.91031509587089, 94.166990800838448, 562.71567561603888, 571.07366588482341, 476.0490829777201, 219.98454199544369, -68.030177624910209, 390.23787278227405, 62.044489889426416); + TestUtils.AreEqual(a2 - b2, r2); + + double4x3 a3 = double4x3(363.45839207407948, -46.155220768486743, 109.9132454907118, 182.64693483274755, 229.01577411825576, -144.92867405010793, 469.25061414635309, -150.49230797146089, -192.31251177206286, -224.35684810595438, 285.87681855162452, -63.010835438506149); + double b3 = (-73.779217515969265); + double4x3 r3 = double4x3(437.23760959004875, 27.623996747482522, 183.69246300668107, 256.42615234871681, 302.794991634225, -71.149456534138665, 543.02983166232229, -76.713090455491624, -118.5332942560936, -150.57763058998512, 359.65603606759379, 10.768382077463116); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double4x3 b0 = double4x3(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641); + double4x3 r0 = double4x3(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464, -46.618469259989638, 680.361515361984, 219.19171248152463, -60.357257394286421); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (169.13141520746581); + double4x3 b1 = double4x3(88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848); + double4x3 r1 = double4x3(80.914806880482843, 167.39640863584179, 46.593375227690331, 434.07644292063844, 219.96859560719156, 516.78173804505809, 165.06585653362129, 248.22683965797853, -185.22692402881898, 461.62392685451721, 222.34039841515028, 415.47901554381428); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (299.20334138497867); + double4x3 b2 = double4x3(432.18467422583353, -163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042, -65.531290323255234, 440.38039776328037, 427.36063142649857); + double4x3 r2 = double4x3(-132.98133284085486, 463.0833422909879, 122.4607859228089, 404.18918294654657, 745.00097166420937, 328.07649675387728, 468.7915704049131, 569.56258752642316, 231.15571414267447, 364.73463170823391, -141.1770563783017, -128.1572900415199); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-81.472953595906915); + double4x3 b3 = double4x3(41.713177461974851, 175.82078059754372, -214.94915900703018, -163.44686253529363, -218.82914672551169, 389.1168579483018, -74.109779154001615, -448.13723751908969, -410.37498278653948, 363.21098177657041, -263.53538120143833, 473.54599283335074); + double4x3 r3 = double4x3(-123.18613105788177, -257.29373419345063, 133.47620541112326, 81.973908939386718, 137.35619312960478, -470.58981154420871, -7.3631744419053007, 366.66428392318278, 328.90202919063256, -444.68393537247732, 182.06242760553141, -555.01894642925765); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mul_wide_wide() + { + double4x3 a0 = double4x3(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double4x3 b0 = double4x3(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double4x3 r0 = double4x3(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a0 * b0, r0); + + double4x3 a1 = double4x3(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double4x3 b1 = double4x3(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double4x3 r1 = double4x3(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a1 * b1, r1); + + double4x3 a2 = double4x3(-83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629, -416.21309037516505, -103.27920513194016, -52.951897407393858, -40.828328390060165); + double4x3 b2 = double4x3(-189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596, 296.68037738310193, 341.001815239434, -257.09682166627459, 17.593622931089953); + double4x3 r2 = double4x3(15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038, -123482.25672429107, -35218.396426477462, 13613.764524639606, -718.31821460143351); + TestUtils.AreEqual(a2 * b2, r2); + + double4x3 a3 = double4x3(-86.185078899462269, -257.3165096050671, 363.85721819654907, -229.86001001571304, 8.925310854299596, -2.4494049560508984, 37.75829531520526, 264.45176113045386, -321.251278788434, -268.25605762575572, 43.91368081230371, 274.83309877795773); + double4x3 b3 = double4x3(-443.84511658355831, 291.3492387697795, 490.1916594403757, 361.32099049227361, -509.28972244136486, 315.35265913389276, 125.08305054767197, -167.72711451711467, 396.8876833379677, -0.32041144385954112, 143.41152603151818, -396.34749597885997); + double4x3 r3 = double4x3(38252.826391895, -74968.969196332953, 178359.77358712527, -83053.246493441373, -4545.5690876891422, -772.42636618638653, 4722.9227615057453, -44355.730823380291, -127500.67580770116, 85.95231074793665, 6297.7279789534741, -108929.41051275423); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mul_wide_scalar() + { + double4x3 a0 = double4x3(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794); + double b0 = (192.21119055161773); + double4x3 r0 = double4x3(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959, -8981.8711609324328, -45824.109082604613, 81128.978632794271, -9386.6022026424689); + TestUtils.AreEqual(a0 * b0, r0); + + double4x3 a1 = double4x3(355.30832998608628, -196.995807977857, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731); + double b1 = (119.35660391643489); + double4x3 r1 = double4x3(42408.39561035925, -23512.750626011144, 11725.115895759591, -38856.799837899605, 6437.7757971417432, -10437.852435932567, -15572.948995972518, -26568.132099181617, 15040.726275269915, 35014.583148776452, 20813.63821643246, -39043.941469222867); + TestUtils.AreEqual(a1 * b1, r1); + + double4x3 a2 = double4x3(56.629123475695565, -475.60871551726422, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707, 120.01444226131514, -59.508660105759589, 319.48987236595246); + double b2 = (257.54154241156834); + double4x3 r2 = double4x3(14584.35180534579, -122489.00217870105, -116586.9687476805, -12676.35057079227, 36468.126964807481, 111151.24256198283, 46448.952740874527, -10539.489603593216, 71994.066329993, 30908.704571643215, -15325.952110483087, 82281.9145140025); + TestUtils.AreEqual(a2 * b2, r2); + + double4x3 a3 = double4x3(-403.52316040709763, -335.39319554688092, -364.24254601273805, 150.68615085942952, 391.87204212316874, 179.3124121070432, 354.52978460608506, 497.76140164665946, 418.43656964713546, -413.33335967237753, -329.5207184895504, -322.70306339985837); + double b3 = (-408.19309849673562); + double4x3 r3 = double4x3(164715.36916176844, 136905.18770500287, 148681.29346127933, -61509.046819857074, -159959.46308849956, -73194.089096897529, -144716.61128773814, -203182.76885022805, -170802.91988860932, 168719.82479673345, 134508.08309912015, 131725.16334357671); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double4x3 b0 = double4x3(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514); + double4x3 r0 = double4x3(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215, -228458.89803045939, -23181.225114435249, -197177.59217890151, -74380.402533339569); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (-395.99208492599058); + double4x3 b1 = double4x3(125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382); + double4x3 r1 = double4x3(-49578.877699568278, 104944.1670650809, -124601.32420133064, 115911.64319954457, 14940.733323125947, -65482.130504472349, -141178.20041352851, 74768.583839978208, -199942.63055607979, -16066.235922134923, 81881.305260923924, 24394.173877692614); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (118.97158938225903); + double4x3 b2 = double4x3(53.7483275186961, -198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562, 340.74862186086762, 438.98690172610191, -227.16596637813655); + double4x3 r2 = double4x3(6394.523951537486, -23636.01638687048, 11449.363305046692, -2408.2087147671054, -3702.86889341192, 4626.8604942640131, -1562.4904910942491, 60422.253632894513, 11304.434586318854, 40539.405122601791, 52226.969416347893, -27026.296073563721); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (452.57297894571582); + double4x3 b3 = double4x3(144.01496774703958, -31.586035981581574, 42.297746916440246, -466.02715013270597, 287.454008951529, 328.99688378395365, -164.24312146205602, -511.26830100979112, -9.5943138644072974, 431.19011875204285, -132.14180642559279, -87.502642910695954); + double4x3 r3 = double4x3(65177.282966048886, -14294.986397270941, 19142.817324665328, -210911.29560514109, 130093.91714108193, 148895.09975796138, -74331.998751425723, -231386.2180285161, -4342.1272065549929, 195144.996535569, -59803.810977298665, -39601.331767716889); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_div_wide_wide() + { + double4x3 a0 = double4x3(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double4x3 b0 = double4x3(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double4x3 r0 = double4x3(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a0 / b0, r0); + + double4x3 a1 = double4x3(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double4x3 b1 = double4x3(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double4x3 r1 = double4x3(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a1 / b1, r1); + + double4x3 a2 = double4x3(315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819, -106.2345221537326, 414.31254239301779, 7.1208250555772565, 274.07367361433512); + double4x3 b2 = double4x3(-218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027, 220.25550351862591, -67.234494002179474, 2.229160071457386, -166.21096118083733); + double4x3 r2 = double4x3(-1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134, -0.48232403030396409, -6.1622021336189041, 3.1943982609206638, -1.6489506568471335); + TestUtils.AreEqual(a2 / b2, r2); + + double4x3 a3 = double4x3(-39.002680081409721, 39.065917748522907, -147.36416608996882, 434.38489290437894, 315.06720390686166, -106.63602714735828, -507.92525195885696, -17.176462896716089, -385.86535543290216, 226.00214849505676, 345.16843072751931, 201.5441692813971); + double4x3 b3 = double4x3(-247.73257290932003, 84.1609476004545, 477.14862726496006, 209.75077615014777, -386.72219985850256, -65.2773316210496, 410.45482773820629, 367.65071862174693, -456.57203862470203, 382.42795079873315, -163.86067278862964, -213.72138867793672); + double4x3 r3 = double4x3(0.15743864290178045, 0.464181058582947, -0.3088433198156047, 2.0709572611708924, -0.81471196642484278, 1.6335843469583855, -1.2374693087611059, -0.046719514002603893, 0.84513575687905829, 0.59096660697271775, -2.1064751221470064, -0.94302292591365366); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_div_wide_scalar() + { + double4x3 a0 = double4x3(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815); + double b0 = (-60.024377612408443); + double4x3 r0 = double4x3(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415, 5.8130349541308268, 4.590446295887566, -3.507873469437639, -4.7920929982948417); + TestUtils.AreEqual(a0 / b0, r0); + + double4x3 a1 = double4x3(504.37224626185946, -26.63160015392657, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678); + double b1 = (491.78708600056689); + double4x3 r1 = double4x3(1.0255906684407692, -0.05415270329789805, -0.51493152212922777, 0.55490501632632983, 0.36214080890026995, -0.9371445558862519, -1.0220805515742548, -0.17146605825986788, -0.35521538758274346, 0.17039143901317477, 0.40066539466642881, 0.64493004041920121); + TestUtils.AreEqual(a1 / b1, r1); + + double4x3 a2 = double4x3(403.38711781212464, 60.606869964211683, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443, 147.86623079509764, 506.6588964437409, -435.77857300070048); + double b2 = (81.646461763254592); + double4x3 r2 = double4x3(4.94065644855257, 0.742308590664343, -5.0652590705621705, 2.5394976530900575, 4.3916428946617758, 0.25413315349748711, -0.83992777621798842, 3.8054614476788506, 5.1123452617901393, 1.8110549753381424, 6.2055217764717066, -5.337384665416387); + TestUtils.AreEqual(a2 / b2, r2); + + double4x3 a3 = double4x3(210.67294011389504, -19.190853366251474, 416.5117301496266, 427.01360555506017, 417.1994099175555, -150.91182310456031, 488.98551463009119, -294.73874129668752, -357.29805271574207, 288.77164591884787, 453.4291381563196, 70.724425587209112); + double b3 = (-218.78147636110964); + double4x3 r3 = double4x3(-0.96293773868757038, 0.087716993620502046, -1.9037796849956046, -1.9517813512248774, -1.9069229116497379, 0.6897833656423128, -2.2350407482532773, 1.3471832542632936, 1.6331275328172847, -1.3199090285057589, -2.0725206982693196, -0.32326514457958477); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double4x3 b0 = double4x3(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557); + double4x3 r0 = double4x3(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514, -0.088244069266411956, 0.21712338579666474, -0.20837898685020731, -0.08514735549618288); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-211.10257468517057); + double4x3 b1 = double4x3(-322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663); + double4x3 r1 = double4x3(0.65386725700800707, 1.5298918757560602, -2.5032993794111431, -0.59454886559021247, -0.76368223047667771, 0.55119889640693076, 0.43201432758733604, -0.61216470906286558, -1.2502003225088718, 4.7765531010394247, -0.50196699874113548, 1.2020745776594923); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-9.2205684227964753); + double4x3 b2 = double4x3(-344.19428865248074, -449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984, -490.49213360738577, 485.75540922850155, -317.57225504404505); + double4x3 r2 = double4x3(0.026788847830377906, 0.02053251783658458, -0.078336306064650474, 0.027358511370073814, -0.038516383023364104, 0.023681639022834274, -0.03798911431613599, -0.018579499700682109, -0.1005012609230303, 0.018798606116234018, -0.018981916099382184, 0.029034552850083353); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-451.62477871944418); + double4x3 b3 = double4x3(394.01837677230048, -262.27140939527726, -314.24678697914203, 359.91591446470284, -101.61536865197837, 359.5172828917938, -424.97987981558771, -192.71958431635034, -169.7497170761925, -244.79002224877013, -187.14385255945092, -207.71366343633906); + double4x3 r3 = double4x3(-1.1462023228942793, 1.7219748799945886, 1.4371659391044802, -1.2548063605110056, 4.4444534789438208, -1.2561976856488777, 1.0626968479435275, 2.3434296017269292, 2.6605333222248113, 1.8449476599192278, 2.4132493402420168, 2.1742661086802313); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mod_wide_wide() + { + double4x3 a0 = double4x3(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double4x3 b0 = double4x3(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double4x3 r0 = double4x3(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a0 % b0, r0); + + double4x3 a1 = double4x3(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double4x3 b1 = double4x3(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double4x3 r1 = double4x3(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a1 % b1, r1); + + double4x3 a2 = double4x3(156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078, 7.7614462411783052, 238.09472309709281, 12.852037674212852, -100.2406762113053); + double4x3 b2 = double4x3(-131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288, 132.18024951414213, -179.87732204230377, 51.968538546920058, 367.21425860338582); + double4x3 r2 = double4x3(25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078, 7.7614462411783052, 58.217401054789036, 12.852037674212852, -100.2406762113053); + TestUtils.AreEqual(a2 % b2, r2); + + double4x3 a3 = double4x3(34.551971690054984, -251.18974530472872, -238.37224423064487, 511.51466512657453, 288.43353118022605, 367.10986702847754, 44.760454437118256, -437.04559084262962, -259.20560252815744, -228.56581531677665, 83.497246065874265, 424.36707397194914); + double4x3 b3 = double4x3(-395.21279234216212, 270.48524988372128, -73.104129586882948, 89.3499706207541, -288.30852355077332, -168.32464631289463, 311.61589994636176, -468.34193752163179, 381.9839486470371, -1.398853541071901, -102.28859357828674, -87.424866478622391); + double4x3 r3 = double4x3(34.551971690054984, -251.18974530472872, -19.059855469996023, 64.764812022804, 0.12500762945273891, 30.46057440268828, 44.760454437118256, -437.04559084262962, -259.20560252815744, -0.552688122056793, 83.497246065874265, 74.667608057459574); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mod_wide_scalar() + { + double4x3 a0 = double4x3(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309); + double b0 = (-90.499235433758827); + double4x3 r0 = double4x3(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914, -84.473635951277629, -47.283777258956661, 71.457748684779517, -54.6001856581309); + TestUtils.AreEqual(a0 % b0, r0); + + double4x3 a1 = double4x3(-172.33886607565864, 222.36186109406958, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606); + double b1 = (-429.71466728193434); + double4x3 r1 = double4x3(-172.33886607565864, 222.36186109406958, 5.796394112425105, 254.51082885196, -3.3790297523975141, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 53.835923696791724); + TestUtils.AreEqual(a1 % b1, r1); + + double4x3 a2 = double4x3(-331.99334660730949, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444, -304.153164289963, -295.52024735860539, 313.72239532774427); + double b2 = (335.99997655302286); + double4x3 r2 = double4x3(-331.99334660730949, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 69.773624452656918, -194.76144489774549, 235.72397314557986, 129.98490148875158, -304.153164289963, -295.52024735860539, 313.72239532774427); + TestUtils.AreEqual(a2 % b2, r2); + + double4x3 a3 = double4x3(-232.20264135683078, 244.09660899084838, 162.52424080787421, 390.01615423244243, 90.004538339564874, 155.93352062810845, 217.33769641506376, -306.81927671414769, 149.09372074394196, 503.82839917756075, -194.13014063338289, 214.86302171222076); + double b3 = (191.61973127705028); + double4x3 r3 = double4x3(-40.582910079780504, 52.4768777137981, 162.52424080787421, 6.7766916783418765, 90.004538339564874, 155.93352062810845, 25.717965138013483, -115.19954543709741, 149.09372074394196, 120.5889366234602, -2.510409356332616, 23.243290435170479); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double4x3 b0 = double4x3(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463); + double4x3 r0 = double4x3(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278, -24.355308544056129, -195.41010484258186, -14.154983765517727, -137.47093397819947); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (106.98357563232241); + double4x3 b1 = double4x3(469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082); + double4x3 r1 = double4x3(106.98357563232241, 2.5566205990299409, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241, 3.3301491752881702, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (499.95350598727987); + double4x3 b2 = double4x3(-433.52306505363578, -163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526, 271.07511461483091, 423.70268912972074, -413.23324675729185); + double4x3 r2 = double4x3(66.430440933644093, 8.3529381790911543, 145.94548399091968, 57.352848318104179, 4.7861311457984357, 20.68866826067142, 67.512540371861633, 114.56933289140898, 231.82172976798461, 228.87839137244896, 76.25081685755913, 86.720259229988017); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (127.95621091125361); + double4x3 b3 = double4x3(-298.20467843590518, -352.41809122283854, -175.60771592688172, -152.89928944078241, 34.619420306114193, -380.80295556634803, 0.35205721871557216, 485.90088986135129, 266.1508249091687, 483.82075928329527, 11.777843242407698, 274.1358426893762); + double4x3 r3 = double4x3(127.95621091125361, 127.95621091125361, 127.95621091125361, 127.95621091125361, 24.097949992911026, 127.95621091125361, 0.15944051750091148, 127.95621091125361, 127.95621091125361, 127.95621091125361, 10.177778487176624, 127.95621091125361); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_plus() + { + double4x3 a0 = double4x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835); + double4x3 r0 = double4x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835); + TestUtils.AreEqual(+a0, r0); + + double4x3 a1 = double4x3(377.23016208095021, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304); + double4x3 r1 = double4x3(377.23016208095021, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304); + TestUtils.AreEqual(+a1, r1); + + double4x3 a2 = double4x3(-364.80255644619581, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914); + double4x3 r2 = double4x3(-364.80255644619581, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914); + TestUtils.AreEqual(+a2, r2); + + double4x3 a3 = double4x3(-29.083537353707243, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589, 87.649255078122565); + double4x3 r3 = double4x3(-29.083537353707243, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589, 87.649255078122565); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double4x3_operator_neg() + { + double4x3 a0 = double4x3(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446); + double4x3 r0 = double4x3(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446); + TestUtils.AreEqual(-a0, r0); + + double4x3 a1 = double4x3(-410.39206070936848, -349.14948885010062, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645); + double4x3 r1 = double4x3(410.39206070936848, 349.14948885010062, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645); + TestUtils.AreEqual(-a1, r1); + + double4x3 a2 = double4x3(175.01502259774838, -306.1655677790593, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679, 363.71671049842462, 280.88790405955535, -270.65131939139746); + double4x3 r2 = double4x3(-175.01502259774838, 306.1655677790593, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679, -363.71671049842462, -280.88790405955535, 270.65131939139746); + TestUtils.AreEqual(-a2, r2); + + double4x3 a3 = double4x3(-201.61574015469091, 95.489228054643263, 191.07025322274785, 371.97357361948752, 296.51257981756362, -164.16993697181806, -347.45810691800813, -237.40496050445591, -228.70196615378467, 61.082260875535326, 128.33153134599866, 331.25579587149241); + double4x3 r3 = double4x3(201.61574015469091, -95.489228054643263, -191.07025322274785, -371.97357361948752, -296.51257981756362, 164.16993697181806, 347.45810691800813, 237.40496050445591, 228.70196615378467, -61.082260875535326, -128.33153134599866, -331.25579587149241); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double4x3_operator_prefix_inc() + { + double4x3 a0 = double4x3(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627); + double4x3 r0 = double4x3(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627); + TestUtils.AreEqual(++a0, r0); + + double4x3 a1 = double4x3(363.2849182390072, -326.87781992874937, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367); + double4x3 r1 = double4x3(364.2849182390072, -325.87781992874937, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367); + TestUtils.AreEqual(++a1, r1); + + double4x3 a2 = double4x3(-271.28932893988178, -377.55920785365589, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289, 117.95409851798513, 139.52581245243823, 335.68968192473505); + double4x3 r2 = double4x3(-270.28932893988178, -376.55920785365589, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289, 118.95409851798513, 140.52581245243823, 336.68968192473505); + TestUtils.AreEqual(++a2, r2); + + double4x3 a3 = double4x3(162.6615141195532, -254.73151385725083, -89.256037038404486, 314.36555233335378, 244.72812830876933, 34.010626570326622, -90.445278448260069, -472.63621614530507, -34.566777483824069, -71.271847996521672, -396.49010748252743, -314.987458614161); + double4x3 r3 = double4x3(163.6615141195532, -253.73151385725083, -88.256037038404486, 315.36555233335378, 245.72812830876933, 35.010626570326622, -89.445278448260069, -471.63621614530507, -33.566777483824069, -70.271847996521672, -395.49010748252743, -313.987458614161); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double4x3_operator_postfix_inc() + { + double4x3 a0 = double4x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874); + double4x3 r0 = double4x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874); + TestUtils.AreEqual(a0++, r0); + + double4x3 a1 = double4x3(159.86103184514729, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923); + double4x3 r1 = double4x3(159.86103184514729, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923); + TestUtils.AreEqual(a1++, r1); + + double4x3 a2 = double4x3(-341.49855271982892, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185); + double4x3 r2 = double4x3(-341.49855271982892, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185); + TestUtils.AreEqual(a2++, r2); + + double4x3 a3 = double4x3(64.577020436793987, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578, 439.299990143301); + double4x3 r3 = double4x3(64.577020436793987, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578, 439.299990143301); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double4x3_operator_prefix_dec() + { + double4x3 a0 = double4x3(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811); + double4x3 r0 = double4x3(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811); + TestUtils.AreEqual(--a0, r0); + + double4x3 a1 = double4x3(400.720900006928, -326.45297852459038, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357); + double4x3 r1 = double4x3(399.720900006928, -327.45297852459038, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357); + TestUtils.AreEqual(--a1, r1); + + double4x3 a2 = double4x3(-406.667706917351, -188.69222578252305, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329, 345.02153913351776, 4.7353689692613443, -68.653318198701982); + double4x3 r2 = double4x3(-407.667706917351, -189.69222578252305, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329, 344.02153913351776, 3.7353689692613443, -69.653318198701982); + TestUtils.AreEqual(--a2, r2); + + double4x3 a3 = double4x3(481.496122346025, -357.67329399551886, 153.32965023505017, -233.62431751639781, -35.238318221288864, 340.61965743667429, 259.92884195033878, 335.35490886091952, 85.364882747347, -1.3939745432668929, -407.41038651364408, -145.79341251486608); + double4x3 r3 = double4x3(480.496122346025, -358.67329399551886, 152.32965023505017, -234.62431751639781, -36.238318221288864, 339.61965743667429, 258.92884195033878, 334.35490886091952, 84.364882747347, -2.3939745432668929, -408.41038651364408, -146.79341251486608); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double4x3_operator_postfix_dec() + { + double4x3 a0 = double4x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443); + double4x3 r0 = double4x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443); + TestUtils.AreEqual(a0--, r0); + + double4x3 a1 = double4x3(-261.00890052551819, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933); + double4x3 r1 = double4x3(-261.00890052551819, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933); + TestUtils.AreEqual(a1--, r1); + + double4x3 a2 = double4x3(379.15614026559342, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133); + double4x3 r2 = double4x3(379.15614026559342, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133); + TestUtils.AreEqual(a2--, r2); + + double4x3 a3 = double4x3(449.63778540568319, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139, -240.61070048092432); + double4x3 r3 = double4x3(449.63778540568319, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139, -240.61070048092432); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x3.gen.cs.meta new file mode 100644 index 0000000..57d1b81 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9a5b693ba34291418f7e9f627709a57 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x4.gen.cs new file mode 100644 index 0000000..7db8b3e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x4.gen.cs @@ -0,0 +1,974 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble4x4 + { + [TestCompiler] + public static void double4x4_zero() + { + TestUtils.AreEqual(double4x4.zero.c0.x, 0.0); + TestUtils.AreEqual(double4x4.zero.c0.y, 0.0); + TestUtils.AreEqual(double4x4.zero.c0.z, 0.0); + TestUtils.AreEqual(double4x4.zero.c0.w, 0.0); + TestUtils.AreEqual(double4x4.zero.c1.x, 0.0); + TestUtils.AreEqual(double4x4.zero.c1.y, 0.0); + TestUtils.AreEqual(double4x4.zero.c1.z, 0.0); + TestUtils.AreEqual(double4x4.zero.c1.w, 0.0); + TestUtils.AreEqual(double4x4.zero.c2.x, 0.0); + TestUtils.AreEqual(double4x4.zero.c2.y, 0.0); + TestUtils.AreEqual(double4x4.zero.c2.z, 0.0); + TestUtils.AreEqual(double4x4.zero.c2.w, 0.0); + TestUtils.AreEqual(double4x4.zero.c3.x, 0.0); + TestUtils.AreEqual(double4x4.zero.c3.y, 0.0); + TestUtils.AreEqual(double4x4.zero.c3.z, 0.0); + TestUtils.AreEqual(double4x4.zero.c3.w, 0.0); + } + + [TestCompiler] + public static void double4x4_identity() + { + TestUtils.AreEqual(double4x4.identity.c0.x, 1.0); + TestUtils.AreEqual(double4x4.identity.c0.y, 0.0); + TestUtils.AreEqual(double4x4.identity.c0.z, 0.0); + TestUtils.AreEqual(double4x4.identity.c0.w, 0.0); + TestUtils.AreEqual(double4x4.identity.c1.x, 0.0); + TestUtils.AreEqual(double4x4.identity.c1.y, 1.0); + TestUtils.AreEqual(double4x4.identity.c1.z, 0.0); + TestUtils.AreEqual(double4x4.identity.c1.w, 0.0); + TestUtils.AreEqual(double4x4.identity.c2.x, 0.0); + TestUtils.AreEqual(double4x4.identity.c2.y, 0.0); + TestUtils.AreEqual(double4x4.identity.c2.z, 1.0); + TestUtils.AreEqual(double4x4.identity.c2.w, 0.0); + TestUtils.AreEqual(double4x4.identity.c3.x, 0.0); + TestUtils.AreEqual(double4x4.identity.c3.y, 0.0); + TestUtils.AreEqual(double4x4.identity.c3.z, 0.0); + TestUtils.AreEqual(double4x4.identity.c3.w, 1.0); + } + + [TestCompiler] + public static void double4x4_operator_equal_wide_wide() + { + double4x4 a0 = double4x4(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574, 188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double4x4 b0 = double4x4(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467, -494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x4 a1 = double4x4(417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034, -22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868); + double4x4 b1 = double4x4(260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218, -174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x4 a2 = double4x4(-68.728424342688356, 485.76997803420295, 413.16974969076443, -418.26928992675118, -346.79586593564409, 504.15964889161273, 345.18627635817336, -434.71304126955243, -499.77411078837429, 282.01905192156278, 259.15627944616426, 306.4559306141249, 435.22542759181249, -386.89967864886842, 211.3639925510455, -7.2298214469244044); + double4x4 b2 = double4x4(-468.3309554850361, 429.49572797748056, 477.38919781026857, -433.42541071093893, 273.54640329701192, -34.976225153997632, 221.96845422590548, 85.919132511093835, -85.598944942280184, 392.76080316713114, -117.92407732732784, -445.30559393638077, -242.46897208060557, 173.64309533575693, 389.8977403072164, -14.290465123155343); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x4 a3 = double4x4(-32.053229585314739, -106.29855947676049, -382.92495959947121, -424.78219695798225, -267.81251895977766, 229.8970197317642, 358.17965834130518, -76.3308608887395, -493.68433140855484, 139.35056192211368, 211.75662789668729, -178.83420308811321, -262.78688609916105, 506.27030038566807, 352.288876459137, -132.78940326198443); + double4x4 b3 = double4x4(-317.55301990991131, -265.65275800677614, -424.16826053344096, 11.621368175196153, 408.68624873118767, -181.27835925914269, -139.82048160388155, -488.92457054971, -207.7032626642395, -341.9880770845283, -470.55291173912258, -462.80434701536052, 419.07557197058372, 143.63872177137, -79.91238526250811, -224.69360624286048); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_equal_wide_scalar() + { + double4x4 a0 = double4x4(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415, -191.19075521789063, 186.84520086406042, -232.89569221851218, -319.14406481345372); + double b0 = (-155.8157547245807); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x4 a1 = double4x4(-49.701092981594172, 333.39685193328046, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858, 110.50128345866744, -390.10359329269437, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648); + double b1 = (-300.88189925853248); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x4 a2 = double4x4(291.05195368968509, -429.87391849508225, -275.15694750247383, -56.332365300661138, -95.835959717554942, -124.86533385369245, 253.00615632394613, -300.50952949212376, 314.86654320120181, 195.61619886924336, -26.128909838445907, -284.7746838465215, -242.67206560944771, 140.36059886792702, 505.64434194268858, 506.5379443143205); + double b2 = (423.97165723516218); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x4 a3 = double4x4(-502.369801993654, 87.367303650531539, -433.136377297871, -149.62691480928424, -358.698557305475, -249.12687527813335, 469.59318540505751, 511.75772619236159, 51.911379599902489, 245.63041817659064, 192.77484926617467, -162.20916064186446, 205.59038243330565, -376.46434348470734, 270.52080429276486, -388.203324737122); + double b3 = (-249.51763236220813); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double4x4 b0 = double4x4(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928, 390.36923879681581, 505.10510301268891); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-294.64870967280524); + double4x4 b1 = double4x4(443.19909283295226, 96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192, -336.61242524562982, 365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (153.47643358701669); + double4x4 b2 = double4x4(56.287803437694834, 39.342111844263059, -350.40371744260369, -482.71723221368961, 239.96540772168214, -3.4060323254233253, -1.4948394305514512, 105.96042184995508, 151.53752787017152, 63.283196240329744, -289.69317378182575, 137.55377942768564, -247.66646945088473, -339.42056409428858, 23.238285313937013, 21.177870045033274); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (477.036560995987); + double4x4 b3 = double4x4(-411.31815524181263, 122.39710408188273, -401.49883503536637, -230.56110273607129, -214.95405135627561, 464.67306659402004, -186.32700428102493, -99.487320707872186, 214.23246179066246, -387.36749833979059, -448.79620358384966, 427.88950630085981, -43.696046134315452, 182.69869979782902, 298.88015164941555, 246.43680130990072); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_not_equal_wide_wide() + { + double4x4 a0 = double4x4(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072, 398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double4x4 b0 = double4x4(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992, -406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x4 a1 = double4x4(-192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111, -72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391); + double4x4 b1 = double4x4(93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584, 415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x4 a2 = double4x4(-506.82837772128562, 245.47704779611763, -173.57105811572217, 390.33854669627669, 252.83775555940235, 47.865854047176413, 457.710514043323, -313.22114601415637, 391.20388168432, 481.7861199238273, 26.887826693657757, -298.14237346227389, 240.07745634768037, -332.45515338166388, -333.60717240609563, -313.18967857639757); + double4x4 b2 = double4x4(420.21507926481547, -239.17604529074208, -99.079094694498508, 4.4760239145141441, 264.34854352862976, 451.31233689343196, 232.95803343176749, -142.62218839611029, -300.22557820949032, 268.33322418310365, -112.1035507247334, -270.49403989989963, -71.9932391978769, 99.463272856298545, 321.70330134113476, 200.05965218323263); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x4 a3 = double4x4(141.7301719848673, -261.11886251211115, 295.57872380669164, -16.021309621642047, -487.26684664528204, -208.5638874548319, 30.349470867938066, -157.87644989689647, 275.896060833659, -450.72069546707007, -61.898862629150415, 99.190081404144962, 206.35745272708937, 32.746498361577551, -278.62394131283463, -173.91680367939023); + double4x4 b3 = double4x4(-91.628340525379542, -113.0108664562045, 465.76424215071097, -485.12772606552005, -71.726771626494269, 486.46925638917332, 425.86777873796768, -158.88094694860325, 292.17955674425673, 234.17994486269538, 243.24930846097379, 117.27517300344778, 3.9710876960173209, 410.42218108215468, -221.12472616002185, 443.13445421826771); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_not_equal_wide_scalar() + { + double4x4 a0 = double4x4(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059, 501.8990516615562, -134.34545642433011, 458.40042302496749, 46.771004937016869); + double b0 = (-393.41354173860213); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x4 a1 = double4x4(161.45995123752391, -145.61239559278471, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778, -80.932258882062627, -328.58774844211888, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065); + double b1 = (261.51423442620512); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x4 a2 = double4x4(229.67068420614612, 317.28609314434516, 401.93959612489664, 210.98484502126689, -147.09631616766393, -193.39904531901658, 207.73136410849702, 284.39206208120663, -509.0852923379677, 414.30764718274941, -52.294460082563774, -140.43793660981487, -316.78779402225643, -358.69683592333308, 312.31897249460178, 270.62946260656668); + double b2 = (-76.543291365980792); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x4 a3 = double4x4(-140.01671153866533, 113.13720446132925, 479.699595436314, 6.0974566964886208, -83.634578982197922, 249.90937554552659, 303.95597734300236, 464.88867185306208, 44.636526366992143, -259.91627681437706, -242.33552491028587, -403.68651575766808, -469.14709279925893, 135.98750335350053, -490.84077357260549, 470.22527835808012); + double b3 = (108.9106157333174); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double4x4 b0 = double4x4(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011, 270.40006149485714, -472.8467831429312); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-286.85046090132113); + double4x4 b1 = double4x4(-384.69186681541237, 443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936, -239.231014124691, 411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-189.65225204716074); + double4x4 b2 = double4x4(-212.84655127900027, 306.1256321902041, -178.33037885386977, 382.14199203166277, -340.86559478420094, -17.580244787773211, -409.87484498036787, -349.70166914057995, 275.85432756871649, -229.37194906425287, -127.50573283410898, 90.753436369240944, -422.08713574990963, -2.4475424301100475, -280.55170954417054, -484.37435959483236); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-33.76342226647); + double4x4 b3 = double4x4(374.59386962214194, 437.0923590311279, 286.22582949615355, -18.232783087637642, 289.73235787531939, 479.48573969280619, 153.85391695511248, 502.98214339790036, -510.38439607545007, 65.78889682972283, -237.48668276401548, 219.91613088358008, -275.3427389950225, -78.931455410519334, -449.40356299346479, -253.03452670436099); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_wide_wide() + { + double4x4 a0 = double4x4(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062, -19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double4x4 b0 = double4x4(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916, -185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool4x4 r0 = bool4x4(false, true, false, false, false, true, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x4 a1 = double4x4(7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691, 269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373); + double4x4 b1 = double4x4(73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914, -382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766); + bool4x4 r1 = bool4x4(true, true, true, true, false, false, true, true, false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4x4 a2 = double4x4(-316.13839664875456, -417.52215905558421, 441.6434454590285, -191.95062908527939, 397.81158823418036, -144.66662485183525, 417.0790571724433, -322.9801315381099, -81.285095014276521, 319.32531538574267, 146.76406509557933, -316.58337488611386, -150.85755855909434, -314.60630550729405, 7.14312720631392, -458.82730767635036); + double4x4 b2 = double4x4(-114.55647259324627, 441.42973276666817, -113.33366709264629, 435.622928583819, 383.65612786992267, -293.711607831396, -391.35497612103586, 43.122021456771563, 433.2236590018606, -201.38245282014014, -241.42116629398481, 376.46986955053637, -503.39744472103075, -359.78095095221931, 118.63150149147566, -510.03052759078821); + bool4x4 r2 = bool4x4(true, true, false, true, false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double4x4 a3 = double4x4(333.22770348807228, -349.98049537743464, 354.72504894562303, -451.62913748790936, 321.6347664900286, 365.72358935220336, -224.15940557427678, 388.58127969716736, -481.78943537258982, -473.93310974255814, -160.73651583527055, -200.43802103793155, -309.97309770713241, 80.287291325762567, -310.72736158535224, -83.520198622495); + double4x4 b3 = double4x4(418.64480491105689, -95.549393459944724, 478.12124060006875, -129.55856162382224, -484.63468121208, 352.22805301855692, -505.47762536698843, 162.99360545118975, -43.25767495262329, 18.279553183484609, 479.07899139778647, 437.28276964523025, -281.99202860612047, 433.04089018005914, -344.16967813306007, -232.81991325729524); + bool4x4 r3 = bool4x4(true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_wide_scalar() + { + double4x4 a0 = double4x4(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413, -68.088202269788951, 12.788020378345664, -66.703050406045747, -78.762971199472872); + double b0 = (199.06751808853244); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, false, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x4 a1 = double4x4(25.727694284975428, -330.442660724019, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904, -98.315578744893685, 300.41017617863145, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516); + double b1 = (101.37087182950734); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4x4 a2 = double4x4(-455.37556740985048, -296.37211884948056, 272.4883617239484, 360.20793097103387, 389.7274403002707, 68.736721786082171, -400.61523384629527, -85.469117442830054, -467.70215604626674, -51.387892031757133, 201.76466927387037, -47.8412668927765, -180.74006255936814, -409.01566929789988, 229.6990183469369, 176.19784816363722); + double b2 = (360.29156344025); + bool4x4 r2 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4x4 a3 = double4x4(-410.45517439882047, -20.246482620130507, 150.79782230723549, -69.4741823996763, -304.78239431268651, 149.17671091350576, -426.0861434536456, -455.14605805610586, -110.2582862890597, -276.35561550611425, 494.55641984127294, 472.35385511459492, -131.30499774371509, -404.27388472309053, 498.8766369758531, 370.97853749384103); + double b3 = (-264.43480766212326); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, true, true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double4x4 b0 = double4x4(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055, -221.63786731550368, -424.26720329013989); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (249.05904948388184); + double4x4 b1 = double4x4(-22.136127720650336, -442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863, 122.16476803746298, 96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (434.488835775521); + double4x4 b2 = double4x4(-157.45019228637693, 190.57215914063727, 108.25831871305513, 132.55076056930739, -431.51522155828553, -192.20350727448402, -431.83499284825984, -85.581249515331024, 328.67053977058765, 273.5778516612844, -178.66905816768718, 352.63627235621038, -82.605815687498932, 238.90886675515628, 291.3353070185218, 183.35733875229835); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-185.03260597262187); + double4x4 b3 = double4x4(-179.35502895124023, -331.53868189991391, 59.284426478335831, 356.62678854382909, 119.39404087857997, -80.440038480069518, 392.85907978231978, 306.15543165158272, -504.52945947299219, 349.38434116420535, 115.50029020919476, -251.65653598106303, 197.0481570684575, -268.07704103555392, 381.10572045906713, -367.12156145978793); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_wide_wide() + { + double4x4 a0 = double4x4(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526, -425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double4x4 b0 = double4x4(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131, -206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool4x4 r0 = bool4x4(true, true, false, true, false, true, false, false, true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double4x4 a1 = double4x4(8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678, 105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911); + double4x4 b1 = double4x4(364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437, -352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156); + bool4x4 r1 = bool4x4(false, false, false, false, false, true, true, true, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4x4 a2 = double4x4(-496.97184705034448, 339.88814202877143, 372.22833007025918, 313.2386917142378, -419.10894437279035, -265.32978380160864, -42.501995344880015, 369.16390507722451, 67.169061453626, -256.69890868696336, -104.10592060168551, 499.57010268586225, 41.663492460578482, 151.15207416897272, 220.68833146835129, -344.65888110951471); + double4x4 b2 = double4x4(337.88991014002352, -249.50553929503332, -225.90130554228148, -249.49127757246202, 381.12288373574745, 325.54538145919582, 455.49881360283996, 333.31868401789973, 118.98035603341668, 223.19812236688949, -385.28907102406447, 333.88080159476067, -437.41072126729915, 243.97544943726405, -302.81988658701061, -32.710171476337223); + bool4x4 r2 = bool4x4(false, true, true, true, false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4x4 a3 = double4x4(-285.24129809310716, -94.158616825080742, -75.18496159239902, 304.3608087526452, -153.39846498956831, -83.06840161377022, -59.948590068122655, 228.58834921037237, 64.90572479409434, 65.08489635637261, -3.845335723760229, 471.92235277216992, 350.31980745416126, 220.83096824438826, 134.94662028874575, 41.820390959186625); + double4x4 b3 = double4x4(-228.69145570913861, 388.41316312757, -23.724548589309961, -180.56350358788086, -433.43401523746275, 157.85735590656168, -2.4736955177382356, 258.28781259166442, -327.37584057793759, 408.47455019898462, 403.88254971237973, 400.31722397371993, -505.99265956598924, 297.63905133755839, -442.73675772302636, 395.71094221422027); + bool4x4 r3 = bool4x4(false, false, false, true, true, false, false, false, true, false, false, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_wide_scalar() + { + double4x4 a0 = double4x4(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456, -172.51816066192379, -18.149639853346002, -236.41493498367021, -238.8945134798505); + double b0 = (-302.81693877969724); + bool4x4 r0 = bool4x4(true, false, true, false, false, true, true, true, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double4x4 a1 = double4x4(-27.239137900638923, 240.16453253485474, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845, -7.3478887115362568, -261.86596477304863, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484); + double b1 = (471.77934072528933); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double4x4 a2 = double4x4(-218.86613069235631, 290.57303752124915, 180.263321722049, -482.86394690110529, 100.70627574841785, 180.6725166685286, 501.31978749731547, -289.28097046971368, -25.849692595121326, 455.1624288294289, -63.3173549470107, -17.446765669363913, 53.017790103805169, 88.819595139855323, 182.3580006018085, -428.92720933860505); + double b2 = (-34.692342535915031); + bool4x4 r2 = bool4x4(false, true, true, false, true, true, true, false, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4x4 a3 = double4x4(408.336862515815, 495.17269753626204, 345.03004352423829, 337.5619315288784, 175.88833745563795, -412.79507680088051, 57.17175796310039, 413.02461428801746, 34.4581821125272, -99.476764963696155, -76.558937823660187, -494.98022650879818, -27.016385806266385, -468.51766155125466, -335.857029832833, 481.16540001387023); + double b3 = (-460.19863698454509); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double4x4 b0 = double4x4(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965, 392.5205878655056, -177.47865947404813); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (-10.295010809924008); + double4x4 b1 = double4x4(-24.048938524000789, 172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956, -361.52483360912879, -372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (471.92098138850224); + double4x4 b2 = double4x4(479.36154411703421, -107.00416784500896, 331.63653746789157, -340.84013120310385, -384.21461147079924, -451.7265658097931, 467.97876355982328, -236.5691269545672, 44.654746314815611, -285.79786671595548, 42.7309816082618, 338.18510762703841, 274.01702202205411, -108.60437088301609, -211.37325606652223, -19.004157313613291); + bool4x4 r2 = bool4x4(false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (194.114679188521); + double4x4 b3 = double4x4(395.75988668750961, -320.20625725398133, -384.86614316742225, 310.54374160922305, 495.99087380617436, -60.935228137734896, 178.74877246597259, 42.3462288576859, 294.61128463158911, -36.679563301000542, 36.861622112273039, 405.46951813505473, 399.11242241371065, -209.86087689635383, -365.34365551795048, -167.46023209740417); + bool4x4 r3 = bool4x4(false, true, true, false, false, true, true, true, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_equal_wide_wide() + { + double4x4 a0 = double4x4(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697, 84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double4x4 b0 = double4x4(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706, -280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool4x4 r0 = bool4x4(false, true, false, true, true, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x4 a1 = double4x4(36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485, -77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737); + double4x4 b1 = double4x4(95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041, -216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022); + bool4x4 r1 = bool4x4(true, false, true, false, true, false, true, false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x4 a2 = double4x4(-383.30294889179197, -5.1470377469188975, 319.34374752610165, 465.02220485407031, 145.93345100522663, -215.07482991697026, -146.46150667334979, -349.8939770897357, 29.599108948185631, -131.79663640437491, -438.99467464862141, 147.05792553120193, 221.11248956486236, -356.14535276784807, -32.830178991346713, 442.94199892642996); + double4x4 b2 = double4x4(-202.74836430454087, -312.47647133119244, 310.07189884319519, -320.3630436958573, 186.07597288213481, -42.637794752902266, 82.565048971476472, 127.18911009989176, 198.28697428400017, -450.49204108235057, 20.901004085736872, 449.46589133211683, -478.77271841409276, 380.05395692403147, 99.1247280105598, -450.32978150357019); + bool4x4 r2 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x4 a3 = double4x4(-301.13985194877716, -10.974948172911525, -37.474589603708409, -70.386105331772058, -169.02451594594146, 432.80079504139758, -197.70657190946235, -131.69548207693521, 277.7339395385859, -480.48399065457471, 424.76605220547231, -477.71820591283881, 162.19371016425714, -21.588960896054743, 154.21725161104337, 224.46713529548936); + double4x4 b3 = double4x4(45.421907684496546, 63.015531807679508, 2.8447597040071742, 124.8846481427945, 246.54787623442144, -437.79363199593206, -83.32811764782673, 147.94396049712964, 281.880845916402, -33.003705278506345, -319.8491572438968, 107.79604702247127, 57.38707092096422, 286.11646594019442, -427.03175206996116, -465.19127700533312); + bool4x4 r3 = bool4x4(true, true, true, true, true, false, true, true, true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_equal_wide_scalar() + { + double4x4 a0 = double4x4(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294, -182.9388249772316, 349.25012962392077, 485.31159304329731, 373.56911652794531); + double b0 = (292.92427148154206); + bool4x4 r0 = bool4x4(false, true, true, true, true, false, true, true, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x4 a1 = double4x4(259.15151822713744, -128.5255282523695, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862, 87.9161055497434, -502.17362308044619, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043); + double b1 = (450.13007828692446); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x4 a2 = double4x4(-213.37865243357544, -24.82758070194518, -451.04158684752957, 429.57755132651778, -308.43429031429548, 355.16031114904229, -279.40712011950421, 181.6722582232544, -290.14875401656548, -184.84408411050407, 447.6939139066701, 168.88657696958933, 26.378954661255193, 392.55852789085293, 255.60484015923214, 162.16346867483276); + double b2 = (42.260789175639275); + bool4x4 r2 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x4 a3 = double4x4(195.49629482789726, 357.55978720149017, 145.56185037715443, 363.80669014705654, -141.43743545442697, 102.22195224753671, -114.20774250580359, -429.83945985782867, -236.49592625186591, -175.762239776441, -420.69644637624566, -97.853465841083562, -273.68524731029072, -442.22490450470934, 156.18703110338515, -102.82326679249445); + double b3 = (463.24875209445543); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double4x4 b0 = double4x4(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843, -480.43516968210935, 421.9366516647566); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (239.72105299668431); + double4x4 b1 = double4x4(-101.01844673092404, -283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588, -116.01998215355911, -442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (230.39086471795611); + double4x4 b2 = double4x4(-413.98479266370873, -215.90167794744565, 39.5603883450666, 22.947996388630941, -162.0605676928817, 236.73373352584133, -253.95195853614803, -204.71909985538531, -161.61653550044474, -64.3859322370896, -229.815656530585, -484.82564591096047, -135.04042989343424, 351.69478599712943, 111.82539778194644, -249.98255431371859); + bool4x4 r2 = bool4x4(false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (435.80731769828469); + double4x4 b3 = double4x4(2.8926103128551404, -338.66996089493387, 381.34663146610683, 456.652450058913, 432.051796399081, 290.14247121016615, 189.29714521639846, 101.12857751787112, -150.37975962012064, -490.74788903200437, 219.13958917331865, -505.29052209541692, 326.69468871070751, -479.39791057975867, 195.13560566452122, 322.878979594856); + bool4x4 r3 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_equal_wide_wide() + { + double4x4 a0 = double4x4(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338, 349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double4x4 b0 = double4x4(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864, 73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool4x4 r0 = bool4x4(false, false, true, false, true, true, true, false, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x4 a1 = double4x4(-131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464, -223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255); + double4x4 b1 = double4x4(381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944, 453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221); + bool4x4 r1 = bool4x4(false, false, false, true, false, true, false, true, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x4 a2 = double4x4(-132.22179395156996, 303.68380489185631, 265.21013439130513, 9.75437188602723, -233.09288631803025, 26.567515147182917, 266.78067529703526, -250.0722254487091, 138.0408142255809, 174.27673848638165, -420.93164678147605, -42.854160567211977, 216.48505435534059, 240.05384623261818, -470.38216875045663, 98.396702573819425); + double4x4 b2 = double4x4(-129.35329276386335, 8.1077725925052846, 426.44951434920051, 410.69316477826476, 470.31343410458112, 220.39997993241991, -372.87269967276262, -242.17855965447546, 177.50623258273413, -172.63815864019011, 60.722858695649961, 478.25016067840636, 234.30301128807616, 297.82121171514564, 104.58457260233558, -462.41871926859892); + bool4x4 r2 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x4 a3 = double4x4(-20.828870544596043, -218.44057498613398, 287.75180615473153, -356.96666614942563, -68.069519789921856, -432.91875644816025, 388.14240592911017, 396.40410084109942, -204.5674646853318, 179.7521007898041, -124.94735270596453, 22.31826282586826, 425.50086780334868, 303.6227182371648, -325.60433188341756, 369.07533352872144); + double4x4 b3 = double4x4(-405.94388050862767, -347.05557386346891, -72.926237378700762, -137.94250995383715, 403.42982716273048, 501.53929423798775, -55.528008725274333, 225.85078178432343, -57.186008718417042, -185.23014577907981, -481.59480188861249, 319.05534735278013, 337.43364421344995, -481.09287689677109, 223.93316017088159, 174.32254107963411); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, true, true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_equal_wide_scalar() + { + double4x4 a0 = double4x4(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345, 164.77259667439978, -287.00733889593153, 355.83704559683667, 184.19556316369938); + double b0 = (189.20512804258851); + bool4x4 r0 = bool4x4(true, false, false, true, false, false, false, false, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x4 a1 = double4x4(273.01225555735277, 249.38409697701411, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234, 71.176674637560154, -331.27167788672807, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341); + double b1 = (-418.14240308205706); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x4 a2 = double4x4(30.997067704329766, -74.50001743924804, -343.38647357718389, 216.0315855555383, -420.40314813163275, -78.384021080277876, -336.6411160606151, 317.0945958183587, -262.42494666875569, -228.41125522759336, 123.46545964268296, 264.10247362037308, 223.62332569045168, 440.53538366804617, -420.72700830024064, 74.844301497025526); + double b2 = (199.23222861030706); + bool4x4 r2 = bool4x4(false, false, false, true, false, false, false, true, false, false, false, true, true, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x4 a3 = double4x4(-177.07789405485516, -28.596381439173797, 165.28756173201259, -349.20799676943943, 457.4437141164409, -191.2236379083356, 350.61212389106493, 475.07525871464759, 86.129239360862016, 63.164628296701494, -126.91322690197882, 80.776476182405077, -344.92694703905238, -409.61143012047347, -408.5478028769362, -415.68230815217009); + double b3 = (482.71023033685526); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double4x4 b0 = double4x4(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813, -367.25635474140586, 494.950765601802); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, false, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-61.235545425319856); + double4x4 b1 = double4x4(-429.17024846988278, -213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009, -400.47050280145857, -283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-351.12526123184955); + double4x4 b2 = double4x4(-381.81828921931719, 393.30091089443351, 18.023639925766588, -169.92393048569744, -285.88492669066648, 163.75110037799516, 191.85533317916804, 114.01553230826539, -395.98584169707533, 189.3665684151307, 176.19814618686132, 61.713796405919766, 507.54848241598745, 224.04381595554003, -422.99370570806491, -127.05500394061909); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, false, false, true, false, false, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (95.528642460484321); + double4x4 b3 = double4x4(362.56816761687776, -501.04042148079742, 314.66822471966418, 484.32155893944275, -284.81317080408951, 106.03397970368803, -310.3688849463914, 373.60582679026095, 147.07617504292921, -297.52222146537258, 339.5470513494439, -193.01458963799041, -3.090438128956805, 429.024662456021, 157.23658688237731, 208.49405942135218); + bool4x4 r3 = bool4x4(false, true, false, false, true, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_add_wide_wide() + { + double4x4 a0 = double4x4(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068, 491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double4x4 b0 = double4x4(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515, 462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double4x4 r0 = double4x4(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328, 953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a0 + b0, r0); + + double4x4 a1 = double4x4(284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847, -62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207); + double4x4 b1 = double4x4(-269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987, 492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005); + double4x4 r1 = double4x4(14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834, 429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212); + TestUtils.AreEqual(a1 + b1, r1); + + double4x4 a2 = double4x4(-261.12612998724273, -309.8303507817119, 378.36333220934648, -224.09398065511789, -164.55573399577094, -69.873935493581882, 224.63463197678072, -383.99260038137095, 149.2212694386119, 169.38798363943954, 163.05393059693927, 57.02912500176069, 342.95008413072219, 168.68046696888302, -470.77026746737317, -117.63049631828); + double4x4 b2 = double4x4(-474.8229422396156, 311.39072885708447, 326.84541979750873, 475.21193597987849, 314.152972606082, -262.59463393995287, -82.869108000243614, 156.29956658012213, 427.40157791012973, -279.09935177448176, -448.61522051720658, 284.33708847888613, 288.18558062621651, -232.39503847453511, -386.87190812959892, 162.90336831049217); + double4x4 r2 = double4x4(-735.94907222685833, 1.5603780753725687, 705.20875200685521, 251.1179553247606, 149.59723861031108, -332.46856943353475, 141.76552397653711, -227.69303380124882, 576.62284734874163, -109.71136813504222, -285.56128992026731, 341.36621348064682, 631.1356647569387, -63.714571505652088, -857.642175596972, 45.272871992212174); + TestUtils.AreEqual(a2 + b2, r2); + + double4x4 a3 = double4x4(252.81970298142164, -102.53439884192051, -379.40276139760522, -42.88221051305635, 204.78644833564124, 91.599573416448948, 70.131176265948966, -111.69176893666935, -443.8758592288363, 134.70148212029665, 170.90681966157013, -207.87998232984916, -19.85206724137629, 480.44064472636239, -353.8350471713743, 433.98220344725166); + double4x4 b3 = double4x4(-339.60306684095553, -82.40527228378005, 1.9353277692270012, 122.27457886667673, -42.76419045532316, -413.05469746750532, -350.28294603446636, -10.60689330594937, 172.55730708528188, 492.04216240907192, 67.585375102043827, -324.51090947003615, -82.16743926059803, -421.82224841687, -503.69894218058278, -289.683825866172); + double4x4 r3 = double4x4(-86.783363859533893, -184.93967112570056, -377.46743362837822, 79.392368353620384, 162.02225788031808, -321.45512405105637, -280.1517697685174, -122.29866224261872, -271.31855214355443, 626.74364452936857, 238.49219476361395, -532.39089179988537, -102.01950650197432, 58.618396309492368, -857.53398935195708, 144.29837758107965); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_add_wide_scalar() + { + double4x4 a0 = double4x4(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697, -2.6649749291431704, 78.985822952811532, 202.14799151297098, 311.7254551908585); + double b0 = (500.99725913489112); + double4x4 r0 = double4x4(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776, 944.11251159762617, 769.08948504975513, 542.3182804725684, 29.741183294794155, 498.33228420574795, 579.98308208770266, 703.1452506478621, 812.72271432574962); + TestUtils.AreEqual(a0 + b0, r0); + + double4x4 a1 = double4x4(10.345855002452595, 355.23276703210206, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746, -160.5840962680914, -172.54221566605486, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995); + double b1 = (-151.24445898423181); + double4x4 r1 = double4x4(-140.89860398177922, 203.98830804787025, -349.04522482913234, 104.71080689537843, 92.902638955462123, -332.87102857831451, -153.69938571457726, 149.65619571025303, -387.73640793735927, -311.82855525232321, -323.78667465028667, -394.18554515120832, 315.09964003930776, 86.742999117236138, 113.04955583114617, 221.62238131352814); + TestUtils.AreEqual(a1 + b1, r1); + + double4x4 a2 = double4x4(-198.83777699192882, 402.16034693371523, -117.02482729639149, 497.37375592504338, 485.90928124166521, -47.757128976172339, 77.81479338454767, -271.54797304400614, -133.25178605562627, 211.86678777070097, 253.15022504196975, -342.78316823708974, -185.24833997769667, -403.38548845955427, -358.84824125787628, 65.247578889712486); + double b2 = (-381.930974899759); + double4x4 r2 = double4x4(-580.76875189168777, 20.229372033956224, -498.9558021961505, 115.44278102528438, 103.9783063419062, -429.68810387593135, -304.11618151521134, -653.47894794376521, -515.18276095538522, -170.06418712905804, -128.78074985778926, -724.71414313684875, -567.17931487745568, -785.31646335931327, -740.77921615763535, -316.68339601004652); + TestUtils.AreEqual(a2 + b2, r2); + + double4x4 a3 = double4x4(127.2016943093397, 432.12115903949416, 436.08892055791284, -308.05696859399643, -255.14983880480276, 245.96320855150145, 420.01629920490848, 337.52920810204432, -311.76240720961357, 322.94279566544242, -342.24904338561419, 276.52630127432121, 488.77115343919547, -481.89523218660395, 289.0270065222993, -332.12291613785686); + double b3 = (-112.13987141109067); + double4x4 r3 = double4x4(15.061822898249034, 319.98128762840349, 323.94904914682218, -420.1968400050871, -367.28971021589342, 133.82333714041079, 307.87642779381781, 225.38933669095366, -423.90227862070424, 210.80292425435175, -454.38891479670485, 164.38642986323055, 376.63128202810481, -594.03510359769462, 176.88713511120864, -444.26278754894753); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double4x4 b0 = double4x4(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458, -374.53758233345, 154.4676006559597); + double4x4 r0 = double4x4(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626, -362.56777970984939, -94.7077846968117, -465.68709824312805, -307.4885689259919, -464.12712309515433, -298.60860123234272, -700.0503471773352, -171.04516418792548); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (268.3838204203098); + double4x4 b1 = double4x4(-190.96302255939833, 188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923, 480.88455770950975, 438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392); + double4x4 r1 = double4x4(77.420797860911478, 457.00107405008794, -236.53230344342643, 288.8378340158788, 466.32916567583061, 519.79576516514442, -152.70655496078848, 379.82922094866126, 195.11493739630788, 749.26837812981955, 706.43683275693877, 335.22810951584393, -2.4121789943483805, 224.36189852671782, 466.07853958852525, 287.49775041616419); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (349.23776857426287); + double4x4 b2 = double4x4(366.23449271090067, -413.48026890935387, -260.720191361718, 77.542334831106587, 183.95489009840173, -51.498981738229759, -472.4974751288525, 107.12689285498436, 349.07720033688338, 431.59597774576207, -314.11096468293618, 396.99665302643393, -167.30862935227742, -157.11451895400626, 287.76251591730977, -367.33903544365387); + double4x4 r2 = double4x4(715.47226128516354, -64.242500335091, 88.5175772125449, 426.78010340536946, 533.19265867266461, 297.73878683603311, -123.25970655458963, 456.36466142924723, 698.31496891114625, 780.83374632002494, 35.126803891326688, 746.23442160069681, 181.92913922198545, 192.12324962025662, 637.00028449157264, -18.101266869390997); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (96.2368000001818); + double4x4 b3 = double4x4(212.02315984108634, -400.69347614827262, 26.342837584364588, 166.03322156054583, 49.9665229553201, 154.57879526660724, -446.35691782755634, -46.7756941536328, 426.56867261723085, -168.36824925633533, 254.26507890143671, -241.26492010860932, -278.259015451306, -237.17309795933454, 174.13094743254169, 510.91026592203889); + double4x4 r3 = double4x4(308.25995984126814, -304.45667614809082, 122.57963758454639, 262.27002156072763, 146.2033229555019, 250.81559526678905, -350.12011782737454, 49.461105846549, 522.80547261741265, -72.13144925615353, 350.50187890161851, -145.02812010842752, -182.02221545112423, -140.93629795915274, 270.36774743272349, 607.14706592222069); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_sub_wide_wide() + { + double4x4 a0 = double4x4(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254, -470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double4x4 b0 = double4x4(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321, -446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double4x4 r0 = double4x4(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464, -23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a0 - b0, r0); + + double4x4 a1 = double4x4(-508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458, -308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012); + double4x4 b1 = double4x4(-210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049, -221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004); + double4x4 r1 = double4x4(-297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263, -87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884); + TestUtils.AreEqual(a1 - b1, r1); + + double4x4 a2 = double4x4(388.48155969590016, 138.71817285321572, -385.57360547854267, -149.36481745045859, -158.53404982319756, 508.07069015319962, 482.70080326623315, 114.56930237383085, 364.83137505353955, 229.03103052313952, -168.08806689460204, 373.44110911592895, -239.90097748483578, 379.92848437834925, 113.01185970800555, 306.83529319746197); + double4x4 b2 = double4x4(72.119071755613732, -154.88059170305758, -469.65998361523265, -320.61543217330029, 6.4122865229902573, -278.86505783668952, 15.838054425939049, 27.518323672711062, 429.86960979451874, -458.62247178453134, -172.064416250244, -284.52470673458868, 42.606667776874588, -223.47425208961323, -56.92974641589899, 61.8073423196596); + double4x4 r2 = double4x4(316.36248794028643, 293.5987645562733, 84.086378136689973, 171.2506147228417, -164.94633634618782, 786.93574798988914, 466.8627488402941, 87.050978701119789, -65.038234740979192, 687.65350230767081, 3.9763493556419576, 657.96581585051763, -282.50764526171037, 603.40273646796254, 169.94160612390453, 245.02795087780237); + TestUtils.AreEqual(a2 - b2, r2); + + double4x4 a3 = double4x4(222.81745038871532, 271.99421776085819, 386.94295781987853, -55.755297925209277, 440.03937193380636, -362.72476475440192, 292.10314835799068, 246.66062438053109, -319.0292376573334, -115.24401360156202, -122.40906268097882, 56.092392232312022, 210.67796263968478, -426.9796142182218, -337.58846799358184, 78.372708118694277); + double4x4 b3 = double4x4(-454.69553944780284, -114.06055718011248, 367.168711118013, -351.27958576347658, 263.14884269570416, -492.305362692245, 308.15324678465413, 455.308401081389, -221.13767753408183, -466.65879438196254, 81.54943589193249, 48.545975946144154, -88.7571204121956, 83.8197267445828, -437.89056536084536, 410.39569659270148); + double4x4 r3 = double4x4(677.51298983651816, 386.05477494097067, 19.774246701865536, 295.5242878382673, 176.8905292381022, 129.58059793784309, -16.050098426663453, -208.64777670085789, -97.891560123251566, 351.41478078040052, -203.95849857291131, 7.5464162861678687, 299.43508305188038, -510.79934096280459, 100.30209736726351, -332.02298847400721); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_sub_wide_scalar() + { + double4x4 a0 = double4x4(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252, -246.28726660753006, 21.605312595891405, 246.35072171238755, -121.42736178330489); + double b0 = (-291.59041442144212); + double4x4 r0 = double4x4(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695, -86.3352790280876, -178.67162855838973, 692.12533410830667, 753.09797941944464, 45.303147813912062, 313.19572701733352, 537.94113613382967, 170.16305263813723); + TestUtils.AreEqual(a0 - b0, r0); + + double4x4 a1 = double4x4(-122.71842413894757, 360.15095417581074, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725, -121.16305619159857, 187.99838813953022, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484); + double b1 = (-122.93872099879138); + double4x4 r1 = double4x4(0.22029685984381331, 483.08967517460212, 465.8132998728255, 141.86854845931225, 287.54107345619286, 219.98240957967118, 608.85370235184848, -82.818935909689856, 376.38194816949863, 1.7756648071928112, 310.9371091383216, -327.88155237207263, -125.13465028867807, 95.942655608031259, 564.49134042323169, 572.84933069201622); + TestUtils.AreEqual(a1 - b1, r1); + + double4x4 a2 = double4x4(354.88602678612153, -189.19323381650878, 269.07481659067548, -59.118566302172155, 363.45839207407948, -73.779217515969265, -46.155220768486743, 109.9132454907118, 182.64693483274755, 229.01577411825576, -144.92867405010793, 469.25061414635309, -150.49230797146089, -192.31251177206286, -224.35684810595438, 285.87681855162452); + double b2 = (98.821485803845121); + double4x4 r2 = double4x4(256.06454098227641, -288.0147196203539, 170.25333078683036, -157.94005210601728, 264.63690627023436, -172.60070331981439, -144.97670657233186, 11.091759686866681, 83.825449028902426, 130.19428831441064, -243.75015985395305, 370.42912834250797, -249.313793775306, -291.133997575908, -323.17833390979951, 187.0553327477794); + TestUtils.AreEqual(a2 - b2, r2); + + double4x4 a3 = double4x4(-63.010835438506149, 152.83310110533284, 92.32092456348289, -481.9931101659281, 55.807233121156287, -198.59209904381635, -338.35669747849772, -142.26173955866216, -201.51055035437946, -279.91752041499944, -495.64004372788594, 119.08998757185884, 382.1476778379398, 68.734022410928333, 470.98230026242436, -500.40304469522232); + double b3 = (499.91121673021053); + double4x4 r3 = double4x4(-562.92205216871662, -347.07811562487768, -407.59029216672764, -981.90432689613863, -444.10398360905424, -698.50331577402687, -838.26791420870825, -642.17295628887268, -701.42176708459, -779.82873714521, -995.55126045809652, -380.82122915835168, -117.76353889227073, -431.17719431928219, -28.928916467786166, -1000.3142614254328); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double4x4 b0 = double4x4(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964, 1.7350065716240124, 122.53803997977548); + double4x4 r0 = double4x4(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464, -46.618469259989638, 680.361515361984, 219.19171248152463, -60.357257394286421, 125.45504385114418, 206.36985073162703, 292.851452486986, 172.04841907883451); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-264.94502771317264); + double4x4 b1 = double4x4(-50.837180399725753, -347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867, 432.18467422583353, -163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443); + double4x4 r1 = double4x4(-214.10784731344688, 82.705295124419649, -269.01058638701716, -185.84960326265991, -619.30336694945743, 27.547483933878766, -211.73604450548817, -18.597427376824157, -564.14836909815131, -697.12970193900617, -101.06502680716341, -441.68758317534241, -159.95918615160474, 180.85260256605807, -236.07187234427403, -95.3567986932382); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-270.35924614144454); + double4x4 b2 = double4x4(68.0476272423042, -65.531290323255234, 440.38039776328037, 427.36063142649857, -81.472953595906915, 41.713177461974851, 175.82078059754372, -214.94915900703018, -163.44686253529363, -218.82914672551169, 389.1168579483018, -74.109779154001615, -448.13723751908969, -410.37498278653948, 363.21098177657041, -263.53538120143833); + double4x4 r2 = double4x4(-338.40687338374875, -204.82795581818931, -710.739643904725, -697.71987756794306, -188.88629254553763, -312.0724236034194, -446.18002673898826, -55.410087134414368, -106.91238360615091, -51.530099415932852, -659.47610408974629, -196.24946698744293, 177.77799137764515, 140.01573664509493, -633.570227918015, -6.8238649400062172); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (473.54599283335074); + double4x4 b3 = double4x4(433.433287583959, 241.46943842688086, -446.75619074644345, -138.31811649087729, -414.00582165923242, 37.482320564557995, 290.04909457361748, -354.67991773908955, -322.97495308656943, -253.40195453045982, -412.35298819670129, 269.21571434159569, -65.809230119832421, -451.97742602414331, -407.73209805401603, 12.531945472830898); + double4x4 r3 = double4x4(40.112705249391752, 232.07655440646988, 920.30218357979425, 611.864109324228, 887.55181449258316, 436.06367226879274, 183.49689825973326, 828.22591057244028, 796.52094591992022, 726.9479473638105, 885.898981030052, 204.33027849175505, 539.3552229531831, 925.52341885749411, 881.27809088736672, 461.01404736051984); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mul_wide_wide() + { + double4x4 a0 = double4x4(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887, 467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double4x4 b0 = double4x4(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773, 184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double4x4 r0 = double4x4(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876, 86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a0 * b0, r0); + + double4x4 a1 = double4x4(464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245, -83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629); + double4x4 b1 = double4x4(-358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082, -189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596); + double4x4 r1 = double4x4(-166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995, 15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038); + TestUtils.AreEqual(a1 * b1, r1); + + double4x4 a2 = double4x4(-416.21309037516505, -103.27920513194016, -52.951897407393858, -40.828328390060165, -86.185078899462269, -257.3165096050671, 363.85721819654907, -229.86001001571304, 8.925310854299596, -2.4494049560508984, 37.75829531520526, 264.45176113045386, -321.251278788434, -268.25605762575572, 43.91368081230371, 274.83309877795773); + double4x4 b2 = double4x4(296.68037738310193, 341.001815239434, -257.09682166627459, 17.593622931089953, -443.84511658355831, 291.3492387697795, 490.1916594403757, 361.32099049227361, -509.28972244136486, 315.35265913389276, 125.08305054767197, -167.72711451711467, 396.8876833379677, -0.32041144385954112, 143.41152603151818, -396.34749597885997); + double4x4 r2 = double4x4(-123482.25672429107, -35218.396426477462, 13613.764524639606, -718.31821460143351, 38252.826391895, -74968.969196332953, 178359.77358712527, -83053.246493441373, -4545.5690876891422, -772.42636618638653, 4722.9227615057453, -44355.730823380291, -127500.67580770116, 85.95231074793665, 6297.7279789534741, -108929.41051275423); + TestUtils.AreEqual(a2 * b2, r2); + + double4x4 a3 = double4x4(378.42106622197718, -290.63338936987952, 209.91654334306554, 384.21970838318566, 363.08141892174319, -461.33337686086696, -134.36684829293137, 11.939433818654834, 125.20164233315813, -219.27099595743744, 358.96700422790229, 12.847143417618781, -479.771383747352, 150.25309402786809, -500.84076404051893, 485.67994211878624); + double4x4 b3 = double4x4(350.96015207421044, -374.53419488227655, -165.4560111339465, -338.01733151917222, -199.63334450481148, -385.12702935986545, -328.41130915675842, -423.30081744832023, -150.3247059091575, 402.97758669544828, 339.02082768968341, -29.296140922837026, -447.55209061482554, 62.160419254638441, 471.49208305379943, 282.40339506901955); + double4x4 r3 = double4x4(132810.71494934996, 108852.14249355502, -34731.953932569813, -129872.92054475893, -72483.157986900129, 177671.952974981, 44127.592555149138, -5053.9720953067108, -18820.900063075522, -88361.296783235535, 121697.29088662952, -376.37172401845788, 214722.68581329513, 9339.7953190788921, -236142.45511572072, 137157.66457127014); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mul_wide_scalar() + { + double4x4 a0 = double4x4(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794, 355.30832998608628, 119.35660391643489, -196.995807977857, 98.2360046367329); + double b0 = (192.21119055161773); + double4x4 r0 = double4x4(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959, -8981.8711609324328, -45824.109082604613, 81128.978632794271, -9386.6022026424689, 68294.2371195327, 22941.67493897583, -37864.798785101768, 18882.059406260672); + TestUtils.AreEqual(a0 * b0, r0); + + double4x4 a1 = double4x4(-325.55215683837991, -87.4509838034636, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565, 257.54154241156834, -475.60871551726422, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105); + double b1 = (53.937323833786536); + double4x4 r1 = double4x4(-17559.41210817936, -4716.8720329906373, -7037.4253747274324, -12006.1554842468, 6796.9135949323772, 15823.111987358996, 9405.6961056380333, -17643.98152822195, 3054.423371332075, 13891.101573705631, -25653.061307025935, -24416.989310772758, -2654.8277196957392, 7637.5762733030442, 23278.576762628451, 9727.8760632764643); + TestUtils.AreEqual(a1 * b1, r1); + + double4x4 a2 = double4x4(-40.92345454214302, 120.01444226131514, -59.508660105759589, 319.48987236595246, -403.52316040709763, -408.19309849673562, -335.39319554688092, -364.24254601273805, 150.68615085942952, 391.87204212316874, 179.3124121070432, 354.52978460608506, 497.76140164665946, 418.43656964713546, -413.33335967237753, -329.5207184895504); + double b2 = (279.54350842141707); + double4x4 r2 = double4x4(-11439.886059435035, 33549.258250967621, -16635.259627421652, 89311.3198262891, -112802.27998949833, -114107.73086718655, -93756.990583845487, -101821.63922875024, 42123.335281763859, 109545.28550737593, 50125.620783909842, 99106.499828674321, 139145.96857306932, 116971.22673098287, -115544.65751042787, -92115.377744115045); + TestUtils.AreEqual(a2 * b2, r2); + + double4x4 a3 = double4x4(-322.70306339985837, -344.13115159800793, 209.61276135668754, 38.797593373245377, -445.80384156005636, -71.467810425659536, -449.386232823779, -64.39855602402173, -210.72596535958627, 389.32568973550838, 510.29824447552596, -497.58101796432447, -509.50857400778148, 131.99404937214877, 502.49681043182352, 282.80997694787106); + double b3 = (-285.63120783755147); + double4x4 r3 = double4x4(92174.0657717795, 98294.596485466536, -59871.9462044751, -11081.80345639026, 127335.48972341932, 20413.437013386287, 128358.7324670231, 18394.237340135554, 60189.912008392661, -111203.56700134107, -145757.10392692662, 142124.66715818839, 145531.54939743111, -37701.619749536258, -143528.77089815889, -80779.3553041305); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double4x4 b0 = double4x4(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248, -265.01581991138676, 314.65609779705107); + double4x4 r0 = double4x4(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215, -228458.89803045939, -23181.225114435249, -197177.59217890151, -74380.402533339569, 183952.06452060991, -58160.528893481009, 123109.04449626306, -146168.67611024179); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (-292.71202029507236); + double4x4 b1 = double4x4(-37.729878681586058, 165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903, 53.7483275186961, -198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464); + double4x4 r1 = double4x4(11043.989014375036, -48403.509673108754, -104357.02590467168, 55267.931010519736, -147794.90187062602, -11875.945389626437, 60525.558968690093, 18031.845056961709, -34824.414285796818, -15732.781535478769, 58152.926629388923, -28169.46702581615, 5925.0417839403517, 9110.3618965353489, -11383.706731427716, 3844.2770304642049); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (507.87128209875493); + double4x4 b2 = double4x4(95.017933651347562, 340.74862186086762, 438.98690172610191, -227.16596637813655, 452.57297894571582, 144.01496774703958, -31.586035981581574, 42.297746916440246, -466.02715013270597, 287.454008951529, 328.99688378395365, -164.24312146205602, -511.26830100979112, -9.5943138644072974, 431.19011875204285, -132.14180642559279); + double4x4 r2 = double4x4(48256.879785884317, 173056.43945786267, 222948.84060419552, -115371.07059366687, 229848.81906041352, 73141.066311099828, -16041.64059038324, 21481.810956341167, -236681.80623072633, 145989.63607064, 167088.0691738516, -83414.364672835931, -259658.48753029478, -4872.676483174394, 218989.07843891438, -67111.0286482113); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-87.502642910695954); + double4x4 b3 = double4x4(384.61864513187606, 385.83906167831231, -384.6230682733576, 236.27862869774856, 336.44521371295923, 272.74445951764676, -121.14546900668438, -194.38113197795167, -364.7452964097007, 360.35692303271821, -153.58247644900462, 63.941664487096318, 0.043457269688815359, -430.97399278682377, -126.42789679692493, -338.74861613789039); + double4x4 r3 = double4x4(-33655.147961770235, -33761.937635035356, 33655.534998339841, -20675.004474368008, -29439.845394537857, -23865.861047043414, 10600.548714740688, 17008.862780043568, 31916.177425093992, -31532.183156529089, 13438.872594057622, -5595.064634729918, -3.8026259514542216, 37711.363394622291, 11062.775107371643, 29641.39919440624); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_div_wide_wide() + { + double4x4 a0 = double4x4(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897, -136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double4x4 b0 = double4x4(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831, 397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double4x4 r0 = double4x4(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668, -0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a0 / b0, r0); + + double4x4 a1 = double4x4(-24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016, 315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819); + double4x4 b1 = double4x4(-84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568, -218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027); + double4x4 r1 = double4x4(0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223, -1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134); + TestUtils.AreEqual(a1 / b1, r1); + + double4x4 a2 = double4x4(-106.2345221537326, 414.31254239301779, 7.1208250555772565, 274.07367361433512, -39.002680081409721, 39.065917748522907, -147.36416608996882, 434.38489290437894, 315.06720390686166, -106.63602714735828, -507.92525195885696, -17.176462896716089, -385.86535543290216, 226.00214849505676, 345.16843072751931, 201.5441692813971); + double4x4 b2 = double4x4(220.25550351862591, -67.234494002179474, 2.229160071457386, -166.21096118083733, -247.73257290932003, 84.1609476004545, 477.14862726496006, 209.75077615014777, -386.72219985850256, -65.2773316210496, 410.45482773820629, 367.65071862174693, -456.57203862470203, 382.42795079873315, -163.86067278862964, -213.72138867793672); + double4x4 r2 = double4x4(-0.48232403030396409, -6.1622021336189041, 3.1943982609206638, -1.6489506568471335, 0.15743864290178045, 0.464181058582947, -0.3088433198156047, 2.0709572611708924, -0.81471196642484278, 1.6335843469583855, -1.2374693087611059, -0.046719514002603893, 0.84513575687905829, 0.59096660697271775, -2.1064751221470064, -0.94302292591365366); + TestUtils.AreEqual(a2 / b2, r2); + + double4x4 a3 = double4x4(-364.71104328926236, -508.3727068884171, 263.80350721245793, 392.03900903837712, 19.716641196849082, -14.47977948863047, -431.47867723530095, -8.3954017201417059, 3.1082556262184653, -139.84113723591025, 402.5097112145786, 318.31090965788383, -274.56803358465811, -193.36913856927731, 288.22701157640063, 0.62060809164336206); + double4x4 b3 = double4x4(227.00382553180862, -337.98967448714643, 149.32169754305937, -198.85531935415014, -468.45503137468131, 183.25872358272727, 217.35753665555148, -167.57021125013483, -150.75870687829268, 48.449193261772962, 410.15566725756776, -4.689349891938889, -465.33817622872914, -48.307136319720712, 403.64572281560197, -387.14200729278008); + double4x4 r3 = double4x4(-1.6066295025418313, 1.5041072117359913, 1.7666789994560961, -1.9714786122476196, -0.042088652861707126, -0.079012770609492758, -1.9851102652081911, 0.0501008004794465, -0.02061742031740665, -2.8863460425510681, 0.98135840449526768, -67.87953916705348, 0.59003977668425556, 4.0029104041577614, 0.7140593725752713, -0.0016030502501735); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_div_wide_scalar() + { + double4x4 a0 = double4x4(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815, 504.37224626185946, 491.78708600056689, -26.63160015392657, -253.23667275776933); + double b0 = (-60.024377612408443); + double4x4 r0 = double4x4(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415, 5.8130349541308268, 4.590446295887566, -3.507873469437639, -4.7920929982948417, -8.4027901050254936, -8.193122620548472, 0.44367973835385832, 4.2188971019904313); + TestUtils.AreEqual(a0 / b0, r0); + + double4x4 a1 = double4x4(272.89512098622276, -460.87559030059521, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464, 81.646461763254592, 60.606869964211683, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449); + double b1 = (178.09617313095191); + double4x4 r1 = double4x4(1.5322907628428735, -2.5877905302418771, -2.8223291229675409, -0.47347897294581892, -0.98087644046922728, 0.47051156573767666, 1.1063801284454748, 1.7808819789674923, 2.2649959890801195, 0.45844029283673021, 0.34030416767938187, -2.3221188516024251, 1.164208047740795, 2.01330605466309, 0.1165048773089097, -0.38505673569107818); + TestUtils.AreEqual(a1 / b1, r1); + + double4x4 a2 = double4x4(310.70246257945075, 147.86623079509764, 506.6588964437409, -435.77857300070048, 210.67294011389504, -218.78147636110964, -19.190853366251474, 416.5117301496266, 427.01360555506017, 417.1994099175555, -150.91182310456031, 488.98551463009119, -294.73874129668752, -357.29805271574207, 288.77164591884787, 453.4291381563196); + double b2 = (417.40490193730443); + double4x4 r2 = double4x4(0.74436706693521115, 0.35425130397080873, 1.213830729088665, -1.0440188195637334, 0.50472080978468914, -0.52414687835642937, -0.045976588384996978, 0.9978601789688325, 1.0230201024788133, 0.99950769140756335, -0.3615477978436098, 1.1714896311963734, -0.70612189729616126, -0.8559986982841169, 0.69182619700576087, 1.0863052543269511); + TestUtils.AreEqual(a2 / b2, r2); + + double4x4 a3 = double4x4(70.724425587209112, 425.52822633531332, 109.51968412730832, 351.80734197786421, -397.33403725052904, 497.315965645628, -18.065185793705837, 452.22855994302245, 511.85849475854, -439.30210110140132, -441.0802783635819, -360.32591097444572, -44.264803191770227, -122.10078555070834, -322.19115105373373, -155.7804692516944); + double b3 = (-235.77751051437923); + double4x4 r3 = double4x4(-0.29996255975777586, -1.8047871716304422, -0.46450437061777827, -1.492115771391219, 1.6852075347801123, -2.1092595496519948, 0.076619630745503625, -1.9180309392377042, -2.1709385837599791, 1.8632061223439282, 1.8707478817691647, 1.528245464074788, 0.1877397173937447, 0.51786442771547481, 1.366505017169924, 0.66070961947065732); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double4x4 b0 = double4x4(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058, -137.98529035317961, 84.32973555677097); + double4x4 r0 = double4x4(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514, -0.088244069266411956, 0.21712338579666474, -0.20837898685020731, -0.08514735549618288, -0.19771269403403205, -0.12927785692369589, -0.3024790443365093, 0.49493406427709763); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (355.06345550858578); + double4x4 b1 = double4x4(276.42724455354141, -382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753, -344.19428865248074, -449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285); + double4x4 r1 = double4x4(1.2844734464652714, -0.92708762611085294, -0.72662543415749792, 1.0296289245378776, 2.1027713529783458, -8.033911722794576, 0.84428215709877708, -2.0218263749711896, -38.507762127847187, -1.0315785799312875, -0.79066131273697848, 3.0165558399117933, -1.0535150480108051, 1.4831797154887565, -0.91192692228884575, 1.4628757775333587); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (496.27646445495839); + double4x4 b2 = double4x4(91.745798392102984, -490.49213360738577, 485.75540922850155, -317.57225504404505, -451.62477871944418, 394.01837677230048, -262.27140939527726, -314.24678697914203, 359.91591446470284, -101.61536865197837, 359.5172828917938, -424.97987981558771, -192.71958431635034, -169.7497170761925, -244.79002224877013, -187.14385255945092); + double4x4 r2 = double4x4(5.4092554989163988, -1.011792912569323, 1.0216591622585671, -1.5627198427209212, -1.0988689900100732, 1.2595261889060365, -1.8922247972023705, -1.5792570839806184, 1.3788677980329445, -4.8838721055537526, 1.3803966820819735, -1.1677646119865923, -2.5751221196093783, -2.9235775646813225, -2.02735577167689, -2.6518448651542204); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-207.71366343633906); + double4x4 b3 = double4x4(-370.15405886720589, 58.676935461665039, -123.14700728428875, 208.89162049484048, -79.531129158814963, -219.67477927900609, -483.15932653991473, -90.52665595455403, 194.59995588781305, -4.0906064529393689, 270.735964185901, 432.58615966913578, 376.04765647279453, 464.83672568986037, -322.94170656937251, -220.89757095132842); + double4x4 r3 = double4x4(0.5611546286214224, -3.5399541881672238, 1.6867130433533437, -0.99436091761023748, 2.6117278307662097, 0.94555080067942, 0.42990717973686765, 2.2945027765149635, -1.0673880293995857, 50.778207541105104, -0.76721858531403808, -0.48016715004291677, -0.55235994656801235, -0.44685295278266346, 0.64319243755442035, 0.94031664785533453); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mod_wide_wide() + { + double4x4 a0 = double4x4(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467, -64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double4x4 b0 = double4x4(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892, -435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double4x4 r0 = double4x4(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467, -64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a0 % b0, r0); + + double4x4 a1 = double4x4(119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531, 156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078); + double4x4 b1 = double4x4(-433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009, -131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288); + double4x4 r1 = double4x4(119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291, 25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078); + TestUtils.AreEqual(a1 % b1, r1); + + double4x4 a2 = double4x4(7.7614462411783052, 238.09472309709281, 12.852037674212852, -100.2406762113053, 34.551971690054984, -251.18974530472872, -238.37224423064487, 511.51466512657453, 288.43353118022605, 367.10986702847754, 44.760454437118256, -437.04559084262962, -259.20560252815744, -228.56581531677665, 83.497246065874265, 424.36707397194914); + double4x4 b2 = double4x4(132.18024951414213, -179.87732204230377, 51.968538546920058, 367.21425860338582, -395.21279234216212, 270.48524988372128, -73.104129586882948, 89.3499706207541, -288.30852355077332, -168.32464631289463, 311.61589994636176, -468.34193752163179, 381.9839486470371, -1.398853541071901, -102.28859357828674, -87.424866478622391); + double4x4 r2 = double4x4(7.7614462411783052, 58.217401054789036, 12.852037674212852, -100.2406762113053, 34.551971690054984, -251.18974530472872, -19.059855469996023, 64.764812022804, 0.12500762945273891, 30.46057440268828, 44.760454437118256, -437.04559084262962, -259.20560252815744, -0.552688122056793, 83.497246065874265, 74.667608057459574); + TestUtils.AreEqual(a2 % b2, r2); + + double4x4 a3 = double4x4(327.23168602922544, 149.18178970608017, -392.15875190876363, -453.47670361654679, 480.82237432935381, 3.460427524270699, -184.59239610684682, -181.41753276689792, -367.70422642664249, 146.09931833394774, 280.12072695424808, -282.48316468041537, 57.225840356771755, -432.67171951414633, -231.46564613630329, -228.28298746248845); + double4x4 b3 = double4x4(-58.425127771881023, -419.00489087542746, 479.81704471996852, -406.98283429023945, -371.59594767708143, 154.04323132058755, -444.75090882030827, -53.98002221713773, -168.83178933376064, -69.398768695722708, -380.76067060081323, 208.14554629481654, 194.43666061872466, 142.86808902717576, 413.15817732976666, -375.15943473165828); + double4x4 r3 = double4x4(35.106047169820329, 149.18178970608017, -392.15875190876363, -46.493869326307333, 109.22642665227238, 3.460427524270699, -184.59239610684682, -19.477466115484731, -30.040647759121214, 7.3017809425023188, 280.12072695424808, -74.33761838559883, 57.225840356771755, -4.0674524326190635, -231.46564613630329, -228.28298746248845); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mod_wide_scalar() + { + double4x4 a0 = double4x4(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105); + double b0 = (-90.499235433758827); + double4x4 r0 = double4x4(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914, -84.473635951277629, -47.283777258956661, 71.457748684779517, -54.6001856581309, -81.839630641899817, -67.717725546899032, 41.363390226551928, 5.796394112425105); + TestUtils.AreEqual(a0 % b0, r0); + + double4x4 a1 = double4x4(254.51082885196, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949, 335.99997655302286, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549); + double b1 = (-433.09369703433185); + double4x4 r1 = double4x4(254.51082885196, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 50.45689394439421, -331.99334660730949, 335.99997655302286, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549); + TestUtils.AreEqual(a1 % b1, r1); + + double4x4 a2 = double4x4(235.72397314557986, -304.153164289963, -295.52024735860539, 313.72239532774427, -232.20264135683078, 191.61973127705028, 244.09660899084838, 162.52424080787421, 390.01615423244243, 90.004538339564874, 155.93352062810845, 217.33769641506376, -306.81927671414769, 149.09372074394196, 503.82839917756075, -194.13014063338289); + double b2 = (465.98487804177444); + double4x4 r2 = double4x4(235.72397314557986, -304.153164289963, -295.52024735860539, 313.72239532774427, -232.20264135683078, 191.61973127705028, 244.09660899084838, 162.52424080787421, 390.01615423244243, 90.004538339564874, 155.93352062810845, 217.33769641506376, -306.81927671414769, 149.09372074394196, 37.843521135786318, -194.13014063338289); + TestUtils.AreEqual(a2 % b2, r2); + + double4x4 a3 = double4x4(214.86302171222076, 225.99642787966707, -102.91396265053839, -173.70608933908215, 490.90467070550881, 501.14862727613593, 160.45482762179097, 327.86094180115538, -300.81266965568659, -326.9390176864988, -6.6472518475014795, -201.18443569968662, 389.35045761119125, -78.068470275992752, -484.31891058586484, -371.83874076038541); + double b3 = (198.77008280473297); + double4x4 r3 = double4x4(16.092938907487792, 27.226345074934102, -102.91396265053839, -173.70608933908215, 93.364505096042876, 103.60846166667, 160.45482762179097, 129.09085899642241, -102.04258685095363, -128.16893488176584, -6.6472518475014795, -2.4143528949536517, 190.58037480645828, -78.068470275992752, -86.778744976398912, -173.06865795565244); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double4x4 b0 = double4x4(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773, -34.808985011097491, 184.83653434777466); + double4x4 r0 = double4x4(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278, -24.355308544056129, -195.41010484258186, -14.154983765517727, -137.47093397819947, -75.47167590794686, -396.4224028049141, -13.523567682841701, -26.749334109364781); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (374.79425376224992); + double4x4 b1 = double4x4(-131.87271911086174, -120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987, -433.52306505363578, -163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824); + double4x4 r1 = double4x4(111.04881554052645, 14.515673644149444, 0.74058437382200282, 40.588381786173329, 374.79425376224992, 156.12538297293958, 178.41683396064525, 374.79425376224992, 374.79425376224992, 374.79425376224992, 47.060541890124114, 20.786231765889738, 42.843760510368156, 3.4187226311388486, 87.235351126284854, 374.79425376224992); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (192.69208654793545); + double4x4 b2 = double4x4(-268.13177621929526, 271.07511461483091, 423.70268912972074, -413.23324675729185, 127.95621091125361, -298.20467843590518, -352.41809122283854, -175.60771592688172, -152.89928944078241, 34.619420306114193, -380.80295556634803, 0.35205721871557216, 485.90088986135129, 266.1508249091687, 483.82075928329527, 11.777843242407698); + double4x4 r2 = double4x4(192.69208654793545, 192.69208654793545, 192.69208654793545, 192.69208654793545, 64.73587563668184, 192.69208654793545, 192.69208654793545, 17.084370621053722, 39.792797107153035, 19.594985017364479, 192.69208654793545, 0.11678791051747339, 192.69208654793545, 192.69208654793545, 192.69208654793545, 4.2465946694122749); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (274.1358426893762); + double4x4 b3 = double4x4(313.07315769469051, -102.217432308112, -88.03518657015411, 226.97955452044471, -38.682740944755608, -63.157795220221317, 330.40193883068946, -304.12387504434395, 411.68151421643859, 128.21777039776453, 48.911678575403812, -58.894658354527621, 29.282741321848107, -328.67225113914918, -511.7138872145274, -338.5105032112964); + double4x4 r3 = double4x4(274.1358426893762, 69.700978073152214, 10.030282978913874, 47.156288168931496, 3.3566560760869493, 21.504661808490937, 274.1358426893762, 274.1358426893762, 274.1358426893762, 17.700301893847154, 29.577449812357145, 38.55720927126572, 10.591170792743242, 274.1358426893762, 274.1358426893762, 274.1358426893762); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_plus() + { + double4x4 a0 = double4x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174); + double4x4 r0 = double4x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174); + TestUtils.AreEqual(+a0, r0); + + double4x4 a1 = double4x4(465.35593555185756, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511); + double4x4 r1 = double4x4(465.35593555185756, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511); + TestUtils.AreEqual(+a1, r1); + + double4x4 a2 = double4x4(-116.53621798219916, -330.00534716714424, -379.67424100436006, -339.673203864914, -29.083537353707243, 62.20109441792647, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589); + double4x4 r2 = double4x4(-116.53621798219916, -330.00534716714424, -379.67424100436006, -339.673203864914, -29.083537353707243, 62.20109441792647, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589); + TestUtils.AreEqual(+a2, r2); + + double4x4 a3 = double4x4(87.649255078122565, -236.10903917816887, 6.5089323550970448, 481.88568638352945, -368.85402863512468, 82.673349657409517, 120.1951606833353, -7.7332217729339732, 168.25208504882278, -431.93018194284764, 228.52152382047916, -124.11752205906322, 464.74532315914769, -203.25920996594203, -505.641194817443, 434.9786500572128); + double4x4 r3 = double4x4(87.649255078122565, -236.10903917816887, 6.5089323550970448, 481.88568638352945, -368.85402863512468, 82.673349657409517, 120.1951606833353, -7.7332217729339732, 168.25208504882278, -431.93018194284764, 228.52152382047916, -124.11752205906322, 464.74532315914769, -203.25920996594203, -505.641194817443, 434.9786500572128); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double4x4_operator_neg() + { + double4x4 a0 = double4x4(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446, -410.39206070936848, -395.68154186554324, -349.14948885010062, -110.9393032113739); + double4x4 r0 = double4x4(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446, 410.39206070936848, 395.68154186554324, 349.14948885010062, 110.9393032113739); + TestUtils.AreEqual(-a0, r0); + + double4x4 a1 = double4x4(-238.21960913307015, 469.29257867731735, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838, 196.38759169186824, -306.1655677790593, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457); + double4x4 r1 = double4x4(238.21960913307015, -469.29257867731735, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838, -196.38759169186824, 306.1655677790593, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457); + TestUtils.AreEqual(-a1, r1); + + double4x4 a2 = double4x4(419.82245011805674, 363.71671049842462, 280.88790405955535, -270.65131939139746, -201.61574015469091, 325.03162899847689, 95.489228054643263, 191.07025322274785, 371.97357361948752, 296.51257981756362, -164.16993697181806, -347.45810691800813, -237.40496050445591, -228.70196615378467, 61.082260875535326, 128.33153134599866); + double4x4 r2 = double4x4(-419.82245011805674, -363.71671049842462, -280.88790405955535, 270.65131939139746, 201.61574015469091, -325.03162899847689, -95.489228054643263, -191.07025322274785, -371.97357361948752, -296.51257981756362, 164.16993697181806, 347.45810691800813, 237.40496050445591, 228.70196615378467, -61.082260875535326, -128.33153134599866); + TestUtils.AreEqual(-a2, r2); + + double4x4 a3 = double4x4(331.25579587149241, -501.02881764854715, 160.58019001808952, -180.49658998311338, 127.97833853959025, 260.03452432343477, -287.96824158726645, -502.19913243791046, 303.97058238832778, -182.96291240628943, 322.3276151727548, 91.480471892040441, 211.29515824620387, 116.07051830928333, 309.36103382211229, -129.06447488119102); + double4x4 r3 = double4x4(-331.25579587149241, 501.02881764854715, -160.58019001808952, 180.49658998311338, -127.97833853959025, -260.03452432343477, 287.96824158726645, 502.19913243791046, -303.97058238832778, 182.96291240628943, -322.3276151727548, -91.480471892040441, -211.29515824620387, -116.07051830928333, -309.36103382211229, 129.06447488119102); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double4x4_operator_prefix_inc() + { + double4x4 a0 = double4x4(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627, 363.2849182390072, -115.5592263283018, -326.87781992874937, -179.89464839729231); + double4x4 r0 = double4x4(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627, 364.2849182390072, -114.5592263283018, -325.87781992874937, -178.89464839729231); + TestUtils.AreEqual(++a0, r0); + + double4x4 a1 = double4x4(339.8765849265626, -153.3736775635619, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178, -264.38006246480165, -377.55920785365589, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913); + double4x4 r1 = double4x4(340.8765849265626, -152.3736775635619, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178, -263.38006246480165, -376.55920785365589, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913); + TestUtils.AreEqual(++a1, r1); + + double4x4 a2 = double4x4(-480.76047228312143, 117.95409851798513, 139.52581245243823, 335.68968192473505, 162.6615141195532, -256.04508340360837, -254.73151385725083, -89.256037038404486, 314.36555233335378, 244.72812830876933, 34.010626570326622, -90.445278448260069, -472.63621614530507, -34.566777483824069, -71.271847996521672, -396.49010748252743); + double4x4 r2 = double4x4(-479.76047228312143, 118.95409851798513, 140.52581245243823, 336.68968192473505, 163.6615141195532, -255.04508340360837, -253.73151385725083, -88.256037038404486, 315.36555233335378, 245.72812830876933, 35.010626570326622, -89.445278448260069, -471.63621614530507, -33.566777483824069, -70.271847996521672, -395.49010748252743); + TestUtils.AreEqual(++a2, r2); + + double4x4 a3 = double4x4(-314.987458614161, 63.450377255422268, 474.66809890916022, 257.1736100917559, 128.10716706519349, -354.56391708672231, -194.46556982512845, -130.85431939496397, 467.56036184148877, 477.1499166326364, -458.05565068593978, -168.12270625313869, 506.56868362173839, -429.35685630764664, 444.81330439299961, -385.62562459782959); + double4x4 r3 = double4x4(-313.987458614161, 64.450377255422268, 475.66809890916022, 258.1736100917559, 129.10716706519349, -353.56391708672231, -193.46556982512845, -129.85431939496397, 468.56036184148877, 478.1499166326364, -457.05565068593978, -167.12270625313869, 507.56868362173839, -428.35685630764664, 445.81330439299961, -384.62562459782959); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double4x4_operator_postfix_inc() + { + double4x4 a0 = double4x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808); + double4x4 r0 = double4x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808); + TestUtils.AreEqual(a0++, r0); + + double4x4 a1 = double4x4(-170.10464366250886, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871); + double4x4 r1 = double4x4(-170.10464366250886, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871); + TestUtils.AreEqual(a1++, r1); + + double4x4 a2 = double4x4(403.50871271803453, 446.60767313773169, -12.352577930480493, -232.15012251220185, 64.577020436793987, -10.59072947995304, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578); + double4x4 r2 = double4x4(403.50871271803453, 446.60767313773169, -12.352577930480493, -232.15012251220185, 64.577020436793987, -10.59072947995304, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578); + TestUtils.AreEqual(a2++, r2); + + double4x4 a3 = double4x4(439.299990143301, -424.34972520561411, 63.862382203276411, 260.87088668573222, 350.98539583337742, 271.48833645111335, -378.24384683102551, -329.55492631045865, -201.92197928294632, -244.66994225451253, 365.72488921029719, -481.82878397490305, 105.47597627783011, -166.62200434814298, 394.743907397028, -179.49130996479249); + double4x4 r3 = double4x4(439.299990143301, -424.34972520561411, 63.862382203276411, 260.87088668573222, 350.98539583337742, 271.48833645111335, -378.24384683102551, -329.55492631045865, -201.92197928294632, -244.66994225451253, 365.72488921029719, -481.82878397490305, 105.47597627783011, -166.62200434814298, 394.743907397028, -179.49130996479249); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double4x4_operator_prefix_dec() + { + double4x4 a0 = double4x4(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811, 400.720900006928, -478.03137253133178, -326.45297852459038, -24.584499132160317); + double4x4 r0 = double4x4(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811, 399.720900006928, -479.03137253133178, -327.45297852459038, -25.584499132160317); + TestUtils.AreEqual(--a0, r0); + + double4x4 a1 = double4x4(112.79684668071422, -503.27416181158003, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351, 181.47510703908051, -188.69222578252305, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193); + double4x4 r1 = double4x4(111.79684668071422, -504.27416181158003, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351, 180.47510703908051, -189.69222578252305, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193); + TestUtils.AreEqual(--a1, r1); + + double4x4 a2 = double4x4(-436.90656181653333, 345.02153913351776, 4.7353689692613443, -68.653318198701982, 481.496122346025, 463.39140985132724, -357.67329399551886, 153.32965023505017, -233.62431751639781, -35.238318221288864, 340.61965743667429, 259.92884195033878, 335.35490886091952, 85.364882747347, -1.3939745432668929, -407.41038651364408); + double4x4 r2 = double4x4(-437.90656181653333, 344.02153913351776, 3.7353689692613443, -69.653318198701982, 480.496122346025, 462.39140985132724, -358.67329399551886, 152.32965023505017, -234.62431751639781, -36.238318221288864, 339.61965743667429, 258.92884195033878, 334.35490886091952, 84.364882747347, -2.3939745432668929, -408.41038651364408); + TestUtils.AreEqual(--a2, r2); + + double4x4 a3 = double4x4(-145.79341251486608, -337.44545022465542, -464.67419812859697, 226.80292831491818, 15.319232232551713, 431.07077404068355, 273.0958756288029, -3.1083834185769774, 334.14676848712691, 26.124073755985137, 14.661183125647312, 239.30467449841308, 32.206458345151759, 288.58896578875783, -297.482929129844, -154.8607662445217); + double4x4 r3 = double4x4(-146.79341251486608, -338.44545022465542, -465.67419812859697, 225.80292831491818, 14.319232232551713, 430.07077404068355, 272.0958756288029, -4.1083834185769774, 333.14676848712691, 25.124073755985137, 13.661183125647312, 238.30467449841308, 31.206458345151759, 287.58896578875783, -298.482929129844, -155.8607662445217); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double4x4_operator_postfix_dec() + { + double4x4 a0 = double4x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247); + double4x4 r0 = double4x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247); + TestUtils.AreEqual(a0--, r0); + + double4x4 a1 = double4x4(378.64123433578811, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982); + double4x4 r1 = double4x4(378.64123433578811, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982); + TestUtils.AreEqual(a1--, r1); + + double4x4 a2 = double4x4(-313.42591657928466, 176.78949864990523, -370.78628438095853, 64.903882295314133, 449.63778540568319, -112.10504608606226, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139); + double4x4 r2 = double4x4(-313.42591657928466, 176.78949864990523, -370.78628438095853, 64.903882295314133, 449.63778540568319, -112.10504608606226, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139); + TestUtils.AreEqual(a2--, r2); + + double4x4 a3 = double4x4(-240.61070048092432, -269.28632772587537, -101.80513792010265, -492.29036091840379, -507.07826041946106, 413.10199351473807, -491.42746256824, -13.728667980864941, -481.598610863834, 248.55762183319666, -178.33419021327711, -345.80586616406492, -269.1173538030672, 132.7693923137939, -382.38429492636783, 388.83080619798545); + double4x4 r3 = double4x4(-240.61070048092432, -269.28632772587537, -101.80513792010265, -492.29036091840379, -507.07826041946106, 413.10199351473807, -491.42746256824, -13.728667980864941, -481.598610863834, 248.55762183319666, -178.33419021327711, -345.80586616406492, -269.1173538030672, 132.7693923137939, -382.38429492636783, 388.83080619798545); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x4.gen.cs.meta new file mode 100644 index 0000000..9231c46 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestDouble4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1021c7218a1b3894ba0a61ae37e36a8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2.gen.cs new file mode 100644 index 0000000..ce81b96 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2.gen.cs @@ -0,0 +1,1055 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat2 + { + [TestCompiler] + public static void float2_zero() + { + TestUtils.AreEqual(float2.zero.x, 0.0f); + TestUtils.AreEqual(float2.zero.y, 0.0f); + } + + [TestCompiler] + public static void float2_constructor() + { + float2 a = new float2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void float2_scalar_constructor() + { + float2 a = new float2(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + } + + [TestCompiler] + public static void float2_static_constructor() + { + float2 a = float2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void float2_static_scalar_constructor() + { + float2 a = float2(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + } + + [TestCompiler] + public static void float2_operator_equal_wide_wide() + { + float2 a0 = float2(-135.18924f, -49.0941162f); + float2 b0 = float2(-220.014648f, 66.98004f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2 a1 = float2(169.129822f, 240.8053f); + float2 b1 = float2(499.2016f, -371.1131f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2 a2 = float2(314.7392f, 442.393f); + float2 b2 = float2(208.448669f, 390.8037f); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2 a3 = float2(177.924438f, 335.5334f); + float2 b3 = float2(-72.44382f, 362.97644f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2_operator_equal_wide_scalar() + { + float2 a0 = float2(65.6712f, 404.415527f); + float b0 = (-155.815765f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2 a1 = float2(-269.730164f, 152.9945f); + float b1 = (83.6306152f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2 a2 = float2(-155.868286f, 386.365173f); + float b2 = (314.671265f); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2 a3 = float2(290.04895f, -65.66748f); + float b3 = (-132.6352f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float2 b0 = float2(-400.4892f, -71.2868347f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (156.978088f); + float2 b1 = float2(-225.238739f, 499.141785f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-211.979919f); + float2 b2 = float2(428.311951f, -489.501343f); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-5.691559f); + float2 b3 = float2(-30.8659363f, -362.9831f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2_operator_not_equal_wide_wide() + { + float2 a0 = float2(279.994141f, -43.34201f); + float2 b0 = float2(-460.9121f, -476.009033f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2 a1 = float2(-465.724731f, 317.466553f); + float2 b1 = float2(468.1364f, -341.012543f); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2 a2 = float2(85.7149658f, 360.8905f); + float2 b2 = float2(-62.65805f, -458.801666f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2 a3 = float2(366.081543f, 154.542847f); + float2 b3 = float2(-457.730225f, -59.5232544f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2_operator_not_equal_wide_scalar() + { + float2 a0 = float2(-155.4411f, -19.4266052f); + float b0 = (-393.413544f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2 a1 = float2(174.633057f, 59.177063f); + float b1 = (507.920715f); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2 a2 = float2(171.151489f, -398.176849f); + float b2 = (-58.92328f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2 a3 = float2(492.20105f, 270.341f); + float b3 = (-165.241516f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float2 b0 = float2(459.553223f, 436.453247f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-488.714172f); + float2 b1 = float2(392.767944f, -266.736633f); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (338.557861f); + float2 b2 = float2(-338.100128f, -152.314545f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-452.820679f); + float2 b3 = float2(209.439331f, 50.10797f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_wide_wide() + { + float2 a0 = float2(51.7102661f, -313.85556f); + float2 b0 = float2(-261.835236f, -19.81073f); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2 a1 = float2(283.047668f, 235.021912f); + float2 b1 = float2(-149.25882f, 205.99823f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float2 a2 = float2(44.07837f, -207.255676f); + float2 b2 = float2(-306.024384f, 102.121704f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2 a3 = float2(3.38293457f, -144.301331f); + float2 b3 = float2(231.906311f, 179.49884f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_wide_scalar() + { + float2 a0 = float2(-221.869781f, -121.546478f); + float b0 = (199.0675f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2 a1 = float2(-97.5239258f, 67.11902f); + float b1 = (479.8811f); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2 a2 = float2(137.3288f, 258.2791f); + float b2 = (282.9666f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2 a3 = float2(-111.413147f, 82.6654053f); + float b3 = (-288.081116f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float2 b0 = float2(-377.196533f, -505.147552f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (375.9267f); + float2 b1 = float2(110.17395f, -118.097565f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-40.4508972f); + float2 b2 = float2(-299.744324f, 31.4371338f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-458.904541f); + float2 b3 = float2(13.6846924f, -458.5069f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_wide_wide() + { + float2 a0 = float2(-229.29068f, 505.536621f); + float2 b0 = float2(-445.845032f, -420.035278f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2 a1 = float2(-73.80707f, 100.292053f); + float2 b1 = float2(299.0244f, -13.8809814f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float2 a2 = float2(-419.214783f, -159.559753f); + float2 b2 = float2(151.5617f, -163.50943f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float2 a3 = float2(-396.770355f, 127.037415f); + float2 b3 = float2(-391.096039f, 479.283752f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_wide_scalar() + { + float2 a0 = float2(11.156311f, -411.023224f); + float b0 = (-302.816956f); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float2 a1 = float2(385.885559f, -491.180023f); + float b1 = (-485.103058f); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float2 a2 = float2(405.175354f, 69.26929f); + float b2 = (173.575073f); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2 a3 = float2(501.306824f, -86.12451f); + float b3 = (-367.027771f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float2 b0 = float2(-226.2044f, -423.465f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (409.405518f); + float2 b1 = float2(453.877075f, 87.47571f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (113.795593f); + float2 b2 = float2(176.409241f, -140.440033f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-182.48288f); + float2 b3 = float2(-158.2933f, -162.685333f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_equal_wide_wide() + { + float2 a0 = float2(240.090515f, 462.213135f); + float2 b0 = float2(-81.20383f, 493.637451f); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2 a1 = float2(293.08252f, -427.870667f); + float2 b1 = float2(-411.4721f, 99.16443f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2 a2 = float2(-405.5227f, 204.591919f); + float2 b2 = float2(-295.6677f, -480.462555f); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2 a3 = float2(294.6701f, -327.564453f); + float2 b3 = float2(74.41406f, 260.916138f); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_equal_wide_scalar() + { + float2 a0 = float2(309.192444f, 69.67377f); + float b0 = (292.924255f); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2 a1 = float2(-101.724182f, -346.011047f); + float b1 = (-315.9724f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2 a2 = float2(424.15387f, -483.902649f); + float b2 = (-410.870056f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float2 a3 = float2(183.821167f, -257.870056f); + float b3 = (320.4425f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float2 b0 = float2(51.1589966f, 340.443665f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (312.81427f); + float2 b1 = float2(354.1925f, 136.396729f); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-94.76788f); + float2 b2 = float2(288.5443f, 304.042847f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-148.618073f); + float2 b3 = float2(-506.3001f, 27.5812378f); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_equal_wide_wide() + { + float2 a0 = float2(-386.5918f, -157.120789f); + float2 b0 = float2(153.443f, 49.8924561f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2 a1 = float2(391.015259f, -511.886871f); + float2 b1 = float2(78.02582f, 138.813721f); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float2 a2 = float2(-5.42202759f, 287.645264f); + float2 b2 = float2(-225.51059f, -339.3561f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float2 a3 = float2(-122.535187f, 7.48144531f); + float2 b3 = float2(-373.302063f, 364.9359f); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_equal_wide_scalar() + { + float2 a0 = float2(495.4574f, -14.3451233f); + float b0 = (189.205139f); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2 a1 = float2(-463.4748f, -246.865723f); + float b1 = (217.517517f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float2 a2 = float2(-377.6587f, -123.332947f); + float b2 = (53.8151245f); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float2 a3 = float2(-221.505463f, -116.440369f); + float b3 = (252.994324f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float2 b0 = float2(204.802979f, -101.104034f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-122.055023f); + float2 b1 = float2(-70.45615f, -239.62027f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-185.992737f); + float2 b2 = float2(-455.612579f, 276.665833f); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (79.39917f); + float2 b3 = float2(416.420532f, 379.2735f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2_operator_add_wide_wide() + { + float2 a0 = float2(465.148376f, 278.9107f); + float2 b0 = float2(483.9944f, -204.07666f); + float2 r0 = float2(949.142761f, 74.8340454f); + TestUtils.AreEqual(a0 + b0, r0); + + float2 a1 = float2(-277.5299f, -65.1972046f); + float2 b1 = float2(-365.673553f, -509.920868f); + float2 r1 = float2(-643.2035f, -575.118042f); + TestUtils.AreEqual(a1 + b1, r1); + + float2 a2 = float2(-473.324371f, -4.69555664f); + float2 b2 = float2(-270.6975f, 486.763977f); + float2 r2 = float2(-744.021851f, 482.06842f); + TestUtils.AreEqual(a2 + b2, r2); + + float2 a3 = float2(-470.536774f, -109.9501f); + float2 b3 = float2(267.49176f, 251.642517f); + float2 r3 = float2(-203.045013f, 141.692413f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2_operator_add_wide_scalar() + { + float2 a0 = float2(459.898315f, -447.663361f); + float b0 = (500.997253f); + float2 r0 = float2(960.895569f, 53.3338928f); + TestUtils.AreEqual(a0 + b0, r0); + + float2 a1 = float2(-94.43863f, -36.254364f); + float b1 = (126.429871f); + float2 r1 = float2(31.9912415f, 90.17551f); + TestUtils.AreEqual(a1 + b1, r1); + + float2 a2 = float2(-349.6413f, -478.4148f); + float b2 = (-2.79125977f); + float2 r2 = float2(-352.432556f, -481.206055f); + TestUtils.AreEqual(a2 + b2, r2); + + float2 a3 = float2(443.115234f, 41.3210449f); + float b3 = (268.092224f); + float2 r3 = float2(711.207458f, 309.413269f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float2 b0 = float2(-264.088135f, -106.009247f); + float2 r0 = float2(-589.6009f, -431.522f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-355.4473f); + float2 b1 = float2(-447.3303f, -158.7002f); + float2 r1 = float2(-802.7776f, -514.147461f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-199.4837f); + float2 b2 = float2(180.318115f, 337.579346f); + float2 r2 = float2(-19.1655884f, 138.095642f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (-37.0550232f); + float2 b3 = float2(230.805f, -140.174347f); + float2 r3 = float2(193.749969f, -177.22937f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2_operator_sub_wide_wide() + { + float2 a0 = float2(133.371033f, -131.832123f); + float2 b0 = float2(123.460266f, 359.56012f); + float2 r0 = float2(9.910767f, -491.392242f); + TestUtils.AreEqual(a0 - b0, r0); + + float2 a1 = float2(-197.293152f, -485.28656f); + float2 b1 = float2(-48.2484741f, 478.979065f); + float2 r1 = float2(-149.044678f, -964.2656f); + TestUtils.AreEqual(a1 - b1, r1); + + float2 a2 = float2(-337.550323f, 471.6671f); + float2 b2 = float2(207.158325f, 142.36731f); + float2 r2 = float2(-544.7086f, 329.2998f); + TestUtils.AreEqual(a2 - b2, r2); + + float2 a3 = float2(146.506592f, -130.585052f); + float2 b3 = float2(-125.6055f, -65.29901f); + float2 r3 = float2(272.1121f, -65.28604f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2_operator_sub_wide_scalar() + { + float2 a0 = float2(48.9367065f, 410.4516f); + float b0 = (-291.5904f); + float2 r0 = float2(340.5271f, 702.042f); + TestUtils.AreEqual(a0 - b0, r0); + + float2 a1 = float2(-364.4417f, -460.067322f); + float b1 = (163.980591f); + float2 r1 = float2(-528.4223f, -624.0479f); + TestUtils.AreEqual(a1 - b1, r1); + + float2 a2 = float2(110.919434f, 180.269714f); + float b2 = (204.358337f); + float2 r2 = float2(-93.4389f, -24.088623f); + TestUtils.AreEqual(a2 - b2, r2); + + float2 a3 = float2(-377.9257f, 400.5349f); + float b3 = (-470.262054f); + float2 r3 = float2(92.3363647f, 870.797f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float2 b0 = float2(452.352539f, 256.9898f); + float2 r0 = float2(-157.766052f, 37.59668f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-275.159882f); + float2 b1 = float2(-89.02753f, 488.2284f); + float2 r1 = float2(-186.132355f, -763.3883f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-333.2173f); + float2 b2 = float2(-64.233f, -66.04172f); + float2 r2 = float2(-268.984283f, -267.175568f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (341.204956f); + float2 b3 = float2(-385.775055f, 75.3947754f); + float2 r3 = float2(726.98f, 265.810181f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2_operator_mul_wide_wide() + { + float2 a0 = float2(-394.780548f, -412.3722f); + float2 b0 = float2(-149.763977f, -345.04538f); + float2 r0 = float2(59123.9063f, 142287.125f); + TestUtils.AreEqual(a0 * b0, r0); + + float2 a1 = float2(-25.8745728f, -241.045959f); + float2 b1 = float2(-284.334045f, 267.979248f); + float2 r1 = float2(7357.022f, -64595.3164f); + TestUtils.AreEqual(a1 * b1, r1); + + float2 a2 = float2(-93.6759949f, 244.159973f); + float2 b2 = float2(-326.6485f, -150.689667f); + float2 r2 = float2(30599.123f, -36792.3867f); + TestUtils.AreEqual(a2 * b2, r2); + + float2 a3 = float2(494.688477f, 53.5379639f); + float2 b3 = float2(207.732422f, 366.192871f); + float2 r3 = float2(102762.836f, 19605.22f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2_operator_mul_wide_scalar() + { + float2 a0 = float2(328.203f, -290.10672f); + float b0 = (192.211182f); + float2 r0 = float2(63084.2852f, -55761.7539f); + TestUtils.AreEqual(a0 * b0, r0); + + float2 a1 = float2(236.995728f, 357.903137f); + float b1 = (120.481384f); + float2 r1 = float2(28553.5742f, 43120.6641f); + TestUtils.AreEqual(a1 * b1, r1); + + float2 a2 = float2(134.867249f, -438.272919f); + float b2 = (-477.3105f); + float2 r2 = float2(-64373.55f, 209192.266f); + TestUtils.AreEqual(a2 * b2, r2); + + float2 a3 = float2(-46.729187f, 422.08252f); + float b3 = (-238.405f); + float2 r3 = float2(11140.4717f, -100626.586f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float2 b0 = float2(329.360962f, -198.683441f); + float2 r0 = float2(-152999.6f, 92295.35f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (184.0794f); + float2 b1 = float2(256.016174f, 266.226318f); + float2 r1 = float2(47127.3047f, 49006.78f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (-97.8947449f); + float2 b2 = float2(159.748108f, -351.8222f); + float2 r2 = float2(-15638.5f, 34441.5469f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (491.801575f); + float2 b3 = float2(49.90204f, 424.4626f); + float2 r3 = float2(24541.9f, 208751.375f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2_operator_div_wide_wide() + { + float2 a0 = float2(246.265747f, -269.85614f); + float2 b0 = float2(172.119812f, -77.14111f); + float2 r0 = float2(1.43078089f, 3.49821424f); + TestUtils.AreEqual(a0 / b0, r0); + + float2 a1 = float2(-451.619537f, -7.388489f); + float2 b1 = float2(-325.8354f, -450.608673f); + float2 r1 = float2(1.38603592f, 0.0163966864f); + TestUtils.AreEqual(a1 / b1, r1); + + float2 a2 = float2(-308.205566f, -373.3948f); + float2 b2 = float2(-261.262146f, -122.449493f); + float2 r2 = float2(1.17967939f, 3.04937816f); + TestUtils.AreEqual(a2 / b2, r2); + + float2 a3 = float2(360.41864f, 25.8097534f); + float2 b3 = float2(-93.2107849f, -442.005219f); + float2 r3 = float2(-3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2_operator_div_wide_scalar() + { + float2 a0 = float2(-244.517456f, 69.1123047f); + float b0 = (-60.0243835f); + float2 r0 = float2(4.07363558f, -1.15140378f); + TestUtils.AreEqual(a0 / b0, r0); + + float2 a1 = float2(-333.023132f, 403.2456f); + float b1 = (257.396851f); + float2 r1 = float2(-1.293812f, 1.56662989f); + TestUtils.AreEqual(a1 / b1, r1); + + float2 a2 = float2(154.34436f, -261.8864f); + float b2 = (131.526611f); + float2 r2 = float2(1.17348385f, -1.99112868f); + TestUtils.AreEqual(a2 / b2, r2); + + float2 a3 = float2(-348.9238f, 210.557922f); + float b3 = (-275.5387f); + float2 r3 = float2(1.26633322f, -0.764168262f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float2 b0 = float2(-422.676147f, 248.129639f); + float2 r0 = float2(-0.09874622f, 0.168209136f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (449.391357f); + float2 b1 = float2(245.858154f, -326.6206f); + float2 r1 = float2(1.82784808f, -1.37588179f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (163.715088f); + float2 b2 = float2(333.6645f, 38.2910767f); + float2 r2 = float2(0.4906578f, 4.27554131f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-472.979767f); + float2 b3 = float2(192.230164f, -200.296875f); + float2 r3 = float2(-2.46048665f, 2.36139369f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2_operator_mod_wide_wide() + { + float2 a0 = float2(-442.309875f, 368.5005f); + float2 b0 = float2(-43.2450562f, -144.195862f); + float2 r0 = float2(-9.859314f, 80.1087646f); + TestUtils.AreEqual(a0 % b0, r0); + + float2 a1 = float2(-1.09390259f, -364.673828f); + float2 b1 = float2(-62.6404724f, -336.828247f); + float2 r1 = float2(-1.09390259f, -27.8455811f); + TestUtils.AreEqual(a1 % b1, r1); + + float2 a2 = float2(-197.343933f, -34.0349121f); + float2 b2 = float2(-154.61026f, -154.029358f); + float2 r2 = float2(-42.7336731f, -34.0349121f); + TestUtils.AreEqual(a2 % b2, r2); + + float2 a3 = float2(-101.348572f, 208.318542f); + float2 b3 = float2(487.0462f, -469.8291f); + float2 r3 = float2(-101.348572f, 208.318542f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2_operator_mod_wide_scalar() + { + float2 a0 = float2(-433.417f, -5.51412964f); + float b0 = (-90.49924f); + float2 r0 = float2(-71.4200439f, -5.51412964f); + TestUtils.AreEqual(a0 % b0, r0); + + float2 a1 = float2(393.3944f, -120.80603f); + float b1 = (299.41156f); + float2 r1 = float2(93.98285f, -120.80603f); + TestUtils.AreEqual(a1 % b1, r1); + + float2 a2 = float2(-502.939026f, 186.094788f); + float b2 = (-450.807678f); + float2 r2 = float2(-52.1313477f, 186.094788f); + TestUtils.AreEqual(a2 % b2, r2); + + float2 a3 = float2(-84.47363f, 433.4547f); + float b3 = (-318.7815f); + float2 r3 = float2(-84.47363f, 114.673218f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float2 b0 = float2(-159.140259f, 230.17334f); + float2 r0 = float2(-78.14188f, -166.249054f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (14.7793579f); + float2 b1 = float2(-303.1565f, 399.635f); + float2 r1 = float2(14.7793579f, 14.7793579f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (206.6947f); + float2 b2 = float2(397.0448f, -393.890656f); + float2 r2 = float2(206.6947f, 206.6947f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-372.067078f); + float2 b3 = float2(201.012268f, -95.566864f); + float2 r3 = float2(-171.05481f, -85.3664856f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2_operator_plus() + { + float2 a0 = float2(271.670837f, -79.08023f); + float2 r0 = float2(271.670837f, -79.08023f); + TestUtils.AreEqual(+a0, r0); + + float2 a1 = float2(-330.985046f, 315.449524f); + float2 r1 = float2(-330.985046f, 315.449524f); + TestUtils.AreEqual(+a1, r1); + + float2 a2 = float2(319.222168f, -350.3086f); + float2 r2 = float2(319.222168f, -350.3086f); + TestUtils.AreEqual(+a2, r2); + + float2 a3 = float2(-320.518463f, -107.00351f); + float2 r3 = float2(-320.518463f, -107.00351f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float2_operator_neg() + { + float2 a0 = float2(420.227173f, -196.2575f); + float2 r0 = float2(-420.227173f, 196.2575f); + TestUtils.AreEqual(-a0, r0); + + float2 a1 = float2(-335.426819f, -33.0144043f); + float2 r1 = float2(335.426819f, 33.0144043f); + TestUtils.AreEqual(-a1, r1); + + float2 a2 = float2(-498.575317f, -270.859467f); + float2 r2 = float2(498.575317f, 270.859467f); + TestUtils.AreEqual(-a2, r2); + + float2 a3 = float2(19.68689f, -180.600525f); + float2 r3 = float2(-19.68689f, 180.600525f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float2_operator_prefix_inc() + { + float2 a0 = float2(-99.79556f, 458.741821f); + float2 r0 = float2(-98.79556f, 459.741821f); + TestUtils.AreEqual(++a0, r0); + + float2 a1 = float2(96.1790161f, -315.728973f); + float2 r1 = float2(97.1790161f, -314.728973f); + TestUtils.AreEqual(++a1, r1); + + float2 a2 = float2(-299.230164f, -456.8903f); + float2 r2 = float2(-298.230164f, -455.8903f); + TestUtils.AreEqual(++a2, r2); + + float2 a3 = float2(-76.50766f, 64.0965f); + float2 r3 = float2(-75.50766f, 65.0965f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float2_operator_postfix_inc() + { + float2 a0 = float2(322.943542f, 472.0525f); + float2 r0 = float2(322.943542f, 472.0525f); + TestUtils.AreEqual(a0++, r0); + + float2 a1 = float2(203.48761f, -31.4205322f); + float2 r1 = float2(203.48761f, -31.4205322f); + TestUtils.AreEqual(a1++, r1); + + float2 a2 = float2(455.3366f, 55.7368774f); + float2 r2 = float2(455.3366f, 55.7368774f); + TestUtils.AreEqual(a2++, r2); + + float2 a3 = float2(153.7503f, -427.401062f); + float2 r3 = float2(153.7503f, -427.401062f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float2_operator_prefix_dec() + { + float2 a0 = float2(-416.201233f, -96.63788f); + float2 r0 = float2(-417.201233f, -97.63788f); + TestUtils.AreEqual(--a0, r0); + + float2 a1 = float2(-50.14566f, 439.479065f); + float2 r1 = float2(-51.14566f, 438.479065f); + TestUtils.AreEqual(--a1, r1); + + float2 a2 = float2(-304.400818f, 246.088989f); + float2 r2 = float2(-305.400818f, 245.088989f); + TestUtils.AreEqual(--a2, r2); + + float2 a3 = float2(171.964539f, 298.2848f); + float2 r3 = float2(170.964539f, 297.2848f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float2_operator_postfix_dec() + { + float2 a0 = float2(-376.5924f, 16.9697266f); + float2 r0 = float2(-376.5924f, 16.9697266f); + TestUtils.AreEqual(a0--, r0); + + float2 a1 = float2(-0.2506714f, 409.557556f); + float2 r1 = float2(-0.2506714f, 409.557556f); + TestUtils.AreEqual(a1--, r1); + + float2 a2 = float2(47.85663f, -262.0626f); + float2 r2 = float2(47.85663f, -262.0626f); + TestUtils.AreEqual(a2--, r2); + + float2 a3 = float2(-182.405731f, -129.232666f); + float2 r3 = float2(-182.405731f, -129.232666f); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void float2_shuffle_result_1() + { + float2 a = float2(0, 1); + float2 b = float2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (3)); + } + + [TestCompiler] + public static void float2_shuffle_result_2() + { + float2 a = float2(0, 1); + float2 b = float2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX), float2(0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftX), float2(1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), float2(2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX), float2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY), float2(0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float2(1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY), float2(2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), float2(3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX), float2(0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), float2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX), float2(2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), float2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY), float2(0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY), float2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY), float2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), float2(3, 3)); + } + + [TestCompiler] + public static void float2_shuffle_result_3() + { + float2 a = float2(0, 1); + float2 b = float2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY), float3(2, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightX), float3(2, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(1, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), float3(0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftX), float3(3, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), float3(2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX), float3(2, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY), float3(3, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightX), float3(3, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(0, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(3, 1, 1)); + } + + [TestCompiler] + public static void float2_shuffle_result_4() + { + float2 a = float2(0, 1); + float2 b = float2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX), float4(0, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(2, 1, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX), float4(3, 2, 3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), float4(2, 0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightX), float4(0, 3, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftY), float4(3, 0, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftX), float4(2, 2, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(2, 2, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.LeftY), float4(0, 1, 2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightY), float4(2, 1, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftY), float4(3, 3, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float4(2, 2, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), float4(3, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), float4(2, 2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(0, 3, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), float4(2, 0, 0, 0)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2.gen.cs.meta new file mode 100644 index 0000000..51ad5c4 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79dc86a9e627dcb4a9b6c6ae87b366b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x2.gen.cs new file mode 100644 index 0000000..92d326b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x2.gen.cs @@ -0,0 +1,950 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat2x2 + { + [TestCompiler] + public static void float2x2_zero() + { + TestUtils.AreEqual(float2x2.zero.c0.x, 0.0f); + TestUtils.AreEqual(float2x2.zero.c0.y, 0.0f); + TestUtils.AreEqual(float2x2.zero.c1.x, 0.0f); + TestUtils.AreEqual(float2x2.zero.c1.y, 0.0f); + } + + [TestCompiler] + public static void float2x2_identity() + { + TestUtils.AreEqual(float2x2.identity.c0.x, 1.0f); + TestUtils.AreEqual(float2x2.identity.c0.y, 0.0f); + TestUtils.AreEqual(float2x2.identity.c1.x, 0.0f); + TestUtils.AreEqual(float2x2.identity.c1.y, 1.0f); + } + + [TestCompiler] + public static void float2x2_operator_equal_wide_wide() + { + float2x2 a0 = float2x2(-135.18924f, -49.0941162f, 169.129822f, 240.8053f); + float2x2 b0 = float2x2(-220.014648f, 66.98004f, 499.2016f, -371.1131f); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x2 a1 = float2x2(314.7392f, 442.393f, 177.924438f, 335.5334f); + float2x2 b1 = float2x2(208.448669f, 390.8037f, -72.44382f, 362.97644f); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x2 a2 = float2x2(168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float2x2 b2 = float2x2(194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x2 a3 = float2x2(188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float2x2 b3 = float2x2(-494.446655f, -252.970367f, 234.417114f, 398.724f); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_equal_wide_scalar() + { + float2x2 a0 = float2x2(65.6712f, 404.415527f, -269.730164f, 83.6306152f); + float b0 = (-155.815765f); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x2 a1 = float2x2(152.9945f, 314.671265f, 386.365173f, 290.04895f); + float b1 = (-155.868286f); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x2 a2 = float2x2(-132.6352f, -69.68326f, -191.190765f, 186.845215f); + float b2 = (-65.66748f); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x2 a3 = float2x2(-232.895691f, -49.70108f, -300.8819f, 333.396851f); + float b3 = (-319.144043f); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float2x2 b0 = float2x2(-400.4892f, -71.2868347f, 156.978088f, -225.238739f); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (499.141785f); + float2x2 b1 = float2x2(-211.979919f, 428.311951f, -489.501343f, -5.691559f); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-30.8659363f); + float2x2 b2 = float2x2(-362.9831f, 184.503174f, -160.470612f, 316.668823f); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (390.369263f); + float2x2 b3 = float2x2(505.1051f, -294.6487f, 443.1991f, 96.5592651f); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_not_equal_wide_wide() + { + float2x2 a0 = float2x2(279.994141f, -43.34201f, -465.724731f, 317.466553f); + float2x2 b0 = float2x2(-460.9121f, -476.009033f, 468.1364f, -341.012543f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x2 a1 = float2x2(85.7149658f, 360.8905f, 366.081543f, 154.542847f); + float2x2 b1 = float2x2(-62.65805f, -458.801666f, -457.730225f, -59.5232544f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x2 a2 = float2x2(332.4262f, 397.11322f, -431.374969f, 489.0108f); + float2x2 b2 = float2x2(3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x2 a3 = float2x2(398.4336f, -489.817932f, 171.4049f, -67.82968f); + float2x2 b3 = float2x2(-406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_not_equal_wide_scalar() + { + float2x2 a0 = float2x2(-155.4411f, -19.4266052f, 174.633057f, 507.920715f); + float b0 = (-393.413544f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x2 a1 = float2x2(59.177063f, -58.92328f, -398.176849f, 492.20105f); + float b1 = (171.151489f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x2 a2 = float2x2(-165.241516f, -380.243256f, 501.899048f, -134.345459f); + float b2 = (270.341f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x2 a3 = float2x2(458.400452f, 161.459961f, 261.514221f, -145.6124f); + float b3 = (46.7709961f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float2x2 b0 = float2x2(459.553223f, 436.453247f, -488.714172f, 392.767944f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-266.736633f); + float2x2 b1 = float2x2(338.557861f, -338.100128f, -152.314545f, -452.820679f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (209.439331f); + float2x2 b2 = float2x2(50.10797f, 372.4344f, -488.0213f, 489.740784f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (270.4001f); + float2x2 b3 = float2x2(-472.846771f, -286.850464f, -384.691864f, 443.423523f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_wide_wide() + { + float2x2 a0 = float2x2(51.7102661f, -313.85556f, 283.047668f, 235.021912f); + float2x2 b0 = float2x2(-261.835236f, -19.81073f, -149.25882f, 205.99823f); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float2x2 a1 = float2x2(44.07837f, -207.255676f, 3.38293457f, -144.301331f); + float2x2 b1 = float2x2(-306.024384f, 102.121704f, 231.906311f, 179.49884f); + bool2x2 r1 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x2 a2 = float2x2(-69.3696f, -135.667969f, -194.787354f, -33.473877f); + float2x2 b2 = float2x2(473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x2 a3 = float2x2(-19.67508f, 423.237976f, -71.6983f, -501.886f); + float2x2 b3 = float2x2(-185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_wide_scalar() + { + float2x2 a0 = float2x2(-221.869781f, -121.546478f, -97.5239258f, 479.8811f); + float b0 = (199.0675f); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float2x2 a1 = float2x2(67.11902f, 282.9666f, 258.2791f, -111.413147f); + float b1 = (137.3288f); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x2 a2 = float2x2(-288.081116f, -361.6429f, -68.0881958f, 12.7880249f); + float b2 = (82.6654053f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x2 a3 = float2x2(-66.703064f, 25.7277222f, 101.37085f, -330.442657f); + float b3 = (-78.76297f); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float2x2 b0 = float2x2(-377.196533f, -505.147552f, 375.9267f, 110.17395f); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-118.097565f); + float2x2 b1 = float2x2(-40.4508972f, -299.744324f, 31.4371338f, -458.904541f); + bool2x2 r1 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (13.6846924f); + float2x2 b2 = float2x2(-458.5069f, 248.276489f, 389.231445f, 488.745544f); + bool2x2 r2 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-221.637878f); + float2x2 b3 = float2x2(-424.2672f, 249.059021f, -22.1361389f, -442.247742f); + bool2x2 r3 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_wide_wide() + { + float2x2 a0 = float2x2(-229.29068f, 505.536621f, -73.80707f, 100.292053f); + float2x2 b0 = float2x2(-445.845032f, -420.035278f, 299.0244f, -13.8809814f); + bool2x2 r0 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2x2 a1 = float2x2(-419.214783f, -159.559753f, -396.770355f, 127.037415f); + float2x2 b1 = float2x2(151.5617f, -163.50943f, -391.096039f, 479.283752f); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float2x2 a2 = float2x2(489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float2x2 b2 = float2x2(-77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2x2 a3 = float2x2(-425.978149f, -228.430511f, 383.03833f, 136.533569f); + float2x2 b3 = float2x2(-206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_wide_scalar() + { + float2x2 a0 = float2x2(11.156311f, -411.023224f, 385.885559f, -485.103058f); + float b0 = (-302.816956f); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float2x2 a1 = float2x2(-491.180023f, 173.575073f, 69.26929f, 501.306824f); + float b1 = (405.175354f); + bool2x2 r1 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float2x2 a2 = float2x2(-367.027771f, -489.090576f, -172.518158f, -18.1496277f); + float b2 = (-86.12451f); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float2x2 a3 = float2x2(-236.414948f, -27.2391357f, 471.779358f, 240.164551f); + float b3 = (-238.8945f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float2x2 b0 = float2x2(-226.2044f, -423.465f, 409.405518f, 453.877075f); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (87.47571f); + float2x2 b1 = float2x2(113.795593f, 176.409241f, -140.440033f, -182.48288f); + bool2x2 r1 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-158.2933f); + float2x2 b2 = float2x2(-162.685333f, -193.328674f, 230.181274f, -102.58783f); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (392.520569f); + float2x2 b3 = float2x2(-177.478668f, -10.2950134f, -24.04895f, 172.448669f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_equal_wide_wide() + { + float2x2 a0 = float2x2(240.090515f, 462.213135f, 293.08252f, -427.870667f); + float2x2 b0 = float2x2(-81.20383f, 493.637451f, -411.4721f, 99.16443f); + bool2x2 r0 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x2 a1 = float2x2(-405.5227f, 204.591919f, 294.6701f, -327.564453f); + float2x2 b1 = float2x2(-295.6677f, -480.462555f, 74.41406f, 260.916138f); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x2 a2 = float2x2(-456.12326f, 282.30127f, 421.881165f, -311.71283f); + float2x2 b2 = float2x2(306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool2x2 r2 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x2 a3 = float2x2(84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float2x2 b3 = float2x2(-280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_equal_wide_scalar() + { + float2x2 a0 = float2x2(309.192444f, 69.67377f, -101.724182f, -315.9724f); + float b0 = (292.924255f); + bool2x2 r0 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x2 a1 = float2x2(-346.011047f, -410.870056f, -483.902649f, 183.821167f); + float b1 = (424.15387f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x2 a2 = float2x2(320.4425f, -386.801758f, -182.938812f, 349.250122f); + float b2 = (-257.870056f); + bool2x2 r2 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x2 a3 = float2x2(485.311584f, 259.1515f, 450.130066f, -128.525543f); + float b3 = (373.5691f); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float2x2 b0 = float2x2(51.1589966f, 340.443665f, 312.81427f, 354.1925f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (136.396729f); + float2x2 b1 = float2x2(-94.76788f, 288.5443f, 304.042847f, -148.618073f); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-506.3001f); + float2x2 b2 = float2x2(27.5812378f, 48.47113f, 104.883484f, -488.685852f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-480.435181f); + float2x2 b3 = float2x2(421.936646f, 239.721069f, -101.018433f, -283.951477f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_equal_wide_wide() + { + float2x2 a0 = float2x2(-386.5918f, -157.120789f, 391.015259f, -511.886871f); + float2x2 b0 = float2x2(153.443f, 49.8924561f, 78.02582f, 138.813721f); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x2 a1 = float2x2(-5.42202759f, 287.645264f, -122.535187f, 7.48144531f); + float2x2 b1 = float2x2(-225.51059f, -339.3561f, -373.302063f, 364.9359f); + bool2x2 r1 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x2 a2 = float2x2(152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float2x2 b2 = float2x2(-322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool2x2 r2 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x2 a3 = float2x2(349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float2x2 b3 = float2x2(73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool2x2 r3 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_equal_wide_scalar() + { + float2x2 a0 = float2x2(495.4574f, -14.3451233f, -463.4748f, 217.517517f); + float b0 = (189.205139f); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x2 a1 = float2x2(-246.865723f, 53.8151245f, -123.332947f, -221.505463f); + float b1 = (-377.6587f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x2 a2 = float2x2(252.994324f, -395.3633f, 164.772583f, -287.007324f); + float b2 = (-116.440369f); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x2 a3 = float2x2(355.837036f, 273.012268f, -418.1424f, 249.3841f); + float b3 = (184.195557f); + bool2x2 r3 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float2x2 b0 = float2x2(204.802979f, -101.104034f, -122.055023f, -70.45615f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-239.62027f); + float2x2 b1 = float2x2(-185.992737f, -455.612579f, 276.665833f, 79.39917f); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (416.420532f); + float2x2 b2 = float2x2(379.2735f, -439.5147f, 67.14099f, -74.56064f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-367.256348f); + float2x2 b3 = float2x2(494.950745f, -61.2355347f, -429.170258f, -213.824677f); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_add_wide_wide() + { + float2x2 a0 = float2x2(465.148376f, 278.9107f, -277.5299f, -65.1972046f); + float2x2 b0 = float2x2(483.9944f, -204.07666f, -365.673553f, -509.920868f); + float2x2 r0 = float2x2(949.142761f, 74.8340454f, -643.2035f, -575.118042f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x2 a1 = float2x2(-473.324371f, -4.69555664f, -470.536774f, -109.9501f); + float2x2 b1 = float2x2(-270.6975f, 486.763977f, 267.49176f, 251.642517f); + float2x2 r1 = float2x2(-744.021851f, 482.06842f, -203.045013f, 141.692413f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x2 a2 = float2x2(-178.701447f, -420.033783f, 290.711121f, -446.529633f); + float2x2 b2 = float2x2(244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float2x2 r2 = float2x2(65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x2 a3 = float2x2(491.066467f, -261.1173f, -298.4069f, 502.4286f); + float2x2 b3 = float2x2(462.5473f, -405.492f, -428.498322f, -41.87259f); + float2x2 r3 = float2x2(953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_add_wide_scalar() + { + float2x2 a0 = float2x2(459.898315f, -447.663361f, -94.43863f, 126.429871f); + float b0 = (500.997253f); + float2x2 r0 = float2x2(960.895569f, 53.3338928f, 406.558624f, 627.4271f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x2 a1 = float2x2(-36.254364f, -2.79125977f, -478.4148f, 443.115234f); + float b1 = (-349.6413f); + float2x2 r1 = float2x2(-385.89566f, -352.432556f, -828.0561f, 93.47394f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x2 a2 = float2x2(268.092224f, -471.256073f, -2.664978f, 78.98584f); + float b2 = (41.3210449f); + float2x2 r2 = float2x2(309.413269f, -429.935028f, 38.6560669f, 120.306885f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x2 a3 = float2x2(202.14801f, 10.3458252f, -151.244446f, 355.2328f); + float b3 = (311.725464f); + float2x2 r3 = float2x2(513.8735f, 322.0713f, 160.481018f, 666.958252f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float2x2 b0 = float2x2(-264.088135f, -106.009247f, -355.4473f, -447.3303f); + float2x2 r0 = float2x2(-589.6009f, -431.522f, -680.9601f, -772.843f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-158.7002f); + float2x2 b1 = float2x2(-199.4837f, 180.318115f, 337.579346f, -37.0550232f); + float2x2 r1 = float2x2(-358.1839f, 21.61792f, 178.87915f, -195.755219f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (230.805f); + float2x2 b2 = float2x2(-140.174347f, 18.02417f, -138.614349f, 26.9041748f); + float2x2 r2 = float2x2(90.6306458f, 248.829163f, 92.19064f, 257.709167f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (-374.5376f); + float2x2 b3 = float2x2(154.46759f, 268.38385f, -190.963013f, 188.617249f); + float2x2 r3 = float2x2(-220.07f, -106.153748f, -565.5006f, -185.920349f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_sub_wide_wide() + { + float2x2 a0 = float2x2(133.371033f, -131.832123f, -197.293152f, -485.28656f); + float2x2 b0 = float2x2(123.460266f, 359.56012f, -48.2484741f, 478.979065f); + float2x2 r0 = float2x2(9.910767f, -491.392242f, -149.044678f, -964.2656f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x2 a1 = float2x2(-337.550323f, 471.6671f, 146.506592f, -130.585052f); + float2x2 b1 = float2x2(207.158325f, 142.36731f, -125.6055f, -65.29901f); + float2x2 r1 = float2x2(-544.7086f, 329.2998f, 272.1121f, -65.28604f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x2 a2 = float2x2(110.7771f, -235.5416f, 78.87933f, -347.686157f); + float2x2 b2 = float2x2(-477.876434f, 164.5f, 428.009583f, 72.62781f); + float2x2 r2 = float2x2(588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x2 a3 = float2x2(-470.820557f, -11.45929f, -167.9479f, 330.676758f); + float2x2 b3 = float2x2(-446.8805f, 432.091431f, -225.554657f, -112.451965f); + float2x2 r3 = float2x2(-23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_sub_wide_scalar() + { + float2x2 a0 = float2x2(48.9367065f, 410.4516f, -364.4417f, 163.980591f); + float b0 = (-291.5904f); + float2x2 r0 = float2x2(340.5271f, 702.042f, -72.85132f, 455.570984f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x2 a1 = float2x2(-460.067322f, 204.358337f, 180.269714f, -377.9257f); + float b1 = (110.919434f); + float2x2 r1 = float2x2(-570.986755f, 93.4389f, 69.35028f, -488.845123f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x2 a2 = float2x2(-470.262054f, 461.507568f, -246.287262f, 21.6052856f); + float b2 = (400.5349f); + float2x2 r2 = float2x2(-870.797f, 60.9726563f, -646.822144f, -378.929626f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x2 a3 = float2x2(246.350708f, -122.718414f, -122.938721f, 360.15094f); + float b3 = (-121.427368f); + float2x2 r3 = float2x2(367.778076f, -1.29104614f, -1.51135254f, 481.5783f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float2x2 b0 = float2x2(452.352539f, 256.9898f, -275.159882f, -89.02753f); + float2x2 r0 = float2x2(-157.766052f, 37.59668f, 569.746338f, 383.614f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (488.2284f); + float2x2 b1 = float2x2(-333.2173f, -64.233f, -66.04172f, 341.204956f); + float2x2 r1 = float2x2(821.4457f, 552.4614f, 554.270142f, 147.023438f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-385.775055f); + float2x2 b2 = float2x2(75.3947754f, 354.943726f, 169.131409f, 88.21661f); + float2x2 r2 = float2x2(-461.16983f, -740.71875f, -554.9065f, -473.991669f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (1.73498535f); + float2x2 b3 = float2x2(122.538025f, -264.945f, -50.83719f, -347.65033f); + float2x2 r3 = float2x2(-120.80304f, 266.68f, 52.5721741f, 349.3853f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mul_wide_wide() + { + float2x2 a0 = float2x2(-394.780548f, -412.3722f, -25.8745728f, -241.045959f); + float2x2 b0 = float2x2(-149.763977f, -345.04538f, -284.334045f, 267.979248f); + float2x2 r0 = float2x2(59123.9063f, 142287.125f, 7357.022f, -64595.3164f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x2 a1 = float2x2(-93.6759949f, 244.159973f, 494.688477f, 53.5379639f); + float2x2 b1 = float2x2(-326.6485f, -150.689667f, 207.732422f, 366.192871f); + float2x2 r1 = float2x2(30599.123f, -36792.3867f, 102762.836f, 19605.22f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x2 a2 = float2x2(-239.4964f, 236.675842f, -211.8562f, -216.654816f); + float2x2 b2 = float2x2(358.880737f, 214.853577f, 253.422791f, -307.7138f); + float2x2 r2 = float2x2(-85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x2 a3 = float2x2(467.9583f, -178.021912f, -386.394257f, -422.4354f); + float2x2 b3 = float2x2(184.47113f, 426.436462f, -144.281433f, 459.4796f); + float2x2 r3 = float2x2(86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mul_wide_scalar() + { + float2x2 a0 = float2x2(328.203f, -290.10672f, 236.995728f, 120.481384f); + float b0 = (192.211182f); + float2x2 r0 = float2x2(63084.2852f, -55761.7539f, 45553.23f, 23157.87f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x2 a1 = float2x2(357.903137f, -477.3105f, -438.272919f, -46.729187f); + float b1 = (134.867249f); + float2x2 r1 = float2x2(48269.41f, -64373.55f, -59108.6641f, -6302.237f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x2 a2 = float2x2(-238.405f, -48.83484f, 355.30835f, 119.356628f); + float b2 = (422.08252f); + float2x2 r2 = float2x2(-100626.586f, -20612.332f, 149969.438f, 50378.3477f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x2 a3 = float2x2(-196.995819f, -325.552155f, 53.9373169f, -87.45099f); + float b3 = (98.23602f); + float2x2 r3 = float2x2(-19352.0859f, -31980.95f, 5298.5874f, -8590.837f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float2x2 b0 = float2x2(329.360962f, -198.683441f, 184.0794f, 256.016174f); + float2x2 r0 = float2x2(-152999.6f, 92295.35f, -85511.27f, -118928.4f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (266.226318f); + float2x2 b1 = float2x2(-97.8947449f, 159.748108f, -351.8222f, 491.801575f); + float2x2 r1 = float2x2(-26062.1582f, 42529.1523f, -93664.33f, 130930.523f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (49.90204f); + float2x2 b2 = float2x2(424.4626f, 160.1181f, -395.9921f, 125.20166f); + float2x2 r2 = float2x2(21181.5488f, 7990.21973f, -19760.8125f, 6247.818f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-265.0158f); + float2x2 b3 = float2x2(314.656128f, -292.712036f, -37.72989f, 165.362244f); + float2x2 r3 = float2x2(-83388.85f, 77573.32f, 9999.017f, -43823.61f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_div_wide_wide() + { + float2x2 a0 = float2x2(246.265747f, -269.85614f, -451.619537f, -7.388489f); + float2x2 b0 = float2x2(172.119812f, -77.14111f, -325.8354f, -450.608673f); + float2x2 r0 = float2x2(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x2 a1 = float2x2(-308.205566f, -373.3948f, 360.41864f, 25.8097534f); + float2x2 b1 = float2x2(-261.262146f, -122.449493f, -93.2107849f, -442.005219f); + float2x2 r1 = float2x2(1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x2 a2 = float2x2(-274.050476f, 127.538574f, -447.671753f, -137.458588f); + float2x2 b2 = float2x2(484.362732f, -390.7818f, 402.02533f, 316.6507f); + float2x2 r2 = float2x2(-0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x2 a3 = float2x2(-136.133179f, 12.4376221f, 228.513f, 356.972351f); + float2x2 b3 = float2x2(397.154419f, -303.2622f, -118.591248f, -81.6503f); + float2x2 r3 = float2x2(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_div_wide_scalar() + { + float2x2 a0 = float2x2(-244.517456f, 69.1123047f, -333.023132f, 257.396851f); + float b0 = (-60.0243835f); + float2x2 r0 = float2x2(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x2 a1 = float2x2(403.2456f, 131.526611f, -261.8864f, -348.9238f); + float b1 = (154.34436f); + float2x2 r1 = float2x2(2.61263585f, 0.8521634f, -1.696767f, -2.26068377f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x2 a2 = float2x2(-275.5387f, 287.6424f, 504.372253f, 491.7871f); + float b2 = (210.557922f); + float2x2 r2 = float2x2(-1.30861235f, 1.36609626f, 2.39540863f, 2.335638f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x2 a3 = float2x2(-26.6315918f, 272.895142f, 178.096191f, -460.87558f); + float b3 = (-253.236664f); + float2x2 r3 = float2x2(0.105164833f, -1.07762885f, -0.7032797f, 1.81994021f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float2x2 b0 = float2x2(-422.676147f, 248.129639f, 449.391357f, 245.858154f); + float2x2 r0 = float2x2(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-326.6206f); + float2x2 b1 = float2x2(163.715088f, 333.6645f, 38.2910767f, -472.979767f); + float2x2 r1 = float2x2(-1.995055f, -0.978889346f, -8.529941f, 0.6905594f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (192.230164f); + float2x2 b2 = float2x2(-200.296875f, -490.181519f, -211.10257f, -322.852356f); + float2x2 r2 = float2x2(-0.9597262f, -0.3921612f, -0.9106008f, -0.595412f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-137.985291f); + float2x2 b3 = float2x2(84.32971f, 355.063477f, 276.427246f, -382.988037f); + float2x2 r3 = float2x2(-1.63625944f, -0.388621479f, -0.499174f, 0.360286176f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mod_wide_wide() + { + float2x2 a0 = float2x2(-442.309875f, 368.5005f, -1.09390259f, -364.673828f); + float2x2 b0 = float2x2(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f); + float2x2 r0 = float2x2(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x2 a1 = float2x2(-197.343933f, -34.0349121f, -101.348572f, 208.318542f); + float2x2 b1 = float2x2(-154.61026f, -154.029358f, 487.0462f, -469.8291f); + float2x2 r1 = float2x2(-42.7336731f, -34.0349121f, -101.348572f, 208.318542f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x2 a2 = float2x2(-140.770325f, 183.44696f, -463.368378f, 83.83911f); + float2x2 b2 = float2x2(-145.203766f, -203.384f, -22.52008f, 224.69f); + float2x2 r2 = float2x2(-140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x2 a3 = float2x2(-64.71405f, 295.066833f, 212.25708f, 349.6283f); + float2x2 b3 = float2x2(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float2x2 r3 = float2x2(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mod_wide_scalar() + { + float2x2 a0 = float2x2(-433.417f, -5.51412964f, 393.3944f, 299.41156f); + float b0 = (-90.49924f); + float2x2 r0 = float2x2(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x2 a1 = float2x2(-120.80603f, -450.807678f, 186.094788f, -84.47363f); + float b1 = (-502.939026f); + float2x2 r1 = float2x2(-120.80603f, -450.807678f, 186.094788f, -84.47363f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x2 a2 = float2x2(-318.7815f, -54.60019f, -172.338867f, -429.714661f); + float b2 = (433.4547f); + float2x2 r2 = float2x2(-318.7815f, -54.60019f, -172.338867f, -429.714661f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x2 a3 = float2x2(222.361877f, 254.5108f, -433.0937f, -203.082611f); + float b3 = (5.79638672f); + float2x2 r3 = float2x2(2.09918213f, 5.26617432f, -4.161072f, -0.209075928f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float2x2 b0 = float2x2(-159.140259f, 230.17334f, 14.7793579f, -303.1565f); + float2x2 r0 = float2x2(-78.14188f, -166.249054f, -12.1590881f, -93.2659f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (399.635f); + float2x2 b1 = float2x2(206.6947f, 397.0448f, -393.890656f, -372.067078f); + float2x2 r1 = float2x2(192.9403f, 2.59021f, 5.74435425f, 27.5679321f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (201.012268f); + float2x2 b2 = float2x2(-95.566864f, -258.951477f, 106.983582f, 469.323547f); + float2x2 r2 = float2x2(9.87854f, 201.012268f, 94.02869f, 201.012268f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-34.80899f); + float2x2 b3 = float2x2(184.836548f, 374.79425f, -131.872711f, -120.092865f); + float2x2 r3 = float2x2(-34.80899f, -34.80899f, -34.80899f, -34.80899f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_plus() + { + float2x2 a0 = float2x2(271.670837f, -79.08023f, -330.985046f, 31.824707f); + float2x2 r0 = float2x2(271.670837f, -79.08023f, -330.985046f, 31.824707f); + TestUtils.AreEqual(+a0, r0); + + float2x2 a1 = float2x2(315.449524f, 190.324646f, -350.3086f, -320.518463f); + float2x2 r1 = float2x2(315.449524f, 190.324646f, -350.3086f, -320.518463f); + TestUtils.AreEqual(+a1, r1); + + float2x2 a2 = float2x2(102.054382f, -428.7762f, 377.230164f, 234.773926f); + float2x2 r2 = float2x2(102.054382f, -428.7762f, 377.230164f, 234.773926f); + TestUtils.AreEqual(+a2, r2); + + float2x2 a3 = float2x2(34.28363f, 465.355957f, 309.59314f, -316.937134f); + float2x2 r3 = float2x2(34.28363f, 465.355957f, 309.59314f, -316.937134f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float2x2_operator_neg() + { + float2x2 a0 = float2x2(420.227173f, -196.2575f, -335.426819f, 509.04364f); + float2x2 r0 = float2x2(-420.227173f, 196.2575f, 335.426819f, -509.04364f); + TestUtils.AreEqual(-a0, r0); + + float2x2 a1 = float2x2(-33.0144043f, -495.837952f, -270.859467f, 19.68689f); + float2x2 r1 = float2x2(33.0144043f, 495.837952f, 270.859467f, -19.68689f); + TestUtils.AreEqual(-a1, r1); + + float2x2 a2 = float2x2(268.2367f, 223.381287f, -410.392059f, -395.681549f); + float2x2 r2 = float2x2(-268.2367f, -223.381287f, 410.392059f, 395.681549f); + TestUtils.AreEqual(-a2, r2); + + float2x2 a3 = float2x2(-349.149475f, -238.2196f, 292.543518f, 469.2926f); + float2x2 r3 = float2x2(349.149475f, 238.2196f, -292.543518f, -469.2926f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float2x2_operator_prefix_inc() + { + float2x2 a0 = float2x2(-99.79556f, 458.741821f, 96.1790161f, -48.55246f); + float2x2 r0 = float2x2(-98.79556f, 459.741821f, 97.1790161f, -47.55246f); + TestUtils.AreEqual(++a0, r0); + + float2x2 a1 = float2x2(-315.728973f, -323.614868f, -456.8903f, -76.50766f); + float2x2 r1 = float2x2(-314.728973f, -322.614868f, -455.8903f, -75.50766f); + TestUtils.AreEqual(++a1, r1); + + float2x2 a2 = float2x2(-305.584778f, 148.679321f, 363.2849f, -115.559235f); + float2x2 r2 = float2x2(-304.584778f, 149.679321f, 364.2849f, -114.559235f); + TestUtils.AreEqual(++a2, r2); + + float2x2 a3 = float2x2(-326.8778f, 339.8766f, -38.41043f, -153.373688f); + float2x2 r3 = float2x2(-325.8778f, 340.8766f, -37.41043f, -152.373688f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float2x2_operator_postfix_inc() + { + float2x2 a0 = float2x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f); + float2x2 r0 = float2x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f); + TestUtils.AreEqual(a0++, r0); + + float2x2 a1 = float2x2(-31.4205322f, 271.454651f, 55.7368774f, 153.7503f); + float2x2 r1 = float2x2(-31.4205322f, 271.454651f, 55.7368774f, 153.7503f); + TestUtils.AreEqual(a1++, r1); + + float2x2 a2 = float2x2(-174.173f, 215.110229f, 159.861023f, -333.050446f); + float2x2 r2 = float2x2(-174.173f, 215.110229f, 159.861023f, -333.050446f); + TestUtils.AreEqual(a2++, r2); + + float2x2 a3 = float2x2(241.4649f, -170.104645f, -270.652466f, -162.86026f); + float2x2 r3 = float2x2(241.4649f, -170.104645f, -270.652466f, -162.86026f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float2x2_operator_prefix_dec() + { + float2x2 a0 = float2x2(-416.201233f, -96.63788f, -50.14566f, -207.316437f); + float2x2 r0 = float2x2(-417.201233f, -97.63788f, -51.14566f, -208.316437f); + TestUtils.AreEqual(--a0, r0); + + float2x2 a1 = float2x2(439.479065f, 337.968933f, 246.088989f, 171.964539f); + float2x2 r1 = float2x2(438.479065f, 336.968933f, 245.088989f, 170.964539f); + TestUtils.AreEqual(--a1, r1); + + float2x2 a2 = float2x2(-227.44281f, 326.5078f, 400.7209f, -478.031372f); + float2x2 r2 = float2x2(-228.44281f, 325.5078f, 399.7209f, -479.031372f); + TestUtils.AreEqual(--a2, r2); + + float2x2 a3 = float2x2(-326.452972f, 112.796875f, -341.9763f, -503.27417f); + float2x2 r3 = float2x2(-327.452972f, 111.796875f, -342.9763f, -504.27417f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float2x2_operator_postfix_dec() + { + float2x2 a0 = float2x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f); + float2x2 r0 = float2x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f); + TestUtils.AreEqual(a0--, r0); + + float2x2 a1 = float2x2(409.557556f, -281.1117f, -262.0626f, -182.405731f); + float2x2 r1 = float2x2(409.557556f, -281.1117f, -262.0626f, -182.405731f); + TestUtils.AreEqual(a1--, r1); + + float2x2 a2 = float2x2(450.1281f, -332.154968f, -261.0089f, 205.461121f); + float2x2 r2 = float2x2(450.1281f, -332.154968f, -261.0089f, 205.461121f); + TestUtils.AreEqual(a2--, r2); + + float2x2 a3 = float2x2(-230.227783f, 378.641235f, 487.344849f, -192.177856f); + float2x2 r3 = float2x2(-230.227783f, 378.641235f, 487.344849f, -192.177856f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x2.gen.cs.meta new file mode 100644 index 0000000..ca8cdeb --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 052651d6ebd1a8146ad211a6838dad17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x3.gen.cs new file mode 100644 index 0000000..dee01f1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x3.gen.cs @@ -0,0 +1,943 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat2x3 + { + [TestCompiler] + public static void float2x3_zero() + { + TestUtils.AreEqual(float2x3.zero.c0.x, 0.0f); + TestUtils.AreEqual(float2x3.zero.c0.y, 0.0f); + TestUtils.AreEqual(float2x3.zero.c1.x, 0.0f); + TestUtils.AreEqual(float2x3.zero.c1.y, 0.0f); + TestUtils.AreEqual(float2x3.zero.c2.x, 0.0f); + TestUtils.AreEqual(float2x3.zero.c2.y, 0.0f); + } + + [TestCompiler] + public static void float2x3_operator_equal_wide_wide() + { + float2x3 a0 = float2x3(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f); + float2x3 b0 = float2x3(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x3 a1 = float2x3(177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float2x3 b1 = float2x3(-72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x3 a2 = float2x3(188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f); + float2x3 b2 = float2x3(-494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x3 a3 = float2x3(269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float2x3 b3 = float2x3(89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_equal_wide_scalar() + { + float2x3 a0 = float2x3(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f); + float b0 = (-155.815765f); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x3 a1 = float2x3(314.671265f, 290.04895f, -132.6352f, -65.66748f, -69.68326f, -191.190765f); + float b1 = (386.365173f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x3 a2 = float2x3(186.845215f, -319.144043f, -49.70108f, -300.8819f, 333.396851f, 386.3775f); + float b2 = (-232.895691f); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x3 a3 = float2x3(-296.7019f, 141.542358f, -227.323334f, 83.87286f, -410.91687f, 110.501282f); + float b3 = (-309.1172f); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float2x3 b0 = float2x3(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (428.311951f); + float2x3 b1 = float2x3(-489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f, -160.470612f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (316.668823f); + float2x3 b2 = float2x3(390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f, -257.012939f); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-245.054962f); + float2x3 b3 = float2x3(326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f, -336.612427f); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_not_equal_wide_wide() + { + float2x3 a0 = float2x3(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f); + float2x3 b0 = float2x3(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x3 a1 = float2x3(366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f); + float2x3 b1 = float2x3(-457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x3 a2 = float2x3(398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f); + float2x3 b2 = float2x3(-406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x3 a3 = float2x3(62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float2x3 b3 = float2x3(-184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_not_equal_wide_scalar() + { + float2x3 a0 = float2x3(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f); + float b0 = (-393.413544f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x3 a1 = float2x3(-58.92328f, 492.20105f, -165.241516f, 270.341f, -380.243256f, 501.899048f); + float b1 = (-398.176849f); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x3 a2 = float2x3(-134.345459f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f, -0.449920654f); + float b2 = (458.400452f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x3 a3 = float2x3(350.461426f, 242.664f, 382.677063f, -468.967957f, -497.459473f, -80.93225f); + float b3 = (202.221008f); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float2x3 b0 = float2x3(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-338.100128f); + float2x3 b1 = float2x3(-152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f, -488.0213f); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (489.740784f); + float2x3 b2 = float2x3(270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f, 358.7472f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-15.4140625f); + float2x3 b3 = float2x3(-342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f, -239.231018f); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_wide_wide() + { + float2x3 a0 = float2x3(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f); + float2x3 b0 = float2x3(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f); + bool2x3 r0 = bool2x3(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2x3 a1 = float2x3(3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f); + float2x3 b1 = float2x3(231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x3 a2 = float2x3(-19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f); + float2x3 b2 = float2x3(-185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f); + bool2x3 r2 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x3 a3 = float2x3(-140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float2x3 b3 = float2x3(7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool2x3 r3 = bool2x3(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_wide_scalar() + { + float2x3 a0 = float2x3(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f); + float b0 = (199.0675f); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2x3 a1 = float2x3(282.9666f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f, -68.0881958f); + float b1 = (258.2791f); + bool2x3 r1 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x3 a2 = float2x3(12.7880249f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f, -48.9205322f); + float b2 = (-66.703064f); + bool2x3 r2 = bool2x3(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float2x3 a3 = float2x3(359.604431f, 241.2768f, -183.437775f, 423.027161f, -334.622742f, -98.31558f); + float b3 = (-8.150085f); + bool2x3 r3 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float2x3 b0 = float2x3(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-299.744324f); + float2x3 b1 = float2x3(31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f, 389.231445f); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (488.745544f); + float2x3 b2 = float2x3(-221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f, -340.857544f); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-95.1117249f); + float2x3 b3 = float2x3(15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f, 122.164795f); + bool2x3 r3 = bool2x3(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_wide_wide() + { + float2x3 a0 = float2x3(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f); + float2x3 b0 = float2x3(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f); + bool2x3 r0 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2x3 a1 = float2x3(-396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float2x3 b1 = float2x3(-391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float2x3 a2 = float2x3(-425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f); + float2x3 b2 = float2x3(-206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f); + bool2x3 r2 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2x3 a3 = float2x3(-345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float2x3 b3 = float2x3(226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_wide_scalar() + { + float2x3 a0 = float2x3(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f); + float b0 = (-302.816956f); + bool2x3 r0 = bool2x3(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2x3 a1 = float2x3(173.575073f, 501.306824f, -367.027771f, -86.12451f, -489.090576f, -172.518158f); + float b1 = (69.26929f); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float2x3 a2 = float2x3(-18.1496277f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f, -481.4781f); + float b2 = (-236.414948f); + bool2x3 r2 = bool2x3(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2x3 a3 = float2x3(185.59436f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f, -7.34790039f); + float b3 = (33.29474f); + bool2x3 r3 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float2x3 b0 = float2x3(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (176.409241f); + float2x3 b1 = float2x3(-140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f, 230.181274f); + bool2x3 r1 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-102.58783f); + float2x3 b2 = float2x3(392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f, 374.048035f); + bool2x3 r2 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-368.99762f); + float2x3 b3 = float2x3(-210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f, -361.524841f); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_equal_wide_wide() + { + float2x3 a0 = float2x3(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f); + float2x3 b0 = float2x3(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f); + bool2x3 r0 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x3 a1 = float2x3(294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f); + float2x3 b1 = float2x3(74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool2x3 r1 = bool2x3(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x3 a2 = float2x3(84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f); + float2x3 b2 = float2x3(-280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f); + bool2x3 r2 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x3 a3 = float2x3(307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float2x3 b3 = float2x3(376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_equal_wide_scalar() + { + float2x3 a0 = float2x3(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f); + float b0 = (292.924255f); + bool2x3 r0 = bool2x3(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x3 a1 = float2x3(-410.870056f, 183.821167f, 320.4425f, -257.870056f, -386.801758f, -182.938812f); + float b1 = (-483.902649f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x3 a2 = float2x3(349.250122f, 373.5691f, 259.1515f, 450.130066f, -128.525543f, -43.8748779f); + float b2 = (485.311584f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x3 a3 = float2x3(457.385742f, 479.451843f, -499.516449f, -398.132935f, 402.484863f, 87.91608f); + float b3 = (-77.6383057f); + bool2x3 r3 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float2x3 b0 = float2x3(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (288.5443f); + float2x3 b1 = float2x3(304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f, 104.883484f); + bool2x3 r1 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-488.685852f); + float2x3 b2 = float2x3(-480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f, -55.24353f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-455.80484f); + float2x3 b3 = float2x3(131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f, -116.019989f); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_equal_wide_wide() + { + float2x3 a0 = float2x3(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f); + float2x3 b0 = float2x3(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f); + bool2x3 r0 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x3 a1 = float2x3(-122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float2x3 b1 = float2x3(-373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x3 a2 = float2x3(349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f); + float2x3 b2 = float2x3(73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f); + bool2x3 r2 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x3 a3 = float2x3(-156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float2x3 b3 = float2x3(254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool2x3 r3 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_equal_wide_scalar() + { + float2x3 a0 = float2x3(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f); + float b0 = (189.205139f); + bool2x3 r0 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x3 a1 = float2x3(53.8151245f, -221.505463f, 252.994324f, -116.440369f, -395.3633f, 164.772583f); + float b1 = (-123.332947f); + bool2x3 r1 = bool2x3(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x3 a2 = float2x3(-287.007324f, 184.195557f, 273.012268f, -418.1424f, 249.3841f, 396.392151f); + float b2 = (355.837036f); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x3 a3 = float2x3(332.6654f, -335.12146f, -302.0869f, 254.442261f, 179.005066f, 71.1767f); + float b3 = (243.761414f); + bool2x3 r3 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float2x3 b0 = float2x3(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-455.612579f); + float2x3 b1 = float2x3(276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f, 67.14099f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-74.56064f); + float2x3 b2 = float2x3(-367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f, -264.310181f); + bool2x3 r2 = bool2x3(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (243.11377f); + float2x3 b3 = float2x3(-22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f, -400.47052f); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_add_wide_wide() + { + float2x3 a0 = float2x3(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f); + float2x3 b0 = float2x3(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f); + float2x3 r0 = float2x3(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x3 a1 = float2x3(-470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f); + float2x3 b1 = float2x3(267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float2x3 r1 = float2x3(-203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x3 a2 = float2x3(491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f); + float2x3 b2 = float2x3(462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f); + float2x3 r2 = float2x3(953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x3 a3 = float2x3(-36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float2x3 b3 = float2x3(-141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float2x3 r3 = float2x3(-178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_add_wide_scalar() + { + float2x3 a0 = float2x3(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f); + float b0 = (500.997253f); + float2x3 r0 = float2x3(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x3 a1 = float2x3(-2.79125977f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f, -2.664978f); + float b1 = (-478.4148f); + float2x3 r1 = float2x3(-481.206055f, -35.29956f, -210.322571f, -437.09375f, -949.6709f, -481.079773f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x3 a2 = float2x3(78.98584f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f, -197.800751f); + float b2 = (202.14801f); + float2x3 r2 = float2x3(281.13385f, 513.8735f, 212.493835f, 50.9035645f, 557.3808f, 4.34725952f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x3 a3 = float2x3(255.955261f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f, -160.5841f); + float b3 = (244.1471f); + float2x3 r3 = float2x3(500.102356f, 62.52054f, 241.692169f, 545.0477f, 7.65515137f, 83.56299f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float2x3 b0 = float2x3(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f); + float2x3 r0 = float2x3(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (180.318115f); + float2x3 b1 = float2x3(337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f, -138.614349f); + float2x3 r1 = float2x3(517.897461f, 143.263092f, 411.1231f, 40.14377f, 198.342285f, 41.7037659f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (26.9041748f); + float2x3 b2 = float2x3(-374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f, -504.916138f); + float2x3 r2 = float2x3(-347.633423f, 181.371765f, 295.288025f, -164.058838f, 215.521423f, -478.011963f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (20.45404f); + float2x3 b3 = float2x3(197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f, 480.884583f); + float2x3 r3 = float2x3(218.399414f, 271.865967f, -400.636353f, 131.899414f, -52.81485f, 501.338623f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_sub_wide_wide() + { + float2x3 a0 = float2x3(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f); + float2x3 b0 = float2x3(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f); + float2x3 r0 = float2x3(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x3 a1 = float2x3(146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f); + float2x3 b1 = float2x3(-125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f); + float2x3 r1 = float2x3(272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x3 a2 = float2x3(-470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f); + float2x3 b2 = float2x3(-446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f); + float2x3 r2 = float2x3(-23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x3 a3 = float2x3(-427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float2x3 b3 = float2x3(-80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float2x3 r3 = float2x3(-347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_sub_wide_scalar() + { + float2x3 a0 = float2x3(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f); + float b0 = (-291.5904f); + float2x3 r0 = float2x3(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x3 a1 = float2x3(204.358337f, -377.9257f, -470.262054f, 400.5349f, 461.507568f, -246.287262f); + float b1 = (180.269714f); + float2x3 r1 = float2x3(24.088623f, -558.195435f, -650.531738f, 220.2652f, 281.237854f, -426.556976f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x3 a2 = float2x3(21.6052856f, -121.427368f, -122.718414f, -122.938721f, 360.15094f, 342.874573f); + float b2 = (246.350708f); + float2x3 r2 = float2x3(-224.745422f, -367.778076f, -369.069122f, -369.289429f, 113.800232f, 96.5238647f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x3 a3 = float2x3(18.92981f, 97.0437f, 485.914978f, -205.75766f, 253.443237f, -121.163055f); + float b3 = (164.602356f); + float2x3 r3 = float2x3(-145.672546f, -67.5586548f, 321.312622f, -370.360016f, 88.84088f, -285.7654f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float2x3 b0 = float2x3(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f); + float2x3 r0 = float2x3(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-64.233f); + float2x3 b1 = float2x3(-66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f, 169.131409f); + float2x3 r1 = float2x3(1.80871582f, -405.437958f, 321.542053f, -139.627777f, -419.176727f, -233.36441f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (88.21661f); + float2x3 b2 = float2x3(1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f, 4.06555176f); + float2x3 r2 = float2x3(86.48163f, -34.32141f, 353.161621f, 139.0538f, 435.866943f, 84.15106f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-79.09543f); + float2x3 b3 = float2x3(354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f, 432.1847f); + float2x3 r3 = float2x3(-433.453766f, 213.397064f, -25.8864441f, 167.252167f, -378.2988f, -511.280121f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mul_wide_wide() + { + float2x3 a0 = float2x3(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f); + float2x3 b0 = float2x3(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f); + float2x3 r0 = float2x3(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x3 a1 = float2x3(494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f); + float2x3 b1 = float2x3(207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f); + float2x3 r1 = float2x3(102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x3 a2 = float2x3(467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f); + float2x3 b2 = float2x3(184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f); + float2x3 r2 = float2x3(86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x3 a3 = float2x3(-104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float2x3 b3 = float2x3(254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float2x3 r3 = float2x3(-26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mul_wide_scalar() + { + float2x3 a0 = float2x3(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f); + float b0 = (192.211182f); + float2x3 r0 = float2x3(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x3 a1 = float2x3(-477.3105f, -46.729187f, -238.405f, 422.08252f, -48.83484f, 355.30835f); + float b1 = (-438.272919f); + float2x3 r1 = float2x3(209192.266f, 20480.1367f, 104486.453f, -184987.344f, 21402.9883f, -155722.031f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x3 a2 = float2x3(119.356628f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f, -130.474121f); + float b2 = (-196.995819f); + float2x3 r2 = float2x3(-23512.7559f, -19352.0859f, 64132.4141f, -10625.4258f, 17227.4785f, 25702.8555f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x3 a3 = float2x3(-222.594574f, 293.361084f, 174.381958f, -327.120056f, 56.62915f, 257.541565f); + float b3 = (126.015015f); + float2x3 r3 = float2x3(-28050.2578f, 36967.9023f, 21974.7441f, -41222.04f, 7136.123f, 32454.1035f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float2x3 b0 = float2x3(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f); + float2x3 r0 = float2x3(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (159.748108f); + float2x3 b1 = float2x3(-351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f, -395.9921f); + float2x3 r1 = float2x3(-56202.93f, 78564.37f, 7971.75635f, 67807.09f, 25578.5645f, -63258.99f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (125.20166f); + float2x3 b2 = float2x3(-265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f, 356.517761f); + float2x3 r2 = float2x3(-33180.418f, 39395.47f, -36648.03f, -4723.84473f, 20703.627f, 44636.6172f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-188.813324f); + float2x3 b3 = float2x3(504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f, 53.7483521f); + float2x3 r3 = float2x3(-95334.81f, -7660.56152f, 39041.9f, 11631.4092f, -22463.4277f, -10148.4053f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_div_wide_wide() + { + float2x3 a0 = float2x3(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f); + float2x3 b0 = float2x3(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f); + float2x3 r0 = float2x3(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x3 a1 = float2x3(360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f); + float2x3 b1 = float2x3(-93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f); + float2x3 r1 = float2x3(-3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x3 a2 = float2x3(-136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f); + float2x3 b2 = float2x3(397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f); + float2x3 r2 = float2x3(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x3 a3 = float2x3(-204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float2x3 b3 = float2x3(404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float2x3 r3 = float2x3(-0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_div_wide_scalar() + { + float2x3 a0 = float2x3(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f); + float b0 = (-60.0243835f); + float2x3 r0 = float2x3(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x3 a1 = float2x3(131.526611f, -348.9238f, -275.5387f, 210.557922f, 287.6424f, 504.372253f); + float b1 = (-261.8864f); + float2x3 r1 = float2x3(-0.5022277f, 1.33234787f, 1.05213058f, -0.8040047f, -1.0983479f, -1.92591989f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x3 a2 = float2x3(491.7871f, -253.236664f, 272.895142f, 178.096191f, -460.87558f, -502.646027f); + float b2 = (-26.6315918f); + float2x3 r2 = float2x3(-18.4663048f, 9.508882f, -10.2470455f, -6.687403f, 17.3055973f, 18.874052f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x3 a3 = float2x3(-84.3248f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f, 81.6464844f); + float b3 = (-174.690338f); + float2x3 r3 = float2x3(0.482710153f, -0.479684949f, -1.12795055f, -1.8156029f, -2.30915546f, -0.467378378f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float2x3 b0 = float2x3(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f); + float2x3 r0 = float2x3(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (333.6645f); + float2x3 b1 = float2x3(38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f, -211.10257f); + float2x3 r1 = float2x3(8.713897f, -0.7054519f, 1.73575509f, -1.66584969f, -0.6806958f, -1.58058f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-322.852356f); + float2x3 b2 = float2x3(-137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f, -488.647156f); + float2x3 r2 = float2x3(2.339759f, -3.8284533f, -0.909280658f, -1.16794693f, 0.8429829f, 0.6607065f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (344.846f); + float2x3 b3 = float2x3(168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f, -344.194275f); + float2x3 r3 = float2x3(2.04226136f, -7.802725f, 0.8199867f, -1.96364558f, -37.3995972f, -1.00189352f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mod_wide_wide() + { + float2x3 a0 = float2x3(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f); + float2x3 b0 = float2x3(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f); + float2x3 r0 = float2x3(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x3 a1 = float2x3(-101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f); + float2x3 b1 = float2x3(487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f); + float2x3 r1 = float2x3(-101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x3 a2 = float2x3(-64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f); + float2x3 b2 = float2x3(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f); + float2x3 r2 = float2x3(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x3 a3 = float2x3(142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float2x3 b3 = float2x3(4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float2x3 r3 = float2x3(1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mod_wide_scalar() + { + float2x3 a0 = float2x3(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f); + float b0 = (-90.49924f); + float2x3 r0 = float2x3(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x3 a1 = float2x3(-450.807678f, -84.47363f, -318.7815f, 433.4547f, -54.60019f, -172.338867f); + float b1 = (186.094788f); + float2x3 r1 = float2x3(-78.6181f, -84.47363f, -132.6867f, 61.2651367f, -54.60019f, -172.338867f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x3 a2 = float2x3(-429.714661f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f, -75.3564148f); + float b2 = (222.361877f); + float2x3 r2 = float2x3(-207.352783f, 5.79638672f, 32.1489258f, -210.731812f, -203.082611f, -75.3564148f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x3 a3 = float2x3(252.289124f, 5.337219f, -279.060425f, 483.5506f, -331.993347f, 336f); + float b3 = (-69.4039f); + float2x3 r3 = float2x3(44.0774231f, 5.337219f, -1.44482422f, 67.1272f, -54.3777466f, 58.3844f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float2x3 b0 = float2x3(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f); + float2x3 r0 = float2x3(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (397.0448f); + float2x3 b1 = float2x3(-393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f, 106.983582f); + float2x3 r1 = float2x3(3.15414429f, 24.9777222f, 196.032532f, 14.7773438f, 138.093323f, 76.0940552f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (469.323547f); + float2x3 b2 = float2x3(-34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f, 4.506653f); + float2x3 r2 = float2x3(16.8066711f, 99.65045f, 94.5293f, 73.7054138f, 109.044952f, 0.631652832f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-111.401947f); + float2x3 b3 = float2x3(391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f, -433.523071f); + float2x3 r3 = float2x3(-111.401947f, -111.401947f, -111.401947f, -111.401947f, -111.401947f, -111.401947f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_plus() + { + float2x3 a0 = float2x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f); + float2x3 r0 = float2x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f); + TestUtils.AreEqual(+a0, r0); + + float2x3 a1 = float2x3(190.324646f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f); + float2x3 r1 = float2x3(190.324646f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f); + TestUtils.AreEqual(+a1, r1); + + float2x3 a2 = float2x3(234.773926f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f); + float2x3 r2 = float2x3(234.773926f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f); + TestUtils.AreEqual(+a2, r2); + + float2x3 a3 = float2x3(301.7851f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f); + float2x3 r3 = float2x3(301.7851f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float2x3_operator_neg() + { + float2x3 a0 = float2x3(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f); + float2x3 r0 = float2x3(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f); + TestUtils.AreEqual(-a0, r0); + + float2x3 a1 = float2x3(-495.837952f, 19.68689f, 268.2367f, -180.600525f, 223.381287f, -410.392059f); + float2x3 r1 = float2x3(495.837952f, -19.68689f, -268.2367f, 180.600525f, -223.381287f, 410.392059f); + TestUtils.AreEqual(-a1, r1); + + float2x3 a2 = float2x3(-395.681549f, -110.9393f, -238.2196f, 292.543518f, 469.2926f, 48.29071f); + float2x3 r2 = float2x3(395.681549f, 110.9393f, 238.2196f, -292.543518f, -469.2926f, -48.29071f); + TestUtils.AreEqual(-a2, r2); + + float2x3 a3 = float2x3(88.7237549f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f, 196.387573f); + float2x3 r3 = float2x3(-88.7237549f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f, -196.387573f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float2x3_operator_prefix_inc() + { + float2x3 a0 = float2x3(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f); + float2x3 r0 = float2x3(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f); + TestUtils.AreEqual(++a0, r0); + + float2x3 a1 = float2x3(-323.614868f, -76.50766f, -305.584778f, 64.0965f, 148.679321f, 363.2849f); + float2x3 r1 = float2x3(-322.614868f, -75.50766f, -304.584778f, 65.0965f, 149.679321f, 364.2849f); + TestUtils.AreEqual(++a1, r1); + + float2x3 a2 = float2x3(-115.559235f, -179.894653f, 339.8766f, -38.41043f, -153.373688f, 261.625549f); + float2x3 r2 = float2x3(-114.559235f, -178.894653f, 340.8766f, -37.41043f, -152.373688f, 262.625549f); + TestUtils.AreEqual(++a2, r2); + + float2x3 a3 = float2x3(155.030823f, 301.3058f, -221.355408f, -429.698151f, -271.2893f, -264.380066f); + float2x3 r3 = float2x3(156.030823f, 302.3058f, -220.355408f, -428.698151f, -270.2893f, -263.380066f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float2x3_operator_postfix_inc() + { + float2x3 a0 = float2x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f); + float2x3 r0 = float2x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f); + TestUtils.AreEqual(a0++, r0); + + float2x3 a1 = float2x3(271.454651f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f); + float2x3 r1 = float2x3(271.454651f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f); + TestUtils.AreEqual(a1++, r1); + + float2x3 a2 = float2x3(-333.050446f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f); + float2x3 r2 = float2x3(-333.050446f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f); + TestUtils.AreEqual(a2++, r2); + + float2x3 a3 = float2x3(-449.9273f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f); + float2x3 r3 = float2x3(-449.9273f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float2x3_operator_prefix_dec() + { + float2x3 a0 = float2x3(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f); + float2x3 r0 = float2x3(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f); + TestUtils.AreEqual(--a0, r0); + + float2x3 a1 = float2x3(337.968933f, 171.964539f, -227.44281f, 298.2848f, 326.5078f, 400.7209f); + float2x3 r1 = float2x3(336.968933f, 170.964539f, -228.44281f, 297.2848f, 325.5078f, 399.7209f); + TestUtils.AreEqual(--a1, r1); + + float2x3 a2 = float2x3(-478.031372f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f, -79.6352539f); + float2x3 r2 = float2x3(-479.031372f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f, -80.6352539f); + TestUtils.AreEqual(--a2, r2); + + float2x3 a3 = float2x3(-131.00415f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f, 181.4751f); + float2x3 r3 = float2x3(-132.00415f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f, 180.4751f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float2x3_operator_postfix_dec() + { + float2x3 a0 = float2x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f); + float2x3 r0 = float2x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f); + TestUtils.AreEqual(a0--, r0); + + float2x3 a1 = float2x3(-281.1117f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f); + float2x3 r1 = float2x3(-281.1117f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f); + TestUtils.AreEqual(a1--, r1); + + float2x3 a2 = float2x3(205.461121f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f); + float2x3 r2 = float2x3(205.461121f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f); + TestUtils.AreEqual(a2--, r2); + + float2x3 a3 = float2x3(-396.302063f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f); + float2x3 r3 = float2x3(-396.302063f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x3.gen.cs.meta new file mode 100644 index 0000000..8cbf217 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c55c5a192a2ac9046aed8be3f03ce6f2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x4.gen.cs new file mode 100644 index 0000000..2707232 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x4.gen.cs @@ -0,0 +1,945 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat2x4 + { + [TestCompiler] + public static void float2x4_zero() + { + TestUtils.AreEqual(float2x4.zero.c0.x, 0.0f); + TestUtils.AreEqual(float2x4.zero.c0.y, 0.0f); + TestUtils.AreEqual(float2x4.zero.c1.x, 0.0f); + TestUtils.AreEqual(float2x4.zero.c1.y, 0.0f); + TestUtils.AreEqual(float2x4.zero.c2.x, 0.0f); + TestUtils.AreEqual(float2x4.zero.c2.y, 0.0f); + TestUtils.AreEqual(float2x4.zero.c3.x, 0.0f); + TestUtils.AreEqual(float2x4.zero.c3.y, 0.0f); + } + + [TestCompiler] + public static void float2x4_operator_equal_wide_wide() + { + float2x4 a0 = float2x4(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f); + float2x4 b0 = float2x4(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x4 a1 = float2x4(168.15448f, 350.729553f, 367.178467f, 46.9414673f, 188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float2x4 b1 = float2x4(194.678345f, 471.644836f, -404.044678f, -144.696747f, -494.446655f, -252.970367f, 234.417114f, 398.724f); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x4 a2 = float2x4(417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float2x4 b2 = float2x4(260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x4 a3 = float2x4(-22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f); + float2x4 b3 = float2x4(-174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_equal_wide_scalar() + { + float2x4 a0 = float2x4(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f); + float b0 = (-155.815765f); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x4 a1 = float2x4(290.04895f, -65.66748f, -69.68326f, -191.190765f, 186.845215f, -232.895691f, -319.144043f, -49.70108f); + float b1 = (-132.6352f); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x4 a2 = float2x4(-300.8819f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f, -410.91687f); + float b2 = (333.396851f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x4 a3 = float2x4(110.501282f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f, 291.051941f, 423.97168f); + float b3 = (-390.103577f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float2x4 b0 = float2x4(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-5.691559f); + float2x4 b1 = float2x4(-30.8659363f, -362.9831f, 184.503174f, -160.470612f, 316.668823f, 390.369263f, 505.1051f, -294.6487f); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (443.1991f); + float2x4 b2 = float2x4(96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-336.612427f); + float2x4 b3 = float2x4(365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_not_equal_wide_wide() + { + float2x4 a0 = float2x4(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f); + float2x4 b0 = float2x4(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x4 a1 = float2x4(332.4262f, 397.11322f, -431.374969f, 489.0108f, 398.4336f, -489.817932f, 171.4049f, -67.82968f); + float2x4 b1 = float2x4(3.024231f, 155.812744f, -19.8399048f, -6.01693726f, -406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x4 a2 = float2x4(-192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float2x4 b2 = float2x4(93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x4 a3 = float2x4(-72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f); + float2x4 b3 = float2x4(415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_not_equal_wide_scalar() + { + float2x4 a0 = float2x4(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f); + float b0 = (-393.413544f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x4 a1 = float2x4(492.20105f, 270.341f, -380.243256f, 501.899048f, -134.345459f, 458.400452f, 46.7709961f, 161.459961f); + float b1 = (-165.241516f); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x4 a2 = float2x4(261.514221f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f, -497.459473f); + float b2 = (-145.6124f); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x4 a3 = float2x4(-80.93225f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f); + float b3 = (-328.587769f); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float2x4 b0 = float2x4(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-452.820679f); + float2x4 b1 = float2x4(209.439331f, 50.10797f, 372.4344f, -488.0213f, 489.740784f, 270.4001f, -472.846771f, -286.850464f); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-384.691864f); + float2x4 b2 = float2x4(443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-239.231018f); + float2x4 b3 = float2x4(411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_wide_wide() + { + float2x4 a0 = float2x4(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f); + float2x4 b0 = float2x4(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f); + bool2x4 r0 = bool2x4(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2x4 a1 = float2x4(-69.3696f, -135.667969f, -194.787354f, -33.473877f, -19.67508f, 423.237976f, -71.6983f, -501.886f); + float2x4 b1 = float2x4(473.2249f, 15.8916626f, 270.049927f, 490.914f, -185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x4 a2 = float2x4(7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float2x4 b2 = float2x4(73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool2x4 r2 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x4 a3 = float2x4(269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f); + float2x4 b3 = float2x4(-382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f); + bool2x4 r3 = bool2x4(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_wide_scalar() + { + float2x4 a0 = float2x4(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f); + float b0 = (199.0675f); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float2x4 a1 = float2x4(-111.413147f, 82.6654053f, -361.6429f, -68.0881958f, 12.7880249f, -66.703064f, -78.76297f, 25.7277222f); + float b1 = (-288.081116f); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float2x4 a2 = float2x4(101.37085f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f, -334.622742f); + float b2 = (-330.442657f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x4 a3 = float2x4(-98.31558f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f, -455.37558f, 360.291565f); + float b3 = (300.410156f); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float2x4 b0 = float2x4(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-458.904541f); + float2x4 b1 = float2x4(13.6846924f, -458.5069f, 248.276489f, 389.231445f, 488.745544f, -221.637878f, -424.2672f, 249.059021f); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-22.1361389f); + float2x4 b2 = float2x4(-442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f); + bool2x4 r2 = bool2x4(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (122.164795f); + float2x4 b3 = float2x4(96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_wide_wide() + { + float2x4 a0 = float2x4(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f); + float2x4 b0 = float2x4(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f); + bool2x4 r0 = bool2x4(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + float2x4 a1 = float2x4(489.1399f, 51.9188843f, 155.384766f, -135.631653f, -425.978149f, -228.430511f, 383.03833f, 136.533569f); + float2x4 b1 = float2x4(-77.6748657f, -46.584198f, -415.377f, 71.46698f, -206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool2x4 r1 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float2x4 a2 = float2x4(8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float2x4 b2 = float2x4(364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float2x4 a3 = float2x4(105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f); + float2x4 b3 = float2x4(-352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_wide_scalar() + { + float2x4 a0 = float2x4(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f); + float b0 = (-302.816956f); + bool2x4 r0 = bool2x4(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2x4 a1 = float2x4(501.306824f, -86.12451f, -489.090576f, -172.518158f, -18.1496277f, -236.414948f, -238.8945f, -27.2391357f); + float b1 = (-367.027771f); + bool2x4 r1 = bool2x4(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float2x4 a2 = float2x4(471.779358f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f); + float b2 = (240.164551f); + bool2x4 r2 = bool2x4(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2x4 a3 = float2x4(-7.34790039f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f); + float b3 = (-261.865967f); + bool2x4 r3 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float2x4 b0 = float2x4(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (-182.48288f); + float2x4 b1 = float2x4(-158.2933f, -162.685333f, -193.328674f, 230.181274f, -102.58783f, 392.520569f, -177.478668f, -10.2950134f); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-24.04895f); + float2x4 b2 = float2x4(172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f); + bool2x4 r2 = bool2x4(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-361.524841f); + float2x4 b3 = float2x4(-372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f); + bool2x4 r3 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_equal_wide_wide() + { + float2x4 a0 = float2x4(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f); + float2x4 b0 = float2x4(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f); + bool2x4 r0 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x4 a1 = float2x4(-456.12326f, 282.30127f, 421.881165f, -311.71283f, 84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float2x4 b1 = float2x4(306.173279f, 139.564819f, -505.752472f, -489.6268f, -280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool2x4 r1 = bool2x4(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x4 a2 = float2x4(36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float2x4 b2 = float2x4(95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool2x4 r2 = bool2x4(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x4 a3 = float2x4(-77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f); + float2x4 b3 = float2x4(-216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_equal_wide_scalar() + { + float2x4 a0 = float2x4(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f); + float b0 = (292.924255f); + bool2x4 r0 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x4 a1 = float2x4(183.821167f, -257.870056f, -386.801758f, -182.938812f, 349.250122f, 485.311584f, 373.5691f, 259.1515f); + float b1 = (320.4425f); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x4 a2 = float2x4(450.130066f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f, 402.484863f); + float b2 = (-128.525543f); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x4 a3 = float2x4(87.91608f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f); + float b3 = (-502.1736f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float2x4 b0 = float2x4(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (-148.618073f); + float2x4 b1 = float2x4(-506.3001f, 27.5812378f, 48.47113f, 104.883484f, -488.685852f, -480.435181f, 421.936646f, 239.721069f); + bool2x4 r1 = bool2x4(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-101.018433f); + float2x4 b2 = float2x4(-283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f); + bool2x4 r2 = bool2x4(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-116.019989f); + float2x4 b3 = float2x4(-442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f); + bool2x4 r3 = bool2x4(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_equal_wide_wide() + { + float2x4 a0 = float2x4(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f); + float2x4 b0 = float2x4(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f); + bool2x4 r0 = bool2x4(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x4 a1 = float2x4(152.946411f, 48.9862061f, 57.3381348f, 300.4649f, 349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float2x4 b1 = float2x4(-322.7154f, 125.47821f, -25.77658f, 297.518921f, 73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool2x4 r1 = bool2x4(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x4 a2 = float2x4(-131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float2x4 b2 = float2x4(381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool2x4 r2 = bool2x4(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x4 a3 = float2x4(-223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f); + float2x4 b3 = float2x4(453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f); + bool2x4 r3 = bool2x4(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_equal_wide_scalar() + { + float2x4 a0 = float2x4(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f); + float b0 = (189.205139f); + bool2x4 r0 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x4 a1 = float2x4(-221.505463f, -116.440369f, -395.3633f, 164.772583f, -287.007324f, 355.837036f, 184.195557f, 273.012268f); + float b1 = (252.994324f); + bool2x4 r1 = bool2x4(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x4 a2 = float2x4(-418.1424f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f, 179.005066f); + float b2 = (249.3841f); + bool2x4 r2 = bool2x4(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x4 a3 = float2x4(71.1767f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f, 30.99707f, 199.232239f); + float b3 = (-331.271667f); + bool2x4 r3 = bool2x4(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float2x4 b0 = float2x4(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (79.39917f); + float2x4 b1 = float2x4(416.420532f, 379.2735f, -439.5147f, 67.14099f, -74.56064f, -367.256348f, 494.950745f, -61.2355347f); + bool2x4 r1 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-429.170258f); + float2x4 b2 = float2x4(-213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-400.47052f); + float2x4 b3 = float2x4(-283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f); + bool2x4 r3 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_add_wide_wide() + { + float2x4 a0 = float2x4(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f); + float2x4 b0 = float2x4(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f); + float2x4 r0 = float2x4(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x4 a1 = float2x4(-178.701447f, -420.033783f, 290.711121f, -446.529633f, 491.066467f, -261.1173f, -298.4069f, 502.4286f); + float2x4 b1 = float2x4(244.495117f, -78.67575f, 352.2055f, 82.7791748f, 462.5473f, -405.492f, -428.498322f, -41.87259f); + float2x4 r1 = float2x4(65.79367f, -498.709534f, 642.9166f, -363.750458f, 953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x4 a2 = float2x4(284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float2x4 b2 = float2x4(-269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float2x4 r2 = float2x4(14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x4 a3 = float2x4(-62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f); + float2x4 b3 = float2x4(492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f); + float2x4 r3 = float2x4(429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_add_wide_scalar() + { + float2x4 a0 = float2x4(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f); + float b0 = (500.997253f); + float2x4 r0 = float2x4(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x4 a1 = float2x4(443.115234f, 41.3210449f, -471.256073f, -2.664978f, 78.98584f, 202.14801f, 311.725464f, 10.3458252f); + float b1 = (268.092224f); + float2x4 r1 = float2x4(711.207458f, 309.413269f, -203.163849f, 265.427246f, 347.078064f, 470.240234f, 579.8177f, 278.438049f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x4 a2 = float2x4(-151.244446f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f); + float b2 = (355.2328f); + float2x4 r2 = float2x4(203.988342f, 157.432037f, 611.188049f, 599.3799f, 173.606232f, 352.777863f, 656.1334f, 118.740845f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x4 a3 = float2x4(-160.5841f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f, -198.837769f, -381.930969f); + float b3 = (-172.5422f); + float2x4 r3 = float2x4(-333.1263f, -415.4833f, 293.8019f, 65.44528f, 91.7518f, 200.324615f, -371.379974f, -554.473145f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float2x4 b0 = float2x4(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f); + float2x4 r0 = float2x4(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-37.0550232f); + float2x4 b1 = float2x4(230.805f, -140.174347f, 18.02417f, -138.614349f, 26.9041748f, -374.5376f, 154.46759f, 268.38385f); + float2x4 r1 = float2x4(193.749969f, -177.22937f, -19.0308533f, -175.669373f, -10.1508484f, -411.592621f, 117.412567f, 231.328827f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-190.963013f); + float2x4 b2 = float2x4(188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f); + float2x4 r2 = float2x4(-2.34576416f, -695.87915f, -170.508972f, 6.982361f, 60.4489136f, -612.0534f, -79.51764f, -264.2319f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (480.884583f); + float2x4 b3 = float2x4(438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f); + float2x4 r3 = float2x4(918.9376f, 547.7289f, 210.088562f, 436.862671f, 678.5793f, 499.998535f, 830.1224f, 847.1191f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_sub_wide_wide() + { + float2x4 a0 = float2x4(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f); + float2x4 b0 = float2x4(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f); + float2x4 r0 = float2x4(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x4 a1 = float2x4(110.7771f, -235.5416f, 78.87933f, -347.686157f, -470.820557f, -11.45929f, -167.9479f, 330.676758f); + float2x4 b1 = float2x4(-477.876434f, 164.5f, 428.009583f, 72.62781f, -446.8805f, 432.091431f, -225.554657f, -112.451965f); + float2x4 r1 = float2x4(588.653564f, -400.0416f, -349.130249f, -420.313965f, -23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x4 a2 = float2x4(-508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float2x4 b2 = float2x4(-210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float2x4 r2 = float2x4(-297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x4 a3 = float2x4(-308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f); + float2x4 b3 = float2x4(-221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f); + float2x4 r3 = float2x4(-87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_sub_wide_scalar() + { + float2x4 a0 = float2x4(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f); + float b0 = (-291.5904f); + float2x4 r0 = float2x4(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x4 a1 = float2x4(-377.9257f, 400.5349f, 461.507568f, -246.287262f, 21.6052856f, 246.350708f, -121.427368f, -122.718414f); + float b1 = (-470.262054f); + float2x4 r1 = float2x4(92.3363647f, 870.797f, 931.769653f, 223.9748f, 491.86734f, 716.6128f, 348.8347f, 347.54364f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x4 a2 = float2x4(-122.938721f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f, 253.443237f); + float b2 = (360.15094f); + float2x4 r2 = float2x4(-483.089661f, -17.2763672f, -341.22113f, -195.548584f, -263.107239f, 125.764038f, -565.908569f, -106.7077f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x4 a3 = float2x4(-121.163055f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f, 354.886047f, 98.82147f); + float b3 = (187.998413f); + float2x4 r3 = float2x4(-309.161469f, -638.8187f, -436.071777f, -214.994476f, 253.5542f, 261.91217f, 166.887634f, -89.17694f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float2x4 b0 = float2x4(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f); + float2x4 r0 = float2x4(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (341.204956f); + float2x4 b1 = float2x4(-385.775055f, 75.3947754f, 354.943726f, 169.131409f, 88.21661f, 1.73498535f, 122.538025f, -264.945f); + float2x4 r1 = float2x4(726.98f, 265.810181f, -13.73877f, 172.073547f, 252.988342f, 339.469971f, 218.666931f, 606.149963f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-50.83719f); + float2x4 b2 = float2x4(-347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f); + float2x4 r2 = float2x4(296.813141f, -54.90274f, 28.25824f, -405.195526f, 241.6553f, 2.37179565f, 195.5104f, -350.040558f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (432.1847f); + float2x4 b3 = float2x4(-163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f); + float2x4 r3 = float2x4(596.0647f, 255.442139f, 537.170532f, 877.9823f, 461.057861f, 601.772949f, 702.543945f, 364.1371f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mul_wide_wide() + { + float2x4 a0 = float2x4(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f); + float2x4 b0 = float2x4(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f); + float2x4 r0 = float2x4(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x4 a1 = float2x4(-239.4964f, 236.675842f, -211.8562f, -216.654816f, 467.9583f, -178.021912f, -386.394257f, -422.4354f); + float2x4 b1 = float2x4(358.880737f, 214.853577f, 253.422791f, -307.7138f, 184.47113f, 426.436462f, -144.281433f, 459.4796f); + float2x4 r1 = float2x4(-85950.64f, 50850.6523f, -53689.19f, 66667.68f, 86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x4 a2 = float2x4(464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float2x4 b2 = float2x4(-358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float2x4 r2 = float2x4(-166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x4 a3 = float2x4(-83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f); + float2x4 b3 = float2x4(-189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f); + float2x4 r3 = float2x4(15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mul_wide_scalar() + { + float2x4 a0 = float2x4(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f); + float b0 = (192.211182f); + float2x4 r0 = float2x4(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x4 a1 = float2x4(-46.729187f, 422.08252f, -48.83484f, 355.30835f, 119.356628f, -196.995819f, 98.23602f, -325.552155f); + float b1 = (-238.405f); + float2x4 r1 = float2x4(11140.4717f, -100626.586f, 11642.47f, -84707.29f, -28455.2168f, 46964.79f, -23419.959f, 77613.26f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x4 a2 = float2x4(53.9373169f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f, 56.62915f); + float b2 = (-87.45099f); + float2x4 r2 = float2x4(-4716.87158f, 11410.0908f, 19466.1152f, -11020.1377f, -25654.7168f, -15249.875f, 28606.9727f, -4952.27539f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x4 a3 = float2x4(257.541565f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f); + float b3 = (-475.6087f); + float2x4 r3 = float2x4(-122489.008f, 215304.2f, 23409.752f, -67346.65f, -205265.9f, -85778.4844f, 19463.5547f, -132953.328f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float2x4 b0 = float2x4(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f); + float2x4 r0 = float2x4(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (491.801575f); + float2x4 b1 = float2x4(49.90204f, 424.4626f, 160.1181f, -395.9921f, 125.20166f, -265.0158f, 314.656128f, -292.712036f); + float2x4 r1 = float2x4(24541.9f, 208751.375f, 78746.3359f, -194749.531f, 61574.375f, -130335.195f, 154748.375f, -143956.234f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (-37.72989f); + float2x4 b2 = float2x4(165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f); + float2x4 r2 = float2x4(-6239.099f, -13451.376f, 7123.906f, -19050.4141f, -1530.78247f, 7801.602f, 2324.2627f, -4488.786f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (53.7483521f); + float2x4 b3 = float2x4(-198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f); + float2x4 r3 = float2x4(-10678.1533f, 5172.531f, -1087.96777f, -1672.86169f, 2090.297f, -705.89325f, 27297.2441f, 5107.058f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_div_wide_wide() + { + float2x4 a0 = float2x4(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f); + float2x4 b0 = float2x4(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f); + float2x4 r0 = float2x4(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x4 a1 = float2x4(-274.050476f, 127.538574f, -447.671753f, -137.458588f, -136.133179f, 12.4376221f, 228.513f, 356.972351f); + float2x4 b1 = float2x4(484.362732f, -390.7818f, 402.02533f, 316.6507f, 397.154419f, -303.2622f, -118.591248f, -81.6503f); + float2x4 r1 = float2x4(-0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f, -0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x4 a2 = float2x4(-24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float2x4 b2 = float2x4(-84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float2x4 r2 = float2x4(0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x4 a3 = float2x4(315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f); + float2x4 b3 = float2x4(-218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f); + float2x4 r3 = float2x4(-1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_div_wide_scalar() + { + float2x4 a0 = float2x4(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f); + float b0 = (-60.0243835f); + float2x4 r0 = float2x4(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x4 a1 = float2x4(-348.9238f, 210.557922f, 287.6424f, 504.372253f, 491.7871f, -26.6315918f, -253.236664f, 272.895142f); + float b1 = (-275.5387f); + float2x4 r1 = float2x4(1.26633322f, -0.764168262f, -1.04392743f, -1.83049512f, -1.78482044f, 0.09665282f, 0.91906023f, -0.990405858f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x4 a2 = float2x4(178.096191f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f); + float b2 = (-460.87558f); + float2x4 r2 = float2x4(-0.386430085f, 1.0906328f, 0.182966515f, 0.379040122f, -0.181819841f, -0.427538484f, -0.688186347f, -0.875262558f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x4 a3 = float2x4(81.6464844f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f); + float b3 = (60.6068726f); + float2x4 r3 = float2x4(1.3471489f, -6.82365656f, 3.42108083f, 5.916196f, 0.3423553f, -1.13150728f, 5.12652159f, 6.887089f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float2x4 b0 = float2x4(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f); + float2x4 r0 = float2x4(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-472.979767f); + float2x4 b1 = float2x4(192.230164f, -200.296875f, -490.181519f, -211.10257f, -322.852356f, -137.985291f, 84.32971f, 355.063477f); + float2x4 r1 = float2x4(-2.46048665f, 2.36139369f, 0.9649074f, 2.24052119f, 1.46500325f, 3.42775488f, -5.60869646f, -1.3320992f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (276.427246f); + float2x4 b2 = float2x4(-382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f); + float2x4 r2 = float2x4(-0.7217647f, -0.5656991f, 0.801596165f, 1.637069f, -6.25463438f, 0.6572982f, -1.57405078f, -29.9793739f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-344.194275f); + float2x4 b3 = float2x4(-449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f); + float2x4 r3 = float2x4(0.7664576f, -2.924214f, 1.02126491f, -1.43777657f, 0.8840111f, -1.41809428f, -0.693553448f, -3.75160837f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mod_wide_wide() + { + float2x4 a0 = float2x4(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f); + float2x4 b0 = float2x4(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f); + float2x4 r0 = float2x4(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x4 a1 = float2x4(-140.770325f, 183.44696f, -463.368378f, 83.83911f, -64.71405f, 295.066833f, 212.25708f, 349.6283f); + float2x4 b1 = float2x4(-145.203766f, -203.384f, -22.52008f, 224.69f, -435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float2x4 r1 = float2x4(-140.770325f, 183.44696f, -12.9667664f, 83.83911f, -64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x4 a2 = float2x4(119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float2x4 b2 = float2x4(-433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float2x4 r2 = float2x4(119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x4 a3 = float2x4(156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f); + float2x4 b3 = float2x4(-131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f); + float2x4 r3 = float2x4(25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mod_wide_scalar() + { + float2x4 a0 = float2x4(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f); + float b0 = (-90.49924f); + float2x4 r0 = float2x4(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x4 a1 = float2x4(-84.47363f, 433.4547f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f, 254.5108f); + float b1 = (-318.7815f); + float2x4 r1 = float2x4(-84.47363f, 114.673218f, -54.60019f, -172.338867f, -110.933167f, 222.361877f, 5.79638672f, 254.5108f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x4 a2 = float2x4(-433.0937f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f, -331.993347f); + float b2 = (-203.082611f); + float2x4 r2 = float2x4(-26.9284668f, -75.3564148f, 49.2065125f, -69.4039f, 5.337219f, -75.97781f, 77.385376f, -128.910736f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x4 a3 = float2x4(336f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f, 235.724f, 465.984863f); + float b3 = (67.8396f); + float2x4 r3 = float2x4(64.6416f, -56.8811646f, 38.1759033f, 67.76819f, 66.57562f, -59.0822449f, 32.2052f, 58.9472656f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float2x4 b0 = float2x4(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f); + float2x4 r0 = float2x4(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (-372.067078f); + float2x4 b1 = float2x4(201.012268f, -95.566864f, -258.951477f, 106.983582f, 469.323547f, -34.80899f, 184.836548f, 374.79425f); + float2x4 r1 = float2x4(-171.05481f, -85.3664856f, -113.1156f, -51.116333f, -372.067078f, -23.9771729f, -2.393982f, -372.067078f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (-131.872711f); + float2x4 b2 = float2x4(-120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f); + float2x4 r2 = float2x4(-11.7798462f, -1.179779f, -20.4707642f, -131.872711f, -131.872711f, -131.872711f, -131.872711f, -131.872711f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-433.523071f); + float2x4 b3 = float2x4(-163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f); + float2x4 r3 = float2x4(-105.789368f, -79.5150146f, -101.572632f, -9.093384f, -50.1112061f, -1.08209229f, -48.138916f, -165.3913f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_plus() + { + float2x4 a0 = float2x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f); + float2x4 r0 = float2x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f); + TestUtils.AreEqual(+a0, r0); + + float2x4 a1 = float2x4(-320.518463f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f); + float2x4 r1 = float2x4(-320.518463f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f); + TestUtils.AreEqual(+a1, r1); + + float2x4 a2 = float2x4(309.59314f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f); + float2x4 r2 = float2x4(309.59314f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f); + TestUtils.AreEqual(+a2, r2); + + float2x4 a3 = float2x4(239.152344f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f); + float2x4 r3 = float2x4(239.152344f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float2x4_operator_neg() + { + float2x4 a0 = float2x4(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f); + float2x4 r0 = float2x4(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f); + TestUtils.AreEqual(-a0, r0); + + float2x4 a1 = float2x4(19.68689f, -180.600525f, 223.381287f, -410.392059f, -395.681549f, -349.149475f, -110.9393f, -238.2196f); + float2x4 r1 = float2x4(-19.68689f, 180.600525f, -223.381287f, 410.392059f, 395.681549f, 349.149475f, 110.9393f, 238.2196f); + TestUtils.AreEqual(-a1, r1); + + float2x4 a2 = float2x4(292.543518f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f); + float2x4 r2 = float2x4(-292.543518f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f); + TestUtils.AreEqual(-a2, r2); + + float2x4 a3 = float2x4(196.387573f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f); + float2x4 r3 = float2x4(-196.387573f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float2x4_operator_prefix_inc() + { + float2x4 a0 = float2x4(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f); + float2x4 r0 = float2x4(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f); + TestUtils.AreEqual(++a0, r0); + + float2x4 a1 = float2x4(-76.50766f, 64.0965f, 148.679321f, 363.2849f, -115.559235f, -326.8778f, -179.894653f, 339.8766f); + float2x4 r1 = float2x4(-75.50766f, 65.0965f, 149.679321f, 364.2849f, -114.559235f, -325.8778f, -178.894653f, 340.8766f); + TestUtils.AreEqual(++a1, r1); + + float2x4 a2 = float2x4(-38.41043f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f, -271.2893f); + float2x4 r2 = float2x4(-37.41043f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f, -270.2893f); + TestUtils.AreEqual(++a2, r2); + + float2x4 a3 = float2x4(-264.380066f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f); + float2x4 r3 = float2x4(-263.380066f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float2x4_operator_postfix_inc() + { + float2x4 a0 = float2x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f); + float2x4 r0 = float2x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f); + TestUtils.AreEqual(a0++, r0); + + float2x4 a1 = float2x4(153.7503f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f); + float2x4 r1 = float2x4(153.7503f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f); + TestUtils.AreEqual(a1++, r1); + + float2x4 a2 = float2x4(-270.652466f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f); + float2x4 r2 = float2x4(-270.652466f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f); + TestUtils.AreEqual(a2++, r2); + + float2x4 a3 = float2x4(188.006592f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f); + float2x4 r3 = float2x4(188.006592f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float2x4_operator_prefix_dec() + { + float2x4 a0 = float2x4(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f); + float2x4 r0 = float2x4(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f); + TestUtils.AreEqual(--a0, r0); + + float2x4 a1 = float2x4(171.964539f, 298.2848f, 326.5078f, 400.7209f, -478.031372f, -326.452972f, -24.5845032f, 112.796875f); + float2x4 r1 = float2x4(170.964539f, 297.2848f, 325.5078f, 399.7209f, -479.031372f, -327.452972f, -25.5845032f, 111.796875f); + TestUtils.AreEqual(--a1, r1); + + float2x4 a2 = float2x4(-341.9763f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f); + float2x4 r2 = float2x4(-342.9763f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f); + TestUtils.AreEqual(--a2, r2); + + float2x4 a3 = float2x4(181.4751f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f); + float2x4 r3 = float2x4(180.4751f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float2x4_operator_postfix_dec() + { + float2x4 a0 = float2x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f); + float2x4 r0 = float2x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f); + TestUtils.AreEqual(a0--, r0); + + float2x4 a1 = float2x4(-182.405731f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f); + float2x4 r1 = float2x4(-182.405731f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f); + TestUtils.AreEqual(a1--, r1); + + float2x4 a2 = float2x4(487.344849f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f); + float2x4 r2 = float2x4(487.344849f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f); + TestUtils.AreEqual(a2--, r2); + + float2x4 a3 = float2x4(311.299f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f); + float2x4 r3 = float2x4(311.299f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x4.gen.cs.meta new file mode 100644 index 0000000..6568ff0 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3517a3babe572246a5b80234b2f8a4b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3.gen.cs new file mode 100644 index 0000000..a3e6ac3 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3.gen.cs @@ -0,0 +1,1062 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat3 + { + [TestCompiler] + public static void float3_zero() + { + TestUtils.AreEqual(float3.zero.x, 0.0f); + TestUtils.AreEqual(float3.zero.y, 0.0f); + TestUtils.AreEqual(float3.zero.z, 0.0f); + } + + [TestCompiler] + public static void float3_constructor() + { + float3 a = new float3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void float3_scalar_constructor() + { + float3 a = new float3(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + TestUtils.AreEqual(a.z, 17.0f); + } + + [TestCompiler] + public static void float3_static_constructor() + { + float3 a = float3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void float3_static_scalar_constructor() + { + float3 a = float3(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + TestUtils.AreEqual(a.z, 17.0f); + } + + [TestCompiler] + public static void float3_operator_equal_wide_wide() + { + float3 a0 = float3(-135.18924f, -49.0941162f, 169.129822f); + float3 b0 = float3(-220.014648f, 66.98004f, 499.2016f); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3 a1 = float3(240.8053f, 314.7392f, 442.393f); + float3 b1 = float3(-371.1131f, 208.448669f, 390.8037f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3 a2 = float3(177.924438f, 335.5334f, 168.15448f); + float3 b2 = float3(-72.44382f, 362.97644f, 194.678345f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3 a3 = float3(350.729553f, 367.178467f, 46.9414673f); + float3 b3 = float3(471.644836f, -404.044678f, -144.696747f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3_operator_equal_wide_scalar() + { + float3 a0 = float3(65.6712f, 404.415527f, -269.730164f); + float b0 = (-155.815765f); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3 a1 = float3(83.6306152f, -155.868286f, 314.671265f); + float b1 = (152.9945f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3 a2 = float3(386.365173f, -132.6352f, -65.66748f); + float b2 = (290.04895f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3 a3 = float3(-69.68326f, 186.845215f, -232.895691f); + float b3 = (-191.190765f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float3 b0 = float3(-400.4892f, -71.2868347f, 156.978088f); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-225.238739f); + float3 b1 = float3(499.141785f, -211.979919f, 428.311951f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-489.501343f); + float3 b2 = float3(-5.691559f, -30.8659363f, -362.9831f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (184.503174f); + float3 b3 = float3(-160.470612f, 316.668823f, 390.369263f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3_operator_not_equal_wide_wide() + { + float3 a0 = float3(279.994141f, -43.34201f, -465.724731f); + float3 b0 = float3(-460.9121f, -476.009033f, 468.1364f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3 a1 = float3(317.466553f, 85.7149658f, 360.8905f); + float3 b1 = float3(-341.012543f, -62.65805f, -458.801666f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3 a2 = float3(366.081543f, 154.542847f, 332.4262f); + float3 b2 = float3(-457.730225f, -59.5232544f, 3.024231f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3 a3 = float3(397.11322f, -431.374969f, 489.0108f); + float3 b3 = float3(155.812744f, -19.8399048f, -6.01693726f); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3_operator_not_equal_wide_scalar() + { + float3 a0 = float3(-155.4411f, -19.4266052f, 174.633057f); + float b0 = (-393.413544f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3 a1 = float3(507.920715f, 171.151489f, -58.92328f); + float b1 = (59.177063f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3 a2 = float3(-398.176849f, -165.241516f, 270.341f); + float b2 = (492.20105f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3 a3 = float3(-380.243256f, -134.345459f, 458.400452f); + float b3 = (501.899048f); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float3 b0 = float3(459.553223f, 436.453247f, -488.714172f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (392.767944f); + float3 b1 = float3(-266.736633f, 338.557861f, -338.100128f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-152.314545f); + float3 b2 = float3(-452.820679f, 209.439331f, 50.10797f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (372.4344f); + float3 b3 = float3(-488.0213f, 489.740784f, 270.4001f); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_wide_wide() + { + float3 a0 = float3(51.7102661f, -313.85556f, 283.047668f); + float3 b0 = float3(-261.835236f, -19.81073f, -149.25882f); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float3 a1 = float3(235.021912f, 44.07837f, -207.255676f); + float3 b1 = float3(205.99823f, -306.024384f, 102.121704f); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3 a2 = float3(3.38293457f, -144.301331f, -69.3696f); + float3 b2 = float3(231.906311f, 179.49884f, 473.2249f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float3 a3 = float3(-135.667969f, -194.787354f, -33.473877f); + float3 b3 = float3(15.8916626f, 270.049927f, 490.914f); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_wide_scalar() + { + float3 a0 = float3(-221.869781f, -121.546478f, -97.5239258f); + float b0 = (199.0675f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3 a1 = float3(479.8811f, 137.3288f, 282.9666f); + float b1 = (67.11902f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float3 a2 = float3(258.2791f, -288.081116f, 82.6654053f); + float b2 = (-111.413147f); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float3 a3 = float3(-361.6429f, 12.7880249f, -66.703064f); + float b3 = (-68.0881958f); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float3 b0 = float3(-377.196533f, -505.147552f, 375.9267f); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (110.17395f); + float3 b1 = float3(-118.097565f, -40.4508972f, -299.744324f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (31.4371338f); + float3 b2 = float3(-458.904541f, 13.6846924f, -458.5069f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (248.276489f); + float3 b3 = float3(389.231445f, 488.745544f, -221.637878f); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_wide_wide() + { + float3 a0 = float3(-229.29068f, 505.536621f, -73.80707f); + float3 b0 = float3(-445.845032f, -420.035278f, 299.0244f); + bool3 r0 = bool3(true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float3 a1 = float3(100.292053f, -419.214783f, -159.559753f); + float3 b1 = float3(-13.8809814f, 151.5617f, -163.50943f); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float3 a2 = float3(-396.770355f, 127.037415f, 489.1399f); + float3 b2 = float3(-391.096039f, 479.283752f, -77.6748657f); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float3 a3 = float3(51.9188843f, 155.384766f, -135.631653f); + float3 b3 = float3(-46.584198f, -415.377f, 71.46698f); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_wide_scalar() + { + float3 a0 = float3(11.156311f, -411.023224f, 385.885559f); + float b0 = (-302.816956f); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3 a1 = float3(-485.103058f, 405.175354f, 173.575073f); + float b1 = (-491.180023f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float3 a2 = float3(69.26929f, -367.027771f, -86.12451f); + float b2 = (501.306824f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3 a3 = float3(-489.090576f, -18.1496277f, -236.414948f); + float b3 = (-172.518158f); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float3 b0 = float3(-226.2044f, -423.465f, 409.405518f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (453.877075f); + float3 b1 = float3(87.47571f, 113.795593f, 176.409241f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-140.440033f); + float3 b2 = float3(-182.48288f, -158.2933f, -162.685333f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-193.328674f); + float3 b3 = float3(230.181274f, -102.58783f, 392.520569f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_equal_wide_wide() + { + float3 a0 = float3(240.090515f, 462.213135f, 293.08252f); + float3 b0 = float3(-81.20383f, 493.637451f, -411.4721f); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float3 a1 = float3(-427.870667f, -405.5227f, 204.591919f); + float3 b1 = float3(99.16443f, -295.6677f, -480.462555f); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3 a2 = float3(294.6701f, -327.564453f, -456.12326f); + float3 b2 = float3(74.41406f, 260.916138f, 306.173279f); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float3 a3 = float3(282.30127f, 421.881165f, -311.71283f); + float3 b3 = float3(139.564819f, -505.752472f, -489.6268f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_equal_wide_scalar() + { + float3 a0 = float3(309.192444f, 69.67377f, -101.724182f); + float b0 = (292.924255f); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float3 a1 = float3(-315.9724f, 424.15387f, -410.870056f); + float b1 = (-346.011047f); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float3 a2 = float3(-483.902649f, 320.4425f, -257.870056f); + float b2 = (183.821167f); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float3 a3 = float3(-386.801758f, 349.250122f, 485.311584f); + float b3 = (-182.938812f); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float3 b0 = float3(51.1589966f, 340.443665f, 312.81427f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (354.1925f); + float3 b1 = float3(136.396729f, -94.76788f, 288.5443f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (304.042847f); + float3 b2 = float3(-148.618073f, -506.3001f, 27.5812378f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (48.47113f); + float3 b3 = float3(104.883484f, -488.685852f, -480.435181f); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_equal_wide_wide() + { + float3 a0 = float3(-386.5918f, -157.120789f, 391.015259f); + float3 b0 = float3(153.443f, 49.8924561f, 78.02582f); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float3 a1 = float3(-511.886871f, -5.42202759f, 287.645264f); + float3 b1 = float3(138.813721f, -225.51059f, -339.3561f); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3 a2 = float3(-122.535187f, 7.48144531f, 152.946411f); + float3 b2 = float3(-373.302063f, 364.9359f, -322.7154f); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3 a3 = float3(48.9862061f, 57.3381348f, 300.4649f); + float3 b3 = float3(125.47821f, -25.77658f, 297.518921f); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_equal_wide_scalar() + { + float3 a0 = float3(495.4574f, -14.3451233f, -463.4748f); + float b0 = (189.205139f); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float3 a1 = float3(217.517517f, -377.6587f, 53.8151245f); + float b1 = (-246.865723f); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3 a2 = float3(-123.332947f, 252.994324f, -116.440369f); + float b2 = (-221.505463f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3 a3 = float3(-395.3633f, -287.007324f, 355.837036f); + float b3 = (164.772583f); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float3 b0 = float3(204.802979f, -101.104034f, -122.055023f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-70.45615f); + float3 b1 = float3(-239.62027f, -185.992737f, -455.612579f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (276.665833f); + float3 b2 = float3(79.39917f, 416.420532f, 379.2735f); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-439.5147f); + float3 b3 = float3(67.14099f, -74.56064f, -367.256348f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3_operator_add_wide_wide() + { + float3 a0 = float3(465.148376f, 278.9107f, -277.5299f); + float3 b0 = float3(483.9944f, -204.07666f, -365.673553f); + float3 r0 = float3(949.142761f, 74.8340454f, -643.2035f); + TestUtils.AreEqual(a0 + b0, r0); + + float3 a1 = float3(-65.1972046f, -473.324371f, -4.69555664f); + float3 b1 = float3(-509.920868f, -270.6975f, 486.763977f); + float3 r1 = float3(-575.118042f, -744.021851f, 482.06842f); + TestUtils.AreEqual(a1 + b1, r1); + + float3 a2 = float3(-470.536774f, -109.9501f, -178.701447f); + float3 b2 = float3(267.49176f, 251.642517f, 244.495117f); + float3 r2 = float3(-203.045013f, 141.692413f, 65.79367f); + TestUtils.AreEqual(a2 + b2, r2); + + float3 a3 = float3(-420.033783f, 290.711121f, -446.529633f); + float3 b3 = float3(-78.67575f, 352.2055f, 82.7791748f); + float3 r3 = float3(-498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3_operator_add_wide_scalar() + { + float3 a0 = float3(459.898315f, -447.663361f, -94.43863f); + float b0 = (500.997253f); + float3 r0 = float3(960.895569f, 53.3338928f, 406.558624f); + TestUtils.AreEqual(a0 + b0, r0); + + float3 a1 = float3(126.429871f, -349.6413f, -2.79125977f); + float b1 = (-36.254364f); + float3 r1 = float3(90.17551f, -385.89566f, -39.0456238f); + TestUtils.AreEqual(a1 + b1, r1); + + float3 a2 = float3(-478.4148f, 268.092224f, 41.3210449f); + float b2 = (443.115234f); + float3 r2 = float3(-35.29956f, 711.207458f, 484.436279f); + TestUtils.AreEqual(a2 + b2, r2); + + float3 a3 = float3(-471.256073f, 78.98584f, 202.14801f); + float b3 = (-2.664978f); + float3 r3 = float3(-473.921051f, 76.32086f, 199.483032f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float3 b0 = float3(-264.088135f, -106.009247f, -355.4473f); + float3 r0 = float3(-589.6009f, -431.522f, -680.9601f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-447.3303f); + float3 b1 = float3(-158.7002f, -199.4837f, 180.318115f); + float3 r1 = float3(-606.0305f, -646.813965f, -267.012177f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (337.579346f); + float3 b2 = float3(-37.0550232f, 230.805f, -140.174347f); + float3 r2 = float3(300.524323f, 568.384338f, 197.405f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (18.02417f); + float3 b3 = float3(-138.614349f, 26.9041748f, -374.5376f); + float3 r3 = float3(-120.590179f, 44.9283447f, -356.513428f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3_operator_sub_wide_wide() + { + float3 a0 = float3(133.371033f, -131.832123f, -197.293152f); + float3 b0 = float3(123.460266f, 359.56012f, -48.2484741f); + float3 r0 = float3(9.910767f, -491.392242f, -149.044678f); + TestUtils.AreEqual(a0 - b0, r0); + + float3 a1 = float3(-485.28656f, -337.550323f, 471.6671f); + float3 b1 = float3(478.979065f, 207.158325f, 142.36731f); + float3 r1 = float3(-964.2656f, -544.7086f, 329.2998f); + TestUtils.AreEqual(a1 - b1, r1); + + float3 a2 = float3(146.506592f, -130.585052f, 110.7771f); + float3 b2 = float3(-125.6055f, -65.29901f, -477.876434f); + float3 r2 = float3(272.1121f, -65.28604f, 588.653564f); + TestUtils.AreEqual(a2 - b2, r2); + + float3 a3 = float3(-235.5416f, 78.87933f, -347.686157f); + float3 b3 = float3(164.5f, 428.009583f, 72.62781f); + float3 r3 = float3(-400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3_operator_sub_wide_scalar() + { + float3 a0 = float3(48.9367065f, 410.4516f, -364.4417f); + float b0 = (-291.5904f); + float3 r0 = float3(340.5271f, 702.042f, -72.85132f); + TestUtils.AreEqual(a0 - b0, r0); + + float3 a1 = float3(163.980591f, 110.919434f, 204.358337f); + float b1 = (-460.067322f); + float3 r1 = float3(624.0479f, 570.986755f, 664.425659f); + TestUtils.AreEqual(a1 - b1, r1); + + float3 a2 = float3(180.269714f, -470.262054f, 400.5349f); + float b2 = (-377.9257f); + float3 r2 = float3(558.195435f, -92.3363647f, 778.4606f); + TestUtils.AreEqual(a2 - b2, r2); + + float3 a3 = float3(461.507568f, 21.6052856f, 246.350708f); + float b3 = (-246.287262f); + float3 r3 = float3(707.7948f, 267.892548f, 492.63797f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float3 b0 = float3(452.352539f, 256.9898f, -275.159882f); + float3 r0 = float3(-157.766052f, 37.59668f, 569.746338f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-89.02753f); + float3 b1 = float3(488.2284f, -333.2173f, -64.233f); + float3 r1 = float3(-577.2559f, 244.189758f, -24.7945251f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-66.04172f); + float3 b2 = float3(341.204956f, -385.775055f, 75.3947754f); + float3 r2 = float3(-407.246674f, 319.733337f, -141.4365f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (354.943726f); + float3 b3 = float3(169.131409f, 88.21661f, 1.73498535f); + float3 r3 = float3(185.812317f, 266.7271f, 353.20874f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3_operator_mul_wide_wide() + { + float3 a0 = float3(-394.780548f, -412.3722f, -25.8745728f); + float3 b0 = float3(-149.763977f, -345.04538f, -284.334045f); + float3 r0 = float3(59123.9063f, 142287.125f, 7357.022f); + TestUtils.AreEqual(a0 * b0, r0); + + float3 a1 = float3(-241.045959f, -93.6759949f, 244.159973f); + float3 b1 = float3(267.979248f, -326.6485f, -150.689667f); + float3 r1 = float3(-64595.3164f, 30599.123f, -36792.3867f); + TestUtils.AreEqual(a1 * b1, r1); + + float3 a2 = float3(494.688477f, 53.5379639f, -239.4964f); + float3 b2 = float3(207.732422f, 366.192871f, 358.880737f); + float3 r2 = float3(102762.836f, 19605.22f, -85950.64f); + TestUtils.AreEqual(a2 * b2, r2); + + float3 a3 = float3(236.675842f, -211.8562f, -216.654816f); + float3 b3 = float3(214.853577f, 253.422791f, -307.7138f); + float3 r3 = float3(50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3_operator_mul_wide_scalar() + { + float3 a0 = float3(328.203f, -290.10672f, 236.995728f); + float b0 = (192.211182f); + float3 r0 = float3(63084.2852f, -55761.7539f, 45553.23f); + TestUtils.AreEqual(a0 * b0, r0); + + float3 a1 = float3(120.481384f, 134.867249f, -477.3105f); + float b1 = (357.903137f); + float3 r1 = float3(43120.6641f, 48269.41f, -170830.922f); + TestUtils.AreEqual(a1 * b1, r1); + + float3 a2 = float3(-438.272919f, -238.405f, 422.08252f); + float b2 = (-46.729187f); + float3 r2 = float3(20480.1367f, 11140.4717f, -19723.5723f); + TestUtils.AreEqual(a2 * b2, r2); + + float3 a3 = float3(-48.83484f, 119.356628f, -196.995819f); + float b3 = (355.30835f); + float3 r3 = float3(-17351.4258f, 42408.4063f, -69994.26f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float3 b0 = float3(329.360962f, -198.683441f, 184.0794f); + float3 r0 = float3(-152999.6f, 92295.35f, -85511.27f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (256.016174f); + float3 b1 = float3(266.226318f, -97.8947449f, 159.748108f); + float3 r1 = float3(68158.24f, -25062.6387f, 40898.0977f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (-351.8222f); + float3 b2 = float3(491.801575f, 49.90204f, 424.4626f); + float3 r2 = float3(-173026.719f, -17556.6445f, -149335.359f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (160.1181f); + float3 b3 = float3(-395.9921f, 125.20166f, -265.0158f); + float3 r3 = float3(-63405.5039f, 20047.0527f, -42433.83f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3_operator_div_wide_wide() + { + float3 a0 = float3(246.265747f, -269.85614f, -451.619537f); + float3 b0 = float3(172.119812f, -77.14111f, -325.8354f); + float3 r0 = float3(1.43078089f, 3.49821424f, 1.38603592f); + TestUtils.AreEqual(a0 / b0, r0); + + float3 a1 = float3(-7.388489f, -308.205566f, -373.3948f); + float3 b1 = float3(-450.608673f, -261.262146f, -122.449493f); + float3 r1 = float3(0.0163966864f, 1.17967939f, 3.04937816f); + TestUtils.AreEqual(a1 / b1, r1); + + float3 a2 = float3(360.41864f, 25.8097534f, -274.050476f); + float3 b2 = float3(-93.2107849f, -442.005219f, 484.362732f); + float3 r2 = float3(-3.86670542f, -0.0583924167f, -0.565795958f); + TestUtils.AreEqual(a2 / b2, r2); + + float3 a3 = float3(127.538574f, -447.671753f, -137.458588f); + float3 b3 = float3(-390.7818f, 402.02533f, 316.6507f); + float3 r3 = float3(-0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3_operator_div_wide_scalar() + { + float3 a0 = float3(-244.517456f, 69.1123047f, -333.023132f); + float b0 = (-60.0243835f); + float3 r0 = float3(4.07363558f, -1.15140378f, 5.548131f); + TestUtils.AreEqual(a0 / b0, r0); + + float3 a1 = float3(257.396851f, 154.34436f, 131.526611f); + float b1 = (403.2456f); + float3 r1 = float3(0.6383129f, 0.38275522f, 0.326169968f); + TestUtils.AreEqual(a1 / b1, r1); + + float3 a2 = float3(-261.8864f, -275.5387f, 210.557922f); + float b2 = (-348.9238f); + float3 r2 = float3(0.75055474f, 0.789681554f, -0.6034496f); + TestUtils.AreEqual(a2 / b2, r2); + + float3 a3 = float3(287.6424f, 491.7871f, -26.6315918f); + float b3 = (504.372253f); + float3 r3 = float3(0.570297837f, 0.9750479f, -0.05280146f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float3 b0 = float3(-422.676147f, 248.129639f, 449.391357f); + float3 r0 = float3(-0.09874622f, 0.168209136f, 0.0928759947f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (245.858154f); + float3 b1 = float3(-326.6206f, 163.715088f, 333.6645f); + float3 r1 = float3(-0.7527331f, 1.501744f, 0.736842453f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (38.2910767f); + float3 b2 = float3(-472.979767f, 192.230164f, -200.296875f); + float3 r2 = float3(-0.0809571147f, 0.19919391f, -0.191171616f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-490.181519f); + float3 b3 = float3(-211.10257f, -322.852356f, -137.985291f); + float3 r3 = float3(2.32200646f, 1.51828384f, 3.55241871f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3_operator_mod_wide_wide() + { + float3 a0 = float3(-442.309875f, 368.5005f, -1.09390259f); + float3 b0 = float3(-43.2450562f, -144.195862f, -62.6404724f); + float3 r0 = float3(-9.859314f, 80.1087646f, -1.09390259f); + TestUtils.AreEqual(a0 % b0, r0); + + float3 a1 = float3(-364.673828f, -197.343933f, -34.0349121f); + float3 b1 = float3(-336.828247f, -154.61026f, -154.029358f); + float3 r1 = float3(-27.8455811f, -42.7336731f, -34.0349121f); + TestUtils.AreEqual(a1 % b1, r1); + + float3 a2 = float3(-101.348572f, 208.318542f, -140.770325f); + float3 b2 = float3(487.0462f, -469.8291f, -145.203766f); + float3 r2 = float3(-101.348572f, 208.318542f, -140.770325f); + TestUtils.AreEqual(a2 % b2, r2); + + float3 a3 = float3(183.44696f, -463.368378f, 83.83911f); + float3 b3 = float3(-203.384f, -22.52008f, 224.69f); + float3 r3 = float3(183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3_operator_mod_wide_scalar() + { + float3 a0 = float3(-433.417f, -5.51412964f, 393.3944f); + float b0 = (-90.49924f); + float3 r0 = float3(-71.4200439f, -5.51412964f, 31.39746f); + TestUtils.AreEqual(a0 % b0, r0); + + float3 a1 = float3(299.41156f, -502.939026f, -450.807678f); + float b1 = (-120.80603f); + float3 r1 = float3(57.7995f, -19.7149048f, -88.38959f); + TestUtils.AreEqual(a1 % b1, r1); + + float3 a2 = float3(186.094788f, -318.7815f, 433.4547f); + float b2 = (-84.47363f); + float3 r2 = float3(17.147522f, -65.3605957f, 11.0865479f); + TestUtils.AreEqual(a2 % b2, r2); + + float3 a3 = float3(-54.60019f, -429.714661f, 222.361877f); + float b3 = (-172.338867f); + float3 r3 = float3(-54.60019f, -85.03693f, 50.02301f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float3 b0 = float3(-159.140259f, 230.17334f, 14.7793579f); + float3 r0 = float3(-78.14188f, -166.249054f, -12.1590881f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (-303.1565f); + float3 b1 = float3(399.635f, 206.6947f, 397.0448f); + float3 r1 = float3(-303.1565f, -96.46179f, -303.1565f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (-393.890656f); + float3 b2 = float3(-372.067078f, 201.012268f, -95.566864f); + float3 r2 = float3(-21.8235779f, -192.878387f, -11.6231995f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-258.951477f); + float3 b3 = float3(106.983582f, 469.323547f, -34.80899f); + float3 r3 = float3(-44.984314f, -258.951477f, -15.2885437f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3_operator_plus() + { + float3 a0 = float3(271.670837f, -79.08023f, -330.985046f); + float3 r0 = float3(271.670837f, -79.08023f, -330.985046f); + TestUtils.AreEqual(+a0, r0); + + float3 a1 = float3(31.824707f, 319.222168f, 190.324646f); + float3 r1 = float3(31.824707f, 319.222168f, 190.324646f); + TestUtils.AreEqual(+a1, r1); + + float3 a2 = float3(-350.3086f, 102.054382f, -107.00351f); + float3 r2 = float3(-350.3086f, 102.054382f, -107.00351f); + TestUtils.AreEqual(+a2, r2); + + float3 a3 = float3(-428.7762f, 234.773926f, 34.28363f); + float3 r3 = float3(-428.7762f, 234.773926f, 34.28363f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float3_operator_neg() + { + float3 a0 = float3(420.227173f, -196.2575f, -335.426819f); + float3 r0 = float3(-420.227173f, 196.2575f, 335.426819f); + TestUtils.AreEqual(-a0, r0); + + float3 a1 = float3(509.04364f, -498.575317f, -495.837952f); + float3 r1 = float3(-509.04364f, 498.575317f, 495.837952f); + TestUtils.AreEqual(-a1, r1); + + float3 a2 = float3(-270.859467f, 268.2367f, -180.600525f); + float3 r2 = float3(270.859467f, -268.2367f, 180.600525f); + TestUtils.AreEqual(-a2, r2); + + float3 a3 = float3(223.381287f, -395.681549f, -349.149475f); + float3 r3 = float3(-223.381287f, 395.681549f, 349.149475f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float3_operator_prefix_inc() + { + float3 a0 = float3(-99.79556f, 458.741821f, 96.1790161f); + float3 r0 = float3(-98.79556f, 459.741821f, 97.1790161f); + TestUtils.AreEqual(++a0, r0); + + float3 a1 = float3(-48.55246f, -299.230164f, -323.614868f); + float3 r1 = float3(-47.55246f, -298.230164f, -322.614868f); + TestUtils.AreEqual(++a1, r1); + + float3 a2 = float3(-456.8903f, -305.584778f, 64.0965f); + float3 r2 = float3(-455.8903f, -304.584778f, 65.0965f); + TestUtils.AreEqual(++a2, r2); + + float3 a3 = float3(148.679321f, -115.559235f, -326.8778f); + float3 r3 = float3(149.679321f, -114.559235f, -325.8778f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float3_operator_postfix_inc() + { + float3 a0 = float3(322.943542f, 472.0525f, 203.48761f); + float3 r0 = float3(322.943542f, 472.0525f, 203.48761f); + TestUtils.AreEqual(a0++, r0); + + float3 a1 = float3(-49.8545837f, 455.3366f, 271.454651f); + float3 r1 = float3(-49.8545837f, 455.3366f, 271.454651f); + TestUtils.AreEqual(a1++, r1); + + float3 a2 = float3(55.7368774f, -174.173f, -427.401062f); + float3 r2 = float3(55.7368774f, -174.173f, -427.401062f); + TestUtils.AreEqual(a2++, r2); + + float3 a3 = float3(215.110229f, -333.050446f, 241.4649f); + float3 r3 = float3(215.110229f, -333.050446f, 241.4649f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float3_operator_prefix_dec() + { + float3 a0 = float3(-416.201233f, -96.63788f, -50.14566f); + float3 r0 = float3(-417.201233f, -97.63788f, -51.14566f); + TestUtils.AreEqual(--a0, r0); + + float3 a1 = float3(-207.316437f, -304.400818f, 337.968933f); + float3 r1 = float3(-208.316437f, -305.400818f, 336.968933f); + TestUtils.AreEqual(--a1, r1); + + float3 a2 = float3(246.088989f, -227.44281f, 298.2848f); + float3 r2 = float3(245.088989f, -228.44281f, 297.2848f); + TestUtils.AreEqual(--a2, r2); + + float3 a3 = float3(326.5078f, -478.031372f, -326.452972f); + float3 r3 = float3(325.5078f, -479.031372f, -327.452972f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float3_operator_postfix_dec() + { + float3 a0 = float3(-376.5924f, 16.9697266f, -0.2506714f); + float3 r0 = float3(-376.5924f, 16.9697266f, -0.2506714f); + TestUtils.AreEqual(a0--, r0); + + float3 a1 = float3(-202.323273f, 47.85663f, -281.1117f); + float3 r1 = float3(-202.323273f, 47.85663f, -281.1117f); + TestUtils.AreEqual(a1--, r1); + + float3 a2 = float3(-262.0626f, 450.1281f, -129.232666f); + float3 r2 = float3(-262.0626f, 450.1281f, -129.232666f); + TestUtils.AreEqual(a2--, r2); + + float3 a3 = float3(-332.154968f, 205.461121f, -230.227783f); + float3 r3 = float3(-332.154968f, 205.461121f, -230.227783f); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void float3_shuffle_result_1() + { + float3 a = float3(0, 1, 2); + float3 b = float3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (5)); + } + + [TestCompiler] + public static void float3_shuffle_result_2() + { + float3 a = float3(0, 1, 2); + float3 b = float3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), float2(4, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), float2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), float2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), float2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY), float2(5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), float2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftZ), float2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), float2(5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), float2(4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), float2(4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), float2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY), float2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), float2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), float2(1, 2)); + } + + [TestCompiler] + public static void float3_shuffle_result_3() + { + float3 a = float3(0, 1, 2); + float3 b = float3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.RightX), float3(1, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), float3(4, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX), float3(2, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY), float3(4, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.LeftZ), float3(5, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.LeftY), float3(2, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightX), float3(2, 4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftY, ShuffleComponent.RightZ), float3(2, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ), float3(4, 4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), float3(4, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float3(5, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightX), float3(5, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightZ), float3(4, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightY), float3(2, 3, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), float3(4, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightZ), float3(4, 0, 5)); + } + + [TestCompiler] + public static void float3_shuffle_result_4() + { + float3 a = float3(0, 1, 2); + float3 b = float3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY), float4(1, 2, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightY), float4(4, 2, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.LeftY), float4(4, 4, 5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float4(3, 3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), float4(4, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightZ), float4(3, 4, 3, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightZ), float4(1, 5, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), float4(4, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightZ, ShuffleComponent.LeftZ, ShuffleComponent.LeftX), float4(3, 5, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), float4(4, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float4(0, 2, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.RightZ), float4(1, 4, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), float4(2, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), float4(3, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(5, 3, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(2, 5, 0, 4)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3.gen.cs.meta new file mode 100644 index 0000000..b9523b2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d920c9d9a3133d242af38fd80330960f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x2.gen.cs new file mode 100644 index 0000000..c32f143 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x2.gen.cs @@ -0,0 +1,943 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat3x2 + { + [TestCompiler] + public static void float3x2_zero() + { + TestUtils.AreEqual(float3x2.zero.c0.x, 0.0f); + TestUtils.AreEqual(float3x2.zero.c0.y, 0.0f); + TestUtils.AreEqual(float3x2.zero.c0.z, 0.0f); + TestUtils.AreEqual(float3x2.zero.c1.x, 0.0f); + TestUtils.AreEqual(float3x2.zero.c1.y, 0.0f); + TestUtils.AreEqual(float3x2.zero.c1.z, 0.0f); + } + + [TestCompiler] + public static void float3x2_operator_equal_wide_wide() + { + float3x2 a0 = float3x2(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f); + float3x2 b0 = float3x2(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x2 a1 = float3x2(177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float3x2 b1 = float3x2(-72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x2 a2 = float3x2(188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f); + float3x2 b2 = float3x2(-494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x2 a3 = float3x2(269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float3x2 b3 = float3x2(89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_equal_wide_scalar() + { + float3x2 a0 = float3x2(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f); + float b0 = (-155.815765f); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x2 a1 = float3x2(314.671265f, 290.04895f, -132.6352f, -65.66748f, -69.68326f, -191.190765f); + float b1 = (386.365173f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x2 a2 = float3x2(186.845215f, -319.144043f, -49.70108f, -300.8819f, 333.396851f, 386.3775f); + float b2 = (-232.895691f); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x2 a3 = float3x2(-296.7019f, 141.542358f, -227.323334f, 83.87286f, -410.91687f, 110.501282f); + float b3 = (-309.1172f); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float3x2 b0 = float3x2(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (428.311951f); + float3x2 b1 = float3x2(-489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f, -160.470612f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (316.668823f); + float3x2 b2 = float3x2(390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f, -257.012939f); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-245.054962f); + float3x2 b3 = float3x2(326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f, -336.612427f); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_not_equal_wide_wide() + { + float3x2 a0 = float3x2(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f); + float3x2 b0 = float3x2(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x2 a1 = float3x2(366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f); + float3x2 b1 = float3x2(-457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x2 a2 = float3x2(398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f); + float3x2 b2 = float3x2(-406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x2 a3 = float3x2(62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float3x2 b3 = float3x2(-184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_not_equal_wide_scalar() + { + float3x2 a0 = float3x2(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f); + float b0 = (-393.413544f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x2 a1 = float3x2(-58.92328f, 492.20105f, -165.241516f, 270.341f, -380.243256f, 501.899048f); + float b1 = (-398.176849f); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x2 a2 = float3x2(-134.345459f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f, -0.449920654f); + float b2 = (458.400452f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x2 a3 = float3x2(350.461426f, 242.664f, 382.677063f, -468.967957f, -497.459473f, -80.93225f); + float b3 = (202.221008f); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float3x2 b0 = float3x2(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-338.100128f); + float3x2 b1 = float3x2(-152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f, -488.0213f); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (489.740784f); + float3x2 b2 = float3x2(270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f, 358.7472f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-15.4140625f); + float3x2 b3 = float3x2(-342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f, -239.231018f); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_wide_wide() + { + float3x2 a0 = float3x2(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f); + float3x2 b0 = float3x2(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f); + bool3x2 r0 = bool3x2(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x2 a1 = float3x2(3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f); + float3x2 b1 = float3x2(231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x2 a2 = float3x2(-19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f); + float3x2 b2 = float3x2(-185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f); + bool3x2 r2 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float3x2 a3 = float3x2(-140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float3x2 b3 = float3x2(7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool3x2 r3 = bool3x2(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_wide_scalar() + { + float3x2 a0 = float3x2(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f); + float b0 = (199.0675f); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x2 a1 = float3x2(282.9666f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f, -68.0881958f); + float b1 = (258.2791f); + bool3x2 r1 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x2 a2 = float3x2(12.7880249f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f, -48.9205322f); + float b2 = (-66.703064f); + bool3x2 r2 = bool3x2(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float3x2 a3 = float3x2(359.604431f, 241.2768f, -183.437775f, 423.027161f, -334.622742f, -98.31558f); + float b3 = (-8.150085f); + bool3x2 r3 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float3x2 b0 = float3x2(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-299.744324f); + float3x2 b1 = float3x2(31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f, 389.231445f); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (488.745544f); + float3x2 b2 = float3x2(-221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f, -340.857544f); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-95.1117249f); + float3x2 b3 = float3x2(15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f, 122.164795f); + bool3x2 r3 = bool3x2(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_wide_wide() + { + float3x2 a0 = float3x2(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f); + float3x2 b0 = float3x2(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f); + bool3x2 r0 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3x2 a1 = float3x2(-396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float3x2 b1 = float3x2(-391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float3x2 a2 = float3x2(-425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f); + float3x2 b2 = float3x2(-206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f); + bool3x2 r2 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x2 a3 = float3x2(-345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float3x2 b3 = float3x2(226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_wide_scalar() + { + float3x2 a0 = float3x2(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f); + float b0 = (-302.816956f); + bool3x2 r0 = bool3x2(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3x2 a1 = float3x2(173.575073f, 501.306824f, -367.027771f, -86.12451f, -489.090576f, -172.518158f); + float b1 = (69.26929f); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float3x2 a2 = float3x2(-18.1496277f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f, -481.4781f); + float b2 = (-236.414948f); + bool3x2 r2 = bool3x2(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x2 a3 = float3x2(185.59436f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f, -7.34790039f); + float b3 = (33.29474f); + bool3x2 r3 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float3x2 b0 = float3x2(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (176.409241f); + float3x2 b1 = float3x2(-140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f, 230.181274f); + bool3x2 r1 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-102.58783f); + float3x2 b2 = float3x2(392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f, 374.048035f); + bool3x2 r2 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-368.99762f); + float3x2 b3 = float3x2(-210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f, -361.524841f); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_equal_wide_wide() + { + float3x2 a0 = float3x2(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f); + float3x2 b0 = float3x2(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f); + bool3x2 r0 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x2 a1 = float3x2(294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f); + float3x2 b1 = float3x2(74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool3x2 r1 = bool3x2(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x2 a2 = float3x2(84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f); + float3x2 b2 = float3x2(-280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f); + bool3x2 r2 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x2 a3 = float3x2(307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float3x2 b3 = float3x2(376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_equal_wide_scalar() + { + float3x2 a0 = float3x2(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f); + float b0 = (292.924255f); + bool3x2 r0 = bool3x2(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x2 a1 = float3x2(-410.870056f, 183.821167f, 320.4425f, -257.870056f, -386.801758f, -182.938812f); + float b1 = (-483.902649f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x2 a2 = float3x2(349.250122f, 373.5691f, 259.1515f, 450.130066f, -128.525543f, -43.8748779f); + float b2 = (485.311584f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x2 a3 = float3x2(457.385742f, 479.451843f, -499.516449f, -398.132935f, 402.484863f, 87.91608f); + float b3 = (-77.6383057f); + bool3x2 r3 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float3x2 b0 = float3x2(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (288.5443f); + float3x2 b1 = float3x2(304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f, 104.883484f); + bool3x2 r1 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-488.685852f); + float3x2 b2 = float3x2(-480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f, -55.24353f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-455.80484f); + float3x2 b3 = float3x2(131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f, -116.019989f); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_equal_wide_wide() + { + float3x2 a0 = float3x2(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f); + float3x2 b0 = float3x2(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f); + bool3x2 r0 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x2 a1 = float3x2(-122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float3x2 b1 = float3x2(-373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x2 a2 = float3x2(349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f); + float3x2 b2 = float3x2(73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f); + bool3x2 r2 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x2 a3 = float3x2(-156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float3x2 b3 = float3x2(254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool3x2 r3 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_equal_wide_scalar() + { + float3x2 a0 = float3x2(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f); + float b0 = (189.205139f); + bool3x2 r0 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x2 a1 = float3x2(53.8151245f, -221.505463f, 252.994324f, -116.440369f, -395.3633f, 164.772583f); + float b1 = (-123.332947f); + bool3x2 r1 = bool3x2(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x2 a2 = float3x2(-287.007324f, 184.195557f, 273.012268f, -418.1424f, 249.3841f, 396.392151f); + float b2 = (355.837036f); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x2 a3 = float3x2(332.6654f, -335.12146f, -302.0869f, 254.442261f, 179.005066f, 71.1767f); + float b3 = (243.761414f); + bool3x2 r3 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float3x2 b0 = float3x2(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-455.612579f); + float3x2 b1 = float3x2(276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f, 67.14099f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-74.56064f); + float3x2 b2 = float3x2(-367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f, -264.310181f); + bool3x2 r2 = bool3x2(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (243.11377f); + float3x2 b3 = float3x2(-22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f, -400.47052f); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_add_wide_wide() + { + float3x2 a0 = float3x2(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f); + float3x2 b0 = float3x2(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f); + float3x2 r0 = float3x2(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x2 a1 = float3x2(-470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f); + float3x2 b1 = float3x2(267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float3x2 r1 = float3x2(-203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x2 a2 = float3x2(491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f); + float3x2 b2 = float3x2(462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f); + float3x2 r2 = float3x2(953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x2 a3 = float3x2(-36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float3x2 b3 = float3x2(-141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float3x2 r3 = float3x2(-178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_add_wide_scalar() + { + float3x2 a0 = float3x2(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f); + float b0 = (500.997253f); + float3x2 r0 = float3x2(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x2 a1 = float3x2(-2.79125977f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f, -2.664978f); + float b1 = (-478.4148f); + float3x2 r1 = float3x2(-481.206055f, -35.29956f, -210.322571f, -437.09375f, -949.6709f, -481.079773f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x2 a2 = float3x2(78.98584f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f, -197.800751f); + float b2 = (202.14801f); + float3x2 r2 = float3x2(281.13385f, 513.8735f, 212.493835f, 50.9035645f, 557.3808f, 4.34725952f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x2 a3 = float3x2(255.955261f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f, -160.5841f); + float b3 = (244.1471f); + float3x2 r3 = float3x2(500.102356f, 62.52054f, 241.692169f, 545.0477f, 7.65515137f, 83.56299f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float3x2 b0 = float3x2(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f); + float3x2 r0 = float3x2(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (180.318115f); + float3x2 b1 = float3x2(337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f, -138.614349f); + float3x2 r1 = float3x2(517.897461f, 143.263092f, 411.1231f, 40.14377f, 198.342285f, 41.7037659f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (26.9041748f); + float3x2 b2 = float3x2(-374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f, -504.916138f); + float3x2 r2 = float3x2(-347.633423f, 181.371765f, 295.288025f, -164.058838f, 215.521423f, -478.011963f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (20.45404f); + float3x2 b3 = float3x2(197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f, 480.884583f); + float3x2 r3 = float3x2(218.399414f, 271.865967f, -400.636353f, 131.899414f, -52.81485f, 501.338623f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_sub_wide_wide() + { + float3x2 a0 = float3x2(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f); + float3x2 b0 = float3x2(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f); + float3x2 r0 = float3x2(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x2 a1 = float3x2(146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f); + float3x2 b1 = float3x2(-125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f); + float3x2 r1 = float3x2(272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x2 a2 = float3x2(-470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f); + float3x2 b2 = float3x2(-446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f); + float3x2 r2 = float3x2(-23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x2 a3 = float3x2(-427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float3x2 b3 = float3x2(-80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float3x2 r3 = float3x2(-347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_sub_wide_scalar() + { + float3x2 a0 = float3x2(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f); + float b0 = (-291.5904f); + float3x2 r0 = float3x2(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x2 a1 = float3x2(204.358337f, -377.9257f, -470.262054f, 400.5349f, 461.507568f, -246.287262f); + float b1 = (180.269714f); + float3x2 r1 = float3x2(24.088623f, -558.195435f, -650.531738f, 220.2652f, 281.237854f, -426.556976f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x2 a2 = float3x2(21.6052856f, -121.427368f, -122.718414f, -122.938721f, 360.15094f, 342.874573f); + float b2 = (246.350708f); + float3x2 r2 = float3x2(-224.745422f, -367.778076f, -369.069122f, -369.289429f, 113.800232f, 96.5238647f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x2 a3 = float3x2(18.92981f, 97.0437f, 485.914978f, -205.75766f, 253.443237f, -121.163055f); + float b3 = (164.602356f); + float3x2 r3 = float3x2(-145.672546f, -67.5586548f, 321.312622f, -370.360016f, 88.84088f, -285.7654f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float3x2 b0 = float3x2(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f); + float3x2 r0 = float3x2(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-64.233f); + float3x2 b1 = float3x2(-66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f, 169.131409f); + float3x2 r1 = float3x2(1.80871582f, -405.437958f, 321.542053f, -139.627777f, -419.176727f, -233.36441f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (88.21661f); + float3x2 b2 = float3x2(1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f, 4.06555176f); + float3x2 r2 = float3x2(86.48163f, -34.32141f, 353.161621f, 139.0538f, 435.866943f, 84.15106f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-79.09543f); + float3x2 b3 = float3x2(354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f, 432.1847f); + float3x2 r3 = float3x2(-433.453766f, 213.397064f, -25.8864441f, 167.252167f, -378.2988f, -511.280121f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mul_wide_wide() + { + float3x2 a0 = float3x2(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f); + float3x2 b0 = float3x2(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f); + float3x2 r0 = float3x2(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x2 a1 = float3x2(494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f); + float3x2 b1 = float3x2(207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f); + float3x2 r1 = float3x2(102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x2 a2 = float3x2(467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f); + float3x2 b2 = float3x2(184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f); + float3x2 r2 = float3x2(86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x2 a3 = float3x2(-104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float3x2 b3 = float3x2(254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float3x2 r3 = float3x2(-26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mul_wide_scalar() + { + float3x2 a0 = float3x2(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f); + float b0 = (192.211182f); + float3x2 r0 = float3x2(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x2 a1 = float3x2(-477.3105f, -46.729187f, -238.405f, 422.08252f, -48.83484f, 355.30835f); + float b1 = (-438.272919f); + float3x2 r1 = float3x2(209192.266f, 20480.1367f, 104486.453f, -184987.344f, 21402.9883f, -155722.031f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x2 a2 = float3x2(119.356628f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f, -130.474121f); + float b2 = (-196.995819f); + float3x2 r2 = float3x2(-23512.7559f, -19352.0859f, 64132.4141f, -10625.4258f, 17227.4785f, 25702.8555f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x2 a3 = float3x2(-222.594574f, 293.361084f, 174.381958f, -327.120056f, 56.62915f, 257.541565f); + float b3 = (126.015015f); + float3x2 r3 = float3x2(-28050.2578f, 36967.9023f, 21974.7441f, -41222.04f, 7136.123f, 32454.1035f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float3x2 b0 = float3x2(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f); + float3x2 r0 = float3x2(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (159.748108f); + float3x2 b1 = float3x2(-351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f, -395.9921f); + float3x2 r1 = float3x2(-56202.93f, 78564.37f, 7971.75635f, 67807.09f, 25578.5645f, -63258.99f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (125.20166f); + float3x2 b2 = float3x2(-265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f, 356.517761f); + float3x2 r2 = float3x2(-33180.418f, 39395.47f, -36648.03f, -4723.84473f, 20703.627f, 44636.6172f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-188.813324f); + float3x2 b3 = float3x2(504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f, 53.7483521f); + float3x2 r3 = float3x2(-95334.81f, -7660.56152f, 39041.9f, 11631.4092f, -22463.4277f, -10148.4053f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_div_wide_wide() + { + float3x2 a0 = float3x2(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f); + float3x2 b0 = float3x2(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f); + float3x2 r0 = float3x2(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x2 a1 = float3x2(360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f); + float3x2 b1 = float3x2(-93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f); + float3x2 r1 = float3x2(-3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x2 a2 = float3x2(-136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f); + float3x2 b2 = float3x2(397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f); + float3x2 r2 = float3x2(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x2 a3 = float3x2(-204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float3x2 b3 = float3x2(404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float3x2 r3 = float3x2(-0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_div_wide_scalar() + { + float3x2 a0 = float3x2(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f); + float b0 = (-60.0243835f); + float3x2 r0 = float3x2(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x2 a1 = float3x2(131.526611f, -348.9238f, -275.5387f, 210.557922f, 287.6424f, 504.372253f); + float b1 = (-261.8864f); + float3x2 r1 = float3x2(-0.5022277f, 1.33234787f, 1.05213058f, -0.8040047f, -1.0983479f, -1.92591989f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x2 a2 = float3x2(491.7871f, -253.236664f, 272.895142f, 178.096191f, -460.87558f, -502.646027f); + float b2 = (-26.6315918f); + float3x2 r2 = float3x2(-18.4663048f, 9.508882f, -10.2470455f, -6.687403f, 17.3055973f, 18.874052f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x2 a3 = float3x2(-84.3248f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f, 81.6464844f); + float b3 = (-174.690338f); + float3x2 r3 = float3x2(0.482710153f, -0.479684949f, -1.12795055f, -1.8156029f, -2.30915546f, -0.467378378f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float3x2 b0 = float3x2(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f); + float3x2 r0 = float3x2(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (333.6645f); + float3x2 b1 = float3x2(38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f, -211.10257f); + float3x2 r1 = float3x2(8.713897f, -0.7054519f, 1.73575509f, -1.66584969f, -0.6806958f, -1.58058f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-322.852356f); + float3x2 b2 = float3x2(-137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f, -488.647156f); + float3x2 r2 = float3x2(2.339759f, -3.8284533f, -0.909280658f, -1.16794693f, 0.8429829f, 0.6607065f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (344.846f); + float3x2 b3 = float3x2(168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f, -344.194275f); + float3x2 r3 = float3x2(2.04226136f, -7.802725f, 0.8199867f, -1.96364558f, -37.3995972f, -1.00189352f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mod_wide_wide() + { + float3x2 a0 = float3x2(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f); + float3x2 b0 = float3x2(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f); + float3x2 r0 = float3x2(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x2 a1 = float3x2(-101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f); + float3x2 b1 = float3x2(487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f); + float3x2 r1 = float3x2(-101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x2 a2 = float3x2(-64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f); + float3x2 b2 = float3x2(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f); + float3x2 r2 = float3x2(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x2 a3 = float3x2(142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float3x2 b3 = float3x2(4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float3x2 r3 = float3x2(1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mod_wide_scalar() + { + float3x2 a0 = float3x2(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f); + float b0 = (-90.49924f); + float3x2 r0 = float3x2(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x2 a1 = float3x2(-450.807678f, -84.47363f, -318.7815f, 433.4547f, -54.60019f, -172.338867f); + float b1 = (186.094788f); + float3x2 r1 = float3x2(-78.6181f, -84.47363f, -132.6867f, 61.2651367f, -54.60019f, -172.338867f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x2 a2 = float3x2(-429.714661f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f, -75.3564148f); + float b2 = (222.361877f); + float3x2 r2 = float3x2(-207.352783f, 5.79638672f, 32.1489258f, -210.731812f, -203.082611f, -75.3564148f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x2 a3 = float3x2(252.289124f, 5.337219f, -279.060425f, 483.5506f, -331.993347f, 336f); + float b3 = (-69.4039f); + float3x2 r3 = float3x2(44.0774231f, 5.337219f, -1.44482422f, 67.1272f, -54.3777466f, 58.3844f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float3x2 b0 = float3x2(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f); + float3x2 r0 = float3x2(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (397.0448f); + float3x2 b1 = float3x2(-393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f, 106.983582f); + float3x2 r1 = float3x2(3.15414429f, 24.9777222f, 196.032532f, 14.7773438f, 138.093323f, 76.0940552f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (469.323547f); + float3x2 b2 = float3x2(-34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f, 4.506653f); + float3x2 r2 = float3x2(16.8066711f, 99.65045f, 94.5293f, 73.7054138f, 109.044952f, 0.631652832f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-111.401947f); + float3x2 b3 = float3x2(391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f, -433.523071f); + float3x2 r3 = float3x2(-111.401947f, -111.401947f, -111.401947f, -111.401947f, -111.401947f, -111.401947f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_plus() + { + float3x2 a0 = float3x2(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f); + float3x2 r0 = float3x2(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f); + TestUtils.AreEqual(+a0, r0); + + float3x2 a1 = float3x2(190.324646f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f); + float3x2 r1 = float3x2(190.324646f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f); + TestUtils.AreEqual(+a1, r1); + + float3x2 a2 = float3x2(234.773926f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f); + float3x2 r2 = float3x2(234.773926f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f); + TestUtils.AreEqual(+a2, r2); + + float3x2 a3 = float3x2(301.7851f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f); + float3x2 r3 = float3x2(301.7851f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float3x2_operator_neg() + { + float3x2 a0 = float3x2(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f); + float3x2 r0 = float3x2(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f); + TestUtils.AreEqual(-a0, r0); + + float3x2 a1 = float3x2(-495.837952f, 19.68689f, 268.2367f, -180.600525f, 223.381287f, -410.392059f); + float3x2 r1 = float3x2(495.837952f, -19.68689f, -268.2367f, 180.600525f, -223.381287f, 410.392059f); + TestUtils.AreEqual(-a1, r1); + + float3x2 a2 = float3x2(-395.681549f, -110.9393f, -238.2196f, 292.543518f, 469.2926f, 48.29071f); + float3x2 r2 = float3x2(395.681549f, 110.9393f, 238.2196f, -292.543518f, -469.2926f, -48.29071f); + TestUtils.AreEqual(-a2, r2); + + float3x2 a3 = float3x2(88.7237549f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f, 196.387573f); + float3x2 r3 = float3x2(-88.7237549f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f, -196.387573f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float3x2_operator_prefix_inc() + { + float3x2 a0 = float3x2(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f); + float3x2 r0 = float3x2(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f); + TestUtils.AreEqual(++a0, r0); + + float3x2 a1 = float3x2(-323.614868f, -76.50766f, -305.584778f, 64.0965f, 148.679321f, 363.2849f); + float3x2 r1 = float3x2(-322.614868f, -75.50766f, -304.584778f, 65.0965f, 149.679321f, 364.2849f); + TestUtils.AreEqual(++a1, r1); + + float3x2 a2 = float3x2(-115.559235f, -179.894653f, 339.8766f, -38.41043f, -153.373688f, 261.625549f); + float3x2 r2 = float3x2(-114.559235f, -178.894653f, 340.8766f, -37.41043f, -152.373688f, 262.625549f); + TestUtils.AreEqual(++a2, r2); + + float3x2 a3 = float3x2(155.030823f, 301.3058f, -221.355408f, -429.698151f, -271.2893f, -264.380066f); + float3x2 r3 = float3x2(156.030823f, 302.3058f, -220.355408f, -428.698151f, -270.2893f, -263.380066f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float3x2_operator_postfix_inc() + { + float3x2 a0 = float3x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f); + float3x2 r0 = float3x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f); + TestUtils.AreEqual(a0++, r0); + + float3x2 a1 = float3x2(271.454651f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f); + float3x2 r1 = float3x2(271.454651f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f); + TestUtils.AreEqual(a1++, r1); + + float3x2 a2 = float3x2(-333.050446f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f); + float3x2 r2 = float3x2(-333.050446f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f); + TestUtils.AreEqual(a2++, r2); + + float3x2 a3 = float3x2(-449.9273f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f); + float3x2 r3 = float3x2(-449.9273f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float3x2_operator_prefix_dec() + { + float3x2 a0 = float3x2(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f); + float3x2 r0 = float3x2(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f); + TestUtils.AreEqual(--a0, r0); + + float3x2 a1 = float3x2(337.968933f, 171.964539f, -227.44281f, 298.2848f, 326.5078f, 400.7209f); + float3x2 r1 = float3x2(336.968933f, 170.964539f, -228.44281f, 297.2848f, 325.5078f, 399.7209f); + TestUtils.AreEqual(--a1, r1); + + float3x2 a2 = float3x2(-478.031372f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f, -79.6352539f); + float3x2 r2 = float3x2(-479.031372f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f, -80.6352539f); + TestUtils.AreEqual(--a2, r2); + + float3x2 a3 = float3x2(-131.00415f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f, 181.4751f); + float3x2 r3 = float3x2(-132.00415f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f, 180.4751f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float3x2_operator_postfix_dec() + { + float3x2 a0 = float3x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f); + float3x2 r0 = float3x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f); + TestUtils.AreEqual(a0--, r0); + + float3x2 a1 = float3x2(-281.1117f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f); + float3x2 r1 = float3x2(-281.1117f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f); + TestUtils.AreEqual(a1--, r1); + + float3x2 a2 = float3x2(205.461121f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f); + float3x2 r2 = float3x2(205.461121f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f); + TestUtils.AreEqual(a2--, r2); + + float3x2 a3 = float3x2(-396.302063f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f); + float3x2 r3 = float3x2(-396.302063f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x2.gen.cs.meta new file mode 100644 index 0000000..e0a2446 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c2a01faa80e74147aeb6f5a1d9fc18d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x3.gen.cs new file mode 100644 index 0000000..a8c8d87 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x3.gen.cs @@ -0,0 +1,960 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat3x3 + { + [TestCompiler] + public static void float3x3_zero() + { + TestUtils.AreEqual(float3x3.zero.c0.x, 0.0f); + TestUtils.AreEqual(float3x3.zero.c0.y, 0.0f); + TestUtils.AreEqual(float3x3.zero.c0.z, 0.0f); + TestUtils.AreEqual(float3x3.zero.c1.x, 0.0f); + TestUtils.AreEqual(float3x3.zero.c1.y, 0.0f); + TestUtils.AreEqual(float3x3.zero.c1.z, 0.0f); + TestUtils.AreEqual(float3x3.zero.c2.x, 0.0f); + TestUtils.AreEqual(float3x3.zero.c2.y, 0.0f); + TestUtils.AreEqual(float3x3.zero.c2.z, 0.0f); + } + + [TestCompiler] + public static void float3x3_identity() + { + TestUtils.AreEqual(float3x3.identity.c0.x, 1.0f); + TestUtils.AreEqual(float3x3.identity.c0.y, 0.0f); + TestUtils.AreEqual(float3x3.identity.c0.z, 0.0f); + TestUtils.AreEqual(float3x3.identity.c1.x, 0.0f); + TestUtils.AreEqual(float3x3.identity.c1.y, 1.0f); + TestUtils.AreEqual(float3x3.identity.c1.z, 0.0f); + TestUtils.AreEqual(float3x3.identity.c2.x, 0.0f); + TestUtils.AreEqual(float3x3.identity.c2.y, 0.0f); + TestUtils.AreEqual(float3x3.identity.c2.z, 1.0f); + } + + [TestCompiler] + public static void float3x3_operator_equal_wide_wide() + { + float3x3 a0 = float3x3(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f, 168.15448f); + float3x3 b0 = float3x3(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f, 194.678345f); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x3 a1 = float3x3(350.729553f, 367.178467f, 46.9414673f, 188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f); + float3x3 b1 = float3x3(471.644836f, -404.044678f, -144.696747f, -494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x3 a2 = float3x3(269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f, -22.98944f, 487.260864f, -419.731964f); + float3x3 b2 = float3x3(89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f, -174.081818f, 395.101135f, 350.3393f); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x3 a3 = float3x3(337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f, -68.7284241f, 485.769958f, 413.169739f, -418.2693f); + float3x3 b3 = float3x3(-243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f, -468.330963f, 429.495728f, 477.389221f, -433.4254f); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_equal_wide_scalar() + { + float3x3 a0 = float3x3(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f, 290.04895f); + float b0 = (-155.815765f); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x3 a1 = float3x3(-132.6352f, -69.68326f, -191.190765f, 186.845215f, -232.895691f, -319.144043f, -49.70108f, -300.8819f, 333.396851f); + float b1 = (-65.66748f); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x3 a2 = float3x3(386.3775f, -309.1172f, 141.542358f, -227.323334f, 83.87286f, -410.91687f, 110.501282f, -390.103577f, 36.57434f); + float b2 = (-296.7019f); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x3 a3 = float3x3(-427.541443f, 175.8117f, -193.47995f, 291.051941f, 423.97168f, -429.8739f, -275.156952f, -56.3323669f, -95.83597f); + float b3 = (-268.170837f); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float3x3 b0 = float3x3(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f, -5.691559f); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-30.8659363f); + float3x3 b1 = float3x3(-362.9831f, 184.503174f, -160.470612f, 316.668823f, 390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-257.012939f); + float3x3 b2 = float3x3(-245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f, -336.612427f, 365.108154f, -405.390839f); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-473.995483f); + float3x3 b3 = float3x3(298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f, 39.3421021f, -350.403717f, -482.717224f, 239.9654f); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_not_equal_wide_wide() + { + float3x3 a0 = float3x3(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f, 332.4262f); + float3x3 b0 = float3x3(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f, 3.024231f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x3 a1 = float3x3(397.11322f, -431.374969f, 489.0108f, 398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f); + float3x3 b1 = float3x3(155.812744f, -19.8399048f, -6.01693726f, -406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x3 a2 = float3x3(62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f, -72.20682f, 444.749268f, 238.81781f); + float3x3 b2 = float3x3(-184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f, 415.071716f, -467.726135f, -433.784668f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x3 a3 = float3x3(365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f, -506.828369f, 245.477051f, -173.571045f, 390.338562f); + float3x3 b3 = float3x3(-212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f, 420.2151f, -239.176056f, -99.0791f, 4.476013f); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_not_equal_wide_scalar() + { + float3x3 a0 = float3x3(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f, 492.20105f); + float b0 = (-393.413544f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x3 a1 = float3x3(-165.241516f, -380.243256f, 501.899048f, -134.345459f, 458.400452f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f); + float b1 = (270.341f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x3 a2 = float3x3(-0.449920654f, 202.221008f, 242.664f, 382.677063f, -468.967957f, -497.459473f, -80.93225f, -328.587769f, -506.490326f); + float b2 = (350.461426f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x3 a3 = float3x3(449.348145f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f, 317.286072f, 401.939575f, 210.984863f, -147.096313f); + float b3 = (210.771f); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float3x3 b0 = float3x3(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f, -452.820679f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (209.439331f); + float3x3 b1 = float3x3(50.10797f, 372.4344f, -488.0213f, 489.740784f, 270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (358.7472f); + float3x3 b2 = float3x3(-15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f, -239.231018f, 411.386536f, 139.769348f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (334.522034f); + float3x3 b3 = float3x3(-223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f, 306.1256f, -178.330383f, 382.141968f, -340.8656f); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_wide_wide() + { + float3x3 a0 = float3x3(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f, -69.3696f); + float3x3 b0 = float3x3(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f, 473.2249f); + bool3x3 r0 = bool3x3(false, true, false, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x3 a1 = float3x3(-135.667969f, -194.787354f, -33.473877f, -19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f); + float3x3 b1 = float3x3(15.8916626f, 270.049927f, 490.914f, -185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f); + bool3x3 r1 = bool3x3(true, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x3 a2 = float3x3(-140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f, 269.1078f, 462.98822f, 223.884155f); + float3x3 b2 = float3x3(7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f, -382.315857f, 251.535156f, 143.17395f); + bool3x3 r2 = bool3x3(true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float3x3 a3 = float3x3(-287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f, -316.1384f, -417.522156f, 441.643433f, -191.950623f); + float3x3 b3 = float3x3(293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f, -114.556458f, 441.429749f, -113.333679f, 435.622925f); + bool3x3 r3 = bool3x3(true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_wide_scalar() + { + float3x3 a0 = float3x3(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f, -111.413147f); + float b0 = (199.0675f); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x3 a1 = float3x3(-288.081116f, -361.6429f, -68.0881958f, 12.7880249f, -66.703064f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f); + float b1 = (82.6654053f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x3 a2 = float3x3(-48.9205322f, -8.150085f, 241.2768f, -183.437775f, 423.027161f, -334.622742f, -98.31558f, 300.410156f, 297.925232f); + float b2 = (359.604431f); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float3x3 a3 = float3x3(-492.108154f, 95.78882f, -220.62146f, -455.37558f, 360.291565f, -296.372131f, 272.488342f, 360.207947f, 389.727417f); + float b3 = (-395.807251f); + bool3x3 r3 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float3x3 b0 = float3x3(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f, -458.904541f); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (13.6846924f); + float3x3 b1 = float3x3(-458.5069f, 248.276489f, 389.231445f, 488.745544f, -221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-340.857544f); + float3x3 b2 = float3x3(-95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f, 122.164795f, 96.75537f, -228.906342f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-143.9527f); + float3x3 b3 = float3x3(-230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f, 190.572144f, 108.2583f, 132.550781f, -431.515228f); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_wide_wide() + { + float3x3 a0 = float3x3(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f, 489.1399f); + float3x3 b0 = float3x3(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f, -77.6748657f); + bool3x3 r0 = bool3x3(true, true, false, true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3x3 a1 = float3x3(51.9188843f, 155.384766f, -135.631653f, -425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f); + float3x3 b1 = float3x3(-46.584198f, -415.377f, 71.46698f, -206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float3x3 a2 = float3x3(-345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f, 105.535217f, -170.9253f, 26.9802246f); + float3x3 b2 = float3x3(226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f, -352.1598f, 9.822632f, 186.721619f); + bool3x3 r2 = bool3x3(false, false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x3 a3 = float3x3(-188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f, -496.971832f, 339.888123f, 372.228333f, 313.2387f); + float3x3 b3 = float3x3(-325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f, 337.8899f, -249.505554f, -225.9013f, -249.491272f); + bool3x3 r3 = bool3x3(true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_wide_scalar() + { + float3x3 a0 = float3x3(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f, 501.306824f); + float b0 = (-302.816956f); + bool3x3 r0 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3x3 a1 = float3x3(-367.027771f, -489.090576f, -172.518158f, -18.1496277f, -236.414948f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f); + float b1 = (-86.12451f); + bool3x3 r1 = bool3x3(false, false, false, true, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float3x3 a2 = float3x3(-481.4781f, 33.29474f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f, -7.34790039f, -261.865967f, 52.24951f); + float b2 = (185.59436f); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x3 a3 = float3x3(16.3232422f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f, 290.573059f, 180.2633f, -482.863953f, 100.7063f); + float b3 = (-410.5101f); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float3x3 b0 = float3x3(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f, -182.48288f); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (-158.2933f); + float3x3 b1 = float3x3(-162.685333f, -193.328674f, 230.181274f, -102.58783f, 392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (374.048035f); + float3x3 b2 = float3x3(-368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f, -361.524841f, -372.452362f, -33.9095459f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-69.5952759f); + float3x3 b3 = float3x3(-460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f, -107.004181f, 331.636536f, -340.840149f, -384.2146f); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_equal_wide_wide() + { + float3x3 a0 = float3x3(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f, -456.12326f); + float3x3 b0 = float3x3(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f, 306.173279f); + bool3x3 r0 = bool3x3(false, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x3 a1 = float3x3(282.30127f, 421.881165f, -311.71283f, 84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f); + float3x3 b1 = float3x3(139.564819f, -505.752472f, -489.6268f, -280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f); + bool3x3 r1 = bool3x3(false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x3 a2 = float3x3(307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f, -77.04346f, 438.1848f, 260.282349f); + float3x3 b2 = float3x3(376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f, -216.002319f, 66.73425f, 99.21863f); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x3 a3 = float3x3(386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f, -383.302948f, -5.14703369f, 319.34375f, 465.022217f); + float3x3 b3 = float3x3(233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f, -202.748352f, -312.476471f, 310.0719f, -320.363037f); + bool3x3 r3 = bool3x3(false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_equal_wide_scalar() + { + float3x3 a0 = float3x3(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f, 183.821167f); + float b0 = (292.924255f); + bool3x3 r0 = bool3x3(false, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x3 a1 = float3x3(320.4425f, -386.801758f, -182.938812f, 349.250122f, 485.311584f, 373.5691f, 259.1515f, 450.130066f, -128.525543f); + float b1 = (-257.870056f); + bool3x3 r1 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x3 a2 = float3x3(-43.8748779f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f, 402.484863f, 87.91608f, -502.1736f, 125.950806f); + float b2 = (457.385742f); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x3 a3 = float3x3(-54.49362f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f, -24.8275757f, -451.0416f, 429.577576f, -308.4343f); + float b3 = (250.667419f); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float3x3 b0 = float3x3(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f, -148.618073f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (-506.3001f); + float3x3 b1 = float3x3(27.5812378f, 48.47113f, 104.883484f, -488.685852f, -480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-55.24353f); + float3x3 b2 = float3x3(-455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f, -116.019989f, -442.595245f, 297.333374f); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (36.6872559f); + float3x3 b3 = float3x3(485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f, -215.901672f, 39.5603638f, 22.947998f, -162.060577f); + bool3x3 r3 = bool3x3(true, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_equal_wide_wide() + { + float3x3 a0 = float3x3(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f, 152.946411f); + float3x3 b0 = float3x3(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f, -322.7154f); + bool3x3 r0 = bool3x3(false, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x3 a1 = float3x3(48.9862061f, 57.3381348f, 300.4649f, 349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f); + float3x3 b1 = float3x3(125.47821f, -25.77658f, 297.518921f, 73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x3 a2 = float3x3(-156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f, -223.492981f, 302.123f, 459.852722f); + float3x3 b2 = float3x3(254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f, 453.684875f, -154.011658f, -97.29007f); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x3 a3 = float3x3(-347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f, -132.2218f, 303.683777f, 265.210144f, 9.754395f); + float3x3 b3 = float3x3(151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f, -129.3533f, 8.107788f, 426.449524f, 410.693176f); + bool3x3 r3 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_equal_wide_scalar() + { + float3x3 a0 = float3x3(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f, -221.505463f); + float b0 = (189.205139f); + bool3x3 r0 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x3 a1 = float3x3(252.994324f, -395.3633f, 164.772583f, -287.007324f, 355.837036f, 184.195557f, 273.012268f, -418.1424f, 249.3841f); + float b1 = (-116.440369f); + bool3x3 r1 = bool3x3(true, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x3 a2 = float3x3(396.392151f, 243.761414f, -335.12146f, -302.0869f, 254.442261f, 179.005066f, 71.1767f, -331.271667f, 307.890564f); + float b2 = (332.6654f); + bool3x3 r2 = bool3x3(true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x3 a3 = float3x3(-388.578522f, -219.892578f, -491.681f, 30.99707f, 199.232239f, -74.50003f, -343.386475f, 216.031555f, -420.403137f); + float b3 = (150.605774f); + bool3x3 r3 = bool3x3(false, false, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float3x3 b0 = float3x3(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f, 79.39917f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (416.420532f); + float3x3 b1 = float3x3(379.2735f, -439.5147f, 67.14099f, -74.56064f, -367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f); + bool3x3 r1 = bool3x3(true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-264.310181f); + float3x3 b2 = float3x3(243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f, -400.47052f, -283.159637f, -42.31961f); + bool3x3 r2 = bool3x3(false, false, false, true, false, false, true, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-429.510376f); + float3x3 b3 = float3x3(499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f, 393.3009f, 18.02362f, -169.92392f, -285.884949f); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_add_wide_wide() + { + float3x3 a0 = float3x3(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f, -178.701447f); + float3x3 b0 = float3x3(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f, 244.495117f); + float3x3 r0 = float3x3(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f, 65.79367f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x3 a1 = float3x3(-420.033783f, 290.711121f, -446.529633f, 491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f); + float3x3 b1 = float3x3(-78.67575f, 352.2055f, 82.7791748f, 462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f); + float3x3 r1 = float3x3(-498.709534f, 642.9166f, -363.750458f, 953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x3 a2 = float3x3(-36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f, -62.8800049f, -79.5522461f, 413.098267f); + float3x3 b2 = float3x3(-141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f, 492.692444f, 439.043823f, -511.742767f); + float3x3 r2 = float3x3(-178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f, 429.812439f, 359.491577f, -98.6445f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x3 a3 = float3x3(-100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f, -261.126129f, -309.830353f, 378.363342f, -224.094f); + float3x3 b3 = float3x3(-399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f, -474.822937f, 311.390747f, 326.8454f, 475.2119f); + float3x3 r3 = float3x3(-499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f, -735.9491f, 1.56039429f, 705.20874f, 251.11792f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_add_wide_scalar() + { + float3x3 a0 = float3x3(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f, 443.115234f); + float b0 = (500.997253f); + float3x3 r0 = float3x3(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f, 944.1125f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x3 a1 = float3x3(268.092224f, -471.256073f, -2.664978f, 78.98584f, 202.14801f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f); + float b1 = (41.3210449f); + float3x3 r1 = float3x3(309.413269f, -429.935028f, 38.6560669f, 120.306885f, 243.469055f, 353.0465f, 51.66687f, -109.9234f, 396.553833f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x3 a2 = float3x3(-197.800751f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f, -160.5841f, -172.5422f, -242.9411f); + float b2 = (255.955261f); + float3x3 r2 = float3x3(58.15451f, 500.102356f, 74.3287048f, 253.500336f, 556.8559f, 19.4633179f, 95.3711548f, 83.4130554f, 13.01416f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x3 a3 = float3x3(466.344116f, 264.294f, 372.866821f, -198.837769f, -381.930969f, 402.160339f, -117.024841f, 497.373779f, 485.9093f); + float b3 = (237.987488f); + float3x3 r3 = float3x3(704.3316f, 502.2815f, 610.8543f, 39.14972f, -143.943481f, 640.1478f, 120.962646f, 735.361267f, 723.8968f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float3x3 b0 = float3x3(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f, -37.0550232f); + float3x3 r0 = float3x3(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f, -362.56778f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (230.805f); + float3x3 b1 = float3x3(-140.174347f, 18.02417f, -138.614349f, 26.9041748f, -374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f); + float3x3 r1 = float3x3(90.6306458f, 248.829163f, 92.19064f, 257.709167f, -143.7326f, 385.272583f, 499.188843f, 39.84198f, 419.422241f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-504.916138f); + float3x3 b2 = float3x3(20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f, 480.884583f, 438.05304f, 66.8443f); + float3x3 r2 = float3x3(-484.4621f, -306.970764f, -253.504211f, -926.006531f, -393.470764f, -578.185059f, -24.0315552f, -66.8631f, -438.071838f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (-270.796021f); + float3x3 b3 = float3x3(-44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f, -413.4803f, -260.720184f, 77.54236f, 183.9549f); + float3x3 r3 = float3x3(-314.817932f, -73.10132f, -251.682068f, 78.44177f, 95.43848f, -684.2763f, -531.516235f, -193.253662f, -86.8411255f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_sub_wide_wide() + { + float3x3 a0 = float3x3(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f, 110.7771f); + float3x3 b0 = float3x3(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f, -477.876434f); + float3x3 r0 = float3x3(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f, 588.653564f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x3 a1 = float3x3(-235.5416f, 78.87933f, -347.686157f, -470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f); + float3x3 b1 = float3x3(164.5f, 428.009583f, 72.62781f, -446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f); + float3x3 r1 = float3x3(-400.0416f, -349.130249f, -420.313965f, -23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x3 a2 = float3x3(-427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f, -308.939575f, 454.5334f, 26.1069336f); + float3x3 b2 = float3x3(-80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f, -221.325439f, -9.25882f, 288.173828f); + float3x3 r2 = float3x3(-347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f, -87.6141357f, 463.7922f, -262.0669f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x3 a3 = float3x3(-482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f, 388.481567f, 138.7182f, -385.5736f, -149.3648f); + float3x3 b3 = float3x3(217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f, 72.11908f, -154.880585f, -469.659973f, -320.615417f); + float3x3 r3 = float3x3(-700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f, 316.3625f, 293.5988f, 84.0863647f, 171.25061f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_sub_wide_scalar() + { + float3x3 a0 = float3x3(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f, -377.9257f); + float b0 = (-291.5904f); + float3x3 r0 = float3x3(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f, -86.3353f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x3 a1 = float3x3(-470.262054f, 461.507568f, -246.287262f, 21.6052856f, 246.350708f, -121.427368f, -122.718414f, -122.938721f, 360.15094f); + float b1 = (400.5349f); + float3x3 r1 = float3x3(-870.797f, 60.9726563f, -646.822144f, -378.929626f, -154.1842f, -521.9623f, -523.2533f, -523.473633f, -40.3839722f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x3 a2 = float3x3(342.874573f, 164.602356f, 97.0437f, 485.914978f, -205.75766f, 253.443237f, -121.163055f, 187.998413f, -450.820282f); + float b2 = (18.92981f); + float3x3 r2 = float3x3(323.944763f, 145.672546f, 78.11389f, 466.985168f, -224.687469f, 234.513428f, -140.092865f, 169.0686f, -469.7501f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x3 a3 = float3x3(-248.073364f, 441.5526f, 449.910583f, 354.886047f, 98.82147f, -189.193237f, 269.074829f, -59.11856f, 363.458374f); + float b3 = (-26.9960632f); + float3x3 r3 = float3x3(-221.0773f, 468.548676f, 476.906647f, 381.8821f, 125.817535f, -162.197174f, 296.0709f, -32.1224976f, 390.454437f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float3x3 b0 = float3x3(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f, 341.204956f); + float3x3 r0 = float3x3(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f, -46.61847f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-385.775055f); + float3x3 b1 = float3x3(75.3947754f, 354.943726f, 169.131409f, 88.21661f, 1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f); + float3x3 r1 = float3x3(-461.16983f, -740.71875f, -554.9065f, -473.991669f, -387.51004f, -508.31308f, -120.830048f, -334.937866f, -38.1247253f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (4.06555176f); + float3x3 b2 = float3x3(-79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f, 432.1847f, -163.88f, 176.742554f); + float3x3 r2 = float3x3(83.16098f, -350.2928f, 296.558044f, 57.2745361f, 250.413147f, -295.137817f, -428.119141f, 167.945557f, -172.677f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-104.98584f); + float3x3 b3 = float3x3(-445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f, -65.53128f, 440.380371f, 427.360657f, -81.47296f); + float3x3 r3 = float3x3(340.8118f, -76.11267f, 64.60239f, 165.373413f, -173.033447f, -39.45456f, -545.3662f, -532.3465f, -23.5128784f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mul_wide_wide() + { + float3x3 a0 = float3x3(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f, -239.4964f); + float3x3 b0 = float3x3(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f, 358.880737f); + float3x3 r0 = float3x3(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f, -85950.64f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x3 a1 = float3x3(236.675842f, -211.8562f, -216.654816f, 467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f); + float3x3 b1 = float3x3(214.853577f, 253.422791f, -307.7138f, 184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f); + float3x3 r1 = float3x3(50850.6523f, -53689.19f, 66667.68f, 86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x3 a2 = float3x3(-104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f, -83.11417f, 329.960266f, -316.972168f); + float3x3 b2 = float3x3(254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f, -189.746918f, -35.5184631f, 120.31665f); + float3x3 r2 = float3x3(-26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f, 15770.6572f, -11719.6816f, -38137.03f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x3 a3 = float3x3(474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f, -416.213074f, -103.279205f, -52.9519043f, -40.82834f); + float3x3 b3 = float3x3(-136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f, 296.680359f, 341.001831f, -257.0968f, 17.5936279f); + float3x3 r3 = float3x3(-64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f, -123482.242f, -35218.4f, 13613.7656f, -718.3186f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mul_wide_scalar() + { + float3x3 a0 = float3x3(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f, -46.729187f); + float b0 = (192.211182f); + float3x3 r0 = float3x3(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f, -8981.872f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x3 a1 = float3x3(-238.405f, -48.83484f, 355.30835f, 119.356628f, -196.995819f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f); + float b1 = (422.08252f); + float3x3 r1 = float3x3(-100626.586f, -20612.332f, 149969.438f, 50378.3477f, -83148.49f, 41463.707f, -137409.875f, 22765.998f, -36911.5352f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x3 a2 = float3x3(-130.474121f, 126.015015f, 293.361084f, 174.381958f, -327.120056f, 56.62915f, 257.541565f, -475.6087f, -452.6919f); + float b2 = (-222.594574f); + float3x3 r2 = float3x3(29042.832f, -28050.2578f, -65300.5859f, -38816.4766f, 72815.15f, -12605.3418f, -57327.3555f, 105867.914f, 100766.758f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x3 a3 = float3x3(-49.22061f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f, 120.014465f, -59.508667f, 319.489868f, -403.523163f); + float b3 = (141.600952f); + float3x3 r3 = float3x3(-6969.68555f, 61112.9453f, 25538.4629f, -5794.80127f, 39583.63f, 16994.1621f, -8426.484f, 45240.07f, -57139.2656f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float3x3 b0 = float3x3(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f, 491.801575f); + float3x3 r0 = float3x3(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f, -228458.891f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (49.90204f); + float3x3 b1 = float3x3(424.4626f, 160.1181f, -395.9921f, 125.20166f, -265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f); + float3x3 r1 = float3x3(21181.5488f, 7990.21973f, -19760.8125f, 6247.818f, -13224.8291f, 15701.9824f, -14606.9277f, -1882.79834f, 8251.913f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (356.517761f); + float3x3 b2 = float3x3(-188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f, 53.7483521f, -198.6694f, 96.236084f); + float3x3 r2 = float3x3(-67315.3047f, 180011.422f, 14464.6895f, -73719f, -21962.4531f, 42415.4961f, 19162.2422f, -70829.17f, 34309.875f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-20.2418823f); + float3x3 b3 = float3x3(-31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f, 340.7486f, 438.986877f, -227.165955f, 452.573f); + float3x3 r3 = float3x3(630.007568f, -787.215759f, 265.842743f, -10280.2705f, -1923.342f, -6897.393f, -8885.921f, 4598.2666f, -9160.93f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_div_wide_wide() + { + float3x3 a0 = float3x3(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f, -274.050476f); + float3x3 b0 = float3x3(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f, 484.362732f); + float3x3 r0 = float3x3(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f, -0.565795958f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x3 a1 = float3x3(127.538574f, -447.671753f, -137.458588f, -136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f); + float3x3 b1 = float3x3(-390.7818f, 402.02533f, 316.6507f, 397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f); + float3x3 r1 = float3x3(-0.326367736f, -1.11354113f, -0.434101641f, -0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x3 a2 = float3x3(-204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f, 315.37384f, -122.665985f, 447.526123f); + float3x3 b2 = float3x3(404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f, -218.209686f, 458.517517f, 119.587219f); + float3x3 r2 = float3x3(-0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f, -1.44527888f, -0.267527372f, 3.742257f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x3 a3 = float3x3(-210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f, -106.234528f, 414.312561f, 7.12084961f, 274.073669f); + float3x3 b3 = float3x3(356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f, 220.2555f, -67.2345f, 2.229187f, -166.210968f); + float3x3 r3 = float3x3(-0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f, -0.482324064f, -6.16220236f, 3.19437075f, -1.64895058f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_div_wide_scalar() + { + float3x3 a0 = float3x3(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f, -348.9238f); + float b0 = (-60.0243835f); + float3x3 r0 = float3x3(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f, 5.813034f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x3 a1 = float3x3(-275.5387f, 287.6424f, 504.372253f, 491.7871f, -26.6315918f, -253.236664f, 272.895142f, 178.096191f, -460.87558f); + float b1 = (210.557922f); + float3x3 r1 = float3x3(-1.30861235f, 1.36609626f, 2.39540863f, 2.335638f, -0.126481071f, -1.20269358f, 1.29605734f, 0.8458299f, -2.18883038f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x3 a2 = float3x3(-502.646027f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f, 81.6464844f, 60.6068726f, -413.5605f); + float b2 = (-84.3248f); + float3x3 r2 = float3x3(5.9608326f, 2.07163668f, -0.99373287f, -2.33670354f, -3.76126933f, -4.783731f, -0.9682381f, -0.7187313f, 4.90437555f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x3 a3 = float3x3(207.341f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f, 147.866211f, 506.658875f, -435.778564f, 210.672913f); + float b3 = (358.562134f); + float3x3 r3 = float3x3(0.578256845f, 0.05786747f, -0.191255882f, 0.8665233f, 1.16410756f, 0.412386566f, 1.41302955f, -1.21535015f, 0.587549269f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float3x3 b0 = float3x3(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f, -472.979767f); + float3x3 r0 = float3x3(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f, -0.0882440954f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (192.230164f); + float3x3 b1 = float3x3(-200.296875f, -490.181519f, -211.10257f, -322.852356f, -137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f); + float3x3 r1 = float3x3(-0.9597262f, -0.3921612f, -0.9106008f, -0.595412f, -1.39312065f, 2.279507f, 0.5413966f, 0.6954096f, -0.501922131f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-488.647156f); + float3x3 b2 = float3x3(344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f, -344.194275f, -449.0715f, 117.704895f); + float3x3 r2 = float3x3(-1.417001f, -2.89388657f, 11.056469f, -1.1619221f, 2.78248787f, 52.995266f, 1.41968417f, 1.08812773f, -4.15146f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-337.0274f); + float3x3 b3 = float3x3(239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f, -490.492126f, 485.755432f, -317.572266f, -451.6248f); + float3x3 r3 = float3x3(-1.407839f, 0.865604043f, -1.38856649f, -0.6791122f, -3.67349172f, 0.6871209f, -0.6938212f, 1.06126213f, 0.746255338f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mod_wide_wide() + { + float3x3 a0 = float3x3(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f); + float3x3 b0 = float3x3(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f, -145.203766f); + float3x3 r0 = float3x3(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x3 a1 = float3x3(183.44696f, -463.368378f, 83.83911f, -64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f); + float3x3 b1 = float3x3(-203.384f, -22.52008f, 224.69f, -435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f); + float3x3 r1 = float3x3(183.44696f, -12.9667664f, 83.83911f, -64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x3 a2 = float3x3(142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f, 156.985718f, 507.6183f, 270.830444f); + float3x3 b2 = float3x3(4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f, -131.4183f, -473.9876f, 76.2178345f); + float3x3 r2 = float3x3(1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f, 25.5674133f, 33.6306763f, 42.17694f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x3 a3 = float3x3(337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f, 7.76147461f, 238.094727f, 12.8520508f, -100.240662f); + float3x3 b3 = float3x3(92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f, 132.180237f, -179.877319f, 51.9685669f, 367.214233f); + float3x3 r3 = float3x3(61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f, 7.76147461f, 58.2174072f, 12.8520508f, -100.240662f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mod_wide_scalar() + { + float3x3 a0 = float3x3(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f, -84.47363f); + float b0 = (-90.49924f); + float3x3 r0 = float3x3(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f, -84.47363f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x3 a1 = float3x3(-318.7815f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f); + float b1 = (433.4547f); + float3x3 r1 = float3x3(-318.7815f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x3 a2 = float3x3(-75.3564148f, -69.4039f, 5.337219f, -279.060425f, 483.5506f, -331.993347f, 336f, 67.8396f, -124.720764f); + float b2 = (252.289124f); + float3x3 r2 = float3x3(-75.3564148f, -69.4039f, 5.337219f, -26.7713013f, 231.261475f, -79.70422f, 83.71088f, 67.8396f, -124.720764f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x3 a3 = float3x3(38.1759033f, 405.773621f, -194.761444f, 235.724f, 465.984863f, -304.153168f, -295.520264f, 313.7224f, -232.202637f); + float b3 = (271.287f); + float3x3 r3 = float3x3(38.1759033f, 134.486633f, -194.761444f, 235.724f, 194.697876f, -32.86618f, -24.2332764f, 42.4354248f, -232.202637f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float3x3 b0 = float3x3(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f, -372.067078f); + float3x3 r0 = float3x3(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f, -24.3553162f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (201.012268f); + float3x3 b1 = float3x3(-95.566864f, -258.951477f, 106.983582f, 469.323547f, -34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f); + float3x3 r1 = float3x3(9.87854f, 201.012268f, 94.02869f, 201.012268f, 26.9673157f, 16.17572f, 201.012268f, 69.13956f, 80.9194f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (4.506653f); + float3x3 b2 = float3x3(-111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f, -433.523071f, -163.866852f, 177.004028f); + float3x3 r2 = float3x3(4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (110.650146f); + float3x3 b3 = float3x3(17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f, 271.075134f, 423.7027f, -413.233246f, 127.956238f); + float3x3 r3 = float3x3(4.54272461f, 14.79718f, 110.650146f, 110.650146f, 110.650146f, 110.650146f, 110.650146f, 110.650146f, 110.650146f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_plus() + { + float3x3 a0 = float3x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f); + float3x3 r0 = float3x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f); + TestUtils.AreEqual(+a0, r0); + + float3x3 a1 = float3x3(102.054382f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f); + float3x3 r1 = float3x3(102.054382f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f); + TestUtils.AreEqual(+a1, r1); + + float3x3 a2 = float3x3(-230.052673f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f, 473.803162f, 285.80896f); + float3x3 r2 = float3x3(-230.052673f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f, 473.803162f, 285.80896f); + TestUtils.AreEqual(+a2, r2); + + float3x3 a3 = float3x3(-273.2638f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f, -29.0835266f); + float3x3 r3 = float3x3(-273.2638f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f, -29.0835266f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float3x3_operator_neg() + { + float3x3 a0 = float3x3(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f, 19.68689f); + float3x3 r0 = float3x3(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f, -19.68689f); + TestUtils.AreEqual(-a0, r0); + + float3x3 a1 = float3x3(268.2367f, 223.381287f, -410.392059f, -395.681549f, -349.149475f, -110.9393f, -238.2196f, 292.543518f, 469.2926f); + float3x3 r1 = float3x3(-268.2367f, -223.381287f, 410.392059f, 395.681549f, 349.149475f, 110.9393f, 238.2196f, -292.543518f, -469.2926f); + TestUtils.AreEqual(-a1, r1); + + float3x3 a2 = float3x3(48.29071f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f, 196.387573f, -306.1656f, 149.660034f); + float3x3 r2 = float3x3(-48.29071f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f, -196.387573f, 306.1656f, -149.660034f); + TestUtils.AreEqual(-a2, r2); + + float3x3 a3 = float3x3(320.391724f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f, 363.716736f, 280.887878f, -270.6513f, -201.615753f); + float3x3 r3 = float3x3(-320.391724f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f, -363.716736f, -280.887878f, 270.6513f, 201.615753f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float3x3_operator_prefix_inc() + { + float3x3 a0 = float3x3(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f, -76.50766f); + float3x3 r0 = float3x3(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f, -75.50766f); + TestUtils.AreEqual(++a0, r0); + + float3x3 a1 = float3x3(-305.584778f, 148.679321f, 363.2849f, -115.559235f, -326.8778f, -179.894653f, 339.8766f, -38.41043f, -153.373688f); + float3x3 r1 = float3x3(-304.584778f, 149.679321f, 364.2849f, -114.559235f, -325.8778f, -178.894653f, 340.8766f, -37.41043f, -152.373688f); + TestUtils.AreEqual(++a1, r1); + + float3x3 a2 = float3x3(261.625549f, -396.650238f, 301.3058f, -221.355408f, -429.698151f, -271.2893f, -264.380066f, -377.5592f, 223.232422f); + float3x3 r2 = float3x3(262.625549f, -395.650238f, 302.3058f, -220.355408f, -428.698151f, -270.2893f, -263.380066f, -376.5592f, 224.232422f); + TestUtils.AreEqual(++a2, r2); + + float3x3 a3 = float3x3(-71.076355f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f, 117.9541f, 139.525818f, 335.6897f, 162.6615f); + float3x3 r3 = float3x3(-70.076355f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f, 118.9541f, 140.525818f, 336.6897f, 163.6615f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float3x3_operator_postfix_inc() + { + float3x3 a0 = float3x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f); + float3x3 r0 = float3x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f); + TestUtils.AreEqual(a0++, r0); + + float3x3 a1 = float3x3(-174.173f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f); + float3x3 r1 = float3x3(-174.173f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f); + TestUtils.AreEqual(a1++, r1); + + float3x3 a2 = float3x3(454.488831f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f, 417.7298f, 25.5656738f); + float3x3 r2 = float3x3(454.488831f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f, 417.7298f, 25.5656738f); + TestUtils.AreEqual(a2++, r2); + + float3x3 a3 = float3x3(-463.725647f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f, 64.57703f); + float3x3 r3 = float3x3(-463.725647f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f, 64.57703f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float3x3_operator_prefix_dec() + { + float3x3 a0 = float3x3(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f, 171.964539f); + float3x3 r0 = float3x3(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f, 170.964539f); + TestUtils.AreEqual(--a0, r0); + + float3x3 a1 = float3x3(-227.44281f, 326.5078f, 400.7209f, -478.031372f, -326.452972f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f); + float3x3 r1 = float3x3(-228.44281f, 325.5078f, 399.7209f, -479.031372f, -327.452972f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f); + TestUtils.AreEqual(--a1, r1); + + float3x3 a2 = float3x3(-79.6352539f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f, 181.4751f, -188.69223f, -505.2157f); + float3x3 r2 = float3x3(-80.6352539f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f, 180.4751f, -189.69223f, -506.2157f); + TestUtils.AreEqual(--a2, r2); + + float3x3 a3 = float3x3(-372.241943f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f, 345.021545f, 4.73535156f, -68.65332f, 481.4961f); + float3x3 r3 = float3x3(-373.241943f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f, 344.021545f, 3.73535156f, -69.65332f, 480.4961f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float3x3_operator_postfix_dec() + { + float3x3 a0 = float3x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f); + float3x3 r0 = float3x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f); + TestUtils.AreEqual(a0--, r0); + + float3x3 a1 = float3x3(450.1281f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f); + float3x3 r1 = float3x3(450.1281f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f); + TestUtils.AreEqual(a1--, r1); + + float3x3 a2 = float3x3(-357.0542f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f, 409.222473f, -428.2567f); + float3x3 r2 = float3x3(-357.0542f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f, 409.222473f, -428.2567f); + TestUtils.AreEqual(a2--, r2); + + float3x3 a3 = float3x3(-425.2884f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f, 449.637756f); + float3x3 r3 = float3x3(-425.2884f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f, 449.637756f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x3.gen.cs.meta new file mode 100644 index 0000000..15fc4b7 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27c6e6d3cc1ef6643995a494e7e3b0d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x4.gen.cs new file mode 100644 index 0000000..62a5ce9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x4.gen.cs @@ -0,0 +1,949 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat3x4 + { + [TestCompiler] + public static void float3x4_zero() + { + TestUtils.AreEqual(float3x4.zero.c0.x, 0.0f); + TestUtils.AreEqual(float3x4.zero.c0.y, 0.0f); + TestUtils.AreEqual(float3x4.zero.c0.z, 0.0f); + TestUtils.AreEqual(float3x4.zero.c1.x, 0.0f); + TestUtils.AreEqual(float3x4.zero.c1.y, 0.0f); + TestUtils.AreEqual(float3x4.zero.c1.z, 0.0f); + TestUtils.AreEqual(float3x4.zero.c2.x, 0.0f); + TestUtils.AreEqual(float3x4.zero.c2.y, 0.0f); + TestUtils.AreEqual(float3x4.zero.c2.z, 0.0f); + TestUtils.AreEqual(float3x4.zero.c3.x, 0.0f); + TestUtils.AreEqual(float3x4.zero.c3.y, 0.0f); + TestUtils.AreEqual(float3x4.zero.c3.z, 0.0f); + } + + [TestCompiler] + public static void float3x4_operator_equal_wide_wide() + { + float3x4 a0 = float3x4(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float3x4 b0 = float3x4(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x4 a1 = float3x4(188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float3x4 b1 = float3x4(-494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x4 a2 = float3x4(-22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f, -68.7284241f, 485.769958f, 413.169739f, -418.2693f); + float3x4 b2 = float3x4(-174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f, -468.330963f, 429.495728f, 477.389221f, -433.4254f); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x4 a3 = float3x4(-346.795868f, 504.159668f, 345.186279f, -434.713043f, -499.7741f, 282.019043f, 259.15625f, 306.455933f, 435.2254f, -386.8997f, 211.364014f, -7.229828f); + float3x4 b3 = float3x4(273.5464f, -34.9762268f, 221.968445f, 85.91913f, -85.59894f, 392.7608f, -117.924072f, -445.3056f, -242.468964f, 173.643066f, 389.897766f, -14.2904663f); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_equal_wide_scalar() + { + float3x4 a0 = float3x4(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f, 290.04895f, -132.6352f, -65.66748f, -69.68326f); + float b0 = (-155.815765f); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x4 a1 = float3x4(-191.190765f, -232.895691f, -319.144043f, -49.70108f, -300.8819f, 333.396851f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f); + float b1 = (186.845215f); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x4 a2 = float3x4(-410.91687f, -390.103577f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f, 291.051941f, 423.97168f, -429.8739f, -275.156952f, -56.3323669f); + float b2 = (110.501282f); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x4 a3 = float3x4(-95.83597f, 253.006165f, -300.509521f, 314.866516f, 195.616211f, -26.1289063f, -284.7747f, -242.672058f, 140.3606f, 505.644348f, 506.537964f, -502.3698f); + float b3 = (-124.865326f); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float3x4 b0 = float3x4(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-160.470612f); + float3x4 b1 = float3x4(316.668823f, 390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-227.090637f); + float3x4 b2 = float3x4(-336.612427f, 365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f, 39.3421021f, -350.403717f, -482.717224f); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (239.9654f); + float3x4 b3 = float3x4(-3.40603638f, -1.49484253f, 105.960449f, 151.537537f, 63.2832031f, -289.693176f, 137.553772f, -247.666473f, -339.420563f, 23.2382813f, 21.1778564f, 477.03656f); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_not_equal_wide_wide() + { + float3x4 a0 = float3x4(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f); + float3x4 b0 = float3x4(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x4 a1 = float3x4(398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float3x4 b1 = float3x4(-406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x4 a2 = float3x4(-72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f, -506.828369f, 245.477051f, -173.571045f, 390.338562f); + float3x4 b2 = float3x4(415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f, 420.2151f, -239.176056f, -99.0791f, 4.476013f); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x4 a3 = float3x4(252.837769f, 47.8658447f, 457.7105f, -313.22113f, 391.203857f, 481.786133f, 26.8878174f, -298.1424f, 240.077454f, -332.455139f, -333.607178f, -313.1897f); + float3x4 b3 = float3x4(264.348572f, 451.312317f, 232.958008f, -142.6222f, -300.2256f, 268.333252f, -112.103546f, -270.494019f, -71.9932251f, 99.46326f, 321.7033f, 200.059631f); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_not_equal_wide_scalar() + { + float3x4 a0 = float3x4(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f, 492.20105f, -165.241516f, 270.341f, -380.243256f); + float b0 = (-393.413544f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x4 a1 = float3x4(501.899048f, 458.400452f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f); + float b1 = (-134.345459f); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x4 a2 = float3x4(-497.459473f, -328.587769f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f, 317.286072f, 401.939575f, 210.984863f); + float b2 = (-80.93225f); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x4 a3 = float3x4(-147.096313f, 207.731384f, 284.3921f, -509.0853f, 414.307617f, -52.2944641f, -140.437927f, -316.787781f, -358.696838f, 312.31897f, 270.629456f, -140.016724f); + float b3 = (-193.399048f); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float3x4 b0 = float3x4(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-488.0213f); + float3x4 b1 = float3x4(489.740784f, 270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-268.352264f); + float3x4 b2 = float3x4(-239.231018f, 411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f, 306.1256f, -178.330383f, 382.141968f); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-340.8656f); + float3x4 b3 = float3x4(-17.58023f, -409.874847f, -349.70166f, 275.8543f, -229.371948f, -127.505737f, 90.75342f, -422.087128f, -2.44754028f, -280.5517f, -484.374359f, -33.7634277f); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_wide_wide() + { + float3x4 a0 = float3x4(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f); + float3x4 b0 = float3x4(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool3x4 r0 = bool3x4(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x4 a1 = float3x4(-19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float3x4 b1 = float3x4(-185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool3x4 r1 = bool3x4(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x4 a2 = float3x4(269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f, -316.1384f, -417.522156f, 441.643433f, -191.950623f); + float3x4 b2 = float3x4(-382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f, -114.556458f, 441.429749f, -113.333679f, 435.622925f); + bool3x4 r2 = bool3x4(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float3x4 a3 = float3x4(397.811584f, -144.666626f, 417.079041f, -322.980133f, -81.2850952f, 319.325317f, 146.764038f, -316.583374f, -150.857544f, -314.606323f, 7.14312744f, -458.8273f); + float3x4 b3 = float3x4(383.656128f, -293.7116f, -391.35498f, 43.12201f, 433.223633f, -201.382446f, -241.421173f, 376.469849f, -503.39743f, -359.780945f, 118.631531f, -510.030518f); + bool3x4 r3 = bool3x4(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_wide_scalar() + { + float3x4 a0 = float3x4(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f); + float b0 = (199.0675f); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x4 a1 = float3x4(-68.0881958f, -66.703064f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f); + float b1 = (12.7880249f); + bool3x4 r1 = bool3x4(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float3x4 a2 = float3x4(-334.622742f, 300.410156f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f, -455.37558f, 360.291565f, -296.372131f, 272.488342f, 360.207947f); + float b2 = (-98.31558f); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float3x4 a3 = float3x4(389.727417f, -400.615234f, -85.46912f, -467.702148f, -51.38788f, 201.764648f, -47.8412781f, -180.740051f, -409.0157f, 229.699036f, 176.197876f, -410.45517f); + float b3 = (68.7366943f); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float3x4 b0 = float3x4(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (389.231445f); + float3x4 b1 = float3x4(488.745544f, -221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f); + bool3x4 r1 = bool3x4(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-125.568115f); + float3x4 b2 = float3x4(122.164795f, 96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f, 190.572144f, 108.2583f, 132.550781f); + bool3x4 r2 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-431.515228f); + float3x4 b3 = float3x4(-192.203522f, -431.835f, -85.58124f, 328.670532f, 273.577881f, -178.669067f, 352.6363f, -82.6058044f, 238.908875f, 291.335327f, 183.357361f, -185.0326f); + bool3x4 r3 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_wide_wide() + { + float3x4 a0 = float3x4(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float3x4 b0 = float3x4(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool3x4 r0 = bool3x4(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float3x4 a1 = float3x4(-425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float3x4 b1 = float3x4(-206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float3x4 a2 = float3x4(105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f, -496.971832f, 339.888123f, 372.228333f, 313.2387f); + float3x4 b2 = float3x4(-352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f, 337.8899f, -249.505554f, -225.9013f, -249.491272f); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float3x4 a3 = float3x4(-419.108948f, -265.329773f, -42.5019836f, 369.163879f, 67.16907f, -256.6989f, -104.105927f, 499.570129f, 41.6635132f, 151.1521f, 220.688354f, -344.658875f); + float3x4 b3 = float3x4(381.122864f, 325.5454f, 455.49884f, 333.318665f, 118.980347f, 223.19812f, -385.289063f, 333.8808f, -437.4107f, 243.975464f, -302.8199f, -32.7101746f); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_wide_scalar() + { + float3x4 a0 = float3x4(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f, 501.306824f, -367.027771f, -86.12451f, -489.090576f); + float b0 = (-302.816956f); + bool3x4 r0 = bool3x4(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float3x4 a1 = float3x4(-172.518158f, -236.414948f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f); + float b1 = (-18.1496277f); + bool3x4 r1 = bool3x4(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float3x4 a2 = float3x4(-13.6382141f, -261.865967f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f, 290.573059f, 180.2633f, -482.863953f); + float b2 = (-7.34790039f); + bool3x4 r2 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x4 a3 = float3x4(100.7063f, 501.319763f, -289.280975f, -25.8497f, 455.1624f, -63.3173523f, -17.4467773f, 53.01776f, 88.81958f, 182.357971f, -428.927216f, 408.336853f); + float b3 = (180.672546f); + bool3x4 r3 = bool3x4(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float3x4 b0 = float3x4(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (230.181274f); + float3x4 b1 = float3x4(-102.58783f, 392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (304.864441f); + float3x4 b2 = float3x4(-361.524841f, -372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f, -107.004181f, 331.636536f, -340.840149f); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-384.2146f); + float3x4 b3 = float3x4(-451.726563f, 467.97876f, -236.569122f, 44.6547241f, -285.797852f, 42.730957f, 338.18512f, 274.017029f, -108.60437f, -211.37326f, -19.00415f, 194.114685f); + bool3x4 r3 = bool3x4(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_equal_wide_wide() + { + float3x4 a0 = float3x4(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f); + float3x4 b0 = float3x4(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool3x4 r0 = bool3x4(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x4 a1 = float3x4(84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float3x4 b1 = float3x4(-280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool3x4 r1 = bool3x4(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x4 a2 = float3x4(-77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f, -383.302948f, -5.14703369f, 319.34375f, 465.022217f); + float3x4 b2 = float3x4(-216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f, -202.748352f, -312.476471f, 310.0719f, -320.363037f); + bool3x4 r2 = bool3x4(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x4 a3 = float3x4(145.933472f, -215.074829f, -146.461517f, -349.893982f, 29.5991211f, -131.796631f, -438.9947f, 147.057922f, 221.112488f, -356.145355f, -32.83017f, 442.942017f); + float3x4 b3 = float3x4(186.075989f, -42.6377869f, 82.56506f, 127.189087f, 198.286987f, -450.492035f, 20.901001f, 449.465881f, -478.7727f, 380.053955f, 99.1247559f, -450.329773f); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_equal_wide_scalar() + { + float3x4 a0 = float3x4(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f, 183.821167f, 320.4425f, -257.870056f, -386.801758f); + float b0 = (292.924255f); + bool3x4 r0 = bool3x4(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x4 a1 = float3x4(-182.938812f, 485.311584f, 373.5691f, 259.1515f, 450.130066f, -128.525543f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f); + float b1 = (349.250122f); + bool3x4 r1 = bool3x4(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x4 a2 = float3x4(402.484863f, -502.1736f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f, -24.8275757f, -451.0416f, 429.577576f); + float b2 = (87.91608f); + bool3x4 r2 = bool3x4(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x4 a3 = float3x4(-308.4343f, -279.4071f, 181.672241f, -290.148743f, -184.844086f, 447.6939f, 168.8866f, 26.3789673f, 392.558533f, 255.604858f, 162.163452f, 195.496277f); + float b3 = (355.160339f); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float3x4 b0 = float3x4(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (104.883484f); + float3x4 b1 = float3x4(-488.685852f, -480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-225.223541f); + float3x4 b2 = float3x4(-116.019989f, -442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f, -215.901672f, 39.5603638f, 22.947998f); + bool3x4 r2 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-162.060577f); + float3x4 b3 = float3x4(236.7337f, -253.951965f, -204.719086f, -161.616547f, -64.3859253f, -229.815643f, -484.825653f, -135.040436f, 351.694763f, 111.825378f, -249.982544f, 435.8073f); + bool3x4 r3 = bool3x4(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_equal_wide_wide() + { + float3x4 a0 = float3x4(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float3x4 b0 = float3x4(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool3x4 r0 = bool3x4(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x4 a1 = float3x4(349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float3x4 b1 = float3x4(73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool3x4 r1 = bool3x4(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x4 a2 = float3x4(-223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f, -132.2218f, 303.683777f, 265.210144f, 9.754395f); + float3x4 b2 = float3x4(453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f, -129.3533f, 8.107788f, 426.449524f, 410.693176f); + bool3x4 r2 = bool3x4(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x4 a3 = float3x4(-233.0929f, 26.5675049f, 266.7807f, -250.072235f, 138.040833f, 174.276733f, -420.931641f, -42.8541565f, 216.485046f, 240.053833f, -470.382172f, 98.39673f); + float3x4 b3 = float3x4(470.313416f, 220.399963f, -372.872681f, -242.178558f, 177.506226f, -172.638153f, 60.72284f, 478.250183f, 234.30304f, 297.821228f, 104.584595f, -462.418732f); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_equal_wide_scalar() + { + float3x4 a0 = float3x4(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f, -221.505463f, 252.994324f, -116.440369f, -395.3633f); + float b0 = (189.205139f); + bool3x4 r0 = bool3x4(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x4 a1 = float3x4(164.772583f, 355.837036f, 184.195557f, 273.012268f, -418.1424f, 249.3841f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f); + float b1 = (-287.007324f); + bool3x4 r1 = bool3x4(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x4 a2 = float3x4(179.005066f, -331.271667f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f, 30.99707f, 199.232239f, -74.50003f, -343.386475f, 216.031555f); + float b2 = (71.1767f); + bool3x4 r2 = bool3x4(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x4 a3 = float3x4(-420.403137f, -336.6411f, 317.0946f, -262.424927f, -228.411255f, 123.465454f, 264.102478f, 223.623352f, 440.5354f, -420.727f, 74.8443f, -177.077881f); + float b3 = (-78.38403f); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float3x4 b0 = float3x4(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (67.14099f); + float3x4 b1 = float3x4(-74.56064f, -367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f); + bool3x4 r1 = bool3x4(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (125.303589f); + float3x4 b2 = float3x4(-400.47052f, -283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f, 393.3009f, 18.02362f, -169.92392f); + bool3x4 r2 = bool3x4(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-285.884949f); + float3x4 b3 = float3x4(163.7511f, 191.855347f, 114.0155f, -395.98584f, 189.366577f, 176.19812f, 61.7138062f, 507.548462f, 224.043823f, -422.9937f, -127.054993f, 95.5286255f); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_add_wide_wide() + { + float3x4 a0 = float3x4(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f); + float3x4 b0 = float3x4(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float3x4 r0 = float3x4(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x4 a1 = float3x4(491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float3x4 b1 = float3x4(462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float3x4 r1 = float3x4(953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x4 a2 = float3x4(-62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f, -261.126129f, -309.830353f, 378.363342f, -224.094f); + float3x4 b2 = float3x4(492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f, -474.822937f, 311.390747f, 326.8454f, 475.2119f); + float3x4 r2 = float3x4(429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f, -735.9491f, 1.56039429f, 705.20874f, 251.11792f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x4 a3 = float3x4(-164.555725f, -69.87393f, 224.634644f, -383.9926f, 149.221252f, 169.388f, 163.053955f, 57.0291138f, 342.950073f, 168.680481f, -470.770264f, -117.630493f); + float3x4 b3 = float3x4(314.152954f, -262.594635f, -82.86911f, 156.299561f, 427.40155f, -279.099365f, -448.615234f, 284.3371f, 288.1856f, -232.39505f, -386.871918f, 162.903381f); + float3x4 r3 = float3x4(149.597229f, -332.468567f, 141.765533f, -227.693054f, 576.6228f, -109.711365f, -285.561279f, 341.3662f, 631.1357f, -63.71457f, -857.6422f, 45.27289f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_add_wide_scalar() + { + float3x4 a0 = float3x4(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f); + float b0 = (500.997253f); + float3x4 r0 = float3x4(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f, 944.1125f, 769.0895f, 542.3183f, 29.74118f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x4 a1 = float3x4(-2.664978f, 202.14801f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f); + float b1 = (78.98584f); + float3x4 r1 = float3x4(76.32086f, 281.13385f, 390.7113f, 89.331665f, -72.258606f, 434.218628f, -118.814911f, 334.9411f, 323.132935f, -102.640717f, 76.5309143f, 379.886475f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x4 a2 = float3x4(-236.491943f, -172.5422f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f, -198.837769f, -381.930969f, 402.160339f, -117.024841f, 497.373779f); + float b2 = (-160.5841f); + float3x4 r2 = float3x4(-397.07605f, -333.1263f, -403.5252f, 305.76f, 77.40338f, 103.7099f, 212.282715f, -359.421875f, -542.5151f, 241.576233f, -277.608948f, 336.789673f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x4 a3 = float3x4(485.9093f, 77.81482f, -271.547974f, -133.2518f, 211.86676f, 253.1502f, -342.783173f, -185.248352f, -403.3855f, -358.848236f, 65.24756f, 127.201721f); + float b3 = (-47.75714f); + float3x4 r3 = float3x4(438.152161f, 30.0576782f, -319.3051f, -181.008942f, 164.109619f, 205.393066f, -390.5403f, -233.0055f, -451.142639f, -406.605377f, 17.4904175f, 79.44458f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float3x4 b0 = float3x4(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f); + float3x4 r0 = float3x4(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f, -362.56778f, -94.70776f, -465.6871f, -307.4886f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-138.614349f); + float3x4 b1 = float3x4(26.9041748f, -374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f); + float3x4 r1 = float3x4(-111.710175f, -513.152f, 15.853241f, 129.7695f, -329.577362f, 50.0029f, -643.5305f, -118.160309f, 59.3310242f, 112.797577f, -559.7047f, -27.1689758f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-73.26889f); + float3x4 b2 = float3x4(480.884583f, 438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f, -413.4803f, -260.720184f, 77.54236f); + float3x4 r2 = float3x4(407.6157f, 364.784149f, -6.424591f, -344.0649f, -117.2908f, 124.425812f, -54.1549377f, 275.9689f, 292.9656f, -486.749176f, -333.989075f, 4.273468f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (183.9549f); + float3x4 b3 = float3x4(-51.4989929f, -472.497467f, 107.126892f, 349.0772f, 431.595947f, -314.110962f, 396.996643f, -167.308624f, -157.114532f, 287.7625f, -367.33905f, 96.23682f); + float3x4 r3 = float3x4(132.4559f, -288.542572f, 291.0818f, 533.0321f, 615.550842f, -130.156067f, 580.951538f, 16.64627f, 26.8403625f, 471.7174f, -183.384155f, 280.1917f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_sub_wide_wide() + { + float3x4 a0 = float3x4(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f); + float3x4 b0 = float3x4(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f); + float3x4 r0 = float3x4(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x4 a1 = float3x4(-470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float3x4 b1 = float3x4(-446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float3x4 r1 = float3x4(-23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x4 a2 = float3x4(-308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f, 388.481567f, 138.7182f, -385.5736f, -149.3648f); + float3x4 b2 = float3x4(-221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f, 72.11908f, -154.880585f, -469.659973f, -320.615417f); + float3x4 r2 = float3x4(-87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f, 316.3625f, 293.5988f, 84.0863647f, 171.25061f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x4 a3 = float3x4(-158.534058f, 508.070679f, 482.7008f, 114.569275f, 364.83136f, 229.031f, -168.088074f, 373.4411f, -239.90097f, 379.928467f, 113.011841f, 306.835266f); + float3x4 b3 = float3x4(6.41229248f, -278.865051f, 15.8380737f, 27.51831f, 429.869629f, -458.622467f, -172.064423f, -284.524719f, 42.60669f, -223.474243f, -56.92975f, 61.807312f); + float3x4 r3 = float3x4(-164.94635f, 786.9357f, 466.862732f, 87.0509644f, -65.03827f, 687.653442f, 3.97634888f, 657.9658f, -282.50766f, 603.4027f, 169.941589f, 245.027954f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_sub_wide_scalar() + { + float3x4 a0 = float3x4(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f, -377.9257f, -470.262054f, 400.5349f, 461.507568f); + float b0 = (-291.5904f); + float3x4 r0 = float3x4(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f, -86.3353f, -178.671661f, 692.1253f, 753.097961f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x4 a1 = float3x4(-246.287262f, 246.350708f, -121.427368f, -122.718414f, -122.938721f, 360.15094f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f); + float b1 = (21.6052856f); + float3x4 r1 = float3x4(-267.892548f, 224.745422f, -143.032654f, -144.3237f, -144.544f, 338.545654f, 321.2693f, -2.675476f, 142.99707f, 75.4384155f, 464.3097f, -227.362946f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x4 a2 = float3x4(253.443237f, 187.998413f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f, 354.886047f, 98.82147f, -189.193237f, 269.074829f, -59.11856f); + float b2 = (-121.163055f); + float3x4 r2 = float3x4(374.6063f, 309.161469f, -329.657227f, -126.910309f, 94.16699f, 562.7157f, 571.0736f, 476.0491f, 219.984528f, -68.03018f, 390.237885f, 62.0444946f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x4 a3 = float3x4(363.458374f, -46.1552124f, 109.913269f, 182.646912f, 229.015747f, -144.92868f, 469.2506f, -150.49231f, -192.3125f, -224.356842f, 285.876831f, -63.0108337f); + float b3 = (-73.7792053f); + float3x4 r3 = float3x4(437.237579f, 27.6239929f, 183.692474f, 256.426117f, 302.794952f, -71.1494751f, 543.0298f, -76.7131042f, -118.533295f, -150.577637f, 359.656036f, 10.7683716f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float3x4 b0 = float3x4(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f); + float3x4 r0 = float3x4(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f, -46.61847f, 680.3616f, 219.191711f, -60.35724f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (169.131409f); + float3x4 b1 = float3x4(88.21661f, 1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f); + float3x4 r1 = float3x4(80.9147949f, 167.396423f, 46.5933838f, 434.076416f, 219.9686f, 516.781738f, 165.065857f, 248.226837f, -185.226929f, 461.6239f, 222.3404f, 415.479f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (299.203369f); + float3x4 b2 = float3x4(432.1847f, -163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f, -65.53128f, 440.380371f, 427.360657f); + float3x4 r2 = float3x4(-132.981323f, 463.083374f, 122.460815f, 404.1892f, 745.001f, 328.076538f, 468.7916f, 569.5626f, 231.155762f, 364.73465f, -141.177f, -128.157288f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-81.47296f); + float3x4 b3 = float3x4(41.7131958f, 175.8208f, -214.949158f, -163.446869f, -218.829132f, 389.116882f, -74.10977f, -448.137238f, -410.375f, 363.211f, -263.5354f, 473.546021f); + float3x4 r3 = float3x4(-123.186157f, -257.293762f, 133.4762f, 81.97391f, 137.356171f, -470.589844f, -7.3631897f, 366.664276f, 328.902039f, -444.68396f, 182.062439f, -555.019f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mul_wide_wide() + { + float3x4 a0 = float3x4(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f); + float3x4 b0 = float3x4(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f); + float3x4 r0 = float3x4(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x4 a1 = float3x4(467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float3x4 b1 = float3x4(184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float3x4 r1 = float3x4(86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x4 a2 = float3x4(-83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f, -416.213074f, -103.279205f, -52.9519043f, -40.82834f); + float3x4 b2 = float3x4(-189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f, 296.680359f, 341.001831f, -257.0968f, 17.5936279f); + float3x4 r2 = float3x4(15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f, -123482.242f, -35218.4f, 13613.7656f, -718.3186f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x4 a3 = float3x4(-86.18509f, -257.316528f, 363.857239f, -229.860016f, 8.925293f, -2.44940186f, 37.7583f, 264.451782f, -321.251282f, -268.256042f, 43.9136963f, 274.833069f); + float3x4 b3 = float3x4(-443.845123f, 291.349243f, 490.19165f, 361.320984f, -509.289734f, 315.352661f, 125.083069f, -167.727112f, 396.8877f, -0.320404053f, 143.4115f, -396.3475f); + float3x4 r3 = float3x4(38252.832f, -74968.98f, 178359.781f, -83053.25f, -4545.56f, -772.4254f, 4722.92432f, -44355.7344f, -127500.68f, 85.950325f, 6297.729f, -108929.4f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mul_wide_scalar() + { + float3x4 a0 = float3x4(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f, -46.729187f, -238.405f, 422.08252f, -48.83484f); + float b0 = (192.211182f); + float3x4 r0 = float3x4(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f, -8981.872f, -45824.1055f, 81128.98f, -9386.603f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x4 a1 = float3x4(355.30835f, -196.995819f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f); + float b1 = (119.356628f); + float3x4 r1 = float3x4(42408.4063f, -23512.7559f, 11725.12f, -38856.81f, 6437.77637f, -10437.8555f, -15572.9512f, -26568.1387f, 15040.7275f, 35014.59f, 20813.6426f, -39043.9453f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x4 a2 = float3x4(56.62915f, -475.6087f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f, 120.014465f, -59.508667f, 319.489868f); + float b2 = (257.541565f); + float3x4 r2 = float3x4(14584.36f, -122489.008f, -116586.977f, -12676.3535f, 36468.13f, 111151.258f, 46448.95f, -10539.4922f, 71994.08f, 30908.7129f, -15325.9551f, 82281.92f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x4 a3 = float3x4(-403.523163f, -335.3932f, -364.242554f, 150.686157f, 391.87207f, 179.312439f, 354.5298f, 497.7614f, 418.436584f, -413.333374f, -329.520721f, -322.703064f); + float b3 = (-408.1931f); + float3x4 r3 = float3x4(164715.375f, 136905.188f, 148681.3f, -61509.05f, -159959.484f, -73194.1f, -144716.625f, -203182.781f, -170802.938f, 168719.844f, 134508.1f, 131725.172f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float3x4 b0 = float3x4(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f); + float3x4 r0 = float3x4(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f, -228458.891f, -23181.2285f, -197177.6f, -74380.4141f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (-395.9921f); + float3x4 b1 = float3x4(125.20166f, -265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f); + float3x4 r1 = float3x4(-49578.8672f, 104944.164f, -124601.336f, 115911.656f, 14940.7373f, -65482.14f, -141178.219f, 74768.5859f, -199942.625f, -16066.248f, 81881.31f, 24394.18f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (118.971619f); + float3x4 b2 = float3x4(53.7483521f, -198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f, 340.7486f, 438.986877f, -227.165955f); + float3x4 r2 = float3x4(6394.52832f, -23636.02f, 11449.3623f, -2408.20947f, -3702.86816f, 4626.859f, -1562.49011f, 60422.27f, 11304.4385f, 40539.41f, 52226.98f, -27026.3f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (452.573f); + float3x4 b3 = float3x4(144.014954f, -31.58603f, 42.29773f, -466.027161f, 287.453979f, 328.9969f, -164.243134f, -511.2683f, -9.594299f, 431.190125f, -132.141815f, -87.502655f); + float3x4 r3 = float3x4(65177.28f, -14294.9834f, 19142.81f, -210911.313f, 130093.906f, 148895.109f, -74332.01f, -231386.234f, -4342.12061f, 195145f, -59803.8164f, -39601.34f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_div_wide_wide() + { + float3x4 a0 = float3x4(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f); + float3x4 b0 = float3x4(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f); + float3x4 r0 = float3x4(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x4 a1 = float3x4(-136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float3x4 b1 = float3x4(397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float3x4 r1 = float3x4(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x4 a2 = float3x4(315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f, -106.234528f, 414.312561f, 7.12084961f, 274.073669f); + float3x4 b2 = float3x4(-218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f, 220.2555f, -67.2345f, 2.229187f, -166.210968f); + float3x4 r2 = float3x4(-1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f, -0.482324064f, -6.16220236f, 3.19437075f, -1.64895058f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x4 a3 = float3x4(-39.0026855f, 39.065918f, -147.364166f, 434.3849f, 315.0672f, -106.636017f, -507.925262f, -17.1764526f, -385.865356f, 226.002136f, 345.168457f, 201.544189f); + float3x4 b3 = float3x4(-247.732574f, 84.16095f, 477.148621f, 209.7508f, -386.7222f, -65.27734f, 410.454834f, 367.6507f, -456.572021f, 382.427979f, -163.860687f, -213.721375f); + float3x4 r3 = float3x4(0.157438666f, 0.464181036f, -0.3088433f, 2.07095718f, -0.814712f, 1.6335839f, -1.23746932f, -0.0467194878f, 0.8451358f, 0.5909665f, -2.106475f, -0.9430231f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_div_wide_scalar() + { + float3x4 a0 = float3x4(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f, -348.9238f, -275.5387f, 210.557922f, 287.6424f); + float b0 = (-60.0243835f); + float3x4 r0 = float3x4(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f, 5.813034f, 4.590446f, -3.507873f, -4.79209232f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x4 a1 = float3x4(504.372253f, -26.6315918f, -253.236664f, 272.895142f, 178.096191f, -460.87558f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f); + float b1 = (491.7871f); + float3x4 r1 = float3x4(1.02559066f, -0.0541526824f, -0.5149315f, 0.554905057f, 0.362140834f, -0.9371445f, -1.02208054f, -0.171466067f, -0.355215371f, 0.17039147f, 0.400665343f, 0.64493f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x4 a2 = float3x4(403.387146f, 60.6068726f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f, 147.866211f, 506.658875f, -435.778564f); + float b2 = (81.6464844f); + float3x4 r2 = float3x4(4.940655f, 0.742308438f, -5.06525755f, 2.539497f, 4.391642f, 0.254133224f, -0.8399274f, 3.80546021f, 5.112344f, 1.81105423f, 6.20551968f, -5.33738327f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x4 a3 = float3x4(210.672913f, -19.1908569f, 416.511719f, 427.0136f, 417.1994f, -150.911835f, 488.985535f, -294.738739f, -357.298035f, 288.771667f, 453.429138f, 70.72443f); + float b3 = (-218.781464f); + float3x4 r3 = float3x4(-0.962937653f, 0.08771701f, -1.90377975f, -1.95178151f, -1.90692294f, 0.689783454f, -2.235041f, 1.34718335f, 1.63312757f, -1.31990921f, -2.07252073f, -0.323265165f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float3x4 b0 = float3x4(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f); + float3x4 r0 = float3x4(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f, -0.0882440954f, 0.217123419f, -0.208379045f, -0.08514738f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-211.10257f); + float3x4 b1 = float3x4(-322.852356f, -137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f); + float3x4 r1 = float3x4(0.6538672f, 1.52989185f, -2.5033f, -0.5945488f, -0.7636822f, 0.55119884f, 0.432014316f, -0.612164736f, -1.25020039f, 4.776553f, -0.501966953f, 1.20207453f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-9.220581f); + float3x4 b2 = float3x4(-344.194275f, -449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f, -490.492126f, 485.755432f, -317.572266f); + float3x4 r2 = float3x4(0.0267888848f, 0.0205325447f, -0.0783364251f, 0.02735855f, -0.038516432f, 0.0236816723f, -0.0379891656f, -0.018579524f, -0.100501411f, 0.0187986325f, -0.018981941f, 0.0290345922f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-451.6248f); + float3x4 b3 = float3x4(394.018372f, -262.271423f, -314.246765f, 359.9159f, -101.615356f, 359.517273f, -424.9799f, -192.719574f, -169.749725f, -244.790009f, -187.14386f, -207.713654f); + float3x4 r3 = float3x4(-1.14620233f, 1.72197485f, 1.43716609f, -1.2548064f, 4.444454f, -1.25619769f, 1.06269681f, 2.3434298f, 2.66053319f, 1.84494781f, 2.41324925f, 2.17426634f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mod_wide_wide() + { + float3x4 a0 = float3x4(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f); + float3x4 b0 = float3x4(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f); + float3x4 r0 = float3x4(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x4 a1 = float3x4(-64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float3x4 b1 = float3x4(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float3x4 r1 = float3x4(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x4 a2 = float3x4(156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f, 7.76147461f, 238.094727f, 12.8520508f, -100.240662f); + float3x4 b2 = float3x4(-131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f, 132.180237f, -179.877319f, 51.9685669f, 367.214233f); + float3x4 r2 = float3x4(25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f, 7.76147461f, 58.2174072f, 12.8520508f, -100.240662f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x4 a3 = float3x4(34.552002f, -251.189758f, -238.372253f, 511.514648f, 288.433533f, 367.109863f, 44.760437f, -437.0456f, -259.2056f, -228.565826f, 83.49725f, 424.367065f); + float3x4 b3 = float3x4(-395.2128f, 270.485229f, -73.104126f, 89.3499756f, -288.308533f, -168.324646f, 311.6159f, -468.341949f, 381.983948f, -1.39886475f, -102.288605f, -87.4248657f); + float3x4 r3 = float3x4(34.552002f, -251.189758f, -19.0598755f, 64.76477f, 0.125f, 30.4605713f, 44.760437f, -437.0456f, -259.2056f, -0.5508728f, 83.49725f, 74.6676f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mod_wide_scalar() + { + float3x4 a0 = float3x4(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f, -84.47363f, -318.7815f, 433.4547f, -54.60019f); + float b0 = (-90.49924f); + float3x4 r0 = float3x4(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f, -84.47363f, -47.283783f, 71.45776f, -54.60019f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x4 a1 = float3x4(-172.338867f, 222.361877f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f); + float b1 = (-429.714661f); + float3x4 r1 = float3x4(-172.338867f, 222.361877f, 5.79638672f, 254.5108f, -3.37902832f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 53.8359375f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x4 a2 = float3x4(-331.993347f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f, 235.724f, 465.984863f, -304.153168f, -295.520264f, 313.7224f); + float b2 = (336f); + float3x4 r2 = float3x4(-331.993347f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 69.77362f, -194.761444f, 235.724f, 129.984863f, -304.153168f, -295.520264f, 313.7224f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x4 a3 = float3x4(-232.202637f, 244.096619f, 162.524231f, 390.016174f, 90.00452f, 155.933533f, 217.3377f, -306.819275f, 149.09375f, 503.828369f, -194.130127f, 214.863037f); + float b3 = (191.619751f); + float3x4 r3 = float3x4(-40.5828857f, 52.4768677f, 162.524231f, 6.77667236f, 90.00452f, 155.933533f, 25.7179565f, -115.199524f, 149.09375f, 120.588867f, -2.510376f, 23.2432861f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float3x4 b0 = float3x4(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f); + float3x4 r0 = float3x4(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f, -24.3553162f, -195.410126f, -14.1549377f, -137.470917f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (106.983582f); + float3x4 b1 = float3x4(469.323547f, -34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f); + float3x4 r1 = float3x4(106.983582f, 2.55661f, 106.983582f, 106.983582f, 106.983582f, 106.983582f, 3.33056641f, 106.983582f, 106.983582f, 106.983582f, 106.983582f, 106.983582f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (499.9535f); + float3x4 b2 = float3x4(-433.523071f, -163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f, 271.075134f, 423.7027f, -413.233246f); + float3x4 r2 = float3x4(66.43042f, 8.352936f, 145.945435f, 57.3529053f, 4.78552246f, 20.68866f, 67.51251f, 114.569336f, 231.821716f, 228.878357f, 76.25079f, 86.7202454f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (127.956238f); + float3x4 b3 = float3x4(-298.204681f, -352.4181f, -175.607727f, -152.899292f, 34.6194458f, -380.802948f, 0.352050781f, 485.900879f, 266.150818f, 483.82074f, 11.777832f, 274.135864f); + float3x4 r3 = float3x4(127.956238f, 127.956238f, 127.956238f, 127.956238f, 24.0979f, 127.956238f, 0.1618042f, 127.956238f, 127.956238f, 127.956238f, 10.1779175f, 127.956238f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_plus() + { + float3x4 a0 = float3x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f); + float3x4 r0 = float3x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f); + TestUtils.AreEqual(+a0, r0); + + float3x4 a1 = float3x4(377.230164f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f); + float3x4 r1 = float3x4(377.230164f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f); + TestUtils.AreEqual(+a1, r1); + + float3x4 a2 = float3x4(-364.802551f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f); + float3x4 r2 = float3x4(-364.802551f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f); + TestUtils.AreEqual(+a2, r2); + + float3x4 a3 = float3x4(-29.0835266f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f, 87.64923f); + float3x4 r3 = float3x4(-29.0835266f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f, 87.64923f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float3x4_operator_neg() + { + float3x4 a0 = float3x4(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f, 19.68689f, 268.2367f, -180.600525f, 223.381287f); + float3x4 r0 = float3x4(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f, -19.68689f, -268.2367f, 180.600525f, -223.381287f); + TestUtils.AreEqual(-a0, r0); + + float3x4 a1 = float3x4(-410.392059f, -349.149475f, -110.9393f, -238.2196f, 292.543518f, 469.2926f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f); + float3x4 r1 = float3x4(410.392059f, 349.149475f, 110.9393f, 238.2196f, -292.543518f, -469.2926f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f); + TestUtils.AreEqual(-a1, r1); + + float3x4 a2 = float3x4(175.015015f, -306.1656f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f, 363.716736f, 280.887878f, -270.6513f); + float3x4 r2 = float3x4(-175.015015f, 306.1656f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f, -363.716736f, -280.887878f, 270.6513f); + TestUtils.AreEqual(-a2, r2); + + float3x4 a3 = float3x4(-201.615753f, 95.48926f, 191.070251f, 371.973572f, 296.512573f, -164.169922f, -347.4581f, -237.404968f, -228.701965f, 61.0822754f, 128.331543f, 331.2558f); + float3x4 r3 = float3x4(201.615753f, -95.48926f, -191.070251f, -371.973572f, -296.512573f, 164.169922f, 347.4581f, 237.404968f, 228.701965f, -61.0822754f, -128.331543f, -331.2558f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float3x4_operator_prefix_inc() + { + float3x4 a0 = float3x4(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f, -76.50766f, -305.584778f, 64.0965f, 148.679321f); + float3x4 r0 = float3x4(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f, -75.50766f, -304.584778f, 65.0965f, 149.679321f); + TestUtils.AreEqual(++a0, r0); + + float3x4 a1 = float3x4(363.2849f, -326.8778f, -179.894653f, 339.8766f, -38.41043f, -153.373688f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f); + float3x4 r1 = float3x4(364.2849f, -325.8778f, -178.894653f, 340.8766f, -37.41043f, -152.373688f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f); + TestUtils.AreEqual(++a1, r1); + + float3x4 a2 = float3x4(-271.2893f, -377.5592f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f, 117.9541f, 139.525818f, 335.6897f); + float3x4 r2 = float3x4(-270.2893f, -376.5592f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f, 118.9541f, 140.525818f, 336.6897f); + TestUtils.AreEqual(++a2, r2); + + float3x4 a3 = float3x4(162.6615f, -254.7315f, -89.25604f, 314.36554f, 244.728149f, 34.01062f, -90.44528f, -472.63623f, -34.5667725f, -71.27185f, -396.4901f, -314.987457f); + float3x4 r3 = float3x4(163.6615f, -253.7315f, -88.25604f, 315.36554f, 245.728149f, 35.01062f, -89.44528f, -471.63623f, -33.5667725f, -70.27185f, -395.4901f, -313.987457f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float3x4_operator_postfix_inc() + { + float3x4 a0 = float3x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f); + float3x4 r0 = float3x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f); + TestUtils.AreEqual(a0++, r0); + + float3x4 a1 = float3x4(159.861023f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f); + float3x4 r1 = float3x4(159.861023f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f); + TestUtils.AreEqual(a1++, r1); + + float3x4 a2 = float3x4(-341.498535f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f); + float3x4 r2 = float3x4(-341.498535f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f); + TestUtils.AreEqual(a2++, r2); + + float3x4 a3 = float3x4(64.57703f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f, 439.3f); + float3x4 r3 = float3x4(64.57703f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f, 439.3f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float3x4_operator_prefix_dec() + { + float3x4 a0 = float3x4(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f, 171.964539f, -227.44281f, 298.2848f, 326.5078f); + float3x4 r0 = float3x4(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f, 170.964539f, -228.44281f, 297.2848f, 325.5078f); + TestUtils.AreEqual(--a0, r0); + + float3x4 a1 = float3x4(400.7209f, -326.452972f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f); + float3x4 r1 = float3x4(399.7209f, -327.452972f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f); + TestUtils.AreEqual(--a1, r1); + + float3x4 a2 = float3x4(-406.667725f, -188.69223f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f, 345.021545f, 4.73535156f, -68.65332f); + float3x4 r2 = float3x4(-407.667725f, -189.69223f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f, 344.021545f, 3.73535156f, -69.65332f); + TestUtils.AreEqual(--a2, r2); + + float3x4 a3 = float3x4(481.4961f, -357.673279f, 153.329651f, -233.624329f, -35.23831f, 340.619629f, 259.928833f, 335.354919f, 85.36487f, -1.39398193f, -407.4104f, -145.793427f); + float3x4 r3 = float3x4(480.4961f, -358.673279f, 152.329651f, -234.624329f, -36.23831f, 339.619629f, 258.928833f, 334.354919f, 84.36487f, -2.393982f, -408.4104f, -146.793427f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float3x4_operator_postfix_dec() + { + float3x4 a0 = float3x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f); + float3x4 r0 = float3x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f); + TestUtils.AreEqual(a0--, r0); + + float3x4 a1 = float3x4(-261.0089f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f); + float3x4 r1 = float3x4(-261.0089f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f); + TestUtils.AreEqual(a1--, r1); + + float3x4 a2 = float3x4(379.156128f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f); + float3x4 r2 = float3x4(379.156128f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f); + TestUtils.AreEqual(a2--, r2); + + float3x4 a3 = float3x4(449.637756f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f, -240.610687f); + float3x4 r3 = float3x4(449.637756f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f, -240.610687f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x4.gen.cs.meta new file mode 100644 index 0000000..fd7a21f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8e09d2585c55f8498cd3e3221744e39 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4.gen.cs new file mode 100644 index 0000000..6637e0a --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4.gen.cs @@ -0,0 +1,1069 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat4 + { + [TestCompiler] + public static void float4_zero() + { + TestUtils.AreEqual(float4.zero.x, 0.0f); + TestUtils.AreEqual(float4.zero.y, 0.0f); + TestUtils.AreEqual(float4.zero.z, 0.0f); + TestUtils.AreEqual(float4.zero.w, 0.0f); + } + + [TestCompiler] + public static void float4_constructor() + { + float4 a = new float4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void float4_scalar_constructor() + { + float4 a = new float4(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + TestUtils.AreEqual(a.z, 17.0f); + TestUtils.AreEqual(a.w, 17.0f); + } + + [TestCompiler] + public static void float4_static_constructor() + { + float4 a = float4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void float4_static_scalar_constructor() + { + float4 a = float4(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + TestUtils.AreEqual(a.z, 17.0f); + TestUtils.AreEqual(a.w, 17.0f); + } + + [TestCompiler] + public static void float4_operator_equal_wide_wide() + { + float4 a0 = float4(-135.18924f, -49.0941162f, 169.129822f, 240.8053f); + float4 b0 = float4(-220.014648f, 66.98004f, 499.2016f, -371.1131f); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4 a1 = float4(314.7392f, 442.393f, 177.924438f, 335.5334f); + float4 b1 = float4(208.448669f, 390.8037f, -72.44382f, 362.97644f); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4 a2 = float4(168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float4 b2 = float4(194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4 a3 = float4(188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float4 b3 = float4(-494.446655f, -252.970367f, 234.417114f, 398.724f); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4_operator_equal_wide_scalar() + { + float4 a0 = float4(65.6712f, 404.415527f, -269.730164f, 83.6306152f); + float b0 = (-155.815765f); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4 a1 = float4(152.9945f, 314.671265f, 386.365173f, 290.04895f); + float b1 = (-155.868286f); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4 a2 = float4(-132.6352f, -69.68326f, -191.190765f, 186.845215f); + float b2 = (-65.66748f); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4 a3 = float4(-232.895691f, -49.70108f, -300.8819f, 333.396851f); + float b3 = (-319.144043f); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float4 b0 = float4(-400.4892f, -71.2868347f, 156.978088f, -225.238739f); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (499.141785f); + float4 b1 = float4(-211.979919f, 428.311951f, -489.501343f, -5.691559f); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-30.8659363f); + float4 b2 = float4(-362.9831f, 184.503174f, -160.470612f, 316.668823f); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (390.369263f); + float4 b3 = float4(505.1051f, -294.6487f, 443.1991f, 96.5592651f); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4_operator_not_equal_wide_wide() + { + float4 a0 = float4(279.994141f, -43.34201f, -465.724731f, 317.466553f); + float4 b0 = float4(-460.9121f, -476.009033f, 468.1364f, -341.012543f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4 a1 = float4(85.7149658f, 360.8905f, 366.081543f, 154.542847f); + float4 b1 = float4(-62.65805f, -458.801666f, -457.730225f, -59.5232544f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4 a2 = float4(332.4262f, 397.11322f, -431.374969f, 489.0108f); + float4 b2 = float4(3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4 a3 = float4(398.4336f, -489.817932f, 171.4049f, -67.82968f); + float4 b3 = float4(-406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4_operator_not_equal_wide_scalar() + { + float4 a0 = float4(-155.4411f, -19.4266052f, 174.633057f, 507.920715f); + float b0 = (-393.413544f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4 a1 = float4(59.177063f, -58.92328f, -398.176849f, 492.20105f); + float b1 = (171.151489f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4 a2 = float4(-165.241516f, -380.243256f, 501.899048f, -134.345459f); + float b2 = (270.341f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4 a3 = float4(458.400452f, 161.459961f, 261.514221f, -145.6124f); + float b3 = (46.7709961f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float4 b0 = float4(459.553223f, 436.453247f, -488.714172f, 392.767944f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-266.736633f); + float4 b1 = float4(338.557861f, -338.100128f, -152.314545f, -452.820679f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (209.439331f); + float4 b2 = float4(50.10797f, 372.4344f, -488.0213f, 489.740784f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (270.4001f); + float4 b3 = float4(-472.846771f, -286.850464f, -384.691864f, 443.423523f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_wide_wide() + { + float4 a0 = float4(51.7102661f, -313.85556f, 283.047668f, 235.021912f); + float4 b0 = float4(-261.835236f, -19.81073f, -149.25882f, 205.99823f); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float4 a1 = float4(44.07837f, -207.255676f, 3.38293457f, -144.301331f); + float4 b1 = float4(-306.024384f, 102.121704f, 231.906311f, 179.49884f); + bool4 r1 = bool4(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4 a2 = float4(-69.3696f, -135.667969f, -194.787354f, -33.473877f); + float4 b2 = float4(473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4 a3 = float4(-19.67508f, 423.237976f, -71.6983f, -501.886f); + float4 b3 = float4(-185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_wide_scalar() + { + float4 a0 = float4(-221.869781f, -121.546478f, -97.5239258f, 479.8811f); + float b0 = (199.0675f); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float4 a1 = float4(67.11902f, 282.9666f, 258.2791f, -111.413147f); + float b1 = (137.3288f); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4 a2 = float4(-288.081116f, -361.6429f, -68.0881958f, 12.7880249f); + float b2 = (82.6654053f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4 a3 = float4(-66.703064f, 25.7277222f, 101.37085f, -330.442657f); + float b3 = (-78.76297f); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float4 b0 = float4(-377.196533f, -505.147552f, 375.9267f, 110.17395f); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-118.097565f); + float4 b1 = float4(-40.4508972f, -299.744324f, 31.4371338f, -458.904541f); + bool4 r1 = bool4(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (13.6846924f); + float4 b2 = float4(-458.5069f, 248.276489f, 389.231445f, 488.745544f); + bool4 r2 = bool4(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-221.637878f); + float4 b3 = float4(-424.2672f, 249.059021f, -22.1361389f, -442.247742f); + bool4 r3 = bool4(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_wide_wide() + { + float4 a0 = float4(-229.29068f, 505.536621f, -73.80707f, 100.292053f); + float4 b0 = float4(-445.845032f, -420.035278f, 299.0244f, -13.8809814f); + bool4 r0 = bool4(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float4 a1 = float4(-419.214783f, -159.559753f, -396.770355f, 127.037415f); + float4 b1 = float4(151.5617f, -163.50943f, -391.096039f, 479.283752f); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float4 a2 = float4(489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float4 b2 = float4(-77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4 a3 = float4(-425.978149f, -228.430511f, 383.03833f, 136.533569f); + float4 b3 = float4(-206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_wide_scalar() + { + float4 a0 = float4(11.156311f, -411.023224f, 385.885559f, -485.103058f); + float b0 = (-302.816956f); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float4 a1 = float4(-491.180023f, 173.575073f, 69.26929f, 501.306824f); + float b1 = (405.175354f); + bool4 r1 = bool4(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4 a2 = float4(-367.027771f, -489.090576f, -172.518158f, -18.1496277f); + float b2 = (-86.12451f); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float4 a3 = float4(-236.414948f, -27.2391357f, 471.779358f, 240.164551f); + float b3 = (-238.8945f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float4 b0 = float4(-226.2044f, -423.465f, 409.405518f, 453.877075f); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (87.47571f); + float4 b1 = float4(113.795593f, 176.409241f, -140.440033f, -182.48288f); + bool4 r1 = bool4(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-158.2933f); + float4 b2 = float4(-162.685333f, -193.328674f, 230.181274f, -102.58783f); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (392.520569f); + float4 b3 = float4(-177.478668f, -10.2950134f, -24.04895f, 172.448669f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_equal_wide_wide() + { + float4 a0 = float4(240.090515f, 462.213135f, 293.08252f, -427.870667f); + float4 b0 = float4(-81.20383f, 493.637451f, -411.4721f, 99.16443f); + bool4 r0 = bool4(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4 a1 = float4(-405.5227f, 204.591919f, 294.6701f, -327.564453f); + float4 b1 = float4(-295.6677f, -480.462555f, 74.41406f, 260.916138f); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4 a2 = float4(-456.12326f, 282.30127f, 421.881165f, -311.71283f); + float4 b2 = float4(306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool4 r2 = bool4(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4 a3 = float4(84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float4 b3 = float4(-280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_equal_wide_scalar() + { + float4 a0 = float4(309.192444f, 69.67377f, -101.724182f, -315.9724f); + float b0 = (292.924255f); + bool4 r0 = bool4(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4 a1 = float4(-346.011047f, -410.870056f, -483.902649f, 183.821167f); + float b1 = (424.15387f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4 a2 = float4(320.4425f, -386.801758f, -182.938812f, 349.250122f); + float b2 = (-257.870056f); + bool4 r2 = bool4(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4 a3 = float4(485.311584f, 259.1515f, 450.130066f, -128.525543f); + float b3 = (373.5691f); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float4 b0 = float4(51.1589966f, 340.443665f, 312.81427f, 354.1925f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (136.396729f); + float4 b1 = float4(-94.76788f, 288.5443f, 304.042847f, -148.618073f); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-506.3001f); + float4 b2 = float4(27.5812378f, 48.47113f, 104.883484f, -488.685852f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-480.435181f); + float4 b3 = float4(421.936646f, 239.721069f, -101.018433f, -283.951477f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_equal_wide_wide() + { + float4 a0 = float4(-386.5918f, -157.120789f, 391.015259f, -511.886871f); + float4 b0 = float4(153.443f, 49.8924561f, 78.02582f, 138.813721f); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4 a1 = float4(-5.42202759f, 287.645264f, -122.535187f, 7.48144531f); + float4 b1 = float4(-225.51059f, -339.3561f, -373.302063f, 364.9359f); + bool4 r1 = bool4(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float4 a2 = float4(152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float4 b2 = float4(-322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool4 r2 = bool4(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float4 a3 = float4(349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float4 b3 = float4(73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool4 r3 = bool4(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_equal_wide_scalar() + { + float4 a0 = float4(495.4574f, -14.3451233f, -463.4748f, 217.517517f); + float b0 = (189.205139f); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float4 a1 = float4(-246.865723f, 53.8151245f, -123.332947f, -221.505463f); + float b1 = (-377.6587f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4 a2 = float4(252.994324f, -395.3633f, 164.772583f, -287.007324f); + float b2 = (-116.440369f); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float4 a3 = float4(355.837036f, 273.012268f, -418.1424f, 249.3841f); + float b3 = (184.195557f); + bool4 r3 = bool4(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float4 b0 = float4(204.802979f, -101.104034f, -122.055023f, -70.45615f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-239.62027f); + float4 b1 = float4(-185.992737f, -455.612579f, 276.665833f, 79.39917f); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (416.420532f); + float4 b2 = float4(379.2735f, -439.5147f, 67.14099f, -74.56064f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-367.256348f); + float4 b3 = float4(494.950745f, -61.2355347f, -429.170258f, -213.824677f); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4_operator_add_wide_wide() + { + float4 a0 = float4(465.148376f, 278.9107f, -277.5299f, -65.1972046f); + float4 b0 = float4(483.9944f, -204.07666f, -365.673553f, -509.920868f); + float4 r0 = float4(949.142761f, 74.8340454f, -643.2035f, -575.118042f); + TestUtils.AreEqual(a0 + b0, r0); + + float4 a1 = float4(-473.324371f, -4.69555664f, -470.536774f, -109.9501f); + float4 b1 = float4(-270.6975f, 486.763977f, 267.49176f, 251.642517f); + float4 r1 = float4(-744.021851f, 482.06842f, -203.045013f, 141.692413f); + TestUtils.AreEqual(a1 + b1, r1); + + float4 a2 = float4(-178.701447f, -420.033783f, 290.711121f, -446.529633f); + float4 b2 = float4(244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float4 r2 = float4(65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a2 + b2, r2); + + float4 a3 = float4(491.066467f, -261.1173f, -298.4069f, 502.4286f); + float4 b3 = float4(462.5473f, -405.492f, -428.498322f, -41.87259f); + float4 r3 = float4(953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4_operator_add_wide_scalar() + { + float4 a0 = float4(459.898315f, -447.663361f, -94.43863f, 126.429871f); + float b0 = (500.997253f); + float4 r0 = float4(960.895569f, 53.3338928f, 406.558624f, 627.4271f); + TestUtils.AreEqual(a0 + b0, r0); + + float4 a1 = float4(-36.254364f, -2.79125977f, -478.4148f, 443.115234f); + float b1 = (-349.6413f); + float4 r1 = float4(-385.89566f, -352.432556f, -828.0561f, 93.47394f); + TestUtils.AreEqual(a1 + b1, r1); + + float4 a2 = float4(268.092224f, -471.256073f, -2.664978f, 78.98584f); + float b2 = (41.3210449f); + float4 r2 = float4(309.413269f, -429.935028f, 38.6560669f, 120.306885f); + TestUtils.AreEqual(a2 + b2, r2); + + float4 a3 = float4(202.14801f, 10.3458252f, -151.244446f, 355.2328f); + float b3 = (311.725464f); + float4 r3 = float4(513.8735f, 322.0713f, 160.481018f, 666.958252f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float4 b0 = float4(-264.088135f, -106.009247f, -355.4473f, -447.3303f); + float4 r0 = float4(-589.6009f, -431.522f, -680.9601f, -772.843f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-158.7002f); + float4 b1 = float4(-199.4837f, 180.318115f, 337.579346f, -37.0550232f); + float4 r1 = float4(-358.1839f, 21.61792f, 178.87915f, -195.755219f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (230.805f); + float4 b2 = float4(-140.174347f, 18.02417f, -138.614349f, 26.9041748f); + float4 r2 = float4(90.6306458f, 248.829163f, 92.19064f, 257.709167f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (-374.5376f); + float4 b3 = float4(154.46759f, 268.38385f, -190.963013f, 188.617249f); + float4 r3 = float4(-220.07f, -106.153748f, -565.5006f, -185.920349f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4_operator_sub_wide_wide() + { + float4 a0 = float4(133.371033f, -131.832123f, -197.293152f, -485.28656f); + float4 b0 = float4(123.460266f, 359.56012f, -48.2484741f, 478.979065f); + float4 r0 = float4(9.910767f, -491.392242f, -149.044678f, -964.2656f); + TestUtils.AreEqual(a0 - b0, r0); + + float4 a1 = float4(-337.550323f, 471.6671f, 146.506592f, -130.585052f); + float4 b1 = float4(207.158325f, 142.36731f, -125.6055f, -65.29901f); + float4 r1 = float4(-544.7086f, 329.2998f, 272.1121f, -65.28604f); + TestUtils.AreEqual(a1 - b1, r1); + + float4 a2 = float4(110.7771f, -235.5416f, 78.87933f, -347.686157f); + float4 b2 = float4(-477.876434f, 164.5f, 428.009583f, 72.62781f); + float4 r2 = float4(588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a2 - b2, r2); + + float4 a3 = float4(-470.820557f, -11.45929f, -167.9479f, 330.676758f); + float4 b3 = float4(-446.8805f, 432.091431f, -225.554657f, -112.451965f); + float4 r3 = float4(-23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4_operator_sub_wide_scalar() + { + float4 a0 = float4(48.9367065f, 410.4516f, -364.4417f, 163.980591f); + float b0 = (-291.5904f); + float4 r0 = float4(340.5271f, 702.042f, -72.85132f, 455.570984f); + TestUtils.AreEqual(a0 - b0, r0); + + float4 a1 = float4(-460.067322f, 204.358337f, 180.269714f, -377.9257f); + float b1 = (110.919434f); + float4 r1 = float4(-570.986755f, 93.4389f, 69.35028f, -488.845123f); + TestUtils.AreEqual(a1 - b1, r1); + + float4 a2 = float4(-470.262054f, 461.507568f, -246.287262f, 21.6052856f); + float b2 = (400.5349f); + float4 r2 = float4(-870.797f, 60.9726563f, -646.822144f, -378.929626f); + TestUtils.AreEqual(a2 - b2, r2); + + float4 a3 = float4(246.350708f, -122.718414f, -122.938721f, 360.15094f); + float b3 = (-121.427368f); + float4 r3 = float4(367.778076f, -1.29104614f, -1.51135254f, 481.5783f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float4 b0 = float4(452.352539f, 256.9898f, -275.159882f, -89.02753f); + float4 r0 = float4(-157.766052f, 37.59668f, 569.746338f, 383.614f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (488.2284f); + float4 b1 = float4(-333.2173f, -64.233f, -66.04172f, 341.204956f); + float4 r1 = float4(821.4457f, 552.4614f, 554.270142f, 147.023438f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-385.775055f); + float4 b2 = float4(75.3947754f, 354.943726f, 169.131409f, 88.21661f); + float4 r2 = float4(-461.16983f, -740.71875f, -554.9065f, -473.991669f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (1.73498535f); + float4 b3 = float4(122.538025f, -264.945f, -50.83719f, -347.65033f); + float4 r3 = float4(-120.80304f, 266.68f, 52.5721741f, 349.3853f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4_operator_mul_wide_wide() + { + float4 a0 = float4(-394.780548f, -412.3722f, -25.8745728f, -241.045959f); + float4 b0 = float4(-149.763977f, -345.04538f, -284.334045f, 267.979248f); + float4 r0 = float4(59123.9063f, 142287.125f, 7357.022f, -64595.3164f); + TestUtils.AreEqual(a0 * b0, r0); + + float4 a1 = float4(-93.6759949f, 244.159973f, 494.688477f, 53.5379639f); + float4 b1 = float4(-326.6485f, -150.689667f, 207.732422f, 366.192871f); + float4 r1 = float4(30599.123f, -36792.3867f, 102762.836f, 19605.22f); + TestUtils.AreEqual(a1 * b1, r1); + + float4 a2 = float4(-239.4964f, 236.675842f, -211.8562f, -216.654816f); + float4 b2 = float4(358.880737f, 214.853577f, 253.422791f, -307.7138f); + float4 r2 = float4(-85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a2 * b2, r2); + + float4 a3 = float4(467.9583f, -178.021912f, -386.394257f, -422.4354f); + float4 b3 = float4(184.47113f, 426.436462f, -144.281433f, 459.4796f); + float4 r3 = float4(86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4_operator_mul_wide_scalar() + { + float4 a0 = float4(328.203f, -290.10672f, 236.995728f, 120.481384f); + float b0 = (192.211182f); + float4 r0 = float4(63084.2852f, -55761.7539f, 45553.23f, 23157.87f); + TestUtils.AreEqual(a0 * b0, r0); + + float4 a1 = float4(357.903137f, -477.3105f, -438.272919f, -46.729187f); + float b1 = (134.867249f); + float4 r1 = float4(48269.41f, -64373.55f, -59108.6641f, -6302.237f); + TestUtils.AreEqual(a1 * b1, r1); + + float4 a2 = float4(-238.405f, -48.83484f, 355.30835f, 119.356628f); + float b2 = (422.08252f); + float4 r2 = float4(-100626.586f, -20612.332f, 149969.438f, 50378.3477f); + TestUtils.AreEqual(a2 * b2, r2); + + float4 a3 = float4(-196.995819f, -325.552155f, 53.9373169f, -87.45099f); + float b3 = (98.23602f); + float4 r3 = float4(-19352.0859f, -31980.95f, 5298.5874f, -8590.837f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float4 b0 = float4(329.360962f, -198.683441f, 184.0794f, 256.016174f); + float4 r0 = float4(-152999.6f, 92295.35f, -85511.27f, -118928.4f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (266.226318f); + float4 b1 = float4(-97.8947449f, 159.748108f, -351.8222f, 491.801575f); + float4 r1 = float4(-26062.1582f, 42529.1523f, -93664.33f, 130930.523f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (49.90204f); + float4 b2 = float4(424.4626f, 160.1181f, -395.9921f, 125.20166f); + float4 r2 = float4(21181.5488f, 7990.21973f, -19760.8125f, 6247.818f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-265.0158f); + float4 b3 = float4(314.656128f, -292.712036f, -37.72989f, 165.362244f); + float4 r3 = float4(-83388.85f, 77573.32f, 9999.017f, -43823.61f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4_operator_div_wide_wide() + { + float4 a0 = float4(246.265747f, -269.85614f, -451.619537f, -7.388489f); + float4 b0 = float4(172.119812f, -77.14111f, -325.8354f, -450.608673f); + float4 r0 = float4(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f); + TestUtils.AreEqual(a0 / b0, r0); + + float4 a1 = float4(-308.205566f, -373.3948f, 360.41864f, 25.8097534f); + float4 b1 = float4(-261.262146f, -122.449493f, -93.2107849f, -442.005219f); + float4 r1 = float4(1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a1 / b1, r1); + + float4 a2 = float4(-274.050476f, 127.538574f, -447.671753f, -137.458588f); + float4 b2 = float4(484.362732f, -390.7818f, 402.02533f, 316.6507f); + float4 r2 = float4(-0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a2 / b2, r2); + + float4 a3 = float4(-136.133179f, 12.4376221f, 228.513f, 356.972351f); + float4 b3 = float4(397.154419f, -303.2622f, -118.591248f, -81.6503f); + float4 r3 = float4(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4_operator_div_wide_scalar() + { + float4 a0 = float4(-244.517456f, 69.1123047f, -333.023132f, 257.396851f); + float b0 = (-60.0243835f); + float4 r0 = float4(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f); + TestUtils.AreEqual(a0 / b0, r0); + + float4 a1 = float4(403.2456f, 131.526611f, -261.8864f, -348.9238f); + float b1 = (154.34436f); + float4 r1 = float4(2.61263585f, 0.8521634f, -1.696767f, -2.26068377f); + TestUtils.AreEqual(a1 / b1, r1); + + float4 a2 = float4(-275.5387f, 287.6424f, 504.372253f, 491.7871f); + float b2 = (210.557922f); + float4 r2 = float4(-1.30861235f, 1.36609626f, 2.39540863f, 2.335638f); + TestUtils.AreEqual(a2 / b2, r2); + + float4 a3 = float4(-26.6315918f, 272.895142f, 178.096191f, -460.87558f); + float b3 = (-253.236664f); + float4 r3 = float4(0.105164833f, -1.07762885f, -0.7032797f, 1.81994021f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float4 b0 = float4(-422.676147f, 248.129639f, 449.391357f, 245.858154f); + float4 r0 = float4(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-326.6206f); + float4 b1 = float4(163.715088f, 333.6645f, 38.2910767f, -472.979767f); + float4 r1 = float4(-1.995055f, -0.978889346f, -8.529941f, 0.6905594f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (192.230164f); + float4 b2 = float4(-200.296875f, -490.181519f, -211.10257f, -322.852356f); + float4 r2 = float4(-0.9597262f, -0.3921612f, -0.9106008f, -0.595412f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-137.985291f); + float4 b3 = float4(84.32971f, 355.063477f, 276.427246f, -382.988037f); + float4 r3 = float4(-1.63625944f, -0.388621479f, -0.499174f, 0.360286176f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4_operator_mod_wide_wide() + { + float4 a0 = float4(-442.309875f, 368.5005f, -1.09390259f, -364.673828f); + float4 b0 = float4(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f); + float4 r0 = float4(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f); + TestUtils.AreEqual(a0 % b0, r0); + + float4 a1 = float4(-197.343933f, -34.0349121f, -101.348572f, 208.318542f); + float4 b1 = float4(-154.61026f, -154.029358f, 487.0462f, -469.8291f); + float4 r1 = float4(-42.7336731f, -34.0349121f, -101.348572f, 208.318542f); + TestUtils.AreEqual(a1 % b1, r1); + + float4 a2 = float4(-140.770325f, 183.44696f, -463.368378f, 83.83911f); + float4 b2 = float4(-145.203766f, -203.384f, -22.52008f, 224.69f); + float4 r2 = float4(-140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a2 % b2, r2); + + float4 a3 = float4(-64.71405f, 295.066833f, 212.25708f, 349.6283f); + float4 b3 = float4(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float4 r3 = float4(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4_operator_mod_wide_scalar() + { + float4 a0 = float4(-433.417f, -5.51412964f, 393.3944f, 299.41156f); + float b0 = (-90.49924f); + float4 r0 = float4(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f); + TestUtils.AreEqual(a0 % b0, r0); + + float4 a1 = float4(-120.80603f, -450.807678f, 186.094788f, -84.47363f); + float b1 = (-502.939026f); + float4 r1 = float4(-120.80603f, -450.807678f, 186.094788f, -84.47363f); + TestUtils.AreEqual(a1 % b1, r1); + + float4 a2 = float4(-318.7815f, -54.60019f, -172.338867f, -429.714661f); + float b2 = (433.4547f); + float4 r2 = float4(-318.7815f, -54.60019f, -172.338867f, -429.714661f); + TestUtils.AreEqual(a2 % b2, r2); + + float4 a3 = float4(222.361877f, 254.5108f, -433.0937f, -203.082611f); + float b3 = (5.79638672f); + float4 r3 = float4(2.09918213f, 5.26617432f, -4.161072f, -0.209075928f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float4 b0 = float4(-159.140259f, 230.17334f, 14.7793579f, -303.1565f); + float4 r0 = float4(-78.14188f, -166.249054f, -12.1590881f, -93.2659f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (399.635f); + float4 b1 = float4(206.6947f, 397.0448f, -393.890656f, -372.067078f); + float4 r1 = float4(192.9403f, 2.59021f, 5.74435425f, 27.5679321f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (201.012268f); + float4 b2 = float4(-95.566864f, -258.951477f, 106.983582f, 469.323547f); + float4 r2 = float4(9.87854f, 201.012268f, 94.02869f, 201.012268f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-34.80899f); + float4 b3 = float4(184.836548f, 374.79425f, -131.872711f, -120.092865f); + float4 r3 = float4(-34.80899f, -34.80899f, -34.80899f, -34.80899f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4_operator_plus() + { + float4 a0 = float4(271.670837f, -79.08023f, -330.985046f, 31.824707f); + float4 r0 = float4(271.670837f, -79.08023f, -330.985046f, 31.824707f); + TestUtils.AreEqual(+a0, r0); + + float4 a1 = float4(315.449524f, 190.324646f, -350.3086f, -320.518463f); + float4 r1 = float4(315.449524f, 190.324646f, -350.3086f, -320.518463f); + TestUtils.AreEqual(+a1, r1); + + float4 a2 = float4(102.054382f, -428.7762f, 377.230164f, 234.773926f); + float4 r2 = float4(102.054382f, -428.7762f, 377.230164f, 234.773926f); + TestUtils.AreEqual(+a2, r2); + + float4 a3 = float4(34.28363f, 465.355957f, 309.59314f, -316.937134f); + float4 r3 = float4(34.28363f, 465.355957f, 309.59314f, -316.937134f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float4_operator_neg() + { + float4 a0 = float4(420.227173f, -196.2575f, -335.426819f, 509.04364f); + float4 r0 = float4(-420.227173f, 196.2575f, 335.426819f, -509.04364f); + TestUtils.AreEqual(-a0, r0); + + float4 a1 = float4(-33.0144043f, -495.837952f, -270.859467f, 19.68689f); + float4 r1 = float4(33.0144043f, 495.837952f, 270.859467f, -19.68689f); + TestUtils.AreEqual(-a1, r1); + + float4 a2 = float4(268.2367f, 223.381287f, -410.392059f, -395.681549f); + float4 r2 = float4(-268.2367f, -223.381287f, 410.392059f, 395.681549f); + TestUtils.AreEqual(-a2, r2); + + float4 a3 = float4(-349.149475f, -238.2196f, 292.543518f, 469.2926f); + float4 r3 = float4(349.149475f, 238.2196f, -292.543518f, -469.2926f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float4_operator_prefix_inc() + { + float4 a0 = float4(-99.79556f, 458.741821f, 96.1790161f, -48.55246f); + float4 r0 = float4(-98.79556f, 459.741821f, 97.1790161f, -47.55246f); + TestUtils.AreEqual(++a0, r0); + + float4 a1 = float4(-315.728973f, -323.614868f, -456.8903f, -76.50766f); + float4 r1 = float4(-314.728973f, -322.614868f, -455.8903f, -75.50766f); + TestUtils.AreEqual(++a1, r1); + + float4 a2 = float4(-305.584778f, 148.679321f, 363.2849f, -115.559235f); + float4 r2 = float4(-304.584778f, 149.679321f, 364.2849f, -114.559235f); + TestUtils.AreEqual(++a2, r2); + + float4 a3 = float4(-326.8778f, 339.8766f, -38.41043f, -153.373688f); + float4 r3 = float4(-325.8778f, 340.8766f, -37.41043f, -152.373688f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float4_operator_postfix_inc() + { + float4 a0 = float4(322.943542f, 472.0525f, 203.48761f, -49.8545837f); + float4 r0 = float4(322.943542f, 472.0525f, 203.48761f, -49.8545837f); + TestUtils.AreEqual(a0++, r0); + + float4 a1 = float4(-31.4205322f, 271.454651f, 55.7368774f, 153.7503f); + float4 r1 = float4(-31.4205322f, 271.454651f, 55.7368774f, 153.7503f); + TestUtils.AreEqual(a1++, r1); + + float4 a2 = float4(-174.173f, 215.110229f, 159.861023f, -333.050446f); + float4 r2 = float4(-174.173f, 215.110229f, 159.861023f, -333.050446f); + TestUtils.AreEqual(a2++, r2); + + float4 a3 = float4(241.4649f, -170.104645f, -270.652466f, -162.86026f); + float4 r3 = float4(241.4649f, -170.104645f, -270.652466f, -162.86026f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float4_operator_prefix_dec() + { + float4 a0 = float4(-416.201233f, -96.63788f, -50.14566f, -207.316437f); + float4 r0 = float4(-417.201233f, -97.63788f, -51.14566f, -208.316437f); + TestUtils.AreEqual(--a0, r0); + + float4 a1 = float4(439.479065f, 337.968933f, 246.088989f, 171.964539f); + float4 r1 = float4(438.479065f, 336.968933f, 245.088989f, 170.964539f); + TestUtils.AreEqual(--a1, r1); + + float4 a2 = float4(-227.44281f, 326.5078f, 400.7209f, -478.031372f); + float4 r2 = float4(-228.44281f, 325.5078f, 399.7209f, -479.031372f); + TestUtils.AreEqual(--a2, r2); + + float4 a3 = float4(-326.452972f, 112.796875f, -341.9763f, -503.27417f); + float4 r3 = float4(-327.452972f, 111.796875f, -342.9763f, -504.27417f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float4_operator_postfix_dec() + { + float4 a0 = float4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f); + float4 r0 = float4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f); + TestUtils.AreEqual(a0--, r0); + + float4 a1 = float4(409.557556f, -281.1117f, -262.0626f, -182.405731f); + float4 r1 = float4(409.557556f, -281.1117f, -262.0626f, -182.405731f); + TestUtils.AreEqual(a1--, r1); + + float4 a2 = float4(450.1281f, -332.154968f, -261.0089f, 205.461121f); + float4 r2 = float4(450.1281f, -332.154968f, -261.0089f, 205.461121f); + TestUtils.AreEqual(a2--, r2); + + float4 a3 = float4(-230.227783f, 378.641235f, 487.344849f, -192.177856f); + float4 r3 = float4(-230.227783f, 378.641235f, 487.344849f, -192.177856f); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void float4_shuffle_result_1() + { + float4 a = float4(0, 1, 2, 3); + float4 b = float4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW), (7)); + } + + [TestCompiler] + public static void float4_shuffle_result_2() + { + float4 a = float4(0, 1, 2, 3); + float4 b = float4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), float2(5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX), float2(6, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), float2(1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftW), float2(7, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftZ), float2(7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), float2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW), float2(5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), float2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightW), float2(6, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ), float2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), float2(6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), float2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), float2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightY), float2(7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), float2(4, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW), float2(1, 3)); + } + + [TestCompiler] + public static void float4_shuffle_result_3() + { + float4 a = float4(0, 1, 2, 3); + float4 b = float4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightY), float3(2, 7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.LeftW), float3(6, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightX), float3(2, 7, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), float3(5, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), float3(7, 6, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightX), float3(3, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightW), float3(3, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.RightZ), float3(6, 5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), float3(5, 4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightW, ShuffleComponent.LeftX), float3(7, 7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(6, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightW), float3(6, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightY), float3(3, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), float3(6, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightW), float3(5, 1, 7)); + } + + [TestCompiler] + public static void float4_shuffle_result_4() + { + float4 a = float4(0, 1, 2, 3); + float4 b = float4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ), float4(1, 3, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightZ), float4(5, 3, 6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.RightW, ShuffleComponent.LeftZ), float4(6, 6, 7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ), float4(4, 5, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), float4(6, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightW), float4(4, 5, 5, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightW, ShuffleComponent.LeftX, ShuffleComponent.RightW), float4(1, 7, 0, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftX), float4(5, 0, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightW, ShuffleComponent.LeftW, ShuffleComponent.LeftY), float4(4, 7, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), float4(5, 4, 1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float4(0, 2, 6, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightW, ShuffleComponent.RightW), float4(2, 5, 7, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ, ShuffleComponent.RightX), float4(3, 4, 2, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), float4(4, 0, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(6, 4, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.LeftY, ShuffleComponent.RightY), float4(3, 7, 1, 5)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4.gen.cs.meta new file mode 100644 index 0000000..3784a8b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f415d23fdfcb53742837bd44ef1b7825 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x2.gen.cs new file mode 100644 index 0000000..0dcb4d1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x2.gen.cs @@ -0,0 +1,945 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat4x2 + { + [TestCompiler] + public static void float4x2_zero() + { + TestUtils.AreEqual(float4x2.zero.c0.x, 0.0f); + TestUtils.AreEqual(float4x2.zero.c0.y, 0.0f); + TestUtils.AreEqual(float4x2.zero.c0.z, 0.0f); + TestUtils.AreEqual(float4x2.zero.c0.w, 0.0f); + TestUtils.AreEqual(float4x2.zero.c1.x, 0.0f); + TestUtils.AreEqual(float4x2.zero.c1.y, 0.0f); + TestUtils.AreEqual(float4x2.zero.c1.z, 0.0f); + TestUtils.AreEqual(float4x2.zero.c1.w, 0.0f); + } + + [TestCompiler] + public static void float4x2_operator_equal_wide_wide() + { + float4x2 a0 = float4x2(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f); + float4x2 b0 = float4x2(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x2 a1 = float4x2(168.15448f, 350.729553f, 367.178467f, 46.9414673f, 188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float4x2 b1 = float4x2(194.678345f, 471.644836f, -404.044678f, -144.696747f, -494.446655f, -252.970367f, 234.417114f, 398.724f); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x2 a2 = float4x2(417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float4x2 b2 = float4x2(260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x2 a3 = float4x2(-22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f); + float4x2 b3 = float4x2(-174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_equal_wide_scalar() + { + float4x2 a0 = float4x2(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f); + float b0 = (-155.815765f); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x2 a1 = float4x2(290.04895f, -65.66748f, -69.68326f, -191.190765f, 186.845215f, -232.895691f, -319.144043f, -49.70108f); + float b1 = (-132.6352f); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x2 a2 = float4x2(-300.8819f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f, -410.91687f); + float b2 = (333.396851f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x2 a3 = float4x2(110.501282f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f, 291.051941f, 423.97168f); + float b3 = (-390.103577f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float4x2 b0 = float4x2(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-5.691559f); + float4x2 b1 = float4x2(-30.8659363f, -362.9831f, 184.503174f, -160.470612f, 316.668823f, 390.369263f, 505.1051f, -294.6487f); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (443.1991f); + float4x2 b2 = float4x2(96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-336.612427f); + float4x2 b3 = float4x2(365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_not_equal_wide_wide() + { + float4x2 a0 = float4x2(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f); + float4x2 b0 = float4x2(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x2 a1 = float4x2(332.4262f, 397.11322f, -431.374969f, 489.0108f, 398.4336f, -489.817932f, 171.4049f, -67.82968f); + float4x2 b1 = float4x2(3.024231f, 155.812744f, -19.8399048f, -6.01693726f, -406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x2 a2 = float4x2(-192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float4x2 b2 = float4x2(93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x2 a3 = float4x2(-72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f); + float4x2 b3 = float4x2(415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_not_equal_wide_scalar() + { + float4x2 a0 = float4x2(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f); + float b0 = (-393.413544f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x2 a1 = float4x2(492.20105f, 270.341f, -380.243256f, 501.899048f, -134.345459f, 458.400452f, 46.7709961f, 161.459961f); + float b1 = (-165.241516f); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x2 a2 = float4x2(261.514221f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f, -497.459473f); + float b2 = (-145.6124f); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x2 a3 = float4x2(-80.93225f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f); + float b3 = (-328.587769f); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float4x2 b0 = float4x2(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-452.820679f); + float4x2 b1 = float4x2(209.439331f, 50.10797f, 372.4344f, -488.0213f, 489.740784f, 270.4001f, -472.846771f, -286.850464f); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-384.691864f); + float4x2 b2 = float4x2(443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-239.231018f); + float4x2 b3 = float4x2(411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_wide_wide() + { + float4x2 a0 = float4x2(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f); + float4x2 b0 = float4x2(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f); + bool4x2 r0 = bool4x2(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x2 a1 = float4x2(-69.3696f, -135.667969f, -194.787354f, -33.473877f, -19.67508f, 423.237976f, -71.6983f, -501.886f); + float4x2 b1 = float4x2(473.2249f, 15.8916626f, 270.049927f, 490.914f, -185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4x2 a2 = float4x2(7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float4x2 b2 = float4x2(73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool4x2 r2 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4x2 a3 = float4x2(269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f); + float4x2 b3 = float4x2(-382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f); + bool4x2 r3 = bool4x2(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_wide_scalar() + { + float4x2 a0 = float4x2(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f); + float b0 = (199.0675f); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float4x2 a1 = float4x2(-111.413147f, 82.6654053f, -361.6429f, -68.0881958f, 12.7880249f, -66.703064f, -78.76297f, 25.7277222f); + float b1 = (-288.081116f); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float4x2 a2 = float4x2(101.37085f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f, -334.622742f); + float b2 = (-330.442657f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4x2 a3 = float4x2(-98.31558f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f, -455.37558f, 360.291565f); + float b3 = (300.410156f); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float4x2 b0 = float4x2(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-458.904541f); + float4x2 b1 = float4x2(13.6846924f, -458.5069f, 248.276489f, 389.231445f, 488.745544f, -221.637878f, -424.2672f, 249.059021f); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-22.1361389f); + float4x2 b2 = float4x2(-442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f); + bool4x2 r2 = bool4x2(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (122.164795f); + float4x2 b3 = float4x2(96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_wide_wide() + { + float4x2 a0 = float4x2(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f); + float4x2 b0 = float4x2(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f); + bool4x2 r0 = bool4x2(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + float4x2 a1 = float4x2(489.1399f, 51.9188843f, 155.384766f, -135.631653f, -425.978149f, -228.430511f, 383.03833f, 136.533569f); + float4x2 b1 = float4x2(-77.6748657f, -46.584198f, -415.377f, 71.46698f, -206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool4x2 r1 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4x2 a2 = float4x2(8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float4x2 b2 = float4x2(364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float4x2 a3 = float4x2(105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f); + float4x2 b3 = float4x2(-352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_wide_scalar() + { + float4x2 a0 = float4x2(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f); + float b0 = (-302.816956f); + bool4x2 r0 = bool4x2(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float4x2 a1 = float4x2(501.306824f, -86.12451f, -489.090576f, -172.518158f, -18.1496277f, -236.414948f, -238.8945f, -27.2391357f); + float b1 = (-367.027771f); + bool4x2 r1 = bool4x2(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4x2 a2 = float4x2(471.779358f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f); + float b2 = (240.164551f); + bool4x2 r2 = bool4x2(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4x2 a3 = float4x2(-7.34790039f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f); + float b3 = (-261.865967f); + bool4x2 r3 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float4x2 b0 = float4x2(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (-182.48288f); + float4x2 b1 = float4x2(-158.2933f, -162.685333f, -193.328674f, 230.181274f, -102.58783f, 392.520569f, -177.478668f, -10.2950134f); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-24.04895f); + float4x2 b2 = float4x2(172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f); + bool4x2 r2 = bool4x2(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-361.524841f); + float4x2 b3 = float4x2(-372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f); + bool4x2 r3 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_equal_wide_wide() + { + float4x2 a0 = float4x2(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f); + float4x2 b0 = float4x2(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f); + bool4x2 r0 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x2 a1 = float4x2(-456.12326f, 282.30127f, 421.881165f, -311.71283f, 84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float4x2 b1 = float4x2(306.173279f, 139.564819f, -505.752472f, -489.6268f, -280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool4x2 r1 = bool4x2(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x2 a2 = float4x2(36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float4x2 b2 = float4x2(95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool4x2 r2 = bool4x2(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x2 a3 = float4x2(-77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f); + float4x2 b3 = float4x2(-216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_equal_wide_scalar() + { + float4x2 a0 = float4x2(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f); + float b0 = (292.924255f); + bool4x2 r0 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x2 a1 = float4x2(183.821167f, -257.870056f, -386.801758f, -182.938812f, 349.250122f, 485.311584f, 373.5691f, 259.1515f); + float b1 = (320.4425f); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x2 a2 = float4x2(450.130066f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f, 402.484863f); + float b2 = (-128.525543f); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x2 a3 = float4x2(87.91608f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f); + float b3 = (-502.1736f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float4x2 b0 = float4x2(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (-148.618073f); + float4x2 b1 = float4x2(-506.3001f, 27.5812378f, 48.47113f, 104.883484f, -488.685852f, -480.435181f, 421.936646f, 239.721069f); + bool4x2 r1 = bool4x2(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-101.018433f); + float4x2 b2 = float4x2(-283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f); + bool4x2 r2 = bool4x2(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-116.019989f); + float4x2 b3 = float4x2(-442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f); + bool4x2 r3 = bool4x2(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_equal_wide_wide() + { + float4x2 a0 = float4x2(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f); + float4x2 b0 = float4x2(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f); + bool4x2 r0 = bool4x2(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x2 a1 = float4x2(152.946411f, 48.9862061f, 57.3381348f, 300.4649f, 349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float4x2 b1 = float4x2(-322.7154f, 125.47821f, -25.77658f, 297.518921f, 73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool4x2 r1 = bool4x2(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x2 a2 = float4x2(-131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float4x2 b2 = float4x2(381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool4x2 r2 = bool4x2(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x2 a3 = float4x2(-223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f); + float4x2 b3 = float4x2(453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f); + bool4x2 r3 = bool4x2(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_equal_wide_scalar() + { + float4x2 a0 = float4x2(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f); + float b0 = (189.205139f); + bool4x2 r0 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x2 a1 = float4x2(-221.505463f, -116.440369f, -395.3633f, 164.772583f, -287.007324f, 355.837036f, 184.195557f, 273.012268f); + float b1 = (252.994324f); + bool4x2 r1 = bool4x2(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x2 a2 = float4x2(-418.1424f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f, 179.005066f); + float b2 = (249.3841f); + bool4x2 r2 = bool4x2(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x2 a3 = float4x2(71.1767f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f, 30.99707f, 199.232239f); + float b3 = (-331.271667f); + bool4x2 r3 = bool4x2(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float4x2 b0 = float4x2(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (79.39917f); + float4x2 b1 = float4x2(416.420532f, 379.2735f, -439.5147f, 67.14099f, -74.56064f, -367.256348f, 494.950745f, -61.2355347f); + bool4x2 r1 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-429.170258f); + float4x2 b2 = float4x2(-213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-400.47052f); + float4x2 b3 = float4x2(-283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f); + bool4x2 r3 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_add_wide_wide() + { + float4x2 a0 = float4x2(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f); + float4x2 b0 = float4x2(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f); + float4x2 r0 = float4x2(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x2 a1 = float4x2(-178.701447f, -420.033783f, 290.711121f, -446.529633f, 491.066467f, -261.1173f, -298.4069f, 502.4286f); + float4x2 b1 = float4x2(244.495117f, -78.67575f, 352.2055f, 82.7791748f, 462.5473f, -405.492f, -428.498322f, -41.87259f); + float4x2 r1 = float4x2(65.79367f, -498.709534f, 642.9166f, -363.750458f, 953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x2 a2 = float4x2(284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float4x2 b2 = float4x2(-269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float4x2 r2 = float4x2(14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x2 a3 = float4x2(-62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f); + float4x2 b3 = float4x2(492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f); + float4x2 r3 = float4x2(429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_add_wide_scalar() + { + float4x2 a0 = float4x2(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f); + float b0 = (500.997253f); + float4x2 r0 = float4x2(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x2 a1 = float4x2(443.115234f, 41.3210449f, -471.256073f, -2.664978f, 78.98584f, 202.14801f, 311.725464f, 10.3458252f); + float b1 = (268.092224f); + float4x2 r1 = float4x2(711.207458f, 309.413269f, -203.163849f, 265.427246f, 347.078064f, 470.240234f, 579.8177f, 278.438049f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x2 a2 = float4x2(-151.244446f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f); + float b2 = (355.2328f); + float4x2 r2 = float4x2(203.988342f, 157.432037f, 611.188049f, 599.3799f, 173.606232f, 352.777863f, 656.1334f, 118.740845f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x2 a3 = float4x2(-160.5841f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f, -198.837769f, -381.930969f); + float b3 = (-172.5422f); + float4x2 r3 = float4x2(-333.1263f, -415.4833f, 293.8019f, 65.44528f, 91.7518f, 200.324615f, -371.379974f, -554.473145f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float4x2 b0 = float4x2(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f); + float4x2 r0 = float4x2(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-37.0550232f); + float4x2 b1 = float4x2(230.805f, -140.174347f, 18.02417f, -138.614349f, 26.9041748f, -374.5376f, 154.46759f, 268.38385f); + float4x2 r1 = float4x2(193.749969f, -177.22937f, -19.0308533f, -175.669373f, -10.1508484f, -411.592621f, 117.412567f, 231.328827f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-190.963013f); + float4x2 b2 = float4x2(188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f); + float4x2 r2 = float4x2(-2.34576416f, -695.87915f, -170.508972f, 6.982361f, 60.4489136f, -612.0534f, -79.51764f, -264.2319f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (480.884583f); + float4x2 b3 = float4x2(438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f); + float4x2 r3 = float4x2(918.9376f, 547.7289f, 210.088562f, 436.862671f, 678.5793f, 499.998535f, 830.1224f, 847.1191f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_sub_wide_wide() + { + float4x2 a0 = float4x2(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f); + float4x2 b0 = float4x2(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f); + float4x2 r0 = float4x2(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x2 a1 = float4x2(110.7771f, -235.5416f, 78.87933f, -347.686157f, -470.820557f, -11.45929f, -167.9479f, 330.676758f); + float4x2 b1 = float4x2(-477.876434f, 164.5f, 428.009583f, 72.62781f, -446.8805f, 432.091431f, -225.554657f, -112.451965f); + float4x2 r1 = float4x2(588.653564f, -400.0416f, -349.130249f, -420.313965f, -23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x2 a2 = float4x2(-508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float4x2 b2 = float4x2(-210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float4x2 r2 = float4x2(-297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x2 a3 = float4x2(-308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f); + float4x2 b3 = float4x2(-221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f); + float4x2 r3 = float4x2(-87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_sub_wide_scalar() + { + float4x2 a0 = float4x2(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f); + float b0 = (-291.5904f); + float4x2 r0 = float4x2(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x2 a1 = float4x2(-377.9257f, 400.5349f, 461.507568f, -246.287262f, 21.6052856f, 246.350708f, -121.427368f, -122.718414f); + float b1 = (-470.262054f); + float4x2 r1 = float4x2(92.3363647f, 870.797f, 931.769653f, 223.9748f, 491.86734f, 716.6128f, 348.8347f, 347.54364f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x2 a2 = float4x2(-122.938721f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f, 253.443237f); + float b2 = (360.15094f); + float4x2 r2 = float4x2(-483.089661f, -17.2763672f, -341.22113f, -195.548584f, -263.107239f, 125.764038f, -565.908569f, -106.7077f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x2 a3 = float4x2(-121.163055f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f, 354.886047f, 98.82147f); + float b3 = (187.998413f); + float4x2 r3 = float4x2(-309.161469f, -638.8187f, -436.071777f, -214.994476f, 253.5542f, 261.91217f, 166.887634f, -89.17694f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float4x2 b0 = float4x2(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f); + float4x2 r0 = float4x2(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (341.204956f); + float4x2 b1 = float4x2(-385.775055f, 75.3947754f, 354.943726f, 169.131409f, 88.21661f, 1.73498535f, 122.538025f, -264.945f); + float4x2 r1 = float4x2(726.98f, 265.810181f, -13.73877f, 172.073547f, 252.988342f, 339.469971f, 218.666931f, 606.149963f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-50.83719f); + float4x2 b2 = float4x2(-347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f); + float4x2 r2 = float4x2(296.813141f, -54.90274f, 28.25824f, -405.195526f, 241.6553f, 2.37179565f, 195.5104f, -350.040558f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (432.1847f); + float4x2 b3 = float4x2(-163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f); + float4x2 r3 = float4x2(596.0647f, 255.442139f, 537.170532f, 877.9823f, 461.057861f, 601.772949f, 702.543945f, 364.1371f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mul_wide_wide() + { + float4x2 a0 = float4x2(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f); + float4x2 b0 = float4x2(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f); + float4x2 r0 = float4x2(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x2 a1 = float4x2(-239.4964f, 236.675842f, -211.8562f, -216.654816f, 467.9583f, -178.021912f, -386.394257f, -422.4354f); + float4x2 b1 = float4x2(358.880737f, 214.853577f, 253.422791f, -307.7138f, 184.47113f, 426.436462f, -144.281433f, 459.4796f); + float4x2 r1 = float4x2(-85950.64f, 50850.6523f, -53689.19f, 66667.68f, 86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x2 a2 = float4x2(464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float4x2 b2 = float4x2(-358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float4x2 r2 = float4x2(-166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x2 a3 = float4x2(-83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f); + float4x2 b3 = float4x2(-189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f); + float4x2 r3 = float4x2(15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mul_wide_scalar() + { + float4x2 a0 = float4x2(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f); + float b0 = (192.211182f); + float4x2 r0 = float4x2(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x2 a1 = float4x2(-46.729187f, 422.08252f, -48.83484f, 355.30835f, 119.356628f, -196.995819f, 98.23602f, -325.552155f); + float b1 = (-238.405f); + float4x2 r1 = float4x2(11140.4717f, -100626.586f, 11642.47f, -84707.29f, -28455.2168f, 46964.79f, -23419.959f, 77613.26f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x2 a2 = float4x2(53.9373169f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f, 56.62915f); + float b2 = (-87.45099f); + float4x2 r2 = float4x2(-4716.87158f, 11410.0908f, 19466.1152f, -11020.1377f, -25654.7168f, -15249.875f, 28606.9727f, -4952.27539f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x2 a3 = float4x2(257.541565f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f); + float b3 = (-475.6087f); + float4x2 r3 = float4x2(-122489.008f, 215304.2f, 23409.752f, -67346.65f, -205265.9f, -85778.4844f, 19463.5547f, -132953.328f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float4x2 b0 = float4x2(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f); + float4x2 r0 = float4x2(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (491.801575f); + float4x2 b1 = float4x2(49.90204f, 424.4626f, 160.1181f, -395.9921f, 125.20166f, -265.0158f, 314.656128f, -292.712036f); + float4x2 r1 = float4x2(24541.9f, 208751.375f, 78746.3359f, -194749.531f, 61574.375f, -130335.195f, 154748.375f, -143956.234f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (-37.72989f); + float4x2 b2 = float4x2(165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f); + float4x2 r2 = float4x2(-6239.099f, -13451.376f, 7123.906f, -19050.4141f, -1530.78247f, 7801.602f, 2324.2627f, -4488.786f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (53.7483521f); + float4x2 b3 = float4x2(-198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f); + float4x2 r3 = float4x2(-10678.1533f, 5172.531f, -1087.96777f, -1672.86169f, 2090.297f, -705.89325f, 27297.2441f, 5107.058f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_div_wide_wide() + { + float4x2 a0 = float4x2(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f); + float4x2 b0 = float4x2(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f); + float4x2 r0 = float4x2(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x2 a1 = float4x2(-274.050476f, 127.538574f, -447.671753f, -137.458588f, -136.133179f, 12.4376221f, 228.513f, 356.972351f); + float4x2 b1 = float4x2(484.362732f, -390.7818f, 402.02533f, 316.6507f, 397.154419f, -303.2622f, -118.591248f, -81.6503f); + float4x2 r1 = float4x2(-0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f, -0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x2 a2 = float4x2(-24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float4x2 b2 = float4x2(-84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float4x2 r2 = float4x2(0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x2 a3 = float4x2(315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f); + float4x2 b3 = float4x2(-218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f); + float4x2 r3 = float4x2(-1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_div_wide_scalar() + { + float4x2 a0 = float4x2(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f); + float b0 = (-60.0243835f); + float4x2 r0 = float4x2(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x2 a1 = float4x2(-348.9238f, 210.557922f, 287.6424f, 504.372253f, 491.7871f, -26.6315918f, -253.236664f, 272.895142f); + float b1 = (-275.5387f); + float4x2 r1 = float4x2(1.26633322f, -0.764168262f, -1.04392743f, -1.83049512f, -1.78482044f, 0.09665282f, 0.91906023f, -0.990405858f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x2 a2 = float4x2(178.096191f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f); + float b2 = (-460.87558f); + float4x2 r2 = float4x2(-0.386430085f, 1.0906328f, 0.182966515f, 0.379040122f, -0.181819841f, -0.427538484f, -0.688186347f, -0.875262558f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x2 a3 = float4x2(81.6464844f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f); + float b3 = (60.6068726f); + float4x2 r3 = float4x2(1.3471489f, -6.82365656f, 3.42108083f, 5.916196f, 0.3423553f, -1.13150728f, 5.12652159f, 6.887089f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float4x2 b0 = float4x2(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f); + float4x2 r0 = float4x2(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-472.979767f); + float4x2 b1 = float4x2(192.230164f, -200.296875f, -490.181519f, -211.10257f, -322.852356f, -137.985291f, 84.32971f, 355.063477f); + float4x2 r1 = float4x2(-2.46048665f, 2.36139369f, 0.9649074f, 2.24052119f, 1.46500325f, 3.42775488f, -5.60869646f, -1.3320992f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (276.427246f); + float4x2 b2 = float4x2(-382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f); + float4x2 r2 = float4x2(-0.7217647f, -0.5656991f, 0.801596165f, 1.637069f, -6.25463438f, 0.6572982f, -1.57405078f, -29.9793739f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-344.194275f); + float4x2 b3 = float4x2(-449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f); + float4x2 r3 = float4x2(0.7664576f, -2.924214f, 1.02126491f, -1.43777657f, 0.8840111f, -1.41809428f, -0.693553448f, -3.75160837f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mod_wide_wide() + { + float4x2 a0 = float4x2(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f); + float4x2 b0 = float4x2(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f); + float4x2 r0 = float4x2(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x2 a1 = float4x2(-140.770325f, 183.44696f, -463.368378f, 83.83911f, -64.71405f, 295.066833f, 212.25708f, 349.6283f); + float4x2 b1 = float4x2(-145.203766f, -203.384f, -22.52008f, 224.69f, -435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float4x2 r1 = float4x2(-140.770325f, 183.44696f, -12.9667664f, 83.83911f, -64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x2 a2 = float4x2(119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float4x2 b2 = float4x2(-433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float4x2 r2 = float4x2(119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x2 a3 = float4x2(156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f); + float4x2 b3 = float4x2(-131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f); + float4x2 r3 = float4x2(25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mod_wide_scalar() + { + float4x2 a0 = float4x2(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f); + float b0 = (-90.49924f); + float4x2 r0 = float4x2(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x2 a1 = float4x2(-84.47363f, 433.4547f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f, 254.5108f); + float b1 = (-318.7815f); + float4x2 r1 = float4x2(-84.47363f, 114.673218f, -54.60019f, -172.338867f, -110.933167f, 222.361877f, 5.79638672f, 254.5108f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x2 a2 = float4x2(-433.0937f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f, -331.993347f); + float b2 = (-203.082611f); + float4x2 r2 = float4x2(-26.9284668f, -75.3564148f, 49.2065125f, -69.4039f, 5.337219f, -75.97781f, 77.385376f, -128.910736f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x2 a3 = float4x2(336f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f, 235.724f, 465.984863f); + float b3 = (67.8396f); + float4x2 r3 = float4x2(64.6416f, -56.8811646f, 38.1759033f, 67.76819f, 66.57562f, -59.0822449f, 32.2052f, 58.9472656f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float4x2 b0 = float4x2(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f); + float4x2 r0 = float4x2(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (-372.067078f); + float4x2 b1 = float4x2(201.012268f, -95.566864f, -258.951477f, 106.983582f, 469.323547f, -34.80899f, 184.836548f, 374.79425f); + float4x2 r1 = float4x2(-171.05481f, -85.3664856f, -113.1156f, -51.116333f, -372.067078f, -23.9771729f, -2.393982f, -372.067078f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (-131.872711f); + float4x2 b2 = float4x2(-120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f); + float4x2 r2 = float4x2(-11.7798462f, -1.179779f, -20.4707642f, -131.872711f, -131.872711f, -131.872711f, -131.872711f, -131.872711f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-433.523071f); + float4x2 b3 = float4x2(-163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f); + float4x2 r3 = float4x2(-105.789368f, -79.5150146f, -101.572632f, -9.093384f, -50.1112061f, -1.08209229f, -48.138916f, -165.3913f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_plus() + { + float4x2 a0 = float4x2(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f); + float4x2 r0 = float4x2(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f); + TestUtils.AreEqual(+a0, r0); + + float4x2 a1 = float4x2(-320.518463f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f); + float4x2 r1 = float4x2(-320.518463f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f); + TestUtils.AreEqual(+a1, r1); + + float4x2 a2 = float4x2(309.59314f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f); + float4x2 r2 = float4x2(309.59314f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f); + TestUtils.AreEqual(+a2, r2); + + float4x2 a3 = float4x2(239.152344f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f); + float4x2 r3 = float4x2(239.152344f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float4x2_operator_neg() + { + float4x2 a0 = float4x2(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f); + float4x2 r0 = float4x2(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f); + TestUtils.AreEqual(-a0, r0); + + float4x2 a1 = float4x2(19.68689f, -180.600525f, 223.381287f, -410.392059f, -395.681549f, -349.149475f, -110.9393f, -238.2196f); + float4x2 r1 = float4x2(-19.68689f, 180.600525f, -223.381287f, 410.392059f, 395.681549f, 349.149475f, 110.9393f, 238.2196f); + TestUtils.AreEqual(-a1, r1); + + float4x2 a2 = float4x2(292.543518f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f); + float4x2 r2 = float4x2(-292.543518f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f); + TestUtils.AreEqual(-a2, r2); + + float4x2 a3 = float4x2(196.387573f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f); + float4x2 r3 = float4x2(-196.387573f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float4x2_operator_prefix_inc() + { + float4x2 a0 = float4x2(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f); + float4x2 r0 = float4x2(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f); + TestUtils.AreEqual(++a0, r0); + + float4x2 a1 = float4x2(-76.50766f, 64.0965f, 148.679321f, 363.2849f, -115.559235f, -326.8778f, -179.894653f, 339.8766f); + float4x2 r1 = float4x2(-75.50766f, 65.0965f, 149.679321f, 364.2849f, -114.559235f, -325.8778f, -178.894653f, 340.8766f); + TestUtils.AreEqual(++a1, r1); + + float4x2 a2 = float4x2(-38.41043f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f, -271.2893f); + float4x2 r2 = float4x2(-37.41043f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f, -270.2893f); + TestUtils.AreEqual(++a2, r2); + + float4x2 a3 = float4x2(-264.380066f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f); + float4x2 r3 = float4x2(-263.380066f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float4x2_operator_postfix_inc() + { + float4x2 a0 = float4x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f); + float4x2 r0 = float4x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f); + TestUtils.AreEqual(a0++, r0); + + float4x2 a1 = float4x2(153.7503f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f); + float4x2 r1 = float4x2(153.7503f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f); + TestUtils.AreEqual(a1++, r1); + + float4x2 a2 = float4x2(-270.652466f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f); + float4x2 r2 = float4x2(-270.652466f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f); + TestUtils.AreEqual(a2++, r2); + + float4x2 a3 = float4x2(188.006592f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f); + float4x2 r3 = float4x2(188.006592f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float4x2_operator_prefix_dec() + { + float4x2 a0 = float4x2(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f); + float4x2 r0 = float4x2(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f); + TestUtils.AreEqual(--a0, r0); + + float4x2 a1 = float4x2(171.964539f, 298.2848f, 326.5078f, 400.7209f, -478.031372f, -326.452972f, -24.5845032f, 112.796875f); + float4x2 r1 = float4x2(170.964539f, 297.2848f, 325.5078f, 399.7209f, -479.031372f, -327.452972f, -25.5845032f, 111.796875f); + TestUtils.AreEqual(--a1, r1); + + float4x2 a2 = float4x2(-341.9763f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f); + float4x2 r2 = float4x2(-342.9763f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f); + TestUtils.AreEqual(--a2, r2); + + float4x2 a3 = float4x2(181.4751f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f); + float4x2 r3 = float4x2(180.4751f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float4x2_operator_postfix_dec() + { + float4x2 a0 = float4x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f); + float4x2 r0 = float4x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f); + TestUtils.AreEqual(a0--, r0); + + float4x2 a1 = float4x2(-182.405731f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f); + float4x2 r1 = float4x2(-182.405731f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f); + TestUtils.AreEqual(a1--, r1); + + float4x2 a2 = float4x2(487.344849f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f); + float4x2 r2 = float4x2(487.344849f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f); + TestUtils.AreEqual(a2--, r2); + + float4x2 a3 = float4x2(311.299f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f); + float4x2 r3 = float4x2(311.299f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x2.gen.cs.meta new file mode 100644 index 0000000..bc29668 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24d6c72f4a165e342afb784bad62cab5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x3.gen.cs new file mode 100644 index 0000000..1c9dfc5 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x3.gen.cs @@ -0,0 +1,949 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat4x3 + { + [TestCompiler] + public static void float4x3_zero() + { + TestUtils.AreEqual(float4x3.zero.c0.x, 0.0f); + TestUtils.AreEqual(float4x3.zero.c0.y, 0.0f); + TestUtils.AreEqual(float4x3.zero.c0.z, 0.0f); + TestUtils.AreEqual(float4x3.zero.c0.w, 0.0f); + TestUtils.AreEqual(float4x3.zero.c1.x, 0.0f); + TestUtils.AreEqual(float4x3.zero.c1.y, 0.0f); + TestUtils.AreEqual(float4x3.zero.c1.z, 0.0f); + TestUtils.AreEqual(float4x3.zero.c1.w, 0.0f); + TestUtils.AreEqual(float4x3.zero.c2.x, 0.0f); + TestUtils.AreEqual(float4x3.zero.c2.y, 0.0f); + TestUtils.AreEqual(float4x3.zero.c2.z, 0.0f); + TestUtils.AreEqual(float4x3.zero.c2.w, 0.0f); + } + + [TestCompiler] + public static void float4x3_operator_equal_wide_wide() + { + float4x3 a0 = float4x3(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float4x3 b0 = float4x3(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x3 a1 = float4x3(188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float4x3 b1 = float4x3(-494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x3 a2 = float4x3(-22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f, -68.7284241f, 485.769958f, 413.169739f, -418.2693f); + float4x3 b2 = float4x3(-174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f, -468.330963f, 429.495728f, 477.389221f, -433.4254f); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x3 a3 = float4x3(-346.795868f, 504.159668f, 345.186279f, -434.713043f, -499.7741f, 282.019043f, 259.15625f, 306.455933f, 435.2254f, -386.8997f, 211.364014f, -7.229828f); + float4x3 b3 = float4x3(273.5464f, -34.9762268f, 221.968445f, 85.91913f, -85.59894f, 392.7608f, -117.924072f, -445.3056f, -242.468964f, 173.643066f, 389.897766f, -14.2904663f); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_equal_wide_scalar() + { + float4x3 a0 = float4x3(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f, 290.04895f, -132.6352f, -65.66748f, -69.68326f); + float b0 = (-155.815765f); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x3 a1 = float4x3(-191.190765f, -232.895691f, -319.144043f, -49.70108f, -300.8819f, 333.396851f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f); + float b1 = (186.845215f); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x3 a2 = float4x3(-410.91687f, -390.103577f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f, 291.051941f, 423.97168f, -429.8739f, -275.156952f, -56.3323669f); + float b2 = (110.501282f); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x3 a3 = float4x3(-95.83597f, 253.006165f, -300.509521f, 314.866516f, 195.616211f, -26.1289063f, -284.7747f, -242.672058f, 140.3606f, 505.644348f, 506.537964f, -502.3698f); + float b3 = (-124.865326f); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float4x3 b0 = float4x3(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-160.470612f); + float4x3 b1 = float4x3(316.668823f, 390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-227.090637f); + float4x3 b2 = float4x3(-336.612427f, 365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f, 39.3421021f, -350.403717f, -482.717224f); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (239.9654f); + float4x3 b3 = float4x3(-3.40603638f, -1.49484253f, 105.960449f, 151.537537f, 63.2832031f, -289.693176f, 137.553772f, -247.666473f, -339.420563f, 23.2382813f, 21.1778564f, 477.03656f); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_not_equal_wide_wide() + { + float4x3 a0 = float4x3(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f); + float4x3 b0 = float4x3(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x3 a1 = float4x3(398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float4x3 b1 = float4x3(-406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x3 a2 = float4x3(-72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f, -506.828369f, 245.477051f, -173.571045f, 390.338562f); + float4x3 b2 = float4x3(415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f, 420.2151f, -239.176056f, -99.0791f, 4.476013f); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x3 a3 = float4x3(252.837769f, 47.8658447f, 457.7105f, -313.22113f, 391.203857f, 481.786133f, 26.8878174f, -298.1424f, 240.077454f, -332.455139f, -333.607178f, -313.1897f); + float4x3 b3 = float4x3(264.348572f, 451.312317f, 232.958008f, -142.6222f, -300.2256f, 268.333252f, -112.103546f, -270.494019f, -71.9932251f, 99.46326f, 321.7033f, 200.059631f); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_not_equal_wide_scalar() + { + float4x3 a0 = float4x3(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f, 492.20105f, -165.241516f, 270.341f, -380.243256f); + float b0 = (-393.413544f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x3 a1 = float4x3(501.899048f, 458.400452f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f); + float b1 = (-134.345459f); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x3 a2 = float4x3(-497.459473f, -328.587769f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f, 317.286072f, 401.939575f, 210.984863f); + float b2 = (-80.93225f); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x3 a3 = float4x3(-147.096313f, 207.731384f, 284.3921f, -509.0853f, 414.307617f, -52.2944641f, -140.437927f, -316.787781f, -358.696838f, 312.31897f, 270.629456f, -140.016724f); + float b3 = (-193.399048f); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float4x3 b0 = float4x3(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-488.0213f); + float4x3 b1 = float4x3(489.740784f, 270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-268.352264f); + float4x3 b2 = float4x3(-239.231018f, 411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f, 306.1256f, -178.330383f, 382.141968f); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-340.8656f); + float4x3 b3 = float4x3(-17.58023f, -409.874847f, -349.70166f, 275.8543f, -229.371948f, -127.505737f, 90.75342f, -422.087128f, -2.44754028f, -280.5517f, -484.374359f, -33.7634277f); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_wide_wide() + { + float4x3 a0 = float4x3(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f); + float4x3 b0 = float4x3(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool4x3 r0 = bool4x3(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x3 a1 = float4x3(-19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float4x3 b1 = float4x3(-185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool4x3 r1 = bool4x3(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4x3 a2 = float4x3(269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f, -316.1384f, -417.522156f, 441.643433f, -191.950623f); + float4x3 b2 = float4x3(-382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f, -114.556458f, 441.429749f, -113.333679f, 435.622925f); + bool4x3 r2 = bool4x3(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4x3 a3 = float4x3(397.811584f, -144.666626f, 417.079041f, -322.980133f, -81.2850952f, 319.325317f, 146.764038f, -316.583374f, -150.857544f, -314.606323f, 7.14312744f, -458.8273f); + float4x3 b3 = float4x3(383.656128f, -293.7116f, -391.35498f, 43.12201f, 433.223633f, -201.382446f, -241.421173f, 376.469849f, -503.39743f, -359.780945f, 118.631531f, -510.030518f); + bool4x3 r3 = bool4x3(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_wide_scalar() + { + float4x3 a0 = float4x3(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f); + float b0 = (199.0675f); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x3 a1 = float4x3(-68.0881958f, -66.703064f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f); + float b1 = (12.7880249f); + bool4x3 r1 = bool4x3(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float4x3 a2 = float4x3(-334.622742f, 300.410156f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f, -455.37558f, 360.291565f, -296.372131f, 272.488342f, 360.207947f); + float b2 = (-98.31558f); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float4x3 a3 = float4x3(389.727417f, -400.615234f, -85.46912f, -467.702148f, -51.38788f, 201.764648f, -47.8412781f, -180.740051f, -409.0157f, 229.699036f, 176.197876f, -410.45517f); + float b3 = (68.7366943f); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float4x3 b0 = float4x3(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (389.231445f); + float4x3 b1 = float4x3(488.745544f, -221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f); + bool4x3 r1 = bool4x3(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-125.568115f); + float4x3 b2 = float4x3(122.164795f, 96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f, 190.572144f, 108.2583f, 132.550781f); + bool4x3 r2 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-431.515228f); + float4x3 b3 = float4x3(-192.203522f, -431.835f, -85.58124f, 328.670532f, 273.577881f, -178.669067f, 352.6363f, -82.6058044f, 238.908875f, 291.335327f, 183.357361f, -185.0326f); + bool4x3 r3 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_wide_wide() + { + float4x3 a0 = float4x3(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float4x3 b0 = float4x3(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool4x3 r0 = bool4x3(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float4x3 a1 = float4x3(-425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float4x3 b1 = float4x3(-206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4x3 a2 = float4x3(105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f, -496.971832f, 339.888123f, 372.228333f, 313.2387f); + float4x3 b2 = float4x3(-352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f, 337.8899f, -249.505554f, -225.9013f, -249.491272f); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float4x3 a3 = float4x3(-419.108948f, -265.329773f, -42.5019836f, 369.163879f, 67.16907f, -256.6989f, -104.105927f, 499.570129f, 41.6635132f, 151.1521f, 220.688354f, -344.658875f); + float4x3 b3 = float4x3(381.122864f, 325.5454f, 455.49884f, 333.318665f, 118.980347f, 223.19812f, -385.289063f, 333.8808f, -437.4107f, 243.975464f, -302.8199f, -32.7101746f); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_wide_scalar() + { + float4x3 a0 = float4x3(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f, 501.306824f, -367.027771f, -86.12451f, -489.090576f); + float b0 = (-302.816956f); + bool4x3 r0 = bool4x3(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float4x3 a1 = float4x3(-172.518158f, -236.414948f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f); + float b1 = (-18.1496277f); + bool4x3 r1 = bool4x3(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float4x3 a2 = float4x3(-13.6382141f, -261.865967f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f, 290.573059f, 180.2633f, -482.863953f); + float b2 = (-7.34790039f); + bool4x3 r2 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4x3 a3 = float4x3(100.7063f, 501.319763f, -289.280975f, -25.8497f, 455.1624f, -63.3173523f, -17.4467773f, 53.01776f, 88.81958f, 182.357971f, -428.927216f, 408.336853f); + float b3 = (180.672546f); + bool4x3 r3 = bool4x3(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float4x3 b0 = float4x3(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (230.181274f); + float4x3 b1 = float4x3(-102.58783f, 392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (304.864441f); + float4x3 b2 = float4x3(-361.524841f, -372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f, -107.004181f, 331.636536f, -340.840149f); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-384.2146f); + float4x3 b3 = float4x3(-451.726563f, 467.97876f, -236.569122f, 44.6547241f, -285.797852f, 42.730957f, 338.18512f, 274.017029f, -108.60437f, -211.37326f, -19.00415f, 194.114685f); + bool4x3 r3 = bool4x3(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_equal_wide_wide() + { + float4x3 a0 = float4x3(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f); + float4x3 b0 = float4x3(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool4x3 r0 = bool4x3(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x3 a1 = float4x3(84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float4x3 b1 = float4x3(-280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool4x3 r1 = bool4x3(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x3 a2 = float4x3(-77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f, -383.302948f, -5.14703369f, 319.34375f, 465.022217f); + float4x3 b2 = float4x3(-216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f, -202.748352f, -312.476471f, 310.0719f, -320.363037f); + bool4x3 r2 = bool4x3(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x3 a3 = float4x3(145.933472f, -215.074829f, -146.461517f, -349.893982f, 29.5991211f, -131.796631f, -438.9947f, 147.057922f, 221.112488f, -356.145355f, -32.83017f, 442.942017f); + float4x3 b3 = float4x3(186.075989f, -42.6377869f, 82.56506f, 127.189087f, 198.286987f, -450.492035f, 20.901001f, 449.465881f, -478.7727f, 380.053955f, 99.1247559f, -450.329773f); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_equal_wide_scalar() + { + float4x3 a0 = float4x3(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f, 183.821167f, 320.4425f, -257.870056f, -386.801758f); + float b0 = (292.924255f); + bool4x3 r0 = bool4x3(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x3 a1 = float4x3(-182.938812f, 485.311584f, 373.5691f, 259.1515f, 450.130066f, -128.525543f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f); + float b1 = (349.250122f); + bool4x3 r1 = bool4x3(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x3 a2 = float4x3(402.484863f, -502.1736f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f, -24.8275757f, -451.0416f, 429.577576f); + float b2 = (87.91608f); + bool4x3 r2 = bool4x3(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x3 a3 = float4x3(-308.4343f, -279.4071f, 181.672241f, -290.148743f, -184.844086f, 447.6939f, 168.8866f, 26.3789673f, 392.558533f, 255.604858f, 162.163452f, 195.496277f); + float b3 = (355.160339f); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float4x3 b0 = float4x3(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (104.883484f); + float4x3 b1 = float4x3(-488.685852f, -480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-225.223541f); + float4x3 b2 = float4x3(-116.019989f, -442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f, -215.901672f, 39.5603638f, 22.947998f); + bool4x3 r2 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-162.060577f); + float4x3 b3 = float4x3(236.7337f, -253.951965f, -204.719086f, -161.616547f, -64.3859253f, -229.815643f, -484.825653f, -135.040436f, 351.694763f, 111.825378f, -249.982544f, 435.8073f); + bool4x3 r3 = bool4x3(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_equal_wide_wide() + { + float4x3 a0 = float4x3(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float4x3 b0 = float4x3(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool4x3 r0 = bool4x3(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x3 a1 = float4x3(349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float4x3 b1 = float4x3(73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool4x3 r1 = bool4x3(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x3 a2 = float4x3(-223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f, -132.2218f, 303.683777f, 265.210144f, 9.754395f); + float4x3 b2 = float4x3(453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f, -129.3533f, 8.107788f, 426.449524f, 410.693176f); + bool4x3 r2 = bool4x3(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x3 a3 = float4x3(-233.0929f, 26.5675049f, 266.7807f, -250.072235f, 138.040833f, 174.276733f, -420.931641f, -42.8541565f, 216.485046f, 240.053833f, -470.382172f, 98.39673f); + float4x3 b3 = float4x3(470.313416f, 220.399963f, -372.872681f, -242.178558f, 177.506226f, -172.638153f, 60.72284f, 478.250183f, 234.30304f, 297.821228f, 104.584595f, -462.418732f); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_equal_wide_scalar() + { + float4x3 a0 = float4x3(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f, -221.505463f, 252.994324f, -116.440369f, -395.3633f); + float b0 = (189.205139f); + bool4x3 r0 = bool4x3(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x3 a1 = float4x3(164.772583f, 355.837036f, 184.195557f, 273.012268f, -418.1424f, 249.3841f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f); + float b1 = (-287.007324f); + bool4x3 r1 = bool4x3(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x3 a2 = float4x3(179.005066f, -331.271667f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f, 30.99707f, 199.232239f, -74.50003f, -343.386475f, 216.031555f); + float b2 = (71.1767f); + bool4x3 r2 = bool4x3(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x3 a3 = float4x3(-420.403137f, -336.6411f, 317.0946f, -262.424927f, -228.411255f, 123.465454f, 264.102478f, 223.623352f, 440.5354f, -420.727f, 74.8443f, -177.077881f); + float b3 = (-78.38403f); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float4x3 b0 = float4x3(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (67.14099f); + float4x3 b1 = float4x3(-74.56064f, -367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f); + bool4x3 r1 = bool4x3(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (125.303589f); + float4x3 b2 = float4x3(-400.47052f, -283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f, 393.3009f, 18.02362f, -169.92392f); + bool4x3 r2 = bool4x3(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-285.884949f); + float4x3 b3 = float4x3(163.7511f, 191.855347f, 114.0155f, -395.98584f, 189.366577f, 176.19812f, 61.7138062f, 507.548462f, 224.043823f, -422.9937f, -127.054993f, 95.5286255f); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_add_wide_wide() + { + float4x3 a0 = float4x3(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f); + float4x3 b0 = float4x3(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float4x3 r0 = float4x3(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x3 a1 = float4x3(491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float4x3 b1 = float4x3(462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float4x3 r1 = float4x3(953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x3 a2 = float4x3(-62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f, -261.126129f, -309.830353f, 378.363342f, -224.094f); + float4x3 b2 = float4x3(492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f, -474.822937f, 311.390747f, 326.8454f, 475.2119f); + float4x3 r2 = float4x3(429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f, -735.9491f, 1.56039429f, 705.20874f, 251.11792f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x3 a3 = float4x3(-164.555725f, -69.87393f, 224.634644f, -383.9926f, 149.221252f, 169.388f, 163.053955f, 57.0291138f, 342.950073f, 168.680481f, -470.770264f, -117.630493f); + float4x3 b3 = float4x3(314.152954f, -262.594635f, -82.86911f, 156.299561f, 427.40155f, -279.099365f, -448.615234f, 284.3371f, 288.1856f, -232.39505f, -386.871918f, 162.903381f); + float4x3 r3 = float4x3(149.597229f, -332.468567f, 141.765533f, -227.693054f, 576.6228f, -109.711365f, -285.561279f, 341.3662f, 631.1357f, -63.71457f, -857.6422f, 45.27289f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_add_wide_scalar() + { + float4x3 a0 = float4x3(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f); + float b0 = (500.997253f); + float4x3 r0 = float4x3(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f, 944.1125f, 769.0895f, 542.3183f, 29.74118f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x3 a1 = float4x3(-2.664978f, 202.14801f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f); + float b1 = (78.98584f); + float4x3 r1 = float4x3(76.32086f, 281.13385f, 390.7113f, 89.331665f, -72.258606f, 434.218628f, -118.814911f, 334.9411f, 323.132935f, -102.640717f, 76.5309143f, 379.886475f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x3 a2 = float4x3(-236.491943f, -172.5422f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f, -198.837769f, -381.930969f, 402.160339f, -117.024841f, 497.373779f); + float b2 = (-160.5841f); + float4x3 r2 = float4x3(-397.07605f, -333.1263f, -403.5252f, 305.76f, 77.40338f, 103.7099f, 212.282715f, -359.421875f, -542.5151f, 241.576233f, -277.608948f, 336.789673f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x3 a3 = float4x3(485.9093f, 77.81482f, -271.547974f, -133.2518f, 211.86676f, 253.1502f, -342.783173f, -185.248352f, -403.3855f, -358.848236f, 65.24756f, 127.201721f); + float b3 = (-47.75714f); + float4x3 r3 = float4x3(438.152161f, 30.0576782f, -319.3051f, -181.008942f, 164.109619f, 205.393066f, -390.5403f, -233.0055f, -451.142639f, -406.605377f, 17.4904175f, 79.44458f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float4x3 b0 = float4x3(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f); + float4x3 r0 = float4x3(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f, -362.56778f, -94.70776f, -465.6871f, -307.4886f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-138.614349f); + float4x3 b1 = float4x3(26.9041748f, -374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f); + float4x3 r1 = float4x3(-111.710175f, -513.152f, 15.853241f, 129.7695f, -329.577362f, 50.0029f, -643.5305f, -118.160309f, 59.3310242f, 112.797577f, -559.7047f, -27.1689758f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-73.26889f); + float4x3 b2 = float4x3(480.884583f, 438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f, -413.4803f, -260.720184f, 77.54236f); + float4x3 r2 = float4x3(407.6157f, 364.784149f, -6.424591f, -344.0649f, -117.2908f, 124.425812f, -54.1549377f, 275.9689f, 292.9656f, -486.749176f, -333.989075f, 4.273468f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (183.9549f); + float4x3 b3 = float4x3(-51.4989929f, -472.497467f, 107.126892f, 349.0772f, 431.595947f, -314.110962f, 396.996643f, -167.308624f, -157.114532f, 287.7625f, -367.33905f, 96.23682f); + float4x3 r3 = float4x3(132.4559f, -288.542572f, 291.0818f, 533.0321f, 615.550842f, -130.156067f, 580.951538f, 16.64627f, 26.8403625f, 471.7174f, -183.384155f, 280.1917f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_sub_wide_wide() + { + float4x3 a0 = float4x3(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f); + float4x3 b0 = float4x3(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f); + float4x3 r0 = float4x3(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x3 a1 = float4x3(-470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float4x3 b1 = float4x3(-446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float4x3 r1 = float4x3(-23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x3 a2 = float4x3(-308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f, 388.481567f, 138.7182f, -385.5736f, -149.3648f); + float4x3 b2 = float4x3(-221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f, 72.11908f, -154.880585f, -469.659973f, -320.615417f); + float4x3 r2 = float4x3(-87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f, 316.3625f, 293.5988f, 84.0863647f, 171.25061f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x3 a3 = float4x3(-158.534058f, 508.070679f, 482.7008f, 114.569275f, 364.83136f, 229.031f, -168.088074f, 373.4411f, -239.90097f, 379.928467f, 113.011841f, 306.835266f); + float4x3 b3 = float4x3(6.41229248f, -278.865051f, 15.8380737f, 27.51831f, 429.869629f, -458.622467f, -172.064423f, -284.524719f, 42.60669f, -223.474243f, -56.92975f, 61.807312f); + float4x3 r3 = float4x3(-164.94635f, 786.9357f, 466.862732f, 87.0509644f, -65.03827f, 687.653442f, 3.97634888f, 657.9658f, -282.50766f, 603.4027f, 169.941589f, 245.027954f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_sub_wide_scalar() + { + float4x3 a0 = float4x3(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f, -377.9257f, -470.262054f, 400.5349f, 461.507568f); + float b0 = (-291.5904f); + float4x3 r0 = float4x3(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f, -86.3353f, -178.671661f, 692.1253f, 753.097961f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x3 a1 = float4x3(-246.287262f, 246.350708f, -121.427368f, -122.718414f, -122.938721f, 360.15094f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f); + float b1 = (21.6052856f); + float4x3 r1 = float4x3(-267.892548f, 224.745422f, -143.032654f, -144.3237f, -144.544f, 338.545654f, 321.2693f, -2.675476f, 142.99707f, 75.4384155f, 464.3097f, -227.362946f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x3 a2 = float4x3(253.443237f, 187.998413f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f, 354.886047f, 98.82147f, -189.193237f, 269.074829f, -59.11856f); + float b2 = (-121.163055f); + float4x3 r2 = float4x3(374.6063f, 309.161469f, -329.657227f, -126.910309f, 94.16699f, 562.7157f, 571.0736f, 476.0491f, 219.984528f, -68.03018f, 390.237885f, 62.0444946f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x3 a3 = float4x3(363.458374f, -46.1552124f, 109.913269f, 182.646912f, 229.015747f, -144.92868f, 469.2506f, -150.49231f, -192.3125f, -224.356842f, 285.876831f, -63.0108337f); + float b3 = (-73.7792053f); + float4x3 r3 = float4x3(437.237579f, 27.6239929f, 183.692474f, 256.426117f, 302.794952f, -71.1494751f, 543.0298f, -76.7131042f, -118.533295f, -150.577637f, 359.656036f, 10.7683716f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float4x3 b0 = float4x3(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f); + float4x3 r0 = float4x3(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f, -46.61847f, 680.3616f, 219.191711f, -60.35724f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (169.131409f); + float4x3 b1 = float4x3(88.21661f, 1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f); + float4x3 r1 = float4x3(80.9147949f, 167.396423f, 46.5933838f, 434.076416f, 219.9686f, 516.781738f, 165.065857f, 248.226837f, -185.226929f, 461.6239f, 222.3404f, 415.479f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (299.203369f); + float4x3 b2 = float4x3(432.1847f, -163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f, -65.53128f, 440.380371f, 427.360657f); + float4x3 r2 = float4x3(-132.981323f, 463.083374f, 122.460815f, 404.1892f, 745.001f, 328.076538f, 468.7916f, 569.5626f, 231.155762f, 364.73465f, -141.177f, -128.157288f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-81.47296f); + float4x3 b3 = float4x3(41.7131958f, 175.8208f, -214.949158f, -163.446869f, -218.829132f, 389.116882f, -74.10977f, -448.137238f, -410.375f, 363.211f, -263.5354f, 473.546021f); + float4x3 r3 = float4x3(-123.186157f, -257.293762f, 133.4762f, 81.97391f, 137.356171f, -470.589844f, -7.3631897f, 366.664276f, 328.902039f, -444.68396f, 182.062439f, -555.019f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mul_wide_wide() + { + float4x3 a0 = float4x3(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f); + float4x3 b0 = float4x3(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f); + float4x3 r0 = float4x3(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x3 a1 = float4x3(467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float4x3 b1 = float4x3(184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float4x3 r1 = float4x3(86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x3 a2 = float4x3(-83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f, -416.213074f, -103.279205f, -52.9519043f, -40.82834f); + float4x3 b2 = float4x3(-189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f, 296.680359f, 341.001831f, -257.0968f, 17.5936279f); + float4x3 r2 = float4x3(15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f, -123482.242f, -35218.4f, 13613.7656f, -718.3186f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x3 a3 = float4x3(-86.18509f, -257.316528f, 363.857239f, -229.860016f, 8.925293f, -2.44940186f, 37.7583f, 264.451782f, -321.251282f, -268.256042f, 43.9136963f, 274.833069f); + float4x3 b3 = float4x3(-443.845123f, 291.349243f, 490.19165f, 361.320984f, -509.289734f, 315.352661f, 125.083069f, -167.727112f, 396.8877f, -0.320404053f, 143.4115f, -396.3475f); + float4x3 r3 = float4x3(38252.832f, -74968.98f, 178359.781f, -83053.25f, -4545.56f, -772.4254f, 4722.92432f, -44355.7344f, -127500.68f, 85.950325f, 6297.729f, -108929.4f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mul_wide_scalar() + { + float4x3 a0 = float4x3(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f, -46.729187f, -238.405f, 422.08252f, -48.83484f); + float b0 = (192.211182f); + float4x3 r0 = float4x3(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f, -8981.872f, -45824.1055f, 81128.98f, -9386.603f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x3 a1 = float4x3(355.30835f, -196.995819f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f); + float b1 = (119.356628f); + float4x3 r1 = float4x3(42408.4063f, -23512.7559f, 11725.12f, -38856.81f, 6437.77637f, -10437.8555f, -15572.9512f, -26568.1387f, 15040.7275f, 35014.59f, 20813.6426f, -39043.9453f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x3 a2 = float4x3(56.62915f, -475.6087f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f, 120.014465f, -59.508667f, 319.489868f); + float b2 = (257.541565f); + float4x3 r2 = float4x3(14584.36f, -122489.008f, -116586.977f, -12676.3535f, 36468.13f, 111151.258f, 46448.95f, -10539.4922f, 71994.08f, 30908.7129f, -15325.9551f, 82281.92f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x3 a3 = float4x3(-403.523163f, -335.3932f, -364.242554f, 150.686157f, 391.87207f, 179.312439f, 354.5298f, 497.7614f, 418.436584f, -413.333374f, -329.520721f, -322.703064f); + float b3 = (-408.1931f); + float4x3 r3 = float4x3(164715.375f, 136905.188f, 148681.3f, -61509.05f, -159959.484f, -73194.1f, -144716.625f, -203182.781f, -170802.938f, 168719.844f, 134508.1f, 131725.172f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float4x3 b0 = float4x3(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f); + float4x3 r0 = float4x3(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f, -228458.891f, -23181.2285f, -197177.6f, -74380.4141f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (-395.9921f); + float4x3 b1 = float4x3(125.20166f, -265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f); + float4x3 r1 = float4x3(-49578.8672f, 104944.164f, -124601.336f, 115911.656f, 14940.7373f, -65482.14f, -141178.219f, 74768.5859f, -199942.625f, -16066.248f, 81881.31f, 24394.18f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (118.971619f); + float4x3 b2 = float4x3(53.7483521f, -198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f, 340.7486f, 438.986877f, -227.165955f); + float4x3 r2 = float4x3(6394.52832f, -23636.02f, 11449.3623f, -2408.20947f, -3702.86816f, 4626.859f, -1562.49011f, 60422.27f, 11304.4385f, 40539.41f, 52226.98f, -27026.3f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (452.573f); + float4x3 b3 = float4x3(144.014954f, -31.58603f, 42.29773f, -466.027161f, 287.453979f, 328.9969f, -164.243134f, -511.2683f, -9.594299f, 431.190125f, -132.141815f, -87.502655f); + float4x3 r3 = float4x3(65177.28f, -14294.9834f, 19142.81f, -210911.313f, 130093.906f, 148895.109f, -74332.01f, -231386.234f, -4342.12061f, 195145f, -59803.8164f, -39601.34f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_div_wide_wide() + { + float4x3 a0 = float4x3(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f); + float4x3 b0 = float4x3(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f); + float4x3 r0 = float4x3(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x3 a1 = float4x3(-136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float4x3 b1 = float4x3(397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float4x3 r1 = float4x3(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x3 a2 = float4x3(315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f, -106.234528f, 414.312561f, 7.12084961f, 274.073669f); + float4x3 b2 = float4x3(-218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f, 220.2555f, -67.2345f, 2.229187f, -166.210968f); + float4x3 r2 = float4x3(-1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f, -0.482324064f, -6.16220236f, 3.19437075f, -1.64895058f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x3 a3 = float4x3(-39.0026855f, 39.065918f, -147.364166f, 434.3849f, 315.0672f, -106.636017f, -507.925262f, -17.1764526f, -385.865356f, 226.002136f, 345.168457f, 201.544189f); + float4x3 b3 = float4x3(-247.732574f, 84.16095f, 477.148621f, 209.7508f, -386.7222f, -65.27734f, 410.454834f, 367.6507f, -456.572021f, 382.427979f, -163.860687f, -213.721375f); + float4x3 r3 = float4x3(0.157438666f, 0.464181036f, -0.3088433f, 2.07095718f, -0.814712f, 1.6335839f, -1.23746932f, -0.0467194878f, 0.8451358f, 0.5909665f, -2.106475f, -0.9430231f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_div_wide_scalar() + { + float4x3 a0 = float4x3(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f, -348.9238f, -275.5387f, 210.557922f, 287.6424f); + float b0 = (-60.0243835f); + float4x3 r0 = float4x3(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f, 5.813034f, 4.590446f, -3.507873f, -4.79209232f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x3 a1 = float4x3(504.372253f, -26.6315918f, -253.236664f, 272.895142f, 178.096191f, -460.87558f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f); + float b1 = (491.7871f); + float4x3 r1 = float4x3(1.02559066f, -0.0541526824f, -0.5149315f, 0.554905057f, 0.362140834f, -0.9371445f, -1.02208054f, -0.171466067f, -0.355215371f, 0.17039147f, 0.400665343f, 0.64493f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x3 a2 = float4x3(403.387146f, 60.6068726f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f, 147.866211f, 506.658875f, -435.778564f); + float b2 = (81.6464844f); + float4x3 r2 = float4x3(4.940655f, 0.742308438f, -5.06525755f, 2.539497f, 4.391642f, 0.254133224f, -0.8399274f, 3.80546021f, 5.112344f, 1.81105423f, 6.20551968f, -5.33738327f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x3 a3 = float4x3(210.672913f, -19.1908569f, 416.511719f, 427.0136f, 417.1994f, -150.911835f, 488.985535f, -294.738739f, -357.298035f, 288.771667f, 453.429138f, 70.72443f); + float b3 = (-218.781464f); + float4x3 r3 = float4x3(-0.962937653f, 0.08771701f, -1.90377975f, -1.95178151f, -1.90692294f, 0.689783454f, -2.235041f, 1.34718335f, 1.63312757f, -1.31990921f, -2.07252073f, -0.323265165f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float4x3 b0 = float4x3(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f); + float4x3 r0 = float4x3(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f, -0.0882440954f, 0.217123419f, -0.208379045f, -0.08514738f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-211.10257f); + float4x3 b1 = float4x3(-322.852356f, -137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f); + float4x3 r1 = float4x3(0.6538672f, 1.52989185f, -2.5033f, -0.5945488f, -0.7636822f, 0.55119884f, 0.432014316f, -0.612164736f, -1.25020039f, 4.776553f, -0.501966953f, 1.20207453f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-9.220581f); + float4x3 b2 = float4x3(-344.194275f, -449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f, -490.492126f, 485.755432f, -317.572266f); + float4x3 r2 = float4x3(0.0267888848f, 0.0205325447f, -0.0783364251f, 0.02735855f, -0.038516432f, 0.0236816723f, -0.0379891656f, -0.018579524f, -0.100501411f, 0.0187986325f, -0.018981941f, 0.0290345922f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-451.6248f); + float4x3 b3 = float4x3(394.018372f, -262.271423f, -314.246765f, 359.9159f, -101.615356f, 359.517273f, -424.9799f, -192.719574f, -169.749725f, -244.790009f, -187.14386f, -207.713654f); + float4x3 r3 = float4x3(-1.14620233f, 1.72197485f, 1.43716609f, -1.2548064f, 4.444454f, -1.25619769f, 1.06269681f, 2.3434298f, 2.66053319f, 1.84494781f, 2.41324925f, 2.17426634f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mod_wide_wide() + { + float4x3 a0 = float4x3(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f); + float4x3 b0 = float4x3(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f); + float4x3 r0 = float4x3(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x3 a1 = float4x3(-64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float4x3 b1 = float4x3(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float4x3 r1 = float4x3(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x3 a2 = float4x3(156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f, 7.76147461f, 238.094727f, 12.8520508f, -100.240662f); + float4x3 b2 = float4x3(-131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f, 132.180237f, -179.877319f, 51.9685669f, 367.214233f); + float4x3 r2 = float4x3(25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f, 7.76147461f, 58.2174072f, 12.8520508f, -100.240662f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x3 a3 = float4x3(34.552002f, -251.189758f, -238.372253f, 511.514648f, 288.433533f, 367.109863f, 44.760437f, -437.0456f, -259.2056f, -228.565826f, 83.49725f, 424.367065f); + float4x3 b3 = float4x3(-395.2128f, 270.485229f, -73.104126f, 89.3499756f, -288.308533f, -168.324646f, 311.6159f, -468.341949f, 381.983948f, -1.39886475f, -102.288605f, -87.4248657f); + float4x3 r3 = float4x3(34.552002f, -251.189758f, -19.0598755f, 64.76477f, 0.125f, 30.4605713f, 44.760437f, -437.0456f, -259.2056f, -0.5508728f, 83.49725f, 74.6676f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mod_wide_scalar() + { + float4x3 a0 = float4x3(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f, -84.47363f, -318.7815f, 433.4547f, -54.60019f); + float b0 = (-90.49924f); + float4x3 r0 = float4x3(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f, -84.47363f, -47.283783f, 71.45776f, -54.60019f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x3 a1 = float4x3(-172.338867f, 222.361877f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f); + float b1 = (-429.714661f); + float4x3 r1 = float4x3(-172.338867f, 222.361877f, 5.79638672f, 254.5108f, -3.37902832f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 53.8359375f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x3 a2 = float4x3(-331.993347f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f, 235.724f, 465.984863f, -304.153168f, -295.520264f, 313.7224f); + float b2 = (336f); + float4x3 r2 = float4x3(-331.993347f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 69.77362f, -194.761444f, 235.724f, 129.984863f, -304.153168f, -295.520264f, 313.7224f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x3 a3 = float4x3(-232.202637f, 244.096619f, 162.524231f, 390.016174f, 90.00452f, 155.933533f, 217.3377f, -306.819275f, 149.09375f, 503.828369f, -194.130127f, 214.863037f); + float b3 = (191.619751f); + float4x3 r3 = float4x3(-40.5828857f, 52.4768677f, 162.524231f, 6.77667236f, 90.00452f, 155.933533f, 25.7179565f, -115.199524f, 149.09375f, 120.588867f, -2.510376f, 23.2432861f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float4x3 b0 = float4x3(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f); + float4x3 r0 = float4x3(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f, -24.3553162f, -195.410126f, -14.1549377f, -137.470917f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (106.983582f); + float4x3 b1 = float4x3(469.323547f, -34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f); + float4x3 r1 = float4x3(106.983582f, 2.55661f, 106.983582f, 106.983582f, 106.983582f, 106.983582f, 3.33056641f, 106.983582f, 106.983582f, 106.983582f, 106.983582f, 106.983582f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (499.9535f); + float4x3 b2 = float4x3(-433.523071f, -163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f, 271.075134f, 423.7027f, -413.233246f); + float4x3 r2 = float4x3(66.43042f, 8.352936f, 145.945435f, 57.3529053f, 4.78552246f, 20.68866f, 67.51251f, 114.569336f, 231.821716f, 228.878357f, 76.25079f, 86.7202454f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (127.956238f); + float4x3 b3 = float4x3(-298.204681f, -352.4181f, -175.607727f, -152.899292f, 34.6194458f, -380.802948f, 0.352050781f, 485.900879f, 266.150818f, 483.82074f, 11.777832f, 274.135864f); + float4x3 r3 = float4x3(127.956238f, 127.956238f, 127.956238f, 127.956238f, 24.0979f, 127.956238f, 0.1618042f, 127.956238f, 127.956238f, 127.956238f, 10.1779175f, 127.956238f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_plus() + { + float4x3 a0 = float4x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f); + float4x3 r0 = float4x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f); + TestUtils.AreEqual(+a0, r0); + + float4x3 a1 = float4x3(377.230164f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f); + float4x3 r1 = float4x3(377.230164f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f); + TestUtils.AreEqual(+a1, r1); + + float4x3 a2 = float4x3(-364.802551f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f); + float4x3 r2 = float4x3(-364.802551f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f); + TestUtils.AreEqual(+a2, r2); + + float4x3 a3 = float4x3(-29.0835266f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f, 87.64923f); + float4x3 r3 = float4x3(-29.0835266f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f, 87.64923f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float4x3_operator_neg() + { + float4x3 a0 = float4x3(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f, 19.68689f, 268.2367f, -180.600525f, 223.381287f); + float4x3 r0 = float4x3(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f, -19.68689f, -268.2367f, 180.600525f, -223.381287f); + TestUtils.AreEqual(-a0, r0); + + float4x3 a1 = float4x3(-410.392059f, -349.149475f, -110.9393f, -238.2196f, 292.543518f, 469.2926f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f); + float4x3 r1 = float4x3(410.392059f, 349.149475f, 110.9393f, 238.2196f, -292.543518f, -469.2926f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f); + TestUtils.AreEqual(-a1, r1); + + float4x3 a2 = float4x3(175.015015f, -306.1656f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f, 363.716736f, 280.887878f, -270.6513f); + float4x3 r2 = float4x3(-175.015015f, 306.1656f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f, -363.716736f, -280.887878f, 270.6513f); + TestUtils.AreEqual(-a2, r2); + + float4x3 a3 = float4x3(-201.615753f, 95.48926f, 191.070251f, 371.973572f, 296.512573f, -164.169922f, -347.4581f, -237.404968f, -228.701965f, 61.0822754f, 128.331543f, 331.2558f); + float4x3 r3 = float4x3(201.615753f, -95.48926f, -191.070251f, -371.973572f, -296.512573f, 164.169922f, 347.4581f, 237.404968f, 228.701965f, -61.0822754f, -128.331543f, -331.2558f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float4x3_operator_prefix_inc() + { + float4x3 a0 = float4x3(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f, -76.50766f, -305.584778f, 64.0965f, 148.679321f); + float4x3 r0 = float4x3(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f, -75.50766f, -304.584778f, 65.0965f, 149.679321f); + TestUtils.AreEqual(++a0, r0); + + float4x3 a1 = float4x3(363.2849f, -326.8778f, -179.894653f, 339.8766f, -38.41043f, -153.373688f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f); + float4x3 r1 = float4x3(364.2849f, -325.8778f, -178.894653f, 340.8766f, -37.41043f, -152.373688f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f); + TestUtils.AreEqual(++a1, r1); + + float4x3 a2 = float4x3(-271.2893f, -377.5592f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f, 117.9541f, 139.525818f, 335.6897f); + float4x3 r2 = float4x3(-270.2893f, -376.5592f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f, 118.9541f, 140.525818f, 336.6897f); + TestUtils.AreEqual(++a2, r2); + + float4x3 a3 = float4x3(162.6615f, -254.7315f, -89.25604f, 314.36554f, 244.728149f, 34.01062f, -90.44528f, -472.63623f, -34.5667725f, -71.27185f, -396.4901f, -314.987457f); + float4x3 r3 = float4x3(163.6615f, -253.7315f, -88.25604f, 315.36554f, 245.728149f, 35.01062f, -89.44528f, -471.63623f, -33.5667725f, -70.27185f, -395.4901f, -313.987457f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float4x3_operator_postfix_inc() + { + float4x3 a0 = float4x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f); + float4x3 r0 = float4x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f); + TestUtils.AreEqual(a0++, r0); + + float4x3 a1 = float4x3(159.861023f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f); + float4x3 r1 = float4x3(159.861023f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f); + TestUtils.AreEqual(a1++, r1); + + float4x3 a2 = float4x3(-341.498535f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f); + float4x3 r2 = float4x3(-341.498535f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f); + TestUtils.AreEqual(a2++, r2); + + float4x3 a3 = float4x3(64.57703f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f, 439.3f); + float4x3 r3 = float4x3(64.57703f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f, 439.3f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float4x3_operator_prefix_dec() + { + float4x3 a0 = float4x3(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f, 171.964539f, -227.44281f, 298.2848f, 326.5078f); + float4x3 r0 = float4x3(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f, 170.964539f, -228.44281f, 297.2848f, 325.5078f); + TestUtils.AreEqual(--a0, r0); + + float4x3 a1 = float4x3(400.7209f, -326.452972f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f); + float4x3 r1 = float4x3(399.7209f, -327.452972f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f); + TestUtils.AreEqual(--a1, r1); + + float4x3 a2 = float4x3(-406.667725f, -188.69223f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f, 345.021545f, 4.73535156f, -68.65332f); + float4x3 r2 = float4x3(-407.667725f, -189.69223f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f, 344.021545f, 3.73535156f, -69.65332f); + TestUtils.AreEqual(--a2, r2); + + float4x3 a3 = float4x3(481.4961f, -357.673279f, 153.329651f, -233.624329f, -35.23831f, 340.619629f, 259.928833f, 335.354919f, 85.36487f, -1.39398193f, -407.4104f, -145.793427f); + float4x3 r3 = float4x3(480.4961f, -358.673279f, 152.329651f, -234.624329f, -36.23831f, 339.619629f, 258.928833f, 334.354919f, 84.36487f, -2.393982f, -408.4104f, -146.793427f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float4x3_operator_postfix_dec() + { + float4x3 a0 = float4x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f); + float4x3 r0 = float4x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f); + TestUtils.AreEqual(a0--, r0); + + float4x3 a1 = float4x3(-261.0089f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f); + float4x3 r1 = float4x3(-261.0089f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f); + TestUtils.AreEqual(a1--, r1); + + float4x3 a2 = float4x3(379.156128f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f); + float4x3 r2 = float4x3(379.156128f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f); + TestUtils.AreEqual(a2--, r2); + + float4x3 a3 = float4x3(449.637756f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f, -240.610687f); + float4x3 r3 = float4x3(449.637756f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f, -240.610687f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x3.gen.cs.meta new file mode 100644 index 0000000..60f1754 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5d74a51bcf6045408a569332921009f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x4.gen.cs new file mode 100644 index 0000000..0429fa0 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x4.gen.cs @@ -0,0 +1,974 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat4x4 + { + [TestCompiler] + public static void float4x4_zero() + { + TestUtils.AreEqual(float4x4.zero.c0.x, 0.0f); + TestUtils.AreEqual(float4x4.zero.c0.y, 0.0f); + TestUtils.AreEqual(float4x4.zero.c0.z, 0.0f); + TestUtils.AreEqual(float4x4.zero.c0.w, 0.0f); + TestUtils.AreEqual(float4x4.zero.c1.x, 0.0f); + TestUtils.AreEqual(float4x4.zero.c1.y, 0.0f); + TestUtils.AreEqual(float4x4.zero.c1.z, 0.0f); + TestUtils.AreEqual(float4x4.zero.c1.w, 0.0f); + TestUtils.AreEqual(float4x4.zero.c2.x, 0.0f); + TestUtils.AreEqual(float4x4.zero.c2.y, 0.0f); + TestUtils.AreEqual(float4x4.zero.c2.z, 0.0f); + TestUtils.AreEqual(float4x4.zero.c2.w, 0.0f); + TestUtils.AreEqual(float4x4.zero.c3.x, 0.0f); + TestUtils.AreEqual(float4x4.zero.c3.y, 0.0f); + TestUtils.AreEqual(float4x4.zero.c3.z, 0.0f); + TestUtils.AreEqual(float4x4.zero.c3.w, 0.0f); + } + + [TestCompiler] + public static void float4x4_identity() + { + TestUtils.AreEqual(float4x4.identity.c0.x, 1.0f); + TestUtils.AreEqual(float4x4.identity.c0.y, 0.0f); + TestUtils.AreEqual(float4x4.identity.c0.z, 0.0f); + TestUtils.AreEqual(float4x4.identity.c0.w, 0.0f); + TestUtils.AreEqual(float4x4.identity.c1.x, 0.0f); + TestUtils.AreEqual(float4x4.identity.c1.y, 1.0f); + TestUtils.AreEqual(float4x4.identity.c1.z, 0.0f); + TestUtils.AreEqual(float4x4.identity.c1.w, 0.0f); + TestUtils.AreEqual(float4x4.identity.c2.x, 0.0f); + TestUtils.AreEqual(float4x4.identity.c2.y, 0.0f); + TestUtils.AreEqual(float4x4.identity.c2.z, 1.0f); + TestUtils.AreEqual(float4x4.identity.c2.w, 0.0f); + TestUtils.AreEqual(float4x4.identity.c3.x, 0.0f); + TestUtils.AreEqual(float4x4.identity.c3.y, 0.0f); + TestUtils.AreEqual(float4x4.identity.c3.z, 0.0f); + TestUtils.AreEqual(float4x4.identity.c3.w, 1.0f); + } + + [TestCompiler] + public static void float4x4_operator_equal_wide_wide() + { + float4x4 a0 = float4x4(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f, 188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float4x4 b0 = float4x4(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f, -494.446655f, -252.970367f, 234.417114f, 398.724f); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x4 a1 = float4x4(417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f, -22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f); + float4x4 b1 = float4x4(260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f, -174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x4 a2 = float4x4(-68.7284241f, 485.769958f, 413.169739f, -418.2693f, -346.795868f, 504.159668f, 345.186279f, -434.713043f, -499.7741f, 282.019043f, 259.15625f, 306.455933f, 435.2254f, -386.8997f, 211.364014f, -7.229828f); + float4x4 b2 = float4x4(-468.330963f, 429.495728f, 477.389221f, -433.4254f, 273.5464f, -34.9762268f, 221.968445f, 85.91913f, -85.59894f, 392.7608f, -117.924072f, -445.3056f, -242.468964f, 173.643066f, 389.897766f, -14.2904663f); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x4 a3 = float4x4(-32.0532227f, -106.298553f, -382.924957f, -424.7822f, -267.8125f, 229.897034f, 358.1797f, -76.33087f, -493.684326f, 139.350586f, 211.756653f, -178.8342f, -262.786865f, 506.270325f, 352.288879f, -132.7894f); + float4x4 b3 = float4x4(-317.55304f, -265.652771f, -424.168274f, 11.6213379f, 408.686218f, -181.278351f, -139.8205f, -488.924561f, -207.703278f, -341.9881f, -470.552917f, -462.804352f, 419.075562f, 143.638733f, -79.912384f, -224.6936f); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_equal_wide_scalar() + { + float4x4 a0 = float4x4(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f, 290.04895f, -132.6352f, -65.66748f, -69.68326f, -191.190765f, 186.845215f, -232.895691f, -319.144043f); + float b0 = (-155.815765f); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x4 a1 = float4x4(-49.70108f, 333.396851f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f, -410.91687f, 110.501282f, -390.103577f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f); + float b1 = (-300.8819f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x4 a2 = float4x4(291.051941f, -429.8739f, -275.156952f, -56.3323669f, -95.83597f, -124.865326f, 253.006165f, -300.509521f, 314.866516f, 195.616211f, -26.1289063f, -284.7747f, -242.672058f, 140.3606f, 505.644348f, 506.537964f); + float b2 = (423.97168f); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x4 a3 = float4x4(-502.3698f, 87.36731f, -433.136383f, -149.626923f, -358.698547f, -249.126862f, 469.5932f, 511.757751f, 51.911377f, 245.630432f, 192.774841f, -162.209167f, 205.5904f, -376.464355f, 270.5208f, -388.2033f); + float b3 = (-249.517639f); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float4x4 b0 = float4x4(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f, -160.470612f, 316.668823f, 390.369263f, 505.1051f); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-294.6487f); + float4x4 b1 = float4x4(443.1991f, 96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f, -336.612427f, 365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (153.47644f); + float4x4 b2 = float4x4(56.28778f, 39.3421021f, -350.403717f, -482.717224f, 239.9654f, -3.40603638f, -1.49484253f, 105.960449f, 151.537537f, 63.2832031f, -289.693176f, 137.553772f, -247.666473f, -339.420563f, 23.2382813f, 21.1778564f); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (477.03656f); + float4x4 b3 = float4x4(-411.318146f, 122.397095f, -401.49884f, -230.5611f, -214.954041f, 464.6731f, -186.327f, -99.4873352f, 214.232483f, -387.3675f, -448.7962f, 427.889526f, -43.6960449f, 182.698669f, 298.880127f, 246.436829f); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_not_equal_wide_wide() + { + float4x4 a0 = float4x4(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f, 398.4336f, -489.817932f, 171.4049f, -67.82968f); + float4x4 b0 = float4x4(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f, -406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x4 a1 = float4x4(-192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f, -72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f); + float4x4 b1 = float4x4(93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f, 415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x4 a2 = float4x4(-506.828369f, 245.477051f, -173.571045f, 390.338562f, 252.837769f, 47.8658447f, 457.7105f, -313.22113f, 391.203857f, 481.786133f, 26.8878174f, -298.1424f, 240.077454f, -332.455139f, -333.607178f, -313.1897f); + float4x4 b2 = float4x4(420.2151f, -239.176056f, -99.0791f, 4.476013f, 264.348572f, 451.312317f, 232.958008f, -142.6222f, -300.2256f, 268.333252f, -112.103546f, -270.494019f, -71.9932251f, 99.46326f, 321.7033f, 200.059631f); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x4 a3 = float4x4(141.730164f, -261.118866f, 295.578735f, -16.0213013f, -487.266846f, -208.563873f, 30.3494873f, -157.876465f, 275.896057f, -450.7207f, -61.8988647f, 99.19006f, 206.357483f, 32.74652f, -278.623962f, -173.916809f); + float4x4 b3 = float4x4(-91.62833f, -113.010864f, 465.764221f, -485.127716f, -71.7267761f, 486.469238f, 425.8678f, -158.880951f, 292.179565f, 234.179932f, 243.249329f, 117.275146f, 3.97106934f, 410.42218f, -221.124725f, 443.13446f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_not_equal_wide_scalar() + { + float4x4 a0 = float4x4(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f, 492.20105f, -165.241516f, 270.341f, -380.243256f, 501.899048f, -134.345459f, 458.400452f, 46.7709961f); + float b0 = (-393.413544f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x4 a1 = float4x4(161.459961f, -145.6124f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f, -497.459473f, -80.93225f, -328.587769f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f); + float b1 = (261.514221f); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x4 a2 = float4x4(229.670654f, 317.286072f, 401.939575f, 210.984863f, -147.096313f, -193.399048f, 207.731384f, 284.3921f, -509.0853f, 414.307617f, -52.2944641f, -140.437927f, -316.787781f, -358.696838f, 312.31897f, 270.629456f); + float b2 = (-76.5433044f); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x4 a3 = float4x4(-140.016724f, 113.137207f, 479.6996f, 6.097473f, -83.63458f, 249.909363f, 303.956f, 464.888672f, 44.6365356f, -259.91626f, -242.33551f, -403.686523f, -469.1471f, 135.987488f, -490.840759f, 470.225281f); + float b3 = (108.910645f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float4x4 b0 = float4x4(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f, -488.0213f, 489.740784f, 270.4001f, -472.846771f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-286.850464f); + float4x4 b1 = float4x4(-384.691864f, 443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f, -239.231018f, 411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-189.652252f); + float4x4 b2 = float4x4(-212.846558f, 306.1256f, -178.330383f, 382.141968f, -340.8656f, -17.58023f, -409.874847f, -349.70166f, 275.8543f, -229.371948f, -127.505737f, 90.75342f, -422.087128f, -2.44754028f, -280.5517f, -484.374359f); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-33.7634277f); + float4x4 b3 = float4x4(374.593872f, 437.092346f, 286.22583f, -18.2327881f, 289.732361f, 479.485718f, 153.853943f, 502.982117f, -510.3844f, 65.78888f, -237.4867f, 219.916138f, -275.342743f, -78.93146f, -449.403564f, -253.034515f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_wide_wide() + { + float4x4 a0 = float4x4(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f, -19.67508f, 423.237976f, -71.6983f, -501.886f); + float4x4 b0 = float4x4(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f, -185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool4x4 r0 = bool4x4(false, true, false, false, false, true, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x4 a1 = float4x4(7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f, 269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f); + float4x4 b1 = float4x4(73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f, -382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f); + bool4x4 r1 = bool4x4(true, true, true, true, false, false, true, true, false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4x4 a2 = float4x4(-316.1384f, -417.522156f, 441.643433f, -191.950623f, 397.811584f, -144.666626f, 417.079041f, -322.980133f, -81.2850952f, 319.325317f, 146.764038f, -316.583374f, -150.857544f, -314.606323f, 7.14312744f, -458.8273f); + float4x4 b2 = float4x4(-114.556458f, 441.429749f, -113.333679f, 435.622925f, 383.656128f, -293.7116f, -391.35498f, 43.12201f, 433.223633f, -201.382446f, -241.421173f, 376.469849f, -503.39743f, -359.780945f, 118.631531f, -510.030518f); + bool4x4 r2 = bool4x4(true, true, false, true, false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float4x4 a3 = float4x4(333.227722f, -349.9805f, 354.725037f, -451.62915f, 321.634766f, 365.723572f, -224.1594f, 388.5813f, -481.789429f, -473.9331f, -160.736511f, -200.438019f, -309.973083f, 80.28729f, -310.727356f, -83.5202f); + float4x4 b3 = float4x4(418.644775f, -95.54941f, 478.121216f, -129.558563f, -484.634674f, 352.228027f, -505.477631f, 162.993591f, -43.25766f, 18.279541f, 479.078979f, 437.282776f, -281.992035f, 433.0409f, -344.169678f, -232.819916f); + bool4x4 r3 = bool4x4(true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_wide_scalar() + { + float4x4 a0 = float4x4(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f, -68.0881958f, 12.7880249f, -66.703064f, -78.76297f); + float b0 = (199.0675f); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, false, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x4 a1 = float4x4(25.7277222f, -330.442657f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f, -334.622742f, -98.31558f, 300.410156f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f); + float b1 = (101.37085f); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4x4 a2 = float4x4(-455.37558f, -296.372131f, 272.488342f, 360.207947f, 389.727417f, 68.7366943f, -400.615234f, -85.46912f, -467.702148f, -51.38788f, 201.764648f, -47.8412781f, -180.740051f, -409.0157f, 229.699036f, 176.197876f); + float b2 = (360.291565f); + bool4x4 r2 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4x4 a3 = float4x4(-410.45517f, -20.24649f, 150.797852f, -69.47418f, -304.7824f, 149.1767f, -426.086151f, -455.146057f, -110.2583f, -276.355621f, 494.5564f, 472.353882f, -131.305f, -404.2739f, 498.876648f, 370.978516f); + float b3 = (-264.4348f); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, true, true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float4x4 b0 = float4x4(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f, 389.231445f, 488.745544f, -221.637878f, -424.2672f); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (249.059021f); + float4x4 b1 = float4x4(-22.1361389f, -442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f, 122.164795f, 96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (434.488831f); + float4x4 b2 = float4x4(-157.4502f, 190.572144f, 108.2583f, 132.550781f, -431.515228f, -192.203522f, -431.835f, -85.58124f, 328.670532f, 273.577881f, -178.669067f, 352.6363f, -82.6058044f, 238.908875f, 291.335327f, 183.357361f); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-185.0326f); + float4x4 b3 = float4x4(-179.355042f, -331.5387f, 59.2844238f, 356.62677f, 119.394043f, -80.44003f, 392.85907f, 306.155457f, -504.529449f, 349.384338f, 115.500305f, -251.656525f, 197.048157f, -268.077026f, 381.1057f, -367.121582f); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_wide_wide() + { + float4x4 a0 = float4x4(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f, -425.978149f, -228.430511f, 383.03833f, 136.533569f); + float4x4 b0 = float4x4(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f, -206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool4x4 r0 = bool4x4(true, true, false, true, false, true, false, false, true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float4x4 a1 = float4x4(8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f, 105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f); + float4x4 b1 = float4x4(364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f, -352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f); + bool4x4 r1 = bool4x4(false, false, false, false, false, true, true, true, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4x4 a2 = float4x4(-496.971832f, 339.888123f, 372.228333f, 313.2387f, -419.108948f, -265.329773f, -42.5019836f, 369.163879f, 67.16907f, -256.6989f, -104.105927f, 499.570129f, 41.6635132f, 151.1521f, 220.688354f, -344.658875f); + float4x4 b2 = float4x4(337.8899f, -249.505554f, -225.9013f, -249.491272f, 381.122864f, 325.5454f, 455.49884f, 333.318665f, 118.980347f, 223.19812f, -385.289063f, 333.8808f, -437.4107f, 243.975464f, -302.8199f, -32.7101746f); + bool4x4 r2 = bool4x4(false, true, true, true, false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4x4 a3 = float4x4(-285.2413f, -94.15863f, -75.18497f, 304.360779f, -153.398468f, -83.06839f, -59.9485779f, 228.588379f, 64.9057f, 65.0849f, -3.845337f, 471.922363f, 350.319824f, 220.831f, 134.9466f, 41.8203735f); + float4x4 b3 = float4x4(-228.691467f, 388.413147f, -23.7245483f, -180.5635f, -433.434021f, 157.857361f, -2.47369385f, 258.287842f, -327.375854f, 408.474548f, 403.882568f, 400.3172f, -505.992645f, 297.639038f, -442.736755f, 395.710938f); + bool4x4 r3 = bool4x4(false, false, false, true, true, false, false, false, true, false, false, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_wide_scalar() + { + float4x4 a0 = float4x4(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f, 501.306824f, -367.027771f, -86.12451f, -489.090576f, -172.518158f, -18.1496277f, -236.414948f, -238.8945f); + float b0 = (-302.816956f); + bool4x4 r0 = bool4x4(true, false, true, false, false, true, true, true, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float4x4 a1 = float4x4(-27.2391357f, 240.164551f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f, -7.34790039f, -261.865967f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f); + float b1 = (471.779358f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float4x4 a2 = float4x4(-218.866119f, 290.573059f, 180.2633f, -482.863953f, 100.7063f, 180.672546f, 501.319763f, -289.280975f, -25.8497f, 455.1624f, -63.3173523f, -17.4467773f, 53.01776f, 88.81958f, 182.357971f, -428.927216f); + float b2 = (-34.6923523f); + bool4x4 r2 = bool4x4(false, true, true, false, true, true, true, false, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4x4 a3 = float4x4(408.336853f, 495.172668f, 345.030029f, 337.561951f, 175.888367f, -412.795074f, 57.1717529f, 413.0246f, 34.45819f, -99.4767761f, -76.55893f, -494.980225f, -27.0163879f, -468.51767f, -335.857025f, 481.1654f); + float b3 = (-460.198639f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float4x4 b0 = float4x4(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f, 230.181274f, -102.58783f, 392.520569f, -177.478668f); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (-10.2950134f); + float4x4 b1 = float4x4(-24.04895f, 172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f, -361.524841f, -372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (471.920959f); + float4x4 b2 = float4x4(479.361572f, -107.004181f, 331.636536f, -340.840149f, -384.2146f, -451.726563f, 467.97876f, -236.569122f, 44.6547241f, -285.797852f, 42.730957f, 338.18512f, 274.017029f, -108.60437f, -211.37326f, -19.00415f); + bool4x4 r2 = bool4x4(false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (194.114685f); + float4x4 b3 = float4x4(395.7599f, -320.206238f, -384.86615f, 310.543762f, 495.990845f, -60.93524f, 178.748779f, 42.3462524f, 294.611267f, -36.6795654f, 36.8616333f, 405.469543f, 399.112427f, -209.86087f, -365.343658f, -167.460236f); + bool4x4 r3 = bool4x4(false, true, true, false, false, true, true, true, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_equal_wide_wide() + { + float4x4 a0 = float4x4(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f, 84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float4x4 b0 = float4x4(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f, -280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool4x4 r0 = bool4x4(false, true, false, true, true, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x4 a1 = float4x4(36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f, -77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f); + float4x4 b1 = float4x4(95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f, -216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f); + bool4x4 r1 = bool4x4(true, false, true, false, true, false, true, false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x4 a2 = float4x4(-383.302948f, -5.14703369f, 319.34375f, 465.022217f, 145.933472f, -215.074829f, -146.461517f, -349.893982f, 29.5991211f, -131.796631f, -438.9947f, 147.057922f, 221.112488f, -356.145355f, -32.83017f, 442.942017f); + float4x4 b2 = float4x4(-202.748352f, -312.476471f, 310.0719f, -320.363037f, 186.075989f, -42.6377869f, 82.56506f, 127.189087f, 198.286987f, -450.492035f, 20.901001f, 449.465881f, -478.7727f, 380.053955f, 99.1247559f, -450.329773f); + bool4x4 r2 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x4 a3 = float4x4(-301.139832f, -10.9749451f, -37.47458f, -70.38611f, -169.0245f, 432.800781f, -197.706573f, -131.6955f, 277.733948f, -480.483978f, 424.766052f, -477.7182f, 162.193726f, -21.5889587f, 154.217224f, 224.467163f); + float4x4 b3 = float4x4(45.421936f, 63.0155029f, 2.8447876f, 124.884644f, 246.547852f, -437.79364f, -83.328125f, 147.94397f, 281.880859f, -33.0036926f, -319.849152f, 107.796021f, 57.387085f, 286.116455f, -427.031738f, -465.191284f); + bool4x4 r3 = bool4x4(true, true, true, true, true, false, true, true, true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_equal_wide_scalar() + { + float4x4 a0 = float4x4(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f, 183.821167f, 320.4425f, -257.870056f, -386.801758f, -182.938812f, 349.250122f, 485.311584f, 373.5691f); + float b0 = (292.924255f); + bool4x4 r0 = bool4x4(false, true, true, true, true, false, true, true, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x4 a1 = float4x4(259.1515f, -128.525543f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f, 402.484863f, 87.91608f, -502.1736f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f); + float b1 = (450.130066f); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x4 a2 = float4x4(-213.378662f, -24.8275757f, -451.0416f, 429.577576f, -308.4343f, 355.160339f, -279.4071f, 181.672241f, -290.148743f, -184.844086f, 447.6939f, 168.8866f, 26.3789673f, 392.558533f, 255.604858f, 162.163452f); + float b2 = (42.2608032f); + bool4x4 r2 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x4 a3 = float4x4(195.496277f, 357.5598f, 145.561829f, 363.8067f, -141.437439f, 102.221924f, -114.207733f, -429.839478f, -236.495941f, -175.762238f, -420.696442f, -97.8534546f, -273.685242f, -442.2249f, 156.187012f, -102.823273f); + float b3 = (463.248779f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float4x4 b0 = float4x4(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f, 104.883484f, -488.685852f, -480.435181f, 421.936646f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (239.721069f); + float4x4 b1 = float4x4(-101.018433f, -283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f, -116.019989f, -442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (230.390869f); + float4x4 b2 = float4x4(-413.9848f, -215.901672f, 39.5603638f, 22.947998f, -162.060577f, 236.7337f, -253.951965f, -204.719086f, -161.616547f, -64.3859253f, -229.815643f, -484.825653f, -135.040436f, 351.694763f, 111.825378f, -249.982544f); + bool4x4 r2 = bool4x4(false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (435.8073f); + float4x4 b3 = float4x4(2.89263916f, -338.669983f, 381.346619f, 456.652466f, 432.051819f, 290.142456f, 189.297119f, 101.1286f, -150.379761f, -490.7479f, 219.139587f, -505.290527f, 326.6947f, -479.397919f, 195.13562f, 322.878967f); + bool4x4 r3 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_equal_wide_wide() + { + float4x4 a0 = float4x4(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f, 349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float4x4 b0 = float4x4(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f, 73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool4x4 r0 = bool4x4(false, false, true, false, true, true, true, false, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x4 a1 = float4x4(-131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f, -223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f); + float4x4 b1 = float4x4(381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f, 453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f); + bool4x4 r1 = bool4x4(false, false, false, true, false, true, false, true, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x4 a2 = float4x4(-132.2218f, 303.683777f, 265.210144f, 9.754395f, -233.0929f, 26.5675049f, 266.7807f, -250.072235f, 138.040833f, 174.276733f, -420.931641f, -42.8541565f, 216.485046f, 240.053833f, -470.382172f, 98.39673f); + float4x4 b2 = float4x4(-129.3533f, 8.107788f, 426.449524f, 410.693176f, 470.313416f, 220.399963f, -372.872681f, -242.178558f, 177.506226f, -172.638153f, 60.72284f, 478.250183f, 234.30304f, 297.821228f, 104.584595f, -462.418732f); + bool4x4 r2 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x4 a3 = float4x4(-20.8288574f, -218.440582f, 287.751831f, -356.966675f, -68.06952f, -432.918762f, 388.1424f, 396.4041f, -204.567474f, 179.752075f, -124.947357f, 22.3182373f, 425.500854f, 303.622742f, -325.6043f, 369.075317f); + float4x4 b3 = float4x4(-405.943878f, -347.055573f, -72.92624f, -137.9425f, 403.4298f, 501.5393f, -55.5280151f, 225.850769f, -57.1860046f, -185.230133f, -481.5948f, 319.055359f, 337.433655f, -481.092865f, 223.933167f, 174.322571f); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, true, true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_equal_wide_scalar() + { + float4x4 a0 = float4x4(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f, -221.505463f, 252.994324f, -116.440369f, -395.3633f, 164.772583f, -287.007324f, 355.837036f, 184.195557f); + float b0 = (189.205139f); + bool4x4 r0 = bool4x4(true, false, false, true, false, false, false, false, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x4 a1 = float4x4(273.012268f, 249.3841f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f, 179.005066f, 71.1767f, -331.271667f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f); + float b1 = (-418.1424f); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x4 a2 = float4x4(30.99707f, -74.50003f, -343.386475f, 216.031555f, -420.403137f, -78.38403f, -336.6411f, 317.0946f, -262.424927f, -228.411255f, 123.465454f, 264.102478f, 223.623352f, 440.5354f, -420.727f, 74.8443f); + float b2 = (199.232239f); + bool4x4 r2 = bool4x4(false, false, false, true, false, false, false, true, false, false, false, true, true, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x4 a3 = float4x4(-177.077881f, -28.5963745f, 165.287537f, -349.208f, 457.443726f, -191.223633f, 350.612122f, 475.075256f, 86.12921f, 63.16461f, -126.913239f, 80.77649f, -344.926941f, -409.61142f, -408.5478f, -415.6823f); + float b3 = (482.7102f); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float4x4 b0 = float4x4(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f, 67.14099f, -74.56064f, -367.256348f, 494.950745f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, false, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-61.2355347f); + float4x4 b1 = float4x4(-429.170258f, -213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f, -400.47052f, -283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-351.125244f); + float4x4 b2 = float4x4(-381.8183f, 393.3009f, 18.02362f, -169.92392f, -285.884949f, 163.7511f, 191.855347f, 114.0155f, -395.98584f, 189.366577f, 176.19812f, 61.7138062f, 507.548462f, 224.043823f, -422.9937f, -127.054993f); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, false, false, true, false, false, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (95.5286255f); + float4x4 b3 = float4x4(362.568176f, -501.040436f, 314.6682f, 484.321533f, -284.813171f, 106.034f, -310.3689f, 373.605835f, 147.076172f, -297.522217f, 339.547058f, -193.014587f, -3.09042358f, 429.024658f, 157.236572f, 208.49408f); + bool4x4 r3 = bool4x4(false, true, false, false, true, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_add_wide_wide() + { + float4x4 a0 = float4x4(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f, 491.066467f, -261.1173f, -298.4069f, 502.4286f); + float4x4 b0 = float4x4(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f, 462.5473f, -405.492f, -428.498322f, -41.87259f); + float4x4 r0 = float4x4(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f, 953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x4 a1 = float4x4(284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f, -62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f); + float4x4 b1 = float4x4(-269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f, 492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f); + float4x4 r1 = float4x4(14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f, 429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x4 a2 = float4x4(-261.126129f, -309.830353f, 378.363342f, -224.094f, -164.555725f, -69.87393f, 224.634644f, -383.9926f, 149.221252f, 169.388f, 163.053955f, 57.0291138f, 342.950073f, 168.680481f, -470.770264f, -117.630493f); + float4x4 b2 = float4x4(-474.822937f, 311.390747f, 326.8454f, 475.2119f, 314.152954f, -262.594635f, -82.86911f, 156.299561f, 427.40155f, -279.099365f, -448.615234f, 284.3371f, 288.1856f, -232.39505f, -386.871918f, 162.903381f); + float4x4 r2 = float4x4(-735.9491f, 1.56039429f, 705.20874f, 251.11792f, 149.597229f, -332.468567f, 141.765533f, -227.693054f, 576.6228f, -109.711365f, -285.561279f, 341.3662f, 631.1357f, -63.71457f, -857.6422f, 45.27289f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x4 a3 = float4x4(252.8197f, -102.534393f, -379.402771f, -42.8822021f, 204.786438f, 91.59955f, 70.1311646f, -111.691772f, -443.875854f, 134.701477f, 170.9068f, -207.879974f, -19.8520813f, 480.440674f, -353.835052f, 433.982178f); + float4x4 b3 = float4x4(-339.6031f, -82.40527f, 1.93530273f, 122.2746f, -42.76419f, -413.0547f, -350.282959f, -10.6069031f, 172.557312f, 492.042175f, 67.58539f, -324.510925f, -82.16745f, -421.822266f, -503.698944f, -289.683838f); + float4x4 r3 = float4x4(-86.78339f, -184.939667f, -377.467468f, 79.392395f, 162.022247f, -321.455139f, -280.1518f, -122.298676f, -271.318542f, 626.743652f, 238.492188f, -532.390869f, -102.019531f, 58.61841f, -857.534f, 144.29834f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_add_wide_scalar() + { + float4x4 a0 = float4x4(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f, -2.664978f, 78.98584f, 202.14801f, 311.725464f); + float b0 = (500.997253f); + float4x4 r0 = float4x4(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f, 944.1125f, 769.0895f, 542.3183f, 29.74118f, 498.332275f, 579.9831f, 703.145264f, 812.7227f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x4 a1 = float4x4(10.3458252f, 355.2328f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f, -160.5841f, -172.5422f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f); + float b1 = (-151.244446f); + float4x4 r1 = float4x4(-140.898621f, 203.988342f, -349.0452f, 104.710815f, 92.90265f, -332.871f, -153.699371f, 149.656189f, -387.7364f, -311.828552f, -323.786652f, -394.185547f, 315.09967f, 86.74304f, 113.049561f, 221.622375f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x4 a2 = float4x4(-198.837769f, 402.160339f, -117.024841f, 497.373779f, 485.9093f, -47.75714f, 77.81482f, -271.547974f, -133.2518f, 211.86676f, 253.1502f, -342.783173f, -185.248352f, -403.3855f, -358.848236f, 65.24756f); + float b2 = (-381.930969f); + float4x4 r2 = float4x4(-580.768738f, 20.22937f, -498.9558f, 115.44281f, 103.978333f, -429.6881f, -304.11615f, -653.478943f, -515.182739f, -170.064209f, -128.780762f, -724.7141f, -567.1793f, -785.316467f, -740.7792f, -316.6834f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x4 a3 = float4x4(127.201721f, 432.121155f, 436.088928f, -308.056946f, -255.149841f, 245.9632f, 420.0163f, 337.529236f, -311.7624f, 322.9428f, -342.249023f, 276.5263f, 488.771179f, -481.895233f, 289.026978f, -332.122925f); + float b3 = (-112.139862f); + float4x4 r3 = float4x4(15.0618591f, 319.9813f, 323.949066f, -420.1968f, -367.2897f, 133.823334f, 307.876434f, 225.389374f, -423.902252f, 210.802948f, -454.3889f, 164.386444f, 376.631317f, -594.0351f, 176.887115f, -444.2628f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float4x4 b0 = float4x4(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f, -138.614349f, 26.9041748f, -374.5376f, 154.46759f); + float4x4 r0 = float4x4(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f, -362.56778f, -94.70776f, -465.6871f, -307.4886f, -464.1271f, -298.608582f, -700.050354f, -171.045166f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (268.38385f); + float4x4 b1 = float4x4(-190.963013f, 188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f, 480.884583f, 438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f); + float4x4 r1 = float4x4(77.42084f, 457.0011f, -236.532288f, 288.8379f, 466.329224f, 519.7958f, -152.706543f, 379.829224f, 195.11496f, 749.268433f, 706.4369f, 335.228149f, -2.41217041f, 224.361938f, 466.078552f, 287.4978f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (349.2378f); + float4x4 b2 = float4x4(366.2345f, -413.4803f, -260.720184f, 77.54236f, 183.9549f, -51.4989929f, -472.497467f, 107.126892f, 349.0772f, 431.595947f, -314.110962f, 396.996643f, -167.308624f, -157.114532f, 287.7625f, -367.33905f); + float4x4 r2 = float4x4(715.4723f, -64.24249f, 88.51761f, 426.780151f, 533.1927f, 297.7388f, -123.259674f, 456.3647f, 698.315f, 780.83374f, 35.12683f, 746.234436f, 181.929169f, 192.12326f, 637.0003f, -18.1012573f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (96.23682f); + float4x4 b3 = float4x4(212.023132f, -400.693481f, 26.3428345f, 166.0332f, 49.9665527f, 154.5788f, -446.356934f, -46.7756958f, 426.568665f, -168.368256f, 254.265076f, -241.264923f, -278.259033f, -237.1731f, 174.13092f, 510.910278f); + float4x4 r3 = float4x4(308.259949f, -304.456665f, 122.579651f, 262.27002f, 146.203369f, 250.815613f, -350.120117f, 49.46112f, 522.8055f, -72.13144f, 350.5019f, -145.0281f, -182.022217f, -140.936279f, 270.367737f, 607.1471f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_sub_wide_wide() + { + float4x4 a0 = float4x4(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f, -470.820557f, -11.45929f, -167.9479f, 330.676758f); + float4x4 b0 = float4x4(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f, -446.8805f, 432.091431f, -225.554657f, -112.451965f); + float4x4 r0 = float4x4(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f, -23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x4 a1 = float4x4(-508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f, -308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f); + float4x4 b1 = float4x4(-210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f, -221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f); + float4x4 r1 = float4x4(-297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f, -87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x4 a2 = float4x4(388.481567f, 138.7182f, -385.5736f, -149.3648f, -158.534058f, 508.070679f, 482.7008f, 114.569275f, 364.83136f, 229.031f, -168.088074f, 373.4411f, -239.90097f, 379.928467f, 113.011841f, 306.835266f); + float4x4 b2 = float4x4(72.11908f, -154.880585f, -469.659973f, -320.615417f, 6.41229248f, -278.865051f, 15.8380737f, 27.51831f, 429.869629f, -458.622467f, -172.064423f, -284.524719f, 42.60669f, -223.474243f, -56.92975f, 61.807312f); + float4x4 r2 = float4x4(316.3625f, 293.5988f, 84.0863647f, 171.25061f, -164.94635f, 786.9357f, 466.862732f, 87.0509644f, -65.03827f, 687.653442f, 3.97634888f, 657.9658f, -282.50766f, 603.4027f, 169.941589f, 245.027954f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x4 a3 = float4x4(222.817444f, 271.9942f, 386.942932f, -55.75531f, 440.039368f, -362.724762f, 292.103149f, 246.660645f, -319.029236f, -115.244019f, -122.409058f, 56.0924072f, 210.677979f, -426.9796f, -337.58847f, 78.37268f); + float4x4 b3 = float4x4(-454.695526f, -114.060547f, 367.1687f, -351.2796f, 263.148865f, -492.305359f, 308.153259f, 455.3084f, -221.137665f, -466.658783f, 81.54944f, 48.54596f, -88.75711f, 83.8197f, -437.890564f, 410.3957f); + float4x4 r3 = float4x4(677.512939f, 386.054749f, 19.774231f, 295.5243f, 176.8905f, 129.5806f, -16.05011f, -208.647766f, -97.89157f, 351.414764f, -203.9585f, 7.54644775f, 299.4351f, -510.799316f, 100.302094f, -332.023f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_sub_wide_scalar() + { + float4x4 a0 = float4x4(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f, -377.9257f, -470.262054f, 400.5349f, 461.507568f, -246.287262f, 21.6052856f, 246.350708f, -121.427368f); + float b0 = (-291.5904f); + float4x4 r0 = float4x4(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f, -86.3353f, -178.671661f, 692.1253f, 753.097961f, 45.30313f, 313.195679f, 537.9411f, 170.163025f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x4 a1 = float4x4(-122.718414f, 360.15094f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f, 253.443237f, -121.163055f, 187.998413f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f); + float b1 = (-122.938721f); + float4x4 r1 = float4x4(0.2203064f, 483.089661f, 465.8133f, 141.86853f, 287.541077f, 219.982422f, 608.8537f, -82.81894f, 376.381958f, 1.77566528f, 310.937134f, -327.881561f, -125.134644f, 95.94266f, 564.491333f, 572.8493f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x4 a2 = float4x4(354.886047f, -189.193237f, 269.074829f, -59.11856f, 363.458374f, -73.7792053f, -46.1552124f, 109.913269f, 182.646912f, 229.015747f, -144.92868f, 469.2506f, -150.49231f, -192.3125f, -224.356842f, 285.876831f); + float b2 = (98.82147f); + float4x4 r2 = float4x4(256.064575f, -288.0147f, 170.253357f, -157.940033f, 264.6369f, -172.600677f, -144.976685f, 11.0917969f, 83.82544f, 130.194275f, -243.750153f, 370.429138f, -249.313782f, -291.133972f, -323.1783f, 187.055359f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x4 a3 = float4x4(-63.0108337f, 152.83313f, 92.32092f, -481.9931f, 55.80725f, -198.5921f, -338.3567f, -142.261749f, -201.510559f, -279.917542f, -495.640045f, 119.089966f, 382.1477f, 68.73401f, 470.9823f, -500.403046f); + float b3 = (499.9112f); + float4x4 r3 = float4x4(-562.922f, -347.078064f, -407.590271f, -981.9043f, -444.103943f, -698.5033f, -838.2679f, -642.173f, -701.421753f, -779.828735f, -995.5513f, -380.821228f, -117.763489f, -431.1772f, -28.928894f, -1000.31421f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float4x4 b0 = float4x4(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f, 169.131409f, 88.21661f, 1.73498535f, 122.538025f); + float4x4 r0 = float4x4(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f, -46.61847f, 680.3616f, 219.191711f, -60.35724f, 125.455078f, 206.369873f, 292.8515f, 172.048462f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-264.945f); + float4x4 b1 = float4x4(-50.83719f, -347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f, 432.1847f, -163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f); + float4x4 r1 = float4x4(-214.107819f, 82.70532f, -269.010559f, -185.849579f, -619.303345f, 27.5474854f, -211.736023f, -18.5974121f, -564.1484f, -697.1297f, -101.065f, -441.687561f, -159.959167f, 180.852631f, -236.071838f, -95.35678f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-270.359253f); + float4x4 b2 = float4x4(68.04761f, -65.53128f, 440.380371f, 427.360657f, -81.47296f, 41.7131958f, 175.8208f, -214.949158f, -163.446869f, -218.829132f, 389.116882f, -74.10977f, -448.137238f, -410.375f, 363.211f, -263.5354f); + float4x4 r2 = float4x4(-338.40686f, -204.827972f, -710.7396f, -697.7199f, -188.886292f, -312.072449f, -446.180054f, -55.4100952f, -106.912384f, -51.53012f, -659.476135f, -196.249481f, 177.777985f, 140.015747f, -633.570251f, -6.82385254f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (473.546021f); + float4x4 b3 = float4x4(433.4333f, 241.469421f, -446.7562f, -138.318115f, -414.005829f, 37.4823f, 290.049072f, -354.679932f, -322.974976f, -253.401947f, -412.353f, 269.2157f, -65.8092346f, -451.977417f, -407.732117f, 12.5319214f); + float4x4 r3 = float4x4(40.1127319f, 232.0766f, 920.302246f, 611.864136f, 887.5519f, 436.063721f, 183.496948f, 828.225952f, 796.521f, 726.948f, 885.899048f, 204.330322f, 539.3552f, 925.523438f, 881.278137f, 461.0141f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mul_wide_wide() + { + float4x4 a0 = float4x4(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f, 467.9583f, -178.021912f, -386.394257f, -422.4354f); + float4x4 b0 = float4x4(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f, 184.47113f, 426.436462f, -144.281433f, 459.4796f); + float4x4 r0 = float4x4(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f, 86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x4 a1 = float4x4(464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f, -83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f); + float4x4 b1 = float4x4(-358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f, -189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f); + float4x4 r1 = float4x4(-166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f, 15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x4 a2 = float4x4(-416.213074f, -103.279205f, -52.9519043f, -40.82834f, -86.18509f, -257.316528f, 363.857239f, -229.860016f, 8.925293f, -2.44940186f, 37.7583f, 264.451782f, -321.251282f, -268.256042f, 43.9136963f, 274.833069f); + float4x4 b2 = float4x4(296.680359f, 341.001831f, -257.0968f, 17.5936279f, -443.845123f, 291.349243f, 490.19165f, 361.320984f, -509.289734f, 315.352661f, 125.083069f, -167.727112f, 396.8877f, -0.320404053f, 143.4115f, -396.3475f); + float4x4 r2 = float4x4(-123482.242f, -35218.4f, 13613.7656f, -718.3186f, 38252.832f, -74968.98f, 178359.781f, -83053.25f, -4545.56f, -772.4254f, 4722.92432f, -44355.7344f, -127500.68f, 85.950325f, 6297.729f, -108929.4f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x4 a3 = float4x4(378.421082f, -290.6334f, 209.916565f, 384.219727f, 363.081421f, -461.333374f, -134.366852f, 11.9394531f, 125.20166f, -219.271f, 358.96698f, 12.847168f, -479.7714f, 150.253113f, -500.840759f, 485.679932f); + float4x4 b3 = float4x4(350.960144f, -374.53418f, -165.456024f, -338.017334f, -199.633331f, -385.127f, -328.411316f, -423.3008f, -150.3247f, 402.9776f, 339.0208f, -29.2961426f, -447.5521f, 62.1604f, 471.492065f, 282.403381f); + float4x4 r3 = float4x4(132810.719f, 108852.141f, -34731.96f, -129872.93f, -72483.16f, 177671.938f, 44127.5938f, -5053.98f, -18820.9023f, -88361.3f, 121697.281f, -376.372467f, 214722.688f, 9339.794f, -236142.438f, 137157.656f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mul_wide_scalar() + { + float4x4 a0 = float4x4(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f, -46.729187f, -238.405f, 422.08252f, -48.83484f, 355.30835f, 119.356628f, -196.995819f, 98.23602f); + float b0 = (192.211182f); + float4x4 r0 = float4x4(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f, -8981.872f, -45824.1055f, 81128.98f, -9386.603f, 68294.2344f, 22941.6777f, -37864.8f, 18882.0625f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x4 a1 = float4x4(-325.552155f, -87.45099f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f, 56.62915f, 257.541565f, -475.6087f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f); + float b1 = (53.9373169f); + float4x4 r1 = float4x4(-17559.41f, -4716.87158f, -7037.424f, -12006.1543f, 6796.91162f, 15823.1094f, 9405.695f, -17643.9785f, 3054.42432f, 13891.1006f, -25653.0566f, -24416.9863f, -2654.82764f, 7637.575f, 23278.5742f, 9727.874f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x4 a2 = float4x4(-40.9234619f, 120.014465f, -59.508667f, 319.489868f, -403.523163f, -408.1931f, -335.3932f, -364.242554f, 150.686157f, 391.87207f, 179.312439f, 354.5298f, 497.7614f, 418.436584f, -413.333374f, -329.520721f); + float b2 = (279.543518f); + float4x4 r2 = float4x4(-11439.8887f, 33549.2656f, -16635.2617f, 89311.32f, -112802.281f, -114107.742f, -93756.99f, -101821.648f, 42123.34f, 109545.3f, 50125.63f, 99106.5f, 139145.984f, 116971.234f, -115544.664f, -92115.38f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x4 a3 = float4x4(-322.703064f, -344.131165f, 209.612732f, 38.7976074f, -445.803833f, -71.467804f, -449.38623f, -64.39856f, -210.725952f, 389.325684f, 510.298218f, -497.581024f, -509.508575f, 131.99408f, 502.496826f, 282.81f); + float b3 = (-285.631226f); + float4x4 r3 = float4x4(92174.07f, 98294.61f, -59871.94f, -11081.8086f, 127335.492f, 20413.4355f, 128358.742f, 18394.24f, 60189.91f, -111203.57f, -145757.109f, 142124.672f, 145531.563f, -37701.63f, -143528.781f, -80779.37f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float4x4 b0 = float4x4(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f, -395.9921f, 125.20166f, -265.0158f, 314.656128f); + float4x4 r0 = float4x4(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f, -228458.891f, -23181.2285f, -197177.6f, -74380.4141f, 183952.063f, -58160.5156f, 123109.039f, -146168.688f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (-292.712036f); + float4x4 b1 = float4x4(-37.72989f, 165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f, 53.7483521f, -198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f); + float4x4 r1 = float4x4(11043.9922f, -48403.52f, -104357.039f, 55267.9336f, -147794.9f, -11875.9551f, 60525.5664f, 18031.85f, -34824.4258f, -15732.79f, 58152.9258f, -28169.46f, 5925.04248f, 9110.358f, -11383.7f, 3844.27515f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (507.871277f); + float4x4 b2 = float4x4(95.0179443f, 340.7486f, 438.986877f, -227.165955f, 452.573f, 144.014954f, -31.58603f, 42.29773f, -466.027161f, 287.453979f, 328.9969f, -164.243134f, -511.2683f, -9.594299f, 431.190125f, -132.141815f); + float4x4 r2 = float4x4(48256.8828f, 173056.422f, 222948.828f, -115371.063f, 229848.828f, 73141.0547f, -16041.6367f, 21481.8027f, -236681.813f, 145989.625f, 167088.063f, -83414.37f, -259658.484f, -4872.669f, 218989.078f, -67111.03f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-87.502655f); + float4x4 b3 = float4x4(384.618652f, 385.83905f, -384.623077f, 236.278625f, 336.4452f, 272.744446f, -121.145477f, -194.381134f, -364.7453f, 360.356934f, -153.582489f, 63.94165f, 0.04345703f, -430.974f, -126.427887f, -338.7486f); + float4x4 r3 = float4x4(-33655.1523f, -33761.94f, 33655.54f, -20675.0078f, -29439.8477f, -23865.8633f, 10600.5508f, 17008.8652f, 31916.1816f, -31532.1875f, 13438.876f, -5595.064f, -3.80260563f, 37711.37f, 11062.7754f, 29641.4023f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_div_wide_wide() + { + float4x4 a0 = float4x4(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f, -136.133179f, 12.4376221f, 228.513f, 356.972351f); + float4x4 b0 = float4x4(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f, 397.154419f, -303.2622f, -118.591248f, -81.6503f); + float4x4 r0 = float4x4(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f, -0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x4 a1 = float4x4(-24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f, 315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f); + float4x4 b1 = float4x4(-84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f, -218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f); + float4x4 r1 = float4x4(0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f, -1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x4 a2 = float4x4(-106.234528f, 414.312561f, 7.12084961f, 274.073669f, -39.0026855f, 39.065918f, -147.364166f, 434.3849f, 315.0672f, -106.636017f, -507.925262f, -17.1764526f, -385.865356f, 226.002136f, 345.168457f, 201.544189f); + float4x4 b2 = float4x4(220.2555f, -67.2345f, 2.229187f, -166.210968f, -247.732574f, 84.16095f, 477.148621f, 209.7508f, -386.7222f, -65.27734f, 410.454834f, 367.6507f, -456.572021f, 382.427979f, -163.860687f, -213.721375f); + float4x4 r2 = float4x4(-0.482324064f, -6.16220236f, 3.19437075f, -1.64895058f, 0.157438666f, 0.464181036f, -0.3088433f, 2.07095718f, -0.814712f, 1.6335839f, -1.23746932f, -0.0467194878f, 0.8451358f, 0.5909665f, -2.106475f, -0.9430231f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x4 a3 = float4x4(-364.71106f, -508.3727f, 263.803528f, 392.039f, 19.7166138f, -14.4797668f, -431.478668f, -8.395416f, 3.10827637f, -139.841125f, 402.5097f, 318.3109f, -274.568054f, -193.369141f, 288.227f, 0.620605469f); + float4x4 b3 = float4x4(227.003845f, -337.9897f, 149.321716f, -198.855316f, -468.455017f, 183.258728f, 217.357544f, -167.570221f, -150.7587f, 48.44922f, 410.15564f, -4.68936157f, -465.338165f, -48.30713f, 403.645752f, -387.142f); + float4x4 r3 = float4x4(-1.60662949f, 1.50410724f, 1.76667893f, -1.97147858f, -0.0420885943f, -0.0790127f, -1.98511016f, 0.0501008853f, -0.02061756f, -2.88634419f, 0.981358469f, -67.87937f, 0.590039849f, 4.002911f, 0.7140593f, -0.00160304352f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_div_wide_scalar() + { + float4x4 a0 = float4x4(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f, -348.9238f, -275.5387f, 210.557922f, 287.6424f, 504.372253f, 491.7871f, -26.6315918f, -253.236664f); + float b0 = (-60.0243835f); + float4x4 r0 = float4x4(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f, 5.813034f, 4.590446f, -3.507873f, -4.79209232f, -8.402789f, -8.193122f, 0.443679541f, 4.21889639f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x4 a1 = float4x4(272.895142f, -460.87558f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f, 81.6464844f, 60.6068726f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f); + float b1 = (178.096191f); + float4x4 r1 = float4x4(1.5322907f, -2.58779025f, -2.82232881f, -0.473478943f, -0.9808763f, 0.470511615f, 1.10638f, 1.78088188f, 2.26499581f, 0.458440363f, 0.340304136f, -2.32211876f, 1.16420794f, 2.013306f, 0.11650493f, -0.3850566f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x4 a2 = float4x4(310.702454f, 147.866211f, 506.658875f, -435.778564f, 210.672913f, -218.781464f, -19.1908569f, 416.511719f, 427.0136f, 417.1994f, -150.911835f, 488.985535f, -294.738739f, -357.298035f, 288.771667f, 453.429138f); + float b2 = (417.4049f); + float4x4 r2 = float4x4(0.744367063f, 0.354251266f, 1.21383071f, -1.04401875f, 0.504720747f, -0.524146855f, -0.0459765978f, 0.997860134f, 1.02302015f, 0.999507666f, -0.361547828f, 1.17148972f, -0.706121862f, -0.855998635f, 0.6918262f, 1.08630526f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x4 a3 = float4x4(70.72443f, 425.5282f, 109.519714f, 351.8073f, -397.334045f, 497.315979f, -18.0651855f, 452.228577f, 511.858521f, -439.3021f, -441.080261f, -360.325928f, -44.2648f, -122.1008f, -322.191162f, -155.780457f); + float b3 = (-235.7775f); + float4x4 r3 = float4x4(-0.29996258f, -1.80478716f, -0.46450454f, -1.49211574f, 1.68520772f, -2.10925984f, 0.07661963f, -1.9180311f, -2.17093873f, 1.86320615f, 1.87074792f, 1.52824557f, 0.187739715f, 0.5178645f, 1.36650515f, 0.6607096f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float4x4 b0 = float4x4(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f, -211.10257f, -322.852356f, -137.985291f, 84.32971f); + float4x4 r0 = float4x4(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f, -0.0882440954f, 0.217123419f, -0.208379045f, -0.08514738f, -0.197712749f, -0.129277885f, -0.302479118f, 0.49493435f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (355.063477f); + float4x4 b1 = float4x4(276.427246f, -382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f, -344.194275f, -449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f); + float4x4 r1 = float4x4(1.28447354f, -0.927087665f, -0.7266255f, 1.02962911f, 2.10277176f, -8.033913f, 0.84428215f, -2.02182651f, -38.5077133f, -1.03157866f, -0.790661335f, 3.0165565f, -1.0535152f, 1.48317969f, -0.911927f, 1.46287584f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (496.2765f); + float4x4 b2 = float4x4(91.74579f, -490.492126f, 485.755432f, -317.572266f, -451.6248f, 394.018372f, -262.271423f, -314.246765f, 359.9159f, -101.615356f, 359.517273f, -424.9799f, -192.719574f, -169.749725f, -244.790009f, -187.14386f); + float4x4 r2 = float4x4(5.40925646f, -1.011793f, 1.02165914f, -1.56271982f, -1.09886909f, 1.25952625f, -1.89222479f, -1.57925725f, 1.378868f, -4.883873f, 1.38039684f, -1.16776466f, -2.57512236f, -2.92357755f, -2.027356f, -2.651845f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-207.713654f); + float4x4 b3 = float4x4(-370.154053f, 58.67694f, -123.147f, 208.8916f, -79.53113f, -219.674774f, -483.159332f, -90.52664f, 194.599976f, -4.09060669f, 270.735962f, 432.586182f, 376.047668f, 464.836731f, -322.9417f, -220.897583f); + float4x4 r3 = float4x4(0.5611546f, -3.53995371f, 1.686713f, -0.994361f, 2.61172771f, 0.9455508f, 0.429907143f, 2.294503f, -1.06738782f, 50.7782021f, -0.76721853f, -0.4801671f, -0.5523599f, -0.446852922f, 0.6431924f, 0.940316558f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mod_wide_wide() + { + float4x4 a0 = float4x4(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f, -64.71405f, 295.066833f, 212.25708f, 349.6283f); + float4x4 b0 = float4x4(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f, -435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float4x4 r0 = float4x4(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f, -64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x4 a1 = float4x4(119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f, 156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f); + float4x4 b1 = float4x4(-433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f, -131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f); + float4x4 r1 = float4x4(119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f, 25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x4 a2 = float4x4(7.76147461f, 238.094727f, 12.8520508f, -100.240662f, 34.552002f, -251.189758f, -238.372253f, 511.514648f, 288.433533f, 367.109863f, 44.760437f, -437.0456f, -259.2056f, -228.565826f, 83.49725f, 424.367065f); + float4x4 b2 = float4x4(132.180237f, -179.877319f, 51.9685669f, 367.214233f, -395.2128f, 270.485229f, -73.104126f, 89.3499756f, -288.308533f, -168.324646f, 311.6159f, -468.341949f, 381.983948f, -1.39886475f, -102.288605f, -87.4248657f); + float4x4 r2 = float4x4(7.76147461f, 58.2174072f, 12.8520508f, -100.240662f, 34.552002f, -251.189758f, -19.0598755f, 64.76477f, 0.125f, 30.4605713f, 44.760437f, -437.0456f, -259.2056f, -0.5508728f, 83.49725f, 74.6676f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x4 a3 = float4x4(327.2317f, 149.181763f, -392.158752f, -453.4767f, 480.8224f, 3.46044922f, -184.5924f, -181.417542f, -367.704224f, 146.0993f, 280.120728f, -282.483154f, 57.22583f, -432.671722f, -231.465637f, -228.28299f); + float4x4 b3 = float4x4(-58.42514f, -419.004883f, 479.817017f, -406.982849f, -371.595947f, 154.043213f, -444.750916f, -53.98001f, -168.831787f, -69.39877f, -380.760681f, 208.145569f, 194.436646f, 142.8681f, 413.1582f, -375.159424f); + float4x4 r3 = float4x4(35.1059875f, 149.181763f, -392.158752f, -46.493866f, 109.22644f, 3.46044922f, -184.5924f, -19.4775085f, -30.04065f, 7.301758f, 280.120728f, -74.3375854f, 57.22583f, -4.06741333f, -231.465637f, -228.28299f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mod_wide_scalar() + { + float4x4 a0 = float4x4(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f, -84.47363f, -318.7815f, 433.4547f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f); + float b0 = (-90.49924f); + float4x4 r0 = float4x4(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f, -84.47363f, -47.283783f, 71.45776f, -54.60019f, -81.83963f, -67.71771f, 41.3634033f, 5.79638672f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x4 a1 = float4x4(254.5108f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f, -331.993347f, 336f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f); + float b1 = (-433.0937f); + float4x4 r1 = float4x4(254.5108f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 50.45691f, -331.993347f, 336f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x4 a2 = float4x4(235.724f, -304.153168f, -295.520264f, 313.7224f, -232.202637f, 191.619751f, 244.096619f, 162.524231f, 390.016174f, 90.00452f, 155.933533f, 217.3377f, -306.819275f, 149.09375f, 503.828369f, -194.130127f); + float b2 = (465.984863f); + float4x4 r2 = float4x4(235.724f, -304.153168f, -295.520264f, 313.7224f, -232.202637f, 191.619751f, 244.096619f, 162.524231f, 390.016174f, 90.00452f, 155.933533f, 217.3377f, -306.819275f, 149.09375f, 37.8435059f, -194.130127f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x4 a3 = float4x4(214.863037f, 225.9964f, -102.913971f, -173.706085f, 490.904663f, 501.148621f, 160.454834f, 327.860962f, -300.812683f, -326.939026f, -6.64724731f, -201.184448f, 389.350464f, -78.06848f, -484.3189f, -371.838745f); + float b3 = (198.770081f); + float4x4 r3 = float4x4(16.0929565f, 27.2263184f, -102.913971f, -173.706085f, 93.3645f, 103.608459f, 160.454834f, 129.090881f, -102.0426f, -128.168945f, -6.64724731f, -2.41436768f, 190.580383f, -78.06848f, -86.77875f, -173.068665f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float4x4 b0 = float4x4(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f, 106.983582f, 469.323547f, -34.80899f, 184.836548f); + float4x4 r0 = float4x4(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f, -24.3553162f, -195.410126f, -14.1549377f, -137.470917f, -75.47165f, -396.4224f, -13.5234985f, -26.7492981f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (374.79425f); + float4x4 b1 = float4x4(-131.872711f, -120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f, -433.523071f, -163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f); + float4x4 r1 = float4x4(111.048828f, 14.5156555f, 0.7420654f, 40.58841f, 374.79425f, 156.125366f, 178.416809f, 374.79425f, 374.79425f, 374.79425f, 47.0605469f, 20.7861938f, 42.84381f, 3.418274f, 87.23535f, 374.79425f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (192.692078f); + float4x4 b2 = float4x4(-268.131775f, 271.075134f, 423.7027f, -413.233246f, 127.956238f, -298.204681f, -352.4181f, -175.607727f, -152.899292f, 34.6194458f, -380.802948f, 0.352050781f, 485.900879f, 266.150818f, 483.82074f, 11.777832f); + float4x4 r2 = float4x4(192.692078f, 192.692078f, 192.692078f, 192.692078f, 64.73584f, 192.692078f, 192.692078f, 17.08435f, 39.7927856f, 19.5948486f, 192.692078f, 0.120300293f, 192.692078f, 192.692078f, 192.692078f, 4.246765f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (274.135864f); + float4x4 b3 = float4x4(313.073181f, -102.217438f, -88.03519f, 226.979553f, -38.68274f, -63.1578064f, 330.401917f, -304.123871f, 411.681519f, 128.217773f, 48.9116821f, -58.8946533f, 29.2827148f, -328.672241f, -511.7139f, -338.5105f); + float4x4 r3 = float4x4(274.135864f, 69.70099f, 10.030304f, 47.15631f, 3.35668945f, 21.5046387f, 274.135864f, 274.135864f, 274.135864f, 17.7003174f, 29.5774536f, 38.55725f, 10.5914307f, 274.135864f, 274.135864f, 274.135864f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_plus() + { + float4x4 a0 = float4x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f); + float4x4 r0 = float4x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f); + TestUtils.AreEqual(+a0, r0); + + float4x4 a1 = float4x4(465.355957f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f); + float4x4 r1 = float4x4(465.355957f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f); + TestUtils.AreEqual(+a1, r1); + + float4x4 a2 = float4x4(-116.536224f, -330.005341f, -379.674255f, -339.673218f, -29.0835266f, 62.20111f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f); + float4x4 r2 = float4x4(-116.536224f, -330.005341f, -379.674255f, -339.673218f, -29.0835266f, 62.20111f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f); + TestUtils.AreEqual(+a2, r2); + + float4x4 a3 = float4x4(87.64923f, -236.109039f, 6.508911f, 481.885681f, -368.854034f, 82.67334f, 120.19519f, -7.73321533f, 168.252075f, -431.930176f, 228.521545f, -124.117523f, 464.7453f, -203.259216f, -505.6412f, 434.978638f); + float4x4 r3 = float4x4(87.64923f, -236.109039f, 6.508911f, 481.885681f, -368.854034f, 82.67334f, 120.19519f, -7.73321533f, 168.252075f, -431.930176f, 228.521545f, -124.117523f, 464.7453f, -203.259216f, -505.6412f, 434.978638f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float4x4_operator_neg() + { + float4x4 a0 = float4x4(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f, 19.68689f, 268.2367f, -180.600525f, 223.381287f, -410.392059f, -395.681549f, -349.149475f, -110.9393f); + float4x4 r0 = float4x4(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f, -19.68689f, -268.2367f, 180.600525f, -223.381287f, 410.392059f, 395.681549f, 349.149475f, 110.9393f); + TestUtils.AreEqual(-a0, r0); + + float4x4 a1 = float4x4(-238.2196f, 469.2926f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f, 196.387573f, -306.1656f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f); + float4x4 r1 = float4x4(238.2196f, -469.2926f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f, -196.387573f, 306.1656f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f); + TestUtils.AreEqual(-a1, r1); + + float4x4 a2 = float4x4(419.822449f, 363.716736f, 280.887878f, -270.6513f, -201.615753f, 325.031616f, 95.48926f, 191.070251f, 371.973572f, 296.512573f, -164.169922f, -347.4581f, -237.404968f, -228.701965f, 61.0822754f, 128.331543f); + float4x4 r2 = float4x4(-419.822449f, -363.716736f, -280.887878f, 270.6513f, 201.615753f, -325.031616f, -95.48926f, -191.070251f, -371.973572f, -296.512573f, 164.169922f, 347.4581f, 237.404968f, 228.701965f, -61.0822754f, -128.331543f); + TestUtils.AreEqual(-a2, r2); + + float4x4 a3 = float4x4(331.2558f, -501.0288f, 160.5802f, -180.496582f, 127.978333f, 260.034546f, -287.968262f, -502.199127f, 303.970581f, -182.962921f, 322.327637f, 91.48047f, 211.295166f, 116.070496f, 309.361023f, -129.064484f); + float4x4 r3 = float4x4(-331.2558f, 501.0288f, -160.5802f, 180.496582f, -127.978333f, -260.034546f, 287.968262f, 502.199127f, -303.970581f, 182.962921f, -322.327637f, -91.48047f, -211.295166f, -116.070496f, -309.361023f, 129.064484f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float4x4_operator_prefix_inc() + { + float4x4 a0 = float4x4(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f, -76.50766f, -305.584778f, 64.0965f, 148.679321f, 363.2849f, -115.559235f, -326.8778f, -179.894653f); + float4x4 r0 = float4x4(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f, -75.50766f, -304.584778f, 65.0965f, 149.679321f, 364.2849f, -114.559235f, -325.8778f, -178.894653f); + TestUtils.AreEqual(++a0, r0); + + float4x4 a1 = float4x4(339.8766f, -153.373688f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f, -271.2893f, -264.380066f, -377.5592f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f); + float4x4 r1 = float4x4(340.8766f, -152.373688f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f, -270.2893f, -263.380066f, -376.5592f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f); + TestUtils.AreEqual(++a1, r1); + + float4x4 a2 = float4x4(-480.760468f, 117.9541f, 139.525818f, 335.6897f, 162.6615f, -256.0451f, -254.7315f, -89.25604f, 314.36554f, 244.728149f, 34.01062f, -90.44528f, -472.63623f, -34.5667725f, -71.27185f, -396.4901f); + float4x4 r2 = float4x4(-479.760468f, 118.9541f, 140.525818f, 336.6897f, 163.6615f, -255.0451f, -253.7315f, -88.25604f, 315.36554f, 245.728149f, 35.01062f, -89.44528f, -471.63623f, -33.5667725f, -70.27185f, -395.4901f); + TestUtils.AreEqual(++a2, r2); + + float4x4 a3 = float4x4(-314.987457f, 63.45038f, 474.6681f, 257.173584f, 128.107178f, -354.5639f, -194.465576f, -130.854309f, 467.560364f, 477.1499f, -458.055664f, -168.122711f, 506.568665f, -429.356873f, 444.8133f, -385.6256f); + float4x4 r3 = float4x4(-313.987457f, 64.45038f, 475.6681f, 258.173584f, 129.107178f, -353.5639f, -193.465576f, -129.854309f, 468.560364f, 478.1499f, -457.055664f, -167.122711f, 507.568665f, -428.356873f, 445.8133f, -384.6256f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float4x4_operator_postfix_inc() + { + float4x4 a0 = float4x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f); + float4x4 r0 = float4x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f); + TestUtils.AreEqual(a0++, r0); + + float4x4 a1 = float4x4(-170.104645f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f); + float4x4 r1 = float4x4(-170.104645f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f); + TestUtils.AreEqual(a1++, r1); + + float4x4 a2 = float4x4(403.508728f, 446.607666f, -12.35257f, -232.150116f, 64.57703f, -10.5907288f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f); + float4x4 r2 = float4x4(403.508728f, 446.607666f, -12.35257f, -232.150116f, 64.57703f, -10.5907288f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f); + TestUtils.AreEqual(a2++, r2); + + float4x4 a3 = float4x4(439.3f, -424.349731f, 63.8623657f, 260.8709f, 350.9854f, 271.488342f, -378.243835f, -329.554932f, -201.921967f, -244.669952f, 365.7249f, -481.8288f, 105.475952f, -166.622009f, 394.7439f, -179.4913f); + float4x4 r3 = float4x4(439.3f, -424.349731f, 63.8623657f, 260.8709f, 350.9854f, 271.488342f, -378.243835f, -329.554932f, -201.921967f, -244.669952f, 365.7249f, -481.8288f, 105.475952f, -166.622009f, 394.7439f, -179.4913f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float4x4_operator_prefix_dec() + { + float4x4 a0 = float4x4(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f, 171.964539f, -227.44281f, 298.2848f, 326.5078f, 400.7209f, -478.031372f, -326.452972f, -24.5845032f); + float4x4 r0 = float4x4(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f, 170.964539f, -228.44281f, 297.2848f, 325.5078f, 399.7209f, -479.031372f, -327.452972f, -25.5845032f); + TestUtils.AreEqual(--a0, r0); + + float4x4 a1 = float4x4(112.796875f, -503.27417f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f, 181.4751f, -188.69223f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f); + float4x4 r1 = float4x4(111.796875f, -504.27417f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f, 180.4751f, -189.69223f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f); + TestUtils.AreEqual(--a1, r1); + + float4x4 a2 = float4x4(-436.906555f, 345.021545f, 4.73535156f, -68.65332f, 481.4961f, 463.391418f, -357.673279f, 153.329651f, -233.624329f, -35.23831f, 340.619629f, 259.928833f, 335.354919f, 85.36487f, -1.39398193f, -407.4104f); + float4x4 r2 = float4x4(-437.906555f, 344.021545f, 3.73535156f, -69.65332f, 480.4961f, 462.391418f, -358.673279f, 152.329651f, -234.624329f, -36.23831f, 339.619629f, 258.928833f, 334.354919f, 84.36487f, -2.393982f, -408.4104f); + TestUtils.AreEqual(--a2, r2); + + float4x4 a3 = float4x4(-145.793427f, -337.445435f, -464.6742f, 226.802917f, 15.3192139f, 431.0708f, 273.0959f, -3.10839844f, 334.1468f, 26.1240845f, 14.6611938f, 239.304688f, 32.2064819f, 288.589f, -297.4829f, -154.860779f); + float4x4 r3 = float4x4(-146.793427f, -338.445435f, -465.6742f, 225.802917f, 14.3192139f, 430.0708f, 272.0959f, -4.10839844f, 333.1468f, 25.1240845f, 13.6611938f, 238.304688f, 31.2064819f, 287.589f, -298.4829f, -155.860779f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float4x4_operator_postfix_dec() + { + float4x4 a0 = float4x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f); + float4x4 r0 = float4x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f); + TestUtils.AreEqual(a0--, r0); + + float4x4 a1 = float4x4(378.641235f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f); + float4x4 r1 = float4x4(378.641235f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f); + TestUtils.AreEqual(a1--, r1); + + float4x4 a2 = float4x4(-313.4259f, 176.78949f, -370.7863f, 64.90387f, 449.637756f, -112.105042f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f); + float4x4 r2 = float4x4(-313.4259f, 176.78949f, -370.7863f, 64.90387f, 449.637756f, -112.105042f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f); + TestUtils.AreEqual(a2--, r2); + + float4x4 a3 = float4x4(-240.610687f, -269.286316f, -101.805145f, -492.290375f, -507.078247f, 413.102f, -491.42746f, -13.7286682f, -481.5986f, 248.557617f, -178.3342f, -345.805847f, -269.117371f, 132.769409f, -382.384277f, 388.8308f); + float4x4 r3 = float4x4(-240.610687f, -269.286316f, -101.805145f, -492.290375f, -507.078247f, 413.102f, -491.42746f, -13.7286682f, -481.5986f, 248.557617f, -178.3342f, -345.805847f, -269.117371f, 132.769409f, -382.384277f, 388.8308f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x4.gen.cs.meta new file mode 100644 index 0000000..84f7f60 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestFloat4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3a17e2bf2fb0984b96ba8a21a08b8b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestHalf.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestHalf.cs new file mode 100644 index 0000000..7cd963e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestHalf.cs @@ -0,0 +1,445 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; +using System; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public partial class TestHalf + { + [TestCompiler] + public static void half_zero() + { + TestUtils.AreEqual(half.zero.value, 0x0000); + } + + [TestCompiler] + public static void half2_zero() + { + TestUtils.AreEqual(half2.zero.x.value, 0x0000); + TestUtils.AreEqual(half2.zero.y.value, 0x0000); + } + + [TestCompiler] + public static void half3_zero() + { + TestUtils.AreEqual(half3.zero.x.value, 0x0000); + TestUtils.AreEqual(half3.zero.y.value, 0x0000); + TestUtils.AreEqual(half3.zero.z.value, 0x0000); + } + + [TestCompiler] + public static void half4_zero() + { + TestUtils.AreEqual(half4.zero.x.value, 0x0000); + TestUtils.AreEqual(half4.zero.y.value, 0x0000); + TestUtils.AreEqual(half4.zero.z.value, 0x0000); + TestUtils.AreEqual(half4.zero.w.value, 0x0000); + } + + [TestCompiler] + public static void half_from_float_construction() + { + TestUtils.AreEqual(half(0.0f).value, 0x0000); + TestUtils.AreEqual(half(2.98e-08f).value, 0x0000); + TestUtils.AreEqual(half(5.96046448e-08f).value, 0x0001); + TestUtils.AreEqual(half(123.4f).value, 0x57B6); + TestUtils.AreEqual(half(65504.0f).value, 0x7BFF); + TestUtils.AreEqual(half(65520.0f).value, 0x7C00); + TestUtils.AreEqual(half(float.PositiveInfinity).value, 0x7C00); + TestUtils.AreEqual(half(float.NaN).value, 0xFE00); + + TestUtils.AreEqual(half(-2.98e-08f).value, 0x8000); + TestUtils.AreEqual(half(-5.96046448e-08f).value, 0x8001); + TestUtils.AreEqual(half(-123.4f).value, 0xD7B6); + TestUtils.AreEqual(half(-65504.0f).value, 0xFBFF); + TestUtils.AreEqual(half(-65520.0f).value, 0xFC00); + TestUtils.AreEqual(half(float.NegativeInfinity).value, 0xFC00); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half_from_float_construction_signed_zero() + { + TestUtils.AreEqual(half(-0.0f).value, 0x8000); + } + + [TestCompiler] + public static void half2_from_float2_construction() + { + half2 h0 = half2(float2(0.0f, 2.98e-08f)); + half2 h1 = half2(float2(5.96046448e-08f, 123.4f)); + half2 h2 = half2(float2(65504.0f, 65520.0f)); + half2 h3 = half2(float2(float.PositiveInfinity, float.NaN)); + + half2 h4 = half2(float2(-2.98e-08f, -5.96046448e-08f)); + half2 h5 = half2(float2(-123.4f, -65504.0f)); + half2 h6 = half2(float2(-65520.0f, float.NegativeInfinity)); + half2 h7 = half2(float2(float.NegativeInfinity, 0.0f)); + + TestUtils.AreEqual(uint2(h0.x.value, h0.y.value), uint2(0x0000, 0x0000)); + TestUtils.AreEqual(uint2(h1.x.value, h1.y.value), uint2(0x0001, 0x57B6)); + TestUtils.AreEqual(uint2(h2.x.value, h2.y.value), uint2(0x7BFF, 0x7C00)); + TestUtils.AreEqual(uint2(h3.x.value, h3.y.value), uint2(0x7C00, 0xFE00)); + + TestUtils.AreEqual(uint2(h4.x.value, h4.y.value), uint2(0x8000, 0x8001)); + TestUtils.AreEqual(uint2(h5.x.value, h5.y.value), uint2(0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint2(h6.x.value, h6.y.value), uint2(0xFC00, 0xFC00)); + TestUtils.AreEqual(uint2(h7.x.value, h7.y.value), uint2(0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half2_from_float2_construction_signed_zero() + { + half2 h0 = half2(float2(-0.0f, -0.0f)); + TestUtils.AreEqual(uint2(h0.x.value, h0.y.value), uint2(0x8000, 0x8000)); + } + + [TestCompiler] + public static void half3_from_float3_construction() + { + half3 h0 = half3(float3(0.0f, 2.98e-08f, 5.96046448e-08f)); + half3 h1 = half3(float3(123.4f, 65504.0f, 65520.0f)); + half3 h2 = half3(float3(float.PositiveInfinity, float.NaN, -2.98e-08f)); + half3 h3 = half3(float3(-5.96046448e-08f, -123.4f, -65504.0f)); + half3 h4 = half3(float3(-65520.0f, float.NegativeInfinity, 0.0f)); + + TestUtils.AreEqual(uint3(h0.x.value, h0.y.value, h0.z.value), uint3(0x0000, 0x0000, 0x0001)); + TestUtils.AreEqual(uint3(h1.x.value, h1.y.value, h1.z.value), uint3(0x57B6, 0x7BFF, 0x7C00)); + TestUtils.AreEqual(uint3(h2.x.value, h2.y.value, h2.z.value), uint3(0x7C00, 0xFE00, 0x8000)); + + TestUtils.AreEqual(uint3(h3.x.value, h3.y.value, h3.z.value), uint3(0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint3(h4.x.value, h4.y.value, h4.z.value), uint3(0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half3_from_float3_construction_signed_zero() + { + half3 h0 = half3(float3(-0.0f, -0.0f, -0.0f)); + TestUtils.AreEqual(uint3(h0.x.value, h0.y.value, h0.z.value), uint3(0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void half4_from_float4_construction() + { + half4 h0 = half4(float4(0.0f, 2.98e-08f, 5.96046448e-08f, 123.4f)); + half4 h1 = half4(float4(65504.0f, 65520.0f, float.PositiveInfinity, float.NaN)); + half4 h2 = half4(float4(-2.98e-08f, -5.96046448e-08f, -123.4f, -65504.0f)); + half4 h3 = half4(float4(-65520.0f, float.NegativeInfinity, float.NegativeInfinity, 0.0f)); + + TestUtils.AreEqual(uint4(h0.x.value, h0.y.value, h0.z.value, h0.w.value), uint4(0x0000, 0x0000, 0x0001, 0x57B6)); + TestUtils.AreEqual(uint4(h1.x.value, h1.y.value, h1.z.value, h1.w.value), uint4(0x7BFF, 0x7C00, 0x7C00, 0xFE00)); + TestUtils.AreEqual(uint4(h2.x.value, h2.y.value, h2.z.value, h2.w.value), uint4(0x8000, 0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint4(h3.x.value, h3.y.value, h3.z.value, h3.w.value), uint4(0xFC00, 0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half4_from_float4_construction_signed_zero() + { + half4 h0 = half4(float4(-0.0f, -0.0f, -0.0f, -0.0f)); + TestUtils.AreEqual(uint4(h0.x.value, h0.y.value, h0.z.value, h0.w.value), uint4(0x8000, 0x8000, 0x8000, 0x8000)); + } + + + [TestCompiler] + public static void half_from_double_construction() + { + TestUtils.AreEqual(half(0.0).value, 0x0000); + TestUtils.AreEqual(half(2.98e-08).value, 0x0000); + TestUtils.AreEqual(half(5.96046448e-08).value, 0x0001); + TestUtils.AreEqual(half(123.4).value, 0x57B6); + TestUtils.AreEqual(half(65504.0).value, 0x7BFF); + TestUtils.AreEqual(half(65520.0).value, 0x7C00); + TestUtils.AreEqual(half(double.PositiveInfinity).value, 0x7C00); + TestUtils.AreEqual(half(double.NaN).value, 0xFE00); + + TestUtils.AreEqual(half(-2.98e-08).value, 0x8000); + TestUtils.AreEqual(half(-5.96046448e-08).value, 0x8001); + TestUtils.AreEqual(half(-123.4).value, 0xD7B6); + TestUtils.AreEqual(half(-65504.0).value, 0xFBFF); + TestUtils.AreEqual(half(-65520.0).value, 0xFC00); + TestUtils.AreEqual(half(double.NegativeInfinity).value, 0xFC00); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half_from_double_construction_signed_zero() + { + TestUtils.AreEqual(half(-0.0).value, 0x8000); + } + + [TestCompiler] + public static void half2_from_double2_construction() + { + half2 h0 = half2(double2(0.0, 2.98e-08)); + half2 h1 = half2(double2(5.96046448e-08, 123.4)); + half2 h2 = half2(double2(65504.0, 65520.0)); + half2 h3 = half2(double2(double.PositiveInfinity, double.NaN)); + + half2 h4 = half2(double2(-2.98e-08, -5.96046448e-08)); + half2 h5 = half2(double2(-123.4, -65504.0)); + half2 h6 = half2(double2(-65520.0, double.NegativeInfinity)); + half2 h7 = half2(double2(double.NegativeInfinity, 0.0)); + + TestUtils.AreEqual(uint2(h0.x.value, h0.y.value), uint2(0x0000, 0x0000)); + TestUtils.AreEqual(uint2(h1.x.value, h1.y.value), uint2(0x0001, 0x57B6)); + TestUtils.AreEqual(uint2(h2.x.value, h2.y.value), uint2(0x7BFF, 0x7C00)); + TestUtils.AreEqual(uint2(h3.x.value, h3.y.value), uint2(0x7C00, 0xFE00)); + + TestUtils.AreEqual(uint2(h4.x.value, h4.y.value), uint2(0x8000, 0x8001)); + TestUtils.AreEqual(uint2(h5.x.value, h5.y.value), uint2(0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint2(h6.x.value, h6.y.value), uint2(0xFC00, 0xFC00)); + TestUtils.AreEqual(uint2(h7.x.value, h7.y.value), uint2(0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half2_from_double2_construction_signed_zero() + { + half2 h0 = half2(double2(-0.0, -0.0)); + TestUtils.AreEqual(uint2(h0.x.value, h0.y.value), uint2(0x8000, 0x8000)); + } + + [TestCompiler] + public static void half3_from_double3_construction() + { + half3 h0 = half3(double3(0.0, 2.98e-08, 5.96046448e-08)); + half3 h1 = half3(double3(123.4, 65504.0, 65520.0)); + half3 h2 = half3(double3(double.PositiveInfinity, double.NaN, -2.98e-08)); + half3 h3 = half3(double3(-5.96046448e-08, -123.4, -65504.0)); + half3 h4 = half3(double3(-65520.0, double.NegativeInfinity, 0.0)); + + TestUtils.AreEqual(uint3(h0.x.value, h0.y.value, h0.z.value), uint3(0x0000, 0x0000, 0x0001)); + TestUtils.AreEqual(uint3(h1.x.value, h1.y.value, h1.z.value), uint3(0x57B6, 0x7BFF, 0x7C00)); + TestUtils.AreEqual(uint3(h2.x.value, h2.y.value, h2.z.value), uint3(0x7C00, 0xFE00, 0x8000)); + + TestUtils.AreEqual(uint3(h3.x.value, h3.y.value, h3.z.value), uint3(0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint3(h4.x.value, h4.y.value, h4.z.value), uint3(0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half3_from_double3_construction_signed_zero() + { + half3 h0 = half3(double3(-0.0, -0.0, -0.0)); + TestUtils.AreEqual(uint3(h0.x.value, h0.y.value, h0.z.value), uint3(0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void half4_from_double4_construction() + { + half4 h0 = half4(double4(0.0, 2.98e-08, 5.96046448e-08, 123.4)); + half4 h1 = half4(double4(65504.0, 65520.0, double.PositiveInfinity, double.NaN)); + half4 h2 = half4(double4(-2.98e-08, -5.96046448e-08, -123.4, -65504.0)); + half4 h3 = half4(double4(-65520.0, double.NegativeInfinity, double.NegativeInfinity, 0.0)); + + TestUtils.AreEqual(uint4(h0.x.value, h0.y.value, h0.z.value, h0.w.value), uint4(0x0000, 0x0000, 0x0001, 0x57B6)); + TestUtils.AreEqual(uint4(h1.x.value, h1.y.value, h1.z.value, h1.w.value), uint4(0x7BFF, 0x7C00, 0x7C00, 0xFE00)); + TestUtils.AreEqual(uint4(h2.x.value, h2.y.value, h2.z.value, h2.w.value), uint4(0x8000, 0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint4(h3.x.value, h3.y.value, h3.z.value, h3.w.value), uint4(0xFC00, 0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half4_from_double4_construction_signed_zero() + { + half4 h0 = half4(double4(-0.0, -0.0, -0.0, -0.0)); + TestUtils.AreEqual(uint4(h0.x.value, h0.y.value, h0.z.value, h0.w.value), uint4(0x8000, 0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void half_to_float() + { + TestUtils.AreEqual(asuint(new half { value = 0x0000 }), 0x00000000); + TestUtils.AreEqual(asuint(new half { value = 0x0203 }), 0x3800C000); + TestUtils.AreEqual(asuint(new half { value = 0x4321 }), 0x40642000); + TestUtils.AreEqual(asuint(new half { value = 0x7BFF }), 0x477FE000); + TestUtils.AreEqual(asuint(new half { value = 0x7C00 }), 0x7F800000); + TestUtils.AreEqual(isnan(new half { value = 0x7C01 }), true); + + TestUtils.AreEqual(asuint(new half { value = 0x8000 }), 0x80000000); + TestUtils.AreEqual(asuint(new half { value = 0x8203 }), 0xB800C000); + TestUtils.AreEqual(asuint(new half { value = 0xC321 }), 0xC0642000); + TestUtils.AreEqual(asuint(new half { value = 0xFBFF }), 0xC77FE000); + TestUtils.AreEqual(asuint(new half { value = 0xFC00 }), 0xFF800000); + TestUtils.AreEqual(isnan(new half { value = 0xFC01 }), true); + } + + [TestCompiler] + public static void half2_to_float2() + { + half2 h0; h0.x.value = 0x0000; h0.y.value = 0x0203; + half2 h1; h1.x.value = 0x4321; h1.y.value = 0x7BFF; + half2 h2; h2.x.value = 0x7C00; h2.y.value = 0x7C00; + half2 h3; h3.x.value = 0x7C01; h3.y.value = 0x7C01; + + half2 h4; h4.x.value = 0x8000; h4.y.value = 0x8203; + half2 h5; h5.x.value = 0xC321; h5.y.value = 0xFBFF; + half2 h6; h6.x.value = 0xFC00; h6.y.value = 0xFC00; + half2 h7; h7.x.value = 0xFC01; h7.y.value = 0xFC01; + + TestUtils.AreEqual(asuint(h0), uint2(0x00000000, 0x3800C000)); + TestUtils.AreEqual(asuint(h1), uint2(0x40642000, 0x477FE000)); + TestUtils.AreEqual(asuint(h2), uint2(0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(h3)), true); + + TestUtils.AreEqual(asuint(h4), uint2(0x80000000, 0xB800C000)); + TestUtils.AreEqual(asuint(h5), uint2(0xC0642000, 0xC77FE000)); + TestUtils.AreEqual(asuint(h6), uint2(0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(h7)), true); + } + + [TestCompiler] + public static void half3_to_float3() + { + half3 h0; h0.x.value = 0x0000; h0.y.value = 0x0203; h0.z.value = 0x4321; + half3 h1; h1.x.value = 0x7BFF; h1.y.value = 0x7C00; h1.z.value = 0x7C00; + half3 h2; h2.x.value = 0x7C01; h2.y.value = 0x7C01; h2.z.value = 0x7C01; + + half3 h3; h3.x.value = 0x8000; h3.y.value = 0x8203; h3.z.value = 0xC321; + half3 h4; h4.x.value = 0xFBFF; h4.y.value = 0xFC00; h4.z.value = 0xFC00; + half3 h5; h5.x.value = 0xFC01; h5.y.value = 0xFC01; h5.z.value = 0xFC01; + + TestUtils.AreEqual(asuint(h0), uint3(0x00000000, 0x3800C000, 0x40642000)); + TestUtils.AreEqual(asuint(h1), uint3(0x477FE000, 0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(h2)), true); + + TestUtils.AreEqual(asuint(h3), uint3(0x80000000, 0xB800C000, 0xC0642000)); + TestUtils.AreEqual(asuint(h4), uint3(0xC77FE000, 0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(h5)), true); + } + + [TestCompiler] + public static void half4_to_float4() + { + half4 h0; h0.x.value = 0x0000; h0.y.value = 0x0203; h0.z.value = 0x4321; h0.w.value = 0x7BFF; + half4 h1; h1.x.value = 0x7C00; h1.y.value = 0x7C00; h1.z.value = 0x7C00; h1.w.value = 0x7C00; + half4 h2; h2.x.value = 0x7C01; h2.y.value = 0x7C01; h2.z.value = 0x7C01; h2.w.value = 0x7C01; + + half4 h3; h3.x.value = 0x8000; h3.y.value = 0x8203; h3.z.value = 0xC321; h3.w.value = 0xFBFF; + half4 h4; h4.x.value = 0xFC00; h4.y.value = 0xFC00; h4.z.value = 0xFC00; h4.w.value = 0xFC00; + half4 h5; h5.x.value = 0xFC01; h5.y.value = 0xFC01; h5.z.value = 0xFC01; h5.w.value = 0xFC01; + + TestUtils.AreEqual(asuint(h0), uint4(0x00000000, 0x3800C000, 0x40642000, 0x477FE000)); + TestUtils.AreEqual(asuint(h1), uint4(0x7F800000, 0x7F800000, 0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(h2)), true); + + TestUtils.AreEqual(asuint(h3), uint4(0x80000000, 0xB800C000, 0xC0642000, 0xC77FE000)); + TestUtils.AreEqual(asuint(h4), uint4(0xFF800000, 0xFF800000, 0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(h5)), true); + } + + + [TestCompiler] + public static void half_to_double() + { + TestUtils.AreEqual(asulong((double)new half { value = 0x0000 }), 0x0000000000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x0203 }), 0x3F00180000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x4321 }), 0x400C840000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x7BFF }), 0x40eFFC0000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x7C00 }), 0x7FF0000000000000u); + TestUtils.AreEqual(isnan((double)new half { value = 0x7C01 }), true); + + TestUtils.AreEqual(asulong((double)new half { value = 0x8000 }), 0x8000000000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x8203 }), 0xBF00180000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0xC321 }), 0xC00C840000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0xFBFF }), 0xC0eFFC0000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0xFC00 }), 0xFFF0000000000000u); + TestUtils.AreEqual(isnan((double)new half { value = 0xFC01 }), true); + } + + + [TestCompiler] + public static void half_from_float_explicit_conversion() + { + half h = (half)123.4f; + TestUtils.AreEqual(h.value, 0x57B6); + } + + [TestCompiler] + public static void half2_from_float2_explicit_conversion() + { + half2 h = (half2)float2(123.4f, 5.96046448e-08f); + TestUtils.AreEqual(h.x.value, 0x57B6); + TestUtils.AreEqual(h.y.value, 0x0001); + } + + [TestCompiler] + public static void half3_from_float3_explicit_conversion() + { + half3 h = (half3)float3(123.4f, 5.96046448e-08f, -65504.0f); + TestUtils.AreEqual(h.x.value, 0x57B6); + TestUtils.AreEqual(h.y.value, 0x0001); + TestUtils.AreEqual(h.z.value, 0xFBFF); + } + + [TestCompiler] + public static void half4_from_float4_explicit_conversion() + { + half4 h = (half4)float4(123.4f, 5.96046448e-08f, -65504.0f, float.PositiveInfinity); + TestUtils.AreEqual(h.x.value, 0x57B6); + TestUtils.AreEqual(h.y.value, 0x0001); + TestUtils.AreEqual(h.z.value, 0xFBFF); + TestUtils.AreEqual(h.w.value, 0x7C00); + } + + [TestCompiler] + public static void half_from_double_explicit_conversion() + { + half h = (half)123.4; + TestUtils.AreEqual(h.value, 0x57B6); + } + + + [TestCompiler] + public static void half_to_float_implicit_conversion() + { + half h; h.value = 0x0203; + float f = h; + TestUtils.AreEqual(asuint(f), 0x3800C000); + } + + [TestCompiler] + public static void half2_to_float2_implicit_conversion() + { + half2 h; h.x.value = 0x0203; h.y.value = 0x8203; + float2 f = h; + TestUtils.AreEqual(asuint(f.x), 0x3800C000); + TestUtils.AreEqual(asuint(f.y), 0xB800C000); + } + + [TestCompiler] + public static void half3_to_float3_implicit_conversion() + { + half3 h; h.x.value = 0x0203; h.y.value = 0x8203; h.z.value = 0x7BFF; + float3 f = h; + TestUtils.AreEqual(asuint(f.x), 0x3800C000); + TestUtils.AreEqual(asuint(f.y), 0xB800C000); + TestUtils.AreEqual(asuint(f.z), 0x477FE000); + } + + [TestCompiler] + public static void half4_to_float4_implicit_conversion() + { + half4 h; h.x.value = 0x0203; h.y.value = 0x8203; h.z.value = 0x7BFF; h.w.value = 0x7C00; + float4 f = h; + TestUtils.AreEqual(asuint(f.x), 0x3800C000); + TestUtils.AreEqual(asuint(f.y), 0xB800C000); + TestUtils.AreEqual(asuint(f.z), 0x477FE000); + TestUtils.AreEqual(asuint(f.w), 0x7F800000); + } + + [TestCompiler] + public static void half_to_double_implicit_conversion() + { + half h; h.value = 0x0203; + double f = h; + + TestUtils.AreEqual(asulong(f), 0x3F00180000000000u); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestHalf.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestHalf.cs.meta new file mode 100644 index 0000000..291a364 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestHalf.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dba01b4c9788ea04d87865908e0ba344 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2.gen.cs new file mode 100644 index 0000000..8f29d01 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2.gen.cs @@ -0,0 +1,1339 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt2 + { + [TestCompiler] + public static void int2_zero() + { + TestUtils.AreEqual(int2.zero.x, 0); + TestUtils.AreEqual(int2.zero.y, 0); + } + + [TestCompiler] + public static void int2_constructor() + { + int2 a = new int2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void int2_scalar_constructor() + { + int2 a = new int2(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + } + + [TestCompiler] + public static void int2_static_constructor() + { + int2 a = int2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void int2_static_scalar_constructor() + { + int2 a = int2(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + } + + [TestCompiler] + public static void int2_operator_equal_wide_wide() + { + int2 a0 = int2(790229414, 970783976); + int2 b0 = int2(612337669, 1214209108); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2 a1 = int2(1428432738, 1578747135); + int2 b1 = int2(2120643427, 295461214); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2 a2 = int2(1733797753, 2001507228); + int2 b2 = int2(1510890331, 1893316566); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2 a3 = int2(1446876437, 1777406370); + int2 b3 = int2(921816149, 1834958575); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2_operator_equal_wide_scalar() + { + int2 a0 = int2(1211464300, 1921862607); + int b0 = (746972502); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2 a1 = int2(508076684, 1394594555); + int b1 = (1249127920); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2 a2 = int2(746862310, 1884008277); + int b2 = (1733655277); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2 a3 = int2(1682018538, 936027116); + int b3 = (795585660); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int2 b0 = int2(233855098, 924242519); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1402948791); + int2 b1 = int2(601381975, 2120518068); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (629187703); + int2 b2 = int2(1971977031, 47183124); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1061805787); + int2 b3 = int2(1009011238, 312511148); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2_operator_not_equal_wide_wide() + { + int2 a0 = int2(1660932106, 982847023); + int2 b0 = int2(107139049, 75478496); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2 a1 = int2(97046264, 1739517447); + int2 b1 = int2(2055495054, 358586687); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2 a2 = int2(1253499180, 1830584069); + int2 b2 = int2(942338347, 111564990); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2 a3 = int2(1841470429, 1397841646); + int2 b3 = int2(113811950, 948912488); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2_operator_not_equal_wide_scalar() + { + int2 a0 = int2(747758183, 1033001286); + int b0 = (248693828); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2 a1 = int2(1439973882, 1197845089); + int b1 = (2138928797); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2 a2 = int2(1432672459, 238704450); + int b2 = (950170763); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2 a3 = int2(2105962247, 1640688041); + int b3 = (727205263); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int2 b0 = int2(2037494727, 1989050616); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (48833929); + int2 b1 = int2(1897435904, 514354517); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (1783749164); + int2 b2 = int2(364694471, 754315072); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (124108032); + int2 b3 = int2(1512967900, 1178825850); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_wide_wide() + { + int2 a0 = int2(1182186063, 415538999); + int2 b0 = int2(524633529, 1032195686); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2 a1 = int2(1667335818, 1566618442); + int2 b1 = int2(760723389, 1505751409); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int2 a2 = int2(1166180837, 639095188); + int2 b2 = int2(431962172, 1287906509); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2 a3 = int2(1080836365, 771119973); + int2 b3 = int2(1560084663, 1450178202); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_wide_scalar() + { + int2 a0 = int2(608447185, 818840405); + int b0 = (1491216667); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2 a1 = int2(869219329, 1214500548); + int b1 = (2080125385); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2 a2 = int2(1361741203, 1615392341); + int b2 = (1667165786); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2 a3 = int2(840091491, 1247103789); + int b3 = (469591900); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_scalar_wide() + { + int a0 = (548436837); + int2 b0 = int2(282703327, 14370648); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1862117300); + int2 b1 = int2(1304793311, 826073259); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (988910157); + int2 b2 = int2(445132446, 1139670255); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (111349251); + int2 b3 = int2(1102440676, 112183144); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_wide_wide() + { + int2 a0 = int2(592884447, 2133928932); + int2 b0 = int2(138737040, 192863971); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2 a1 = int2(918957182, 1284069471); + int2 b1 = int2(1700841444, 1044631301); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int2 a2 = int2(194584707, 739120780); + int2 b2 = int2(1391589821, 730837695); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int2 a3 = int2(241654068, 1340158550); + int2 b3 = int2(253553987, 2078872742); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_wide_scalar() + { + int2 a0 = int2(1097138316, 211763648); + int b0 = (438688675); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int2 a1 = int2(1883002501, 43662641); + int b1 = (56406996); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int2 a2 = int2(1923456111, 1219010035); + int b2 = (1437755186); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2 a3 = int2(2125058448, 893125636); + int b3 = (304028799); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int2 b0 = int2(599356784, 185671342); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1932327391); + int2 b1 = int2(2025591013, 1257191721); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1312388500); + int2 b2 = int2(1443698859, 779217735); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (691047512); + int2 b3 = int2(741776730, 732565983); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_equal_wide_wide() + { + int2 a0 = int2(1577248162, 2043073061); + int2 b0 = int2(903445031, 2108974565); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2 a1 = int2(1688380407, 176431985); + int2 b1 = int2(210822256, 1281704747); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2 a2 = int2(223299035, 1502802140); + int2 b2 = int2(453681718, 66138830); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2 a3 = int2(1691709825, 386789394); + int2 b3 = int2(1229799377, 1620922595); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_equal_wide_scalar() + { + int2 a0 = int2(1722165358, 1219858357); + int b0 = (1688048545); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2 a1 = int2(860410743, 348104022); + int b1 = (411099660); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2 a2 = int2(1963256951, 58924407); + int b2 = (212084836); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int2 a3 = int2(1459242706, 532949158); + int b3 = (1745758438); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int2 b0 = int2(1181030049, 1787703989); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1729760948); + int2 b1 = int2(1816537388, 1359786460); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (874999193); + int2 b2 = int2(1678863148, 1711365839); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (762067160); + int2 b3 = int2(11953554, 1131583906); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_equal_wide_wide() + { + int2 a0 = int2(263000030, 744235661); + int2 b0 = int2(1395535146, 1178373944); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2 a1 = int2(1893760267, 237248); + int2 b1 = int2(1237373760, 1364855321); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int2 a2 = int2(1062370984, 1676977687); + int2 b2 = int2(600811864, 362060472); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int2 a3 = int2(816766880, 1089431546); + int2 b3 = int2(290870624, 1839067862); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_equal_wide_scalar() + { + int2 a0 = int2(2112791350, 1043657935); + int b0 = (1470533736); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2 a1 = int2(101764761, 556026890); + int b1 = (1529909067); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int2 a2 = int2(281734132, 815093894); + int b2 = (1186600258); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int2 a3 = int2(609211196, 829548642); + int b3 = (1604309397); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int2 b0 = int2(1503244746, 861711266); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (817773856); + int2 b1 = int2(925984572, 571221723); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (683686810); + int2 b2 = int2(118252990, 1653952090); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (1240253990); + int2 b3 = int2(1947039008, 1869136019); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2_operator_add_wide_wide() + { + int2 a0 = int2(2049228671, 1658660009); + int2 b0 = int2(2088751567, 645762023); + int2 r0 = int2(-156987058, -1990545264); + TestUtils.AreEqual(a0 + b0, r0); + + int2 a1 = int2(491719392, 937013355); + int2 b1 = int2(306868786, 4360271); + int2 r1 = int2(798588178, 941373626); + TestUtils.AreEqual(a1 + b1, r1); + + int2 a2 = int2(81108663, 1063894558); + int2 b2 = int2(506047997, 2094559874); + int2 r2 = int2(587156660, -1136512864); + TestUtils.AreEqual(a2 + b2, r2); + + int2 a3 = int2(86954702, 843159721); + int2 b3 = int2(1634712736, 1601474440); + int2 r3 = int2(1721667438, -1850333135); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2_operator_add_wide_scalar() + { + int2 a0 = int2(2038218457, 134923711); + int b0 = (2124409227); + int2 r0 = int2(-132339612, -2035634358); + TestUtils.AreEqual(a0 + b0, r0); + + int2 a1 = int2(875689667, 997710928); + int b1 = (1338884463); + int2 r1 = int2(-2080393166, -1958371905); + TestUtils.AreEqual(a1 + b1, r1); + + int2 a2 = int2(340490871, 70433301); + int b2 = (1067888129); + int2 r2 = int2(1408379000, 1138321430); + TestUtils.AreEqual(a2 + b2, r2); + + int2 a3 = int2(2003021861, 1160398286); + int b3 = (1635971971); + int2 r3 = int2(-655973464, -1498597039); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2_operator_add_scalar_wide() + { + int a0 = (391092078); + int2 b0 = int2(519908870, 851424292); + int2 r0 = int2(911000948, 1242516370); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (328314822); + int2 b1 = int2(135622204, 740923360); + int2 r1 = int2(463937026, 1069238182); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (655394201); + int2 b2 = int2(1451896269, 1781697072); + int2 r2 = int2(2107290470, -1857876023); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (996031825); + int2 b3 = int2(1557774949, 779774940); + int2 r3 = int2(-1741160522, 1775806765); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2_operator_sub_wide_wide() + { + int2 a0 = int2(1353441118, 797269833); + int2 b0 = int2(1332656812, 1827794007); + int2 r0 = int2(20784306, -1030524174); + TestUtils.AreEqual(a0 - b0, r0); + + int2 a1 = int2(659988112, 56022121); + int2 b1 = int2(972557431, 2078233689); + int2 r1 = int2(-312569319, -2022211568); + TestUtils.AreEqual(a1 - b1, r1); + + int2 a2 = int2(365847472, 2062899435); + int2 b2 = int2(1508184327, 1372307701); + int2 r2 = int2(-1142336855, 690591734); + TestUtils.AreEqual(a2 - b2, r2); + + int2 a3 = int2(1380988474, 799885138); + int2 b3 = int2(810327977, 936799885); + int2 r3 = int2(570660497, -136914747); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2_operator_sub_wide_scalar() + { + int2 a0 = int2(1176369558, 1934521195); + int b0 = (462232403); + int2 r0 = int2(714137155, 1472288792); + TestUtils.AreEqual(a0 - b0, r0); + + int2 a1 = int2(309452150, 108910717); + int b1 = (1417634074); + int2 r1 = int2(-1108181924, -1308723357); + TestUtils.AreEqual(a1 - b1, r1); + + int2 a2 = int2(1306356714, 1451794815); + int b2 = (1502312334); + int2 r2 = int2(-195955620, -50517519); + TestUtils.AreEqual(a2 - b2, r2); + + int2 a3 = int2(281174200, 1913724431); + int b3 = (87530840); + int2 r3 = int2(193643360, 1826193591); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int2 b0 = int2(2022393810, 1612688515); + int2 r0 = int2(-330859405, 78845890); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (496689713); + int2 b1 = int2(887037586, 2097630964); + int2 r1 = int2(-390347873, -1600941251); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (374934538); + int2 b2 = int2(939035482, 935242277); + int2 r2 = int2(-564100944, -560307739); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1789300421); + int2 b3 = int2(264712893, 1231856067); + int2 r3 = int2(1524587528, 557444354); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2_operator_mul_wide_wide() + { + int2 a0 = int2(245827027, 208934650); + int2 b0 = int2(759663997, 350129201); + int2 r0 = int2(-632811769, 1402281434); + TestUtils.AreEqual(a0 * b0, r0); + + int2 a1 = int2(1019478917, 568231809); + int2 b1 = int2(477450108, 1635735015); + int2 r1 = int2(332447596, -1932977561); + TestUtils.AreEqual(a1 * b1, r1); + + int2 a2 = int2(877289039, 1585782440); + int2 b2 = int2(388710278, 757722665); + int2 r2 = int2(-1670918566, 1455036648); + TestUtils.AreEqual(a2 * b2, r2); + + int2 a3 = int2(2111178729, 1186019069); + int2 b3 = int2(1509388321, 1841703980); + int2 r3 = int2(2128344329, -594088068); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2_operator_mul_wide_scalar() + { + int2 a0 = int2(1762033447, 465343930); + int b0 = (1476837906); + int2 r0 = int2(-1313177922, 1326807828); + TestUtils.AreEqual(a0 * b0, r0); + + int2 a1 = int2(1570757881, 1824319147); + int b1 = (1326409563); + int2 r1 = int2(1666366339, -252064823); + TestUtils.AreEqual(a1 * b1, r1); + + int2 a2 = int2(1356578909, 154616909); + int b2 = (72749215); + int2 r2 = int2(130042307, 1400257491); + TestUtils.AreEqual(a2 * b2, r2); + + int2 a3 = int2(975743632, 1958912969); + int b3 = (573770299); + int2 r3 = int2(414773040, -699623085); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2_operator_mul_scalar_wide() + { + int a0 = (99541948); + int2 b0 = int2(1764461774, 657072478); + int2 r0 = int2(-950398648, -102049016); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1459784358); + int2 b1 = int2(1610646683, 1632058826); + int2 r1 = int2(1040681602, -1659570948); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (868441654); + int2 b2 = int2(1408757883, 335917146); + int2 r2 = int2(1867178994, -1836957956); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (2105124483); + int2 b3 = int2(1178393968, 1963904348); + int2 r3 = int2(-1028919216, 2084093460); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2_operator_div_wide_wide() + { + int2 a0 = int2(1590198532, 507812502); + int2 b0 = int2(1434703236, 911965201); + int2 r0 = int2(1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int2 a1 = int2(126627032, 1058247011); + int2 b1 = int2(390415521, 128746927); + int2 r1 = int2(0, 8); + TestUtils.AreEqual(a1 / b1, r1); + + int2 a2 = int2(427387861, 290676154); + int2 b2 = int2(525835375, 816946613); + int2 r2 = int2(0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2 a3 = int2(1829594484, 1127868739); + int2 b3 = int2(878264647, 146789678); + int2 r3 = int2(2, 7); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2_operator_div_wide_scalar() + { + int2 a0 = int2(560951562, 1218680769); + int b0 = (947861580); + int2 r0 = int2(0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int2 a1 = int2(375341724, 1919409166); + int b1 = (1613542090); + int2 r1 = int2(0, 1); + TestUtils.AreEqual(a1 / b1, r1); + + int2 a2 = int2(1397425408, 524526253); + int b2 = (1349573078); + int2 r2 = int2(1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2 a3 = int2(341995568, 1515313790); + int b3 = (495895326); + int2 r3 = int2(0, 3); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2_operator_div_scalar_wide() + { + int a0 = (1161272038); + int2 b0 = int2(187325733, 1594107378); + int2 r0 = int2(6, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (2016183849); + int2 b1 = int2(1589343709, 388768753); + int2 r1 = int2(1, 5); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1417077283); + int2 b2 = int2(1773486938, 1154044032); + int2 r2 = int2(0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (81831373); + int2 b3 = int2(1476877645, 653688843); + int2 r3 = int2(0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2_operator_mod_wide_wide() + { + int2 a0 = int2(146150818, 1846543305); + int2 b0 = int2(983050390, 771341152); + int2 r0 = int2(146150818, 303861001); + TestUtils.AreEqual(a0 % b0, r0); + + int2 a1 = int2(1071447756, 308965362); + int2 b1 = int2(942375212, 367361754); + int2 r1 = int2(129072544, 308965362); + TestUtils.AreEqual(a1 % b1, r1); + + int2 a2 = int2(659881575, 1002365460); + int2 b2 = int2(749500619, 750718852); + int2 r2 = int2(659881575, 251646608); + TestUtils.AreEqual(a2 % b2, r2); + + int2 a3 = int2(861198439, 1510617532); + int2 b3 = int2(2095151755, 88438806); + int2 r3 = int2(861198439, 7157830); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2_operator_mod_wide_scalar() + { + int2 a0 = int2(164800505, 1062177828); + int b0 = (883951171); + int2 r0 = int2(164800505, 178226657); + TestUtils.AreEqual(a0 % b0, r0); + + int2 a1 = int2(1898749675, 820393245); + int b1 = (1701653318); + int2 r1 = int2(197096357, 820393245); + TestUtils.AreEqual(a1 % b1, r1); + + int2 a2 = int2(19002208, 1464010899); + int b2 = (128329633); + int2 r2 = int2(19002208, 52384936); + TestUtils.AreEqual(a2 % b2, r2); + + int2 a3 = int2(896587769, 1982762194); + int b3 = (405208598); + int2 r3 = int2(86170573, 361927802); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2_operator_mod_scalar_wide() + { + int a0 = (242383789); + int2 b0 = int2(740000543, 1556450291); + int2 r0 = int2(242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1104736385); + int2 b1 = int2(437976569, 1911837205); + int2 r1 = int2(228783247, 1104736385); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1507212038); + int2 b2 = int2(1906405167, 247693265); + int2 r2 = int2(1507212038, 21052448); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (293460573); + int2 b3 = int2(1495295166, 873323603); + int2 r3 = int2(293460573, 293460573); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2_operator_plus() + { + int2 a0 = int2(1643476803, 907898539); + int2 r0 = int2(1643476803, 907898539); + TestUtils.AreEqual(+a0, r0); + + int2 a1 = int2(379615839, 1735287433); + int2 r1 = int2(379615839, 1735287433); + TestUtils.AreEqual(+a1, r1); + + int2 a2 = int2(1743199272, 339091479); + int2 r2 = int2(1743199272, 339091479); + TestUtils.AreEqual(+a2, r2); + + int2 a3 = int2(401565897, 849339193); + int2 r3 = int2(401565897, 849339193); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int2_operator_neg() + { + int2 a0 = int2(1955022112, 662160019); + int2 r0 = int2(-1955022112, -662160019); + TestUtils.AreEqual(-a0, r0); + + int2 a1 = int2(370300775, 1004505619); + int2 r1 = int2(-370300775, -1004505619); + TestUtils.AreEqual(-a1, r1); + + int2 a2 = int2(28153593, 505708349); + int2 r2 = int2(-28153593, -505708349); + TestUtils.AreEqual(-a2, r2); + + int2 a3 = int2(1115028238, 694995093); + int2 r3 = int2(-1115028238, -694995093); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int2_operator_prefix_inc() + { + int2 a0 = int2(864455342, 2035793213); + int2 r0 = int2(864455343, 2035793214); + TestUtils.AreEqual(++a0, r0); + + int2 a1 = int2(1275443862, 411610189); + int2 r1 = int2(1275443863, 411610190); + TestUtils.AreEqual(++a1, r1); + + int2 a2 = int2(446210725, 115573442); + int2 r2 = int2(446210726, 115573443); + TestUtils.AreEqual(++a2, r2); + + int2 a3 = int2(913293639, 1208161871); + int2 r3 = int2(913293640, 1208161872); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int2_operator_postfix_inc() + { + int2 a0 = int2(1751003569, 2063707595); + int2 r0 = int2(1751003569, 2063707595); + TestUtils.AreEqual(a0++, r0); + + int2 a1 = int2(1500486291, 1007848192); + int2 r1 = int2(1500486291, 1007848192); + TestUtils.AreEqual(a1++, r1); + + int2 a2 = int2(2028651936, 1190630527); + int2 r2 = int2(2028651936, 1190630527); + TestUtils.AreEqual(a2++, r2); + + int2 a3 = int2(1396179607, 177416855); + int2 r3 = int2(1396179607, 177416855); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int2_operator_prefix_dec() + { + int2 a0 = int2(200904609, 871077500); + int2 r0 = int2(200904608, 871077499); + TestUtils.AreEqual(--a0, r0); + + int2 a1 = int2(968578728, 1995396216); + int2 r1 = int2(968578727, 1995396215); + TestUtils.AreEqual(--a1, r1); + + int2 a2 = int2(435367037, 1589827826); + int2 r2 = int2(435367036, 1589827825); + TestUtils.AreEqual(--a2, r2); + + int2 a3 = int2(1434377580, 1699290403); + int2 r3 = int2(1434377579, 1699290402); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int2_operator_postfix_dec() + { + int2 a0 = int2(283970262, 1109329936); + int2 r0 = int2(283970262, 1109329936); + TestUtils.AreEqual(a0--, r0); + + int2 a1 = int2(1073216143, 1932646215); + int2 r1 = int2(1073216143, 1932646215); + TestUtils.AreEqual(a1--, r1); + + int2 a2 = int2(1174104498, 524156737); + int2 r2 = int2(1174104498, 524156737); + TestUtils.AreEqual(a2--, r2); + + int2 a3 = int2(691209285, 802721301); + int2 r3 = int2(691209285, 802721301); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_and_wide_wide() + { + int2 a0 = int2(779935043, 1097962163); + int2 b0 = int2(307705143, 1710882162); + int2 r0 = int2(39064835, 1097961522); + TestUtils.AreEqual(a0 & b0, r0); + + int2 a1 = int2(1939593304, 800599247); + int2 b1 = int2(866836769, 532490608); + int2 r1 = int2(864731136, 263727168); + TestUtils.AreEqual(a1 & b1, r1); + + int2 a2 = int2(952140918, 782792558); + int2 b2 = int2(679371720, 1794035877); + int2 r2 = int2(675283008, 715673636); + TestUtils.AreEqual(a2 & b2, r2); + + int2 a3 = int2(1608557706, 396446406); + int2 b3 = int2(1439832202, 519529812); + int2 r3 = int2(1438646410, 379666500); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_and_wide_scalar() + { + int2 a0 = int2(443615469, 490057985); + int b0 = (93423598); + int2 r0 = int2(1114348, 85033216); + TestUtils.AreEqual(a0 & b0, r0); + + int2 a1 = int2(2042441263, 1405175110); + int b1 = (1524760558); + int2 r1 = int2(1486958126, 1388397894); + TestUtils.AreEqual(a1 & b1, r1); + + int2 a2 = int2(510212004, 1236735839); + int b2 = (1941875181); + int2 r2 = int2(304619940, 1102446925); + TestUtils.AreEqual(a2 & b2, r2); + + int2 a3 = int2(1365509729, 607982857); + int b3 = (428270198); + int2 r3 = int2(285475424, 262144); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int2 b0 = int2(420346723, 562416448); + int2 r0 = int2(547170, 18752); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1393127318); + int2 b1 = int2(1560699552, 851218057); + int2 r1 = int2(1358979712, 302517888); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (703880958); + int2 b2 = int2(1159378889, 2031211279); + int2 r2 = int2(17831624, 688935438); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1089518981); + int2 b3 = int2(270607307, 1349288930); + int2 r3 = int2(2105729, 1080066432); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_or_wide_wide() + { + int2 a0 = int2(1731159103, 659068416); + int2 b0 = int2(1583847161, 692672727); + int2 r0 = int2(2138044159, 793370327); + TestUtils.AreEqual(a0 | b0, r0); + + int2 a1 = int2(382702471, 1821032196); + int2 b1 = int2(1161585489, 1756207130); + int2 r1 = int2(1476391895, 1823457054); + TestUtils.AreEqual(a1 | b1, r1); + + int2 a2 = int2(1565773438, 1004000514); + int2 b2 = int2(1321374429, 1287357212); + int2 r2 = int2(1607720703, 2147473182); + TestUtils.AreEqual(a2 | b2, r2); + + int2 a3 = int2(948501377, 600951835); + int2 b3 = int2(2075767170, 1273513430); + int2 r3 = int2(2075786115, 1811533279); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_or_wide_scalar() + { + int2 a0 = int2(961259683, 471103264); + int b0 = (1666102508); + int2 r0 = int2(2068823279, 2136930284); + TestUtils.AreEqual(a0 | b0, r0); + + int2 a1 = int2(1733389229, 386953869); + int b1 = (1591585258); + int2 r1 = int2(2145250287, 1608383471); + TestUtils.AreEqual(a1 | b1, r1); + + int2 a2 = int2(1148351449, 1814263250); + int b2 = (1048929715); + int2 r2 = int2(2130147323, 2124903923); + TestUtils.AreEqual(a2 | b2, r2); + + int2 a3 = int2(860336789, 1227888278); + int b3 = (1637162093); + int2 r3 = int2(1943518973, 1773477631); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int2 b0 = int2(1212928242, 1614462616); + int2 r0 = int2(1213978111, 1752940445); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (936937728); + int2 b1 = int2(764766995, 306352095); + int2 r1 = int2(1071508243, 937070559); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (574719481); + int2 b2 = int2(1283571271, 2109131012); + int2 r2 = int2(1858191359, 2146946557); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (979469710); + int2 b3 = int2(1348323481, 1407542578); + int2 r3 = int2(2055064991, 2078664126); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_xor_wide_wide() + { + int2 a0 = int2(1556324760, 207002929); + int2 b0 = int2(1054997548, 1523759632); + int2 r0 = int2(1646419380, 1451501345); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2 a1 = int2(1843444873, 1632079131); + int2 b1 = int2(251164872, 110472397); + int2 r1 = int2(1662567489, 1741824470); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2 a2 = int2(1460334334, 1607815585); + int2 b2 = int2(384031112, 1109163205); + int2 r2 = int2(1105803126, 499723620); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2 a3 = int2(220623650, 38668553); + int2 b3 = int2(535118981, 179106262); + int2 r3 = int2(314783655, 149092575); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_xor_wide_scalar() + { + int2 a0 = int2(2124666952, 177397845); + int b0 = (493665894); + int2 r0 = int2(1674536494, 402546227); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2 a1 = int2(574879617, 1136545648); + int b1 = (1937385541); + int2 r1 = int2(1362747332, 818177845); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2 a2 = int2(213863690, 289301586); + int b2 = (535061373); + int2 r2 = int2(324742775, 249169711); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2 a3 = int2(1305234431, 1308626970); + int b3 = (353786540); + int2 r3 = int2(1490686291, 1528187574); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int2 b0 = int2(1077599928, 884741329); + int2 r0 = int2(217506340, 2020616269); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (212164516); + int2 b1 = int2(1585020328, 152985454); + int2 r1 = int2(1390158348, 96141514); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1775851275); + int2 b2 = int2(1416249064, 1309317737); + int2 r2 = int2(1035168227, 668192098); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1773918217); + int2 b3 = int2(1509843030, 1206045972); + int2 r3 = int2(809875551, 777590045); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2_operator_left_shift() + { + int2 a0 = int2(197771193, 622182602); + int b0 = (1321149625); + int2 r0 = int2(1912602624, -1811939328); + TestUtils.AreEqual(a0 << b0, r0); + + int2 a1 = int2(1283988958, 473415985); + int b1 = (1327917304); + int2 r1 = int2(-570425344, 822083584); + TestUtils.AreEqual(a1 << b1, r1); + + int2 a2 = int2(432425717, 2058433484); + int b2 = (870301196); + int2 r2 = int2(1689210880, 322748416); + TestUtils.AreEqual(a2 << b2, r2); + + int2 a3 = int2(1200694230, 1360008038); + int b3 = (1531607705); + int2 r3 = int2(-1409286144, -872415232); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int2_operator_right_shift() + { + int2 a0 = int2(548167301, 1161338299); + int b0 = (1266801540); + int2 r0 = int2(34260456, 72583643); + TestUtils.AreEqual(a0 >> b0, r0); + + int2 a1 = int2(1617625829, 713958715); + int b1 = (1860731847); + int2 r1 = int2(12637701, 5577802); + TestUtils.AreEqual(a1 >> b1, r1); + + int2 a2 = int2(196552656, 1265099998); + int b2 = (770466193); + int2 r2 = int2(1499, 9651); + TestUtils.AreEqual(a2 >> b2, r2); + + int2 a3 = int2(572763124, 426807581); + int b3 = (506619530); + int2 r3 = int2(559338, 416804); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_not() + { + int2 a0 = int2(1403358969, 831360921); + int2 r0 = int2(-1403358970, -831360922); + TestUtils.AreEqual(~a0, r0); + + int2 a1 = int2(2088190243, 878283189); + int2 r1 = int2(-2088190244, -878283190); + TestUtils.AreEqual(~a1, r1); + + int2 a2 = int2(308994339, 1420884856); + int2 r2 = int2(-308994340, -1420884857); + TestUtils.AreEqual(~a2, r2); + + int2 a3 = int2(472965491, 627580960); + int2 r3 = int2(-472965492, -627580961); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void int2_shuffle_result_1() + { + int2 a = int2(0, 1); + int2 b = int2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (3)); + } + + [TestCompiler] + public static void int2_shuffle_result_2() + { + int2 a = int2(0, 1); + int2 b = int2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX), int2(0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftX), int2(1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), int2(2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX), int2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY), int2(0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int2(1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY), int2(2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), int2(3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX), int2(0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), int2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX), int2(2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), int2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY), int2(0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY), int2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY), int2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), int2(3, 3)); + } + + [TestCompiler] + public static void int2_shuffle_result_3() + { + int2 a = int2(0, 1); + int2 b = int2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY), int3(2, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightX), int3(2, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(1, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), int3(0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftX), int3(3, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), int3(2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX), int3(2, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY), int3(3, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightX), int3(3, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(0, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(3, 1, 1)); + } + + [TestCompiler] + public static void int2_shuffle_result_4() + { + int2 a = int2(0, 1); + int2 b = int2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX), int4(0, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(2, 1, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX), int4(3, 2, 3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), int4(2, 0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightX), int4(0, 3, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftY), int4(3, 0, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftX), int4(2, 2, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(2, 2, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.LeftY), int4(0, 1, 2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightY), int4(2, 1, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftY), int4(3, 3, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int4(2, 2, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), int4(3, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), int4(2, 2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(0, 3, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), int4(2, 0, 0, 0)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2.gen.cs.meta new file mode 100644 index 0000000..e48561b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a60a1141ea2c3bc49b14be2842a73f00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x2.gen.cs new file mode 100644 index 0000000..5ef7679 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x2.gen.cs @@ -0,0 +1,1234 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt2x2 + { + [TestCompiler] + public static void int2x2_zero() + { + TestUtils.AreEqual(int2x2.zero.c0.x, 0); + TestUtils.AreEqual(int2x2.zero.c0.y, 0); + TestUtils.AreEqual(int2x2.zero.c1.x, 0); + TestUtils.AreEqual(int2x2.zero.c1.y, 0); + } + + [TestCompiler] + public static void int2x2_identity() + { + TestUtils.AreEqual(int2x2.identity.c0.x, 1); + TestUtils.AreEqual(int2x2.identity.c0.y, 0); + TestUtils.AreEqual(int2x2.identity.c1.x, 0); + TestUtils.AreEqual(int2x2.identity.c1.y, 1); + } + + [TestCompiler] + public static void int2x2_operator_equal_wide_wide() + { + int2x2 a0 = int2x2(790229414, 970783976, 1428432738, 1578747135); + int2x2 b0 = int2x2(612337669, 1214209108, 2120643427, 295461214); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x2 a1 = int2x2(1733797753, 2001507228, 1446876437, 1777406370); + int2x2 b1 = int2x2(1510890331, 1893316566, 921816149, 1834958575); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x2 a2 = int2x2(1426387268, 1809275021, 1843770816, 1172185222); + int2x2 b2 = int2x2(1482011863, 2062852792, 226398742, 770290735); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x2 a3 = int2x2(1469608940, 869874758, 458603090, 581282460); + int2x2 b3 = int2x2(36812057, 543224481, 1565350150, 1909926604); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_equal_wide_scalar() + { + int2x2 a0 = int2x2(1211464300, 1921862607, 508076684, 1249127920); + int b0 = (746972502); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x2 a1 = int2x2(1394594555, 1733655277, 1884008277, 1682018538); + int b1 = (746862310); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x2 a2 = int2x2(795585660, 927605411, 672785749, 1465584610); + int b2 = (936027116); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x2 a3 = int2x2(585324157, 969511077, 442746747, 1772925698); + int b3 = (404448210); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int2x2 b0 = int2x2(233855098, 924242519, 1402948791, 601381975); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (2120518068); + int2x2 b1 = int2x2(629187703, 1971977031, 47183124, 1061805787); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1009011238); + int2x2 b2 = int2x2(312511148, 1460673064, 737210539, 1737844479); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1892405453); + int2x2 b3 = int2x2(2133024000, 455818693, 2003197687, 1276241219); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_not_equal_wide_wide() + { + int2x2 a0 = int2x2(1660932106, 982847023, 97046264, 1739517447); + int2x2 b0 = int2x2(107139049, 75478496, 2055495054, 358586687); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x2 a1 = int2x2(1253499180, 1830584069, 1841470429, 1397841646); + int2x2 b1 = int2x2(942338347, 111564990, 113811950, 948912488); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x2 a2 = int2x2(1770890135, 1906548631, 169082967, 2099271786); + int2x2 b2 = int2x2(1080084121, 1400504872, 1032134499, 1061123400); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x2 a3 = int2x2(1909317609, 46519139, 1433204003, 931492669); + int2x2 b3 = int2x2(221862069, 858950046, 989094643, 2023070999); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_not_equal_wide_scalar() + { + int2x2 a0 = int2x2(747758183, 1033001286, 1439973882, 2138928797); + int b0 = (248693828); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x2 a1 = int2x2(1197845089, 950170763, 238704450, 2105962247); + int b1 = (1432672459); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x2 a2 = int2x2(727205263, 276313906, 2126300423, 791998981); + int b2 = (1640688041); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x2 a3 = int2x2(2035077187, 1412347883, 1622176923, 768370497); + int b3 = (1171827730); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int2x2 b0 = int2x2(2037494727, 1989050616, 48833929, 1897435904); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (514354517); + int2x2 b1 = int2x2(1783749164, 364694471, 754315072, 124108032); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (1512967900); + int2x2 b2 = int2x2(1178825850, 1854793298, 50286949, 2100802631); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1640811853); + int2x2 b3 = int2x2(82110247, 472172806, 266984506, 2003668365); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_wide_wide() + { + int2x2 a0 = int2x2(1182186063, 415538999, 1667335818, 1566618442); + int2x2 b0 = int2x2(524633529, 1032195686, 760723389, 1505751409); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int2x2 a1 = int2x2(1166180837, 639095188, 1080836365, 771119973); + int2x2 b1 = int2x2(431962172, 1287906509, 1560084663, 1450178202); + bool2x2 r1 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x2 a2 = int2x2(928263233, 789225474, 665243110, 1003542034); + int2x2 b2 = int2x2(2066166337, 1107069023, 1640077524, 2103263105); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x2 a3 = int2x2(1032480172, 1961336172, 923379558, 21210619); + int2x2 b3 = int2x2(684229139, 1234033624, 1278743281, 1953079347); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_wide_scalar() + { + int2x2 a0 = int2x2(608447185, 818840405, 869219329, 2080125385); + int b0 = (1491216667); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int2x2 a1 = int2x2(1214500548, 1667165786, 1615392341, 840091491); + int b1 = (1361741203); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x2 a2 = int2x2(469591900, 315321650, 930950514, 1100560246); + int b2 = (1247103789); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x2 a3 = int2x2(933855388, 1127696709, 1286331950, 380753337); + int b3 = (908563901); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_scalar_wide() + { + int a0 = (548436837); + int2x2 b0 = int2x2(282703327, 14370648, 1862117300, 1304793311); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (826073259); + int2x2 b1 = int2x2(988910157, 445132446, 1139670255, 111349251); + bool2x2 r1 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1102440676); + int2x2 b2 = int2x2(112183144, 1594415311, 1890019295, 2098715503); + bool2x2 r2 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (608933527); + int2x2 b3 = int2x2(183989010, 1596056507, 1027318999, 146281093); + bool2x2 r3 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_wide_wide() + { + int2x2 a0 = int2x2(592884447, 2133928932, 918957182, 1284069471); + int2x2 b0 = int2x2(138737040, 192863971, 1700841444, 1044631301); + bool2x2 r0 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2x2 a1 = int2x2(194584707, 739120780, 241654068, 1340158550); + int2x2 b1 = int2x2(1391589821, 730837695, 253553987, 2078872742); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int2x2 a2 = int2x2(2099542537, 1182623667, 1399607274, 789301637); + int2x2 b2 = int2x2(910845808, 976047676, 202633078, 1223618940); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2x2 a3 = int2x2(180400925, 594688333, 1877031463, 1360073500); + int2x2 b3 = int2x2(641600530, 1830470354, 1570701388, 1104256103); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_wide_scalar() + { + int2x2 a0 = int2x2(1097138316, 211763648, 1883002501, 56406996); + int b0 = (438688675); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int2x2 a1 = int2x2(43662641, 1437755186, 1219010035, 2125058448); + int b1 = (1923456111); + bool2x2 r1 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int2x2 a2 = int2x2(304028799, 48044515, 711945018, 1035679270); + int b2 = (893125636); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int2x2 a3 = int2x2(577943770, 1016617211, 2063134811, 1577403353); + int b3 = (572743717); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int2x2 b0 = int2x2(599356784, 185671342, 1932327391, 2025591013); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1257191721); + int2x2 b1 = int2x2(1312388500, 1443698859, 779217735, 691047512); + bool2x2 r1 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (741776730); + int2x2 b2 = int2x2(732565983, 668302204, 1556466996, 858599525); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (1896917159); + int2x2 b3 = int2x2(701542098, 1052151621, 1023307544, 1435392907); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_equal_wide_wide() + { + int2x2 a0 = int2x2(1577248162, 2043073061, 1688380407, 176431985); + int2x2 b0 = int2x2(903445031, 2108974565, 210822256, 1281704747); + bool2x2 r0 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x2 a1 = int2x2(223299035, 1502802140, 1691709825, 386789394); + int2x2 b1 = int2x2(453681718, 66138830, 1229799377, 1620922595); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x2 a2 = int2x2(117182003, 1665770435, 1958490731, 420032601); + int2x2 b2 = int2x2(1715833766, 1366430432, 13102000, 46919981); + bool2x2 r2 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x2 a3 = int2x2(1251092689, 2011681765, 749743684, 183784440); + int2x2 b3 = int2x2(486470891, 1709514236, 2145785285, 854254454); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_equal_wide_scalar() + { + int2x2 a0 = int2x2(1722165358, 1219858357, 860410743, 411099660); + int b0 = (1688048545); + bool2x2 r0 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x2 a1 = int2x2(348104022, 212084836, 58924407, 1459242706); + int b1 = (1963256951); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x2 a2 = int2x2(1745758438, 262559763, 690091301, 1806172431); + int b2 = (532949158); + bool2x2 r2 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x2 a3 = int2x2(2091514001, 1617221948, 2017733017, 804204255); + int b3 = (1857173043); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int2x2 b0 = int2x2(1181030049, 1787703989, 1729760948, 1816537388); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1359786460); + int2x2 b1 = int2x2(874999193, 1678863148, 1711365839, 762067160); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (11953554); + int2x2 b2 = int2x2(1131583906, 1175393186, 1293698493, 48893340); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (66196247); + int2x2 b3 = int2x2(1958607116, 1576473309, 861890786, 478252419); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_equal_wide_wide() + { + int2x2 a0 = int2x2(263000030, 744235661, 1893760267, 237248); + int2x2 b0 = int2x2(1395535146, 1178373944, 1237373760, 1364855321); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x2 a1 = int2x2(1062370984, 1676977687, 816766880, 1089431546); + int2x2 b1 = int2x2(600811864, 362060472, 290870624, 1839067862); + bool2x2 r1 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x2 a2 = int2x2(1394493730, 1176473380, 1193988637, 1703862455); + int2x2 b2 = int2x2(396958580, 1336888643, 1019684398, 1697684196); + bool2x2 r2 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x2 a3 = int2x2(1806186947, 1253571980, 589397635, 1951842887); + int2x2 b3 = int2x2(1227300220, 2044269675, 1898323839, 874509380); + bool2x2 r3 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_equal_wide_scalar() + { + int2x2 a0 = int2x2(2112791350, 1043657935, 101764761, 1529909067); + int b0 = (1470533736); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x2 a1 = int2x2(556026890, 1186600258, 815093894, 609211196); + int b1 = (281734132); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x2 a2 = int2x2(1604309397, 244604867, 1419295004, 471843809); + int b2 = (829548642); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x2 a3 = int2x2(1819986195, 1646290021, 196833647, 1596738181); + int b3 = (1460027917); + bool2x2 r3 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int2x2 b0 = int2x2(1503244746, 861711266, 817773856, 925984572); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (571221723); + int2x2 b1 = int2x2(683686810, 118252990, 1653952090, 1240253990); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1947039008); + int2x2 b2 = int2x2(1869136019, 152012637, 1214546726, 917376832); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (303549425); + int2x2 b3 = int2x2(2111728811, 945321577, 173706579, 625318949); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_add_wide_wide() + { + int2x2 a0 = int2x2(2049228671, 1658660009, 491719392, 937013355); + int2x2 b0 = int2x2(2088751567, 645762023, 306868786, 4360271); + int2x2 r0 = int2x2(-156987058, -1990545264, 798588178, 941373626); + TestUtils.AreEqual(a0 + b0, r0); + + int2x2 a1 = int2x2(81108663, 1063894558, 86954702, 843159721); + int2x2 b1 = int2x2(506047997, 2094559874, 1634712736, 1601474440); + int2x2 r1 = int2x2(587156660, -1136512864, 1721667438, -1850333135); + TestUtils.AreEqual(a1 + b1, r1); + + int2x2 a2 = int2x2(698977704, 192867135, 1683407172, 137301303); + int2x2 b2 = int2x2(1586485231, 908746788, 1812370320, 1247342357); + int2x2 r2 = int2x2(-2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a2 + b2, r2); + + int2x2 a3 = int2x2(2103582820, 526139155, 447937230, 2127411006); + int2x2 b3 = int2x2(2043773873, 223363428, 175115707, 985928617); + int2x2 r3 = int2x2(-147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_add_wide_scalar() + { + int2x2 a0 = int2x2(2038218457, 134923711, 875689667, 1338884463); + int b0 = (2124409227); + int2x2 r0 = int2x2(-132339612, -2035634358, -1294868402, -831673606); + TestUtils.AreEqual(a0 + b0, r0); + + int2x2 a1 = int2x2(997710928, 1067888129, 70433301, 2003021861); + int b1 = (340490871); + int2x2 r1 = int2x2(1338201799, 1408379000, 410924172, -1951454564); + TestUtils.AreEqual(a1 + b1, r1); + + int2x2 a2 = int2x2(1635971971, 85446202, 1068152966, 1239387100); + int b2 = (1160398286); + int2x2 r2 = int2x2(-1498597039, 1245844488, -2066416044, -1895181910); + TestUtils.AreEqual(a2 + b2, r2); + + int2x2 a3 = int2x2(1497676888, 1095438654, 756559204, 1818718931); + int b3 = (1727477485); + int2x2 r3 = int2x2(-1069812923, -1472051157, -1810930607, -748770880); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_add_scalar_wide() + { + int a0 = (391092078); + int2x2 b0 = int2x2(519908870, 851424292, 328314822, 135622204); + int2x2 r0 = int2x2(911000948, 1242516370, 719406900, 526714282); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (740923360); + int2x2 b1 = int2x2(655394201, 1451896269, 1781697072, 996031825); + int2x2 r1 = int2x2(1396317561, -2102147667, -1772346864, 1736955185); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1557774949); + int2x2 b2 = int2x2(779774940, 1111541302, 783046445, 1130163944); + int2x2 r2 = int2x2(-1957417407, -1625651045, -1954145902, -1607028403); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (288279584); + int2x2 b3 = int2x2(1397683861, 1636583489, 673263339, 1469300874); + int2x2 r3 = int2x2(1685963445, 1924863073, 961542923, 1757580458); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_sub_wide_wide() + { + int2x2 a0 = int2x2(1353441118, 797269833, 659988112, 56022121); + int2x2 b0 = int2x2(1332656812, 1827794007, 972557431, 2078233689); + int2x2 r0 = int2x2(20784306, -1030524174, -312569319, -2022211568); + TestUtils.AreEqual(a0 - b0, r0); + + int2x2 a1 = int2x2(365847472, 2062899435, 1380988474, 799885138); + int2x2 b1 = int2x2(1508184327, 1372307701, 810327977, 936799885); + int2x2 r1 = int2x2(-1142336855, 690591734, 570660497, -136914747); + TestUtils.AreEqual(a1 - b1, r1); + + int2x2 a2 = int2x2(1306058185, 579775276, 1239163824, 344591081); + int2x2 b2 = int2x2(71562303, 1418723328, 1971342989, 1226053395); + int2x2 r2 = int2x2(1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a2 - b2, r2); + + int2x2 a3 = int2x2(86359575, 1049709943, 721529513, 1767221271); + int2x2 b3 = int2x2(136565478, 1979903295, 600719425, 837912956); + int2x2 r3 = int2x2(-50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_sub_wide_scalar() + { + int2x2 a0 = int2x2(1176369558, 1934521195, 309452150, 1417634074); + int b0 = (462232403); + int2x2 r0 = int2x2(714137155, 1472288792, -152780253, 955401671); + TestUtils.AreEqual(a0 - b0, r0); + + int2x2 a1 = int2x2(108910717, 1502312334, 1451794815, 281174200); + int b1 = (1306356714); + int2x2 r1 = int2x2(-1197445997, 195955620, 145438101, -1025182514); + TestUtils.AreEqual(a1 - b1, r1); + + int2x2 a2 = int2x2(87530840, 2041593336, 557239990, 1119051448); + int b2 = (1913724431); + int2x2 r2 = int2x2(-1826193591, 127868905, -1356484441, -794672983); + TestUtils.AreEqual(a2 - b2, r2); + + int2x2 a3 = int2x2(1590376732, 816382635, 815920639, 1829033117); + int b3 = (819090189); + int2x2 r3 = int2x2(771286543, -2707554, -3169550, 1009942928); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int2x2 b0 = int2x2(2022393810, 1612688515, 496689713, 887037586); + int2x2 r0 = int2x2(-330859405, 78845890, 1194844692, 804496819); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (2097630964); + int2x2 b1 = int2x2(374934538, 939035482, 935242277, 1789300421); + int2x2 r1 = int2x2(1722696426, 1158595482, 1162388687, 308330543); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (264712893); + int2x2 b2 = int2x2(1231856067, 1818112748, 1428436109, 1258745460); + int2x2 r2 = int2x2(-967143174, -1553399855, -1163723216, -994032567); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1077380396); + int2x2 b3 = int2x2(1330722719, 518111829, 967128529, 344666254); + int2x2 r3 = int2x2(-253342323, 559268567, 110251867, 732714142); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mul_wide_wide() + { + int2x2 a0 = int2x2(245827027, 208934650, 1019478917, 568231809); + int2x2 b0 = int2x2(759663997, 350129201, 477450108, 1635735015); + int2x2 r0 = int2x2(-632811769, 1402281434, 332447596, -1932977561); + TestUtils.AreEqual(a0 * b0, r0); + + int2x2 a1 = int2x2(877289039, 1585782440, 2111178729, 1186019069); + int2x2 b1 = int2x2(388710278, 757722665, 1509388321, 1841703980); + int2x2 r1 = int2x2(-1670918566, 1455036648, 2128344329, -594088068); + TestUtils.AreEqual(a1 * b1, r1); + + int2x2 a2 = int2x2(571481445, 1570087048, 629447153, 619383734); + int2x2 b2 = int2x2(1826369331, 1524322467, 1605207974, 428419155); + int2x2 r2 = int2x2(-1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a2 * b2, r2); + + int2x2 a3 = int2x2(2055121568, 700402816, 263414349, 187830569); + int2x2 b3 = int2x2(1460605791, 1968043860, 771161742, 2037340417); + int2x2 r3 = int2x2(990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mul_wide_scalar() + { + int2x2 a0 = int2x2(1762033447, 465343930, 1570757881, 1326409563); + int b0 = (1476837906); + int2x2 r0 = int2x2(-1313177922, 1326807828, -2138555518, -276153754); + TestUtils.AreEqual(a0 * b0, r0); + + int2x2 a1 = int2x2(1824319147, 72749215, 154616909, 975743632); + int b1 = (1356578909); + int2x2 r1 = int2x2(-236385249, 130042307, 1244434425, -1981680048); + TestUtils.AreEqual(a1 * b1, r1); + + int2x2 a2 = int2x2(573770299, 971327747, 1818877398, 1324050764); + int b2 = (1958912969); + int2x2 r2 = int2x2(-699623085, 583613531, -1685426426, 377032876); + TestUtils.AreEqual(a2 * b2, r2); + + int2x2 a3 = int2x2(660611671, 391009467, 1186856590, 890343818); + int b3 = (1279757657); + int2x2 r3 = int2x2(-42542273, 1120105475, -22825634, 1972017914); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mul_scalar_wide() + { + int a0 = (99541948); + int2x2 b0 = int2x2(1764461774, 657072478, 1459784358, 1610646683); + int2x2 r0 = int2x2(-950398648, -102049016, 1260585960, 1158730452); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1632058826); + int2x2 b1 = int2x2(868441654, 1408757883, 335917146, 2105124483); + int2x2 r1 = int2x2(-57330532, -1559359474, 712546564, -805332386); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1178393968); + int2x2 b2 = int2x2(1963904348, 1409533767, 243286231, 1336308795); + int2x2 r2 = int2x2(1196573760, 592673296, 209320208, -352466736); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (517963367); + int2x2 b3 = int2x2(1733623488, 459880225, 994616533, 1420531535); + int2x2 r3 = int2x2(-774570176, -1271501753, 652617651, -1789672759); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_div_wide_wide() + { + int2x2 a0 = int2x2(1590198532, 507812502, 126627032, 1058247011); + int2x2 b0 = int2x2(1434703236, 911965201, 390415521, 128746927); + int2x2 r0 = int2x2(1, 0, 0, 8); + TestUtils.AreEqual(a0 / b0, r0); + + int2x2 a1 = int2x2(427387861, 290676154, 1829594484, 1127868739); + int2x2 b1 = int2x2(525835375, 816946613, 878264647, 146789678); + int2x2 r1 = int2x2(0, 0, 2, 7); + TestUtils.AreEqual(a1 / b1, r1); + + int2x2 a2 = int2x2(499016351, 1341209632, 134906097, 785470242); + int2x2 b2 = int2x2(2089524057, 254213018, 1916850021, 1737806518); + int2x2 r2 = int2x2(0, 5, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2x2 a3 = int2x2(788249865, 1099825433, 1552968283, 1822367139); + int2x2 b3 = int2x2(1906634983, 437754923, 825037958, 902508708); + int2x2 r3 = int2x2(0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_div_wide_scalar() + { + int2x2 a0 = int2x2(560951562, 1218680769, 375341724, 1613542090); + int b0 = (947861580); + int2x2 r0 = int2x2(0, 1, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int2x2 a1 = int2x2(1919409166, 1349573078, 524526253, 341995568); + int b1 = (1397425408); + int2x2 r1 = int2x2(1, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int2x2 a2 = int2x2(495895326, 1676971657, 2131487088, 2105094094); + int b2 = (1515313790); + int2x2 r2 = int2x2(0, 1, 1, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int2x2 a3 = int2x2(1017891310, 1646044372, 1447236569, 107215658); + int b3 = (542666029); + int2x2 r3 = int2x2(1, 3, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_div_scalar_wide() + { + int a0 = (1161272038); + int2x2 b0 = int2x2(187325733, 1594107378, 2016183849, 1589343709); + int2x2 r0 = int2x2(6, 0, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (388768753); + int2x2 b1 = int2x2(1417077283, 1773486938, 1154044032, 81831373); + int2x2 r1 = int2x2(0, 0, 0, 4); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1476877645); + int2x2 b2 = int2x2(653688843, 45756703, 631027637, 396671391); + int2x2 r2 = int2x2(2, 32, 2, 3); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (784365696); + int2x2 b3 = int2x2(1250594097, 1818363859, 1653451772, 270557729); + int2x2 r3 = int2x2(0, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mod_wide_wide() + { + int2x2 a0 = int2x2(146150818, 1846543305, 1071447756, 308965362); + int2x2 b0 = int2x2(983050390, 771341152, 942375212, 367361754); + int2x2 r0 = int2x2(146150818, 303861001, 129072544, 308965362); + TestUtils.AreEqual(a0 % b0, r0); + + int2x2 a1 = int2x2(659881575, 1002365460, 861198439, 1510617532); + int2x2 b1 = int2x2(749500619, 750718852, 2095151755, 88438806); + int2x2 r1 = int2x2(659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a1 % b1, r1); + + int2x2 a2 = int2x2(778525078, 1458458044, 101987897, 1249565173); + int2x2 b2 = int2x2(769227442, 647214624, 1026513788, 1544950956); + int2x2 r2 = int2x2(9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a2 % b2, r2); + + int2x2 a3 = int2x2(938026607, 1692541775, 1518877124, 1806965510); + int2x2 b3 = int2x2(160166322, 1099108075, 1158422232, 1798905209); + int2x2 r3 = int2x2(137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mod_wide_scalar() + { + int2x2 a0 = int2x2(164800505, 1062177828, 1898749675, 1701653318); + int b0 = (883951171); + int2x2 r0 = int2x2(164800505, 178226657, 130847333, 817702147); + TestUtils.AreEqual(a0 % b0, r0); + + int2x2 a1 = int2x2(820393245, 128329633, 1464010899, 896587769); + int b1 = (19002208); + int2x2 r1 = int2x2(3298301, 14316385, 840883, 3483993); + TestUtils.AreEqual(a1 % b1, r1); + + int2x2 a2 = int2x2(405208598, 959236935, 712321026, 172564850); + int b2 = (1982762194); + int2x2 r2 = int2x2(405208598, 959236935, 712321026, 172564850); + TestUtils.AreEqual(a2 % b2, r2); + + int2x2 a3 = int2x2(1540068445, 1607489717, 165478511, 647846716); + int b3 = (1085897743); + int2x2 r3 = int2x2(454170702, 521591974, 165478511, 647846716); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mod_scalar_wide() + { + int a0 = (242383789); + int2x2 b0 = int2x2(740000543, 1556450291, 1104736385, 437976569); + int2x2 r0 = int2x2(242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1911837205); + int2x2 b1 = int2x2(1507212038, 1906405167, 247693265, 293460573); + int2x2 r1 = int2x2(404625167, 5432038, 177984350, 151073767); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1495295166); + int2x2 b2 = int2x2(873323603, 530681233, 1298102643, 2057984657); + int2x2 r2 = int2x2(621971563, 433932700, 197192523, 1495295166); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1000742091); + int2x2 b3 = int2x2(1461372131, 1859742342, 797184687, 821888842); + int2x2 r3 = int2x2(1000742091, 1000742091, 203557404, 178853249); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_plus() + { + int2x2 a0 = int2x2(1643476803, 907898539, 379615839, 1140483021); + int2x2 r0 = int2x2(1643476803, 907898539, 379615839, 1140483021); + TestUtils.AreEqual(+a0, r0); + + int2x2 a1 = int2x2(1735287433, 1472881565, 339091479, 401565897); + int2x2 r1 = int2x2(1735287433, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a1, r1); + + int2x2 a2 = int2x2(1287765427, 174532915, 1864850812, 1566098441); + int2x2 r2 = int2x2(1287765427, 174532915, 1864850812, 1566098441); + TestUtils.AreEqual(+a2, r2); + + int2x2 a3 = int2x2(1145639744, 2049663954, 1723005749, 409076474); + int2x2 r3 = int2x2(1145639744, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int2x2_operator_neg() + { + int2x2 a0 = int2x2(1955022112, 662160019, 370300775, 2141283773); + int2x2 r0 = int2x2(-1955022112, -662160019, -370300775, -2141283773); + TestUtils.AreEqual(-a0, r0); + + int2x2 a1 = int2x2(1004505619, 33894270, 505708349, 1115028238); + int2x2 r1 = int2x2(-1004505619, -33894270, -505708349, -1115028238); + TestUtils.AreEqual(-a1, r1); + + int2x2 a2 = int2x2(1636274969, 1542206286, 213087293, 243937487); + int2x2 r2 = int2x2(-1636274969, -1542206286, -213087293, -243937487); + TestUtils.AreEqual(-a2, r2); + + int2x2 a3 = int2x2(341522275, 574159094, 1687250035, 2057919693); + int2x2 r3 = int2x2(-341522275, -574159094, -1687250035, -2057919693); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int2x2_operator_prefix_inc() + { + int2x2 a0 = int2x2(864455342, 2035793213, 1275443862, 971919915); + int2x2 r0 = int2x2(864455343, 2035793214, 1275443863, 971919916); + TestUtils.AreEqual(++a0, r0); + + int2x2 a1 = int2x2(411610189, 395072276, 115573442, 913293639); + int2x2 r1 = int2x2(411610190, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a1, r1); + + int2x2 a2 = int2x2(432884105, 1385544935, 1835605516, 831396561); + int2x2 r2 = int2x2(432884106, 1385544936, 1835605517, 831396562); + TestUtils.AreEqual(++a2, r2); + + int2x2 a3 = int2x2(388229350, 1786514683, 993189311, 752093909); + int2x2 r3 = int2x2(388229351, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int2x2_operator_postfix_inc() + { + int2x2 a0 = int2x2(1751003569, 2063707595, 1500486291, 969189211); + int2x2 r0 = int2x2(1751003569, 2063707595, 1500486291, 969189211); + TestUtils.AreEqual(a0++, r0); + + int2x2 a1 = int2x2(1007848192, 1643023524, 1190630527, 1396179607); + int2x2 r1 = int2x2(1007848192, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a1++, r1); + + int2x2 a2 = int2x2(708474528, 1524860667, 1408994706, 375284401); + int2x2 r2 = int2x2(708474528, 1524860667, 1408994706, 375284401); + TestUtils.AreEqual(a2++, r2); + + int2x2 a3 = int2x2(1580130369, 717006530, 506142468, 732199129); + int2x2 r3 = int2x2(1580130369, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int2x2_operator_prefix_dec() + { + int2x2 a0 = int2x2(200904609, 871077500, 968578728, 638967721); + int2x2 r0 = int2x2(200904608, 871077499, 968578727, 638967720); + TestUtils.AreEqual(--a0, r0); + + int2x2 a1 = int2x2(1995396216, 1782514098, 1589827826, 1434377580); + int2x2 r1 = int2x2(1995396215, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a1, r1); + + int2x2 a2 = int2x2(596759698, 1758478358, 1914114460, 71237375); + int2x2 r2 = int2x2(596759697, 1758478357, 1914114459, 71237374); + TestUtils.AreEqual(--a2, r2); + + int2x2 a3 = int2x2(389120307, 1310293956, 356565557, 18299409); + int2x2 r3 = int2x2(389120306, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int2x2_operator_postfix_dec() + { + int2x2 a0 = int2x2(283970262, 1109329936, 1073216143, 649439137); + int2x2 r0 = int2x2(283970262, 1109329936, 1073216143, 649439137); + TestUtils.AreEqual(a0--, r0); + + int2x2 a1 = int2x2(1932646215, 484207852, 524156737, 691209285); + int2x2 r1 = int2x2(1932646215, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a1--, r1); + + int2x2 a2 = int2x2(2017728859, 377162390, 526366486, 1504625034); + int2x2 r2 = int2x2(2017728859, 377162390, 526366486, 1504625034); + TestUtils.AreEqual(a2--, r2); + + int2x2 a3 = int2x2(590919177, 1867810045, 2095777993, 670715645); + int2x2 r3 = int2x2(590919177, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_and_wide_wide() + { + int2x2 a0 = int2x2(779935043, 1097962163, 1939593304, 800599247); + int2x2 b0 = int2x2(307705143, 1710882162, 866836769, 532490608); + int2x2 r0 = int2x2(39064835, 1097961522, 864731136, 263727168); + TestUtils.AreEqual(a0 & b0, r0); + + int2x2 a1 = int2x2(952140918, 782792558, 1608557706, 396446406); + int2x2 b1 = int2x2(679371720, 1794035877, 1439832202, 519529812); + int2x2 r1 = int2x2(675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a1 & b1, r1); + + int2x2 a2 = int2x2(2039894114, 1286974642, 442394124, 1759739564); + int2x2 b2 = int2x2(23633139, 1209152681, 646737179, 1255867027); + int2x2 r2 = int2x2(16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a2 & b2, r2); + + int2x2 a3 = int2x2(233435438, 665207770, 1942050241, 1022352952); + int2x2 b3 = int2x2(1900854122, 413173763, 1409138251, 2087190272); + int2x2 r3 = int2x2(21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_and_wide_scalar() + { + int2x2 a0 = int2x2(443615469, 490057985, 2042441263, 1524760558); + int b0 = (93423598); + int2x2 r0 = int2x2(1114348, 85033216, 26281518, 8488942); + TestUtils.AreEqual(a0 & b0, r0); + + int2x2 a1 = int2x2(1405175110, 1941875181, 1236735839, 1365509729); + int b1 = (510212004); + int2x2 r1 = int2x2(306251012, 304619940, 136386308, 274728480); + TestUtils.AreEqual(a1 & b1, r1); + + int2x2 a2 = int2x2(428270198, 650270920, 1249238550, 814629680); + int b2 = (607982857); + int2x2 r2 = int2x2(262144, 603983880, 3478528, 537657600); + TestUtils.AreEqual(a2 & b2, r2); + + int2x2 a3 = int2x2(1862276471, 861733033, 1408932942, 957693145); + int b3 = (143502472); + int2x2 r3 = int2x2(134218752, 852104, 8948744, 134556808); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int2x2 b0 = int2x2(420346723, 562416448, 1393127318, 1560699552); + int2x2 r0 = int2x2(547170, 18752, 1074284806, 1140867104); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (851218057); + int2x2 b1 = int2x2(703880958, 1159378889, 2031211279, 1089518981); + int2x2 r1 = int2x2(548671112, 1607305, 806388233, 11570305); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (270607307); + int2x2 b2 = int2x2(1349288930, 520199596, 1763483957, 1248975349); + int2x2 r2 = int2x2(270533570, 268501384, 8449, 2163137); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (236938635); + int2x2 b3 = int2x2(185023291, 1085233038, 1845693112, 946052961); + int2x2 r3 = int2x2(168239371, 1000842, 235077768, 134415617); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_or_wide_wide() + { + int2x2 a0 = int2x2(1731159103, 659068416, 382702471, 1821032196); + int2x2 b0 = int2x2(1583847161, 692672727, 1161585489, 1756207130); + int2x2 r0 = int2x2(2138044159, 793370327, 1476391895, 1823457054); + TestUtils.AreEqual(a0 | b0, r0); + + int2x2 a1 = int2x2(1565773438, 1004000514, 948501377, 600951835); + int2x2 b1 = int2x2(1321374429, 1287357212, 2075767170, 1273513430); + int2x2 r1 = int2x2(1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a1 | b1, r1); + + int2x2 a2 = int2x2(669346222, 396691477, 2108560248, 2117522137); + int2x2 b2 = int2x2(1610830169, 1316929125, 511625048, 573925879); + int2x2 r2 = int2x2(1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a2 | b2, r2); + + int2x2 a3 = int2x2(330307355, 818676817, 1774459567, 1117506257); + int2x2 b3 = int2x2(1502255628, 1841676448, 1682928938, 1115131952); + int2x2 r3 = int2x2(1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_or_wide_scalar() + { + int2x2 a0 = int2x2(961259683, 471103264, 1733389229, 1591585258); + int b0 = (1666102508); + int2x2 r0 = int2x2(2068823279, 2136930284, 1734344685, 2145369582); + TestUtils.AreEqual(a0 | b0, r0); + + int2x2 a1 = int2x2(386953869, 1048929715, 1814263250, 860336789); + int b1 = (1148351449); + int2x2 r1 = int2x2(1467118557, 2130147323, 1819506651, 2004349917); + TestUtils.AreEqual(a1 | b1, r1); + + int2x2 a2 = int2x2(1637162093, 774029856, 879300408, 1179087439); + int b2 = (1227888278); + int2x2 r2 = int2x2(1773477631, 1865602742, 2105089982, 1333229279); + TestUtils.AreEqual(a2 | b2, r2); + + int2x2 a3 = int2x2(797240690, 46921989, 1980838747, 284225881); + int b3 = (1977614655); + int2x2 r3 = int2x2(2145709439, 2011953471, 2012296063, 1978724735); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int2x2 b0 = int2x2(1212928242, 1614462616, 936937728, 764766995); + int2x2 r0 = int2x2(1213978111, 1752940445, 2145094925, 1842867999); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (306352095); + int2x2 b1 = int2x2(574719481, 1283571271, 2109131012, 979469710); + int2x2 r1 = int2x2(843288575, 1589886943, 2146881503, 979603423); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1348323481); + int2x2 b2 = int2x2(1407542578, 697517649, 1059093741, 627815046); + int2x2 r2 = int2x2(1409150395, 2044710617, 2138963197, 1971321503); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (418822515); + int2x2 b3 = int2x2(83214352, 424663473, 447949225, 527022375); + int2x2 r3 = int2x2(486013299, 436206067, 452442619, 536852855); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_xor_wide_wide() + { + int2x2 a0 = int2x2(1556324760, 207002929, 1843444873, 1632079131); + int2x2 b0 = int2x2(1054997548, 1523759632, 251164872, 110472397); + int2x2 r0 = int2x2(1646419380, 1451501345, 1662567489, 1741824470); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x2 a1 = int2x2(1460334334, 1607815585, 220623650, 38668553); + int2x2 b1 = int2x2(384031112, 1109163205, 535118981, 179106262); + int2x2 r1 = int2x2(1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x2 a2 = int2x2(47193340, 643663548, 1371932564, 94957188); + int2x2 b2 = int2x2(1523031711, 1713313372, 1294118730, 520360641); + int2x2 r2 = int2x2(1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x2 a3 = int2x2(700973621, 370621508, 2087573076, 351476570); + int2x2 b3 = int2x2(1040688781, 1020757245, 1143954843, 1281933464); + int2x2 r3 = int2x2(399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_xor_wide_scalar() + { + int2x2 a0 = int2x2(2124666952, 177397845, 574879617, 1937385541); + int b0 = (493665894); + int2x2 r0 = int2x2(1674536494, 402546227, 1060063719, 1846973987); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x2 a1 = int2x2(1136545648, 535061373, 289301586, 1305234431); + int b1 = (213863690); + int2x2 r1 = int2x2(1325466234, 324742775, 495003992, 1098057461); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x2 a2 = int2x2(353786540, 1267729267, 125659640, 1315625690); + int b2 = (1308626970); + int2x2 r2 = int2x2(1528187574, 93328233, 1232959970, 6998720); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x2 a3 = int2x2(1730088797, 375757978, 491079274, 191750702); + int b3 = (116862046); + int2x2 r3 = int2x2(1642603267, 278048964, 464677428, 228249200); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int2x2 b0 = int2x2(1077599928, 884741329, 212164516, 1585020328); + int2x2 r0 = int2x2(217506340, 2020616269, 1080648504, 313868596); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (152985454); + int2x2 b1 = int2x2(1775851275, 1416249064, 1309317737, 1773918217); + int2x2 r1 = int2x2(1623656549, 1567908230, 1192543495, 1621460839); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1509843030); + int2x2 b2 = int2x2(1206045972, 1154916424, 1947871003, 1774252400); + int2x2 r2 = int2x2(505195842, 489209886, 769935181, 809406758); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1946113778); + int2x2 b3 = int2x2(1079717492, 290620937, 1382343363, 939045099); + int2x2 r3 = int2x2(866416774, 1655558395, 563852337, 1141368345); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_left_shift() + { + int2x2 a0 = int2x2(197771193, 622182602, 1283988958, 1327917304); + int b0 = (1321149625); + int2x2 r0 = int2x2(1912602624, -1811939328, -1140850688, -268435456); + TestUtils.AreEqual(a0 << b0, r0); + + int2x2 a1 = int2x2(473415985, 870301196, 2058433484, 1200694230); + int b1 = (432425717); + int2x2 r1 = int2x2(639631360, -1048576000, 2038431744, 2059403264); + TestUtils.AreEqual(a1 << b1, r1); + + int2x2 a2 = int2x2(1531607705, 1008296534, 1447702302, 1079614371); + int b2 = (1360008038); + int2x2 r2 = int2x2(-761354688, 106468736, -1836333184, 375843008); + TestUtils.AreEqual(a2 << b2, r2); + + int2x2 a3 = int2x2(35667343, 2045594989, 2077023268, 592678686); + int b3 = (1664454606); + int2x2 r3 = int2x2(258195456, 1398489088, 923336704, -473464832); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_right_shift() + { + int2x2 a0 = int2x2(548167301, 1161338299, 1617625829, 1860731847); + int b0 = (1266801540); + int2x2 r0 = int2x2(34260456, 72583643, 101101614, 116295740); + TestUtils.AreEqual(a0 >> b0, r0); + + int2x2 a1 = int2x2(713958715, 770466193, 1265099998, 572763124); + int b1 = (196552656); + int2x2 r1 = int2x2(10894, 11756, 19303, 8739); + TestUtils.AreEqual(a1 >> b1, r1); + + int2x2 a2 = int2x2(506619530, 2031319045, 701927980, 917785020); + int b2 = (426807581); + int2x2 r2 = int2x2(0, 3, 1, 1); + TestUtils.AreEqual(a2 >> b2, r2); + + int2x2 a3 = int2x2(569504877, 1102123711, 334005460, 1624751550); + int b3 = (185593382); + int2x2 r3 = int2x2(8898513, 17220682, 5218835, 25386742); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_not() + { + int2x2 a0 = int2x2(1403358969, 831360921, 2088190243, 976721016); + int2x2 r0 = int2x2(-1403358970, -831360922, -2088190244, -976721017); + TestUtils.AreEqual(~a0, r0); + + int2x2 a1 = int2x2(878283189, 1935567517, 1420884856, 472965491); + int2x2 r1 = int2x2(-878283190, -1935567518, -1420884857, -472965492); + TestUtils.AreEqual(~a1, r1); + + int2x2 a2 = int2x2(771711426, 2061524024, 753208488, 2097179283); + int2x2 r2 = int2x2(-771711427, -2061524025, -753208489, -2097179284); + TestUtils.AreEqual(~a2, r2); + + int2x2 a3 = int2x2(1303022493, 1289372466, 1635981125, 1951018596); + int2x2 r3 = int2x2(-1303022494, -1289372467, -1635981126, -1951018597); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x2.gen.cs.meta new file mode 100644 index 0000000..7bdf741 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 041eb9518baf7a846bd945a05063b142 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x3.gen.cs new file mode 100644 index 0000000..1b77efe --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x3.gen.cs @@ -0,0 +1,1227 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt2x3 + { + [TestCompiler] + public static void int2x3_zero() + { + TestUtils.AreEqual(int2x3.zero.c0.x, 0); + TestUtils.AreEqual(int2x3.zero.c0.y, 0); + TestUtils.AreEqual(int2x3.zero.c1.x, 0); + TestUtils.AreEqual(int2x3.zero.c1.y, 0); + TestUtils.AreEqual(int2x3.zero.c2.x, 0); + TestUtils.AreEqual(int2x3.zero.c2.y, 0); + } + + [TestCompiler] + public static void int2x3_operator_equal_wide_wide() + { + int2x3 a0 = int2x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228); + int2x3 b0 = int2x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x3 a1 = int2x3(1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + int2x3 b1 = int2x3(921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x3 a2 = int2x3(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + int2x3 b2 = int2x3(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x3 a3 = int2x3(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int2x3 b3 = int2x3(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_equal_wide_scalar() + { + int2x3 a0 = int2x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310); + int b0 = (746972502); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x3 a1 = int2x3(1733655277, 1682018538, 795585660, 936027116, 927605411, 672785749); + int b1 = (1884008277); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x3 a2 = int2x3(1465584610, 404448210, 969511077, 442746747, 1772925698, 1884034177); + int b2 = (585324157); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x3 a3 = int2x3(451512860, 1370577708, 597010220, 1249636005, 211986678, 1305479811); + int b3 = (425476075); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int2x3 b0 = int2x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1971977031); + int2x3 b1 = int2x3(47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1737844479); + int2x3 b2 = int2x3(1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (559824292); + int2x3 b3 = int2x3(1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_not_equal_wide_wide() + { + int2x3 a0 = int2x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069); + int2x3 b0 = int2x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x3 a1 = int2x3(1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + int2x3 b1 = int2x3(113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x3 a2 = int2x3(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + int2x3 b2 = int2x3(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x3 a3 = int2x3(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int2x3 b3 = int2x3(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_not_equal_wide_scalar() + { + int2x3 a0 = int2x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459); + int b0 = (248693828); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x3 a1 = int2x3(950170763, 2105962247, 727205263, 1640688041, 276313906, 2126300423); + int b1 = (238704450); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x3 a2 = int2x3(791998981, 1171827730, 1412347883, 1622176923, 768370497, 1072798259); + int b2 = (2035077187); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x3 a3 = int2x3(1808712713, 1582645163, 1876273820, 90244766, 30493685, 904014575); + int b3 = (1497830076); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int2x3 b0 = int2x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (364694471); + int2x3 b1 = int2x3(754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (2100802631); + int2x3 b2 = int2x3(1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1041416160); + int2x3 b3 = int2x3(356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_wide_wide() + { + int2x3 a0 = int2x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188); + int2x3 b0 = int2x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509); + bool2x3 r0 = bool2x3(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2x3 a1 = int2x3(1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + int2x3 b1 = int2x3(1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x3 a2 = int2x3(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + int2x3 b2 = int2x3(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool2x3 r2 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x3 a3 = int2x3(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int2x3 b3 = int2x3(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool2x3 r3 = bool2x3(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_wide_scalar() + { + int2x3 a0 = int2x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203); + int b0 = (1491216667); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2x3 a1 = int2x3(1667165786, 840091491, 469591900, 1247103789, 315321650, 930950514); + int b1 = (1615392341); + bool2x3 r1 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x3 a2 = int2x3(1100560246, 908563901, 1127696709, 1286331950, 380753337, 971148054); + int b2 = (933855388); + bool2x3 r2 = bool2x3(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int2x3 a3 = int2x3(1827886929, 1579735991, 689044913, 1960894027, 371987110, 867559111); + int b3 = (1056649851); + bool2x3 r3 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_scalar_wide() + { + int a0 = (548436837); + int2x3 b0 = int2x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (445132446); + int2x3 b1 = int2x3(1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (2098715503); + int2x3 b2 = int2x3(608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (874278078); + int2x3 b3 = int2x3(1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911); + bool2x3 r3 = bool2x3(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_wide_wide() + { + int2x3 a0 = int2x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780); + int2x3 b0 = int2x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695); + bool2x3 r0 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2x3 a1 = int2x3(241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + int2x3 b1 = int2x3(253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int2x3 a2 = int2x3(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + int2x3 b2 = int2x3(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool2x3 r2 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2x3 a3 = int2x3(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int2x3 b3 = int2x3(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_wide_scalar() + { + int2x3 a0 = int2x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111); + int b0 = (438688675); + bool2x3 r0 = bool2x3(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2x3 a1 = int2x3(1437755186, 2125058448, 304028799, 893125636, 48044515, 711945018); + int b1 = (1219010035); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int2x3 a2 = int2x3(1035679270, 572743717, 1016617211, 2063134811, 1577403353, 64009107); + int b2 = (577943770); + bool2x3 r2 = bool2x3(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2x3 a3 = int2x3(1462961460, 3715845, 689362811, 263973424, 1045140419, 1058332184); + int b3 = (1143565920); + bool2x3 r3 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int2x3 b0 = int2x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1443698859); + int2x3 b1 = int2x3(779217735, 691047512, 741776730, 732565983, 668302204, 1556466996); + bool2x3 r1 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (858599525); + int2x3 b2 = int2x3(1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345); + bool2x3 r2 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (299897686); + int2x3 b3 = int2x3(632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_equal_wide_wide() + { + int2x3 a0 = int2x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140); + int2x3 b0 = int2x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830); + bool2x3 r0 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x3 a1 = int2x3(1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + int2x3 b1 = int2x3(1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool2x3 r1 = bool2x3(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x3 a2 = int2x3(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + int2x3 b2 = int2x3(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool2x3 r2 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x3 a3 = int2x3(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int2x3 b3 = int2x3(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_equal_wide_scalar() + { + int2x3 a0 = int2x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951); + int b0 = (1688048545); + bool2x3 r0 = bool2x3(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x3 a1 = int2x3(212084836, 1459242706, 1745758438, 532949158, 262559763, 690091301); + int b1 = (58924407); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x3 a2 = int2x3(1806172431, 1857173043, 1617221948, 2017733017, 804204255, 981729559); + int b2 = (2091514001); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x3 a3 = int2x3(2032949254, 2079225209, 26179915, 238796519, 1917813750, 1258115260); + int b3 = (910922522); + bool2x3 r3 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int2x3 b0 = int2x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1678863148); + int2x3 b1 = int2x3(1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493); + bool2x3 r1 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (48893340); + int2x3 b2 = int2x3(66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (117849810); + int2x3 b3 = int2x3(1348693584, 105489302, 259034238, 530713566, 601413850, 830430286); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_equal_wide_wide() + { + int2x3 a0 = int2x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687); + int2x3 b0 = int2x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472); + bool2x3 r0 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x3 a1 = int2x3(816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + int2x3 b1 = int2x3(290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x3 a2 = int2x3(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + int2x3 b2 = int2x3(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool2x3 r2 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x3 a3 = int2x3(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int2x3 b3 = int2x3(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool2x3 r3 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_equal_wide_scalar() + { + int2x3 a0 = int2x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132); + int b0 = (1470533736); + bool2x3 r0 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x3 a1 = int2x3(1186600258, 609211196, 1604309397, 829548642, 244604867, 1419295004); + int b1 = (815093894); + bool2x3 r1 = bool2x3(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x3 a2 = int2x3(471843809, 1460027917, 1646290021, 196833647, 1596738181, 1905036391); + int b2 = (1819986195); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x3 a3 = int2x3(1771391775, 370941146, 440219668, 1607345862, 1449142607, 1223010129); + int b3 = (1584946560); + bool2x3 r3 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int2x3 b0 = int2x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (118252990); + int2x3 b1 = int2x3(1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (917376832); + int2x3 b2 = int2x3(303549425, 2111728811, 945321577, 173706579, 625318949, 519443238); + bool2x3 r2 = bool2x3(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (1583588379); + int2x3 b3 = int2x3(1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_add_wide_wide() + { + int2x3 a0 = int2x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558); + int2x3 b0 = int2x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874); + int2x3 r0 = int2x3(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864); + TestUtils.AreEqual(a0 + b0, r0); + + int2x3 a1 = int2x3(86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + int2x3 b1 = int2x3(1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + int2x3 r1 = int2x3(1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a1 + b1, r1); + + int2x3 a2 = int2x3(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + int2x3 b2 = int2x3(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + int2x3 r2 = int2x3(-147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136); + TestUtils.AreEqual(a2 + b2, r2); + + int2x3 a3 = int2x3(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int2x3 b3 = int2x3(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int2x3 r3 = int2x3(1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_add_wide_scalar() + { + int2x3 a0 = int2x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871); + int b0 = (2124409227); + int2x3 r0 = int2x3(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198); + TestUtils.AreEqual(a0 + b0, r0); + + int2x3 a1 = int2x3(1067888129, 2003021861, 1635971971, 1160398286, 85446202, 1068152966); + int b1 = (70433301); + int2x3 r1 = int2x3(1138321430, 2073455162, 1706405272, 1230831587, 155879503, 1138586267); + TestUtils.AreEqual(a1 + b1, r1); + + int2x3 a2 = int2x3(1239387100, 1727477485, 1095438654, 756559204, 1818718931, 658923552); + int b2 = (1497676888); + int2x3 r2 = int2x3(-1557903308, -1069812923, -1701851754, -2040731204, -978571477, -2138366856); + TestUtils.AreEqual(a2 + b2, r2); + + int2x3 a3 = int2x3(1610518921, 692843300, 1068593469, 1704776233, 577782260, 736972565); + int b3 = (1585755398); + int2x3 r3 = int2x3(-1098692977, -2016368598, -1640618429, -1004435665, -2131429638, -1972239333); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_add_scalar_wide() + { + int a0 = (391092078); + int2x3 b0 = int2x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201); + int2x3 r0 = int2x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (1451896269); + int2x3 b1 = int2x3(1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445); + int2x3 r1 = int2x3(-1061373955, -1847039202, -1285296078, -2063296087, -1731529725, -2060024582); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1130163944); + int2x3 b2 = int2x3(288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965); + int2x3 r2 = int2x3(1418443528, -1767119491, -1528219863, 1803427283, -1695502478, 1145019909); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1116636999); + int2x3 b3 = int2x3(1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835); + int2x3 r3 = int2x3(-1689466997, -1577339411, 1307288300, -1870870529, 2036722838, -1096100462); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_sub_wide_wide() + { + int2x3 a0 = int2x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435); + int2x3 b0 = int2x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701); + int2x3 r0 = int2x3(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734); + TestUtils.AreEqual(a0 - b0, r0); + + int2x3 a1 = int2x3(1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + int2x3 b1 = int2x3(810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + int2x3 r1 = int2x3(570660497, -136914747, 1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a1 - b1, r1); + + int2x3 a2 = int2x3(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + int2x3 b2 = int2x3(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + int2x3 r2 = int2x3(-50205903, -930193352, 120810088, 929308315, -624402009, -165899077); + TestUtils.AreEqual(a2 - b2, r2); + + int2x3 a3 = int2x3(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int2x3 b3 = int2x3(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int2x3 r3 = int2x3(-728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_sub_wide_scalar() + { + int2x3 a0 = int2x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714); + int b0 = (462232403); + int2x3 r0 = int2x3(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311); + TestUtils.AreEqual(a0 - b0, r0); + + int2x3 a1 = int2x3(1502312334, 281174200, 87530840, 1913724431, 2041593336, 557239990); + int b1 = (1451794815); + int2x3 r1 = int2x3(50517519, -1170620615, -1364263975, 461929616, 589798521, -894554825); + TestUtils.AreEqual(a1 - b1, r1); + + int2x3 a2 = int2x3(1119051448, 819090189, 816382635, 815920639, 1829033117, 1792801932); + int b2 = (1590376732); + int2x3 r2 = int2x3(-471325284, -771286543, -773994097, -774456093, 238656385, 202425200); + TestUtils.AreEqual(a2 - b2, r2); + + int2x3 a3 = int2x3(1113440549, 1277257189, 2092779398, 642236742, 1605250794, 819644478); + int b3 = (1418937976); + int2x3 r3 = int2x3(-305497427, -141680787, 673841422, -776701234, 186312818, -599293498); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int2x3 b0 = int2x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538); + int2x3 r0 = int2x3(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (939035482); + int2x3 b1 = int2x3(935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109); + int2x3 r1 = int2x3(3793205, -850264939, 674322589, -292820585, -879077266, -489400627); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1258745460); + int2x3 b2 = int2x3(1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918); + int2x3 r2 = int2x3(181365064, -71977259, 740633631, 291616931, 914079206, 176477542); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (907866696); + int2x3 b3 = int2x3(1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777); + int2x3 r3 = int2x3(-909018427, 447526128, -54287802, 350753235, -793350013, -1072232081); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mul_wide_wide() + { + int2x3 a0 = int2x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440); + int2x3 b0 = int2x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665); + int2x3 r0 = int2x3(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648); + TestUtils.AreEqual(a0 * b0, r0); + + int2x3 a1 = int2x3(2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + int2x3 b1 = int2x3(1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + int2x3 r1 = int2x3(2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a1 * b1, r1); + + int2x3 a2 = int2x3(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + int2x3 b2 = int2x3(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + int2x3 r2 = int2x3(990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a2 * b2, r2); + + int2x3 a3 = int2x3(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int2x3 b3 = int2x3(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int2x3 r3 = int2x3(1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mul_wide_scalar() + { + int2x3 a0 = int2x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909); + int b0 = (1476837906); + int2x3 r0 = int2x3(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182); + TestUtils.AreEqual(a0 * b0, r0); + + int2x3 a1 = int2x3(72749215, 975743632, 573770299, 1958912969, 971327747, 1818877398); + int b1 = (154616909); + int2x3 r1 = int2x3(1400257491, 7966032, 499040191, 322676597, 469811687, -373386914); + TestUtils.AreEqual(a1 * b1, r1); + + int2x3 a2 = int2x3(1324050764, 1279757657, 391009467, 1186856590, 890343818, 800117742); + int b2 = (660611671); + int2x3 r2 = int2x3(645718228, -42542273, -1778409075, 1570790978, -133379610, 1820172770); + TestUtils.AreEqual(a2 * b2, r2); + + int2x3 a3 = int2x3(606927173, 1688964615, 1439447294, 387721300, 1192501703, 1613845584); + int b3 = (1338014500); + int2x3 r3 = int2x3(-254331724, 1134384636, 1352273336, -229242928, 1766808828, 645024576); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mul_scalar_wide() + { + int a0 = (99541948); + int2x3 b0 = int2x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654); + int2x3 r0 = int2x3(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1408757883); + int2x3 b1 = int2x3(335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231); + int2x3 r1 = int2x3(1223039806, 1995624689, -974691120, 375843636, 858017565, 2027534157); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1336308795); + int2x3 b2 = int2x3(517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700); + int2x3 r2 = int2x3(580046269, -997870016, -325015397, 831291671, -1034573003, -1254339924); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (677771573); + int2x3 b3 = int2x3(2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236); + int2x3 r3 = int2x3(-125843839, 1435043573, 698030233, 9173379, -824638806, 113055164); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_div_wide_wide() + { + int2x3 a0 = int2x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154); + int2x3 b0 = int2x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613); + int2x3 r0 = int2x3(1, 0, 0, 8, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int2x3 a1 = int2x3(1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + int2x3 b1 = int2x3(878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + int2x3 r1 = int2x3(2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int2x3 a2 = int2x3(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + int2x3 b2 = int2x3(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + int2x3 r2 = int2x3(0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a2 / b2, r2); + + int2x3 a3 = int2x3(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int2x3 b3 = int2x3(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int2x3 r3 = int2x3(0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_div_wide_scalar() + { + int2x3 a0 = int2x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408); + int b0 = (947861580); + int2x3 r0 = int2x3(0, 1, 0, 1, 2, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int2x3 a1 = int2x3(1349573078, 341995568, 495895326, 1515313790, 1676971657, 2131487088); + int b1 = (524526253); + int2x3 r1 = int2x3(2, 0, 0, 2, 3, 4); + TestUtils.AreEqual(a1 / b1, r1); + + int2x3 a2 = int2x3(2105094094, 542666029, 1646044372, 1447236569, 107215658, 19616726); + int b2 = (1017891310); + int2x3 r2 = int2x3(2, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2x3 a3 = int2x3(896899915, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864); + int b3 = (707389627); + int2x3 r3 = int2x3(1, 1, 2, 2, 2, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_div_scalar_wide() + { + int a0 = (1161272038); + int2x3 b0 = int2x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283); + int2x3 r0 = int2x3(6, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1773486938); + int2x3 b1 = int2x3(1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637); + int2x3 r1 = int2x3(1, 21, 1, 2, 38, 2); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (396671391); + int2x3 b2 = int2x3(784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453); + int2x3 r2 = int2x3(0, 0, 0, 0, 1, 8); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (1796936382); + int2x3 b3 = int2x3(1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083); + int2x3 r3 = int2x3(1, 1, 0, 2, 1, 5); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mod_wide_wide() + { + int2x3 a0 = int2x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460); + int2x3 b0 = int2x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852); + int2x3 r0 = int2x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608); + TestUtils.AreEqual(a0 % b0, r0); + + int2x3 a1 = int2x3(861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + int2x3 b1 = int2x3(2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + int2x3 r1 = int2x3(861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a1 % b1, r1); + + int2x3 a2 = int2x3(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + int2x3 b2 = int2x3(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + int2x3 r2 = int2x3(137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a2 % b2, r2); + + int2x3 a3 = int2x3(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int2x3 b3 = int2x3(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int2x3 r3 = int2x3(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mod_wide_scalar() + { + int2x3 a0 = int2x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208); + int b0 = (883951171); + int2x3 r0 = int2x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208); + TestUtils.AreEqual(a0 % b0, r0); + + int2x3 a1 = int2x3(128329633, 896587769, 405208598, 1982762194, 959236935, 712321026); + int b1 = (1464010899); + int2x3 r1 = int2x3(128329633, 896587769, 405208598, 518751295, 959236935, 712321026); + TestUtils.AreEqual(a1 % b1, r1); + + int2x3 a2 = int2x3(172564850, 1085897743, 1607489717, 165478511, 647846716, 915707999); + int b2 = (1540068445); + int2x3 r2 = int2x3(172564850, 1085897743, 67421272, 165478511, 647846716, 915707999); + TestUtils.AreEqual(a2 % b2, r2); + + int2x3 a3 = int2x3(1602830401, 1084934806, 488509689, 2087820912, 377501313, 1778384846); + int b3 = (928191283); + int2x3 r3 = int2x3(674639118, 156743523, 488509689, 231438346, 377501313, 850193563); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mod_scalar_wide() + { + int a0 = (242383789); + int2x3 b0 = int2x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038); + int2x3 r0 = int2x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1906405167); + int2x3 b1 = int2x3(247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643); + int2x3 r1 = int2x3(172552312, 145641729, 411110001, 159757961, 314361468, 608302524); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (2057984657); + int2x3 b2 = int2x3(1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997); + int2x3 r2 = int2x3(56500475, 596612526, 198242315, 463615283, 414206973, 974791660); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (840114986); + int2x3 b3 = int2x3(1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061); + int2x3 r3 = int2x3(840114986, 224955022, 840114986, 217454, 840114986, 17224681); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_plus() + { + int2x3 a0 = int2x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + int2x3 r0 = int2x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + TestUtils.AreEqual(+a0, r0); + + int2x3 a1 = int2x3(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + int2x3 r1 = int2x3(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + TestUtils.AreEqual(+a1, r1); + + int2x3 a2 = int2x3(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + int2x3 r2 = int2x3(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + TestUtils.AreEqual(+a2, r2); + + int2x3 a3 = int2x3(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + int2x3 r3 = int2x3(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int2x3_operator_neg() + { + int2x3 a0 = int2x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593); + int2x3 r0 = int2x3(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593); + TestUtils.AreEqual(-a0, r0); + + int2x3 a1 = int2x3(33894270, 1115028238, 1636274969, 694995093, 1542206286, 213087293); + int2x3 r1 = int2x3(-33894270, -1115028238, -1636274969, -694995093, -1542206286, -213087293); + TestUtils.AreEqual(-a1, r1); + + int2x3 a2 = int2x3(243937487, 841085242, 574159094, 1687250035, 2057919693, 1175014732); + int2x3 r2 = int2x3(-243937487, -841085242, -574159094, -1687250035, -2057919693, -1175014732); + TestUtils.AreEqual(-a2, r2); + + int2x3 a3 = int2x3(1259809073, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454); + int2x3 r3 = int2x3(-1259809073, -1190569920, -2047955772, -2120729864, -1440774928, -1485596454); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int2x3_operator_prefix_inc() + { + int2x3 a0 = int2x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725); + int2x3 r0 = int2x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726); + TestUtils.AreEqual(++a0, r0); + + int2x3 a1 = int2x3(395072276, 913293639, 432884105, 1208161871, 1385544935, 1835605516); + int2x3 r1 = int2x3(395072277, 913293640, 432884106, 1208161872, 1385544936, 1835605517); + TestUtils.AreEqual(++a1, r1); + + int2x3 a2 = int2x3(831396561, 696475402, 1786514683, 993189311, 752093909, 1622410417); + int2x3 r2 = int2x3(831396562, 696475403, 1786514684, 993189312, 752093910, 1622410418); + TestUtils.AreEqual(++a2, r2); + + int2x3 a3 = int2x3(1398865015, 1705625817, 609525897, 172599489, 504806865, 519296647); + int2x3 r3 = int2x3(1398865016, 1705625818, 609525898, 172599490, 504806866, 519296648); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int2x3_operator_postfix_inc() + { + int2x3 a0 = int2x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + int2x3 r0 = int2x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + TestUtils.AreEqual(a0++, r0); + + int2x3 a1 = int2x3(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + int2x3 r1 = int2x3(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + TestUtils.AreEqual(a1++, r1); + + int2x3 a2 = int2x3(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + int2x3 r2 = int2x3(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + TestUtils.AreEqual(a2++, r2); + + int2x3 a3 = int2x3(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + int2x3 r3 = int2x3(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int2x3_operator_prefix_dec() + { + int2x3 a0 = int2x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037); + int2x3 r0 = int2x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036); + TestUtils.AreEqual(--a0, r0); + + int2x3 a1 = int2x3(1782514098, 1434377580, 596759698, 1699290403, 1758478358, 1914114460); + int2x3 r1 = int2x3(1782514097, 1434377579, 596759697, 1699290402, 1758478357, 1914114459); + TestUtils.AreEqual(--a1, r1); + + int2x3 a2 = int2x3(71237375, 1022184392, 1310293956, 356565557, 18299409, 906734601); + int2x3 r2 = int2x3(71237374, 1022184391, 1310293955, 356565556, 18299408, 906734600); + TestUtils.AreEqual(--a2, r2); + + int2x3 a3 = int2x3(799006218, 1040798388, 1469596990, 1719228297, 220897829, 1454322707); + int2x3 r3 = int2x3(799006217, 1040798387, 1469596989, 1719228296, 220897828, 1454322706); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int2x3_operator_postfix_dec() + { + int2x3 a0 = int2x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + int2x3 r0 = int2x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + TestUtils.AreEqual(a0--, r0); + + int2x3 a1 = int2x3(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + int2x3 r1 = int2x3(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + TestUtils.AreEqual(a1--, r1); + + int2x3 a2 = int2x3(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + int2x3 r2 = int2x3(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + TestUtils.AreEqual(a2--, r2); + + int2x3 a3 = int2x3(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + int2x3 r3 = int2x3(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_and_wide_wide() + { + int2x3 a0 = int2x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558); + int2x3 b0 = int2x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877); + int2x3 r0 = int2x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636); + TestUtils.AreEqual(a0 & b0, r0); + + int2x3 a1 = int2x3(1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + int2x3 b1 = int2x3(1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + int2x3 r1 = int2x3(1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a1 & b1, r1); + + int2x3 a2 = int2x3(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + int2x3 b2 = int2x3(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + int2x3 r2 = int2x3(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a2 & b2, r2); + + int2x3 a3 = int2x3(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int2x3 b3 = int2x3(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int2x3 r3 = int2x3(168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_and_wide_scalar() + { + int2x3 a0 = int2x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004); + int b0 = (93423598); + int2x3 r0 = int2x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356); + TestUtils.AreEqual(a0 & b0, r0); + + int2x3 a1 = int2x3(1941875181, 1365509729, 428270198, 607982857, 650270920, 1249238550); + int b1 = (1236735839); + int2x3 r1 = int2x3(1102446925, 1092879937, 159777366, 3478793, 8523848, 1211438614); + TestUtils.AreEqual(a1 & b1, r1); + + int2x3 a2 = int2x3(814629680, 143502472, 861733033, 1408932942, 957693145, 1567715668); + int b2 = (1862276471); + int2x3 r2 = int2x3(536871216, 134218752, 587202593, 1124078662, 687871057, 1291850068); + TestUtils.AreEqual(a2 & b2, r2); + + int2x3 a3 = int2x3(1102952410, 1599352836, 208656708, 1272226025, 462670926, 1817145060); + int b3 = (322053683); + int2x3 r3 = int2x3(19932690, 319823872, 2228224, 51388449, 319947778, 140832); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int2x3 b0 = int2x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958); + int2x3 r0 = int2x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1159378889); + int2x3 b1 = int2x3(2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957); + int2x3 r1 = int2x3(1091605257, 1074836865, 9161, 1074299840, 83924360, 1092133121); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1248975349); + int2x3 b2 = int2x3(236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522); + int2x3 r2 = int2x3(168903041, 167844145, 1075925380, 1241581744, 140613985, 1074872496); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (2042776519); + int2x3 b3 = int2x3(56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404); + int2x3 r3 = int2x3(21118982, 1770146496, 1769996867, 1371555910, 1229064577, 1212170948); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_or_wide_wide() + { + int2x3 a0 = int2x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514); + int2x3 b0 = int2x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212); + int2x3 r0 = int2x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a0 | b0, r0); + + int2x3 a1 = int2x3(948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + int2x3 b1 = int2x3(2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + int2x3 r1 = int2x3(2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a1 | b1, r1); + + int2x3 a2 = int2x3(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + int2x3 b2 = int2x3(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + int2x3 r2 = int2x3(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a2 | b2, r2); + + int2x3 a3 = int2x3(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int2x3 b3 = int2x3(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int2x3 r3 = int2x3(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_or_wide_scalar() + { + int2x3 a0 = int2x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449); + int b0 = (1666102508); + int2x3 r0 = int2x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269); + TestUtils.AreEqual(a0 | b0, r0); + + int2x3 a1 = int2x3(1048929715, 860336789, 1637162093, 1227888278, 774029856, 879300408); + int b1 = (1814263250); + int2x3 r1 = int2x3(2124903923, 2137520087, 1840741887, 1832089558, 1847850994, 2087419898); + TestUtils.AreEqual(a1 | b1, r1); + + int2x3 a2 = int2x3(1179087439, 1977614655, 46921989, 1980838747, 284225881, 64304104); + int b2 = (797240690); + int2x3 r2 = int2x3(1875378047, 2145709439, 802159991, 2140536699, 1073020283, 802553850); + TestUtils.AreEqual(a2 | b2, r2); + + int2x3 a3 = int2x3(313591807, 1890090886, 521303722, 2021379070, 2055963359, 1511253082); + int b3 = (1393862490); + int2x3 r3 = int2x3(1404413951, 1941766110, 1595340794, 2071982078, 2074060767, 1528293210); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int2x3 b0 = int2x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481); + int2x3 r0 = int2x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1283571271); + int2x3 b1 = int2x3(2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741); + int2x3 r1 = int2x3(2109210439, 2128723919, 1558052575, 1608908663, 1838415447, 2141322991); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (627815046); + int2x3 b2 = int2x3(418822515, 83214352, 424663473, 447949225, 527022375, 1947148461); + int2x3 r2 = int2x3(1040169975, 637530774, 1030749111, 1073462191, 1064024999, 1970254511); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (305251437); + int2x3 b3 = int2x3(1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808); + int2x3 r3 = int2x3(1526199917, 2054417661, 1593566973, 1589235437, 1391839215, 335281389); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_xor_wide_wide() + { + int2x3 a0 = int2x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585); + int2x3 b0 = int2x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205); + int2x3 r0 = int2x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x3 a1 = int2x3(220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + int2x3 b1 = int2x3(535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + int2x3 r1 = int2x3(314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x3 a2 = int2x3(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + int2x3 b2 = int2x3(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + int2x3 r2 = int2x3(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x3 a3 = int2x3(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int2x3 b3 = int2x3(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int2x3 r3 = int2x3(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_xor_wide_scalar() + { + int2x3 a0 = int2x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690); + int b0 = (493665894); + int2x3 r0 = int2x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x3 a1 = int2x3(535061373, 1305234431, 353786540, 1308626970, 1267729267, 125659640); + int b1 = (289301586); + int2x3 r1 = int2x3(249169711, 1559375789, 69746430, 1597928520, 1521379105, 373493162); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x3 a2 = int2x3(1315625690, 116862046, 375757978, 491079274, 191750702, 187129429); + int b2 = (1730088797); + int2x3 r2 = int2x3(695588231, 1642603267, 1903858631, 2052737335, 1819471219, 1815630088); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x3 a3 = int2x3(967051293, 653124416, 788984, 1479174924, 1680011736, 447453839); + int b3 = (549951551); + int2x3 r3 = int2x3(425955362, 103447423, 550212039, 2028860211, 1155885543, 980157104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int2x3 b0 = int2x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275); + int2x3 r0 = int2x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1416249064); + int2x3 b1 = int2x3(1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003); + int2x3 r1 = int2x3(442541185, 1037166305, 227827390, 327742460, 280796832, 544217587); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1774252400); + int2x3 b2 = int2x3(1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053); + int2x3 r2 = int2x3(440379266, 698081028, 2022864761, 1000608691, 1580745115, 667852101); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (221134131); + int2x3 b3 = int2x3(885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520); + int2x3 r3 = int2x3(971170309, 693458543, 113181510, 1584258954, 790500762, 1630705027); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_left_shift() + { + int2x3 a0 = int2x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717); + int b0 = (1321149625); + int2x3 r0 = int2x3(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752); + TestUtils.AreEqual(a0 << b0, r0); + + int2x3 a1 = int2x3(870301196, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302); + int b1 = (2058433484); + int2x3 r1 = int2x3(-69156864, 306012160, -1482059776, 20340736, -1775935488, -1561206784); + TestUtils.AreEqual(a1 << b1, r1); + + int2x3 a2 = int2x3(1079614371, 1664454606, 2045594989, 2077023268, 592678686, 297755411); + int b2 = (35667343); + int2x3 r2 = int2x3(-841908224, -941162496, -1497989120, 1846673408, -946929664, -1316388864); + TestUtils.AreEqual(a2 << b2, r2); + + int2x3 a3 = int2x3(1722762487, 37265945, 997793693, 1521705181, 263886278, 221147365); + int b3 = (1161625759); + int2x3 r3 = int2x3(-2147483648, -2147483648, -2147483648, -2147483648, 0, -2147483648); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_right_shift() + { + int2x3 a0 = int2x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656); + int b0 = (1266801540); + int2x3 r0 = int2x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541); + TestUtils.AreEqual(a0 >> b0, r0); + + int2x3 a1 = int2x3(770466193, 572763124, 506619530, 426807581, 2031319045, 701927980); + int b1 = (1265099998); + int2x3 r1 = int2x3(0, 0, 0, 0, 1, 0); + TestUtils.AreEqual(a1 >> b1, r1); + + int2x3 a2 = int2x3(917785020, 185593382, 1102123711, 334005460, 1624751550, 280138733); + int b2 = (569504877); + int2x3 r2 = int2x3(112034, 22655, 134536, 40772, 198333, 34196); + TestUtils.AreEqual(a2 >> b2, r2); + + int2x3 a3 = int2x3(1598620011, 736389149, 1279158873, 408822762, 763607760, 348013684); + int b3 = (1840564178); + int2x3 r3 = int2x3(6098, 2809, 4879, 1559, 2912, 1327); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_not() + { + int2x3 a0 = int2x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339); + int2x3 r0 = int2x3(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340); + TestUtils.AreEqual(~a0, r0); + + int2x3 a1 = int2x3(1935567517, 472965491, 771711426, 627580960, 2061524024, 753208488); + int2x3 r1 = int2x3(-1935567518, -472965492, -771711427, -627580961, -2061524025, -753208489); + TestUtils.AreEqual(~a1, r1); + + int2x3 a2 = int2x3(2097179283, 664744603, 1289372466, 1635981125, 1951018596, 1545651937); + int2x3 r2 = int2x3(-2097179284, -664744604, -1289372467, -1635981126, -1951018597, -1545651938); + TestUtils.AreEqual(~a2, r2); + + int2x3 a3 = int2x3(717936457, 1342785385, 869629475, 2045854321, 1282546942, 1562433528); + int2x3 r3 = int2x3(-717936458, -1342785386, -869629476, -2045854322, -1282546943, -1562433529); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x3.gen.cs.meta new file mode 100644 index 0000000..d64f81d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a957081e92e7e5429649cd56b5453b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x4.gen.cs new file mode 100644 index 0000000..27cb587 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x4.gen.cs @@ -0,0 +1,1229 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt2x4 + { + [TestCompiler] + public static void int2x4_zero() + { + TestUtils.AreEqual(int2x4.zero.c0.x, 0); + TestUtils.AreEqual(int2x4.zero.c0.y, 0); + TestUtils.AreEqual(int2x4.zero.c1.x, 0); + TestUtils.AreEqual(int2x4.zero.c1.y, 0); + TestUtils.AreEqual(int2x4.zero.c2.x, 0); + TestUtils.AreEqual(int2x4.zero.c2.y, 0); + TestUtils.AreEqual(int2x4.zero.c3.x, 0); + TestUtils.AreEqual(int2x4.zero.c3.y, 0); + } + + [TestCompiler] + public static void int2x4_operator_equal_wide_wide() + { + int2x4 a0 = int2x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370); + int2x4 b0 = int2x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x4 a1 = int2x4(1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + int2x4 b1 = int2x4(1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x4 a2 = int2x4(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int2x4 b2 = int2x4(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x4 a3 = int2x4(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + int2x4 b3 = int2x4(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_equal_wide_scalar() + { + int2x4 a0 = int2x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277); + int b0 = (746972502); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x4 a1 = int2x4(1682018538, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077); + int b1 = (795585660); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x4 a2 = int2x4(442746747, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678); + int b2 = (1772925698); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x4 a3 = int2x4(1305479811, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832); + int b3 = (255635293); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int2x4 b0 = int2x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1061805787); + int2x4 b1 = int2x4(1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (2003197687); + int2x4 b2 = int2x4(1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (367814403); + int2x4 b3 = int2x4(1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_not_equal_wide_wide() + { + int2x4 a0 = int2x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646); + int2x4 b0 = int2x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x4 a1 = int2x4(1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + int2x4 b1 = int2x4(1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x4 a2 = int2x4(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int2x4 b2 = int2x4(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x4 a3 = int2x4(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + int2x4 b3 = int2x4(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_not_equal_wide_scalar() + { + int2x4 a0 = int2x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450); + int b0 = (248693828); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x4 a1 = int2x4(2105962247, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883); + int b1 = (727205263); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x4 a2 = int2x4(1622176923, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685); + int b2 = (768370497); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x4 a3 = int2x4(904014575, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907); + int b3 = (384643370); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int2x4 b0 = int2x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (124108032); + int2x4 b1 = int2x4(1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (266984506); + int2x4 b2 = int2x4(2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (572038024); + int2x4 b3 = int2x4(1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_wide_wide() + { + int2x4 a0 = int2x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973); + int2x4 b0 = int2x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202); + bool2x4 r0 = bool2x4(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2x4 a1 = int2x4(928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + int2x4 b1 = int2x4(2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x4 a2 = int2x4(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int2x4 b2 = int2x4(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool2x4 r2 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x4 a3 = int2x4(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + int2x4 b3 = int2x4(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool2x4 r3 = bool2x4(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_wide_scalar() + { + int2x4 a0 = int2x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341); + int b0 = (1491216667); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int2x4 a1 = int2x4(840091491, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709); + int b1 = (469591900); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int2x4 a2 = int2x4(1286331950, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110); + int b2 = (380753337); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x4 a3 = int2x4(867559111, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996); + int b3 = (1703747625); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_scalar_wide() + { + int a0 = (548436837); + int2x4 b0 = int2x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (111349251); + int2x4 b1 = int2x4(1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1027318999); + int2x4 b2 = int2x4(146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400); + bool2x4 r2 = bool2x4(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (1329939911); + int2x4 b3 = int2x4(1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_wide_wide() + { + int2x4 a0 = int2x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550); + int2x4 b0 = int2x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742); + bool2x4 r0 = bool2x4(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + int2x4 a1 = int2x4(2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + int2x4 b1 = int2x4(910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool2x4 r1 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int2x4 a2 = int2x4(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int2x4 b2 = int2x4(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int2x4 a3 = int2x4(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + int2x4 b3 = int2x4(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_wide_scalar() + { + int2x4 a0 = int2x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035); + int b0 = (438688675); + bool2x4 r0 = bool2x4(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2x4 a1 = int2x4(2125058448, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211); + int b1 = (304028799); + bool2x4 r1 = bool2x4(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int2x4 a2 = int2x4(2063134811, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419); + int b2 = (1577403353); + bool2x4 r2 = bool2x4(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2x4 a3 = int2x4(1058332184, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708); + int b3 = (524569092); + bool2x4 r3 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int2x4 b0 = int2x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (691047512); + int2x4 b1 = int2x4(741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1023307544); + int2x4 b2 = int2x4(1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900); + bool2x4 r2 = bool2x4(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (315569296); + int2x4 b3 = int2x4(292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844); + bool2x4 r3 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_equal_wide_wide() + { + int2x4 a0 = int2x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394); + int2x4 b0 = int2x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595); + bool2x4 r0 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x4 a1 = int2x4(117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + int2x4 b1 = int2x4(1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool2x4 r1 = bool2x4(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x4 a2 = int2x4(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int2x4 b2 = int2x4(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool2x4 r2 = bool2x4(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x4 a3 = int2x4(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + int2x4 b3 = int2x4(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_equal_wide_scalar() + { + int2x4 a0 = int2x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407); + int b0 = (1688048545); + bool2x4 r0 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x4 a1 = int2x4(1459242706, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948); + int b1 = (1745758438); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x4 a2 = int2x4(2017733017, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750); + int b2 = (804204255); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x4 a3 = int2x4(1258115260, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122); + int b3 = (20607406); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int2x4 b0 = int2x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (762067160); + int2x4 b1 = int2x4(11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309); + bool2x4 r1 = bool2x4(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (861890786); + int2x4 b2 = int2x4(478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850); + bool2x4 r2 = bool2x4(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (830430286); + int2x4 b3 = int2x4(145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788); + bool2x4 r3 = bool2x4(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_equal_wide_wide() + { + int2x4 a0 = int2x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546); + int2x4 b0 = int2x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862); + bool2x4 r0 = bool2x4(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x4 a1 = int2x4(1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + int2x4 b1 = int2x4(396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool2x4 r1 = bool2x4(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x4 a2 = int2x4(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int2x4 b2 = int2x4(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool2x4 r2 = bool2x4(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x4 a3 = int2x4(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + int2x4 b3 = int2x4(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool2x4 r3 = bool2x4(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_equal_wide_scalar() + { + int2x4 a0 = int2x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894); + int b0 = (1470533736); + bool2x4 r0 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x4 a1 = int2x4(609211196, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021); + int b1 = (1604309397); + bool2x4 r1 = bool2x4(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x4 a2 = int2x4(196833647, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607); + int b2 = (1596738181); + bool2x4 r2 = bool2x4(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x4 a3 = int2x4(1223010129, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090); + int b3 = (379014762); + bool2x4 r3 = bool2x4(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int2x4 b0 = int2x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1240253990); + int2x4 b1 = int2x4(1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577); + bool2x4 r1 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (173706579); + int2x4 b2 = int2x4(625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (233894308); + int2x4 b3 = int2x4(479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835); + bool2x4 r3 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_add_wide_wide() + { + int2x4 a0 = int2x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721); + int2x4 b0 = int2x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440); + int2x4 r0 = int2x4(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135); + TestUtils.AreEqual(a0 + b0, r0); + + int2x4 a1 = int2x4(698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + int2x4 b1 = int2x4(1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + int2x4 r1 = int2x4(-2009504361, 1101613923, -799189804, 1384643660, -147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a1 + b1, r1); + + int2x4 a2 = int2x4(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int2x4 b2 = int2x4(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int2x4 r2 = int2x4(-2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a2 + b2, r2); + + int2x4 a3 = int2x4(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + int2x4 b3 = int2x4(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + int2x4 r3 = int2x4(-1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_add_wide_scalar() + { + int2x4 a0 = int2x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301); + int b0 = (2124409227); + int2x4 r0 = int2x4(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768); + TestUtils.AreEqual(a0 + b0, r0); + + int2x4 a1 = int2x4(2003021861, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654); + int b1 = (1635971971); + int2x4 r1 = int2x4(-655973464, -1498597039, 1721418173, -1590842359, -1419608225, -1161318437, -931517840, -1563556671); + TestUtils.AreEqual(a1 + b1, r1); + + int2x4 a2 = int2x4(756559204, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260); + int b2 = (1818718931); + int2x4 r2 = int2x4(-1719689161, -1817324813, -865729444, -890492967, -1783405065, -1407654896, -771472132, -1898466105); + TestUtils.AreEqual(a2 + b2, r2); + + int2x4 a3 = int2x4(736972565, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516); + int b3 = (711894571); + int2x4 r3 = int2x4(1448867136, 1276152010, -1531336442, -2010235028, -1955066180, -1727372462, 1368643353, 984669087); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_add_scalar_wide() + { + int a0 = (391092078); + int2x4 b0 = int2x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072); + int2x4 r0 = int2x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (996031825); + int2x4 b1 = int2x4(1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489); + int2x4 r1 = int2x4(-1741160522, 1775806765, 2107573127, 1779078270, 2126195769, 1284311409, -1901251610, -1662351982); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (673263339); + int2x4 b2 = int2x4(1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839); + int2x4 r2 = int2x4(2142564213, 688119304, 1789900338, -2132840657, -2020713071, 863914640, 1980723107, 1593349178); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (2082229835); + int2x4 b3 = int2x4(1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222); + int2x4 r3 = int2x4(-220331887, -998813003, -1706896009, -1231316299, -724399762, -1098910821, -406590953, -370946239); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_sub_wide_wide() + { + int2x4 a0 = int2x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138); + int2x4 b0 = int2x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885); + int2x4 r0 = int2x4(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747); + TestUtils.AreEqual(a0 - b0, r0); + + int2x4 a1 = int2x4(1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + int2x4 b1 = int2x4(71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + int2x4 r1 = int2x4(1234495882, -838948052, -732179165, -881462314, -50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a1 - b1, r1); + + int2x4 a2 = int2x4(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int2x4 b2 = int2x4(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int2x4 r2 = int2x4(-624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a2 - b2, r2); + + int2x4 a3 = int2x4(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + int2x4 b3 = int2x4(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + int2x4 r3 = int2x4(-183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_sub_wide_scalar() + { + int2x4 a0 = int2x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815); + int b0 = (462232403); + int2x4 r0 = int2x4(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412); + TestUtils.AreEqual(a0 - b0, r0); + + int2x4 a1 = int2x4(281174200, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635); + int b1 = (87530840); + int2x4 r1 = int2x4(193643360, 1826193591, 1954062496, 469709150, 1031520608, 1502845892, 731559349, 728851795); + TestUtils.AreEqual(a1 - b1, r1); + + int2x4 a2 = int2x4(815920639, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794); + int b2 = (1829033117); + int2x4 r2 = int2x4(-1013112478, -36231185, -715592568, -410095141, -551775928, 263746281, -1186796375, -223782323); + TestUtils.AreEqual(a2 - b2, r2); + + int2x4 a3 = int2x4(819644478, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500); + int b3 = (1468003019); + int2x4 r3 = int2x4(-648358541, -1339699833, -914508762, -450876048, 531741763, 549269739, 349988745, -187017519); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int2x4 b0 = int2x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277); + int2x4 r0 = int2x4(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (1789300421); + int2x4 b1 = int2x4(264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829); + int2x4 r1 = int2x4(1524587528, 557444354, -28812327, 360864312, 530554961, 711920025, 458577702, 1271188592); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (967128529); + int2x4 b2 = int2x4(344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709); + int2x4 r2 = int2x4(622462275, -115139389, 59261833, -849756594, 506787961, 4974031, 410015068, -734088180); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1980098777); + int2x4 b3 = int2x4(730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041); + int2x4 r3 = int2x4(1250038225, 535700950, 1126528221, 1841262345, 966908349, 1262009247, 1473341387, 763650736); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mul_wide_wide() + { + int2x4 a0 = int2x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069); + int2x4 b0 = int2x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980); + int2x4 r0 = int2x4(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068); + TestUtils.AreEqual(a0 * b0, r0); + + int2x4 a1 = int2x4(571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + int2x4 b1 = int2x4(1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + int2x4 r1 = int2x4(-1654168033, 2093463192, -1207506618, -1133560830, 990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a1 * b1, r1); + + int2x4 a2 = int2x4(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int2x4 b2 = int2x4(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int2x4 r2 = int2x4(649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a2 * b2, r2); + + int2x4 a3 = int2x4(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + int2x4 b3 = int2x4(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + int2x4 r3 = int2x4(1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mul_wide_scalar() + { + int2x4 a0 = int2x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909); + int b0 = (1476837906); + int2x4 r0 = int2x4(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518); + TestUtils.AreEqual(a0 * b0, r0); + + int2x4 a1 = int2x4(975743632, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467); + int b1 = (573770299); + int2x4 r1 = int2x4(414773040, -699623085, 1045098929, -1129153454, 1954692228, 970215437, 1522404739, 631100697); + TestUtils.AreEqual(a1 * b1, r1); + + int2x4 a2 = int2x4(1186856590, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703); + int b2 = (890343818); + int2x4 r2 = int2x4(218605196, 908725324, -805080014, -1528445592, 1365477062, 1262261996, 2040090952, 691203142); + TestUtils.AreEqual(a2 * b2, r2); + + int2x4 a3 = int2x4(1613845584, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051); + int b3 = (76318055); + int2x4 r3 = int2x4(-1335460816, 1256424448, -545299589, 628661398, 357366566, 753276674, 2132219401, -825295347); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mul_scalar_wide() + { + int a0 = (99541948); + int2x4 b0 = int2x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146); + int2x4 r0 = int2x4(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (2105124483); + int2x4 b1 = int2x4(1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225); + int2x4 r1 = int2x4(-1028919216, 2084093460, 1286996821, 910923781, 1886305329, -1039959883, 644799552, 1815059427); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (994616533); + int2x4 b2 = int2x4(1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330); + int2x4 r2 = int2x4(585859259, 2021158292, 1046891801, -1941821535, -738776427, -1715252039, -160572189, 1259643370); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (1186460236); + int2x4 b3 = int2x4(657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873); + int2x4 r3 = int2x4(-901633076, -879300144, 1278776548, 1761940324, -675287412, 2049744268, -375297800, -1944395988); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_div_wide_wide() + { + int2x4 a0 = int2x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739); + int2x4 b0 = int2x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678); + int2x4 r0 = int2x4(1, 0, 0, 8, 0, 0, 2, 7); + TestUtils.AreEqual(a0 / b0, r0); + + int2x4 a1 = int2x4(499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + int2x4 b1 = int2x4(2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + int2x4 r1 = int2x4(0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a1 / b1, r1); + + int2x4 a2 = int2x4(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int2x4 b2 = int2x4(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int2x4 r2 = int2x4(1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2x4 a3 = int2x4(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + int2x4 b3 = int2x4(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + int2x4 r3 = int2x4(2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_div_wide_scalar() + { + int2x4 a0 = int2x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253); + int b0 = (947861580); + int2x4 r0 = int2x4(0, 1, 0, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int2x4 a1 = int2x4(341995568, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372); + int b1 = (495895326); + int2x4 r1 = int2x4(0, 3, 3, 4, 4, 2, 1, 3); + TestUtils.AreEqual(a1 / b1, r1); + + int2x4 a2 = int2x4(1447236569, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924); + int b2 = (107215658); + int2x4 r2 = int2x4(13, 0, 8, 6, 11, 13, 16, 17); + TestUtils.AreEqual(a2 / b2, r2); + + int2x4 a3 = int2x4(1244966864, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348); + int b3 = (1200843642); + int2x4 r3 = int2x4(1, 0, 1, 1, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_div_scalar_wide() + { + int a0 = (1161272038); + int2x4 b0 = int2x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032); + int2x4 r0 = int2x4(6, 0, 0, 0, 2, 0, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (81831373); + int2x4 b1 = int2x4(1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859); + int2x4 r1 = int2x4(0, 0, 1, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1653451772); + int2x4 b2 = int2x4(270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890); + int2x4 r2 = int2x4(6, 33, 0, 1, 1, 0, 2, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (351914083); + int2x4 b3 = int2x4(131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708); + int2x4 r3 = int2x4(2, 0, 0, 0, 1, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mod_wide_wide() + { + int2x4 a0 = int2x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532); + int2x4 b0 = int2x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806); + int2x4 r0 = int2x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a0 % b0, r0); + + int2x4 a1 = int2x4(778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + int2x4 b1 = int2x4(769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + int2x4 r1 = int2x4(9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a1 % b1, r1); + + int2x4 a2 = int2x4(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int2x4 b2 = int2x4(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int2x4 r2 = int2x4(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a2 % b2, r2); + + int2x4 a3 = int2x4(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + int2x4 b3 = int2x4(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + int2x4 r3 = int2x4(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mod_wide_scalar() + { + int2x4 a0 = int2x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899); + int b0 = (883951171); + int2x4 r0 = int2x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728); + TestUtils.AreEqual(a0 % b0, r0); + + int2x4 a1 = int2x4(896587769, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717); + int b1 = (405208598); + int2x4 r1 = int2x4(86170573, 361927802, 148819739, 307112428, 172564850, 324442651, 275480547, 391863923); + TestUtils.AreEqual(a1 % b1, r1); + + int2x4 a2 = int2x4(165478511, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313); + int b2 = (647846716); + int2x4 r2 = int2x4(165478511, 267861283, 307136969, 280344567, 437088090, 488509689, 144280764, 377501313); + TestUtils.AreEqual(a2 % b2, r2); + + int2x4 a3 = int2x4(1778384846, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942); + int b3 = (1216011754); + int2x4 r3 = int2x4(562373092, 812183417, 1153802502, 426660116, 708698988, 665297470, 352079071, 834971188); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mod_scalar_wide() + { + int a0 = (242383789); + int2x4 b0 = int2x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265); + int2x4 r0 = int2x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (293460573); + int2x4 b1 = int2x4(1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342); + int2x4 r1 = int2x4(293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (797184687); + int2x4 b2 = int2x4(821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318); + int2x4 r2 = int2x4(797184687, 797184687, 797184687, 797184687, 182024723, 797184687, 1919391, 797184687); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (164578061); + int2x4 b3 = int2x4(730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733); + int2x4 r3 = int2x4(164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_plus() + { + int2x4 a0 = int2x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + int2x4 r0 = int2x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + TestUtils.AreEqual(+a0, r0); + + int2x4 a1 = int2x4(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + int2x4 r1 = int2x4(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + TestUtils.AreEqual(+a1, r1); + + int2x4 a2 = int2x4(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + int2x4 r2 = int2x4(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + TestUtils.AreEqual(+a2, r2); + + int2x4 a3 = int2x4(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + int2x4 r3 = int2x4(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int2x4_operator_neg() + { + int2x4 a0 = int2x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349); + int2x4 r0 = int2x4(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349); + TestUtils.AreEqual(-a0, r0); + + int2x4 a1 = int2x4(1115028238, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094); + int2x4 r1 = int2x4(-1115028238, -694995093, -1542206286, -213087293, -243937487, -341522275, -841085242, -574159094); + TestUtils.AreEqual(-a1, r1); + + int2x4 a2 = int2x4(1687250035, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928); + int2x4 r2 = int2x4(-1687250035, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864, -1440774928); + TestUtils.AreEqual(-a2, r2); + + int2x4 a3 = int2x4(1485596454, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098); + int2x4 r3 = int2x4(-1485596454, -1387601718, -1745651998, -319115626, -1119959806, -739132284, -1954173314, -1709857098); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int2x4_operator_prefix_inc() + { + int2x4 a0 = int2x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442); + int2x4 r0 = int2x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443); + TestUtils.AreEqual(++a0, r0); + + int2x4 a1 = int2x4(913293639, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683); + int2x4 r1 = int2x4(913293640, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684); + TestUtils.AreEqual(++a1, r1); + + int2x4 a2 = int2x4(993189311, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865); + int2x4 r2 = int2x4(993189312, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866); + TestUtils.AreEqual(++a2, r2); + + int2x4 a3 = int2x4(519296647, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208); + int2x4 r3 = int2x4(519296648, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int2x4_operator_postfix_inc() + { + int2x4 a0 = int2x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + int2x4 r0 = int2x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + TestUtils.AreEqual(a0++, r0); + + int2x4 a1 = int2x4(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + int2x4 r1 = int2x4(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + TestUtils.AreEqual(a1++, r1); + + int2x4 a2 = int2x4(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + int2x4 r2 = int2x4(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + TestUtils.AreEqual(a2++, r2); + + int2x4 a3 = int2x4(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + int2x4 r3 = int2x4(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int2x4_operator_prefix_dec() + { + int2x4 a0 = int2x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826); + int2x4 r0 = int2x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825); + TestUtils.AreEqual(--a0, r0); + + int2x4 a1 = int2x4(1434377580, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956); + int2x4 r1 = int2x4(1434377579, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955); + TestUtils.AreEqual(--a1, r1); + + int2x4 a2 = int2x4(356565557, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829); + int2x4 r2 = int2x4(356565556, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828); + TestUtils.AreEqual(--a2, r2); + + int2x4 a3 = int2x4(1454322707, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343); + int2x4 r3 = int2x4(1454322706, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int2x4_operator_postfix_dec() + { + int2x4 a0 = int2x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + int2x4 r0 = int2x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + TestUtils.AreEqual(a0--, r0); + + int2x4 a1 = int2x4(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + int2x4 r1 = int2x4(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + TestUtils.AreEqual(a1--, r1); + + int2x4 a2 = int2x4(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + int2x4 r2 = int2x4(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + TestUtils.AreEqual(a2--, r2); + + int2x4 a3 = int2x4(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + int2x4 r3 = int2x4(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_and_wide_wide() + { + int2x4 a0 = int2x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406); + int2x4 b0 = int2x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812); + int2x4 r0 = int2x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a0 & b0, r0); + + int2x4 a1 = int2x4(2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + int2x4 b1 = int2x4(23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + int2x4 r1 = int2x4(16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a1 & b1, r1); + + int2x4 a2 = int2x4(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int2x4 b2 = int2x4(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int2x4 r2 = int2x4(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a2 & b2, r2); + + int2x4 a3 = int2x4(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + int2x4 b3 = int2x4(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + int2x4 r3 = int2x4(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_and_wide_scalar() + { + int2x4 a0 = int2x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839); + int b0 = (93423598); + int2x4 r0 = int2x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806); + TestUtils.AreEqual(a0 & b0, r0); + + int2x4 a1 = int2x4(1365509729, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033); + int b1 = (428270198); + int2x4 r1 = int2x4(285475424, 262144, 8536128, 134529558, 277234224, 150995062, 142909440, 285474848); + TestUtils.AreEqual(a1 & b1, r1); + + int2x4 a2 = int2x4(1408932942, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926); + int b2 = (957693145); + int2x4 r2 = int2x4(286268488, 420556880, 18167000, 286270481, 420753408, 134551616, 152314057, 420547656); + TestUtils.AreEqual(a2 & b2, r2); + + int2x4 a3 = int2x4(1817145060, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525); + int b3 = (1466722981); + int2x4 r3 = int2x4(1145858724, 1145069572, 273443365, 101460005, 1093403136, 524420, 335806629, 1142948357); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int2x4 b0 = int2x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279); + int2x4 r0 = int2x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1089518981); + int2x4 b1 = int2x4(270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038); + int2x4 r1 = int2x4(2105729, 1080066432, 40324, 1074831621, 1081121157, 1058177, 14593, 1084233092); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1845693112); + int2x4 b2 = int2x4(946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417); + int2x4 r2 = int2x4(671287840, 1141047992, 1744964224, 33751056, 1744964256, 1845559864, 1140852752, 1208158384); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1214109404); + int2x4 b3 = int2x4(2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506); + int2x4 r3 = int2x4(16988, 1208799884, 1074321052, 1209303624, 1115840, 1213727936, 1610312, 1078218760); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_or_wide_wide() + { + int2x4 a0 = int2x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835); + int2x4 b0 = int2x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430); + int2x4 r0 = int2x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a0 | b0, r0); + + int2x4 a1 = int2x4(669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + int2x4 b1 = int2x4(1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + int2x4 r1 = int2x4(1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a1 | b1, r1); + + int2x4 a2 = int2x4(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int2x4 b2 = int2x4(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int2x4 r2 = int2x4(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a2 | b2, r2); + + int2x4 a3 = int2x4(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + int2x4 b3 = int2x4(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + int2x4 r3 = int2x4(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_or_wide_scalar() + { + int2x4 a0 = int2x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250); + int b0 = (1666102508); + int2x4 r0 = int2x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446); + TestUtils.AreEqual(a0 | b0, r0); + + int2x4 a1 = int2x4(860336789, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989); + int b1 = (1637162093); + int2x4 r1 = int2x4(1943518973, 1773477631, 1874321005, 1979522941, 1742175855, 1872100735, 1978998143, 1675623789); + TestUtils.AreEqual(a1 | b1, r1); + + int2x4 a2 = int2x4(1980838747, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359); + int b2 = (284225881); + int2x4 r2 = int2x4(1995567963, 334885881, 317847551, 1408563035, 1895366623, 536016891, 2029779967, 2063332319); + TestUtils.AreEqual(a2 | b2, r2); + + int2x4 a3 = int2x4(1511253082, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895); + int b3 = (1775629833); + int2x4 r3 = int2x4(2077750875, 1843265467, 1775761279, 2111176313, 2046817999, 2113404623, 1778251405, 2077753039); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int2x4 b0 = int2x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012); + int2x4 r0 = int2x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (979469710); + int2x4 b1 = int2x4(1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473); + int2x4 r1 = int2x4(2055064991, 2078664126, 1005832159, 1063386607, 1064023950, 989314559, 1056294302, 997187007); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (447949225); + int2x4 b2 = int2x4(527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150); + int2x4 r2 = int2x4(536590767, 2126457261, 447999469, 1526184941, 2062773753, 1593519101, 1589357545, 1526197231); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (298563808); + int2x4 b3 = int2x4(2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556); + int2x4 r3 = int2x4(2078276845, 872414207, 938213110, 1945092072, 1375468774, 838844392, 1004273386, 836763636); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_xor_wide_wide() + { + int2x4 a0 = int2x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553); + int2x4 b0 = int2x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262); + int2x4 r0 = int2x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x4 a1 = int2x4(47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + int2x4 b1 = int2x4(1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + int2x4 r1 = int2x4(1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x4 a2 = int2x4(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int2x4 b2 = int2x4(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int2x4 r2 = int2x4(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x4 a3 = int2x4(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + int2x4 b3 = int2x4(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + int2x4 r3 = int2x4(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_xor_wide_scalar() + { + int2x4 a0 = int2x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586); + int b0 = (493665894); + int2x4 r0 = int2x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x4 a1 = int2x4(1305234431, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978); + int b1 = (353786540); + int2x4 r1 = int2x4(1490686291, 1528187574, 1585863135, 309015380, 1534886006, 1913214449, 333543154, 57919030); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x4 a2 = int2x4(491079274, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736); + int b2 = (191750702); + int2x4 r2 = int2x4(371762244, 4897915, 852093491, 732592657, 763363694, 190966742, 1397197090, 1867453430); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x4 a3 = int2x4(447453839, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291); + int b3 = (890841598); + int2x4 r3 = int2x4(800240497, 610664066, 711808497, 714187902, 1735978412, 1929239075, 171965729, 427463573); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int2x4 b0 = int2x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737); + int2x4 r0 = int2x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1773918217); + int2x4 b1 = int2x4(1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937); + int2x4 r1 = int2x4(809875551, 777590045, 762148929, 497155858, 8071545, 440700667, 702609021, 2028559872); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1382343363); + int2x4 b2 = int2x4(939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481); + int2x4 r2 = int2x4(1704743464, 476745462, 1598742512, 1722301941, 1981778335, 1509285046, 19333242, 1884605034); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1813817520); + int2x4 b3 = int2x4(86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759); + int2x4 r3 = int2x4(1765145501, 465338881, 961174309, 1508358725, 916626445, 1734574159, 1183306712, 2052237431); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_left_shift() + { + int2x4 a0 = int2x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484); + int b0 = (1321149625); + int2x4 r0 = int2x4(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464); + TestUtils.AreEqual(a0 << b0, r0); + + int2x4 a1 = int2x4(1200694230, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989); + int b1 = (1531607705); + int2x4 r1 = int2x4(-1409286144, -872415232, -1409286144, 1006632960, 1174405120, 503316480, -1677721600, -637534208); + TestUtils.AreEqual(a1 << b1, r1); + + int2x4 a2 = int2x4(2077023268, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278); + int b2 = (592678686); + int2x4 r2 = int2x4(0, -1073741824, -1073741824, -1073741824, 1073741824, 1073741824, 1073741824, -2147483648); + TestUtils.AreEqual(a2 << b2, r2); + + int2x4 a3 = int2x4(221147365, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688); + int b3 = (2084190583); + int2x4 r3 = int2x4(1920991232, -1342177280, -603979776, -134217728, -805306368, -310378496, 109051904, 1207959552); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_right_shift() + { + int2x4 a0 = int2x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998); + int b0 = (1266801540); + int2x4 r0 = int2x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749); + TestUtils.AreEqual(a0 >> b0, r0); + + int2x4 a1 = int2x4(572763124, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711); + int b1 = (506619530); + int2x4 r1 = int2x4(559338, 416804, 1983710, 685476, 896274, 556157, 181243, 1076292); + TestUtils.AreEqual(a1 >> b1, r1); + + int2x4 a2 = int2x4(334005460, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760); + int b2 = (1624751550); + int2x4 r2 = int2x4(0, 0, 1, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a2 >> b2, r2); + + int2x4 a3 = int2x4(348013684, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476); + int b3 = (1568185874); + int2x4 r3 = int2x4(1327, 2953, 6054, 2289, 112, 7175, 1343, 4442); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_not() + { + int2x4 a0 = int2x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856); + int2x4 r0 = int2x4(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857); + TestUtils.AreEqual(~a0, r0); + + int2x4 a1 = int2x4(472965491, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466); + int2x4 r1 = int2x4(-472965492, -627580961, -2061524025, -753208489, -2097179284, -1303022494, -664744604, -1289372467); + TestUtils.AreEqual(~a1, r1); + + int2x4 a2 = int2x4(1635981125, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942); + int2x4 r2 = int2x4(-1635981126, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322, -1282546943); + TestUtils.AreEqual(~a2, r2); + + int2x4 a3 = int2x4(1562433528, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039); + int2x4 r3 = int2x4(-1562433529, -1736570716, -508906059, -2060752881, -1867418757, -388530275, -695179853, -1766938040); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x4.gen.cs.meta new file mode 100644 index 0000000..c14b2a0 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 847ca3f6ecd472f43b9995db81c87807 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3.gen.cs new file mode 100644 index 0000000..97f7efa --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3.gen.cs @@ -0,0 +1,1346 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt3 + { + [TestCompiler] + public static void int3_zero() + { + TestUtils.AreEqual(int3.zero.x, 0); + TestUtils.AreEqual(int3.zero.y, 0); + TestUtils.AreEqual(int3.zero.z, 0); + } + + [TestCompiler] + public static void int3_constructor() + { + int3 a = new int3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void int3_scalar_constructor() + { + int3 a = new int3(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + TestUtils.AreEqual(a.z, 17); + } + + [TestCompiler] + public static void int3_static_constructor() + { + int3 a = int3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void int3_static_scalar_constructor() + { + int3 a = int3(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + TestUtils.AreEqual(a.z, 17); + } + + [TestCompiler] + public static void int3_operator_equal_wide_wide() + { + int3 a0 = int3(790229414, 970783976, 1428432738); + int3 b0 = int3(612337669, 1214209108, 2120643427); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3 a1 = int3(1578747135, 1733797753, 2001507228); + int3 b1 = int3(295461214, 1510890331, 1893316566); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3 a2 = int3(1446876437, 1777406370, 1426387268); + int3 b2 = int3(921816149, 1834958575, 1482011863); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3 a3 = int3(1809275021, 1843770816, 1172185222); + int3 b3 = int3(2062852792, 226398742, 770290735); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3_operator_equal_wide_scalar() + { + int3 a0 = int3(1211464300, 1921862607, 508076684); + int b0 = (746972502); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3 a1 = int3(1249127920, 746862310, 1733655277); + int b1 = (1394594555); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3 a2 = int3(1884008277, 795585660, 936027116); + int b2 = (1682018538); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3 a3 = int3(927605411, 1465584610, 585324157); + int b3 = (672785749); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int3 b0 = int3(233855098, 924242519, 1402948791); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (601381975); + int3 b1 = int3(2120518068, 629187703, 1971977031); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (47183124); + int3 b2 = int3(1061805787, 1009011238, 312511148); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1460673064); + int3 b3 = int3(737210539, 1737844479, 1892405453); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3_operator_not_equal_wide_wide() + { + int3 a0 = int3(1660932106, 982847023, 97046264); + int3 b0 = int3(107139049, 75478496, 2055495054); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3 a1 = int3(1739517447, 1253499180, 1830584069); + int3 b1 = int3(358586687, 942338347, 111564990); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3 a2 = int3(1841470429, 1397841646, 1770890135); + int3 b2 = int3(113811950, 948912488, 1080084121); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3 a3 = int3(1906548631, 169082967, 2099271786); + int3 b3 = int3(1400504872, 1032134499, 1061123400); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3_operator_not_equal_wide_scalar() + { + int3 a0 = int3(747758183, 1033001286, 1439973882); + int b0 = (248693828); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3 a1 = int3(2138928797, 1432672459, 950170763); + int b1 = (1197845089); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3 a2 = int3(238704450, 727205263, 1640688041); + int b2 = (2105962247); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3 a3 = int3(276313906, 791998981, 2035077187); + int b3 = (2126300423); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int3 b0 = int3(2037494727, 1989050616, 48833929); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (1897435904); + int3 b1 = int3(514354517, 1783749164, 364694471); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (754315072); + int3 b2 = int3(124108032, 1512967900, 1178825850); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1854793298); + int3 b3 = int3(50286949, 2100802631, 1640811853); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_wide_wide() + { + int3 a0 = int3(1182186063, 415538999, 1667335818); + int3 b0 = int3(524633529, 1032195686, 760723389); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int3 a1 = int3(1566618442, 1166180837, 639095188); + int3 b1 = int3(1505751409, 431962172, 1287906509); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3 a2 = int3(1080836365, 771119973, 928263233); + int3 b2 = int3(1560084663, 1450178202, 2066166337); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int3 a3 = int3(789225474, 665243110, 1003542034); + int3 b3 = int3(1107069023, 1640077524, 2103263105); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_wide_scalar() + { + int3 a0 = int3(608447185, 818840405, 869219329); + int b0 = (1491216667); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3 a1 = int3(2080125385, 1361741203, 1667165786); + int b1 = (1214500548); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int3 a2 = int3(1615392341, 469591900, 1247103789); + int b2 = (840091491); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int3 a3 = int3(315321650, 1100560246, 933855388); + int b3 = (930950514); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_scalar_wide() + { + int a0 = (548436837); + int3 b0 = int3(282703327, 14370648, 1862117300); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1304793311); + int3 b1 = int3(826073259, 988910157, 445132446); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1139670255); + int3 b2 = int3(111349251, 1102440676, 112183144); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (1594415311); + int3 b3 = int3(1890019295, 2098715503, 608933527); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_wide_wide() + { + int3 a0 = int3(592884447, 2133928932, 918957182); + int3 b0 = int3(138737040, 192863971, 1700841444); + bool3 r0 = bool3(true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int3 a1 = int3(1284069471, 194584707, 739120780); + int3 b1 = int3(1044631301, 1391589821, 730837695); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int3 a2 = int3(241654068, 1340158550, 2099542537); + int3 b2 = int3(253553987, 2078872742, 910845808); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int3 a3 = int3(1182623667, 1399607274, 789301637); + int3 b3 = int3(976047676, 202633078, 1223618940); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_wide_scalar() + { + int3 a0 = int3(1097138316, 211763648, 1883002501); + int b0 = (438688675); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3 a1 = int3(56406996, 1923456111, 1437755186); + int b1 = (43662641); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int3 a2 = int3(1219010035, 304028799, 893125636); + int b2 = (2125058448); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3 a3 = int3(48044515, 1035679270, 577943770); + int b3 = (711945018); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int3 b0 = int3(599356784, 185671342, 1932327391); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (2025591013); + int3 b1 = int3(1257191721, 1312388500, 1443698859); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (779217735); + int3 b2 = int3(691047512, 741776730, 732565983); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (668302204); + int3 b3 = int3(1556466996, 858599525, 1896917159); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_equal_wide_wide() + { + int3 a0 = int3(1577248162, 2043073061, 1688380407); + int3 b0 = int3(903445031, 2108974565, 210822256); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int3 a1 = int3(176431985, 223299035, 1502802140); + int3 b1 = int3(1281704747, 453681718, 66138830); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3 a2 = int3(1691709825, 386789394, 117182003); + int3 b2 = int3(1229799377, 1620922595, 1715833766); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int3 a3 = int3(1665770435, 1958490731, 420032601); + int3 b3 = int3(1366430432, 13102000, 46919981); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_equal_wide_scalar() + { + int3 a0 = int3(1722165358, 1219858357, 860410743); + int b0 = (1688048545); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int3 a1 = int3(411099660, 1963256951, 212084836); + int b1 = (348104022); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int3 a2 = int3(58924407, 1745758438, 532949158); + int b2 = (1459242706); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int3 a3 = int3(262559763, 1806172431, 2091514001); + int b3 = (690091301); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int3 b0 = int3(1181030049, 1787703989, 1729760948); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1816537388); + int3 b1 = int3(1359786460, 874999193, 1678863148); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (1711365839); + int3 b2 = int3(762067160, 11953554, 1131583906); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (1175393186); + int3 b3 = int3(1293698493, 48893340, 66196247); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_equal_wide_wide() + { + int3 a0 = int3(263000030, 744235661, 1893760267); + int3 b0 = int3(1395535146, 1178373944, 1237373760); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int3 a1 = int3(237248, 1062370984, 1676977687); + int3 b1 = int3(1364855321, 600811864, 362060472); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3 a2 = int3(816766880, 1089431546, 1394493730); + int3 b2 = int3(290870624, 1839067862, 396958580); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3 a3 = int3(1176473380, 1193988637, 1703862455); + int3 b3 = int3(1336888643, 1019684398, 1697684196); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_equal_wide_scalar() + { + int3 a0 = int3(2112791350, 1043657935, 101764761); + int b0 = (1470533736); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int3 a1 = int3(1529909067, 281734132, 1186600258); + int b1 = (556026890); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3 a2 = int3(815093894, 1604309397, 829548642); + int b2 = (609211196); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3 a3 = int3(244604867, 471843809, 1819986195); + int b3 = (1419295004); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int3 b0 = int3(1503244746, 861711266, 817773856); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (925984572); + int3 b1 = int3(571221723, 683686810, 118252990); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1653952090); + int3 b2 = int3(1240253990, 1947039008, 1869136019); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (152012637); + int3 b3 = int3(1214546726, 917376832, 303549425); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3_operator_add_wide_wide() + { + int3 a0 = int3(2049228671, 1658660009, 491719392); + int3 b0 = int3(2088751567, 645762023, 306868786); + int3 r0 = int3(-156987058, -1990545264, 798588178); + TestUtils.AreEqual(a0 + b0, r0); + + int3 a1 = int3(937013355, 81108663, 1063894558); + int3 b1 = int3(4360271, 506047997, 2094559874); + int3 r1 = int3(941373626, 587156660, -1136512864); + TestUtils.AreEqual(a1 + b1, r1); + + int3 a2 = int3(86954702, 843159721, 698977704); + int3 b2 = int3(1634712736, 1601474440, 1586485231); + int3 r2 = int3(1721667438, -1850333135, -2009504361); + TestUtils.AreEqual(a2 + b2, r2); + + int3 a3 = int3(192867135, 1683407172, 137301303); + int3 b3 = int3(908746788, 1812370320, 1247342357); + int3 r3 = int3(1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3_operator_add_wide_scalar() + { + int3 a0 = int3(2038218457, 134923711, 875689667); + int b0 = (2124409227); + int3 r0 = int3(-132339612, -2035634358, -1294868402); + TestUtils.AreEqual(a0 + b0, r0); + + int3 a1 = int3(1338884463, 340490871, 1067888129); + int b1 = (997710928); + int3 r1 = int3(-1958371905, 1338201799, 2065599057); + TestUtils.AreEqual(a1 + b1, r1); + + int3 a2 = int3(70433301, 1635971971, 1160398286); + int b2 = (2003021861); + int3 r2 = int3(2073455162, -655973464, -1131547149); + TestUtils.AreEqual(a2 + b2, r2); + + int3 a3 = int3(85446202, 1239387100, 1497676888); + int b3 = (1068152966); + int3 r3 = int3(1153599168, -1987427230, -1729137442); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3_operator_add_scalar_wide() + { + int a0 = (391092078); + int3 b0 = int3(519908870, 851424292, 328314822); + int3 r0 = int3(911000948, 1242516370, 719406900); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (135622204); + int3 b1 = int3(740923360, 655394201, 1451896269); + int3 r1 = int3(876545564, 791016405, 1587518473); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1781697072); + int3 b2 = int3(996031825, 1557774949, 779774940); + int3 r2 = int3(-1517238399, -955495275, -1733495284); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1111541302); + int3 b3 = int3(783046445, 1130163944, 288279584); + int3 r3 = int3(1894587747, -2053262050, 1399820886); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3_operator_sub_wide_wide() + { + int3 a0 = int3(1353441118, 797269833, 659988112); + int3 b0 = int3(1332656812, 1827794007, 972557431); + int3 r0 = int3(20784306, -1030524174, -312569319); + TestUtils.AreEqual(a0 - b0, r0); + + int3 a1 = int3(56022121, 365847472, 2062899435); + int3 b1 = int3(2078233689, 1508184327, 1372307701); + int3 r1 = int3(-2022211568, -1142336855, 690591734); + TestUtils.AreEqual(a1 - b1, r1); + + int3 a2 = int3(1380988474, 799885138, 1306058185); + int3 b2 = int3(810327977, 936799885, 71562303); + int3 r2 = int3(570660497, -136914747, 1234495882); + TestUtils.AreEqual(a2 - b2, r2); + + int3 a3 = int3(579775276, 1239163824, 344591081); + int3 b3 = int3(1418723328, 1971342989, 1226053395); + int3 r3 = int3(-838948052, -732179165, -881462314); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3_operator_sub_wide_scalar() + { + int3 a0 = int3(1176369558, 1934521195, 309452150); + int b0 = (462232403); + int3 r0 = int3(714137155, 1472288792, -152780253); + TestUtils.AreEqual(a0 - b0, r0); + + int3 a1 = int3(1417634074, 1306356714, 1502312334); + int b1 = (108910717); + int3 r1 = int3(1308723357, 1197445997, 1393401617); + TestUtils.AreEqual(a1 - b1, r1); + + int3 a2 = int3(1451794815, 87530840, 1913724431); + int b2 = (281174200); + int3 r2 = int3(1170620615, -193643360, 1632550231); + TestUtils.AreEqual(a2 - b2, r2); + + int3 a3 = int3(2041593336, 1119051448, 1590376732); + int b3 = (557239990); + int3 r3 = int3(1484353346, 561811458, 1033136742); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int3 b0 = int3(2022393810, 1612688515, 496689713); + int3 r0 = int3(-330859405, 78845890, 1194844692); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (887037586); + int3 b1 = int3(2097630964, 374934538, 939035482); + int3 r1 = int3(-1210593378, 512103048, -51997896); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (935242277); + int3 b2 = int3(1789300421, 264712893, 1231856067); + int3 r2 = int3(-854058144, 670529384, -296613790); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1818112748); + int3 b3 = int3(1428436109, 1258745460, 1077380396); + int3 r3 = int3(389676639, 559367288, 740732352); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3_operator_mul_wide_wide() + { + int3 a0 = int3(245827027, 208934650, 1019478917); + int3 b0 = int3(759663997, 350129201, 477450108); + int3 r0 = int3(-632811769, 1402281434, 332447596); + TestUtils.AreEqual(a0 * b0, r0); + + int3 a1 = int3(568231809, 877289039, 1585782440); + int3 b1 = int3(1635735015, 388710278, 757722665); + int3 r1 = int3(-1932977561, -1670918566, 1455036648); + TestUtils.AreEqual(a1 * b1, r1); + + int3 a2 = int3(2111178729, 1186019069, 571481445); + int3 b2 = int3(1509388321, 1841703980, 1826369331); + int3 r2 = int3(2128344329, -594088068, -1654168033); + TestUtils.AreEqual(a2 * b2, r2); + + int3 a3 = int3(1570087048, 629447153, 619383734); + int3 b3 = int3(1524322467, 1605207974, 428419155); + int3 r3 = int3(2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3_operator_mul_wide_scalar() + { + int3 a0 = int3(1762033447, 465343930, 1570757881); + int b0 = (1476837906); + int3 r0 = int3(-1313177922, 1326807828, -2138555518); + TestUtils.AreEqual(a0 * b0, r0); + + int3 a1 = int3(1326409563, 1356578909, 72749215); + int b1 = (1824319147); + int3 r1 = int3(-252064823, -236385249, -2127563723); + TestUtils.AreEqual(a1 * b1, r1); + + int3 a2 = int3(154616909, 573770299, 1958912969); + int b2 = (975743632); + int3 r2 = int3(7966032, 414773040, 262642448); + TestUtils.AreEqual(a2 * b2, r2); + + int3 a3 = int3(971327747, 1324050764, 660611671); + int b3 = (1818877398); + int3 r3 = int3(-1947361406, 1927061896, -1313812550); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3_operator_mul_scalar_wide() + { + int a0 = (99541948); + int3 b0 = int3(1764461774, 657072478, 1459784358); + int3 r0 = int3(-950398648, -102049016, 1260585960); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1610646683); + int3 b1 = int3(1632058826, 868441654, 1408757883); + int3 r1 = int3(1644073294, 1407050418, -820115847); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (335917146); + int3 b2 = int3(2105124483, 1178393968, 1963904348); + int3 r2 = int3(1003330062, -1663903392, -2026933672); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (1409533767); + int3 b3 = int3(243286231, 1336308795, 517963367); + int3 r3 = int3(108928161, 875895133, -1837949039); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3_operator_div_wide_wide() + { + int3 a0 = int3(1590198532, 507812502, 126627032); + int3 b0 = int3(1434703236, 911965201, 390415521); + int3 r0 = int3(1, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3 a1 = int3(1058247011, 427387861, 290676154); + int3 b1 = int3(128746927, 525835375, 816946613); + int3 r1 = int3(8, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3 a2 = int3(1829594484, 1127868739, 499016351); + int3 b2 = int3(878264647, 146789678, 2089524057); + int3 r2 = int3(2, 7, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int3 a3 = int3(1341209632, 134906097, 785470242); + int3 b3 = int3(254213018, 1916850021, 1737806518); + int3 r3 = int3(5, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3_operator_div_wide_scalar() + { + int3 a0 = int3(560951562, 1218680769, 375341724); + int b0 = (947861580); + int3 r0 = int3(0, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3 a1 = int3(1613542090, 1397425408, 1349573078); + int b1 = (1919409166); + int3 r1 = int3(0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3 a2 = int3(524526253, 495895326, 1515313790); + int b2 = (341995568); + int3 r2 = int3(1, 1, 4); + TestUtils.AreEqual(a2 / b2, r2); + + int3 a3 = int3(1676971657, 2105094094, 1017891310); + int b3 = (2131487088); + int3 r3 = int3(0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3_operator_div_scalar_wide() + { + int a0 = (1161272038); + int3 b0 = int3(187325733, 1594107378, 2016183849); + int3 r0 = int3(6, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1589343709); + int3 b1 = int3(388768753, 1417077283, 1773486938); + int3 r1 = int3(4, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1154044032); + int3 b2 = int3(81831373, 1476877645, 653688843); + int3 r2 = int3(14, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (45756703); + int3 b3 = int3(631027637, 396671391, 784365696); + int3 r3 = int3(0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3_operator_mod_wide_wide() + { + int3 a0 = int3(146150818, 1846543305, 1071447756); + int3 b0 = int3(983050390, 771341152, 942375212); + int3 r0 = int3(146150818, 303861001, 129072544); + TestUtils.AreEqual(a0 % b0, r0); + + int3 a1 = int3(308965362, 659881575, 1002365460); + int3 b1 = int3(367361754, 749500619, 750718852); + int3 r1 = int3(308965362, 659881575, 251646608); + TestUtils.AreEqual(a1 % b1, r1); + + int3 a2 = int3(861198439, 1510617532, 778525078); + int3 b2 = int3(2095151755, 88438806, 769227442); + int3 r2 = int3(861198439, 7157830, 9297636); + TestUtils.AreEqual(a2 % b2, r2); + + int3 a3 = int3(1458458044, 101987897, 1249565173); + int3 b3 = int3(647214624, 1026513788, 1544950956); + int3 r3 = int3(164028796, 101987897, 1249565173); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3_operator_mod_wide_scalar() + { + int3 a0 = int3(164800505, 1062177828, 1898749675); + int b0 = (883951171); + int3 r0 = int3(164800505, 178226657, 130847333); + TestUtils.AreEqual(a0 % b0, r0); + + int3 a1 = int3(1701653318, 19002208, 128329633); + int b1 = (820393245); + int3 r1 = int3(60866828, 19002208, 128329633); + TestUtils.AreEqual(a1 % b1, r1); + + int3 a2 = int3(1464010899, 405208598, 1982762194); + int b2 = (896587769); + int3 r2 = int3(567423130, 405208598, 189586656); + TestUtils.AreEqual(a2 % b2, r2); + + int3 a3 = int3(959236935, 172564850, 1540068445); + int b3 = (712321026); + int3 r3 = int3(246915909, 172564850, 115426393); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3_operator_mod_scalar_wide() + { + int a0 = (242383789); + int3 b0 = int3(740000543, 1556450291, 1104736385); + int3 r0 = int3(242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (437976569); + int3 b1 = int3(1911837205, 1507212038, 1906405167); + int3 r1 = int3(437976569, 437976569, 437976569); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (247693265); + int3 b2 = int3(293460573, 1495295166, 873323603); + int3 r2 = int3(247693265, 247693265, 247693265); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (530681233); + int3 b3 = int3(1298102643, 2057984657, 1000742091); + int3 r3 = int3(530681233, 530681233, 530681233); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3_operator_plus() + { + int3 a0 = int3(1643476803, 907898539, 379615839); + int3 r0 = int3(1643476803, 907898539, 379615839); + TestUtils.AreEqual(+a0, r0); + + int3 a1 = int3(1140483021, 1743199272, 1472881565); + int3 r1 = int3(1140483021, 1743199272, 1472881565); + TestUtils.AreEqual(+a1, r1); + + int3 a2 = int3(339091479, 1287765427, 849339193); + int3 r2 = int3(339091479, 1287765427, 849339193); + TestUtils.AreEqual(+a2, r2); + + int3 a3 = int3(174532915, 1566098441, 1145639744); + int3 r3 = int3(174532915, 1566098441, 1145639744); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int3_operator_neg() + { + int3 a0 = int3(1955022112, 662160019, 370300775); + int3 r0 = int3(-1955022112, -662160019, -370300775); + TestUtils.AreEqual(-a0, r0); + + int3 a1 = int3(2141283773, 28153593, 33894270); + int3 r1 = int3(-2141283773, -28153593, -33894270); + TestUtils.AreEqual(-a1, r1); + + int3 a2 = int3(505708349, 1636274969, 694995093); + int3 r2 = int3(-505708349, -1636274969, -694995093); + TestUtils.AreEqual(-a2, r2); + + int3 a3 = int3(1542206286, 243937487, 341522275); + int3 r3 = int3(-1542206286, -243937487, -341522275); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int3_operator_prefix_inc() + { + int3 a0 = int3(864455342, 2035793213, 1275443862); + int3 r0 = int3(864455343, 2035793214, 1275443863); + TestUtils.AreEqual(++a0, r0); + + int3 a1 = int3(971919915, 446210725, 395072276); + int3 r1 = int3(971919916, 446210726, 395072277); + TestUtils.AreEqual(++a1, r1); + + int3 a2 = int3(115573442, 432884105, 1208161871); + int3 r2 = int3(115573443, 432884106, 1208161872); + TestUtils.AreEqual(++a2, r2); + + int3 a3 = int3(1385544935, 831396561, 388229350); + int3 r3 = int3(1385544936, 831396562, 388229351); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int3_operator_postfix_inc() + { + int3 a0 = int3(1751003569, 2063707595, 1500486291); + int3 r0 = int3(1751003569, 2063707595, 1500486291); + TestUtils.AreEqual(a0++, r0); + + int3 a1 = int3(969189211, 2028651936, 1643023524); + int3 r1 = int3(969189211, 2028651936, 1643023524); + TestUtils.AreEqual(a1++, r1); + + int3 a2 = int3(1190630527, 708474528, 177416855); + int3 r2 = int3(1190630527, 708474528, 177416855); + TestUtils.AreEqual(a2++, r2); + + int3 a3 = int3(1524860667, 375284401, 1580130369); + int3 r3 = int3(1524860667, 375284401, 1580130369); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int3_operator_prefix_dec() + { + int3 a0 = int3(200904609, 871077500, 968578728); + int3 r0 = int3(200904608, 871077499, 968578727); + TestUtils.AreEqual(--a0, r0); + + int3 a1 = int3(638967721, 435367037, 1782514098); + int3 r1 = int3(638967720, 435367036, 1782514097); + TestUtils.AreEqual(--a1, r1); + + int3 a2 = int3(1589827826, 596759698, 1699290403); + int3 r2 = int3(1589827825, 596759697, 1699290402); + TestUtils.AreEqual(--a2, r2); + + int3 a3 = int3(1758478358, 71237375, 389120307); + int3 r3 = int3(1758478357, 71237374, 389120306); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int3_operator_postfix_dec() + { + int3 a0 = int3(283970262, 1109329936, 1073216143); + int3 r0 = int3(283970262, 1109329936, 1073216143); + TestUtils.AreEqual(a0--, r0); + + int3 a1 = int3(649439137, 1174104498, 484207852); + int3 r1 = int3(649439137, 1174104498, 484207852); + TestUtils.AreEqual(a1--, r1); + + int3 a2 = int3(524156737, 2017728859, 802721301); + int3 r2 = int3(524156737, 2017728859, 802721301); + TestUtils.AreEqual(a2--, r2); + + int3 a3 = int3(377162390, 1504625034, 590919177); + int3 r3 = int3(377162390, 1504625034, 590919177); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_and_wide_wide() + { + int3 a0 = int3(779935043, 1097962163, 1939593304); + int3 b0 = int3(307705143, 1710882162, 866836769); + int3 r0 = int3(39064835, 1097961522, 864731136); + TestUtils.AreEqual(a0 & b0, r0); + + int3 a1 = int3(800599247, 952140918, 782792558); + int3 b1 = int3(532490608, 679371720, 1794035877); + int3 r1 = int3(263727168, 675283008, 715673636); + TestUtils.AreEqual(a1 & b1, r1); + + int3 a2 = int3(1608557706, 396446406, 2039894114); + int3 b2 = int3(1439832202, 519529812, 23633139); + int3 r2 = int3(1438646410, 379666500, 16781410); + TestUtils.AreEqual(a2 & b2, r2); + + int3 a3 = int3(1286974642, 442394124, 1759739564); + int3 b3 = int3(1209152681, 646737179, 1255867027); + int3 r3 = int3(1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_and_wide_scalar() + { + int3 a0 = int3(443615469, 490057985, 2042441263); + int b0 = (93423598); + int3 r0 = int3(1114348, 85033216, 26281518); + TestUtils.AreEqual(a0 & b0, r0); + + int3 a1 = int3(1524760558, 510212004, 1941875181); + int b1 = (1405175110); + int3 r1 = int3(1388397894, 306251012, 1400897860); + TestUtils.AreEqual(a1 & b1, r1); + + int3 a2 = int3(1236735839, 428270198, 607982857); + int b2 = (1365509729); + int3 r2 = int3(1092879937, 285475424, 2360321); + TestUtils.AreEqual(a2 & b2, r2); + + int3 a3 = int3(650270920, 814629680, 1862276471); + int b3 = (1249238550); + int3 r3 = int3(37771264, 279056, 1241519126); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int3 b0 = int3(420346723, 562416448, 1393127318); + int3 r0 = int3(547170, 18752, 1074284806); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1560699552); + int3 b1 = int3(851218057, 703880958, 1159378889); + int3 r1 = int3(268698240, 151274144, 1157767808); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (2031211279); + int3 b2 = int3(1089518981, 270607307, 1349288930); + int3 r2 = int3(1074827525, 268501771, 1342210818); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (520199596); + int3 b3 = int3(1763483957, 1248975349, 236938635); + int3 r3 = int3(151028004, 167877028, 234947976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_or_wide_wide() + { + int3 a0 = int3(1731159103, 659068416, 382702471); + int3 b0 = int3(1583847161, 692672727, 1161585489); + int3 r0 = int3(2138044159, 793370327, 1476391895); + TestUtils.AreEqual(a0 | b0, r0); + + int3 a1 = int3(1821032196, 1565773438, 1004000514); + int3 b1 = int3(1756207130, 1321374429, 1287357212); + int3 r1 = int3(1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a1 | b1, r1); + + int3 a2 = int3(948501377, 600951835, 669346222); + int3 b2 = int3(2075767170, 1273513430, 1610830169); + int3 r2 = int3(2075786115, 1811533279, 1743223295); + TestUtils.AreEqual(a2 | b2, r2); + + int3 a3 = int3(396691477, 2108560248, 2117522137); + int3 b3 = int3(1316929125, 511625048, 573925879); + int3 r3 = int3(1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_or_wide_scalar() + { + int3 a0 = int3(961259683, 471103264, 1733389229); + int b0 = (1666102508); + int3 r0 = int3(2068823279, 2136930284, 1734344685); + TestUtils.AreEqual(a0 | b0, r0); + + int3 a1 = int3(1591585258, 1148351449, 1048929715); + int b1 = (386953869); + int3 r1 = int3(1608383471, 1467118557, 1066760127); + TestUtils.AreEqual(a1 | b1, r1); + + int3 a2 = int3(1814263250, 1637162093, 1227888278); + int b2 = (860336789); + int3 r2 = int3(2137520087, 1943518973, 2071443095); + TestUtils.AreEqual(a2 | b2, r2); + + int3 a3 = int3(774029856, 1179087439, 797240690); + int b3 = (879300408); + int3 r3 = int3(1047252792, 1987018623, 1072557946); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int3 b0 = int3(1212928242, 1614462616, 936937728); + int3 r0 = int3(1213978111, 1752940445, 2145094925); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (764766995); + int3 b1 = int3(306352095, 574719481, 1283571271); + int3 r1 = int3(1071116255, 802549755, 1838546775); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (2109131012); + int3 b2 = int3(979469710, 1348323481, 1407542578); + int3 r2 = int3(2146946446, 2113915293, 2146954550); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (697517649); + int3 b3 = int3(1059093741, 627815046, 418822515); + int3 r3 = int3(1068728061, 771487447, 972554099); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_xor_wide_wide() + { + int3 a0 = int3(1556324760, 207002929, 1843444873); + int3 b0 = int3(1054997548, 1523759632, 251164872); + int3 r0 = int3(1646419380, 1451501345, 1662567489); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3 a1 = int3(1632079131, 1460334334, 1607815585); + int3 b1 = int3(110472397, 384031112, 1109163205); + int3 r1 = int3(1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3 a2 = int3(220623650, 38668553, 47193340); + int3 b2 = int3(535118981, 179106262, 1523031711); + int3 r2 = int3(314783655, 149092575, 1477935715); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3 a3 = int3(643663548, 1371932564, 94957188); + int3 b3 = int3(1713313372, 1294118730, 520360641); + int3 r3 = int3(1078104288, 484747486, 447544389); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_xor_wide_scalar() + { + int3 a0 = int3(2124666952, 177397845, 574879617); + int b0 = (493665894); + int3 r0 = int3(1674536494, 402546227, 1060063719); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3 a1 = int3(1937385541, 213863690, 535061373); + int b1 = (1136545648); + int3 r1 = int3(818177845, 1325466234, 1549413389); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3 a2 = int3(289301586, 353786540, 1308626970); + int b2 = (1305234431); + int3 r2 = int3(1559375789, 1490686291, 63724517); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3 a3 = int3(1267729267, 1315625690, 1730088797); + int b3 = (125659640); + int3 r3 = int3(1290627723, 1226289954, 1617061541); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int3 b0 = int3(1077599928, 884741329, 212164516); + int3 r0 = int3(217506340, 2020616269, 1080648504); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1585020328); + int3 b1 = int3(152985454, 1775851275, 1416249064); + int3 r1 = int3(1466376902, 933243555, 169034560); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1309317737); + int3 b2 = int3(1773918217, 1509843030, 1206045972); + int3 r2 = int3(665928288, 401930815, 166221693); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1154916424); + int3 b3 = int3(1947871003, 1774252400, 1946113778); + int3 r3 = int3(818710355, 756437304, 925497018); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3_operator_left_shift() + { + int3 a0 = int3(197771193, 622182602, 1283988958); + int b0 = (1321149625); + int3 r0 = int3(1912602624, -1811939328, -1140850688); + TestUtils.AreEqual(a0 << b0, r0); + + int3 a1 = int3(1327917304, 432425717, 870301196); + int b1 = (473415985); + int3 r1 = int3(-772800512, -1779826688, 2081947648); + TestUtils.AreEqual(a1 << b1, r1); + + int3 a2 = int3(2058433484, 1531607705, 1360008038); + int b2 = (1200694230); + int3 r2 = int3(-218103808, -1505755136, -645922816); + TestUtils.AreEqual(a2 << b2, r2); + + int3 a3 = int3(1008296534, 1079614371, 35667343); + int b3 = (1447702302); + int3 r3 = int3(-2147483648, -1073741824, -1073741824); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int3_operator_right_shift() + { + int3 a0 = int3(548167301, 1161338299, 1617625829); + int b0 = (1266801540); + int3 r0 = int3(34260456, 72583643, 101101614); + TestUtils.AreEqual(a0 >> b0, r0); + + int3 a1 = int3(1860731847, 196552656, 770466193); + int b1 = (713958715); + int3 r1 = int3(13, 1, 5); + TestUtils.AreEqual(a1 >> b1, r1); + + int3 a2 = int3(1265099998, 506619530, 426807581); + int b2 = (572763124); + int3 r2 = int3(1206, 483, 407); + TestUtils.AreEqual(a2 >> b2, r2); + + int3 a3 = int3(2031319045, 917785020, 569504877); + int b3 = (701927980); + int3 r3 = int3(495927, 224068, 139039); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_not() + { + int3 a0 = int3(1403358969, 831360921, 2088190243); + int3 r0 = int3(-1403358970, -831360922, -2088190244); + TestUtils.AreEqual(~a0, r0); + + int3 a1 = int3(976721016, 308994339, 1935567517); + int3 r1 = int3(-976721017, -308994340, -1935567518); + TestUtils.AreEqual(~a1, r1); + + int3 a2 = int3(1420884856, 771711426, 627580960); + int3 r2 = int3(-1420884857, -771711427, -627580961); + TestUtils.AreEqual(~a2, r2); + + int3 a3 = int3(2061524024, 2097179283, 1303022493); + int3 r3 = int3(-2061524025, -2097179284, -1303022494); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void int3_shuffle_result_1() + { + int3 a = int3(0, 1, 2); + int3 b = int3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (5)); + } + + [TestCompiler] + public static void int3_shuffle_result_2() + { + int3 a = int3(0, 1, 2); + int3 b = int3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), int2(4, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), int2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), int2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), int2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY), int2(5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), int2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftZ), int2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), int2(5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), int2(4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), int2(4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), int2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY), int2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), int2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), int2(1, 2)); + } + + [TestCompiler] + public static void int3_shuffle_result_3() + { + int3 a = int3(0, 1, 2); + int3 b = int3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.RightX), int3(1, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), int3(4, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX), int3(2, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY), int3(4, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.LeftZ), int3(5, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.LeftY), int3(2, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightX), int3(2, 4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftY, ShuffleComponent.RightZ), int3(2, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ), int3(4, 4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), int3(4, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int3(5, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightX), int3(5, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightZ), int3(4, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightY), int3(2, 3, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), int3(4, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightZ), int3(4, 0, 5)); + } + + [TestCompiler] + public static void int3_shuffle_result_4() + { + int3 a = int3(0, 1, 2); + int3 b = int3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY), int4(1, 2, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightY), int4(4, 2, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.LeftY), int4(4, 4, 5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int4(3, 3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), int4(4, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightZ), int4(3, 4, 3, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightZ), int4(1, 5, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), int4(4, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightZ, ShuffleComponent.LeftZ, ShuffleComponent.LeftX), int4(3, 5, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), int4(4, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int4(0, 2, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.RightZ), int4(1, 4, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), int4(2, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), int4(3, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(5, 3, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(2, 5, 0, 4)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3.gen.cs.meta new file mode 100644 index 0000000..03b32ec --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 749525b6f2a189a42bddcde8b3f6a88e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x2.gen.cs new file mode 100644 index 0000000..f7889dd --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x2.gen.cs @@ -0,0 +1,1227 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt3x2 + { + [TestCompiler] + public static void int3x2_zero() + { + TestUtils.AreEqual(int3x2.zero.c0.x, 0); + TestUtils.AreEqual(int3x2.zero.c0.y, 0); + TestUtils.AreEqual(int3x2.zero.c0.z, 0); + TestUtils.AreEqual(int3x2.zero.c1.x, 0); + TestUtils.AreEqual(int3x2.zero.c1.y, 0); + TestUtils.AreEqual(int3x2.zero.c1.z, 0); + } + + [TestCompiler] + public static void int3x2_operator_equal_wide_wide() + { + int3x2 a0 = int3x2(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228); + int3x2 b0 = int3x2(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x2 a1 = int3x2(1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + int3x2 b1 = int3x2(921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x2 a2 = int3x2(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + int3x2 b2 = int3x2(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x2 a3 = int3x2(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int3x2 b3 = int3x2(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_equal_wide_scalar() + { + int3x2 a0 = int3x2(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310); + int b0 = (746972502); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x2 a1 = int3x2(1733655277, 1682018538, 795585660, 936027116, 927605411, 672785749); + int b1 = (1884008277); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x2 a2 = int3x2(1465584610, 404448210, 969511077, 442746747, 1772925698, 1884034177); + int b2 = (585324157); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x2 a3 = int3x2(451512860, 1370577708, 597010220, 1249636005, 211986678, 1305479811); + int b3 = (425476075); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int3x2 b0 = int3x2(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1971977031); + int3x2 b1 = int3x2(47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1737844479); + int3x2 b2 = int3x2(1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (559824292); + int3x2 b3 = int3x2(1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_not_equal_wide_wide() + { + int3x2 a0 = int3x2(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069); + int3x2 b0 = int3x2(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x2 a1 = int3x2(1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + int3x2 b1 = int3x2(113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x2 a2 = int3x2(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + int3x2 b2 = int3x2(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x2 a3 = int3x2(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int3x2 b3 = int3x2(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_not_equal_wide_scalar() + { + int3x2 a0 = int3x2(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459); + int b0 = (248693828); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x2 a1 = int3x2(950170763, 2105962247, 727205263, 1640688041, 276313906, 2126300423); + int b1 = (238704450); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x2 a2 = int3x2(791998981, 1171827730, 1412347883, 1622176923, 768370497, 1072798259); + int b2 = (2035077187); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x2 a3 = int3x2(1808712713, 1582645163, 1876273820, 90244766, 30493685, 904014575); + int b3 = (1497830076); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int3x2 b0 = int3x2(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (364694471); + int3x2 b1 = int3x2(754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (2100802631); + int3x2 b2 = int3x2(1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1041416160); + int3x2 b3 = int3x2(356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_wide_wide() + { + int3x2 a0 = int3x2(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188); + int3x2 b0 = int3x2(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509); + bool3x2 r0 = bool3x2(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x2 a1 = int3x2(1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + int3x2 b1 = int3x2(1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x2 a2 = int3x2(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + int3x2 b2 = int3x2(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool3x2 r2 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int3x2 a3 = int3x2(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int3x2 b3 = int3x2(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool3x2 r3 = bool3x2(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_wide_scalar() + { + int3x2 a0 = int3x2(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203); + int b0 = (1491216667); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x2 a1 = int3x2(1667165786, 840091491, 469591900, 1247103789, 315321650, 930950514); + int b1 = (1615392341); + bool3x2 r1 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x2 a2 = int3x2(1100560246, 908563901, 1127696709, 1286331950, 380753337, 971148054); + int b2 = (933855388); + bool3x2 r2 = bool3x2(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int3x2 a3 = int3x2(1827886929, 1579735991, 689044913, 1960894027, 371987110, 867559111); + int b3 = (1056649851); + bool3x2 r3 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_scalar_wide() + { + int a0 = (548436837); + int3x2 b0 = int3x2(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (445132446); + int3x2 b1 = int3x2(1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (2098715503); + int3x2 b2 = int3x2(608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (874278078); + int3x2 b3 = int3x2(1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911); + bool3x2 r3 = bool3x2(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_wide_wide() + { + int3x2 a0 = int3x2(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780); + int3x2 b0 = int3x2(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695); + bool3x2 r0 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3x2 a1 = int3x2(241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + int3x2 b1 = int3x2(253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int3x2 a2 = int3x2(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + int3x2 b2 = int3x2(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool3x2 r2 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x2 a3 = int3x2(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int3x2 b3 = int3x2(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_wide_scalar() + { + int3x2 a0 = int3x2(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111); + int b0 = (438688675); + bool3x2 r0 = bool3x2(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3x2 a1 = int3x2(1437755186, 2125058448, 304028799, 893125636, 48044515, 711945018); + int b1 = (1219010035); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int3x2 a2 = int3x2(1035679270, 572743717, 1016617211, 2063134811, 1577403353, 64009107); + int b2 = (577943770); + bool3x2 r2 = bool3x2(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x2 a3 = int3x2(1462961460, 3715845, 689362811, 263973424, 1045140419, 1058332184); + int b3 = (1143565920); + bool3x2 r3 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int3x2 b0 = int3x2(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1443698859); + int3x2 b1 = int3x2(779217735, 691047512, 741776730, 732565983, 668302204, 1556466996); + bool3x2 r1 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (858599525); + int3x2 b2 = int3x2(1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345); + bool3x2 r2 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (299897686); + int3x2 b3 = int3x2(632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_equal_wide_wide() + { + int3x2 a0 = int3x2(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140); + int3x2 b0 = int3x2(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830); + bool3x2 r0 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x2 a1 = int3x2(1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + int3x2 b1 = int3x2(1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool3x2 r1 = bool3x2(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x2 a2 = int3x2(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + int3x2 b2 = int3x2(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool3x2 r2 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x2 a3 = int3x2(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int3x2 b3 = int3x2(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_equal_wide_scalar() + { + int3x2 a0 = int3x2(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951); + int b0 = (1688048545); + bool3x2 r0 = bool3x2(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x2 a1 = int3x2(212084836, 1459242706, 1745758438, 532949158, 262559763, 690091301); + int b1 = (58924407); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x2 a2 = int3x2(1806172431, 1857173043, 1617221948, 2017733017, 804204255, 981729559); + int b2 = (2091514001); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x2 a3 = int3x2(2032949254, 2079225209, 26179915, 238796519, 1917813750, 1258115260); + int b3 = (910922522); + bool3x2 r3 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int3x2 b0 = int3x2(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1678863148); + int3x2 b1 = int3x2(1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493); + bool3x2 r1 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (48893340); + int3x2 b2 = int3x2(66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (117849810); + int3x2 b3 = int3x2(1348693584, 105489302, 259034238, 530713566, 601413850, 830430286); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_equal_wide_wide() + { + int3x2 a0 = int3x2(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687); + int3x2 b0 = int3x2(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472); + bool3x2 r0 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x2 a1 = int3x2(816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + int3x2 b1 = int3x2(290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x2 a2 = int3x2(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + int3x2 b2 = int3x2(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool3x2 r2 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x2 a3 = int3x2(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int3x2 b3 = int3x2(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool3x2 r3 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_equal_wide_scalar() + { + int3x2 a0 = int3x2(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132); + int b0 = (1470533736); + bool3x2 r0 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x2 a1 = int3x2(1186600258, 609211196, 1604309397, 829548642, 244604867, 1419295004); + int b1 = (815093894); + bool3x2 r1 = bool3x2(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x2 a2 = int3x2(471843809, 1460027917, 1646290021, 196833647, 1596738181, 1905036391); + int b2 = (1819986195); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x2 a3 = int3x2(1771391775, 370941146, 440219668, 1607345862, 1449142607, 1223010129); + int b3 = (1584946560); + bool3x2 r3 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int3x2 b0 = int3x2(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (118252990); + int3x2 b1 = int3x2(1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (917376832); + int3x2 b2 = int3x2(303549425, 2111728811, 945321577, 173706579, 625318949, 519443238); + bool3x2 r2 = bool3x2(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (1583588379); + int3x2 b3 = int3x2(1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_add_wide_wide() + { + int3x2 a0 = int3x2(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558); + int3x2 b0 = int3x2(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874); + int3x2 r0 = int3x2(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864); + TestUtils.AreEqual(a0 + b0, r0); + + int3x2 a1 = int3x2(86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + int3x2 b1 = int3x2(1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + int3x2 r1 = int3x2(1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a1 + b1, r1); + + int3x2 a2 = int3x2(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + int3x2 b2 = int3x2(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + int3x2 r2 = int3x2(-147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136); + TestUtils.AreEqual(a2 + b2, r2); + + int3x2 a3 = int3x2(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int3x2 b3 = int3x2(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int3x2 r3 = int3x2(1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_add_wide_scalar() + { + int3x2 a0 = int3x2(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871); + int b0 = (2124409227); + int3x2 r0 = int3x2(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198); + TestUtils.AreEqual(a0 + b0, r0); + + int3x2 a1 = int3x2(1067888129, 2003021861, 1635971971, 1160398286, 85446202, 1068152966); + int b1 = (70433301); + int3x2 r1 = int3x2(1138321430, 2073455162, 1706405272, 1230831587, 155879503, 1138586267); + TestUtils.AreEqual(a1 + b1, r1); + + int3x2 a2 = int3x2(1239387100, 1727477485, 1095438654, 756559204, 1818718931, 658923552); + int b2 = (1497676888); + int3x2 r2 = int3x2(-1557903308, -1069812923, -1701851754, -2040731204, -978571477, -2138366856); + TestUtils.AreEqual(a2 + b2, r2); + + int3x2 a3 = int3x2(1610518921, 692843300, 1068593469, 1704776233, 577782260, 736972565); + int b3 = (1585755398); + int3x2 r3 = int3x2(-1098692977, -2016368598, -1640618429, -1004435665, -2131429638, -1972239333); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_add_scalar_wide() + { + int a0 = (391092078); + int3x2 b0 = int3x2(519908870, 851424292, 328314822, 135622204, 740923360, 655394201); + int3x2 r0 = int3x2(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (1451896269); + int3x2 b1 = int3x2(1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445); + int3x2 r1 = int3x2(-1061373955, -1847039202, -1285296078, -2063296087, -1731529725, -2060024582); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1130163944); + int3x2 b2 = int3x2(288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965); + int3x2 r2 = int3x2(1418443528, -1767119491, -1528219863, 1803427283, -1695502478, 1145019909); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1116636999); + int3x2 b3 = int3x2(1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835); + int3x2 r3 = int3x2(-1689466997, -1577339411, 1307288300, -1870870529, 2036722838, -1096100462); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_sub_wide_wide() + { + int3x2 a0 = int3x2(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435); + int3x2 b0 = int3x2(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701); + int3x2 r0 = int3x2(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734); + TestUtils.AreEqual(a0 - b0, r0); + + int3x2 a1 = int3x2(1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + int3x2 b1 = int3x2(810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + int3x2 r1 = int3x2(570660497, -136914747, 1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a1 - b1, r1); + + int3x2 a2 = int3x2(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + int3x2 b2 = int3x2(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + int3x2 r2 = int3x2(-50205903, -930193352, 120810088, 929308315, -624402009, -165899077); + TestUtils.AreEqual(a2 - b2, r2); + + int3x2 a3 = int3x2(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int3x2 b3 = int3x2(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int3x2 r3 = int3x2(-728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_sub_wide_scalar() + { + int3x2 a0 = int3x2(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714); + int b0 = (462232403); + int3x2 r0 = int3x2(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311); + TestUtils.AreEqual(a0 - b0, r0); + + int3x2 a1 = int3x2(1502312334, 281174200, 87530840, 1913724431, 2041593336, 557239990); + int b1 = (1451794815); + int3x2 r1 = int3x2(50517519, -1170620615, -1364263975, 461929616, 589798521, -894554825); + TestUtils.AreEqual(a1 - b1, r1); + + int3x2 a2 = int3x2(1119051448, 819090189, 816382635, 815920639, 1829033117, 1792801932); + int b2 = (1590376732); + int3x2 r2 = int3x2(-471325284, -771286543, -773994097, -774456093, 238656385, 202425200); + TestUtils.AreEqual(a2 - b2, r2); + + int3x2 a3 = int3x2(1113440549, 1277257189, 2092779398, 642236742, 1605250794, 819644478); + int b3 = (1418937976); + int3x2 r3 = int3x2(-305497427, -141680787, 673841422, -776701234, 186312818, -599293498); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int3x2 b0 = int3x2(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538); + int3x2 r0 = int3x2(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (939035482); + int3x2 b1 = int3x2(935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109); + int3x2 r1 = int3x2(3793205, -850264939, 674322589, -292820585, -879077266, -489400627); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1258745460); + int3x2 b2 = int3x2(1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918); + int3x2 r2 = int3x2(181365064, -71977259, 740633631, 291616931, 914079206, 176477542); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (907866696); + int3x2 b3 = int3x2(1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777); + int3x2 r3 = int3x2(-909018427, 447526128, -54287802, 350753235, -793350013, -1072232081); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mul_wide_wide() + { + int3x2 a0 = int3x2(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440); + int3x2 b0 = int3x2(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665); + int3x2 r0 = int3x2(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648); + TestUtils.AreEqual(a0 * b0, r0); + + int3x2 a1 = int3x2(2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + int3x2 b1 = int3x2(1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + int3x2 r1 = int3x2(2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a1 * b1, r1); + + int3x2 a2 = int3x2(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + int3x2 b2 = int3x2(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + int3x2 r2 = int3x2(990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a2 * b2, r2); + + int3x2 a3 = int3x2(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int3x2 b3 = int3x2(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int3x2 r3 = int3x2(1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mul_wide_scalar() + { + int3x2 a0 = int3x2(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909); + int b0 = (1476837906); + int3x2 r0 = int3x2(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182); + TestUtils.AreEqual(a0 * b0, r0); + + int3x2 a1 = int3x2(72749215, 975743632, 573770299, 1958912969, 971327747, 1818877398); + int b1 = (154616909); + int3x2 r1 = int3x2(1400257491, 7966032, 499040191, 322676597, 469811687, -373386914); + TestUtils.AreEqual(a1 * b1, r1); + + int3x2 a2 = int3x2(1324050764, 1279757657, 391009467, 1186856590, 890343818, 800117742); + int b2 = (660611671); + int3x2 r2 = int3x2(645718228, -42542273, -1778409075, 1570790978, -133379610, 1820172770); + TestUtils.AreEqual(a2 * b2, r2); + + int3x2 a3 = int3x2(606927173, 1688964615, 1439447294, 387721300, 1192501703, 1613845584); + int b3 = (1338014500); + int3x2 r3 = int3x2(-254331724, 1134384636, 1352273336, -229242928, 1766808828, 645024576); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mul_scalar_wide() + { + int a0 = (99541948); + int3x2 b0 = int3x2(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654); + int3x2 r0 = int3x2(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1408757883); + int3x2 b1 = int3x2(335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231); + int3x2 r1 = int3x2(1223039806, 1995624689, -974691120, 375843636, 858017565, 2027534157); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1336308795); + int3x2 b2 = int3x2(517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700); + int3x2 r2 = int3x2(580046269, -997870016, -325015397, 831291671, -1034573003, -1254339924); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (677771573); + int3x2 b3 = int3x2(2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236); + int3x2 r3 = int3x2(-125843839, 1435043573, 698030233, 9173379, -824638806, 113055164); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_div_wide_wide() + { + int3x2 a0 = int3x2(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154); + int3x2 b0 = int3x2(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613); + int3x2 r0 = int3x2(1, 0, 0, 8, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3x2 a1 = int3x2(1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + int3x2 b1 = int3x2(878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + int3x2 r1 = int3x2(2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3x2 a2 = int3x2(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + int3x2 b2 = int3x2(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + int3x2 r2 = int3x2(0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a2 / b2, r2); + + int3x2 a3 = int3x2(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int3x2 b3 = int3x2(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int3x2 r3 = int3x2(0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_div_wide_scalar() + { + int3x2 a0 = int3x2(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408); + int b0 = (947861580); + int3x2 r0 = int3x2(0, 1, 0, 1, 2, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int3x2 a1 = int3x2(1349573078, 341995568, 495895326, 1515313790, 1676971657, 2131487088); + int b1 = (524526253); + int3x2 r1 = int3x2(2, 0, 0, 2, 3, 4); + TestUtils.AreEqual(a1 / b1, r1); + + int3x2 a2 = int3x2(2105094094, 542666029, 1646044372, 1447236569, 107215658, 19616726); + int b2 = (1017891310); + int3x2 r2 = int3x2(2, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int3x2 a3 = int3x2(896899915, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864); + int b3 = (707389627); + int3x2 r3 = int3x2(1, 1, 2, 2, 2, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_div_scalar_wide() + { + int a0 = (1161272038); + int3x2 b0 = int3x2(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283); + int3x2 r0 = int3x2(6, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1773486938); + int3x2 b1 = int3x2(1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637); + int3x2 r1 = int3x2(1, 21, 1, 2, 38, 2); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (396671391); + int3x2 b2 = int3x2(784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453); + int3x2 r2 = int3x2(0, 0, 0, 0, 1, 8); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (1796936382); + int3x2 b3 = int3x2(1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083); + int3x2 r3 = int3x2(1, 1, 0, 2, 1, 5); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mod_wide_wide() + { + int3x2 a0 = int3x2(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460); + int3x2 b0 = int3x2(983050390, 771341152, 942375212, 367361754, 749500619, 750718852); + int3x2 r0 = int3x2(146150818, 303861001, 129072544, 308965362, 659881575, 251646608); + TestUtils.AreEqual(a0 % b0, r0); + + int3x2 a1 = int3x2(861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + int3x2 b1 = int3x2(2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + int3x2 r1 = int3x2(861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a1 % b1, r1); + + int3x2 a2 = int3x2(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + int3x2 b2 = int3x2(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + int3x2 r2 = int3x2(137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a2 % b2, r2); + + int3x2 a3 = int3x2(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int3x2 b3 = int3x2(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int3x2 r3 = int3x2(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mod_wide_scalar() + { + int3x2 a0 = int3x2(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208); + int b0 = (883951171); + int3x2 r0 = int3x2(164800505, 178226657, 130847333, 817702147, 820393245, 19002208); + TestUtils.AreEqual(a0 % b0, r0); + + int3x2 a1 = int3x2(128329633, 896587769, 405208598, 1982762194, 959236935, 712321026); + int b1 = (1464010899); + int3x2 r1 = int3x2(128329633, 896587769, 405208598, 518751295, 959236935, 712321026); + TestUtils.AreEqual(a1 % b1, r1); + + int3x2 a2 = int3x2(172564850, 1085897743, 1607489717, 165478511, 647846716, 915707999); + int b2 = (1540068445); + int3x2 r2 = int3x2(172564850, 1085897743, 67421272, 165478511, 647846716, 915707999); + TestUtils.AreEqual(a2 % b2, r2); + + int3x2 a3 = int3x2(1602830401, 1084934806, 488509689, 2087820912, 377501313, 1778384846); + int b3 = (928191283); + int3x2 r3 = int3x2(674639118, 156743523, 488509689, 231438346, 377501313, 850193563); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mod_scalar_wide() + { + int a0 = (242383789); + int3x2 b0 = int3x2(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038); + int3x2 r0 = int3x2(242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1906405167); + int3x2 b1 = int3x2(247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643); + int3x2 r1 = int3x2(172552312, 145641729, 411110001, 159757961, 314361468, 608302524); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (2057984657); + int3x2 b2 = int3x2(1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997); + int3x2 r2 = int3x2(56500475, 596612526, 198242315, 463615283, 414206973, 974791660); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (840114986); + int3x2 b3 = int3x2(1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061); + int3x2 r3 = int3x2(840114986, 224955022, 840114986, 217454, 840114986, 17224681); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_plus() + { + int3x2 a0 = int3x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + int3x2 r0 = int3x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + TestUtils.AreEqual(+a0, r0); + + int3x2 a1 = int3x2(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + int3x2 r1 = int3x2(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + TestUtils.AreEqual(+a1, r1); + + int3x2 a2 = int3x2(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + int3x2 r2 = int3x2(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + TestUtils.AreEqual(+a2, r2); + + int3x2 a3 = int3x2(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + int3x2 r3 = int3x2(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int3x2_operator_neg() + { + int3x2 a0 = int3x2(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593); + int3x2 r0 = int3x2(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593); + TestUtils.AreEqual(-a0, r0); + + int3x2 a1 = int3x2(33894270, 1115028238, 1636274969, 694995093, 1542206286, 213087293); + int3x2 r1 = int3x2(-33894270, -1115028238, -1636274969, -694995093, -1542206286, -213087293); + TestUtils.AreEqual(-a1, r1); + + int3x2 a2 = int3x2(243937487, 841085242, 574159094, 1687250035, 2057919693, 1175014732); + int3x2 r2 = int3x2(-243937487, -841085242, -574159094, -1687250035, -2057919693, -1175014732); + TestUtils.AreEqual(-a2, r2); + + int3x2 a3 = int3x2(1259809073, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454); + int3x2 r3 = int3x2(-1259809073, -1190569920, -2047955772, -2120729864, -1440774928, -1485596454); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int3x2_operator_prefix_inc() + { + int3x2 a0 = int3x2(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725); + int3x2 r0 = int3x2(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726); + TestUtils.AreEqual(++a0, r0); + + int3x2 a1 = int3x2(395072276, 913293639, 432884105, 1208161871, 1385544935, 1835605516); + int3x2 r1 = int3x2(395072277, 913293640, 432884106, 1208161872, 1385544936, 1835605517); + TestUtils.AreEqual(++a1, r1); + + int3x2 a2 = int3x2(831396561, 696475402, 1786514683, 993189311, 752093909, 1622410417); + int3x2 r2 = int3x2(831396562, 696475403, 1786514684, 993189312, 752093910, 1622410418); + TestUtils.AreEqual(++a2, r2); + + int3x2 a3 = int3x2(1398865015, 1705625817, 609525897, 172599489, 504806865, 519296647); + int3x2 r3 = int3x2(1398865016, 1705625818, 609525898, 172599490, 504806866, 519296648); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int3x2_operator_postfix_inc() + { + int3x2 a0 = int3x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + int3x2 r0 = int3x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + TestUtils.AreEqual(a0++, r0); + + int3x2 a1 = int3x2(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + int3x2 r1 = int3x2(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + TestUtils.AreEqual(a1++, r1); + + int3x2 a2 = int3x2(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + int3x2 r2 = int3x2(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + TestUtils.AreEqual(a2++, r2); + + int3x2 a3 = int3x2(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + int3x2 r3 = int3x2(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int3x2_operator_prefix_dec() + { + int3x2 a0 = int3x2(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037); + int3x2 r0 = int3x2(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036); + TestUtils.AreEqual(--a0, r0); + + int3x2 a1 = int3x2(1782514098, 1434377580, 596759698, 1699290403, 1758478358, 1914114460); + int3x2 r1 = int3x2(1782514097, 1434377579, 596759697, 1699290402, 1758478357, 1914114459); + TestUtils.AreEqual(--a1, r1); + + int3x2 a2 = int3x2(71237375, 1022184392, 1310293956, 356565557, 18299409, 906734601); + int3x2 r2 = int3x2(71237374, 1022184391, 1310293955, 356565556, 18299408, 906734600); + TestUtils.AreEqual(--a2, r2); + + int3x2 a3 = int3x2(799006218, 1040798388, 1469596990, 1719228297, 220897829, 1454322707); + int3x2 r3 = int3x2(799006217, 1040798387, 1469596989, 1719228296, 220897828, 1454322706); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int3x2_operator_postfix_dec() + { + int3x2 a0 = int3x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + int3x2 r0 = int3x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + TestUtils.AreEqual(a0--, r0); + + int3x2 a1 = int3x2(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + int3x2 r1 = int3x2(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + TestUtils.AreEqual(a1--, r1); + + int3x2 a2 = int3x2(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + int3x2 r2 = int3x2(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + TestUtils.AreEqual(a2--, r2); + + int3x2 a3 = int3x2(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + int3x2 r3 = int3x2(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_and_wide_wide() + { + int3x2 a0 = int3x2(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558); + int3x2 b0 = int3x2(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877); + int3x2 r0 = int3x2(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636); + TestUtils.AreEqual(a0 & b0, r0); + + int3x2 a1 = int3x2(1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + int3x2 b1 = int3x2(1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + int3x2 r1 = int3x2(1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a1 & b1, r1); + + int3x2 a2 = int3x2(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + int3x2 b2 = int3x2(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + int3x2 r2 = int3x2(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a2 & b2, r2); + + int3x2 a3 = int3x2(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int3x2 b3 = int3x2(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int3x2 r3 = int3x2(168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_and_wide_scalar() + { + int3x2 a0 = int3x2(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004); + int b0 = (93423598); + int3x2 r0 = int3x2(1114348, 85033216, 26281518, 8488942, 25232710, 67176356); + TestUtils.AreEqual(a0 & b0, r0); + + int3x2 a1 = int3x2(1941875181, 1365509729, 428270198, 607982857, 650270920, 1249238550); + int b1 = (1236735839); + int3x2 r1 = int3x2(1102446925, 1092879937, 159777366, 3478793, 8523848, 1211438614); + TestUtils.AreEqual(a1 & b1, r1); + + int3x2 a2 = int3x2(814629680, 143502472, 861733033, 1408932942, 957693145, 1567715668); + int b2 = (1862276471); + int3x2 r2 = int3x2(536871216, 134218752, 587202593, 1124078662, 687871057, 1291850068); + TestUtils.AreEqual(a2 & b2, r2); + + int3x2 a3 = int3x2(1102952410, 1599352836, 208656708, 1272226025, 462670926, 1817145060); + int b3 = (322053683); + int3x2 r3 = int3x2(19932690, 319823872, 2228224, 51388449, 319947778, 140832); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int3x2 b0 = int3x2(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958); + int3x2 r0 = int3x2(547170, 18752, 1074284806, 1140867104, 3672064, 3168358); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1159378889); + int3x2 b1 = int3x2(2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957); + int3x2 r1 = int3x2(1091605257, 1074836865, 9161, 1074299840, 83924360, 1092133121); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1248975349); + int3x2 b2 = int3x2(236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522); + int3x2 r2 = int3x2(168903041, 167844145, 1075925380, 1241581744, 140613985, 1074872496); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (2042776519); + int3x2 b3 = int3x2(56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404); + int3x2 r3 = int3x2(21118982, 1770146496, 1769996867, 1371555910, 1229064577, 1212170948); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_or_wide_wide() + { + int3x2 a0 = int3x2(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514); + int3x2 b0 = int3x2(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212); + int3x2 r0 = int3x2(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a0 | b0, r0); + + int3x2 a1 = int3x2(948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + int3x2 b1 = int3x2(2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + int3x2 r1 = int3x2(2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a1 | b1, r1); + + int3x2 a2 = int3x2(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + int3x2 b2 = int3x2(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + int3x2 r2 = int3x2(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a2 | b2, r2); + + int3x2 a3 = int3x2(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int3x2 b3 = int3x2(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int3x2 r3 = int3x2(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_or_wide_scalar() + { + int3x2 a0 = int3x2(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449); + int b0 = (1666102508); + int3x2 r0 = int3x2(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269); + TestUtils.AreEqual(a0 | b0, r0); + + int3x2 a1 = int3x2(1048929715, 860336789, 1637162093, 1227888278, 774029856, 879300408); + int b1 = (1814263250); + int3x2 r1 = int3x2(2124903923, 2137520087, 1840741887, 1832089558, 1847850994, 2087419898); + TestUtils.AreEqual(a1 | b1, r1); + + int3x2 a2 = int3x2(1179087439, 1977614655, 46921989, 1980838747, 284225881, 64304104); + int b2 = (797240690); + int3x2 r2 = int3x2(1875378047, 2145709439, 802159991, 2140536699, 1073020283, 802553850); + TestUtils.AreEqual(a2 | b2, r2); + + int3x2 a3 = int3x2(313591807, 1890090886, 521303722, 2021379070, 2055963359, 1511253082); + int b3 = (1393862490); + int3x2 r3 = int3x2(1404413951, 1941766110, 1595340794, 2071982078, 2074060767, 1528293210); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int3x2 b0 = int3x2(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481); + int3x2 r0 = int3x2(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1283571271); + int3x2 b1 = int3x2(2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741); + int3x2 r1 = int3x2(2109210439, 2128723919, 1558052575, 1608908663, 1838415447, 2141322991); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (627815046); + int3x2 b2 = int3x2(418822515, 83214352, 424663473, 447949225, 527022375, 1947148461); + int3x2 r2 = int3x2(1040169975, 637530774, 1030749111, 1073462191, 1064024999, 1970254511); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (305251437); + int3x2 b3 = int3x2(1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808); + int3x2 r3 = int3x2(1526199917, 2054417661, 1593566973, 1589235437, 1391839215, 335281389); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_xor_wide_wide() + { + int3x2 a0 = int3x2(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585); + int3x2 b0 = int3x2(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205); + int3x2 r0 = int3x2(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x2 a1 = int3x2(220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + int3x2 b1 = int3x2(535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + int3x2 r1 = int3x2(314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x2 a2 = int3x2(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + int3x2 b2 = int3x2(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + int3x2 r2 = int3x2(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x2 a3 = int3x2(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int3x2 b3 = int3x2(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int3x2 r3 = int3x2(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_xor_wide_scalar() + { + int3x2 a0 = int3x2(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690); + int b0 = (493665894); + int3x2 r0 = int3x2(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x2 a1 = int3x2(535061373, 1305234431, 353786540, 1308626970, 1267729267, 125659640); + int b1 = (289301586); + int3x2 r1 = int3x2(249169711, 1559375789, 69746430, 1597928520, 1521379105, 373493162); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x2 a2 = int3x2(1315625690, 116862046, 375757978, 491079274, 191750702, 187129429); + int b2 = (1730088797); + int3x2 r2 = int3x2(695588231, 1642603267, 1903858631, 2052737335, 1819471219, 1815630088); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x2 a3 = int3x2(967051293, 653124416, 788984, 1479174924, 1680011736, 447453839); + int b3 = (549951551); + int3x2 r3 = int3x2(425955362, 103447423, 550212039, 2028860211, 1155885543, 980157104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int3x2 b0 = int3x2(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275); + int3x2 r0 = int3x2(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1416249064); + int3x2 b1 = int3x2(1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003); + int3x2 r1 = int3x2(442541185, 1037166305, 227827390, 327742460, 280796832, 544217587); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1774252400); + int3x2 b2 = int3x2(1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053); + int3x2 r2 = int3x2(440379266, 698081028, 2022864761, 1000608691, 1580745115, 667852101); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (221134131); + int3x2 b3 = int3x2(885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520); + int3x2 r3 = int3x2(971170309, 693458543, 113181510, 1584258954, 790500762, 1630705027); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_left_shift() + { + int3x2 a0 = int3x2(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717); + int b0 = (1321149625); + int3x2 r0 = int3x2(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752); + TestUtils.AreEqual(a0 << b0, r0); + + int3x2 a1 = int3x2(870301196, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302); + int b1 = (2058433484); + int3x2 r1 = int3x2(-69156864, 306012160, -1482059776, 20340736, -1775935488, -1561206784); + TestUtils.AreEqual(a1 << b1, r1); + + int3x2 a2 = int3x2(1079614371, 1664454606, 2045594989, 2077023268, 592678686, 297755411); + int b2 = (35667343); + int3x2 r2 = int3x2(-841908224, -941162496, -1497989120, 1846673408, -946929664, -1316388864); + TestUtils.AreEqual(a2 << b2, r2); + + int3x2 a3 = int3x2(1722762487, 37265945, 997793693, 1521705181, 263886278, 221147365); + int b3 = (1161625759); + int3x2 r3 = int3x2(-2147483648, -2147483648, -2147483648, -2147483648, 0, -2147483648); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_right_shift() + { + int3x2 a0 = int3x2(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656); + int b0 = (1266801540); + int3x2 r0 = int3x2(34260456, 72583643, 101101614, 116295740, 44622419, 12284541); + TestUtils.AreEqual(a0 >> b0, r0); + + int3x2 a1 = int3x2(770466193, 572763124, 506619530, 426807581, 2031319045, 701927980); + int b1 = (1265099998); + int3x2 r1 = int3x2(0, 0, 0, 0, 1, 0); + TestUtils.AreEqual(a1 >> b1, r1); + + int3x2 a2 = int3x2(917785020, 185593382, 1102123711, 334005460, 1624751550, 280138733); + int b2 = (569504877); + int3x2 r2 = int3x2(112034, 22655, 134536, 40772, 198333, 34196); + TestUtils.AreEqual(a2 >> b2, r2); + + int3x2 a3 = int3x2(1598620011, 736389149, 1279158873, 408822762, 763607760, 348013684); + int b3 = (1840564178); + int3x2 r3 = int3x2(6098, 2809, 4879, 1559, 2912, 1327); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_not() + { + int3x2 a0 = int3x2(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339); + int3x2 r0 = int3x2(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340); + TestUtils.AreEqual(~a0, r0); + + int3x2 a1 = int3x2(1935567517, 472965491, 771711426, 627580960, 2061524024, 753208488); + int3x2 r1 = int3x2(-1935567518, -472965492, -771711427, -627580961, -2061524025, -753208489); + TestUtils.AreEqual(~a1, r1); + + int3x2 a2 = int3x2(2097179283, 664744603, 1289372466, 1635981125, 1951018596, 1545651937); + int3x2 r2 = int3x2(-2097179284, -664744604, -1289372467, -1635981126, -1951018597, -1545651938); + TestUtils.AreEqual(~a2, r2); + + int3x2 a3 = int3x2(717936457, 1342785385, 869629475, 2045854321, 1282546942, 1562433528); + int3x2 r3 = int3x2(-717936458, -1342785386, -869629476, -2045854322, -1282546943, -1562433529); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x2.gen.cs.meta new file mode 100644 index 0000000..d34b6df --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a70be02e3e9e4764494cdb824f94da34 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x3.gen.cs new file mode 100644 index 0000000..b42ba49 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x3.gen.cs @@ -0,0 +1,1244 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt3x3 + { + [TestCompiler] + public static void int3x3_zero() + { + TestUtils.AreEqual(int3x3.zero.c0.x, 0); + TestUtils.AreEqual(int3x3.zero.c0.y, 0); + TestUtils.AreEqual(int3x3.zero.c0.z, 0); + TestUtils.AreEqual(int3x3.zero.c1.x, 0); + TestUtils.AreEqual(int3x3.zero.c1.y, 0); + TestUtils.AreEqual(int3x3.zero.c1.z, 0); + TestUtils.AreEqual(int3x3.zero.c2.x, 0); + TestUtils.AreEqual(int3x3.zero.c2.y, 0); + TestUtils.AreEqual(int3x3.zero.c2.z, 0); + } + + [TestCompiler] + public static void int3x3_identity() + { + TestUtils.AreEqual(int3x3.identity.c0.x, 1); + TestUtils.AreEqual(int3x3.identity.c0.y, 0); + TestUtils.AreEqual(int3x3.identity.c0.z, 0); + TestUtils.AreEqual(int3x3.identity.c1.x, 0); + TestUtils.AreEqual(int3x3.identity.c1.y, 1); + TestUtils.AreEqual(int3x3.identity.c1.z, 0); + TestUtils.AreEqual(int3x3.identity.c2.x, 0); + TestUtils.AreEqual(int3x3.identity.c2.y, 0); + TestUtils.AreEqual(int3x3.identity.c2.z, 1); + } + + [TestCompiler] + public static void int3x3_operator_equal_wide_wide() + { + int3x3 a0 = int3x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268); + int3x3 b0 = int3x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x3 a1 = int3x3(1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + int3x3 b1 = int3x3(2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x3 a2 = int3x3(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509, 1025529486, 2095601864, 193500113); + int3x3 b2 = int3x3(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580, 708665810, 1902328998, 1808456602); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x3 a3 = int3x3(1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + int3x3 b3 = int3x3(563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_equal_wide_scalar() + { + int3x3 a0 = int3x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538); + int b0 = (746972502); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x3 a1 = int3x3(795585660, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077, 442746747, 1772925698); + int b1 = (936027116); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x3 a2 = int3x3(1884034177, 425476075, 1370577708, 597010220, 1249636005, 211986678, 1305479811, 255635293, 1150443719); + int b2 = (451512860); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x3 a3 = int3x3(177122433, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291, 872759249); + int b3 = (511346787); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int3x3 b0 = int3x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1009011238); + int3x3 b1 = int3x3(312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (534746610); + int3x3 b2 = int3x3(559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403, 1839429063, 223575614); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (79701214); + int3x3 b3 = int3x3(1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415, 1576985758); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_not_equal_wide_wide() + { + int3x3 a0 = int3x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135); + int3x3 b0 = int3x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x3 a1 = int3x3(1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + int3x3 b1 = int3x3(1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x3 a2 = int3x3(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890, 922313145, 2006448607, 1574579050); + int3x3 b2 = int3x3(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634, 1944210269, 92849031, 164029425); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x3 a3 = int3x3(1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + int3x3 b3 = int3x3(628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_not_equal_wide_scalar() + { + int3x3 a0 = int3x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247); + int b0 = (248693828); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x3 a1 = int3x3(727205263, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883, 1622176923, 768370497); + int b1 = (1640688041); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x3 a2 = int3x3(1072798259, 1497830076, 1582645163, 1876273820, 90244766, 30493685, 904014575, 384643370, 11554610); + int b2 = (1808712713); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x3 a3 = int3x3(2016093187, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113, 765258490); + int b3 = (1515760622); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int3x3 b0 = int3x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (1512967900); + int3x3 b1 = int3x3(1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (1826089250); + int3x3 b2 = int3x3(1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024, 1936481966, 1366859342); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1775285431); + int3x3 b3 = int3x3(604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666, 358894860); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_wide_wide() + { + int3x3 a0 = int3x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233); + int3x3 b0 = int3x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337); + bool3x3 r0 = bool3x3(false, true, false, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x3 a1 = int3x3(789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + int3x3 b1 = int3x3(1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool3x3 r1 = bool3x3(true, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x3 a2 = int3x3(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162, 1638101724, 2044698552, 1543260981); + int3x3 b2 = int3x3(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133, 271967348, 1601249324, 1373999400); + bool3x3 r2 = bool3x3(true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int3x3 a3 = int3x3(471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + int3x3 b3 = int3x3(1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool3x3 r3 = bool3x3(true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_wide_scalar() + { + int3x3 a0 = int3x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491); + int b0 = (1491216667); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x3 a1 = int3x3(469591900, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709, 1286331950, 380753337); + int b1 = (1247103789); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x3 a2 = int3x3(971148054, 1056649851, 1579735991, 689044913, 1960894027, 371987110, 867559111, 1703747625, 1698536333); + int b2 = (1827886929); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int3x3 a3 = int3x3(41716206, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606, 1891059504); + int b3 = (243673862); + bool3x3 r3 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_scalar_wide() + { + int a0 = (548436837); + int3x3 b0 = int3x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1102440676); + int3x3 b1 = int3x3(112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (358911716); + int3x3 b2 = int3x3(874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911, 1276652605, 593690439); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (771851138); + int3x3 b3 = int3x3(590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916, 168788814); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_wide_wide() + { + int3x3 a0 = int3x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537); + int3x3 b0 = int3x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808); + bool3x3 r0 = bool3x3(true, true, false, true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3x3 a1 = int3x3(1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + int3x3 b1 = int3x3(976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int3x3 a2 = int3x3(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622, 1295065160, 715285504, 1130323487); + int3x3 b2 = int3x3(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265, 335209251, 1094341422, 1465325455); + bool3x3 r2 = bool3x3(false, false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x3 a3 = int3x3(677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + int3x3 b3 = int3x3(390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool3x3 r3 = bool3x3(true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_wide_scalar() + { + int3x3 a0 = int3x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448); + int b0 = (438688675); + bool3x3 r0 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3x3 a1 = int3x3(304028799, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211, 2063134811, 1577403353); + int b1 = (893125636); + bool3x3 r1 = bool3x3(false, false, false, true, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int3x3 a2 = int3x3(64009107, 1143565920, 3715845, 689362811, 263973424, 1045140419, 1058332184, 524569092, 1183316983); + int b2 = (1462961460); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x3 a3 = int3x3(1107974092, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732, 1284938191); + int b3 = (212839726); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int3x3 b0 = int3x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (741776730); + int3x3 b1 = int3x3(732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1858177345); + int3x3 b2 = int3x3(299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296, 292652611, 1002628348); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (927789921); + int3x3 b3 = int3x3(108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261, 267985383); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_equal_wide_wide() + { + int3x3 a0 = int3x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003); + int3x3 b0 = int3x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766); + bool3x3 r0 = bool3x3(false, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x3 a1 = int3x3(1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + int3x3 b1 = int3x3(1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool3x3 r1 = bool3x3(false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x3 a2 = int3x3(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884, 912169992, 1992682021, 1619593455); + int3x3 b2 = int3x3(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017, 620752145, 1213693681, 1281818305); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x3 a3 = int3x3(1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + int3x3 b3 = int3x3(1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool3x3 r3 = bool3x3(false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_equal_wide_scalar() + { + int3x3 a0 = int3x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706); + int b0 = (1688048545); + bool3x3 r0 = bool3x3(false, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x3 a1 = int3x3(1745758438, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948, 2017733017, 804204255); + int b1 = (532949158); + bool3x3 r1 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x3 a2 = int3x3(981729559, 910922522, 2079225209, 26179915, 238796519, 1917813750, 1258115260, 20607406, 1337879822); + int b2 = (2032949254); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x3 a3 = int3x3(959460446, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244, 426908235); + int b3 = (1599429457); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int3x3 b0 = int3x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (11953554); + int3x3 b1 = int3x3(1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (957887737); + int3x3 b2 = int3x3(117849810, 1348693584, 105489302, 259034238, 530713566, 601413850, 830430286, 145552297, 1697295044); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (1150680564); + int3x3 b3 = int3x3(2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260, 733876180); + bool3x3 r3 = bool3x3(true, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_equal_wide_wide() + { + int3x3 a0 = int3x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730); + int3x3 b0 = int3x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580); + bool3x3 r0 = bool3x3(false, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x3 a1 = int3x3(1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + int3x3 b1 = int3x3(1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x3 a2 = int3x3(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474, 605043041, 1707339660, 2038122892); + int3x3 b2 = int3x3(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253, 2025187918, 750755999, 869709740); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x3 a3 = int3x3(345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + int3x3 b3 = int3x3(1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool3x3 r3 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_equal_wide_scalar() + { + int3x3 a0 = int3x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196); + int b0 = (1470533736); + bool3x3 r0 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x3 a1 = int3x3(1604309397, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021, 196833647, 1596738181); + int b1 = (829548642); + bool3x3 r1 = bool3x3(true, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x3 a2 = int3x3(1905036391, 1584946560, 370941146, 440219668, 1607345862, 1449142607, 1223010129, 379014762, 1719435169); + int b2 = (1771391775); + bool3x3 r2 = bool3x3(true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x3 a3 = int3x3(258833609, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895, 192092521); + int b3 = (1389585003); + bool3x3 r3 = bool3x3(false, false, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int3x3 b0 = int3x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1947039008); + int3x3 b1 = int3x3(1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577, 173706579, 625318949); + bool3x3 r1 = bool3x3(true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (519443238); + int3x3 b2 = int3x3(1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308, 479913036, 984991199); + bool3x3 r2 = bool3x3(false, false, false, true, false, false, true, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (172993285); + int3x3 b3 = int3x3(2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513, 474197678); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_add_wide_wide() + { + int3x3 a0 = int3x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704); + int3x3 b0 = int3x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231); + int3x3 r0 = int3x3(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135, -2009504361); + TestUtils.AreEqual(a0 + b0, r0); + + int3x3 a1 = int3x3(192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + int3x3 b1 = int3x3(908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + int3x3 r1 = int3x3(1101613923, -799189804, 1384643660, -147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136); + TestUtils.AreEqual(a1 + b1, r1); + + int3x3 a2 = int3x3(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366, 941872903, 906908654, 1940071697); + int3x3 b2 = int3x3(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905, 2106992817, 1994483489, 539473); + int3x3 r2 = int3x3(1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271, -1246101576, -1393575153, 1940611170); + TestUtils.AreEqual(a2 + b2, r2); + + int3x3 a3 = int3x3(862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + int3x3 b3 = int3x3(236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + int3x3 r3 = int3x3(1099044556, -1932199380, 1285092016, -1653104091, -537584005, 604086579, -2144211299, -668553705, -1620851127); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_add_wide_scalar() + { + int3x3 a0 = int3x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861); + int b0 = (2124409227); + int3x3 r0 = int3x3(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768, -167536208); + TestUtils.AreEqual(a0 + b0, r0); + + int3x3 a1 = int3x3(1635971971, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654, 756559204, 1818718931); + int b1 = (1160398286); + int3x3 r1 = int3x3(-1498597039, 1245844488, -2066416044, -1895181910, -1636892122, -1407091525, -2039130356, 1916957490, -1315850079); + TestUtils.AreEqual(a1 + b1, r1); + + int3x3 a2 = int3x3(658923552, 1585755398, 692843300, 1068593469, 1704776233, 577782260, 736972565, 711894571, 564257439); + int b2 = (1610518921); + int3x3 r2 = int3x3(-2025524823, -1098692977, -1991605075, -1615854906, -979672142, -2106666115, -1947475810, -1972553804, -2120190936); + TestUtils.AreEqual(a2 + b2, r2); + + int3x3 a3 = int3x3(2051736283, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190, 2092767444); + int b3 = (1572837697); + int3x3 r3 = int3x3(-670393316, -1094123054, -866429336, -2065380817, 1845612213, -804996400, -1893806626, -605319409, -629362155); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_add_scalar_wide() + { + int a0 = (391092078); + int3x3 b0 = int3x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825); + int3x3 r0 = int3x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146, 1387123903); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (1557774949); + int3x3 b1 = int3x3(779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874); + int3x3 r1 = int3x3(-1957417407, -1625651045, -1954145902, -1607028403, 1846054533, -1339508486, -1100608858, -2063929008, -1267891473); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (14855965); + int3x3 b2 = int3x3(1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835, 1992405574, 1213924458); + int3x3 r2 = int3x3(1131492964, 1503719265, 1615846851, 205507266, 1322315733, 934941804, 2097085800, 2007261539, 1228780423); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (505841452); + int3x3 b3 = int3x3(981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886, 1459523189); + int3x3 r3 = int3x3(1487262614, 1994179151, 1619668092, -1982979336, -1947334622, 712452303, 1032813405, 1742201338, 1965364641); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_sub_wide_wide() + { + int3x3 a0 = int3x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185); + int3x3 b0 = int3x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303); + int3x3 r0 = int3x3(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747, 1234495882); + TestUtils.AreEqual(a0 - b0, r0); + + int3x3 a1 = int3x3(579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + int3x3 b1 = int3x3(1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + int3x3 r1 = int3x3(-838948052, -732179165, -881462314, -50205903, -930193352, 120810088, 929308315, -624402009, -165899077); + TestUtils.AreEqual(a1 - b1, r1); + + int3x3 a2 = int3x3(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454, 425848588, 2026967474, 1128492011); + int3x3 b2 = int3x3(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855, 609588723, 1054324682, 1678086165); + int3x3 r2 = int3x3(-728396869, -162295434, 676719274, 647669761, 957134686, -776749401, -183740135, 972642792, -549594154); + TestUtils.AreEqual(a2 - b2, r2); + + int3x3 a3 = int3x3(61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + int3x3 b3 = int3x3(1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + int3x3 r3 = int3x3(-1468159992, -730634354, 1218011798, 1846728662, -555907518, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_sub_wide_scalar() + { + int3x3 a0 = int3x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200); + int b0 = (462232403); + int3x3 r0 = int3x3(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412, -181058203); + TestUtils.AreEqual(a0 - b0, r0); + + int3x3 a1 = int3x3(87530840, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635, 815920639, 1829033117); + int b1 = (1913724431); + int3x3 r1 = int3x3(-1826193591, 127868905, -1356484441, -794672983, -323347699, -1094634242, -1097341796, -1097803792, -84691314); + TestUtils.AreEqual(a1 - b1, r1); + + int3x3 a2 = int3x3(1792801932, 1418937976, 1277257189, 2092779398, 642236742, 1605250794, 819644478, 1468003019, 128303186); + int b2 = (1113440549); + int3x3 r2 = int3x3(679361383, 305497427, 163816640, 979338849, -471203807, 491810245, -293796071, 354562470, -985137363); + TestUtils.AreEqual(a2 - b2, r2); + + int3x3 a3 = int3x3(553494257, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204, 1835969317); + int b3 = (1017126971); + int3x3 r3 = int3x3(-463632714, 982617811, 1000145787, 800864793, 263858529, -340152116, 620905642, -67365767, 818842346); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int3x3 b0 = int3x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421); + int3x3 r0 = int3x3(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128, -97766016); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (264712893); + int3x3 b1 = int3x3(1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254); + int3x3 r1 = int3x3(-967143174, -1553399855, -1163723216, -994032567, -812667503, -1066009826, -253398936, -702415636, -79953361); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1082267918); + int3x3 b2 = int3x3(907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777, 730060552, 1444397827); + int3x3 r2 = int3x3(174401222, -734617205, 621927350, 120113420, 525154457, -618948791, -897830859, 352207366, -362129909); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (853570556); + int3x3 b3 = int3x3(138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026, 902880656); + int3x3 r3 = int3x3(714734124, -159619872, 135481026, 346813166, -362877485, -82742191, -1143715899, -1116411470, -49310100); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mul_wide_wide() + { + int3x3 a0 = int3x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445); + int3x3 b0 = int3x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331); + int3x3 r0 = int3x3(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068, -1654168033); + TestUtils.AreEqual(a0 * b0, r0); + + int3x3 a1 = int3x3(1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + int3x3 b1 = int3x3(1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + int3x3 r1 = int3x3(2093463192, -1207506618, -1133560830, 990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a1 * b1, r1); + + int3x3 a2 = int3x3(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234, 899438811, 1765718681, 409003054); + int3x3 b2 = int3x3(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952, 675813713, 999254223, 1326064110); + int3x3 r2 = int3x3(1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720, 1891467339, 335415735, 1128927428); + TestUtils.AreEqual(a2 * b2, r2); + + int3x3 a3 = int3x3(2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + int3x3 b3 = int3x3(788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + int3x3 r3 = int3x3(-1656253776, -1433851638, 479369680, -366628060, -250163942, 48406862, -1997863296, -275121228, -1483457191); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mul_wide_scalar() + { + int3x3 a0 = int3x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632); + int b0 = (1476837906); + int3x3 r0 = int3x3(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518, 1736252960); + TestUtils.AreEqual(a0 * b0, r0); + + int3x3 a1 = int3x3(573770299, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467, 1186856590, 890343818); + int b1 = (1958912969); + int3x3 r1 = int3x3(-699623085, 583613531, -1685426426, 377032876, -1840882865, -459299359, 506042323, -1008908418, -1391844518); + TestUtils.AreEqual(a1 * b1, r1); + + int3x3 a2 = int3x3(800117742, 1338014500, 1688964615, 1439447294, 387721300, 1192501703, 1613845584, 76318055, 124378112); + int b2 = (606927173); + int3x3 r2 = int3x3(-1112302298, -254331724, 1687557859, 1193437814, 1547735716, -2021938781, -1509062256, 1364534211, -964408320); + TestUtils.AreEqual(a2 * b2, r2); + + int3x3 a3 = int3x3(970518733, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648, 227492421); + int b3 = (1370700538); + int3x3 r3 = int3x3(-524248526, 45251204, -1510152212, 28492454, 1649233534, -109154522, -1626217556, 1373293008, -567715486); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mul_scalar_wide() + { + int a0 = (99541948); + int3x3 b0 = int3x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483); + int3x3 r0 = int3x3(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328, 1623617844); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1178393968); + int3x3 b1 = int3x3(1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535); + int3x3 r1 = int3x3(1196573760, 592673296, 209320208, -352466736, 1007302672, -904186880, -1000629392, -2046820816, 1026909584); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1821413700); + int3x3 b2 = int3x3(677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236, 657101857, 1275563580); + int3x3 r2 = int3x3(118306580, 1091472052, 1879587908, -2118417516, -186623972, 1015975816, 1406756912, -1010431548, -883833872); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (1031291523); + int3x3 b3 = int3x3(1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263, 2022856151); + int3x3 r3 = int3x3(-2115383127, -1518963053, 358436435, -952500834, 469974843, -1901010273, -1775305962, 1424675509, -456434939); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_div_wide_wide() + { + int3x3 a0 = int3x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351); + int3x3 b0 = int3x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057); + int3x3 r0 = int3x3(1, 0, 0, 8, 0, 0, 2, 7, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3x3 a1 = int3x3(1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + int3x3 b1 = int3x3(254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + int3x3 r1 = int3x3(5, 0, 0, 0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a1 / b1, r1); + + int3x3 a2 = int3x3(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343, 1735128704, 816492592, 2012272185); + int3x3 b2 = int3x3(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844, 616122946, 2035322800, 1324534444); + int3x3 r2 = int3x3(0, 1, 1, 1, 1, 0, 2, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int3x3 a3 = int3x3(632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + int3x3 b3 = int3x3(1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + int3x3 r3 = int3x3(0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_div_wide_scalar() + { + int3x3 a0 = int3x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568); + int b0 = (947861580); + int3x3 r0 = int3x3(0, 1, 0, 1, 2, 1, 1, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3x3 a1 = int3x3(495895326, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372, 1447236569, 107215658); + int b1 = (1515313790); + int3x3 r1 = int3x3(0, 1, 1, 1, 0, 0, 1, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3x3 a2 = int3x3(19616726, 707389627, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864, 1200843642, 206442634); + int b2 = (896899915); + int3x3 r2 = int3x3(0, 0, 1, 1, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int3x3 a3 = int3x3(1508567412, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918, 1515555001); + int b3 = (1825701056); + int3x3 r3 = int3x3(0, 0, 0, 0, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_div_scalar_wide() + { + int a0 = (1161272038); + int3x3 b0 = int3x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373); + int3x3 r0 = int3x3(6, 0, 0, 0, 2, 0, 0, 1, 14); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1476877645); + int3x3 b1 = int3x3(653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729); + int3x3 r1 = int3x3(2, 32, 2, 3, 1, 1, 0, 0, 5); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (48974453); + int3x3 b2 = int3x3(1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083, 131970646, 1320586926); + int3x3 r2 = int3x3(0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (366944102); + int3x3 b3 = int3x3(1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534, 126616016); + int3x3 r3 = int3x3(0, 1, 0, 0, 0, 8, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mod_wide_wide() + { + int3x3 a0 = int3x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078); + int3x3 b0 = int3x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442); + int3x3 r0 = int3x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636); + TestUtils.AreEqual(a0 % b0, r0); + + int3x3 a1 = int3x3(1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + int3x3 b1 = int3x3(647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + int3x3 r1 = int3x3(164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a1 % b1, r1); + + int3x3 a2 = int3x3(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189, 1402964707, 2138294579, 1641714420); + int3x3 b2 = int3x3(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748, 798137669, 79717779, 1233582258); + int3x3 r2 = int3x3(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189, 604827038, 65632325, 408132162); + TestUtils.AreEqual(a2 % b2, r2); + + int3x3 a3 = int3x3(1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + int3x3 b3 = int3x3(1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + int3x3 r3 = int3x3(514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mod_wide_scalar() + { + int3x3 a0 = int3x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769); + int b0 = (883951171); + int3x3 r0 = int3x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598); + TestUtils.AreEqual(a0 % b0, r0); + + int3x3 a1 = int3x3(405208598, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717, 165478511, 647846716); + int b1 = (1982762194); + int3x3 r1 = int3x3(405208598, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717, 165478511, 647846716); + TestUtils.AreEqual(a1 % b1, r1); + + int3x3 a2 = int3x3(915707999, 928191283, 1084934806, 488509689, 2087820912, 377501313, 1778384846, 1216011754, 812183417); + int b2 = (1602830401); + int3x3 r2 = int3x3(915707999, 928191283, 1084934806, 488509689, 484990511, 377501313, 175554445, 1216011754, 812183417); + TestUtils.AreEqual(a2 % b2, r2); + + int3x3 a3 = int3x3(1153802502, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372, 586777590); + int b3 = (1642671870); + int3x3 r3 = int3x3(1153802502, 282038872, 665297470, 1568090825, 408311072, 435886407, 453990946, 88993502, 586777590); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mod_scalar_wide() + { + int a0 = (242383789); + int3x3 b0 = int3x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573); + int3x3 r0 = int3x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1495295166); + int3x3 b1 = int3x3(873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842); + int3x3 r1 = int3x3(621971563, 433932700, 197192523, 1495295166, 494553075, 33923035, 1495295166, 698110479, 673406324); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1083192997); + int3x3 b2 = int3x3(840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061, 730088119, 1444946139); + int3x3 r2 = int3x3(243078011, 1083192997, 468033033, 1083192997, 1875643, 1083192997, 95724631, 353104878, 1083192997); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1305792037); + int3x3 b3 = int3x3(1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894, 1342085447); + int3x3 r3 = int3x3(194963026, 433068456, 137860321, 1305792037, 282934571, 1305792037, 1305792037, 63018673, 1305792037); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_plus() + { + int3x3 a0 = int3x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897); + int3x3 r0 = int3x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a0, r0); + + int3x3 a1 = int3x3(1287765427, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954, 1723005749, 409076474); + int3x3 r1 = int3x3(1287765427, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a1, r1); + + int3x3 a2 = int3x3(591286416, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612); + int3x3 r2 = int3x3(591286416, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612); + TestUtils.AreEqual(+a2, r2); + + int3x3 a3 = int3x3(500666137, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485, 1012749225); + int3x3 r3 = int3x3(500666137, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485, 1012749225); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int3x3_operator_neg() + { + int3x3 a0 = int3x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238); + int3x3 r0 = int3x3(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349, -1115028238); + TestUtils.AreEqual(-a0, r0); + + int3x3 a1 = int3x3(1636274969, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094, 1687250035, 2057919693); + int3x3 r1 = int3x3(-1636274969, -1542206286, -213087293, -243937487, -341522275, -841085242, -574159094, -1687250035, -2057919693); + TestUtils.AreEqual(-a1, r1); + + int3x3 a2 = int3x3(1175014732, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454, 431666091, 1387601718); + int3x3 r2 = int3x3(-1175014732, -1212465326, -1190569920, -2047955772, -2120729864, -1440774928, -1485596454, -431666091, -1387601718); + TestUtils.AreEqual(-a2, r2); + + int3x3 a3 = int3x3(1745651998, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868, 650922971); + int3x3 r3 = int3x3(-1745651998, -1119959806, -739132284, -1954173314, -1709857098, -1836511050, -1662806453, -506144868, -650922971); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int3x3_operator_prefix_inc() + { + int3x3 a0 = int3x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639); + int3x3 r0 = int3x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a0, r0); + + int3x3 a1 = int3x3(432884105, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683, 993189311, 752093909); + int3x3 r1 = int3x3(432884106, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a1, r1); + + int3x3 a2 = int3x3(1622410417, 241906003, 1705625817, 609525897, 172599489, 504806865, 519296647, 281942776, 1541894135); + int3x3 r2 = int3x3(1622410418, 241906004, 1705625818, 609525898, 172599490, 504806866, 519296648, 281942777, 1541894136); + TestUtils.AreEqual(++a2, r2); + + int3x3 a3 = int3x3(924683935, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111, 1414867743); + int3x3 r3 = int3x3(924683936, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112, 1414867744); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int3x3_operator_postfix_inc() + { + int3x3 a0 = int3x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607); + int3x3 r0 = int3x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a0++, r0); + + int3x3 a1 = int3x3(708474528, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530, 506142468, 732199129); + int3x3 r1 = int3x3(708474528, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a1++, r1); + + int3x3 a2 = int3x3(2026873940, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901); + int3x3 r2 = int3x3(2026873940, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901); + TestUtils.AreEqual(a2++, r2); + + int3x3 a3 = int3x3(101238629, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730, 1209169651); + int3x3 r3 = int3x3(101238629, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730, 1209169651); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int3x3_operator_prefix_dec() + { + int3x3 a0 = int3x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580); + int3x3 r0 = int3x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a0, r0); + + int3x3 a1 = int3x3(596759698, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956, 356565557, 18299409); + int3x3 r1 = int3x3(596759697, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a1, r1); + + int3x3 a2 = int3x3(906734601, 1383897383, 1040798388, 1469596990, 1719228297, 220897829, 1454322707, 678025545, 14227726); + int3x3 r2 = int3x3(906734600, 1383897382, 1040798387, 1469596989, 1719228296, 220897828, 1454322706, 678025544, 14227725); + TestUtils.AreEqual(--a2, r2); + + int3x3 a3 = int3x3(293093918, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380, 2083512379); + int3x3 r3 = int3x3(293093917, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379, 2083512378); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int3x3_operator_postfix_dec() + { + int3x3 a0 = int3x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285); + int3x3 r0 = int3x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a0--, r0); + + int3x3 a1 = int3x3(2017728859, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045, 2095777993, 670715645); + int3x3 r1 = int3x3(2017728859, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a1--, r1); + + int3x3 a2 = int3x3(324944916, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377); + int3x3 r2 = int3x3(324944916, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377); + TestUtils.AreEqual(a2--, r2); + + int3x3 a3 = int3x3(181847458, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130, 2016700604); + int3x3 r3 = int3x3(181847458, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130, 2016700604); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_and_wide_wide() + { + int3x3 a0 = int3x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114); + int3x3 b0 = int3x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139); + int3x3 r0 = int3x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410); + TestUtils.AreEqual(a0 & b0, r0); + + int3x3 a1 = int3x3(1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + int3x3 b1 = int3x3(1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + int3x3 r1 = int3x3(1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a1 & b1, r1); + + int3x3 a2 = int3x3(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372, 181537307, 130347414, 1240828622); + int3x3 b2 = int3x3(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586, 1855189321, 185194029, 810374380); + int3x3 r2 = int3x3(168582, 1107890178, 67125280, 880844837, 541065292, 337646976, 177340425, 50384900, 4522188); + TestUtils.AreEqual(a2 & b2, r2); + + int3x3 a3 = int3x3(526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + int3x3 b3 = int3x3(133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + int3x3 r3 = int3x3(122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_and_wide_scalar() + { + int3x3 a0 = int3x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729); + int b0 = (93423598); + int3x3 r0 = int3x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848); + TestUtils.AreEqual(a0 & b0, r0); + + int3x3 a1 = int3x3(428270198, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033, 1408932942, 957693145); + int b1 = (607982857); + int3x3 r1 = int3x3(262144, 603983880, 3478528, 537657600, 603985153, 853000, 538771465, 3675144, 538252297); + TestUtils.AreEqual(a1 & b1, r1); + + int3x3 a2 = int3x3(1567715668, 322053683, 1599352836, 208656708, 1272226025, 462670926, 1817145060, 1466722981, 1817277774); + int b2 = (1102952410); + int3x3 r2 = int3x3(1093742928, 19932690, 1091842048, 2986304, 1100259528, 26313802, 1074603712, 1093411456, 1074869578); + TestUtils.AreEqual(a2 & b2, r2); + + int3x3 a3 = int3x3(818900583, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061, 398141788); + int b3 = (772681077); + int3x3 r3 = int3x3(537799781, 537788480, 537527636, 604374309, 67241029, 705568773, 671747424, 167912453, 101329236); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int3x3 b0 = int3x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981); + int3x3 r0 = int3x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (270607307); + int3x3 b1 = int3x3(1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961); + int3x3 r1 = int3x3(270533570, 268501384, 8449, 2163137, 74123, 74507, 2163594, 66184, 270598977); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1436238522); + int3x3 b2 = int3x3(2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404, 2255485, 1814885263); + int3x3 r2 = int3x3(1367491202, 18563090, 1099055776, 1167655482, 1434992658, 1092288688, 1075397272, 148024, 1141392010); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1711986588); + int3x3 b3 = int3x3(1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007, 1808619374); + int3x3 r3 = int3x3(1140883976, 637536128, 1711801728, 101224968, 1610633224, 67682712, 1644860304, 67814532, 1644713740); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_or_wide_wide() + { + int3x3 a0 = int3x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222); + int3x3 b0 = int3x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169); + int3x3 r0 = int3x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295); + TestUtils.AreEqual(a0 | b0, r0); + + int3x3 a1 = int3x3(396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + int3x3 b1 = int3x3(1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + int3x3 r1 = int3x3(1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a1 | b1, r1); + + int3x3 a2 = int3x3(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074, 543305337, 662107399, 1934997335); + int3x3 b2 = int3x3(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841, 108816721, 1694053551, 452638547); + int3x3 r2 = int3x3(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171, 645820281, 1744827823, 2080356183); + TestUtils.AreEqual(a2 | b2, r2); + + int3x3 a3 = int3x3(436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + int3x3 b3 = int3x3(1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + int3x3 r3 = int3x3(1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_or_wide_scalar() + { + int3x3 a0 = int3x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789); + int b0 = (1666102508); + int3x3 r0 = int3x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029); + TestUtils.AreEqual(a0 | b0, r0); + + int3x3 a1 = int3x3(1637162093, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989, 1980838747, 284225881); + int b1 = (1227888278); + int3x3 r1 = int3x3(1773477631, 1865602742, 2105089982, 1333229279, 1874132982, 2112886719, 1274806167, 2133931999, 1508964319); + TestUtils.AreEqual(a1 | b1, r1); + + int3x3 a2 = int3x3(64304104, 1393862490, 1890090886, 521303722, 2021379070, 2055963359, 1511253082, 1775629833, 1142751163); + int b2 = (313591807); + int3x3 r2 = int3x3(334837759, 1404413951, 1924759551, 531855359, 2063323135, 2059110399, 1521739775, 2079717375, 1455292415); + TestUtils.AreEqual(a2 | b2, r2); + + int3x3 a3 = int3x3(1767274359, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200, 1353013374); + int b3 = (1421981808); + int3x3 r3 = int3x3(2111307639, 1576794359, 1559755519, 1961475324, 1455931127, 2096496501, 1607466226, 1440595320, 1424357502); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int3x3 b0 = int3x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710); + int3x3 r0 = int3x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1348323481); + int3x3 b1 = int3x3(1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473, 447949225, 527022375); + int3x3 r1 = int3x3(1409150395, 2044710617, 2138963197, 1971321503, 1493170683, 1425918105, 1499453881, 1526720953, 1602091455); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1947148461); + int3x3 b2 = int3x3(305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808, 2052547661, 582843231); + int3x3 r2 = int3x3(1983898861, 2127540973, 2088725757, 2129601277, 2124393197, 1961878511, 1976547565, 2120180973, 1992260607); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (656983670); + int3x3 b3 = int3x3(1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598, 1098359242); + int3x3 r3 = int3x3(2012151678, 1736044278, 931000318, 1060691710, 666879990, 1877598071, 800640759, 2139019006, 1736435710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_xor_wide_wide() + { + int3x3 a0 = int3x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340); + int3x3 b0 = int3x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711); + int3x3 r0 = int3x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x3 a1 = int3x3(643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + int3x3 b1 = int3x3(1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + int3x3 r1 = int3x3(1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x3 a2 = int3x3(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405, 1972524935, 91962333, 1960780785); + int3x3 b2 = int3x3(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483, 1340735463, 546583617, 1034420616); + int3x3 r2 = int3x3(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070, 981182560, 636424092, 1232544377); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x3 a3 = int3x3(1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + int3x3 b3 = int3x3(262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + int3x3 r3 = int3x3(1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_xor_wide_scalar() + { + int3x3 a0 = int3x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431); + int b0 = (493665894); + int3x3 r0 = int3x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x3 a1 = int3x3(353786540, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978, 491079274, 191750702); + int b1 = (1308626970); + int3x3 r1 = int3x3(1528187574, 93328233, 1232959970, 6998720, 689905479, 1224162372, 1483050112, 1397053040, 1164833332); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x3 a2 = int3x3(187129429, 549951551, 653124416, 788984, 1479174924, 1680011736, 447453839, 890841598, 293394300); + int b2 = (967051293); + int3x3 r2 = int3x3(847468104, 425955362, 524938077, 967311845, 1636721425, 1569126853, 588223122, 213721571, 685301601); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x3 a3 = int3x3(527727631, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239, 476052372); + int b3 = (529042816); + int3x3 r3 = int3x3(16576911, 1307134418, 1483505245, 548297055, 871053291, 475694844, 1940126849, 528638031, 64452116); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int3x3 b0 = int3x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217); + int3x3 r0 = int3x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1509843030); + int3x3 b1 = int3x3(1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099); + int3x3 r1 = int3x3(505195842, 489209886, 769935181, 809406758, 704722596, 430263842, 1219290719, 194675349, 1845940413); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1309568053); + int3x3 b2 = int3x3(221134131, 885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520, 86594349, 2006985393); + int3x3 r2 = int3x3(1126191366, 2059580163, 1786054505, 1168069184, 491622028, 1816020124, 571655301, 1260863256, 967722628); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1431761813); + int3x3 b3 = int3x3(905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615, 711527976); + int3x3 r3 = int3x3(1622008160, 266913576, 1579801450, 2144176381, 1125708626, 1502456780, 143731639, 2065991874, 2134900157); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_left_shift() + { + int3x3 a0 = int3x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230); + int b0 = (1321149625); + int3x3 r0 = int3x3(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464, -1409286144); + TestUtils.AreEqual(a0 << b0, r0); + + int3x3 a1 = int3x3(1531607705, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989, 2077023268, 592678686); + int b1 = (1360008038); + int3x3 r1 = int3x3(-761354688, 106468736, -1836333184, 375843008, -2012257344, -849087616, 2069060416, -214497024, -723269760); + TestUtils.AreEqual(a1 << b1, r1); + + int3x3 a2 = int3x3(297755411, 1161625759, 37265945, 997793693, 1521705181, 263886278, 221147365, 2084190583, 230910816); + int b2 = (1722762487); + int3x3 r2 = int3x3(-1988100096, 1333788672, 209715200, -830472192, 1853882368, -486539264, 1920991232, -1149239296, -1342177280); + TestUtils.AreEqual(a2 << b2, r2); + + int3x3 a3 = int3x3(71403448, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192, 740058147); + int b3 = (481375728); + int3x3 r3 = int3x3(-2017984512, -308281344, 1071316992, 705495040, 1989148672, 1981153280, -1414135808, 1022361600, 1680015360); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_right_shift() + { + int3x3 a0 = int3x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124); + int b0 = (1266801540); + int3x3 r0 = int3x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695); + TestUtils.AreEqual(a0 >> b0, r0); + + int3x3 a1 = int3x3(506619530, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711, 334005460, 1624751550); + int b1 = (426807581); + int3x3 r1 = int3x3(0, 3, 1, 1, 1, 0, 2, 0, 3); + TestUtils.AreEqual(a1 >> b1, r1); + + int3x3 a2 = int3x3(280138733, 1840564178, 736389149, 1279158873, 408822762, 763607760, 348013684, 1568185874, 774126687); + int b2 = (1598620011); + int3x3 r2 = int3x3(136786, 898712, 359565, 624589, 199620, 372855, 169928, 765715, 377991); + TestUtils.AreEqual(a2 >> b2, r2); + + int3x3 a3 = int3x3(1587054000, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381, 1234295294); + int b3 = (600069797); + int3x3 r3 = int3x3(49595437, 924264, 58780668, 11005463, 36390889, 13295044, 5829453, 34370605, 38571727); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_not() + { + int3x3 a0 = int3x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491); + int3x3 r0 = int3x3(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857, -472965492); + TestUtils.AreEqual(~a0, r0); + + int3x3 a1 = int3x3(771711426, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466, 1635981125, 1951018596); + int3x3 r1 = int3x3(-771711427, -2061524025, -753208489, -2097179284, -1303022494, -664744604, -1289372467, -1635981126, -1951018597); + TestUtils.AreEqual(~a1, r1); + + int3x3 a2 = int3x3(1545651937, 1284504687, 1342785385, 869629475, 2045854321, 1282546942, 1562433528, 1824824810, 1736570715); + int3x3 r2 = int3x3(-1545651938, -1284504688, -1342785386, -869629476, -2045854322, -1282546943, -1562433529, -1824824811, -1736570716); + TestUtils.AreEqual(~a2, r2); + + int3x3 a3 = int3x3(508906058, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829, 1227946838); + int3x3 r3 = int3x3(-508906059, -1867418757, -388530275, -695179853, -1766938040, -897923627, -1816190465, -1362906830, -1227946839); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x3.gen.cs.meta new file mode 100644 index 0000000..c709a88 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e50b53d0c552004db62a39d61d06297 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x4.gen.cs new file mode 100644 index 0000000..bb0955f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x4.gen.cs @@ -0,0 +1,1233 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt3x4 + { + [TestCompiler] + public static void int3x4_zero() + { + TestUtils.AreEqual(int3x4.zero.c0.x, 0); + TestUtils.AreEqual(int3x4.zero.c0.y, 0); + TestUtils.AreEqual(int3x4.zero.c0.z, 0); + TestUtils.AreEqual(int3x4.zero.c1.x, 0); + TestUtils.AreEqual(int3x4.zero.c1.y, 0); + TestUtils.AreEqual(int3x4.zero.c1.z, 0); + TestUtils.AreEqual(int3x4.zero.c2.x, 0); + TestUtils.AreEqual(int3x4.zero.c2.y, 0); + TestUtils.AreEqual(int3x4.zero.c2.z, 0); + TestUtils.AreEqual(int3x4.zero.c3.x, 0); + TestUtils.AreEqual(int3x4.zero.c3.y, 0); + TestUtils.AreEqual(int3x4.zero.c3.z, 0); + } + + [TestCompiler] + public static void int3x4_operator_equal_wide_wide() + { + int3x4 a0 = int3x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + int3x4 b0 = int3x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x4 a1 = int3x4(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int3x4 b1 = int3x4(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x4 a2 = int3x4(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + int3x4 b2 = int3x4(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x4 a3 = int3x4(346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + int3x4 b3 = int3x4(1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_equal_wide_scalar() + { + int3x4 a0 = int3x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411); + int b0 = (746972502); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x4 a1 = int3x4(672785749, 585324157, 404448210, 969511077, 442746747, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005); + int b1 = (1465584610); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x4 a2 = int3x4(211986678, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291); + int b2 = (1305479811); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x4 a3 = int3x4(872759249, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886, 20195989); + int b3 = (811880239); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int3x4 b0 = int3x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (737210539); + int3x4 b1 = int3x4(1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (597498209); + int3x4 b2 = int3x4(367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1576985758); + int3x4 b3 = int3x4(1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036, 2074160001); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_not_equal_wide_wide() + { + int3x4 a0 = int3x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + int3x4 b0 = int3x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x4 a1 = int3x4(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int3x4 b1 = int3x4(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x4 a2 = int3x4(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + int3x4 b2 = int3x4(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x4 a3 = int3x4(1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + int3x4 b3 = int3x4(1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_not_equal_wide_scalar() + { + int3x4 a0 = int3x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906); + int b0 = (248693828); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x4 a1 = int3x4(2126300423, 2035077187, 1171827730, 1412347883, 1622176923, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766); + int b1 = (791998981); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x4 a2 = int3x4(30493685, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113); + int b2 = (904014575); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x4 a3 = int3x4(765258490, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942, 780105497); + int b3 = (668154629); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int3x4 b0 = int3x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (50286949); + int3x4 b1 = int3x4(2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (510966350); + int3x4 b2 = int3x4(572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (358894860); + int3x4 b3 = int3x4(1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167, 1002934795); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_wide_wide() + { + int3x4 a0 = int3x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + int3x4 b0 = int3x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool3x4 r0 = bool3x4(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x4 a1 = int3x4(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int3x4 b1 = int3x4(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool3x4 r1 = bool3x4(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x4 a2 = int3x4(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + int3x4 b2 = int3x4(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool3x4 r2 = bool3x4(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int3x4 a3 = int3x4(1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + int3x4 b3 = int3x4(1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool3x4 r3 = bool3x4(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_wide_scalar() + { + int3x4 a0 = int3x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650); + int b0 = (1491216667); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x4 a1 = int3x4(930950514, 933855388, 908563901, 1127696709, 1286331950, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027); + int b1 = (1100560246); + bool3x4 r1 = bool3x4(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int3x4 a2 = int3x4(371987110, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606); + int b2 = (867559111); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int3x4 a3 = int3x4(1891059504, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493, 212954934); + int b3 = (1217893177); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_scalar_wide() + { + int a0 = (548436837); + int3x4 b0 = int3x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1890019295); + int3x4 b1 = int3x4(2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659); + bool3x4 r1 = bool3x4(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (810406400); + int3x4 b2 = int3x4(1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916); + bool3x4 r2 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (168788814); + int3x4 b3 = int3x4(670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033, 685700324); + bool3x4 r3 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_wide_wide() + { + int3x4 a0 = int3x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + int3x4 b0 = int3x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool3x4 r0 = bool3x4(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int3x4 a1 = int3x4(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int3x4 b1 = int3x4(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int3x4 a2 = int3x4(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + int3x4 b2 = int3x4(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int3x4 a3 = int3x4(194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + int3x4 b3 = int3x4(1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_wide_scalar() + { + int3x4 a0 = int3x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515); + int b0 = (438688675); + bool3x4 r0 = bool3x4(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int3x4 a1 = int3x4(711945018, 577943770, 572743717, 1016617211, 2063134811, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424); + int b1 = (1035679270); + bool3x4 r1 = bool3x4(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int3x4 a2 = int3x4(1045140419, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732); + int b2 = (1058332184); + bool3x4 r2 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x4 a3 = int3x4(1284938191, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269, 1930086291); + int b3 = (1452639553); + bool3x4 r3 = bool3x4(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int3x4 b0 = int3x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1556466996); + int3x4 b1 = int3x4(858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1713088900); + int3x4 b2 = int3x4(315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (267985383); + int3x4 b3 = int3x4(126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217, 1480829811); + bool3x4 r3 = bool3x4(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_equal_wide_wide() + { + int3x4 a0 = int3x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + int3x4 b0 = int3x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool3x4 r0 = bool3x4(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x4 a1 = int3x4(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int3x4 b1 = int3x4(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool3x4 r1 = bool3x4(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x4 a2 = int3x4(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + int3x4 b2 = int3x4(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool3x4 r2 = bool3x4(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x4 a3 = int3x4(1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + int3x4 b3 = int3x4(1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_equal_wide_scalar() + { + int3x4 a0 = int3x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763); + int b0 = (1688048545); + bool3x4 r0 = bool3x4(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x4 a1 = int3x4(690091301, 2091514001, 1857173043, 1617221948, 2017733017, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519); + int b1 = (1806172431); + bool3x4 r1 = bool3x4(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x4 a2 = int3x4(1917813750, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244); + int b2 = (1258115260); + bool3x4 r2 = bool3x4(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x4 a3 = int3x4(426908235, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266, 1483727269); + int b3 = (1818566980); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int3x4 b0 = int3x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1293698493); + int3x4 b1 = int3x4(48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (601413850); + int3x4 b2 = int3x4(830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260); + bool3x4 r2 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (733876180); + int3x4 b3 = int3x4(1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410, 1987696011); + bool3x4 r3 = bool3x4(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_equal_wide_wide() + { + int3x4 a0 = int3x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + int3x4 b0 = int3x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool3x4 r0 = bool3x4(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x4 a1 = int3x4(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int3x4 b1 = int3x4(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool3x4 r1 = bool3x4(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x4 a2 = int3x4(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + int3x4 b2 = int3x4(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool3x4 r2 = bool3x4(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x4 a3 = int3x4(584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + int3x4 b3 = int3x4(2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_equal_wide_scalar() + { + int3x4 a0 = int3x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867); + int b0 = (1470533736); + bool3x4 r0 = bool3x4(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x4 a1 = int3x4(1419295004, 1819986195, 1460027917, 1646290021, 196833647, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862); + int b1 = (471843809); + bool3x4 r1 = bool3x4(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x4 a2 = int3x4(1449142607, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895); + int b2 = (1223010129); + bool3x4 r2 = bool3x4(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x4 a3 = int3x4(192092521, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700, 702382564); + int b3 = (909358617); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int3x4 b0 = int3x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1214546726); + int3x4 b1 = int3x4(917376832, 303549425, 2111728811, 945321577, 173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189); + bool3x4 r1 = bool3x4(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1336522452); + int3x4 b2 = int3x4(233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513); + bool3x4 r2 = bool3x4(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (474197678); + int3x4 b3 = int3x4(1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168, 1274079907); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_add_wide_wide() + { + int3x4 a0 = int3x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + int3x4 b0 = int3x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + int3x4 r0 = int3x4(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a0 + b0, r0); + + int3x4 a1 = int3x4(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int3x4 b1 = int3x4(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int3x4 r1 = int3x4(-147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a1 + b1, r1); + + int3x4 a2 = int3x4(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + int3x4 b2 = int3x4(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + int3x4 r2 = int3x4(-1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005, 604086579, -2144211299, -668553705, -1620851127); + TestUtils.AreEqual(a2 + b2, r2); + + int3x4 a3 = int3x4(728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + int3x4 b3 = int3x4(1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + int3x4 r3 = int3x4(-1833755501, 1450246522, -1850179797, 1669976746, -938217892, 1917402232, 1548618217, -1431586812, -823896228, 2013864506, 348877644, -2052539555); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_add_wide_scalar() + { + int3x4 a0 = int3x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202); + int b0 = (2124409227); + int3x4 r0 = int3x4(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768, -167536208, -534586098, -1010159783, -2085111867); + TestUtils.AreEqual(a0 + b0, r0); + + int3x4 a1 = int3x4(1068152966, 1497676888, 1727477485, 1095438654, 756559204, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233); + int b1 = (1239387100); + int3x4 r1 = int3x4(-1987427230, -1557903308, -1328102711, -1960141542, 1995946304, -1236861265, 1898310652, -1445061275, -1469824798, 1932230400, -1986986727, -1350803963); + TestUtils.AreEqual(a1 + b1, r1); + + int3x4 a2 = int3x4(577782260, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190); + int b2 = (736972565); + int3x4 r2 = int3x4(1314754825, 1448867136, 1301230004, -1506258448, -1985157034, -1929988186, -1702294468, 1393721347, 1009747081, -1640861532, 1565295538, -1441184541); + TestUtils.AreEqual(a2 + b2, r2); + + int3x4 a3 = int3x4(2092767444, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914, 1340503111); + int b3 = (973587865); + int3x4 r3 = int3x4(-1228611987, -2084448158, 1477852314, 1767880439, -1803320750, -1716743107, 1328461282, 1658835762, 1201369005, 1294770382, -2110803517, -1980876320); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_add_scalar_wide() + { + int a0 = (391092078); + int3x4 b0 = int3x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302); + int3x4 r0 = int3x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146, 1387123903, 1948867027, 1170867018, 1502633380); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (783046445); + int3x4 b1 = int3x4(1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768); + int3x4 r1 = int3x4(1913210389, 1071326029, -2114236990, -1875337362, 1456309784, -2042619977, 797902410, 1899683444, -2023057551, -1910929965, 973697746, 2090506213); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (920085839); + int3x4 b2 = int3x4(2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886); + int3x4 r2 = int3x4(-1292651622, -1382475883, 2134010297, 1425927291, 1901507001, -1886543758, 2033912479, -1568734949, -1533090235, 1126696690, 1447057792, -2138521571); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1459523189); + int3x4 b3 = int3x4(965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031, 1275565021); + int3x4 r3 = int3x4(-1869703476, 1542365988, -1537040906, -1029634335, -856579916, 1874526575, -929139959, -2112573910, -2091195311, -1158220548, 1762899220, -1559879086); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_sub_wide_wide() + { + int3x4 a0 = int3x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + int3x4 b0 = int3x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + int3x4 r0 = int3x4(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747, 1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a0 - b0, r0); + + int3x4 a1 = int3x4(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int3x4 b1 = int3x4(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int3x4 r1 = int3x4(-50205903, -930193352, 120810088, 929308315, -624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a1 - b1, r1); + + int3x4 a2 = int3x4(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + int3x4 b2 = int3x4(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + int3x4 r2 = int3x4(-183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a2 - b2, r2); + + int3x4 a3 = int3x4(741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + int3x4 b3 = int3x4(1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + int3x4 r3 = int3x4(-345917539, 1650323877, 979082147, 182559134, -136395064, 1442113917, 8339009, 1379854326, -592461473, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_sub_wide_scalar() + { + int3x4 a0 = int3x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336); + int b0 = (462232403); + int3x4 r0 = int3x4(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412, -181058203, -374701563, 1451492028, 1579360933); + TestUtils.AreEqual(a0 - b0, r0); + + int3x4 a1 = int3x4(557239990, 1590376732, 819090189, 816382635, 815920639, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742); + int b1 = (1119051448); + int3x4 r1 = int3x4(-561811458, 471325284, -299961259, -302668813, -303130809, 709981669, 673750484, -5610899, 299886528, 158205741, 973727950, -476814706); + TestUtils.AreEqual(a1 - b1, r1); + + int3x4 a2 = int3x4(1605250794, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204); + int b2 = (819644478); + int3x4 r2 = int3x4(785606316, 648358541, -691341292, -266150221, 197482493, 1180100304, 1197628280, 998347286, 461341022, -142669623, 818388135, 130116726); + TestUtils.AreEqual(a2 - b2, r2); + + int3x4 a3 = int3x4(1835969317, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965, 941598524); + int b3 = (919015590); + int3x4 r3 = int3x4(916953727, 57931720, 385231016, 537764618, 635007122, -149211225, 1138816097, -160879011, -248582335, -315784179, 754253375, 22582934); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int3x4 b0 = int3x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748); + int3x4 r0 = int3x4(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128, -97766016, 1426821512, 459678338, -126578343); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (1428436109); + int3x4 b1 = int3x4(1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461); + int3x4 r1 = int3x4(169690649, 351055713, 97713390, 910324280, 461307580, 1083769855, 346168191, 520569413, -388449014, 968095541, 466281611, 871322648); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1701216709); + int3x4 b2 = int3x4(1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026); + int3x4 r2 = int3x4(-278882068, 971156157, 256818882, 847646153, 1562380277, 688026281, 983127179, 1194459319, 484768668, 764903962, -296069746, -268765317); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (902880656); + int3x4 b3 = int3x4(1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072, 2066839749); + int3x4 r3 = int3x4(-258340041, -539584069, 279919891, 171911747, 288056815, -986898364, -15441696, 768950736, 689757548, -932569804, 381812584, -1163959093); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mul_wide_wide() + { + int3x4 a0 = int3x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + int3x4 b0 = int3x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + int3x4 r0 = int3x4(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a0 * b0, r0); + + int3x4 a1 = int3x4(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int3x4 b1 = int3x4(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int3x4 r1 = int3x4(990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a1 * b1, r1); + + int3x4 a2 = int3x4(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + int3x4 b2 = int3x4(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + int3x4 r2 = int3x4(1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942, 48406862, -1997863296, -275121228, -1483457191); + TestUtils.AreEqual(a2 * b2, r2); + + int3x4 a3 = int3x4(892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + int3x4 b3 = int3x4(142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + int3x4 r3 = int3x4(293009766, -617864326, 1179445736, -481780132, -1586128904, 1397450915, 487571412, -405680754, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mul_wide_scalar() + { + int3x4 a0 = int3x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747); + int b0 = (1476837906); + int3x4 r0 = int3x4(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518, 1736252960, -1699123674, -1534863838, -1853528010); + TestUtils.AreEqual(a0 * b0, r0); + + int3x4 a1 = int3x4(1818877398, 660611671, 1279757657, 391009467, 1186856590, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300); + int b1 = (1324050764); + int3x4 r1 = int3x4(1927061896, 645718228, -588613780, -844440956, -567685080, -1684615432, -1092253528, 133057916, -1582148944, -1029961452, -248833688, 100822256); + TestUtils.AreEqual(a1 * b1, r1); + + int3x4 a2 = int3x4(1192501703, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648); + int b2 = (1613845584); + int3x4 r2 = int3x4(-394864080, -1335460816, 692371456, 973833232, 1630959136, -1678368480, -191340960, 1516495024, 2027781488, 471196848, -2125435808, 1043640960); + TestUtils.AreEqual(a2 * b2, r2); + + int3x4 a3 = int3x4(227492421, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790, 396984449); + int b3 = (217698851); + int3x4 r3 = int3x4(269461871, 1120555251, 1293383984, 1838219542, -1271695412, 1677010101, 1900394426, 512258290, -238570208, -508870886, 1697920914, 1359963043); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mul_scalar_wide() + { + int a0 = (99541948); + int3x4 b0 = int3x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767); + int3x4 r0 = int3x4(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328, 1623617844, -1691554240, -830512240, -1283699420); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (243286231); + int3x4 b1 = int3x4(1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639); + int3x4 r1 = int3x4(-648389235, -1563629439, -401476800, -1314550601, 62369507, -76557479, -1413808100, -328103037, 2038656731, -2070911977, -1476360861, -1549578607); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1323243330); + int3x4 b2 = int3x4(1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263); + int3x4 r2 = int3x4(-94024808, 50866050, 1979584376, -2129139002, 2084048518, -630615902, 1987582754, -2107012204, -1274032366, 1909741994, 2131645412, 527678350); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (2022856151); + int3x4 b3 = int3x4(1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370, 890235481); + int3x4 r3 = int3x4(-1935205669, -686991577, -1926794436, -1053293830, -653994693, -1849661752, 1198448575, -1186284852, -1561308297, -1930349931, -910321442, 938433983); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_div_wide_wide() + { + int3x4 a0 = int3x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + int3x4 b0 = int3x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + int3x4 r0 = int3x4(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3x4 a1 = int3x4(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int3x4 b1 = int3x4(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int3x4 r1 = int3x4(0, 2, 1, 2, 1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3x4 a2 = int3x4(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + int3x4 b2 = int3x4(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + int3x4 r2 = int3x4(2, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int3x4 a3 = int3x4(991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + int3x4 b3 = int3x4(554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + int3x4 r3 = int3x4(1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_div_wide_scalar() + { + int3x4 a0 = int3x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657); + int b0 = (947861580); + int3x4 r0 = int3x4(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int3x4 a1 = int3x4(2131487088, 1017891310, 542666029, 1646044372, 1447236569, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885); + int b1 = (2105094094); + int3x4 r1 = int3x4(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3x4 a2 = int3x4(1919705924, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918); + int b2 = (1244966864); + int3x4 r2 = int3x4(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int3x4 a3 = int3x4(1515555001, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647, 1222061694); + int b3 = (614923813); + int3x4 r3 = int3x4(2, 1, 3, 3, 3, 1, 3, 0, 0, 2, 3, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_div_scalar_wide() + { + int a0 = (1161272038); + int3x4 b0 = int3x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703); + int3x4 r0 = int3x4(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (631027637); + int3x4 b1 = int3x4(396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043); + int3x4 r1 = int3x4(1, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1054404890); + int3x4 b2 = int3x4(351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534); + int3x4 r2 = int3x4(2, 7, 0, 2, 0, 4, 0, 0, 0, 23, 0, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (126616016); + int3x4 b3 = int3x4(1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719, 638134699); + int3x4 r3 = int3x4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mod_wide_wide() + { + int3x4 a0 = int3x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + int3x4 b0 = int3x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + int3x4 r0 = int3x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a0 % b0, r0); + + int3x4 a1 = int3x4(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int3x4 b1 = int3x4(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int3x4 r1 = int3x4(137194997, 593433700, 360454892, 8060301, 7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a1 % b1, r1); + + int3x4 a2 = int3x4(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + int3x4 b2 = int3x4(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + int3x4 r2 = int3x4(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a2 % b2, r2); + + int3x4 a3 = int3x4(1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + int3x4 b3 = int3x4(244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + int3x4 r3 = int3x4(166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mod_wide_scalar() + { + int3x4 a0 = int3x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935); + int b0 = (883951171); + int3x4 r0 = int3x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764); + TestUtils.AreEqual(a0 % b0, r0); + + int3x4 a1 = int3x4(712321026, 1540068445, 1085897743, 1607489717, 165478511, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912); + int b1 = (172564850); + int3x4 r1 = int3x4(22061626, 159549645, 50508643, 54406067, 165478511, 130152166, 52883749, 49746751, 65367033, 49545706, 143379989, 17042712); + TestUtils.AreEqual(a1 % b1, r1); + + int3x4 a2 = int3x4(377501313, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372); + int b2 = (1778384846); + int3x4 r2 = int3x4(377501313, 1216011754, 812183417, 1153802502, 1642671870, 146325896, 665297470, 1568090825, 272598096, 435886407, 453990946, 1731665372); + TestUtils.AreEqual(a2 % b2, r2); + + int3x4 a3 = int3x4(586777590, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411, 1524342239); + int b3 = (1475597526); + int3x4 r3 = int3x4(586777590, 110051989, 1414579860, 416067455, 1262495021, 1400758118, 53934482, 430295164, 1386414018, 654749032, 666621411, 48744713); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mod_scalar_wide() + { + int a0 = (242383789); + int3x4 b0 = int3x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233); + int3x4 r0 = int3x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1298102643); + int3x4 b1 = int3x4(2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738); + int3x4 r1 = int3x4(1298102643, 297360552, 1298102643, 1298102643, 500917956, 476213801, 214909646, 457987657, 1298102643, 67782715, 1298102643, 1739061); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (2122220318); + int3x4 b2 = int3x4(164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894); + int3x4 r2 = int3x4(147283586, 662044080, 677274179, 816428281, 1011391307, 376773156, 120051662, 644373900, 76505386, 479992776, 159909553, 50931378); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1342085447); + int3x4 b3 = int3x4(448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751, 1648646354); + int3x4 r3 = int3x4(445362875, 3415371, 636619696, 588996674, 195741437, 241524871, 267605306, 1342085447, 1342085447, 1342085447, 243643696, 1342085447); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_plus() + { + int3x4 a0 = int3x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + int3x4 r0 = int3x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + TestUtils.AreEqual(+a0, r0); + + int3x4 a1 = int3x4(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + int3x4 r1 = int3x4(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + TestUtils.AreEqual(+a1, r1); + + int3x4 a2 = int3x4(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + int3x4 r2 = int3x4(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + TestUtils.AreEqual(+a2, r2); + + int3x4 a3 = int3x4(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + int3x4 r3 = int3x4(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int3x4_operator_neg() + { + int3x4 a0 = int3x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286); + int3x4 r0 = int3x4(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349, -1115028238, -1636274969, -694995093, -1542206286); + TestUtils.AreEqual(-a0, r0); + + int3x4 a1 = int3x4(213087293, 341522275, 841085242, 574159094, 1687250035, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864); + int3x4 r1 = int3x4(-213087293, -341522275, -841085242, -574159094, -1687250035, -2057919693, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864); + TestUtils.AreEqual(-a1, r1); + + int3x4 a2 = int3x4(1440774928, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868); + int3x4 r2 = int3x4(-1440774928, -431666091, -1387601718, -1745651998, -319115626, -1119959806, -739132284, -1954173314, -1709857098, -1836511050, -1662806453, -506144868); + TestUtils.AreEqual(-a2, r2); + + int3x4 a3 = int3x4(650922971, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551, 1768435578); + int3x4 r3 = int3x4(-650922971, -1273997249, -1474445187, -1853826947, -1695573773, -729452512, -345069360, -575867536, -594119038, -1201840609, -1342872551, -1768435578); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int3x4_operator_prefix_inc() + { + int3x4 a0 = int3x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935); + int3x4 r0 = int3x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936); + TestUtils.AreEqual(++a0, r0); + + int3x4 a1 = int3x4(1835605516, 388229350, 696475402, 1786514683, 993189311, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489); + int3x4 r1 = int3x4(1835605517, 388229351, 696475403, 1786514684, 993189312, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490); + TestUtils.AreEqual(++a1, r1); + + int3x4 a2 = int3x4(504806865, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111); + int3x4 r2 = int3x4(504806866, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112); + TestUtils.AreEqual(++a2, r2); + + int3x4 a3 = int3x4(1414867743, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802, 413165245); + int3x4 r3 = int3x4(1414867744, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803, 413165246); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int3x4_operator_postfix_inc() + { + int3x4 a0 = int3x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + int3x4 r0 = int3x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + TestUtils.AreEqual(a0++, r0); + + int3x4 a1 = int3x4(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + int3x4 r1 = int3x4(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + TestUtils.AreEqual(a1++, r1); + + int3x4 a2 = int3x4(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + int3x4 r2 = int3x4(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + TestUtils.AreEqual(a2++, r2); + + int3x4 a3 = int3x4(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + int3x4 r3 = int3x4(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int3x4_operator_prefix_dec() + { + int3x4 a0 = int3x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358); + int3x4 r0 = int3x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357); + TestUtils.AreEqual(--a0, r0); + + int3x4 a1 = int3x4(1914114460, 389120307, 1022184392, 1310293956, 356565557, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297); + int3x4 r1 = int3x4(1914114459, 389120306, 1022184391, 1310293955, 356565556, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296); + TestUtils.AreEqual(--a1, r1); + + int3x4 a2 = int3x4(220897829, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380); + int3x4 r2 = int3x4(220897828, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379); + TestUtils.AreEqual(--a2, r2); + + int3x4 a3 = int3x4(2083512379, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317, 767990877); + int3x4 r3 = int3x4(2083512378, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316, 767990876); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int3x4_operator_postfix_dec() + { + int3x4 a0 = int3x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + int3x4 r0 = int3x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + TestUtils.AreEqual(a0--, r0); + + int3x4 a1 = int3x4(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + int3x4 r1 = int3x4(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + TestUtils.AreEqual(a1--, r1); + + int3x4 a2 = int3x4(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + int3x4 r2 = int3x4(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + TestUtils.AreEqual(a2--, r2); + + int3x4 a3 = int3x4(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + int3x4 r3 = int3x4(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_and_wide_wide() + { + int3x4 a0 = int3x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + int3x4 b0 = int3x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + int3x4 r0 = int3x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a0 & b0, r0); + + int3x4 a1 = int3x4(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int3x4 b1 = int3x4(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int3x4 r1 = int3x4(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a1 & b1, r1); + + int3x4 a2 = int3x4(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + int3x4 b2 = int3x4(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + int3x4 r2 = int3x4(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a2 & b2, r2); + + int3x4 a3 = int3x4(1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + int3x4 b3 = int3x4(1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + int3x4 r3 = int3x4(706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_and_wide_scalar() + { + int3x4 a0 = int3x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920); + int b0 = (93423598); + int3x4 r0 = int3x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672); + TestUtils.AreEqual(a0 & b0, r0); + + int3x4 a1 = int3x4(1249238550, 1862276471, 143502472, 861733033, 1408932942, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025); + int b1 = (814629680); + int3x4 r1 = int3x4(279056, 536871216, 9175040, 806092832, 277479424, 805568528, 268452112, 9175824, 268567088, 268697600, 934144, 8650784); + TestUtils.AreEqual(a1 & b1, r1); + + int3x4 a2 = int3x4(462670926, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061); + int b2 = (1817145060); + int3x4 r2 = int3x4(134433860, 1145858724, 1816224836, 542076516, 739126372, 1611530816, 537593028, 604439716, 1140983364, 672014980, 1745571424, 1208165380); + TestUtils.AreEqual(a2 & b2, r2); + + int3x4 a3 = int3x4(398141788, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172, 1826788967); + int b3 = (156911041); + int3x4 r3 = int3x4(18481472, 17843457, 5783937, 156763393, 22151233, 138937729, 152585345, 4867329, 21643264, 132544, 4719616, 138544193); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int3x4 b0 = int3x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596); + int3x4 r0 = int3x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1763483957); + int3x4 b1 = int3x4(1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366); + int3x4 r1 = int3x4(1209041205, 136061185, 151265585, 1074528516, 1744830512, 671121697, 1092091952, 1761607941, 18391060, 1761615904, 1763221553, 1091051540); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1233066417); + int3x4 b2 = int3x4(1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007); + int3x4 r2 = int3x4(1214058640, 2230321, 1210847617, 1074401680, 1211367456, 1116577, 1232603553, 3674113, 1078202400, 136118672, 1098518961, 4128897); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1808619374); + int3x4 b3 = int3x4(1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681, 1980296380); + int3x4 r3 = int3x4(1246058336, 1644778764, 12650346, 1640318254, 1216610624, 587220044, 1644695918, 33834028, 734795298, 671961678, 1241777216, 1644708908); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_or_wide_wide() + { + int3x4 a0 = int3x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + int3x4 b0 = int3x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + int3x4 r0 = int3x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a0 | b0, r0); + + int3x4 a1 = int3x4(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int3x4 b1 = int3x4(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int3x4 r1 = int3x4(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a1 | b1, r1); + + int3x4 a2 = int3x4(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + int3x4 b2 = int3x4(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + int3x4 r2 = int3x4(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a2 | b2, r2); + + int3x4 a3 = int3x4(470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + int3x4 b3 = int3x4(1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + int3x4 r3 = int3x4(1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_or_wide_scalar() + { + int3x4 a0 = int3x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856); + int b0 = (1666102508); + int3x4 r0 = int3x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148); + TestUtils.AreEqual(a0 | b0, r0); + + int3x4 a1 = int3x4(879300408, 797240690, 1977614655, 46921989, 1980838747, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070); + int b1 = (1179087439); + int3x4 r1 = int3x4(1987018623, 1875378047, 2011657087, 1188035407, 1985442655, 1459090271, 1205302255, 1459058687, 1465382751, 1995407311, 1599567599, 2122316799); + TestUtils.AreEqual(a1 | b1, r1); + + int3x4 a2 = int3x4(2055963359, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200); + int b2 = (1511253082); + int3x4 r2 = int3x4(2057037535, 2077750875, 1579155451, 2069362559, 1590951034, 1534850271, 1593306847, 2050745566, 1519910623, 2117597023, 1604316378, 1600120154); + TestUtils.AreEqual(a2 | b2, r2); + + int3x4 a3 = int3x4(1353013374, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643, 142082352); + int b3 = (1349149982); + int3x4 r3 = int3x4(1357872510, 1895528286, 1374318015, 2012964638, 1550483390, 1602123263, 1483666815, 1920624063, 1458464191, 2012116286, 1424685023, 1484416318); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int3x4 b0 = int3x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649); + int3x4 r0 = int3x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1059093741); + int3x4 b1 = int3x4(627815046, 418822515, 83214352, 424663473, 447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329); + int3x4 r1 = int3x4(1064042223, 1073151487, 1073085693, 1064304125, 1068727789, 1063910895, 2133818605, 1060240621, 2145910509, 2138209533, 2146074365, 2142830317); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1088734150); + int3x4 b2 = int3x4(298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598); + int3x4 r2 = int3x4(1374682086, 2063067087, 1660812255, 1743570934, 1945042926, 1089859558, 1911943150, 2079645678, 1627375606, 1307434967, 1341444039, 1526649806); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (1098359242); + int3x4 b3 = int3x4(997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616, 1326199854); + int3x4 r3 = int3x4(2071978954, 1098885598, 2071455727, 1702356954, 1098381823, 1568651246, 2046802926, 1509946863, 2038414794, 1644161007, 1308081658, 1333769710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_xor_wide_wide() + { + int3x4 a0 = int3x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + int3x4 b0 = int3x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + int3x4 r0 = int3x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x4 a1 = int3x4(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int3x4 b1 = int3x4(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int3x4 r1 = int3x4(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x4 a2 = int3x4(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + int3x4 b2 = int3x4(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + int3x4 r2 = int3x4(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x4 a3 = int3x4(1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + int3x4 b3 = int3x4(1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + int3x4 r3 = int3x4(632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_xor_wide_scalar() + { + int3x4 a0 = int3x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267); + int b0 = (493665894); + int3x4 r0 = int3x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x4 a1 = int3x4(125659640, 1730088797, 116862046, 375757978, 491079274, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924); + int b1 = (1315625690); + int3x4 r1 = int3x4(1226289954, 695588231, 1218311812, 1477396032, 1395629232, 1158101236, 1162708111, 2010043079, 1856848613, 1753692570, 1315361570, 373338582); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x4 a2 = int3x4(1680011736, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239); + int b2 = (447453839); + int3x4 r2 = int3x4(2122935127, 800240497, 198659571, 98559616, 86185743, 1221222109, 1565485394, 630017616, 919085284, 427397619, 1988160398, 446789440); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x4 a3 = int3x4(476052372, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185, 1771744425); + int b3 = (92561487); + int3x4 r3 = int3x4(433822683, 2133436125, 133297725, 1274987888, 2020970994, 180462097, 52620731, 1114759625, 2024733453, 2005017615, 912470822, 1813957862); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int3x4 b0 = int3x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424); + int3x4 r0 = int3x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1947871003); + int3x4 b1 = int3x4(1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881); + int3x4 r1 = int3x4(500881003, 132477417, 876677487, 1699258642, 645842392, 1138923504, 974408494, 2033457704, 1087830061, 1348553799, 2139822446, 660194722); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (573581481); + int3x4 b2 = int3x4(1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615); + int3x4 r2 = int3x4(1311539225, 655981444, 1435501080, 2003229500, 399194716, 2022579220, 693043286, 145445825, 880683118, 787181808, 2146955403, 205673470); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (711527976); + int3x4 b3 = int3x4(710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645, 896851285); + int3x4 r3 = int3x4(3284335, 658000982, 154339351, 2085169939, 946304861, 44451568, 2115414221, 2137251591, 317021346, 552683235, 1575100285, 522048381); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_left_shift() + { + int3x4 a0 = int3x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534); + int b0 = (1321149625); + int3x4 r0 = int3x4(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464, -1409286144, 838860800, -872415232, -1409286144); + TestUtils.AreEqual(a0 << b0, r0); + + int3x4 a1 = int3x4(1447702302, 35667343, 1664454606, 2045594989, 2077023268, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181); + int b1 = (1079614371); + int3x4 r1 = int3x4(-1303283472, 285338744, 430734960, -815109272, -563683040, 446462192, -1912924008, 897198008, 703071480, 298127560, -607585048, -711260440); + TestUtils.AreEqual(a1 << b1, r1); + + int3x4 a2 = int3x4(263886278, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192); + int b2 = (221147365); + int3x4 r2 = int3x4(-145573696, -2025378080, -1200788480, -2010056960, -1775845888, -1021463552, 1296563040, -1738194528, 1884213760, -928070976, 160790208, 31956480); + TestUtils.AreEqual(a2 << b2, r2); + + int3x4 a3 = int3x4(740058147, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326, 1996060114); + int b3 = (946058001); + int3x4 r3 = int3x4(-934936576, -87949312, 1441398784, -1265369088, -5373952, -1576271872, -614334464, 1110573056, 1163132928, 173408256, 1445724160, -341573632); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_right_shift() + { + int3x4 a0 = int3x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045); + int b0 = (1266801540); + int3x4 r0 = int3x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440); + TestUtils.AreEqual(a0 >> b0, r0); + + int3x4 a1 = int3x4(701927980, 569504877, 185593382, 1102123711, 334005460, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762); + int b1 = (917785020); + int3x4 r1 = int3x4(2, 2, 0, 4, 1, 6, 1, 5, 6, 2, 4, 1); + TestUtils.AreEqual(a1 >> b1, r1); + + int3x4 a2 = int3x4(763607760, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381); + int b2 = (348013684); + int3x4 r2 = int3x4(728, 1495, 738, 1513, 572, 28, 1793, 335, 1110, 405, 177, 1048); + TestUtils.AreEqual(a2 >> b2, r2); + + int3x4 a3 = int3x4(1234295294, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981, 1435331003); + int b3 = (1028666766); + int3x4 r3 = int3x4(75335, 46488, 76590, 55139, 72040, 11168, 58514, 65650, 86028, 96236, 42779, 87605); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_not() + { + int3x4 a0 = int3x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024); + int3x4 r0 = int3x4(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857, -472965492, -771711427, -627580961, -2061524025); + TestUtils.AreEqual(~a0, r0); + + int3x4 a1 = int3x4(753208488, 1303022493, 664744603, 1289372466, 1635981125, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321); + int3x4 r1 = int3x4(-753208489, -1303022494, -664744604, -1289372467, -1635981126, -1951018597, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322); + TestUtils.AreEqual(~a1, r1); + + int3x4 a2 = int3x4(1282546942, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829); + int3x4 r2 = int3x4(-1282546943, -1824824811, -1736570716, -508906059, -2060752881, -1867418757, -388530275, -695179853, -1766938040, -897923627, -1816190465, -1362906830); + TestUtils.AreEqual(~a2, r2); + + int3x4 a3 = int3x4(1227946838, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010, 722020848); + int3x4 r3 = int3x4(-1227946839, -189609279, -956441809, -2123488811, -1593014252, -19223062, -1722107955, -1636875695, -1914097393, -1382545028, -1285277011, -722020849); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x4.gen.cs.meta new file mode 100644 index 0000000..281cb7b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6cb6aa9b75ca25439dd64f10fe7d737 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4.gen.cs new file mode 100644 index 0000000..456e9b7 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4.gen.cs @@ -0,0 +1,1353 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt4 + { + [TestCompiler] + public static void int4_zero() + { + TestUtils.AreEqual(int4.zero.x, 0); + TestUtils.AreEqual(int4.zero.y, 0); + TestUtils.AreEqual(int4.zero.z, 0); + TestUtils.AreEqual(int4.zero.w, 0); + } + + [TestCompiler] + public static void int4_constructor() + { + int4 a = new int4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void int4_scalar_constructor() + { + int4 a = new int4(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + TestUtils.AreEqual(a.z, 17); + TestUtils.AreEqual(a.w, 17); + } + + [TestCompiler] + public static void int4_static_constructor() + { + int4 a = int4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void int4_static_scalar_constructor() + { + int4 a = int4(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + TestUtils.AreEqual(a.z, 17); + TestUtils.AreEqual(a.w, 17); + } + + [TestCompiler] + public static void int4_operator_equal_wide_wide() + { + int4 a0 = int4(790229414, 970783976, 1428432738, 1578747135); + int4 b0 = int4(612337669, 1214209108, 2120643427, 295461214); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4 a1 = int4(1733797753, 2001507228, 1446876437, 1777406370); + int4 b1 = int4(1510890331, 1893316566, 921816149, 1834958575); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4 a2 = int4(1426387268, 1809275021, 1843770816, 1172185222); + int4 b2 = int4(1482011863, 2062852792, 226398742, 770290735); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4 a3 = int4(1469608940, 869874758, 458603090, 581282460); + int4 b3 = int4(36812057, 543224481, 1565350150, 1909926604); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4_operator_equal_wide_scalar() + { + int4 a0 = int4(1211464300, 1921862607, 508076684, 1249127920); + int b0 = (746972502); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4 a1 = int4(1394594555, 1733655277, 1884008277, 1682018538); + int b1 = (746862310); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4 a2 = int4(795585660, 927605411, 672785749, 1465584610); + int b2 = (936027116); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4 a3 = int4(585324157, 969511077, 442746747, 1772925698); + int b3 = (404448210); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int4 b0 = int4(233855098, 924242519, 1402948791, 601381975); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (2120518068); + int4 b1 = int4(629187703, 1971977031, 47183124, 1061805787); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1009011238); + int4 b2 = int4(312511148, 1460673064, 737210539, 1737844479); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1892405453); + int4 b3 = int4(2133024000, 455818693, 2003197687, 1276241219); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4_operator_not_equal_wide_wide() + { + int4 a0 = int4(1660932106, 982847023, 97046264, 1739517447); + int4 b0 = int4(107139049, 75478496, 2055495054, 358586687); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4 a1 = int4(1253499180, 1830584069, 1841470429, 1397841646); + int4 b1 = int4(942338347, 111564990, 113811950, 948912488); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4 a2 = int4(1770890135, 1906548631, 169082967, 2099271786); + int4 b2 = int4(1080084121, 1400504872, 1032134499, 1061123400); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4 a3 = int4(1909317609, 46519139, 1433204003, 931492669); + int4 b3 = int4(221862069, 858950046, 989094643, 2023070999); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4_operator_not_equal_wide_scalar() + { + int4 a0 = int4(747758183, 1033001286, 1439973882, 2138928797); + int b0 = (248693828); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4 a1 = int4(1197845089, 950170763, 238704450, 2105962247); + int b1 = (1432672459); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4 a2 = int4(727205263, 276313906, 2126300423, 791998981); + int b2 = (1640688041); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4 a3 = int4(2035077187, 1412347883, 1622176923, 768370497); + int b3 = (1171827730); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int4 b0 = int4(2037494727, 1989050616, 48833929, 1897435904); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (514354517); + int4 b1 = int4(1783749164, 364694471, 754315072, 124108032); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (1512967900); + int4 b2 = int4(1178825850, 1854793298, 50286949, 2100802631); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1640811853); + int4 b3 = int4(82110247, 472172806, 266984506, 2003668365); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_wide_wide() + { + int4 a0 = int4(1182186063, 415538999, 1667335818, 1566618442); + int4 b0 = int4(524633529, 1032195686, 760723389, 1505751409); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int4 a1 = int4(1166180837, 639095188, 1080836365, 771119973); + int4 b1 = int4(431962172, 1287906509, 1560084663, 1450178202); + bool4 r1 = bool4(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4 a2 = int4(928263233, 789225474, 665243110, 1003542034); + int4 b2 = int4(2066166337, 1107069023, 1640077524, 2103263105); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4 a3 = int4(1032480172, 1961336172, 923379558, 21210619); + int4 b3 = int4(684229139, 1234033624, 1278743281, 1953079347); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_wide_scalar() + { + int4 a0 = int4(608447185, 818840405, 869219329, 2080125385); + int b0 = (1491216667); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int4 a1 = int4(1214500548, 1667165786, 1615392341, 840091491); + int b1 = (1361741203); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4 a2 = int4(469591900, 315321650, 930950514, 1100560246); + int b2 = (1247103789); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4 a3 = int4(933855388, 1127696709, 1286331950, 380753337); + int b3 = (908563901); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_scalar_wide() + { + int a0 = (548436837); + int4 b0 = int4(282703327, 14370648, 1862117300, 1304793311); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (826073259); + int4 b1 = int4(988910157, 445132446, 1139670255, 111349251); + bool4 r1 = bool4(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1102440676); + int4 b2 = int4(112183144, 1594415311, 1890019295, 2098715503); + bool4 r2 = bool4(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (608933527); + int4 b3 = int4(183989010, 1596056507, 1027318999, 146281093); + bool4 r3 = bool4(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_wide_wide() + { + int4 a0 = int4(592884447, 2133928932, 918957182, 1284069471); + int4 b0 = int4(138737040, 192863971, 1700841444, 1044631301); + bool4 r0 = bool4(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int4 a1 = int4(194584707, 739120780, 241654068, 1340158550); + int4 b1 = int4(1391589821, 730837695, 253553987, 2078872742); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int4 a2 = int4(2099542537, 1182623667, 1399607274, 789301637); + int4 b2 = int4(910845808, 976047676, 202633078, 1223618940); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4 a3 = int4(180400925, 594688333, 1877031463, 1360073500); + int4 b3 = int4(641600530, 1830470354, 1570701388, 1104256103); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_wide_scalar() + { + int4 a0 = int4(1097138316, 211763648, 1883002501, 56406996); + int b0 = (438688675); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int4 a1 = int4(43662641, 1437755186, 1219010035, 2125058448); + int b1 = (1923456111); + bool4 r1 = bool4(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4 a2 = int4(304028799, 48044515, 711945018, 1035679270); + int b2 = (893125636); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int4 a3 = int4(577943770, 1016617211, 2063134811, 1577403353); + int b3 = (572743717); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int4 b0 = int4(599356784, 185671342, 1932327391, 2025591013); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1257191721); + int4 b1 = int4(1312388500, 1443698859, 779217735, 691047512); + bool4 r1 = bool4(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (741776730); + int4 b2 = int4(732565983, 668302204, 1556466996, 858599525); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (1896917159); + int4 b3 = int4(701542098, 1052151621, 1023307544, 1435392907); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_equal_wide_wide() + { + int4 a0 = int4(1577248162, 2043073061, 1688380407, 176431985); + int4 b0 = int4(903445031, 2108974565, 210822256, 1281704747); + bool4 r0 = bool4(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4 a1 = int4(223299035, 1502802140, 1691709825, 386789394); + int4 b1 = int4(453681718, 66138830, 1229799377, 1620922595); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4 a2 = int4(117182003, 1665770435, 1958490731, 420032601); + int4 b2 = int4(1715833766, 1366430432, 13102000, 46919981); + bool4 r2 = bool4(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4 a3 = int4(1251092689, 2011681765, 749743684, 183784440); + int4 b3 = int4(486470891, 1709514236, 2145785285, 854254454); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_equal_wide_scalar() + { + int4 a0 = int4(1722165358, 1219858357, 860410743, 411099660); + int b0 = (1688048545); + bool4 r0 = bool4(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4 a1 = int4(348104022, 212084836, 58924407, 1459242706); + int b1 = (1963256951); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4 a2 = int4(1745758438, 262559763, 690091301, 1806172431); + int b2 = (532949158); + bool4 r2 = bool4(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4 a3 = int4(2091514001, 1617221948, 2017733017, 804204255); + int b3 = (1857173043); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int4 b0 = int4(1181030049, 1787703989, 1729760948, 1816537388); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1359786460); + int4 b1 = int4(874999193, 1678863148, 1711365839, 762067160); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (11953554); + int4 b2 = int4(1131583906, 1175393186, 1293698493, 48893340); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (66196247); + int4 b3 = int4(1958607116, 1576473309, 861890786, 478252419); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_equal_wide_wide() + { + int4 a0 = int4(263000030, 744235661, 1893760267, 237248); + int4 b0 = int4(1395535146, 1178373944, 1237373760, 1364855321); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4 a1 = int4(1062370984, 1676977687, 816766880, 1089431546); + int4 b1 = int4(600811864, 362060472, 290870624, 1839067862); + bool4 r1 = bool4(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int4 a2 = int4(1394493730, 1176473380, 1193988637, 1703862455); + int4 b2 = int4(396958580, 1336888643, 1019684398, 1697684196); + bool4 r2 = bool4(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int4 a3 = int4(1806186947, 1253571980, 589397635, 1951842887); + int4 b3 = int4(1227300220, 2044269675, 1898323839, 874509380); + bool4 r3 = bool4(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_equal_wide_scalar() + { + int4 a0 = int4(2112791350, 1043657935, 101764761, 1529909067); + int b0 = (1470533736); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int4 a1 = int4(556026890, 1186600258, 815093894, 609211196); + int b1 = (281734132); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4 a2 = int4(1604309397, 244604867, 1419295004, 471843809); + int b2 = (829548642); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int4 a3 = int4(1819986195, 1646290021, 196833647, 1596738181); + int b3 = (1460027917); + bool4 r3 = bool4(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int4 b0 = int4(1503244746, 861711266, 817773856, 925984572); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (571221723); + int4 b1 = int4(683686810, 118252990, 1653952090, 1240253990); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1947039008); + int4 b2 = int4(1869136019, 152012637, 1214546726, 917376832); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (303549425); + int4 b3 = int4(2111728811, 945321577, 173706579, 625318949); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4_operator_add_wide_wide() + { + int4 a0 = int4(2049228671, 1658660009, 491719392, 937013355); + int4 b0 = int4(2088751567, 645762023, 306868786, 4360271); + int4 r0 = int4(-156987058, -1990545264, 798588178, 941373626); + TestUtils.AreEqual(a0 + b0, r0); + + int4 a1 = int4(81108663, 1063894558, 86954702, 843159721); + int4 b1 = int4(506047997, 2094559874, 1634712736, 1601474440); + int4 r1 = int4(587156660, -1136512864, 1721667438, -1850333135); + TestUtils.AreEqual(a1 + b1, r1); + + int4 a2 = int4(698977704, 192867135, 1683407172, 137301303); + int4 b2 = int4(1586485231, 908746788, 1812370320, 1247342357); + int4 r2 = int4(-2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a2 + b2, r2); + + int4 a3 = int4(2103582820, 526139155, 447937230, 2127411006); + int4 b3 = int4(2043773873, 223363428, 175115707, 985928617); + int4 r3 = int4(-147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4_operator_add_wide_scalar() + { + int4 a0 = int4(2038218457, 134923711, 875689667, 1338884463); + int b0 = (2124409227); + int4 r0 = int4(-132339612, -2035634358, -1294868402, -831673606); + TestUtils.AreEqual(a0 + b0, r0); + + int4 a1 = int4(997710928, 1067888129, 70433301, 2003021861); + int b1 = (340490871); + int4 r1 = int4(1338201799, 1408379000, 410924172, -1951454564); + TestUtils.AreEqual(a1 + b1, r1); + + int4 a2 = int4(1635971971, 85446202, 1068152966, 1239387100); + int b2 = (1160398286); + int4 r2 = int4(-1498597039, 1245844488, -2066416044, -1895181910); + TestUtils.AreEqual(a2 + b2, r2); + + int4 a3 = int4(1497676888, 1095438654, 756559204, 1818718931); + int b3 = (1727477485); + int4 r3 = int4(-1069812923, -1472051157, -1810930607, -748770880); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4_operator_add_scalar_wide() + { + int a0 = (391092078); + int4 b0 = int4(519908870, 851424292, 328314822, 135622204); + int4 r0 = int4(911000948, 1242516370, 719406900, 526714282); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (740923360); + int4 b1 = int4(655394201, 1451896269, 1781697072, 996031825); + int4 r1 = int4(1396317561, -2102147667, -1772346864, 1736955185); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1557774949); + int4 b2 = int4(779774940, 1111541302, 783046445, 1130163944); + int4 r2 = int4(-1957417407, -1625651045, -1954145902, -1607028403); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (288279584); + int4 b3 = int4(1397683861, 1636583489, 673263339, 1469300874); + int4 r3 = int4(1685963445, 1924863073, 961542923, 1757580458); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4_operator_sub_wide_wide() + { + int4 a0 = int4(1353441118, 797269833, 659988112, 56022121); + int4 b0 = int4(1332656812, 1827794007, 972557431, 2078233689); + int4 r0 = int4(20784306, -1030524174, -312569319, -2022211568); + TestUtils.AreEqual(a0 - b0, r0); + + int4 a1 = int4(365847472, 2062899435, 1380988474, 799885138); + int4 b1 = int4(1508184327, 1372307701, 810327977, 936799885); + int4 r1 = int4(-1142336855, 690591734, 570660497, -136914747); + TestUtils.AreEqual(a1 - b1, r1); + + int4 a2 = int4(1306058185, 579775276, 1239163824, 344591081); + int4 b2 = int4(71562303, 1418723328, 1971342989, 1226053395); + int4 r2 = int4(1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a2 - b2, r2); + + int4 a3 = int4(86359575, 1049709943, 721529513, 1767221271); + int4 b3 = int4(136565478, 1979903295, 600719425, 837912956); + int4 r3 = int4(-50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4_operator_sub_wide_scalar() + { + int4 a0 = int4(1176369558, 1934521195, 309452150, 1417634074); + int b0 = (462232403); + int4 r0 = int4(714137155, 1472288792, -152780253, 955401671); + TestUtils.AreEqual(a0 - b0, r0); + + int4 a1 = int4(108910717, 1502312334, 1451794815, 281174200); + int b1 = (1306356714); + int4 r1 = int4(-1197445997, 195955620, 145438101, -1025182514); + TestUtils.AreEqual(a1 - b1, r1); + + int4 a2 = int4(87530840, 2041593336, 557239990, 1119051448); + int b2 = (1913724431); + int4 r2 = int4(-1826193591, 127868905, -1356484441, -794672983); + TestUtils.AreEqual(a2 - b2, r2); + + int4 a3 = int4(1590376732, 816382635, 815920639, 1829033117); + int b3 = (819090189); + int4 r3 = int4(771286543, -2707554, -3169550, 1009942928); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int4 b0 = int4(2022393810, 1612688515, 496689713, 887037586); + int4 r0 = int4(-330859405, 78845890, 1194844692, 804496819); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (2097630964); + int4 b1 = int4(374934538, 939035482, 935242277, 1789300421); + int4 r1 = int4(1722696426, 1158595482, 1162388687, 308330543); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (264712893); + int4 b2 = int4(1231856067, 1818112748, 1428436109, 1258745460); + int4 r2 = int4(-967143174, -1553399855, -1163723216, -994032567); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1077380396); + int4 b3 = int4(1330722719, 518111829, 967128529, 344666254); + int4 r3 = int4(-253342323, 559268567, 110251867, 732714142); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4_operator_mul_wide_wide() + { + int4 a0 = int4(245827027, 208934650, 1019478917, 568231809); + int4 b0 = int4(759663997, 350129201, 477450108, 1635735015); + int4 r0 = int4(-632811769, 1402281434, 332447596, -1932977561); + TestUtils.AreEqual(a0 * b0, r0); + + int4 a1 = int4(877289039, 1585782440, 2111178729, 1186019069); + int4 b1 = int4(388710278, 757722665, 1509388321, 1841703980); + int4 r1 = int4(-1670918566, 1455036648, 2128344329, -594088068); + TestUtils.AreEqual(a1 * b1, r1); + + int4 a2 = int4(571481445, 1570087048, 629447153, 619383734); + int4 b2 = int4(1826369331, 1524322467, 1605207974, 428419155); + int4 r2 = int4(-1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a2 * b2, r2); + + int4 a3 = int4(2055121568, 700402816, 263414349, 187830569); + int4 b3 = int4(1460605791, 1968043860, 771161742, 2037340417); + int4 r3 = int4(990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4_operator_mul_wide_scalar() + { + int4 a0 = int4(1762033447, 465343930, 1570757881, 1326409563); + int b0 = (1476837906); + int4 r0 = int4(-1313177922, 1326807828, -2138555518, -276153754); + TestUtils.AreEqual(a0 * b0, r0); + + int4 a1 = int4(1824319147, 72749215, 154616909, 975743632); + int b1 = (1356578909); + int4 r1 = int4(-236385249, 130042307, 1244434425, -1981680048); + TestUtils.AreEqual(a1 * b1, r1); + + int4 a2 = int4(573770299, 971327747, 1818877398, 1324050764); + int b2 = (1958912969); + int4 r2 = int4(-699623085, 583613531, -1685426426, 377032876); + TestUtils.AreEqual(a2 * b2, r2); + + int4 a3 = int4(660611671, 391009467, 1186856590, 890343818); + int b3 = (1279757657); + int4 r3 = int4(-42542273, 1120105475, -22825634, 1972017914); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4_operator_mul_scalar_wide() + { + int a0 = (99541948); + int4 b0 = int4(1764461774, 657072478, 1459784358, 1610646683); + int4 r0 = int4(-950398648, -102049016, 1260585960, 1158730452); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1632058826); + int4 b1 = int4(868441654, 1408757883, 335917146, 2105124483); + int4 r1 = int4(-57330532, -1559359474, 712546564, -805332386); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1178393968); + int4 b2 = int4(1963904348, 1409533767, 243286231, 1336308795); + int4 r2 = int4(1196573760, 592673296, 209320208, -352466736); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (517963367); + int4 b3 = int4(1733623488, 459880225, 994616533, 1420531535); + int4 r3 = int4(-774570176, -1271501753, 652617651, -1789672759); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4_operator_div_wide_wide() + { + int4 a0 = int4(1590198532, 507812502, 126627032, 1058247011); + int4 b0 = int4(1434703236, 911965201, 390415521, 128746927); + int4 r0 = int4(1, 0, 0, 8); + TestUtils.AreEqual(a0 / b0, r0); + + int4 a1 = int4(427387861, 290676154, 1829594484, 1127868739); + int4 b1 = int4(525835375, 816946613, 878264647, 146789678); + int4 r1 = int4(0, 0, 2, 7); + TestUtils.AreEqual(a1 / b1, r1); + + int4 a2 = int4(499016351, 1341209632, 134906097, 785470242); + int4 b2 = int4(2089524057, 254213018, 1916850021, 1737806518); + int4 r2 = int4(0, 5, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int4 a3 = int4(788249865, 1099825433, 1552968283, 1822367139); + int4 b3 = int4(1906634983, 437754923, 825037958, 902508708); + int4 r3 = int4(0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4_operator_div_wide_scalar() + { + int4 a0 = int4(560951562, 1218680769, 375341724, 1613542090); + int b0 = (947861580); + int4 r0 = int4(0, 1, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int4 a1 = int4(1919409166, 1349573078, 524526253, 341995568); + int b1 = (1397425408); + int4 r1 = int4(1, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4 a2 = int4(495895326, 1676971657, 2131487088, 2105094094); + int b2 = (1515313790); + int4 r2 = int4(0, 1, 1, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int4 a3 = int4(1017891310, 1646044372, 1447236569, 107215658); + int b3 = (542666029); + int4 r3 = int4(1, 3, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4_operator_div_scalar_wide() + { + int a0 = (1161272038); + int4 b0 = int4(187325733, 1594107378, 2016183849, 1589343709); + int4 r0 = int4(6, 0, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (388768753); + int4 b1 = int4(1417077283, 1773486938, 1154044032, 81831373); + int4 r1 = int4(0, 0, 0, 4); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1476877645); + int4 b2 = int4(653688843, 45756703, 631027637, 396671391); + int4 r2 = int4(2, 32, 2, 3); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (784365696); + int4 b3 = int4(1250594097, 1818363859, 1653451772, 270557729); + int4 r3 = int4(0, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4_operator_mod_wide_wide() + { + int4 a0 = int4(146150818, 1846543305, 1071447756, 308965362); + int4 b0 = int4(983050390, 771341152, 942375212, 367361754); + int4 r0 = int4(146150818, 303861001, 129072544, 308965362); + TestUtils.AreEqual(a0 % b0, r0); + + int4 a1 = int4(659881575, 1002365460, 861198439, 1510617532); + int4 b1 = int4(749500619, 750718852, 2095151755, 88438806); + int4 r1 = int4(659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a1 % b1, r1); + + int4 a2 = int4(778525078, 1458458044, 101987897, 1249565173); + int4 b2 = int4(769227442, 647214624, 1026513788, 1544950956); + int4 r2 = int4(9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a2 % b2, r2); + + int4 a3 = int4(938026607, 1692541775, 1518877124, 1806965510); + int4 b3 = int4(160166322, 1099108075, 1158422232, 1798905209); + int4 r3 = int4(137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4_operator_mod_wide_scalar() + { + int4 a0 = int4(164800505, 1062177828, 1898749675, 1701653318); + int b0 = (883951171); + int4 r0 = int4(164800505, 178226657, 130847333, 817702147); + TestUtils.AreEqual(a0 % b0, r0); + + int4 a1 = int4(820393245, 128329633, 1464010899, 896587769); + int b1 = (19002208); + int4 r1 = int4(3298301, 14316385, 840883, 3483993); + TestUtils.AreEqual(a1 % b1, r1); + + int4 a2 = int4(405208598, 959236935, 712321026, 172564850); + int b2 = (1982762194); + int4 r2 = int4(405208598, 959236935, 712321026, 172564850); + TestUtils.AreEqual(a2 % b2, r2); + + int4 a3 = int4(1540068445, 1607489717, 165478511, 647846716); + int b3 = (1085897743); + int4 r3 = int4(454170702, 521591974, 165478511, 647846716); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4_operator_mod_scalar_wide() + { + int a0 = (242383789); + int4 b0 = int4(740000543, 1556450291, 1104736385, 437976569); + int4 r0 = int4(242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1911837205); + int4 b1 = int4(1507212038, 1906405167, 247693265, 293460573); + int4 r1 = int4(404625167, 5432038, 177984350, 151073767); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1495295166); + int4 b2 = int4(873323603, 530681233, 1298102643, 2057984657); + int4 r2 = int4(621971563, 433932700, 197192523, 1495295166); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1000742091); + int4 b3 = int4(1461372131, 1859742342, 797184687, 821888842); + int4 r3 = int4(1000742091, 1000742091, 203557404, 178853249); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4_operator_plus() + { + int4 a0 = int4(1643476803, 907898539, 379615839, 1140483021); + int4 r0 = int4(1643476803, 907898539, 379615839, 1140483021); + TestUtils.AreEqual(+a0, r0); + + int4 a1 = int4(1735287433, 1472881565, 339091479, 401565897); + int4 r1 = int4(1735287433, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a1, r1); + + int4 a2 = int4(1287765427, 174532915, 1864850812, 1566098441); + int4 r2 = int4(1287765427, 174532915, 1864850812, 1566098441); + TestUtils.AreEqual(+a2, r2); + + int4 a3 = int4(1145639744, 2049663954, 1723005749, 409076474); + int4 r3 = int4(1145639744, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int4_operator_neg() + { + int4 a0 = int4(1955022112, 662160019, 370300775, 2141283773); + int4 r0 = int4(-1955022112, -662160019, -370300775, -2141283773); + TestUtils.AreEqual(-a0, r0); + + int4 a1 = int4(1004505619, 33894270, 505708349, 1115028238); + int4 r1 = int4(-1004505619, -33894270, -505708349, -1115028238); + TestUtils.AreEqual(-a1, r1); + + int4 a2 = int4(1636274969, 1542206286, 213087293, 243937487); + int4 r2 = int4(-1636274969, -1542206286, -213087293, -243937487); + TestUtils.AreEqual(-a2, r2); + + int4 a3 = int4(341522275, 574159094, 1687250035, 2057919693); + int4 r3 = int4(-341522275, -574159094, -1687250035, -2057919693); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int4_operator_prefix_inc() + { + int4 a0 = int4(864455342, 2035793213, 1275443862, 971919915); + int4 r0 = int4(864455343, 2035793214, 1275443863, 971919916); + TestUtils.AreEqual(++a0, r0); + + int4 a1 = int4(411610189, 395072276, 115573442, 913293639); + int4 r1 = int4(411610190, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a1, r1); + + int4 a2 = int4(432884105, 1385544935, 1835605516, 831396561); + int4 r2 = int4(432884106, 1385544936, 1835605517, 831396562); + TestUtils.AreEqual(++a2, r2); + + int4 a3 = int4(388229350, 1786514683, 993189311, 752093909); + int4 r3 = int4(388229351, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int4_operator_postfix_inc() + { + int4 a0 = int4(1751003569, 2063707595, 1500486291, 969189211); + int4 r0 = int4(1751003569, 2063707595, 1500486291, 969189211); + TestUtils.AreEqual(a0++, r0); + + int4 a1 = int4(1007848192, 1643023524, 1190630527, 1396179607); + int4 r1 = int4(1007848192, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a1++, r1); + + int4 a2 = int4(708474528, 1524860667, 1408994706, 375284401); + int4 r2 = int4(708474528, 1524860667, 1408994706, 375284401); + TestUtils.AreEqual(a2++, r2); + + int4 a3 = int4(1580130369, 717006530, 506142468, 732199129); + int4 r3 = int4(1580130369, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int4_operator_prefix_dec() + { + int4 a0 = int4(200904609, 871077500, 968578728, 638967721); + int4 r0 = int4(200904608, 871077499, 968578727, 638967720); + TestUtils.AreEqual(--a0, r0); + + int4 a1 = int4(1995396216, 1782514098, 1589827826, 1434377580); + int4 r1 = int4(1995396215, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a1, r1); + + int4 a2 = int4(596759698, 1758478358, 1914114460, 71237375); + int4 r2 = int4(596759697, 1758478357, 1914114459, 71237374); + TestUtils.AreEqual(--a2, r2); + + int4 a3 = int4(389120307, 1310293956, 356565557, 18299409); + int4 r3 = int4(389120306, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int4_operator_postfix_dec() + { + int4 a0 = int4(283970262, 1109329936, 1073216143, 649439137); + int4 r0 = int4(283970262, 1109329936, 1073216143, 649439137); + TestUtils.AreEqual(a0--, r0); + + int4 a1 = int4(1932646215, 484207852, 524156737, 691209285); + int4 r1 = int4(1932646215, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a1--, r1); + + int4 a2 = int4(2017728859, 377162390, 526366486, 1504625034); + int4 r2 = int4(2017728859, 377162390, 526366486, 1504625034); + TestUtils.AreEqual(a2--, r2); + + int4 a3 = int4(590919177, 1867810045, 2095777993, 670715645); + int4 r3 = int4(590919177, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_and_wide_wide() + { + int4 a0 = int4(779935043, 1097962163, 1939593304, 800599247); + int4 b0 = int4(307705143, 1710882162, 866836769, 532490608); + int4 r0 = int4(39064835, 1097961522, 864731136, 263727168); + TestUtils.AreEqual(a0 & b0, r0); + + int4 a1 = int4(952140918, 782792558, 1608557706, 396446406); + int4 b1 = int4(679371720, 1794035877, 1439832202, 519529812); + int4 r1 = int4(675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a1 & b1, r1); + + int4 a2 = int4(2039894114, 1286974642, 442394124, 1759739564); + int4 b2 = int4(23633139, 1209152681, 646737179, 1255867027); + int4 r2 = int4(16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a2 & b2, r2); + + int4 a3 = int4(233435438, 665207770, 1942050241, 1022352952); + int4 b3 = int4(1900854122, 413173763, 1409138251, 2087190272); + int4 r3 = int4(21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_and_wide_scalar() + { + int4 a0 = int4(443615469, 490057985, 2042441263, 1524760558); + int b0 = (93423598); + int4 r0 = int4(1114348, 85033216, 26281518, 8488942); + TestUtils.AreEqual(a0 & b0, r0); + + int4 a1 = int4(1405175110, 1941875181, 1236735839, 1365509729); + int b1 = (510212004); + int4 r1 = int4(306251012, 304619940, 136386308, 274728480); + TestUtils.AreEqual(a1 & b1, r1); + + int4 a2 = int4(428270198, 650270920, 1249238550, 814629680); + int b2 = (607982857); + int4 r2 = int4(262144, 603983880, 3478528, 537657600); + TestUtils.AreEqual(a2 & b2, r2); + + int4 a3 = int4(1862276471, 861733033, 1408932942, 957693145); + int b3 = (143502472); + int4 r3 = int4(134218752, 852104, 8948744, 134556808); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int4 b0 = int4(420346723, 562416448, 1393127318, 1560699552); + int4 r0 = int4(547170, 18752, 1074284806, 1140867104); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (851218057); + int4 b1 = int4(703880958, 1159378889, 2031211279, 1089518981); + int4 r1 = int4(548671112, 1607305, 806388233, 11570305); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (270607307); + int4 b2 = int4(1349288930, 520199596, 1763483957, 1248975349); + int4 r2 = int4(270533570, 268501384, 8449, 2163137); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (236938635); + int4 b3 = int4(185023291, 1085233038, 1845693112, 946052961); + int4 r3 = int4(168239371, 1000842, 235077768, 134415617); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_or_wide_wide() + { + int4 a0 = int4(1731159103, 659068416, 382702471, 1821032196); + int4 b0 = int4(1583847161, 692672727, 1161585489, 1756207130); + int4 r0 = int4(2138044159, 793370327, 1476391895, 1823457054); + TestUtils.AreEqual(a0 | b0, r0); + + int4 a1 = int4(1565773438, 1004000514, 948501377, 600951835); + int4 b1 = int4(1321374429, 1287357212, 2075767170, 1273513430); + int4 r1 = int4(1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a1 | b1, r1); + + int4 a2 = int4(669346222, 396691477, 2108560248, 2117522137); + int4 b2 = int4(1610830169, 1316929125, 511625048, 573925879); + int4 r2 = int4(1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a2 | b2, r2); + + int4 a3 = int4(330307355, 818676817, 1774459567, 1117506257); + int4 b3 = int4(1502255628, 1841676448, 1682928938, 1115131952); + int4 r3 = int4(1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_or_wide_scalar() + { + int4 a0 = int4(961259683, 471103264, 1733389229, 1591585258); + int b0 = (1666102508); + int4 r0 = int4(2068823279, 2136930284, 1734344685, 2145369582); + TestUtils.AreEqual(a0 | b0, r0); + + int4 a1 = int4(386953869, 1048929715, 1814263250, 860336789); + int b1 = (1148351449); + int4 r1 = int4(1467118557, 2130147323, 1819506651, 2004349917); + TestUtils.AreEqual(a1 | b1, r1); + + int4 a2 = int4(1637162093, 774029856, 879300408, 1179087439); + int b2 = (1227888278); + int4 r2 = int4(1773477631, 1865602742, 2105089982, 1333229279); + TestUtils.AreEqual(a2 | b2, r2); + + int4 a3 = int4(797240690, 46921989, 1980838747, 284225881); + int b3 = (1977614655); + int4 r3 = int4(2145709439, 2011953471, 2012296063, 1978724735); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int4 b0 = int4(1212928242, 1614462616, 936937728, 764766995); + int4 r0 = int4(1213978111, 1752940445, 2145094925, 1842867999); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (306352095); + int4 b1 = int4(574719481, 1283571271, 2109131012, 979469710); + int4 r1 = int4(843288575, 1589886943, 2146881503, 979603423); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1348323481); + int4 b2 = int4(1407542578, 697517649, 1059093741, 627815046); + int4 r2 = int4(1409150395, 2044710617, 2138963197, 1971321503); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (418822515); + int4 b3 = int4(83214352, 424663473, 447949225, 527022375); + int4 r3 = int4(486013299, 436206067, 452442619, 536852855); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_xor_wide_wide() + { + int4 a0 = int4(1556324760, 207002929, 1843444873, 1632079131); + int4 b0 = int4(1054997548, 1523759632, 251164872, 110472397); + int4 r0 = int4(1646419380, 1451501345, 1662567489, 1741824470); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4 a1 = int4(1460334334, 1607815585, 220623650, 38668553); + int4 b1 = int4(384031112, 1109163205, 535118981, 179106262); + int4 r1 = int4(1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4 a2 = int4(47193340, 643663548, 1371932564, 94957188); + int4 b2 = int4(1523031711, 1713313372, 1294118730, 520360641); + int4 r2 = int4(1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4 a3 = int4(700973621, 370621508, 2087573076, 351476570); + int4 b3 = int4(1040688781, 1020757245, 1143954843, 1281933464); + int4 r3 = int4(399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_xor_wide_scalar() + { + int4 a0 = int4(2124666952, 177397845, 574879617, 1937385541); + int b0 = (493665894); + int4 r0 = int4(1674536494, 402546227, 1060063719, 1846973987); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4 a1 = int4(1136545648, 535061373, 289301586, 1305234431); + int b1 = (213863690); + int4 r1 = int4(1325466234, 324742775, 495003992, 1098057461); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4 a2 = int4(353786540, 1267729267, 125659640, 1315625690); + int b2 = (1308626970); + int4 r2 = int4(1528187574, 93328233, 1232959970, 6998720); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4 a3 = int4(1730088797, 375757978, 491079274, 191750702); + int b3 = (116862046); + int4 r3 = int4(1642603267, 278048964, 464677428, 228249200); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int4 b0 = int4(1077599928, 884741329, 212164516, 1585020328); + int4 r0 = int4(217506340, 2020616269, 1080648504, 313868596); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (152985454); + int4 b1 = int4(1775851275, 1416249064, 1309317737, 1773918217); + int4 r1 = int4(1623656549, 1567908230, 1192543495, 1621460839); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1509843030); + int4 b2 = int4(1206045972, 1154916424, 1947871003, 1774252400); + int4 r2 = int4(505195842, 489209886, 769935181, 809406758); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1946113778); + int4 b3 = int4(1079717492, 290620937, 1382343363, 939045099); + int4 r3 = int4(866416774, 1655558395, 563852337, 1141368345); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4_operator_left_shift() + { + int4 a0 = int4(197771193, 622182602, 1283988958, 1327917304); + int b0 = (1321149625); + int4 r0 = int4(1912602624, -1811939328, -1140850688, -268435456); + TestUtils.AreEqual(a0 << b0, r0); + + int4 a1 = int4(473415985, 870301196, 2058433484, 1200694230); + int b1 = (432425717); + int4 r1 = int4(639631360, -1048576000, 2038431744, 2059403264); + TestUtils.AreEqual(a1 << b1, r1); + + int4 a2 = int4(1531607705, 1008296534, 1447702302, 1079614371); + int b2 = (1360008038); + int4 r2 = int4(-761354688, 106468736, -1836333184, 375843008); + TestUtils.AreEqual(a2 << b2, r2); + + int4 a3 = int4(35667343, 2045594989, 2077023268, 592678686); + int b3 = (1664454606); + int4 r3 = int4(258195456, 1398489088, 923336704, -473464832); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int4_operator_right_shift() + { + int4 a0 = int4(548167301, 1161338299, 1617625829, 1860731847); + int b0 = (1266801540); + int4 r0 = int4(34260456, 72583643, 101101614, 116295740); + TestUtils.AreEqual(a0 >> b0, r0); + + int4 a1 = int4(713958715, 770466193, 1265099998, 572763124); + int b1 = (196552656); + int4 r1 = int4(10894, 11756, 19303, 8739); + TestUtils.AreEqual(a1 >> b1, r1); + + int4 a2 = int4(506619530, 2031319045, 701927980, 917785020); + int b2 = (426807581); + int4 r2 = int4(0, 3, 1, 1); + TestUtils.AreEqual(a2 >> b2, r2); + + int4 a3 = int4(569504877, 1102123711, 334005460, 1624751550); + int b3 = (185593382); + int4 r3 = int4(8898513, 17220682, 5218835, 25386742); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_not() + { + int4 a0 = int4(1403358969, 831360921, 2088190243, 976721016); + int4 r0 = int4(-1403358970, -831360922, -2088190244, -976721017); + TestUtils.AreEqual(~a0, r0); + + int4 a1 = int4(878283189, 1935567517, 1420884856, 472965491); + int4 r1 = int4(-878283190, -1935567518, -1420884857, -472965492); + TestUtils.AreEqual(~a1, r1); + + int4 a2 = int4(771711426, 2061524024, 753208488, 2097179283); + int4 r2 = int4(-771711427, -2061524025, -753208489, -2097179284); + TestUtils.AreEqual(~a2, r2); + + int4 a3 = int4(1303022493, 1289372466, 1635981125, 1951018596); + int4 r3 = int4(-1303022494, -1289372467, -1635981126, -1951018597); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void int4_shuffle_result_1() + { + int4 a = int4(0, 1, 2, 3); + int4 b = int4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW), (7)); + } + + [TestCompiler] + public static void int4_shuffle_result_2() + { + int4 a = int4(0, 1, 2, 3); + int4 b = int4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), int2(5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX), int2(6, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), int2(1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftW), int2(7, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftZ), int2(7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), int2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW), int2(5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), int2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightW), int2(6, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ), int2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), int2(6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), int2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), int2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightY), int2(7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), int2(4, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW), int2(1, 3)); + } + + [TestCompiler] + public static void int4_shuffle_result_3() + { + int4 a = int4(0, 1, 2, 3); + int4 b = int4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightY), int3(2, 7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.LeftW), int3(6, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightX), int3(2, 7, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), int3(5, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), int3(7, 6, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightX), int3(3, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightW), int3(3, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.RightZ), int3(6, 5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), int3(5, 4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightW, ShuffleComponent.LeftX), int3(7, 7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(6, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightW), int3(6, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightY), int3(3, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), int3(6, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightW), int3(5, 1, 7)); + } + + [TestCompiler] + public static void int4_shuffle_result_4() + { + int4 a = int4(0, 1, 2, 3); + int4 b = int4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ), int4(1, 3, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightZ), int4(5, 3, 6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.RightW, ShuffleComponent.LeftZ), int4(6, 6, 7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ), int4(4, 5, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), int4(6, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightW), int4(4, 5, 5, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightW, ShuffleComponent.LeftX, ShuffleComponent.RightW), int4(1, 7, 0, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftX), int4(5, 0, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightW, ShuffleComponent.LeftW, ShuffleComponent.LeftY), int4(4, 7, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), int4(5, 4, 1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int4(0, 2, 6, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightW, ShuffleComponent.RightW), int4(2, 5, 7, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ, ShuffleComponent.RightX), int4(3, 4, 2, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), int4(4, 0, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(6, 4, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.LeftY, ShuffleComponent.RightY), int4(3, 7, 1, 5)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4.gen.cs.meta new file mode 100644 index 0000000..af04e8f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 682471010e9050444948ecc9c69b3b0c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x2.gen.cs new file mode 100644 index 0000000..627107c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x2.gen.cs @@ -0,0 +1,1229 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt4x2 + { + [TestCompiler] + public static void int4x2_zero() + { + TestUtils.AreEqual(int4x2.zero.c0.x, 0); + TestUtils.AreEqual(int4x2.zero.c0.y, 0); + TestUtils.AreEqual(int4x2.zero.c0.z, 0); + TestUtils.AreEqual(int4x2.zero.c0.w, 0); + TestUtils.AreEqual(int4x2.zero.c1.x, 0); + TestUtils.AreEqual(int4x2.zero.c1.y, 0); + TestUtils.AreEqual(int4x2.zero.c1.z, 0); + TestUtils.AreEqual(int4x2.zero.c1.w, 0); + } + + [TestCompiler] + public static void int4x2_operator_equal_wide_wide() + { + int4x2 a0 = int4x2(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370); + int4x2 b0 = int4x2(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x2 a1 = int4x2(1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + int4x2 b1 = int4x2(1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x2 a2 = int4x2(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int4x2 b2 = int4x2(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x2 a3 = int4x2(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + int4x2 b3 = int4x2(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_equal_wide_scalar() + { + int4x2 a0 = int4x2(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277); + int b0 = (746972502); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x2 a1 = int4x2(1682018538, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077); + int b1 = (795585660); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x2 a2 = int4x2(442746747, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678); + int b2 = (1772925698); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x2 a3 = int4x2(1305479811, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832); + int b3 = (255635293); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int4x2 b0 = int4x2(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1061805787); + int4x2 b1 = int4x2(1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (2003197687); + int4x2 b2 = int4x2(1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (367814403); + int4x2 b3 = int4x2(1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_not_equal_wide_wide() + { + int4x2 a0 = int4x2(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646); + int4x2 b0 = int4x2(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x2 a1 = int4x2(1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + int4x2 b1 = int4x2(1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x2 a2 = int4x2(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int4x2 b2 = int4x2(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x2 a3 = int4x2(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + int4x2 b3 = int4x2(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_not_equal_wide_scalar() + { + int4x2 a0 = int4x2(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450); + int b0 = (248693828); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x2 a1 = int4x2(2105962247, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883); + int b1 = (727205263); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x2 a2 = int4x2(1622176923, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685); + int b2 = (768370497); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x2 a3 = int4x2(904014575, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907); + int b3 = (384643370); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int4x2 b0 = int4x2(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (124108032); + int4x2 b1 = int4x2(1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (266984506); + int4x2 b2 = int4x2(2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (572038024); + int4x2 b3 = int4x2(1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_wide_wide() + { + int4x2 a0 = int4x2(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973); + int4x2 b0 = int4x2(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202); + bool4x2 r0 = bool4x2(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x2 a1 = int4x2(928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + int4x2 b1 = int4x2(2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4x2 a2 = int4x2(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int4x2 b2 = int4x2(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool4x2 r2 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4x2 a3 = int4x2(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + int4x2 b3 = int4x2(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool4x2 r3 = bool4x2(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_wide_scalar() + { + int4x2 a0 = int4x2(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341); + int b0 = (1491216667); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int4x2 a1 = int4x2(840091491, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709); + int b1 = (469591900); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int4x2 a2 = int4x2(1286331950, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110); + int b2 = (380753337); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4x2 a3 = int4x2(867559111, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996); + int b3 = (1703747625); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_scalar_wide() + { + int a0 = (548436837); + int4x2 b0 = int4x2(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (111349251); + int4x2 b1 = int4x2(1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1027318999); + int4x2 b2 = int4x2(146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400); + bool4x2 r2 = bool4x2(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (1329939911); + int4x2 b3 = int4x2(1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_wide_wide() + { + int4x2 a0 = int4x2(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550); + int4x2 b0 = int4x2(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742); + bool4x2 r0 = bool4x2(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + int4x2 a1 = int4x2(2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + int4x2 b1 = int4x2(910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool4x2 r1 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4x2 a2 = int4x2(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int4x2 b2 = int4x2(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int4x2 a3 = int4x2(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + int4x2 b3 = int4x2(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_wide_scalar() + { + int4x2 a0 = int4x2(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035); + int b0 = (438688675); + bool4x2 r0 = bool4x2(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int4x2 a1 = int4x2(2125058448, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211); + int b1 = (304028799); + bool4x2 r1 = bool4x2(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4x2 a2 = int4x2(2063134811, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419); + int b2 = (1577403353); + bool4x2 r2 = bool4x2(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4x2 a3 = int4x2(1058332184, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708); + int b3 = (524569092); + bool4x2 r3 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int4x2 b0 = int4x2(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (691047512); + int4x2 b1 = int4x2(741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1023307544); + int4x2 b2 = int4x2(1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900); + bool4x2 r2 = bool4x2(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (315569296); + int4x2 b3 = int4x2(292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844); + bool4x2 r3 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_equal_wide_wide() + { + int4x2 a0 = int4x2(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394); + int4x2 b0 = int4x2(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595); + bool4x2 r0 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x2 a1 = int4x2(117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + int4x2 b1 = int4x2(1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool4x2 r1 = bool4x2(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x2 a2 = int4x2(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int4x2 b2 = int4x2(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool4x2 r2 = bool4x2(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x2 a3 = int4x2(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + int4x2 b3 = int4x2(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_equal_wide_scalar() + { + int4x2 a0 = int4x2(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407); + int b0 = (1688048545); + bool4x2 r0 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x2 a1 = int4x2(1459242706, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948); + int b1 = (1745758438); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x2 a2 = int4x2(2017733017, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750); + int b2 = (804204255); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x2 a3 = int4x2(1258115260, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122); + int b3 = (20607406); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int4x2 b0 = int4x2(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (762067160); + int4x2 b1 = int4x2(11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309); + bool4x2 r1 = bool4x2(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (861890786); + int4x2 b2 = int4x2(478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850); + bool4x2 r2 = bool4x2(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (830430286); + int4x2 b3 = int4x2(145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788); + bool4x2 r3 = bool4x2(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_equal_wide_wide() + { + int4x2 a0 = int4x2(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546); + int4x2 b0 = int4x2(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862); + bool4x2 r0 = bool4x2(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x2 a1 = int4x2(1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + int4x2 b1 = int4x2(396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool4x2 r1 = bool4x2(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x2 a2 = int4x2(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int4x2 b2 = int4x2(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool4x2 r2 = bool4x2(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x2 a3 = int4x2(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + int4x2 b3 = int4x2(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool4x2 r3 = bool4x2(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_equal_wide_scalar() + { + int4x2 a0 = int4x2(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894); + int b0 = (1470533736); + bool4x2 r0 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x2 a1 = int4x2(609211196, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021); + int b1 = (1604309397); + bool4x2 r1 = bool4x2(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x2 a2 = int4x2(196833647, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607); + int b2 = (1596738181); + bool4x2 r2 = bool4x2(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x2 a3 = int4x2(1223010129, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090); + int b3 = (379014762); + bool4x2 r3 = bool4x2(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int4x2 b0 = int4x2(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1240253990); + int4x2 b1 = int4x2(1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577); + bool4x2 r1 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (173706579); + int4x2 b2 = int4x2(625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (233894308); + int4x2 b3 = int4x2(479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835); + bool4x2 r3 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_add_wide_wide() + { + int4x2 a0 = int4x2(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721); + int4x2 b0 = int4x2(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440); + int4x2 r0 = int4x2(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135); + TestUtils.AreEqual(a0 + b0, r0); + + int4x2 a1 = int4x2(698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + int4x2 b1 = int4x2(1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + int4x2 r1 = int4x2(-2009504361, 1101613923, -799189804, 1384643660, -147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a1 + b1, r1); + + int4x2 a2 = int4x2(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int4x2 b2 = int4x2(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int4x2 r2 = int4x2(-2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a2 + b2, r2); + + int4x2 a3 = int4x2(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + int4x2 b3 = int4x2(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + int4x2 r3 = int4x2(-1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_add_wide_scalar() + { + int4x2 a0 = int4x2(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301); + int b0 = (2124409227); + int4x2 r0 = int4x2(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768); + TestUtils.AreEqual(a0 + b0, r0); + + int4x2 a1 = int4x2(2003021861, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654); + int b1 = (1635971971); + int4x2 r1 = int4x2(-655973464, -1498597039, 1721418173, -1590842359, -1419608225, -1161318437, -931517840, -1563556671); + TestUtils.AreEqual(a1 + b1, r1); + + int4x2 a2 = int4x2(756559204, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260); + int b2 = (1818718931); + int4x2 r2 = int4x2(-1719689161, -1817324813, -865729444, -890492967, -1783405065, -1407654896, -771472132, -1898466105); + TestUtils.AreEqual(a2 + b2, r2); + + int4x2 a3 = int4x2(736972565, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516); + int b3 = (711894571); + int4x2 r3 = int4x2(1448867136, 1276152010, -1531336442, -2010235028, -1955066180, -1727372462, 1368643353, 984669087); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_add_scalar_wide() + { + int a0 = (391092078); + int4x2 b0 = int4x2(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072); + int4x2 r0 = int4x2(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (996031825); + int4x2 b1 = int4x2(1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489); + int4x2 r1 = int4x2(-1741160522, 1775806765, 2107573127, 1779078270, 2126195769, 1284311409, -1901251610, -1662351982); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (673263339); + int4x2 b2 = int4x2(1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839); + int4x2 r2 = int4x2(2142564213, 688119304, 1789900338, -2132840657, -2020713071, 863914640, 1980723107, 1593349178); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (2082229835); + int4x2 b3 = int4x2(1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222); + int4x2 r3 = int4x2(-220331887, -998813003, -1706896009, -1231316299, -724399762, -1098910821, -406590953, -370946239); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_sub_wide_wide() + { + int4x2 a0 = int4x2(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138); + int4x2 b0 = int4x2(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885); + int4x2 r0 = int4x2(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747); + TestUtils.AreEqual(a0 - b0, r0); + + int4x2 a1 = int4x2(1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + int4x2 b1 = int4x2(71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + int4x2 r1 = int4x2(1234495882, -838948052, -732179165, -881462314, -50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a1 - b1, r1); + + int4x2 a2 = int4x2(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int4x2 b2 = int4x2(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int4x2 r2 = int4x2(-624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a2 - b2, r2); + + int4x2 a3 = int4x2(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + int4x2 b3 = int4x2(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + int4x2 r3 = int4x2(-183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_sub_wide_scalar() + { + int4x2 a0 = int4x2(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815); + int b0 = (462232403); + int4x2 r0 = int4x2(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412); + TestUtils.AreEqual(a0 - b0, r0); + + int4x2 a1 = int4x2(281174200, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635); + int b1 = (87530840); + int4x2 r1 = int4x2(193643360, 1826193591, 1954062496, 469709150, 1031520608, 1502845892, 731559349, 728851795); + TestUtils.AreEqual(a1 - b1, r1); + + int4x2 a2 = int4x2(815920639, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794); + int b2 = (1829033117); + int4x2 r2 = int4x2(-1013112478, -36231185, -715592568, -410095141, -551775928, 263746281, -1186796375, -223782323); + TestUtils.AreEqual(a2 - b2, r2); + + int4x2 a3 = int4x2(819644478, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500); + int b3 = (1468003019); + int4x2 r3 = int4x2(-648358541, -1339699833, -914508762, -450876048, 531741763, 549269739, 349988745, -187017519); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int4x2 b0 = int4x2(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277); + int4x2 r0 = int4x2(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (1789300421); + int4x2 b1 = int4x2(264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829); + int4x2 r1 = int4x2(1524587528, 557444354, -28812327, 360864312, 530554961, 711920025, 458577702, 1271188592); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (967128529); + int4x2 b2 = int4x2(344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709); + int4x2 r2 = int4x2(622462275, -115139389, 59261833, -849756594, 506787961, 4974031, 410015068, -734088180); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1980098777); + int4x2 b3 = int4x2(730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041); + int4x2 r3 = int4x2(1250038225, 535700950, 1126528221, 1841262345, 966908349, 1262009247, 1473341387, 763650736); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mul_wide_wide() + { + int4x2 a0 = int4x2(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069); + int4x2 b0 = int4x2(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980); + int4x2 r0 = int4x2(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068); + TestUtils.AreEqual(a0 * b0, r0); + + int4x2 a1 = int4x2(571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + int4x2 b1 = int4x2(1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + int4x2 r1 = int4x2(-1654168033, 2093463192, -1207506618, -1133560830, 990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a1 * b1, r1); + + int4x2 a2 = int4x2(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int4x2 b2 = int4x2(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int4x2 r2 = int4x2(649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a2 * b2, r2); + + int4x2 a3 = int4x2(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + int4x2 b3 = int4x2(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + int4x2 r3 = int4x2(1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mul_wide_scalar() + { + int4x2 a0 = int4x2(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909); + int b0 = (1476837906); + int4x2 r0 = int4x2(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518); + TestUtils.AreEqual(a0 * b0, r0); + + int4x2 a1 = int4x2(975743632, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467); + int b1 = (573770299); + int4x2 r1 = int4x2(414773040, -699623085, 1045098929, -1129153454, 1954692228, 970215437, 1522404739, 631100697); + TestUtils.AreEqual(a1 * b1, r1); + + int4x2 a2 = int4x2(1186856590, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703); + int b2 = (890343818); + int4x2 r2 = int4x2(218605196, 908725324, -805080014, -1528445592, 1365477062, 1262261996, 2040090952, 691203142); + TestUtils.AreEqual(a2 * b2, r2); + + int4x2 a3 = int4x2(1613845584, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051); + int b3 = (76318055); + int4x2 r3 = int4x2(-1335460816, 1256424448, -545299589, 628661398, 357366566, 753276674, 2132219401, -825295347); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mul_scalar_wide() + { + int a0 = (99541948); + int4x2 b0 = int4x2(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146); + int4x2 r0 = int4x2(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (2105124483); + int4x2 b1 = int4x2(1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225); + int4x2 r1 = int4x2(-1028919216, 2084093460, 1286996821, 910923781, 1886305329, -1039959883, 644799552, 1815059427); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (994616533); + int4x2 b2 = int4x2(1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330); + int4x2 r2 = int4x2(585859259, 2021158292, 1046891801, -1941821535, -738776427, -1715252039, -160572189, 1259643370); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (1186460236); + int4x2 b3 = int4x2(657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873); + int4x2 r3 = int4x2(-901633076, -879300144, 1278776548, 1761940324, -675287412, 2049744268, -375297800, -1944395988); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_div_wide_wide() + { + int4x2 a0 = int4x2(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739); + int4x2 b0 = int4x2(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678); + int4x2 r0 = int4x2(1, 0, 0, 8, 0, 0, 2, 7); + TestUtils.AreEqual(a0 / b0, r0); + + int4x2 a1 = int4x2(499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + int4x2 b1 = int4x2(2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + int4x2 r1 = int4x2(0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a1 / b1, r1); + + int4x2 a2 = int4x2(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int4x2 b2 = int4x2(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int4x2 r2 = int4x2(1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int4x2 a3 = int4x2(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + int4x2 b3 = int4x2(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + int4x2 r3 = int4x2(2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_div_wide_scalar() + { + int4x2 a0 = int4x2(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253); + int b0 = (947861580); + int4x2 r0 = int4x2(0, 1, 0, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int4x2 a1 = int4x2(341995568, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372); + int b1 = (495895326); + int4x2 r1 = int4x2(0, 3, 3, 4, 4, 2, 1, 3); + TestUtils.AreEqual(a1 / b1, r1); + + int4x2 a2 = int4x2(1447236569, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924); + int b2 = (107215658); + int4x2 r2 = int4x2(13, 0, 8, 6, 11, 13, 16, 17); + TestUtils.AreEqual(a2 / b2, r2); + + int4x2 a3 = int4x2(1244966864, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348); + int b3 = (1200843642); + int4x2 r3 = int4x2(1, 0, 1, 1, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_div_scalar_wide() + { + int a0 = (1161272038); + int4x2 b0 = int4x2(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032); + int4x2 r0 = int4x2(6, 0, 0, 0, 2, 0, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (81831373); + int4x2 b1 = int4x2(1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859); + int4x2 r1 = int4x2(0, 0, 1, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1653451772); + int4x2 b2 = int4x2(270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890); + int4x2 r2 = int4x2(6, 33, 0, 1, 1, 0, 2, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (351914083); + int4x2 b3 = int4x2(131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708); + int4x2 r3 = int4x2(2, 0, 0, 0, 1, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mod_wide_wide() + { + int4x2 a0 = int4x2(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532); + int4x2 b0 = int4x2(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806); + int4x2 r0 = int4x2(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a0 % b0, r0); + + int4x2 a1 = int4x2(778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + int4x2 b1 = int4x2(769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + int4x2 r1 = int4x2(9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a1 % b1, r1); + + int4x2 a2 = int4x2(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int4x2 b2 = int4x2(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int4x2 r2 = int4x2(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a2 % b2, r2); + + int4x2 a3 = int4x2(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + int4x2 b3 = int4x2(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + int4x2 r3 = int4x2(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mod_wide_scalar() + { + int4x2 a0 = int4x2(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899); + int b0 = (883951171); + int4x2 r0 = int4x2(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728); + TestUtils.AreEqual(a0 % b0, r0); + + int4x2 a1 = int4x2(896587769, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717); + int b1 = (405208598); + int4x2 r1 = int4x2(86170573, 361927802, 148819739, 307112428, 172564850, 324442651, 275480547, 391863923); + TestUtils.AreEqual(a1 % b1, r1); + + int4x2 a2 = int4x2(165478511, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313); + int b2 = (647846716); + int4x2 r2 = int4x2(165478511, 267861283, 307136969, 280344567, 437088090, 488509689, 144280764, 377501313); + TestUtils.AreEqual(a2 % b2, r2); + + int4x2 a3 = int4x2(1778384846, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942); + int b3 = (1216011754); + int4x2 r3 = int4x2(562373092, 812183417, 1153802502, 426660116, 708698988, 665297470, 352079071, 834971188); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mod_scalar_wide() + { + int a0 = (242383789); + int4x2 b0 = int4x2(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265); + int4x2 r0 = int4x2(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (293460573); + int4x2 b1 = int4x2(1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342); + int4x2 r1 = int4x2(293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (797184687); + int4x2 b2 = int4x2(821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318); + int4x2 r2 = int4x2(797184687, 797184687, 797184687, 797184687, 182024723, 797184687, 1919391, 797184687); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (164578061); + int4x2 b3 = int4x2(730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733); + int4x2 r3 = int4x2(164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_plus() + { + int4x2 a0 = int4x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + int4x2 r0 = int4x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + TestUtils.AreEqual(+a0, r0); + + int4x2 a1 = int4x2(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + int4x2 r1 = int4x2(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + TestUtils.AreEqual(+a1, r1); + + int4x2 a2 = int4x2(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + int4x2 r2 = int4x2(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + TestUtils.AreEqual(+a2, r2); + + int4x2 a3 = int4x2(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + int4x2 r3 = int4x2(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int4x2_operator_neg() + { + int4x2 a0 = int4x2(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349); + int4x2 r0 = int4x2(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349); + TestUtils.AreEqual(-a0, r0); + + int4x2 a1 = int4x2(1115028238, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094); + int4x2 r1 = int4x2(-1115028238, -694995093, -1542206286, -213087293, -243937487, -341522275, -841085242, -574159094); + TestUtils.AreEqual(-a1, r1); + + int4x2 a2 = int4x2(1687250035, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928); + int4x2 r2 = int4x2(-1687250035, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864, -1440774928); + TestUtils.AreEqual(-a2, r2); + + int4x2 a3 = int4x2(1485596454, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098); + int4x2 r3 = int4x2(-1485596454, -1387601718, -1745651998, -319115626, -1119959806, -739132284, -1954173314, -1709857098); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int4x2_operator_prefix_inc() + { + int4x2 a0 = int4x2(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442); + int4x2 r0 = int4x2(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443); + TestUtils.AreEqual(++a0, r0); + + int4x2 a1 = int4x2(913293639, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683); + int4x2 r1 = int4x2(913293640, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684); + TestUtils.AreEqual(++a1, r1); + + int4x2 a2 = int4x2(993189311, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865); + int4x2 r2 = int4x2(993189312, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866); + TestUtils.AreEqual(++a2, r2); + + int4x2 a3 = int4x2(519296647, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208); + int4x2 r3 = int4x2(519296648, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int4x2_operator_postfix_inc() + { + int4x2 a0 = int4x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + int4x2 r0 = int4x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + TestUtils.AreEqual(a0++, r0); + + int4x2 a1 = int4x2(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + int4x2 r1 = int4x2(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + TestUtils.AreEqual(a1++, r1); + + int4x2 a2 = int4x2(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + int4x2 r2 = int4x2(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + TestUtils.AreEqual(a2++, r2); + + int4x2 a3 = int4x2(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + int4x2 r3 = int4x2(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int4x2_operator_prefix_dec() + { + int4x2 a0 = int4x2(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826); + int4x2 r0 = int4x2(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825); + TestUtils.AreEqual(--a0, r0); + + int4x2 a1 = int4x2(1434377580, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956); + int4x2 r1 = int4x2(1434377579, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955); + TestUtils.AreEqual(--a1, r1); + + int4x2 a2 = int4x2(356565557, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829); + int4x2 r2 = int4x2(356565556, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828); + TestUtils.AreEqual(--a2, r2); + + int4x2 a3 = int4x2(1454322707, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343); + int4x2 r3 = int4x2(1454322706, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int4x2_operator_postfix_dec() + { + int4x2 a0 = int4x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + int4x2 r0 = int4x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + TestUtils.AreEqual(a0--, r0); + + int4x2 a1 = int4x2(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + int4x2 r1 = int4x2(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + TestUtils.AreEqual(a1--, r1); + + int4x2 a2 = int4x2(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + int4x2 r2 = int4x2(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + TestUtils.AreEqual(a2--, r2); + + int4x2 a3 = int4x2(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + int4x2 r3 = int4x2(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_and_wide_wide() + { + int4x2 a0 = int4x2(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406); + int4x2 b0 = int4x2(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812); + int4x2 r0 = int4x2(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a0 & b0, r0); + + int4x2 a1 = int4x2(2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + int4x2 b1 = int4x2(23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + int4x2 r1 = int4x2(16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a1 & b1, r1); + + int4x2 a2 = int4x2(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int4x2 b2 = int4x2(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int4x2 r2 = int4x2(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a2 & b2, r2); + + int4x2 a3 = int4x2(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + int4x2 b3 = int4x2(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + int4x2 r3 = int4x2(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_and_wide_scalar() + { + int4x2 a0 = int4x2(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839); + int b0 = (93423598); + int4x2 r0 = int4x2(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806); + TestUtils.AreEqual(a0 & b0, r0); + + int4x2 a1 = int4x2(1365509729, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033); + int b1 = (428270198); + int4x2 r1 = int4x2(285475424, 262144, 8536128, 134529558, 277234224, 150995062, 142909440, 285474848); + TestUtils.AreEqual(a1 & b1, r1); + + int4x2 a2 = int4x2(1408932942, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926); + int b2 = (957693145); + int4x2 r2 = int4x2(286268488, 420556880, 18167000, 286270481, 420753408, 134551616, 152314057, 420547656); + TestUtils.AreEqual(a2 & b2, r2); + + int4x2 a3 = int4x2(1817145060, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525); + int b3 = (1466722981); + int4x2 r3 = int4x2(1145858724, 1145069572, 273443365, 101460005, 1093403136, 524420, 335806629, 1142948357); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int4x2 b0 = int4x2(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279); + int4x2 r0 = int4x2(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1089518981); + int4x2 b1 = int4x2(270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038); + int4x2 r1 = int4x2(2105729, 1080066432, 40324, 1074831621, 1081121157, 1058177, 14593, 1084233092); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1845693112); + int4x2 b2 = int4x2(946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417); + int4x2 r2 = int4x2(671287840, 1141047992, 1744964224, 33751056, 1744964256, 1845559864, 1140852752, 1208158384); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1214109404); + int4x2 b3 = int4x2(2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506); + int4x2 r3 = int4x2(16988, 1208799884, 1074321052, 1209303624, 1115840, 1213727936, 1610312, 1078218760); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_or_wide_wide() + { + int4x2 a0 = int4x2(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835); + int4x2 b0 = int4x2(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430); + int4x2 r0 = int4x2(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a0 | b0, r0); + + int4x2 a1 = int4x2(669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + int4x2 b1 = int4x2(1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + int4x2 r1 = int4x2(1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a1 | b1, r1); + + int4x2 a2 = int4x2(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int4x2 b2 = int4x2(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int4x2 r2 = int4x2(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a2 | b2, r2); + + int4x2 a3 = int4x2(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + int4x2 b3 = int4x2(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + int4x2 r3 = int4x2(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_or_wide_scalar() + { + int4x2 a0 = int4x2(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250); + int b0 = (1666102508); + int4x2 r0 = int4x2(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446); + TestUtils.AreEqual(a0 | b0, r0); + + int4x2 a1 = int4x2(860336789, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989); + int b1 = (1637162093); + int4x2 r1 = int4x2(1943518973, 1773477631, 1874321005, 1979522941, 1742175855, 1872100735, 1978998143, 1675623789); + TestUtils.AreEqual(a1 | b1, r1); + + int4x2 a2 = int4x2(1980838747, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359); + int b2 = (284225881); + int4x2 r2 = int4x2(1995567963, 334885881, 317847551, 1408563035, 1895366623, 536016891, 2029779967, 2063332319); + TestUtils.AreEqual(a2 | b2, r2); + + int4x2 a3 = int4x2(1511253082, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895); + int b3 = (1775629833); + int4x2 r3 = int4x2(2077750875, 1843265467, 1775761279, 2111176313, 2046817999, 2113404623, 1778251405, 2077753039); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int4x2 b0 = int4x2(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012); + int4x2 r0 = int4x2(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (979469710); + int4x2 b1 = int4x2(1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473); + int4x2 r1 = int4x2(2055064991, 2078664126, 1005832159, 1063386607, 1064023950, 989314559, 1056294302, 997187007); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (447949225); + int4x2 b2 = int4x2(527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150); + int4x2 r2 = int4x2(536590767, 2126457261, 447999469, 1526184941, 2062773753, 1593519101, 1589357545, 1526197231); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (298563808); + int4x2 b3 = int4x2(2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556); + int4x2 r3 = int4x2(2078276845, 872414207, 938213110, 1945092072, 1375468774, 838844392, 1004273386, 836763636); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_xor_wide_wide() + { + int4x2 a0 = int4x2(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553); + int4x2 b0 = int4x2(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262); + int4x2 r0 = int4x2(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x2 a1 = int4x2(47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + int4x2 b1 = int4x2(1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + int4x2 r1 = int4x2(1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x2 a2 = int4x2(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int4x2 b2 = int4x2(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int4x2 r2 = int4x2(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x2 a3 = int4x2(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + int4x2 b3 = int4x2(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + int4x2 r3 = int4x2(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_xor_wide_scalar() + { + int4x2 a0 = int4x2(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586); + int b0 = (493665894); + int4x2 r0 = int4x2(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x2 a1 = int4x2(1305234431, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978); + int b1 = (353786540); + int4x2 r1 = int4x2(1490686291, 1528187574, 1585863135, 309015380, 1534886006, 1913214449, 333543154, 57919030); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x2 a2 = int4x2(491079274, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736); + int b2 = (191750702); + int4x2 r2 = int4x2(371762244, 4897915, 852093491, 732592657, 763363694, 190966742, 1397197090, 1867453430); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x2 a3 = int4x2(447453839, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291); + int b3 = (890841598); + int4x2 r3 = int4x2(800240497, 610664066, 711808497, 714187902, 1735978412, 1929239075, 171965729, 427463573); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int4x2 b0 = int4x2(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737); + int4x2 r0 = int4x2(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1773918217); + int4x2 b1 = int4x2(1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937); + int4x2 r1 = int4x2(809875551, 777590045, 762148929, 497155858, 8071545, 440700667, 702609021, 2028559872); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1382343363); + int4x2 b2 = int4x2(939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481); + int4x2 r2 = int4x2(1704743464, 476745462, 1598742512, 1722301941, 1981778335, 1509285046, 19333242, 1884605034); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1813817520); + int4x2 b3 = int4x2(86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759); + int4x2 r3 = int4x2(1765145501, 465338881, 961174309, 1508358725, 916626445, 1734574159, 1183306712, 2052237431); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_left_shift() + { + int4x2 a0 = int4x2(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484); + int b0 = (1321149625); + int4x2 r0 = int4x2(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464); + TestUtils.AreEqual(a0 << b0, r0); + + int4x2 a1 = int4x2(1200694230, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989); + int b1 = (1531607705); + int4x2 r1 = int4x2(-1409286144, -872415232, -1409286144, 1006632960, 1174405120, 503316480, -1677721600, -637534208); + TestUtils.AreEqual(a1 << b1, r1); + + int4x2 a2 = int4x2(2077023268, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278); + int b2 = (592678686); + int4x2 r2 = int4x2(0, -1073741824, -1073741824, -1073741824, 1073741824, 1073741824, 1073741824, -2147483648); + TestUtils.AreEqual(a2 << b2, r2); + + int4x2 a3 = int4x2(221147365, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688); + int b3 = (2084190583); + int4x2 r3 = int4x2(1920991232, -1342177280, -603979776, -134217728, -805306368, -310378496, 109051904, 1207959552); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_right_shift() + { + int4x2 a0 = int4x2(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998); + int b0 = (1266801540); + int4x2 r0 = int4x2(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749); + TestUtils.AreEqual(a0 >> b0, r0); + + int4x2 a1 = int4x2(572763124, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711); + int b1 = (506619530); + int4x2 r1 = int4x2(559338, 416804, 1983710, 685476, 896274, 556157, 181243, 1076292); + TestUtils.AreEqual(a1 >> b1, r1); + + int4x2 a2 = int4x2(334005460, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760); + int b2 = (1624751550); + int4x2 r2 = int4x2(0, 0, 1, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a2 >> b2, r2); + + int4x2 a3 = int4x2(348013684, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476); + int b3 = (1568185874); + int4x2 r3 = int4x2(1327, 2953, 6054, 2289, 112, 7175, 1343, 4442); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_not() + { + int4x2 a0 = int4x2(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856); + int4x2 r0 = int4x2(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857); + TestUtils.AreEqual(~a0, r0); + + int4x2 a1 = int4x2(472965491, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466); + int4x2 r1 = int4x2(-472965492, -627580961, -2061524025, -753208489, -2097179284, -1303022494, -664744604, -1289372467); + TestUtils.AreEqual(~a1, r1); + + int4x2 a2 = int4x2(1635981125, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942); + int4x2 r2 = int4x2(-1635981126, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322, -1282546943); + TestUtils.AreEqual(~a2, r2); + + int4x2 a3 = int4x2(1562433528, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039); + int4x2 r3 = int4x2(-1562433529, -1736570716, -508906059, -2060752881, -1867418757, -388530275, -695179853, -1766938040); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x2.gen.cs.meta new file mode 100644 index 0000000..fb8905d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a22ace1f6a955624aa145878a9d31bd2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x3.gen.cs new file mode 100644 index 0000000..feabe99 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x3.gen.cs @@ -0,0 +1,1233 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt4x3 + { + [TestCompiler] + public static void int4x3_zero() + { + TestUtils.AreEqual(int4x3.zero.c0.x, 0); + TestUtils.AreEqual(int4x3.zero.c0.y, 0); + TestUtils.AreEqual(int4x3.zero.c0.z, 0); + TestUtils.AreEqual(int4x3.zero.c0.w, 0); + TestUtils.AreEqual(int4x3.zero.c1.x, 0); + TestUtils.AreEqual(int4x3.zero.c1.y, 0); + TestUtils.AreEqual(int4x3.zero.c1.z, 0); + TestUtils.AreEqual(int4x3.zero.c1.w, 0); + TestUtils.AreEqual(int4x3.zero.c2.x, 0); + TestUtils.AreEqual(int4x3.zero.c2.y, 0); + TestUtils.AreEqual(int4x3.zero.c2.z, 0); + TestUtils.AreEqual(int4x3.zero.c2.w, 0); + } + + [TestCompiler] + public static void int4x3_operator_equal_wide_wide() + { + int4x3 a0 = int4x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + int4x3 b0 = int4x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x3 a1 = int4x3(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int4x3 b1 = int4x3(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x3 a2 = int4x3(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + int4x3 b2 = int4x3(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x3 a3 = int4x3(346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + int4x3 b3 = int4x3(1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_equal_wide_scalar() + { + int4x3 a0 = int4x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411); + int b0 = (746972502); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x3 a1 = int4x3(672785749, 585324157, 404448210, 969511077, 442746747, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005); + int b1 = (1465584610); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x3 a2 = int4x3(211986678, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291); + int b2 = (1305479811); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x3 a3 = int4x3(872759249, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886, 20195989); + int b3 = (811880239); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int4x3 b0 = int4x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (737210539); + int4x3 b1 = int4x3(1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (597498209); + int4x3 b2 = int4x3(367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1576985758); + int4x3 b3 = int4x3(1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036, 2074160001); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_not_equal_wide_wide() + { + int4x3 a0 = int4x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + int4x3 b0 = int4x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x3 a1 = int4x3(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int4x3 b1 = int4x3(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x3 a2 = int4x3(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + int4x3 b2 = int4x3(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x3 a3 = int4x3(1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + int4x3 b3 = int4x3(1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_not_equal_wide_scalar() + { + int4x3 a0 = int4x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906); + int b0 = (248693828); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x3 a1 = int4x3(2126300423, 2035077187, 1171827730, 1412347883, 1622176923, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766); + int b1 = (791998981); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x3 a2 = int4x3(30493685, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113); + int b2 = (904014575); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x3 a3 = int4x3(765258490, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942, 780105497); + int b3 = (668154629); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int4x3 b0 = int4x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (50286949); + int4x3 b1 = int4x3(2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (510966350); + int4x3 b2 = int4x3(572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (358894860); + int4x3 b3 = int4x3(1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167, 1002934795); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_wide_wide() + { + int4x3 a0 = int4x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + int4x3 b0 = int4x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool4x3 r0 = bool4x3(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x3 a1 = int4x3(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int4x3 b1 = int4x3(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool4x3 r1 = bool4x3(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4x3 a2 = int4x3(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + int4x3 b2 = int4x3(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool4x3 r2 = bool4x3(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4x3 a3 = int4x3(1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + int4x3 b3 = int4x3(1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool4x3 r3 = bool4x3(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_wide_scalar() + { + int4x3 a0 = int4x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650); + int b0 = (1491216667); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x3 a1 = int4x3(930950514, 933855388, 908563901, 1127696709, 1286331950, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027); + int b1 = (1100560246); + bool4x3 r1 = bool4x3(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int4x3 a2 = int4x3(371987110, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606); + int b2 = (867559111); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int4x3 a3 = int4x3(1891059504, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493, 212954934); + int b3 = (1217893177); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_scalar_wide() + { + int a0 = (548436837); + int4x3 b0 = int4x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1890019295); + int4x3 b1 = int4x3(2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659); + bool4x3 r1 = bool4x3(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (810406400); + int4x3 b2 = int4x3(1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916); + bool4x3 r2 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (168788814); + int4x3 b3 = int4x3(670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033, 685700324); + bool4x3 r3 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_wide_wide() + { + int4x3 a0 = int4x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + int4x3 b0 = int4x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool4x3 r0 = bool4x3(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int4x3 a1 = int4x3(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int4x3 b1 = int4x3(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4x3 a2 = int4x3(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + int4x3 b2 = int4x3(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int4x3 a3 = int4x3(194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + int4x3 b3 = int4x3(1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_wide_scalar() + { + int4x3 a0 = int4x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515); + int b0 = (438688675); + bool4x3 r0 = bool4x3(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int4x3 a1 = int4x3(711945018, 577943770, 572743717, 1016617211, 2063134811, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424); + int b1 = (1035679270); + bool4x3 r1 = bool4x3(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int4x3 a2 = int4x3(1045140419, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732); + int b2 = (1058332184); + bool4x3 r2 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4x3 a3 = int4x3(1284938191, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269, 1930086291); + int b3 = (1452639553); + bool4x3 r3 = bool4x3(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int4x3 b0 = int4x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1556466996); + int4x3 b1 = int4x3(858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1713088900); + int4x3 b2 = int4x3(315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (267985383); + int4x3 b3 = int4x3(126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217, 1480829811); + bool4x3 r3 = bool4x3(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_equal_wide_wide() + { + int4x3 a0 = int4x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + int4x3 b0 = int4x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool4x3 r0 = bool4x3(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x3 a1 = int4x3(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int4x3 b1 = int4x3(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool4x3 r1 = bool4x3(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x3 a2 = int4x3(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + int4x3 b2 = int4x3(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool4x3 r2 = bool4x3(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x3 a3 = int4x3(1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + int4x3 b3 = int4x3(1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_equal_wide_scalar() + { + int4x3 a0 = int4x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763); + int b0 = (1688048545); + bool4x3 r0 = bool4x3(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x3 a1 = int4x3(690091301, 2091514001, 1857173043, 1617221948, 2017733017, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519); + int b1 = (1806172431); + bool4x3 r1 = bool4x3(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x3 a2 = int4x3(1917813750, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244); + int b2 = (1258115260); + bool4x3 r2 = bool4x3(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x3 a3 = int4x3(426908235, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266, 1483727269); + int b3 = (1818566980); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int4x3 b0 = int4x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1293698493); + int4x3 b1 = int4x3(48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (601413850); + int4x3 b2 = int4x3(830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260); + bool4x3 r2 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (733876180); + int4x3 b3 = int4x3(1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410, 1987696011); + bool4x3 r3 = bool4x3(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_equal_wide_wide() + { + int4x3 a0 = int4x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + int4x3 b0 = int4x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool4x3 r0 = bool4x3(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x3 a1 = int4x3(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int4x3 b1 = int4x3(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool4x3 r1 = bool4x3(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x3 a2 = int4x3(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + int4x3 b2 = int4x3(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool4x3 r2 = bool4x3(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x3 a3 = int4x3(584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + int4x3 b3 = int4x3(2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_equal_wide_scalar() + { + int4x3 a0 = int4x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867); + int b0 = (1470533736); + bool4x3 r0 = bool4x3(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x3 a1 = int4x3(1419295004, 1819986195, 1460027917, 1646290021, 196833647, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862); + int b1 = (471843809); + bool4x3 r1 = bool4x3(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x3 a2 = int4x3(1449142607, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895); + int b2 = (1223010129); + bool4x3 r2 = bool4x3(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x3 a3 = int4x3(192092521, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700, 702382564); + int b3 = (909358617); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int4x3 b0 = int4x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1214546726); + int4x3 b1 = int4x3(917376832, 303549425, 2111728811, 945321577, 173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189); + bool4x3 r1 = bool4x3(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1336522452); + int4x3 b2 = int4x3(233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513); + bool4x3 r2 = bool4x3(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (474197678); + int4x3 b3 = int4x3(1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168, 1274079907); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_add_wide_wide() + { + int4x3 a0 = int4x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + int4x3 b0 = int4x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + int4x3 r0 = int4x3(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a0 + b0, r0); + + int4x3 a1 = int4x3(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int4x3 b1 = int4x3(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int4x3 r1 = int4x3(-147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a1 + b1, r1); + + int4x3 a2 = int4x3(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + int4x3 b2 = int4x3(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + int4x3 r2 = int4x3(-1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005, 604086579, -2144211299, -668553705, -1620851127); + TestUtils.AreEqual(a2 + b2, r2); + + int4x3 a3 = int4x3(728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + int4x3 b3 = int4x3(1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + int4x3 r3 = int4x3(-1833755501, 1450246522, -1850179797, 1669976746, -938217892, 1917402232, 1548618217, -1431586812, -823896228, 2013864506, 348877644, -2052539555); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_add_wide_scalar() + { + int4x3 a0 = int4x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202); + int b0 = (2124409227); + int4x3 r0 = int4x3(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768, -167536208, -534586098, -1010159783, -2085111867); + TestUtils.AreEqual(a0 + b0, r0); + + int4x3 a1 = int4x3(1068152966, 1497676888, 1727477485, 1095438654, 756559204, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233); + int b1 = (1239387100); + int4x3 r1 = int4x3(-1987427230, -1557903308, -1328102711, -1960141542, 1995946304, -1236861265, 1898310652, -1445061275, -1469824798, 1932230400, -1986986727, -1350803963); + TestUtils.AreEqual(a1 + b1, r1); + + int4x3 a2 = int4x3(577782260, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190); + int b2 = (736972565); + int4x3 r2 = int4x3(1314754825, 1448867136, 1301230004, -1506258448, -1985157034, -1929988186, -1702294468, 1393721347, 1009747081, -1640861532, 1565295538, -1441184541); + TestUtils.AreEqual(a2 + b2, r2); + + int4x3 a3 = int4x3(2092767444, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914, 1340503111); + int b3 = (973587865); + int4x3 r3 = int4x3(-1228611987, -2084448158, 1477852314, 1767880439, -1803320750, -1716743107, 1328461282, 1658835762, 1201369005, 1294770382, -2110803517, -1980876320); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_add_scalar_wide() + { + int a0 = (391092078); + int4x3 b0 = int4x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302); + int4x3 r0 = int4x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146, 1387123903, 1948867027, 1170867018, 1502633380); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (783046445); + int4x3 b1 = int4x3(1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768); + int4x3 r1 = int4x3(1913210389, 1071326029, -2114236990, -1875337362, 1456309784, -2042619977, 797902410, 1899683444, -2023057551, -1910929965, 973697746, 2090506213); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (920085839); + int4x3 b2 = int4x3(2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886); + int4x3 r2 = int4x3(-1292651622, -1382475883, 2134010297, 1425927291, 1901507001, -1886543758, 2033912479, -1568734949, -1533090235, 1126696690, 1447057792, -2138521571); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1459523189); + int4x3 b3 = int4x3(965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031, 1275565021); + int4x3 r3 = int4x3(-1869703476, 1542365988, -1537040906, -1029634335, -856579916, 1874526575, -929139959, -2112573910, -2091195311, -1158220548, 1762899220, -1559879086); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_sub_wide_wide() + { + int4x3 a0 = int4x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + int4x3 b0 = int4x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + int4x3 r0 = int4x3(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747, 1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a0 - b0, r0); + + int4x3 a1 = int4x3(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int4x3 b1 = int4x3(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int4x3 r1 = int4x3(-50205903, -930193352, 120810088, 929308315, -624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a1 - b1, r1); + + int4x3 a2 = int4x3(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + int4x3 b2 = int4x3(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + int4x3 r2 = int4x3(-183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a2 - b2, r2); + + int4x3 a3 = int4x3(741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + int4x3 b3 = int4x3(1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + int4x3 r3 = int4x3(-345917539, 1650323877, 979082147, 182559134, -136395064, 1442113917, 8339009, 1379854326, -592461473, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_sub_wide_scalar() + { + int4x3 a0 = int4x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336); + int b0 = (462232403); + int4x3 r0 = int4x3(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412, -181058203, -374701563, 1451492028, 1579360933); + TestUtils.AreEqual(a0 - b0, r0); + + int4x3 a1 = int4x3(557239990, 1590376732, 819090189, 816382635, 815920639, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742); + int b1 = (1119051448); + int4x3 r1 = int4x3(-561811458, 471325284, -299961259, -302668813, -303130809, 709981669, 673750484, -5610899, 299886528, 158205741, 973727950, -476814706); + TestUtils.AreEqual(a1 - b1, r1); + + int4x3 a2 = int4x3(1605250794, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204); + int b2 = (819644478); + int4x3 r2 = int4x3(785606316, 648358541, -691341292, -266150221, 197482493, 1180100304, 1197628280, 998347286, 461341022, -142669623, 818388135, 130116726); + TestUtils.AreEqual(a2 - b2, r2); + + int4x3 a3 = int4x3(1835969317, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965, 941598524); + int b3 = (919015590); + int4x3 r3 = int4x3(916953727, 57931720, 385231016, 537764618, 635007122, -149211225, 1138816097, -160879011, -248582335, -315784179, 754253375, 22582934); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int4x3 b0 = int4x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748); + int4x3 r0 = int4x3(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128, -97766016, 1426821512, 459678338, -126578343); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (1428436109); + int4x3 b1 = int4x3(1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461); + int4x3 r1 = int4x3(169690649, 351055713, 97713390, 910324280, 461307580, 1083769855, 346168191, 520569413, -388449014, 968095541, 466281611, 871322648); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1701216709); + int4x3 b2 = int4x3(1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026); + int4x3 r2 = int4x3(-278882068, 971156157, 256818882, 847646153, 1562380277, 688026281, 983127179, 1194459319, 484768668, 764903962, -296069746, -268765317); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (902880656); + int4x3 b3 = int4x3(1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072, 2066839749); + int4x3 r3 = int4x3(-258340041, -539584069, 279919891, 171911747, 288056815, -986898364, -15441696, 768950736, 689757548, -932569804, 381812584, -1163959093); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mul_wide_wide() + { + int4x3 a0 = int4x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + int4x3 b0 = int4x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + int4x3 r0 = int4x3(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a0 * b0, r0); + + int4x3 a1 = int4x3(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int4x3 b1 = int4x3(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int4x3 r1 = int4x3(990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a1 * b1, r1); + + int4x3 a2 = int4x3(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + int4x3 b2 = int4x3(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + int4x3 r2 = int4x3(1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942, 48406862, -1997863296, -275121228, -1483457191); + TestUtils.AreEqual(a2 * b2, r2); + + int4x3 a3 = int4x3(892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + int4x3 b3 = int4x3(142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + int4x3 r3 = int4x3(293009766, -617864326, 1179445736, -481780132, -1586128904, 1397450915, 487571412, -405680754, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mul_wide_scalar() + { + int4x3 a0 = int4x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747); + int b0 = (1476837906); + int4x3 r0 = int4x3(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518, 1736252960, -1699123674, -1534863838, -1853528010); + TestUtils.AreEqual(a0 * b0, r0); + + int4x3 a1 = int4x3(1818877398, 660611671, 1279757657, 391009467, 1186856590, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300); + int b1 = (1324050764); + int4x3 r1 = int4x3(1927061896, 645718228, -588613780, -844440956, -567685080, -1684615432, -1092253528, 133057916, -1582148944, -1029961452, -248833688, 100822256); + TestUtils.AreEqual(a1 * b1, r1); + + int4x3 a2 = int4x3(1192501703, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648); + int b2 = (1613845584); + int4x3 r2 = int4x3(-394864080, -1335460816, 692371456, 973833232, 1630959136, -1678368480, -191340960, 1516495024, 2027781488, 471196848, -2125435808, 1043640960); + TestUtils.AreEqual(a2 * b2, r2); + + int4x3 a3 = int4x3(227492421, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790, 396984449); + int b3 = (217698851); + int4x3 r3 = int4x3(269461871, 1120555251, 1293383984, 1838219542, -1271695412, 1677010101, 1900394426, 512258290, -238570208, -508870886, 1697920914, 1359963043); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mul_scalar_wide() + { + int a0 = (99541948); + int4x3 b0 = int4x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767); + int4x3 r0 = int4x3(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328, 1623617844, -1691554240, -830512240, -1283699420); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (243286231); + int4x3 b1 = int4x3(1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639); + int4x3 r1 = int4x3(-648389235, -1563629439, -401476800, -1314550601, 62369507, -76557479, -1413808100, -328103037, 2038656731, -2070911977, -1476360861, -1549578607); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1323243330); + int4x3 b2 = int4x3(1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263); + int4x3 r2 = int4x3(-94024808, 50866050, 1979584376, -2129139002, 2084048518, -630615902, 1987582754, -2107012204, -1274032366, 1909741994, 2131645412, 527678350); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (2022856151); + int4x3 b3 = int4x3(1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370, 890235481); + int4x3 r3 = int4x3(-1935205669, -686991577, -1926794436, -1053293830, -653994693, -1849661752, 1198448575, -1186284852, -1561308297, -1930349931, -910321442, 938433983); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_div_wide_wide() + { + int4x3 a0 = int4x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + int4x3 b0 = int4x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + int4x3 r0 = int4x3(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int4x3 a1 = int4x3(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int4x3 b1 = int4x3(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int4x3 r1 = int4x3(0, 2, 1, 2, 1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4x3 a2 = int4x3(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + int4x3 b2 = int4x3(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + int4x3 r2 = int4x3(2, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int4x3 a3 = int4x3(991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + int4x3 b3 = int4x3(554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + int4x3 r3 = int4x3(1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_div_wide_scalar() + { + int4x3 a0 = int4x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657); + int b0 = (947861580); + int4x3 r0 = int4x3(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int4x3 a1 = int4x3(2131487088, 1017891310, 542666029, 1646044372, 1447236569, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885); + int b1 = (2105094094); + int4x3 r1 = int4x3(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4x3 a2 = int4x3(1919705924, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918); + int b2 = (1244966864); + int4x3 r2 = int4x3(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int4x3 a3 = int4x3(1515555001, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647, 1222061694); + int b3 = (614923813); + int4x3 r3 = int4x3(2, 1, 3, 3, 3, 1, 3, 0, 0, 2, 3, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_div_scalar_wide() + { + int a0 = (1161272038); + int4x3 b0 = int4x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703); + int4x3 r0 = int4x3(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (631027637); + int4x3 b1 = int4x3(396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043); + int4x3 r1 = int4x3(1, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1054404890); + int4x3 b2 = int4x3(351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534); + int4x3 r2 = int4x3(2, 7, 0, 2, 0, 4, 0, 0, 0, 23, 0, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (126616016); + int4x3 b3 = int4x3(1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719, 638134699); + int4x3 r3 = int4x3(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mod_wide_wide() + { + int4x3 a0 = int4x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + int4x3 b0 = int4x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + int4x3 r0 = int4x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a0 % b0, r0); + + int4x3 a1 = int4x3(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int4x3 b1 = int4x3(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int4x3 r1 = int4x3(137194997, 593433700, 360454892, 8060301, 7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a1 % b1, r1); + + int4x3 a2 = int4x3(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + int4x3 b2 = int4x3(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + int4x3 r2 = int4x3(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a2 % b2, r2); + + int4x3 a3 = int4x3(1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + int4x3 b3 = int4x3(244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + int4x3 r3 = int4x3(166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mod_wide_scalar() + { + int4x3 a0 = int4x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935); + int b0 = (883951171); + int4x3 r0 = int4x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764); + TestUtils.AreEqual(a0 % b0, r0); + + int4x3 a1 = int4x3(712321026, 1540068445, 1085897743, 1607489717, 165478511, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912); + int b1 = (172564850); + int4x3 r1 = int4x3(22061626, 159549645, 50508643, 54406067, 165478511, 130152166, 52883749, 49746751, 65367033, 49545706, 143379989, 17042712); + TestUtils.AreEqual(a1 % b1, r1); + + int4x3 a2 = int4x3(377501313, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372); + int b2 = (1778384846); + int4x3 r2 = int4x3(377501313, 1216011754, 812183417, 1153802502, 1642671870, 146325896, 665297470, 1568090825, 272598096, 435886407, 453990946, 1731665372); + TestUtils.AreEqual(a2 % b2, r2); + + int4x3 a3 = int4x3(586777590, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411, 1524342239); + int b3 = (1475597526); + int4x3 r3 = int4x3(586777590, 110051989, 1414579860, 416067455, 1262495021, 1400758118, 53934482, 430295164, 1386414018, 654749032, 666621411, 48744713); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mod_scalar_wide() + { + int a0 = (242383789); + int4x3 b0 = int4x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233); + int4x3 r0 = int4x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1298102643); + int4x3 b1 = int4x3(2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738); + int4x3 r1 = int4x3(1298102643, 297360552, 1298102643, 1298102643, 500917956, 476213801, 214909646, 457987657, 1298102643, 67782715, 1298102643, 1739061); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (2122220318); + int4x3 b2 = int4x3(164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894); + int4x3 r2 = int4x3(147283586, 662044080, 677274179, 816428281, 1011391307, 376773156, 120051662, 644373900, 76505386, 479992776, 159909553, 50931378); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1342085447); + int4x3 b3 = int4x3(448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751, 1648646354); + int4x3 r3 = int4x3(445362875, 3415371, 636619696, 588996674, 195741437, 241524871, 267605306, 1342085447, 1342085447, 1342085447, 243643696, 1342085447); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_plus() + { + int4x3 a0 = int4x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + int4x3 r0 = int4x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + TestUtils.AreEqual(+a0, r0); + + int4x3 a1 = int4x3(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + int4x3 r1 = int4x3(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + TestUtils.AreEqual(+a1, r1); + + int4x3 a2 = int4x3(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + int4x3 r2 = int4x3(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + TestUtils.AreEqual(+a2, r2); + + int4x3 a3 = int4x3(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + int4x3 r3 = int4x3(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int4x3_operator_neg() + { + int4x3 a0 = int4x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286); + int4x3 r0 = int4x3(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349, -1115028238, -1636274969, -694995093, -1542206286); + TestUtils.AreEqual(-a0, r0); + + int4x3 a1 = int4x3(213087293, 341522275, 841085242, 574159094, 1687250035, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864); + int4x3 r1 = int4x3(-213087293, -341522275, -841085242, -574159094, -1687250035, -2057919693, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864); + TestUtils.AreEqual(-a1, r1); + + int4x3 a2 = int4x3(1440774928, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868); + int4x3 r2 = int4x3(-1440774928, -431666091, -1387601718, -1745651998, -319115626, -1119959806, -739132284, -1954173314, -1709857098, -1836511050, -1662806453, -506144868); + TestUtils.AreEqual(-a2, r2); + + int4x3 a3 = int4x3(650922971, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551, 1768435578); + int4x3 r3 = int4x3(-650922971, -1273997249, -1474445187, -1853826947, -1695573773, -729452512, -345069360, -575867536, -594119038, -1201840609, -1342872551, -1768435578); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int4x3_operator_prefix_inc() + { + int4x3 a0 = int4x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935); + int4x3 r0 = int4x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936); + TestUtils.AreEqual(++a0, r0); + + int4x3 a1 = int4x3(1835605516, 388229350, 696475402, 1786514683, 993189311, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489); + int4x3 r1 = int4x3(1835605517, 388229351, 696475403, 1786514684, 993189312, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490); + TestUtils.AreEqual(++a1, r1); + + int4x3 a2 = int4x3(504806865, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111); + int4x3 r2 = int4x3(504806866, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112); + TestUtils.AreEqual(++a2, r2); + + int4x3 a3 = int4x3(1414867743, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802, 413165245); + int4x3 r3 = int4x3(1414867744, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803, 413165246); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int4x3_operator_postfix_inc() + { + int4x3 a0 = int4x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + int4x3 r0 = int4x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + TestUtils.AreEqual(a0++, r0); + + int4x3 a1 = int4x3(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + int4x3 r1 = int4x3(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + TestUtils.AreEqual(a1++, r1); + + int4x3 a2 = int4x3(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + int4x3 r2 = int4x3(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + TestUtils.AreEqual(a2++, r2); + + int4x3 a3 = int4x3(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + int4x3 r3 = int4x3(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int4x3_operator_prefix_dec() + { + int4x3 a0 = int4x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358); + int4x3 r0 = int4x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357); + TestUtils.AreEqual(--a0, r0); + + int4x3 a1 = int4x3(1914114460, 389120307, 1022184392, 1310293956, 356565557, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297); + int4x3 r1 = int4x3(1914114459, 389120306, 1022184391, 1310293955, 356565556, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296); + TestUtils.AreEqual(--a1, r1); + + int4x3 a2 = int4x3(220897829, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380); + int4x3 r2 = int4x3(220897828, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379); + TestUtils.AreEqual(--a2, r2); + + int4x3 a3 = int4x3(2083512379, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317, 767990877); + int4x3 r3 = int4x3(2083512378, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316, 767990876); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int4x3_operator_postfix_dec() + { + int4x3 a0 = int4x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + int4x3 r0 = int4x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + TestUtils.AreEqual(a0--, r0); + + int4x3 a1 = int4x3(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + int4x3 r1 = int4x3(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + TestUtils.AreEqual(a1--, r1); + + int4x3 a2 = int4x3(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + int4x3 r2 = int4x3(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + TestUtils.AreEqual(a2--, r2); + + int4x3 a3 = int4x3(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + int4x3 r3 = int4x3(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_and_wide_wide() + { + int4x3 a0 = int4x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + int4x3 b0 = int4x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + int4x3 r0 = int4x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a0 & b0, r0); + + int4x3 a1 = int4x3(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int4x3 b1 = int4x3(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int4x3 r1 = int4x3(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a1 & b1, r1); + + int4x3 a2 = int4x3(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + int4x3 b2 = int4x3(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + int4x3 r2 = int4x3(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a2 & b2, r2); + + int4x3 a3 = int4x3(1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + int4x3 b3 = int4x3(1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + int4x3 r3 = int4x3(706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_and_wide_scalar() + { + int4x3 a0 = int4x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920); + int b0 = (93423598); + int4x3 r0 = int4x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672); + TestUtils.AreEqual(a0 & b0, r0); + + int4x3 a1 = int4x3(1249238550, 1862276471, 143502472, 861733033, 1408932942, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025); + int b1 = (814629680); + int4x3 r1 = int4x3(279056, 536871216, 9175040, 806092832, 277479424, 805568528, 268452112, 9175824, 268567088, 268697600, 934144, 8650784); + TestUtils.AreEqual(a1 & b1, r1); + + int4x3 a2 = int4x3(462670926, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061); + int b2 = (1817145060); + int4x3 r2 = int4x3(134433860, 1145858724, 1816224836, 542076516, 739126372, 1611530816, 537593028, 604439716, 1140983364, 672014980, 1745571424, 1208165380); + TestUtils.AreEqual(a2 & b2, r2); + + int4x3 a3 = int4x3(398141788, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172, 1826788967); + int b3 = (156911041); + int4x3 r3 = int4x3(18481472, 17843457, 5783937, 156763393, 22151233, 138937729, 152585345, 4867329, 21643264, 132544, 4719616, 138544193); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int4x3 b0 = int4x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596); + int4x3 r0 = int4x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1763483957); + int4x3 b1 = int4x3(1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366); + int4x3 r1 = int4x3(1209041205, 136061185, 151265585, 1074528516, 1744830512, 671121697, 1092091952, 1761607941, 18391060, 1761615904, 1763221553, 1091051540); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1233066417); + int4x3 b2 = int4x3(1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007); + int4x3 r2 = int4x3(1214058640, 2230321, 1210847617, 1074401680, 1211367456, 1116577, 1232603553, 3674113, 1078202400, 136118672, 1098518961, 4128897); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1808619374); + int4x3 b3 = int4x3(1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681, 1980296380); + int4x3 r3 = int4x3(1246058336, 1644778764, 12650346, 1640318254, 1216610624, 587220044, 1644695918, 33834028, 734795298, 671961678, 1241777216, 1644708908); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_or_wide_wide() + { + int4x3 a0 = int4x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + int4x3 b0 = int4x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + int4x3 r0 = int4x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a0 | b0, r0); + + int4x3 a1 = int4x3(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int4x3 b1 = int4x3(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int4x3 r1 = int4x3(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a1 | b1, r1); + + int4x3 a2 = int4x3(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + int4x3 b2 = int4x3(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + int4x3 r2 = int4x3(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a2 | b2, r2); + + int4x3 a3 = int4x3(470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + int4x3 b3 = int4x3(1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + int4x3 r3 = int4x3(1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_or_wide_scalar() + { + int4x3 a0 = int4x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856); + int b0 = (1666102508); + int4x3 r0 = int4x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148); + TestUtils.AreEqual(a0 | b0, r0); + + int4x3 a1 = int4x3(879300408, 797240690, 1977614655, 46921989, 1980838747, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070); + int b1 = (1179087439); + int4x3 r1 = int4x3(1987018623, 1875378047, 2011657087, 1188035407, 1985442655, 1459090271, 1205302255, 1459058687, 1465382751, 1995407311, 1599567599, 2122316799); + TestUtils.AreEqual(a1 | b1, r1); + + int4x3 a2 = int4x3(2055963359, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200); + int b2 = (1511253082); + int4x3 r2 = int4x3(2057037535, 2077750875, 1579155451, 2069362559, 1590951034, 1534850271, 1593306847, 2050745566, 1519910623, 2117597023, 1604316378, 1600120154); + TestUtils.AreEqual(a2 | b2, r2); + + int4x3 a3 = int4x3(1353013374, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643, 142082352); + int b3 = (1349149982); + int4x3 r3 = int4x3(1357872510, 1895528286, 1374318015, 2012964638, 1550483390, 1602123263, 1483666815, 1920624063, 1458464191, 2012116286, 1424685023, 1484416318); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int4x3 b0 = int4x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649); + int4x3 r0 = int4x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1059093741); + int4x3 b1 = int4x3(627815046, 418822515, 83214352, 424663473, 447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329); + int4x3 r1 = int4x3(1064042223, 1073151487, 1073085693, 1064304125, 1068727789, 1063910895, 2133818605, 1060240621, 2145910509, 2138209533, 2146074365, 2142830317); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1088734150); + int4x3 b2 = int4x3(298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598); + int4x3 r2 = int4x3(1374682086, 2063067087, 1660812255, 1743570934, 1945042926, 1089859558, 1911943150, 2079645678, 1627375606, 1307434967, 1341444039, 1526649806); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (1098359242); + int4x3 b3 = int4x3(997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616, 1326199854); + int4x3 r3 = int4x3(2071978954, 1098885598, 2071455727, 1702356954, 1098381823, 1568651246, 2046802926, 1509946863, 2038414794, 1644161007, 1308081658, 1333769710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_xor_wide_wide() + { + int4x3 a0 = int4x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + int4x3 b0 = int4x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + int4x3 r0 = int4x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x3 a1 = int4x3(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int4x3 b1 = int4x3(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int4x3 r1 = int4x3(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x3 a2 = int4x3(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + int4x3 b2 = int4x3(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + int4x3 r2 = int4x3(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x3 a3 = int4x3(1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + int4x3 b3 = int4x3(1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + int4x3 r3 = int4x3(632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_xor_wide_scalar() + { + int4x3 a0 = int4x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267); + int b0 = (493665894); + int4x3 r0 = int4x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x3 a1 = int4x3(125659640, 1730088797, 116862046, 375757978, 491079274, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924); + int b1 = (1315625690); + int4x3 r1 = int4x3(1226289954, 695588231, 1218311812, 1477396032, 1395629232, 1158101236, 1162708111, 2010043079, 1856848613, 1753692570, 1315361570, 373338582); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x3 a2 = int4x3(1680011736, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239); + int b2 = (447453839); + int4x3 r2 = int4x3(2122935127, 800240497, 198659571, 98559616, 86185743, 1221222109, 1565485394, 630017616, 919085284, 427397619, 1988160398, 446789440); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x3 a3 = int4x3(476052372, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185, 1771744425); + int b3 = (92561487); + int4x3 r3 = int4x3(433822683, 2133436125, 133297725, 1274987888, 2020970994, 180462097, 52620731, 1114759625, 2024733453, 2005017615, 912470822, 1813957862); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int4x3 b0 = int4x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424); + int4x3 r0 = int4x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1947871003); + int4x3 b1 = int4x3(1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881); + int4x3 r1 = int4x3(500881003, 132477417, 876677487, 1699258642, 645842392, 1138923504, 974408494, 2033457704, 1087830061, 1348553799, 2139822446, 660194722); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (573581481); + int4x3 b2 = int4x3(1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615); + int4x3 r2 = int4x3(1311539225, 655981444, 1435501080, 2003229500, 399194716, 2022579220, 693043286, 145445825, 880683118, 787181808, 2146955403, 205673470); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (711527976); + int4x3 b3 = int4x3(710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645, 896851285); + int4x3 r3 = int4x3(3284335, 658000982, 154339351, 2085169939, 946304861, 44451568, 2115414221, 2137251591, 317021346, 552683235, 1575100285, 522048381); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_left_shift() + { + int4x3 a0 = int4x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534); + int b0 = (1321149625); + int4x3 r0 = int4x3(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464, -1409286144, 838860800, -872415232, -1409286144); + TestUtils.AreEqual(a0 << b0, r0); + + int4x3 a1 = int4x3(1447702302, 35667343, 1664454606, 2045594989, 2077023268, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181); + int b1 = (1079614371); + int4x3 r1 = int4x3(-1303283472, 285338744, 430734960, -815109272, -563683040, 446462192, -1912924008, 897198008, 703071480, 298127560, -607585048, -711260440); + TestUtils.AreEqual(a1 << b1, r1); + + int4x3 a2 = int4x3(263886278, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192); + int b2 = (221147365); + int4x3 r2 = int4x3(-145573696, -2025378080, -1200788480, -2010056960, -1775845888, -1021463552, 1296563040, -1738194528, 1884213760, -928070976, 160790208, 31956480); + TestUtils.AreEqual(a2 << b2, r2); + + int4x3 a3 = int4x3(740058147, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326, 1996060114); + int b3 = (946058001); + int4x3 r3 = int4x3(-934936576, -87949312, 1441398784, -1265369088, -5373952, -1576271872, -614334464, 1110573056, 1163132928, 173408256, 1445724160, -341573632); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_right_shift() + { + int4x3 a0 = int4x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045); + int b0 = (1266801540); + int4x3 r0 = int4x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440); + TestUtils.AreEqual(a0 >> b0, r0); + + int4x3 a1 = int4x3(701927980, 569504877, 185593382, 1102123711, 334005460, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762); + int b1 = (917785020); + int4x3 r1 = int4x3(2, 2, 0, 4, 1, 6, 1, 5, 6, 2, 4, 1); + TestUtils.AreEqual(a1 >> b1, r1); + + int4x3 a2 = int4x3(763607760, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381); + int b2 = (348013684); + int4x3 r2 = int4x3(728, 1495, 738, 1513, 572, 28, 1793, 335, 1110, 405, 177, 1048); + TestUtils.AreEqual(a2 >> b2, r2); + + int4x3 a3 = int4x3(1234295294, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981, 1435331003); + int b3 = (1028666766); + int4x3 r3 = int4x3(75335, 46488, 76590, 55139, 72040, 11168, 58514, 65650, 86028, 96236, 42779, 87605); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_not() + { + int4x3 a0 = int4x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024); + int4x3 r0 = int4x3(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857, -472965492, -771711427, -627580961, -2061524025); + TestUtils.AreEqual(~a0, r0); + + int4x3 a1 = int4x3(753208488, 1303022493, 664744603, 1289372466, 1635981125, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321); + int4x3 r1 = int4x3(-753208489, -1303022494, -664744604, -1289372467, -1635981126, -1951018597, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322); + TestUtils.AreEqual(~a1, r1); + + int4x3 a2 = int4x3(1282546942, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829); + int4x3 r2 = int4x3(-1282546943, -1824824811, -1736570716, -508906059, -2060752881, -1867418757, -388530275, -695179853, -1766938040, -897923627, -1816190465, -1362906830); + TestUtils.AreEqual(~a2, r2); + + int4x3 a3 = int4x3(1227946838, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010, 722020848); + int4x3 r3 = int4x3(-1227946839, -189609279, -956441809, -2123488811, -1593014252, -19223062, -1722107955, -1636875695, -1914097393, -1382545028, -1285277011, -722020849); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x3.gen.cs.meta new file mode 100644 index 0000000..2a97331 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ffba8e003136db4abab4542f240e632 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x4.gen.cs new file mode 100644 index 0000000..61036b7 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x4.gen.cs @@ -0,0 +1,1258 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt4x4 + { + [TestCompiler] + public static void int4x4_zero() + { + TestUtils.AreEqual(int4x4.zero.c0.x, 0); + TestUtils.AreEqual(int4x4.zero.c0.y, 0); + TestUtils.AreEqual(int4x4.zero.c0.z, 0); + TestUtils.AreEqual(int4x4.zero.c0.w, 0); + TestUtils.AreEqual(int4x4.zero.c1.x, 0); + TestUtils.AreEqual(int4x4.zero.c1.y, 0); + TestUtils.AreEqual(int4x4.zero.c1.z, 0); + TestUtils.AreEqual(int4x4.zero.c1.w, 0); + TestUtils.AreEqual(int4x4.zero.c2.x, 0); + TestUtils.AreEqual(int4x4.zero.c2.y, 0); + TestUtils.AreEqual(int4x4.zero.c2.z, 0); + TestUtils.AreEqual(int4x4.zero.c2.w, 0); + TestUtils.AreEqual(int4x4.zero.c3.x, 0); + TestUtils.AreEqual(int4x4.zero.c3.y, 0); + TestUtils.AreEqual(int4x4.zero.c3.z, 0); + TestUtils.AreEqual(int4x4.zero.c3.w, 0); + } + + [TestCompiler] + public static void int4x4_identity() + { + TestUtils.AreEqual(int4x4.identity.c0.x, 1); + TestUtils.AreEqual(int4x4.identity.c0.y, 0); + TestUtils.AreEqual(int4x4.identity.c0.z, 0); + TestUtils.AreEqual(int4x4.identity.c0.w, 0); + TestUtils.AreEqual(int4x4.identity.c1.x, 0); + TestUtils.AreEqual(int4x4.identity.c1.y, 1); + TestUtils.AreEqual(int4x4.identity.c1.z, 0); + TestUtils.AreEqual(int4x4.identity.c1.w, 0); + TestUtils.AreEqual(int4x4.identity.c2.x, 0); + TestUtils.AreEqual(int4x4.identity.c2.y, 0); + TestUtils.AreEqual(int4x4.identity.c2.z, 1); + TestUtils.AreEqual(int4x4.identity.c2.w, 0); + TestUtils.AreEqual(int4x4.identity.c3.x, 0); + TestUtils.AreEqual(int4x4.identity.c3.y, 0); + TestUtils.AreEqual(int4x4.identity.c3.z, 0); + TestUtils.AreEqual(int4x4.identity.c3.w, 1); + } + + [TestCompiler] + public static void int4x4_operator_equal_wide_wide() + { + int4x4 a0 = int4x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + int4x4 b0 = int4x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x4 a1 = int4x4(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509, 1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + int4x4 b1 = int4x4(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580, 708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x4 a2 = int4x4(929607871, 2092475304, 1940221590, 196567546, 346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + int4x4 b2 = int4x4(91580624, 1974459648, 2074899534, 164782857, 1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x4 a3 = int4x4(1006521329, 850817587, 270689979, 182908990, 512098264, 1555870818, 1824899010, 913664406, 38410741, 1365981133, 1517827659, 698699317, 522637780, 2135467596, 1812545145, 795262261); + int4x4 b3 = int4x4(407784873, 516627611, 184196508, 1098113599, 1930819007, 693573550, 780517021, 48392683, 638156511, 356540844, 86920844, 103170762, 1952606997, 1374974056, 906153405, 602525178); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_equal_wide_scalar() + { + int4x4 a0 = int4x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210); + int b0 = (746972502); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x4 a1 = int4x4(969511077, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678, 1305479811, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966); + int b1 = (442746747); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x4 a2 = int4x4(1684122010, 172230876, 496695881, 955604291, 872759249, 811880239, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886); + int b2 = (1962874832); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x4 a3 = int4x4(20195989, 1256964339, 165389004, 759951440, 321496427, 551284899, 2058550111, 2146975562, 1182607877, 1588866146, 1478019984, 733564558, 1504896105, 284238873, 1641065069, 259620445); + int b3 = (550465422); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int4x4 b0 = int4x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (455818693); + int4x4 b1 = int4x4(2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1395605233); + int4x4 b2 = int4x4(1191785903, 1156248212, 338891967, 61410415, 1576985758, 1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (2074160001); + int4x4 b3 = int4x4(211145132, 1330427155, 231737739, 590220146, 622950505, 2048231874, 682985774, 865101790, 1523019859, 261373300, 132547968, 1971091157, 982104573, 1456888767, 1700538931, 1590557254); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_not_equal_wide_wide() + { + int4x4 a0 = int4x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + int4x4 b0 = int4x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x4 a1 = int4x4(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890, 922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + int4x4 b1 = int4x4(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634, 1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x4 a2 = int4x4(10845678, 1588544505, 709736932, 1892341087, 1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + int4x4 b2 = int4x4(1954996717, 572153302, 865957902, 1083128726, 1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x4 a3 = int4x4(1370971537, 526135879, 1693615335, 1040142702, 51869182, 636351650, 1137389277, 742650911, 1652337799, 128512016, 943930500, 1281758501, 1506504768, 1142416208, 489425068, 709011851); + int4x4 b3 = int4x4(881583266, 836740859, 2050520235, 56355243, 923319881, 2093941797, 1966851287, 740544328, 1686486765, 1564852763, 1583872597, 1319685687, 1082069798, 1934459521, 610009662, 2003062130); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_not_equal_wide_scalar() + { + int4x4 a0 = int4x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730); + int b0 = (248693828); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x4 a1 = int4x4(1412347883, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685, 904014575, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847); + int b1 = (1622176923); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x4 a2 = int4x4(1555396158, 1739138988, 1916670251, 1516209113, 765258490, 668154629, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942); + int b2 = (913218907); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x4 a3 = int4x4(780105497, 1311007738, 2079744789, 1086529117, 898347399, 1597839770, 1711183709, 2048684031, 1167351404, 528657884, 565527393, 227149840, 89869060, 1358928288, 44374114, 2059875706); + int b3 = (1302143939); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int4x4 b0 = int4x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (472172806); + int4x4 b1 = int4x4(266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (676012224); + int4x4 b2 = int4x4(627370253, 1715733805, 699755913, 1875151666, 358894860, 1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1002934795); + int4x4 b3 = int4x4(1859322106, 1990390938, 1674000894, 1035504906, 1681354617, 2079296301, 1396396873, 2128571831, 3388167, 1211711140, 575696152, 1534939377, 496306248, 908210564, 131274243, 543089960); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_wide_wide() + { + int4x4 a0 = int4x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + int4x4 b0 = int4x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool4x4 r0 = bool4x4(false, true, false, false, false, true, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x4 a1 = int4x4(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162, 1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + int4x4 b1 = int4x4(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133, 271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool4x4 r1 = bool4x4(true, true, true, true, false, false, true, true, false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4x4 a2 = int4x4(410751553, 198134393, 1999935258, 671192178, 1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + int4x4 b2 = int4x4(833499488, 1999487070, 836063897, 1987309319, 1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool4x4 r2 = bool4x4(true, true, false, true, false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int4x4 a3 = int4x4(1772570968, 339779528, 1817654169, 126606875, 1748258817, 1840719780, 603645478, 1888655831, 63356146, 79832055, 736652918, 653392827, 423681122, 1242116477, 422099316, 898587272); + int4x4 b3 = int4x4(1951703613, 873360222, 2076434739, 802037827, 57389233, 1812417589, 13678411, 1415564189, 983023904, 1112076825, 2078443288, 1990790258, 482361677, 1981894392, 351965695, 585483077); + bool4x4 r3 = bool4x4(true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_wide_scalar() + { + int4x4 a0 = int4x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901); + int b0 = (1491216667); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, false, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x4 a1 = int4x4(1127696709, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110, 867559111, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092); + int b1 = (1286331950); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4x4 a2 = int4x4(118750042, 452204442, 1645191336, 1829152606, 1891059504, 1217893177, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493); + int b2 = (1829327996); + bool4x4 r2 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4x4 a3 = int4x4(212954934, 1031281872, 1389987778, 928043903, 434566816, 1386588061, 180174416, 119231358, 842513438, 494182092, 2110901808, 2064339655, 798375285, 225918038, 2119961960, 1851740205); + int b3 = (519181838); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, true, true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_scalar_wide() + { + int a0 = (548436837); + int4x4 b0 = int4x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1596056507); + int4x4 b1 = int4x4(1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1984930954); + int4x4 b2 = int4x4(743544838, 1473400608, 1300775973, 1351720916, 168788814, 670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (685700324); + int4x4 b3 = int4x4(697607066, 378454814, 1198070277, 1821642406, 1324129275, 905046836, 1897627028, 1715796299, 15666859, 1806453893, 1315963488, 545979816, 1486981760, 511543521, 1872978447, 303832107); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_wide_wide() + { + int4x4 a0 = int4x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + int4x4 b0 = int4x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool4x4 r0 = bool4x4(true, true, false, true, false, true, false, false, true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int4x4 a1 = int4x4(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622, 1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + int4x4 b1 = int4x4(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265, 335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool4x4 r1 = bool4x4(false, false, false, false, false, true, true, true, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4x4 a2 = int4x4(31516321, 1786538920, 1854361210, 1730650972, 194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + int4x4 b2 = int4x4(1782348324, 550490783, 599992449, 550520692, 1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool4x4 r2 = bool4x4(false, true, true, true, false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4x4 a3 = int4x4(475547465, 876276892, 916067531, 1712032702, 752041926, 899534759, 948020518, 1553126337, 1209858994, 1210234744, 1065677570, 2063434729, 1808415708, 1536857930, 1356745398, 1161445540); + int4x4 b3 = int4x4(594141080, 1888303265, 1023987839, 695072711, 164764812, 1404792693, 1068554108, 1615410626, 387184925, 1930375043, 1920744920, 1913267890, 12598306, 1697936155, 145255547, 1903607817); + bool4x4 r3 = bool4x4(false, false, false, true, true, false, false, false, true, false, false, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_wide_scalar() + { + int4x4 a0 = int4x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717); + int b0 = (438688675); + bool4x4 r0 = bool4x4(true, false, true, false, false, true, true, true, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int4x4 a1 = int4x4(1016617211, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419, 1058332184, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358); + int b1 = (2063134811); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int4x4 a2 = int4x4(614746280, 1683117650, 1451781409, 61102732, 1284938191, 1452639553, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269); + int b2 = (1000986708); + bool4x4 r2 = bool4x4(false, true, true, false, true, true, true, false, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4x4 a3 = int4x4(1930086291, 2112194236, 1797322269, 1781660503, 1442606402, 208047803, 1193639690, 1939917219, 1146005869, 865123927, 913186094, 35693052, 1017084356, 91189073, 369398582, 2082818804); + int b3 = (108635332); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int4x4 b0 = int4x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1052151621); + int4x4 b1 = int4x4(1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (2063431853); + int4x4 b2 = int4x4(2079035844, 849337819, 1769234051, 358948261, 267985383, 126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217); + bool4x4 r2 = bool4x4(false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (1480829811); + int4x4 b3 = int4x4(1903710461, 402220631, 266619022, 1724999252, 2113910076, 945951388, 1448605169, 1162548302, 1691586468, 996819204, 1151046248, 1924073034, 1910741238, 633631666, 307560646, 722552263); + bool4x4 r3 = bool4x4(false, true, true, false, false, true, true, true, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_equal_wide_wide() + { + int4x4 a0 = int4x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + int4x4 b0 = int4x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool4x4 r0 = bool4x4(false, true, false, true, true, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x4 a1 = int4x4(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884, 912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + int4x4 b1 = int4x4(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017, 620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool4x4 r1 = bool4x4(true, false, true, false, true, false, true, false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x4 a2 = int4x4(269897278, 1062947703, 1743454202, 2048964070, 1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + int4x4 b2 = int4x4(648547686, 418431167, 1724009726, 401891826, 1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool4x4 r2 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x4 a3 = int4x4(442205781, 1050725689, 995151913, 926131462, 719271722, 1981390876, 659121091, 797556380, 1656192110, 66093862, 1964540799, 71894133, 1413886687, 1028466491, 1397158841, 1544483525); + int4x4 b3 = int4x4(1168998468, 1205894972, 1079707717, 1335643913, 1590790195, 155622033, 898990095, 1384002796, 1664888803, 1004528037, 402969524, 1299806519, 1194091234, 1673771542, 178191331, 98165007); + bool4x4 r3 = bool4x4(true, true, true, true, true, false, true, true, true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_equal_wide_scalar() + { + int4x4 a0 = int4x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043); + int b0 = (1688048545); + bool4x4 r0 = bool4x4(false, true, true, true, true, false, true, true, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x4 a1 = int4x4(1617221948, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750, 1258115260, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606); + int b1 = (2017733017); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x4 a2 = int4x4(626254356, 1021674613, 127839058, 1974631244, 426908235, 1818566980, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266); + int b2 = (1162369122); + bool4x4 r2 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x4 a3 = int4x4(1483727269, 1823599046, 1379007149, 1836699751, 777126023, 1288116795, 834230828, 172303141, 577773919, 705141691, 191477430, 868528232, 499782260, 146328981, 1401289768, 858105804); + int b3 = (2045244870); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int4x4 b0 = int4x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1576473309); + int4x4 b1 = int4x4(861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850, 830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (1556906486); + int4x4 b2 = int4x4(205552788, 620963188, 1156705971, 1121867260, 733876180, 1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410); + bool4x4 r2 = bool4x4(false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (1987696011); + int4x4 b3 = int4x4(1079808067, 363499438, 1873483674, 2031411422, 1979820112, 1682214687, 1470726710, 1285823822, 758372610, 44568907, 1533310851, 14070795, 1758870243, 68371537, 1482970849, 1750868121); + bool4x4 r3 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_equal_wide_wide() + { + int4x4 a0 = int4x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + int4x4 b0 = int4x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool4x4 r0 = bool4x4(false, false, true, false, true, true, true, false, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x4 a1 = int4x4(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474, 605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + int4x4 b1 = int4x4(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253, 2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool4x4 r1 = bool4x4(false, false, false, true, false, true, false, true, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x4 a2 = int4x4(796452624, 1710612922, 1629927787, 1094198224, 584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + int4x4 b2 = int4x4(802468307, 1090745055, 1968071275, 1935027815, 2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool4x4 r2 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x4 a3 = int4x4(1030060516, 615638735, 1677201099, 325128466, 930989694, 165845388, 1887735446, 1905061476, 644732756, 1450709301, 811708233, 1120546613, 1966081819, 1710484814, 390900048, 1847748897); + int4x4 b3 = int4x4(222415803, 345913533, 920804419, 784455413, 1919795492, 2125545957, 957291149, 1547385242, 953814071, 685286053, 63764322, 1742849383, 1781391465, 64816935, 1543363698, 1439322689); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, true, true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_equal_wide_scalar() + { + int4x4 a0 = int4x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917); + int b0 = (1470533736); + bool4x4 r0 = bool4x4(true, false, false, true, false, false, false, false, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x4 a1 = int4x4(1646290021, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607, 1223010129, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027); + int b1 = (196833647); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x4 a2 = int4x4(1138747386, 917503963, 353608194, 1526792895, 192092521, 909358617, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700); + int b2 = (1491562090); + bool4x4 r2 = bool4x4(false, false, false, true, false, false, false, true, false, false, false, true, true, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x4 a3 = int4x4(702382564, 1013770865, 1420374964, 341399575, 2033070823, 672716789, 1809028740, 2070046852, 1254367930, 1206207650, 807585496, 1243142372, 350377587, 214724394, 216954982, 201992840); + int b3 = (2086058548); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int4x4 b0 = int4x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, false, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (945321577); + int4x4 b1 = int4x4(173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (337378780); + int4x4 b2 = int4x4(273010835, 1898553615, 1111540136, 717385513, 474197678, 1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, false, false, true, false, false, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (1274079907); + int4x4 b3 = int4x4(1834102381, 22983902, 1733648920, 2089437749, 476445313, 1296111196, 422851096, 1857250030, 1382182918, 449792502, 1785823601, 668960891, 1067260705, 1973471752, 1403490846, 1510985557); + bool4x4 r3 = bool4x4(false, true, false, false, true, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_add_wide_wide() + { + int4x4 a0 = int4x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + int4x4 b0 = int4x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + int4x4 r0 = int4x4(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660, -147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a0 + b0, r0); + + int4x4 a1 = int4x4(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366, 941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + int4x4 b1 = int4x4(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905, 2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + int4x4 r1 = int4x4(-2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271, -1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005); + TestUtils.AreEqual(a1 + b1, r1); + + int4x4 a2 = int4x4(526120638, 423980484, 1867227242, 603782684, 728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + int4x4 b2 = int4x4(77965941, 1726775513, 1759186349, 2070333485, 1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + int4x4 r2 = int4x4(604086579, -2144211299, -668553705, -1620851127, -1833755501, 1450246522, -1850179797, 1669976746, -938217892, 1917402232, 1548618217, -1431586812, -823896228, 2013864506, 348877644, -2052539555); + TestUtils.AreEqual(a2 + b2, r2); + + int4x4 a3 = int4x4(1603943169, 858711604, 278076564, 983811310, 1503210133, 1265840052, 1220817560, 839507207, 142866678, 1356231306, 1432159402, 637785903, 1032109021, 2081298882, 331695947, 1983868469); + int4x4 b3 = int4x4(361542573, 900925442, 1077800500, 1330170201, 984058816, 207503339, 339145243, 1051497556, 1435620725, 2105629028, 1215478628, 393193121, 901424214, 189116452, 17408580, 466230809); + int4x4 r3 = int4x4(1965485742, 1759637046, 1355877064, -1980985785, -1807698347, 1473343391, 1559962803, 1891004763, 1578487403, -833106962, -1647329266, 1030979024, 1933533235, -2024551962, 349104527, -1844868018); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_add_wide_scalar() + { + int4x4 a0 = int4x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485); + int b0 = (2124409227); + int4x4 r0 = int4x4(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768, -167536208, -534586098, -1010159783, -2085111867, -1102405103, -931170969, -672881181, -443080584); + TestUtils.AreEqual(a0 + b0, r0); + + int4x4 a1 = int4x4(1095438654, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260, 736972565, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263); + int b1 = (756559204); + int4x4 r1 = int4x4(1851997858, -1719689161, 1415482756, -1927889171, -1952652694, 1449402504, 1825152673, -1833631859, 1334341464, 1493531769, 1468453775, 1320816643, -1486671809, -1965570395, -1910401547, -1682707829); + TestUtils.AreEqual(a1 + b1, r1); + + int4x4 a2 = int4x4(656748782, 1917133199, 828322973, 2116810190, 2092767444, 973587865, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914); + int b2 = (272774516); + int4x4 r2 = int4x4(929523298, -2105059581, 1101097489, -1905382590, -1929425336, 1246362381, 1509705789, 777038965, 1067067090, 1790833197, 1877410840, 627647933, 958022413, 500555656, 593957033, 1483350430); + TestUtils.AreEqual(a2 + b2, r2); + + int4x4 a3 = int4x4(1340503111, 1979965576, 1988286575, 427699536, 538653829, 1589564058, 1954579845, 1781591877, 419928668, 1751001953, 355993558, 1653659509, 2098769225, 63134274, 1679875388, 377229586); + int b3 = (838567468); + int4x4 r3 = int4x4(-2115896717, -1476434252, -1468113253, 1266267004, 1377221297, -1866835770, -1501819983, -1674807951, 1258496136, -1705397875, 1194561026, -1802740319, -1357630603, 901701742, -1776524440, 1215797054); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_add_scalar_wide() + { + int a0 = (391092078); + int4x4 b0 = int4x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861); + int4x4 r0 = int4x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146, 1387123903, 1948867027, 1170867018, 1502633380, 1174138523, 1521256022, 679371662, 1788775939); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (1636583489); + int4x4 b1 = int4x4(673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640); + int4x4 r1 = int4x4(-1985120468, -1189082933, 1651439454, -1541746808, -1169520507, -1057392921, 1827234790, -1350924039, -1738297968, -576153972, -665978233, -1444459349, 2142424941, -1676962645, -1170046108, -1544557167); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1806146508); + int4x4 b2 = int4x4(1841791222, 206610851, 526971953, 1236359886, 1459523189, 965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031); + int4x4 r2 = int4x4(-647029566, 2012757359, -1961848835, -1252460902, -1029297599, -1523080157, 1888989307, -1190417587, -683011016, -509956597, -2073817402, -582516640, -1765950591, -1744571992, -811597229, 2109522539); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1275565021); + int4x4 b3 = int4x4(1518386617, 233426699, 1128986758, 1421938726, 1178529217, 1397917053, 137663521, 975646083, 1968321168, 720648013, 1606974342, 567772614, 490190373, 576353787, 1438920888, 2145198309); + int4x4 r3 = int4x4(-1501015658, 1508991720, -1890415517, -1597463549, -1840873058, -1621485222, 1413228542, -2043756192, -1051081107, 1996213034, -1412427933, 1843337635, 1765755394, 1851918808, -1580481387, -874203966); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_sub_wide_wide() + { + int4x4 a0 = int4x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + int4x4 b0 = int4x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + int4x4 r0 = int4x4(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747, 1234495882, -838948052, -732179165, -881462314, -50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a0 - b0, r0); + + int4x4 a1 = int4x4(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454, 425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + int4x4 b1 = int4x4(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855, 609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + int4x4 r1 = int4x4(-624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401, -183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518); + TestUtils.AreEqual(a1 - b1, r1); + + int4x4 a2 = int4x4(1888446703, 1364654917, 265135366, 760501098, 741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + int4x4 b2 = int4x4(1224986479, 748933681, 88793450, 401362529, 1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + int4x4 r2 = int4x4(663460224, 615721236, 176341916, 359138569, -345917539, 1650323877, 979082147, 182559134, -136395064, 1442113917, 8339009, 1379854326, -592461473, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a2 - b2, r2); + + int4x4 a3 = int4x4(1541023885, 1644155041, 1885220021, 956814489, 1996571272, 313052858, 1686326525, 1591026645, 404689020, 832057610, 817031413, 1191376096, 1515565534, 178300672, 365767493, 1238101305); + int4x4 b3 = int4x4(120176164, 834539498, 1843750420, 337055138, 1625604945, 41302648, 1719986021, 2028592747, 609982501, 95087400, 1244763386, 1175550114, 887604651, 1249524531, 155418749, 1934403979); + int4x4 r3 = int4x4(1420847721, 809615543, 41469601, 619759351, 370966327, 271750210, -33659496, -437566102, -205293481, 736970210, -427731973, 15825982, 627960883, -1071223859, 210348744, -696302674); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_sub_wide_scalar() + { + int4x4 a0 = int4x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189); + int b0 = (462232403); + int4x4 r0 = int4x4(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412, -181058203, -374701563, 1451492028, 1579360933, 95007587, 656819045, 1128144329, 356857786); + TestUtils.AreEqual(a0 - b0, r0); + + int4x4 a1 = int4x4(816382635, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794, 819644478, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758); + int b1 = (815920639); + int4x4 r1 = int4x4(461996, 1013112478, 976881293, 297519910, 603017337, 461336550, 1276858759, -173683897, 789330155, 3723839, 652082380, -687617453, -262426382, 201206332, 1183824143, 1201352119); + TestUtils.AreEqual(a1 - b1, r1); + + int4x4 a2 = int4x4(1817991764, 676974855, 1638032613, 949761204, 1835969317, 919015590, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965); + int b2 = (1280985500); + int4x4 r2 = int4x4(537006264, -604010645, 357047113, -331224296, 554983817, -361969910, -304038190, 23261106, 175794708, 273037212, -511181135, 776846187, -522848921, -610552245, -677754089, 392283465); + TestUtils.AreEqual(a2 - b2, r2); + + int4x4 a3 = int4x4(941598524, 1394256067, 1267352835, 62929009, 1190778074, 657264006, 364156399, 775397332, 651143570, 486712236, 34309315, 1323491629, 1875163590, 1217887516, 2061463296, 24320578); + int b3 = (2122131631); + int4x4 r3 = int4x4(-1180533107, -727875564, -854778796, -2059202622, -931353557, -1464867625, -1757975232, -1346734299, -1470988061, -1635419395, -2087822316, -798640002, -246968041, -904244115, -60668335, -2097811053); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int4x4 b0 = int4x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719); + int4x4 r0 = int4x4(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128, -97766016, 1426821512, 459678338, -126578343, 263098296, 432788945, 614154009, 360811686); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (518111829); + int4x4 b1 = int4x4(967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530); + int4x4 r1 = int4x4(-449016700, 173445575, -564156089, -389754867, -1298773294, 57771261, -444042669, -39001632, -1183104880, -1461986948, -211948723, -926285998, -335458727, 379275397, -495078599, -199977701); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (506757390); + int4x4 b2 = int4x4(1216448041, 936312747, 1997286455, 1969982026, 902880656, 1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072); + int4x4 r2 = int4x4(-709690651, -429555357, -1490529065, -1463224636, -396123266, -654463307, -935707335, -116203375, -224211519, -108066451, -1383021630, -411564962, 372827470, 293634282, -1328693070, -14310682); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (2066839749); + int4x4 b3 = int4x4(1982717309, 1580139939, 136826185, 783667709, 205508687, 1152347947, 1682018862, 329924125, 396414255, 542319408, 208974930, 1638328097, 935729865, 125876461, 218665639, 1100023218); + int4x4 r3 = int4x4(84122440, 486699810, 1930013564, 1283172040, 1861331062, 914491802, 384820887, 1736915624, 1670425494, 1524520341, 1857864819, 428511652, 1131109884, 1940963288, 1848174110, 966816531); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mul_wide_wide() + { + int4x4 a0 = int4x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + int4x4 b0 = int4x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + int4x4 r0 = int4x4(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830, 990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a0 * b0, r0); + + int4x4 a1 = int4x4(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234, 899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + int4x4 b1 = int4x4(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952, 675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + int4x4 r1 = int4x4(649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720, 1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942); + TestUtils.AreEqual(a1 * b1, r1); + + int4x4 a2 = int4x4(200879709, 857149632, 962693646, 988118613, 892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + int4x4 b2 = int4x4(1695925670, 1788874462, 534570710, 1110638325, 142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + int4x4 r2 = int4x4(48406862, -1997863296, -275121228, -1483457191, 293009766, -617864326, 1179445736, -481780132, -1586128904, 1397450915, 487571412, -405680754, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a2 * b2, r2); + + int4x4 a3 = int4x4(1867348319, 464239430, 1513968722, 1879508953, 1835178747, 106255610, 791954119, 1098780631, 1336308698, 613897216, 1826550194, 1100684236, 67588307, 1388845400, 23402614, 2092286485); + int4x4 b3 = int4x4(1809758608, 288286688, 726755419, 364868101, 655080356, 266071904, 385013390, 186015668, 758488066, 1918847075, 1784720030, 1012303363, 135157062, 1204101671, 2062532388, 1665984668); + int4x4 r3 = int4x4(-1918112656, 2027161408, 1912621350, -108476099, 2728396, 1647526848, 418210914, 1845357612, 1544011700, -500859904, -1797693476, 468065124, -1956632398, 412191848, -1314817384, 1944145100); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mul_wide_scalar() + { + int4x4 a0 = int4x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657); + int b0 = (1476837906); + int4x4 r0 = int4x4(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518, 1736252960, -1699123674, -1534863838, -1853528010, -1668168436, -1977548968, 1423071262, 2117820994); + TestUtils.AreEqual(a0 * b0, r0); + + int4x4 a1 = int4x4(391009467, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703, 1613845584, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062); + int b1 = (1186856590); + int4x4 r1 = int4x4(1435732410, 218605196, 1896985092, -1774863802, -125434376, -750863902, -1084645148, 2141566616, -1063702942, 1813259360, -1722207966, -1862268928, 714733494, 209765036, 1993704396, 95853188); + TestUtils.AreEqual(a1 * b1, r1); + + int4x4 a2 = int4x4(987919119, 1325430351, 948943118, 1743760648, 227492421, 217698851, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790); + int b2 = (1659987051); + int4x4 r2 = int4x4(548860741, -775467259, 1518981338, 88896088, 1840817879, 997425313, -1094396229, 1277937072, 1861085478, -682201364, 98332333, -750570710, -1089412702, -1543745504, 438848394, -1975359678); + TestUtils.AreEqual(a2 * b2, r2); + + int4x4 a3 = int4x4(396984449, 352046491, 1513331645, 1155106274, 138823406, 923862962, 131310587, 938688263, 631817444, 1890216972, 2143914807, 30238797, 5224899, 1350553408, 2127554014, 1666837332); + int b3 = (474729765); + int4x4 r3 = int4x4(-382607451, -596453785, -1450517679, 349983658, 1219417702, 1371907770, 443527751, 447592195, 903547124, -1196738116, -1447482893, -1178289119, -1553465297, -1288752064, 1864957718, 2131576612); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mul_scalar_wide() + { + int a0 = (99541948); + int4x4 b0 = int4x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488); + int4x4 r0 = int4x4(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328, 1623617844, -1691554240, -830512240, -1283699420, -628079900, 1294445652, 1610098852, -691055360); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (459880225); + int4x4 b1 = int4x4(994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281); + int4x4 r1 = int4x4(1378091637, 738687535, -826518076, -345210155, 316193853, 2121309665, -222642187, 1750778551, -1730990718, 133205964, 1859727169, 388250044, -611993629, -1492821565, -516072495, 1074594065); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (2138825098); + int4x4 b2 = int4x4(1273008873, 1788343477, 1994364082, 597340263, 2022856151, 1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370); + int4x4 r2 = int4x4(1965095578, 1643380370, 1438423540, 15376006, -2086585114, 1819612578, -1355210390, -1011516056, -1566641956, -1061125150, -127290192, 1377278202, -2072591672, -368393398, 572695294, -1561208268); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (890235481); + int4x4 b3 = int4x4(1880345584, 1882904983, 267128787, 1569254022, 1779318576, 1645728412, 819681361, 666095044, 308815496, 1829465065, 751656026, 1207837213, 1073832960, 169923853, 808603307, 363334486); + int4x4 r3 = int4x4(-1302641040, -768431233, -337289637, 651297942, -2004494416, -2081501124, 1824177705, -904679132, 56997192, -381518335, 1427464010, 1396399637, 1642316800, -1259670651, -1066752141, -1714254618); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_div_wide_wide() + { + int4x4 a0 = int4x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + int4x4 b0 = int4x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + int4x4 r0 = int4x4(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a0 / b0, r0); + + int4x4 a1 = int4x4(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343, 1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + int4x4 b1 = int4x4(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844, 616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + int4x4 r1 = int4x4(1, 39, 0, 1, 1, 1, 1, 0, 2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4x4 a2 = int4x4(850951883, 1942618200, 1088675276, 1648515976, 991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + int4x4 b2 = int4x4(1535651093, 932740870, 1078416711, 725172174, 554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + int4x4 r2 = int4x4(0, 2, 1, 2, 1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int4x4 a3 = int4x4(308887330, 7606985, 1626977876, 1895907215, 1115090617, 1043375525, 168865453, 1056135390, 1080260308, 780473703, 1917865869, 1741288184, 497930923, 668217348, 1678197677, 1075043333); + int4x4 b3 = int4x4(1549803350, 364926102, 1386892120, 656711993, 91320418, 1458063222, 1529573616, 722321620, 757577900, 1175347146, 1933900601, 1063907544, 97856937, 972434416, 1920248258, 261846189); + int4x4 r3 = int4x4(0, 0, 1, 2, 12, 0, 0, 1, 1, 0, 0, 1, 5, 0, 0, 4); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_div_wide_scalar() + { + int4x4 a0 = int4x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029); + int b0 = (947861580); + int4x4 r0 = int4x4(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1, 2, 2, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int4x4 a1 = int4x4(1646044372, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156); + int b1 = (1447236569); + int4x4 r1 = int4x4(1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4x4 a2 = int4x4(1725332114, 1383839785, 2136282541, 159847918, 1515555001, 614923813, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647); + int b2 = (1949103348); + int4x4 r2 = int4x4(0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int4x4 a3 = int4x4(1222061694, 1966139194, 1303421248, 1811535294, 240471953, 2116688995, 1035856383, 2022133852, 2147186889, 152458544, 148729436, 318083619, 980911803, 817677917, 398058007, 747046501); + int b3 = (579280546); + int4x4 r3 = int4x4(2, 3, 2, 3, 0, 3, 1, 3, 3, 0, 0, 0, 1, 1, 0, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_div_scalar_wide() + { + int a0 = (1161272038); + int4x4 b0 = int4x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097); + int4x4 r0 = int4x4(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25, 1, 2, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1818363859); + int4x4 b1 = int4x4(1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309); + int4x4 r1 = int4x4(1, 6, 37, 1, 1, 1, 0, 2, 1, 5, 13, 1, 4, 1, 7, 1); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (2114509003); + int4x4 b2 = int4x4(1266146708, 45105265, 2092444751, 407744534, 126616016, 1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719); + int4x4 r2 = int4x4(1, 46, 1, 5, 16, 1, 4, 5, 1, 2, 1, 11, 3, 2, 3, 3); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (638134699); + int4x4 b3 = int4x4(297472499, 1196796276, 815483831, 1511819303, 906952957, 613050421, 60483276, 883893666, 1481847510, 1065163200, 1641516292, 1980940753, 1862370918, 2048575092, 396483978, 610486041); + int4x4 r3 = int4x4(2, 0, 0, 0, 0, 1, 10, 0, 0, 0, 0, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mod_wide_wide() + { + int4x4 a0 = int4x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + int4x4 b0 = int4x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + int4x4 r0 = int4x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a0 % b0, r0); + + int4x4 a1 = int4x4(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189, 1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + int4x4 b1 = int4x4(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748, 798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + int4x4 r1 = int4x4(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189, 604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a1 % b1, r1); + + int4x4 a2 = int4x4(1090018756, 1573062648, 1100694500, 863521889, 1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + int4x4 b2 = int4x4(1350943898, 696511738, 1182727748, 1843845940, 244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + int4x4 r2 = int4x4(1090018756, 180039172, 1100694500, 863521889, 166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a2 % b2, r2); + + int4x4 a3 = int4x4(1759996408, 1386598712, 251325313, 122732248, 2082099427, 1080998866, 686623511, 693281682, 302610170, 1380134301, 1661197566, 481331690, 1193753109, 166363462, 588323181, 594997700); + int4x4 b3 = int4x4(951215450, 195024879, 2079991098, 220236959, 294448639, 1396793894, 141031566, 960537512, 719675899, 928202057, 275228822, 1510254672, 1481505055, 1373357922, 1940197321, 286975465); + int4x4 r3 = int4x4(808780958, 21424559, 251325313, 122732248, 20958954, 1080998866, 122497247, 693281682, 302610170, 451932244, 9824634, 481331690, 1193753109, 166363462, 588323181, 21046770); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mod_wide_scalar() + { + int4x4 a0 = int4x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743); + int b0 = (883951171); + int4x4 r0 = int4x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764, 712321026, 172564850, 656117274, 201946572); + TestUtils.AreEqual(a0 % b0, r0); + + int4x4 a1 = int4x4(1607489717, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313, 1778384846, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470); + int b1 = (165478511); + int4x4 r1 = int4x4(118183118, 151411183, 88315444, 113523802, 100798728, 92063740, 157552667, 102078780, 46544291, 123599736, 57662177, 150269373, 160931436, 153365271, 104447121, 3383426); + TestUtils.AreEqual(a1 % b1, r1); + + int4x4 a2 = int4x4(1568090825, 435886407, 453990946, 1731665372, 586777590, 1475597526, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411); + int b2 = (2050982942); + int4x4 r2 = int4x4(1568090825, 435886407, 453990946, 1731665372, 586777590, 1475597526, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 79363616, 666621411); + TestUtils.AreEqual(a2 % b2, r2); + + int4x4 a3 = int4x4(1524342239, 1547690684, 857915601, 709453751, 2103243535, 2124726669, 1410239986, 1761316053, 442891932, 388101009, 1059801526, 651827482, 1890268914, 910020375, 58051452, 293939465); + int b3 = (1490592900); + int4x4 r3 = int4x4(33749339, 57097784, 857915601, 709453751, 612650635, 634133769, 1410239986, 270723153, 442891932, 388101009, 1059801526, 651827482, 399676014, 910020375, 58051452, 293939465); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mod_scalar_wide() + { + int a0 = (242383789); + int4x4 b0 = int4x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131); + int4x4 r0 = int4x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1859742342); + int4x4 b1 = int4x4(797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388); + int4x4 r1 = int4x4(265372968, 215964658, 776549345, 179512370, 1859742342, 14262450, 374167220, 1418334, 1859742342, 49383671, 399566104, 414796203, 553950305, 748913331, 114295180, 24421074); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1477846418); + int4x4 b2 = int4x4(511428733, 1642227542, 1962310765, 207128894, 1342085447, 448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751); + int4x4 r2 = int4x4(454988952, 1477846418, 1477846418, 27944160, 135760971, 132762560, 139176342, 66914916, 724757645, 331502408, 102145698, 403366277, 1477846418, 1477846418, 1477846418, 379404667); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1648646354); + int4x4 b3 = int4x4(1730303822, 859376331, 889118656, 1549752450, 992618236, 941290327, 1766644910, 435947831, 1937100534, 1342633977, 1176317048, 950230773, 1135152183, 384466155, 600022, 363833845); + int4x4 r3 = int4x4(1648646354, 789270023, 759527698, 98893904, 656028118, 707356027, 1648646354, 340802861, 1648646354, 306012377, 472329306, 698415581, 513494171, 110781734, 385920, 193310974); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_plus() + { + int4x4 a0 = int4x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926); + int4x4 r0 = int4x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926); + TestUtils.AreEqual(+a0, r0); + + int4x4 a1 = int4x4(2049663954, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393); + int4x4 r1 = int4x4(2049663954, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393); + TestUtils.AreEqual(+a1, r1); + + int4x4 a2 = int4x4(829347661, 381670450, 277507230, 361395485, 1012749225, 1204186973, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986); + int4x4 r2 = int4x4(829347661, 381670450, 277507230, 361395485, 1012749225, 1204186973, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986); + TestUtils.AreEqual(+a2, r2); + + int4x4 a3 = int4x4(1257555634, 578585280, 1087392044, 2084329354, 300198860, 1247120404, 1325809345, 1057524082, 1426592020, 167918579, 1552986194, 813448514, 2048383407, 647476365, 13335381, 1985958169); + int4x4 r3 = int4x4(1257555634, 578585280, 1087392044, 2084329354, 300198860, 1247120404, 1325809345, 1057524082, 1426592020, 167918579, 1552986194, 813448514, 2048383407, 647476365, 13335381, 1985958169); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int4x4_operator_neg() + { + int4x4 a0 = int4x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242); + int4x4 r0 = int4x4(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349, -1115028238, -1636274969, -694995093, -1542206286, -213087293, -243937487, -341522275, -841085242); + TestUtils.AreEqual(-a0, r0); + + int4x4 a1 = int4x4(574159094, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284); + int4x4 r1 = int4x4(-574159094, -2057919693, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864, -1440774928, -1485596454, -431666091, -1387601718, -1745651998, -319115626, -1119959806, -739132284); + TestUtils.AreEqual(-a1, r1); + + int4x4 a2 = int4x4(1954173314, 1836511050, 1662806453, 506144868, 650922971, 1755382554, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551); + int4x4 r2 = int4x4(-1954173314, -1836511050, -1662806453, -506144868, -650922971, -1755382554, -1273997249, -1474445187, -1853826947, -1695573773, -729452512, -345069360, -575867536, -594119038, -1201840609, -1342872551); + TestUtils.AreEqual(-a2, r2); + + int4x4 a3 = int4x4(1768435578, 23008237, 1410502890, 695213039, 1342131852, 1619073746, 469828650, 20553909, 1711214338, 690040786, 1749711826, 1265590278, 1516859887, 1317159343, 1722518934, 803074002); + int4x4 r3 = int4x4(-1768435578, -23008237, -1410502890, -695213039, -1342131852, -1619073746, -469828650, -20553909, -1711214338, -690040786, -1749711826, -1265590278, -1516859887, -1317159343, -1722518934, -803074002); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int4x4_operator_prefix_inc() + { + int4x4 a0 = int4x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402); + int4x4 r0 = int4x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403); + TestUtils.AreEqual(++a0, r0); + + int4x4 a1 = int4x4(1786514683, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865, 519296647, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661); + int4x4 r1 = int4x4(1786514684, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866, 519296648, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662); + TestUtils.AreEqual(++a1, r1); + + int4x4 a2 = int4x4(65514038, 1321109497, 1366348660, 1777734111, 1414867743, 536776365, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802); + int4x4 r2 = int4x4(65514039, 1321109498, 1366348661, 1777734112, 1414867744, 536776366, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803); + TestUtils.AreEqual(++a2, r2); + + int4x4 a3 = int4x4(413165245, 1206806909, 2069192976, 1613073974, 1342402025, 330167396, 665917965, 799320426, 2054286971, 2074397725, 113129500, 721162954, 2136093351, 173315234, 2006582934, 265026274); + int4x4 r3 = int4x4(413165246, 1206806910, 2069192977, 1613073975, 1342402026, 330167397, 665917966, 799320427, 2054286972, 2074397726, 113129501, 721162955, 2136093352, 173315235, 2006582935, 265026275); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int4x4_operator_postfix_inc() + { + int4x4 a0 = int4x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778); + int4x4 r0 = int4x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778); + TestUtils.AreEqual(a0++, r0); + + int4x4 a1 = int4x4(717006530, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403); + int4x4 r1 = int4x4(717006530, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403); + TestUtils.AreEqual(a1++, r1); + + int4x4 a2 = int4x4(1919960927, 2010345998, 1047836590, 586887730, 1209169651, 1051531454, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320); + int4x4 r2 = int4x4(1919960927, 2010345998, 1047836590, 586887730, 1209169651, 1051531454, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320); + TestUtils.AreEqual(a2++, r2); + + int4x4 a3 = int4x4(1995020676, 183815949, 1207670946, 1620827725, 1809811548, 1643094131, 280506984, 382615051, 650280741, 560631765, 1840722506, 63273626, 1294940978, 724310154, 1901579798, 697321264); + int4x4 r3 = int4x4(1995020676, 183815949, 1207670946, 1620827725, 1809811548, 1643094131, 280506984, 382615051, 650280741, 560631765, 1840722506, 63273626, 1294940978, 724310154, 1901579798, 697321264); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int4x4_operator_prefix_dec() + { + int4x4 a0 = int4x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392); + int4x4 r0 = int4x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391); + TestUtils.AreEqual(--a0, r0); + + int4x4 a1 = int4x4(1310293956, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829, 1454322707, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100); + int4x4 r1 = int4x4(1310293955, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828, 1454322706, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099); + TestUtils.AreEqual(--a1, r1); + + int4x4 a2 = int4x4(157482354, 1797304434, 1083672612, 929765380, 2083512379, 2045544045, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317); + int4x4 r2 = int4x4(157482353, 1797304433, 1083672611, 929765379, 2083512378, 2045544044, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316); + TestUtils.AreEqual(--a2, r2); + + int4x4 a3 = int4x4(767990877, 366067423, 99249400, 1549382038, 1105868582, 1977762759, 1646465385, 1067223071, 1774498387, 1128527977, 1104488553, 1575600100, 1141283662, 1678956750, 449874904, 748975258); + int4x4 r3 = int4x4(767990876, 366067422, 99249399, 1549382037, 1105868581, 1977762758, 1646465384, 1067223070, 1774498386, 1128527976, 1104488552, 1575600099, 1141283661, 1678956749, 449874903, 748975257); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int4x4_operator_postfix_dec() + { + int4x4 a0 = int4x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868); + int4x4 r0 = int4x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868); + TestUtils.AreEqual(a0--, r0); + + int4x4 a1 = int4x4(1867810045, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911); + int4x4 r1 = int4x4(1867810045, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911); + TestUtils.AreEqual(a1--, r1); + + int4x4 a2 = int4x4(416440036, 1444496274, 296146626, 1209855130, 2016700604, 838640502, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298); + int4x4 r2 = int4x4(416440036, 1444496274, 296146626, 1209855130, 2016700604, 838640502, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298); + TestUtils.AreEqual(a2--, r2); + + int4x4 a3 = int4x4(569144612, 509007463, 860240975, 41334109, 10321636, 1940079495, 43143738, 1044950720, 63756334, 1595004937, 699747920, 348534360, 509361827, 1352179420, 271823835, 1889179126); + int4x4 r3 = int4x4(569144612, 509007463, 860240975, 41334109, 10321636, 1940079495, 43143738, 1044950720, 63756334, 1595004937, 699747920, 348534360, 509361827, 1352179420, 271823835, 1889179126); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_and_wide_wide() + { + int4x4 a0 = int4x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + int4x4 b0 = int4x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + int4x4 r0 = int4x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a0 & b0, r0); + + int4x4 a1 = int4x4(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372, 181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + int4x4 b1 = int4x4(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586, 1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + int4x4 r1 = int4x4(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976, 177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a1 & b1, r1); + + int4x4 a2 = int4x4(1804502415, 1733695477, 1110712857, 113012430, 1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + int4x4 b2 = int4x4(843085933, 1045118223, 41867329, 1397669260, 1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + int4x4 r2 = int4x4(570425357, 641864965, 36962305, 34352268, 706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a2 & b2, r2); + + int4x4 a3 = int4x4(17366276, 1245846423, 1075177576, 1023499729, 1742176891, 1288325524, 2092131182, 1444013434, 210707066, 627341079, 155789028, 411695477, 2144207930, 1007799200, 382737478, 85407483); + int4x4 b3 = int4x4(267066435, 781393024, 1444337796, 139669978, 880161801, 1604286495, 839016626, 1986058500, 1905400692, 1670633815, 651063094, 967343492, 336245810, 914791376, 1696073831, 2103810347); + int4x4 r3 = int4x4(17308672, 167909504, 1075103744, 134287824, 609615881, 1284130836, 805462050, 1442889984, 8520304, 553668887, 4728356, 411597060, 336200754, 872450944, 68159558, 84217899); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_and_wide_scalar() + { + int4x4 a0 = int4x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472); + int b0 = (93423598); + int4x4 r0 = int4x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672, 1148422, 8389408, 83887462, 8488072); + TestUtils.AreEqual(a0 & b0, r0); + + int4x4 a1 = int4x4(861733033, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926, 1817145060, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772); + int b1 = (1408932942); + int4x4 r1 = int4x4(324534280, 286268488, 1366298692, 1102615626, 322044930, 1397755908, 6985796, 1137737800, 328371278, 1078594628, 1399326724, 1078989902, 281676870, 34212932, 1093304384, 9081924); + TestUtils.AreEqual(a1 & b1, r1); + + int4x4 a2 = int4x4(872875431, 708719245, 1764446048, 1527981061, 398141788, 156911041, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172); + int b2 = (1143080525); + int4x4 r2 = int4x4(67240965, 2228749, 1075971648, 1073873925, 69337164, 132161, 1537, 1140850701, 2098701, 69337665, 1140852237, 1073743369, 2229257, 1075970572, 2229320, 69207556); + TestUtils.AreEqual(a2 & b2, r2); + + int4x4 a3 = int4x4(1826788967, 3292432, 225233484, 1488146706, 1918853562, 1038188796, 1833784555, 252534533, 942504184, 840550591, 475152200, 1566941712, 546609146, 1803072768, 1125028552, 104252148); + int b3 = (150752148); + int4x4 r3 = int4x4(148898308, 3148048, 141314564, 145768720, 6046096, 148897940, 139214976, 135023364, 137119888, 1591444, 139463424, 140771856, 9700240, 142082304, 787072, 3424916); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int4x4 b0 = int4x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291); + int4x4 r0 = int4x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300, 1075314980, 1076910436, 68698370, 6434); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1085233038); + int4x4 b1 = int4x4(1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851); + int4x4 r1 = int4x4(1073939080, 2299648, 1082868362, 1082278790, 741382, 1082283648, 1082720778, 1082675206, 1076826496, 1074615948, 2245132, 1076646798, 1074419596, 1084490250, 8456066, 1076364674); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (372814411); + int4x4 b2 = int4x4(1623486506, 211665304, 1668985777, 348112007, 1808619374, 1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681); + int4x4 r2 = int4x4(12298, 68714504, 37270017, 339247107, 34083402, 304099905, 36212744, 337683019, 1048587, 338698304, 304128072, 369659979, 34643976, 372814339, 70791754, 35659841); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1980296380); + int4x4 b3 = int4x4(1295368015, 859181113, 1741688223, 1249250718, 363989837, 939740255, 1668271386, 121498186, 1765635287, 1637255201, 1157123404, 216326016, 1525016040, 1131192672, 433812479, 797544392); + int4x4 r3 = int4x4(1140894732, 838860856, 1711279260, 1107299484, 335546380, 805325852, 1644743704, 101246984, 1611162772, 1610647584, 1141394444, 67161216, 1375790248, 1107861536, 268984508, 638094472); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_or_wide_wide() + { + int4x4 a0 = int4x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + int4x4 b0 = int4x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + int4x4 r0 = int4x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a0 | b0, r0); + + int4x4 a1 = int4x4(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074, 543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + int4x4 b1 = int4x4(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841, 108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + int4x4 r1 = int4x4(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171, 645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a1 | b1, r1); + + int4x4 a2 = int4x4(203868172, 32846030, 1057901177, 1537975433, 470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + int4x4 b2 = int4x4(2036352209, 1554561114, 1332339254, 480739851, 1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + int4x4 r2 = int4x4(2103889117, 1576909022, 2138040959, 1605346955, 1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a2 | b2, r2); + + int4x4 a3 = int4x4(237797826, 356229491, 1054697631, 2025966311, 718324935, 1223426852, 2042482036, 683169667, 1994321453, 240702936, 828468284, 1009506608, 708733945, 449892073, 1530051697, 654498852); + int4x4 b3 = int4x4(92416160, 446752586, 1307950607, 1358449730, 181367548, 432421751, 695223657, 56384197, 1119601678, 460615696, 463588364, 780415466, 1378457042, 1259569239, 1887579973, 358353719); + int4x4 r3 = int4x4(263104994, 532408187, 2147352223, 2029637351, 719320831, 1508785015, 2046676349, 737959879, 1996484143, 528283096, 1004661820, 1051720186, 2051014651, 1540607743, 2075311989, 928964407); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_or_wide_scalar() + { + int4x4 a0 = int4x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655); + int b0 = (1666102508); + int4x4 r0 = int4x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148, 2003812348, 1733293807, 1875836414, 2012132863); + TestUtils.AreEqual(a0 | b0, r0); + + int4x4 a1 = int4x4(46921989, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359, 1511253082, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015); + int b1 = (1980838747); + int4x4 r1 = int4x4(1994128223, 1995567963, 2010461179, 1991325695, 1997911899, 1991868383, 2131982331, 2122054655, 2124133343, 2115237723, 2144728923, 1981677563, 2136438655, 1993456507, 2138829791, 2130181087); + TestUtils.AreEqual(a1 | b1, r1); + + int4x4 a2 = int4x4(539526284, 1815369493, 529427586, 358352200, 1353013374, 1349149982, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643); + int b2 = (310877895); + int4x4 r2 = int4x4(850370255, 2125979607, 529530567, 400531407, 1386733311, 1391460319, 1927257823, 1404034799, 935313103, 518496247, 534241023, 451395303, 1928855535, 1452277503, 2012217327, 1452269263); + TestUtils.AreEqual(a2 | b2, r2); + + int4x4 a3 = int4x4(142082352, 1052987078, 1551897284, 647667876, 272240018, 728496025, 1212085507, 1717689835, 478474157, 1784582014, 1420783529, 671512087, 1240546077, 215180285, 1874077134, 288085841); + int b3 = (1760023655); + int4x4 r3 = int4x4(1761596791, 2129125095, 2095568615, 1862268135, 2030034423, 1810888703, 1761604967, 1860689391, 2095579119, 1795153791, 2096103407, 1760032375, 1777860479, 1828190207, 1878521327, 2045761399); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int4x4 b0 = int4x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352); + int4x4 r0 = int4x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813, 2138308077, 1836824463, 1492630911, 1291306269); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (424663473); + int4x4 b1 = int4x4(447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560); + int4x4 r1 = int4x4(469760441, 527432119, 2102393277, 461364733, 1540357117, 2038431217, 1609563133, 1608506353, 1508891639, 433060337, 2069888509, 1006631935, 1064296439, 2079326201, 1501560311, 964689913); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (990961386); + int4x4 b2 = int4x4(547309556, 1307122961, 263229121, 1518227598, 1098359242, 997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616); + int4x4 r2 = int4x4(1000333310, 2147082235, 1068556011, 2071912174, 2071461866, 997981930, 2065628926, 997326575, 1060233210, 2064900095, 2136670190, 2073878254, 1004142575, 997850858, 2075778799, 2144722938); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (1326199854); + int4x4 b3 = int4x4(1949398395, 2027606165, 1750615303, 908181664, 2105810564, 2009616838, 1492018691, 1325195313, 1365101592, 276155673, 1378507257, 1526287781, 322486040, 1550813488, 326334540, 2015237736); + int4x4 r3 = int4x4(2134734207, 2145318079, 1868330287, 2133718190, 2139897518, 2144105966, 1609463343, 1341977663, 1599994942, 1602092351, 1596882431, 1610448303, 1597816638, 1601158462, 1602190446, 2132686446); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_xor_wide_wide() + { + int4x4 a0 = int4x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + int4x4 b0 = int4x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + int4x4 r0 = int4x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x4 a1 = int4x4(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405, 1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + int4x4 b1 = int4x4(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483, 1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + int4x4 r1 = int4x4(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070, 981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x4 a2 = int4x4(32554542, 1915830925, 2001025156, 2012451132, 1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + int4x4 b2 = int4x4(325882121, 45335181, 1859278043, 1002624300, 1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + int4x4 r2 = int4x4(312225575, 1887600640, 429354079, 1278297104, 632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x4 a3 = int4x4(1730482516, 1488638921, 801348246, 1768559974, 1475767978, 1617893197, 689768843, 640586983, 426041408, 1811169716, 1563089576, 1411870628, 1004729442, 1173825171, 344960599, 633357624); + int4x4 b3 = int4x4(1356120192, 933877640, 2003767224, 113246892, 1236821680, 256717233, 1832711379, 238792988, 691507914, 1132023339, 1571029002, 227661589, 1609435614, 1581653714, 1384954643, 1432072515); + int4x4 r3 = int4x4(938594772, 1863517249, 1487705390, 1873418186, 508430362, 1864509180, 1143078232, 672474619, 810775178, 680333215, 9362082, 1505147057, 1678572988, 464599105, 1174607172, 1889268859); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_xor_wide_scalar() + { + int4x4 a0 = int4x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046); + int b0 = (493665894); + int4x4 r0 = int4x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053, 437376926, 1392927932, 2054402363, 463180344); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x4 a1 = int4x4(375757978, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736, 447453839, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973); + int b1 = (491079274); + int4x4 r1 = int4x4(186702576, 371762244, 375527487, 618745463, 1031986773, 1000908074, 491343762, 1164914022, 2036840370, 133094629, 677146516, 205099286, 36780645, 47041514, 1327792696, 1520547255); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x4 a2 = int4x4(1059509471, 64097148, 1814786305, 716239, 476052372, 92561487, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185); + int b2 = (744733291); + int4x4 r2 = int4x4(323317428, 800174359, 1078512490, 745101220, 809255423, 703060516, 1456372985, 773205017, 1645813588, 1368542166, 589723701, 717567903, 1805007853, 1363747113, 1583742507, 528804098); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x4 a3 = int4x4(1771744425, 1026064492, 275465401, 1157615659, 2091197990, 1671757076, 574090633, 458210617, 1604017559, 1913893498, 1791703422, 2143390933, 777506800, 1972227371, 2073971655, 61542294); + int b3 = (75727457); + int4x4 r3 = int4x4(1830366920, 967508493, 350799576, 1081889354, 2015798343, 1730641781, 649359336, 533479256, 1528356854, 1989160987, 1850260255, 2067926708, 718556561, 1896763210, 2132658598, 120098295); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int4x4 b0 = int4x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492); + int4x4 r0 = int4x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812, 953555847, 621596140, 1060334190, 211227368); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (290620937); + int4x4 b1 = int4x4(1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943); + int4x4 r1 = int4x4(1127638218, 648689378, 1599924796, 477936442, 631134527, 891940181, 449034364, 1108436144, 862105248, 2102275769, 343659812, 1727179960, 1141142940, 615093500, 1273803444, 439201526); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (714832744); + int4x4 b2 = int4x4(374210759, 215701593, 1573378082, 779254615, 711527976, 710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645); + int4x4 r2 = int4x4(1020623791, 641737521, 2002559818, 82378815, 15889728, 12609583, 667564310, 163675479, 2092654163, 949289501, 39072688, 2128928141, 2140252743, 303507938, 537080739, 1561356861); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (896851285); + int4x4 b3 = int4x4(1187420887, 536338211, 874727301, 1067319145, 191758210, 272673141, 18096431, 188062447, 1726887620, 2109517402, 1329654715, 1449815991, 342156404, 604196193, 1831114838, 962033481); + int4x4 r3 = int4x4(1941063554, 713228918, 22518480, 183050812, 1041834711, 624194592, 878771322, 1044465594, 1402661777, 1221096207, 2050242286, 1662956258, 554711329, 293048372, 1481655555, 203663900); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_left_shift() + { + int4x4 a0 = int4x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606); + int b0 = (1321149625); + int4x4 r0 = int4x4(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464, -1409286144, 838860800, -872415232, -1409286144, 1006632960, 1174405120, 503316480, -1677721600); + TestUtils.AreEqual(a0 << b0, r0); + + int4x4 a1 = int4x4(2045594989, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278, 221147365, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875); + int b1 = (2077023268); + int4x4 r1 = int4x4(-1630218544, 892924384, 469119280, 1794396016, 1406142960, 596255120, -1215170096, -1422520880, -72786848, -756609456, -1012689040, -600394240, 1142455168, -887922944, 1636751872, 648281520); + TestUtils.AreEqual(a1 << b1, r1); + + int4x4 a2 = int4x4(1824729613, 1581610518, 407677878, 1208958192, 740058147, 946058001, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326); + int b2 = (1535276688); + int4x4 r2 = int4x4(705495040, 1981153280, -1414135808, 1022361600, 1680015360, -1290731520, 2103508992, -1426784256, 1514799104, 2144796672, 1359347712, 1840316416, -1592197120, -1565917184, -2060779520, -1424621568); + TestUtils.AreEqual(a2 << b2, r2); + + int4x4 a3 = int4x4(1996060114, 542942787, 65869628, 622492353, 159523866, 584916657, 286195265, 1953695770, 209529707, 211278352, 933594260, 1827522668, 1129290782, 1050231977, 183969222, 1773085306); + int b3 = (927390277); + int4x4 r3 = int4x4(-550585792, 194300000, 2107828096, -1555081184, 809796416, 1537463840, 568313888, -1906244800, -1884983968, -1829027328, -189754752, -1648816768, 1777566656, -752315104, 1592047808, 904154944); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_right_shift() + { + int4x4 a0 = int4x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382); + int b0 = (1266801540); + int4x4 r0 = int4x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440, 43870498, 57361563, 35594054, 11599586); + TestUtils.AreEqual(a0 >> b0, r0); + + int4x4 a1 = int4x4(1102123711, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760, 348013684, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389); + int b1 = (334005460); + int4x4 r1 = int4x4(1051, 1549, 267, 1524, 1755, 702, 1219, 389, 728, 331, 1495, 738, 1513, 572, 28, 1793); + TestUtils.AreEqual(a1 >> b1, r1); + + int4x4 a2 = int4x4(352174824, 425441430, 186542511, 1099859381, 1234295294, 1028666766, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981); + int b2 = (1164508476); + int4x4 r2 = int4x4(1, 1, 0, 4, 4, 3, 2, 4, 3, 4, 0, 3, 4, 5, 5, 2); + TestUtils.AreEqual(a2 >> b2, r2); + + int4x4 a3 = int4x4(1435331003, 1447204571, 494777716, 1097030937, 1573721009, 424949150, 338466956, 1451909085, 2097834602, 1996022619, 1349763966, 490973311, 1133192771, 2054033380, 397231107, 150337656); + int b3 = (1759616654); + int4x4 r3 = int4x4(87605, 88330, 30198, 66957, 96052, 25936, 20658, 88617, 128041, 121827, 82383, 29966, 69164, 125368, 24245, 9175); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_not() + { + int4x4 a0 = int4x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603); + int4x4 r0 = int4x4(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857, -472965492, -771711427, -627580961, -2061524025, -753208489, -2097179284, -1303022494, -664744604); + TestUtils.AreEqual(~a0, r0); + + int4x4 a1 = int4x4(1289372466, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942, 1562433528, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274); + int4x4 r1 = int4x4(-1289372467, -1951018597, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322, -1282546943, -1562433529, -1824824811, -1736570716, -508906059, -2060752881, -1867418757, -388530275); + TestUtils.AreEqual(~a1, r1); + + int4x4 a2 = int4x4(695179852, 897923626, 1816190464, 1362906829, 1227946838, 700158434, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010); + int4x4 r2 = int4x4(-695179853, -897923627, -1816190465, -1362906830, -1227946839, -700158435, -189609279, -956441809, -2123488811, -1593014252, -19223062, -1722107955, -1636875695, -1914097393, -1382545028, -1285277011); + TestUtils.AreEqual(~a2, r2); + + int4x4 a3 = int4x4(722020848, 183545104, 2006881282, 685422512, 70717710, 1636059183, 1218560768, 1078350342, 1743219894, 894044458, 110742707, 1831797788, 2111543080, 858442193, 907645851, 1672993750); + int4x4 r3 = int4x4(-722020849, -183545105, -2006881283, -685422513, -70717711, -1636059184, -1218560769, -1078350343, -1743219895, -894044459, -110742708, -1831797789, -2111543081, -858442194, -907645852, -1672993751); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x4.gen.cs.meta new file mode 100644 index 0000000..e4939a3 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestInt4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17b4cf050aaf4e44e965ec9de78ce8bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.cs new file mode 100644 index 0000000..992624e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.cs @@ -0,0 +1,3005 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; +using System; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public partial class TestMath + { + [TestCompiler] + public static void asint_uint() + { + TestUtils.AreEqual(asint(0u), 0); + TestUtils.AreEqual(asint(0x12345678u), 0x12345678); + TestUtils.AreEqual(asint(0x7FFFFFFFu), 0x7FFFFFFF); + TestUtils.AreEqual(asint(0x80000000u), -2147483648); + TestUtils.AreEqual(asint(0x87654321u), -2023406815); + TestUtils.AreEqual(asint(0xFFFFFFFFu), -1); + } + + [TestCompiler] + public static void asint_uint2() + { + TestUtils.AreEqual(asint(uint2(0u, 0x12345678u)), int2(0, 0x12345678)); + TestUtils.AreEqual(asint(uint2(0x7FFFFFFFu, 0x80000000u)), int2(0x7FFFFFFF, -2147483648)); + TestUtils.AreEqual(asint(uint2(0x87654321u, 0xFFFFFFFFu)), int2(-2023406815, -1)); + } + + [TestCompiler] + public static void asint_uint3() + { + TestUtils.AreEqual(asint(uint3(0u, 0x12345678u, 0x7FFFFFFFu)), int3(0, 0x12345678, 0x7FFFFFFF)); + TestUtils.AreEqual(asint(uint3(0x80000000u, 0x87654321u, 0xFFFFFFFFu)), int3(-2147483648, -2023406815, -1)); + } + + [TestCompiler] + public static void asint_uint4() + { + TestUtils.AreEqual(asint(uint4(0u, 0x12345678u, 0x7FFFFFFFu, 0x80000000u)), int4(0, 0x12345678, 0x7FFFFFFF, -2147483648)); + TestUtils.AreEqual(asint(uint4(0x87654321u, 0xFFFFFFFFu, 0u, 0u)), int4(-2023406815, -1, 0, 0)); + } + + [TestCompiler] + public static void asint_float() + { + TestUtils.AreEqual(asint(0.0f), 0); + TestUtils.AreEqual(asint(1.0f), 0x3F800000); + TestUtils.AreEqual(asint(1234.56f), 0x449A51EC); + TestUtils.AreEqual(asint(float.PositiveInfinity), 0x7F800000); + TestUtils.AreEqual(asint(float.NaN), unchecked((int)0xFFC00000)); + + TestUtils.AreEqual(asint(-1.0f), unchecked((int)0xBF800000)); + TestUtils.AreEqual(asint(-1234.56f), unchecked((int)0xC49A51EC)); + TestUtils.AreEqual(asint(float.NegativeInfinity), unchecked((int)0xFF800000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asint_float_signed_zero() + { + TestUtils.AreEqual(asint(-0.0f), unchecked((int)0x80000000)); + } + + [TestCompiler] + public static void asint_float2() + { + TestUtils.AreEqual(asint(float2(0.0f, 1.0f)), int2(0, 0x3F800000)); + TestUtils.AreEqual(asint(float2(1234.56f, float.PositiveInfinity)), int2(0x449A51EC, 0x7F800000)); + TestUtils.AreEqual(asint(float2(float.NaN, -1.0f)), int2(unchecked((int)0xFFC00000), unchecked((int)0xBF800000))); + + TestUtils.AreEqual(asint(float2(-1234.56f, float.NegativeInfinity)), int2(unchecked((int)0xC49A51EC), unchecked((int)0xFF800000))); + TestUtils.AreEqual(asint(float2(0.0f, 0.0f)), int2(0, 0)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asint_float2_signed_zero() + { + TestUtils.AreEqual(asint(float2(-0.0f, -0.0f)), int2(unchecked((int)0x80000000), unchecked((int)0x80000000))); + } + + [TestCompiler] + public static void asint_float3() + { + TestUtils.AreEqual(asint(float3(0.0f, 1.0f, 1234.56f)), int3(0, 0x3F800000, 0x449A51EC)); + TestUtils.AreEqual(asint(float3(float.PositiveInfinity, float.NaN, -1.0f)), int3(0x7F800000, unchecked((int)0xFFC00000), unchecked((int)0xBF800000))); + TestUtils.AreEqual(asint(float3(-1234.56f, float.NegativeInfinity, 0.0f)), int3(unchecked((int)0xC49A51EC), unchecked((int)0xFF800000), 0)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asint_float3_signed_zero() + { + TestUtils.AreEqual(asint(float3(-0.0f, -0.0f, -0.0f)), int3(unchecked((int)0x80000000), unchecked((int)0x80000000), unchecked((int)0x80000000))); + } + + [TestCompiler] + public static void asint_float4() + { + TestUtils.AreEqual(asint(float4(0.0f, 1.0f, 1234.56f, float.PositiveInfinity)), int4(0, 0x3F800000, 0x449A51EC, 0x7F800000)); + TestUtils.AreEqual(asint(float4(float.NaN, -1.0f, -1234.56f, float.NegativeInfinity)), int4(unchecked((int)0xFFC00000), unchecked((int)0xBF800000), unchecked((int)0xC49A51EC), unchecked((int)0xFF800000))); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asint_float4_signed_zero() + { + TestUtils.AreEqual(asint(float4(-0.0f, -0.0f, -0.0f, -0.0f)), int4(unchecked((int)0x80000000), unchecked((int)0x80000000), unchecked((int)0x80000000), unchecked((int)0x80000000))); + } + + [TestCompiler] + public static void asuint_int() + { + TestUtils.AreEqual(asuint(0), 0u); + TestUtils.AreEqual(asuint(0x12345678), 0x12345678u); + TestUtils.AreEqual(asuint(0x7FFFFFFF), 0x7FFFFFFFu); + TestUtils.AreEqual(asuint(-2147483648), 0x80000000u); + TestUtils.AreEqual(asuint(-2023406815), 0x87654321u); + TestUtils.AreEqual(asuint(-1), 0xFFFFFFFFu); + } + + [TestCompiler] + public static void asuint_int2() + { + TestUtils.AreEqual(asuint(int2(0, 0x12345678)), uint2(0u, 0x12345678u)); + TestUtils.AreEqual(asuint(int2(0x7FFFFFFF, -2147483648)), uint2(0x7FFFFFFFu, 0x80000000u)); + TestUtils.AreEqual(asuint(int2(-2023406815, -1)), uint2(0x87654321u, 0xFFFFFFFFu)); + } + + [TestCompiler] + public static void asuint_int3() + { + TestUtils.AreEqual(asuint(int3(0, 0x12345678, 0x7FFFFFFF)), uint3(0u, 0x12345678u, 0x7FFFFFFFu)); + TestUtils.AreEqual(asuint(int3(-2147483648, -2023406815, -1)), uint3(0x80000000u, 0x87654321u, 0xFFFFFFFFu)); + } + + [TestCompiler] + public static void asuint_int4() + { + TestUtils.AreEqual(asuint(int4(0, 0x12345678, 0x7FFFFFFF, -2147483648)), uint4(0u, 0x12345678u, 0x7FFFFFFFu, 0x80000000u)); + TestUtils.AreEqual(asuint(int4(-2023406815, -1, 0, 0)), uint4(0x87654321u, 0xFFFFFFFFu, 0u, 0u)); + } + + [TestCompiler] + public static void asuint_float() + { + TestUtils.AreEqual(asuint(0.0f), 0u); + TestUtils.AreEqual(asuint(1.0f), 0x3F800000u); + TestUtils.AreEqual(asuint(1234.56f), 0x449A51ECu); + TestUtils.AreEqual(asuint(float.PositiveInfinity), 0x7F800000u); + TestUtils.AreEqual(asuint(float.NaN), 0xFFC00000u); + + TestUtils.AreEqual(asuint(-1.0f), 0xBF800000u); + TestUtils.AreEqual(asuint(-1234.56f), 0xC49A51ECu); + TestUtils.AreEqual(asuint(float.NegativeInfinity), 0xFF800000u); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asuint_float_signed_zero() + { + TestUtils.AreEqual(asuint(-0.0f), 0x80000000u); + } + + [TestCompiler] + public static void asuint_float2() + { + TestUtils.AreEqual(asuint(float2(0.0f, 1.0f)), uint2(0u, 0x3F800000u)); + TestUtils.AreEqual(asuint(float2(1234.56f, float.PositiveInfinity)), uint2(0x449A51Ecu, 0x7F800000u)); + TestUtils.AreEqual(asuint(float2(float.NaN, -1.0f)), uint2(0xFFC00000u, 0xBF800000u)); + + TestUtils.AreEqual(asuint(float2(-1234.56f, float.NegativeInfinity)), uint2(0xC49A51ECu, 0xFF800000u)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asuint_float2_signed_zero() + { + TestUtils.AreEqual(asuint(float2(-0.0f, -0.0f)), uint2(0x80000000u, 0x80000000u)); + } + + [TestCompiler] + public static void asuint_float3() + { + TestUtils.AreEqual(asuint(float3(0.0f, 1.0f, 1234.56f)), uint3(0u, 0x3F800000u, 0x449A51ECu)); + TestUtils.AreEqual(asuint(float3(float.PositiveInfinity, float.NaN, -1.0f)), uint3(0x7F800000u, 0xFFC00000u, 0xBF800000u)); + TestUtils.AreEqual(asuint(float3(-1234.56f, float.NegativeInfinity, 0.0f)), uint3(0xC49A51ECu, 0xff800000u, 0u)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asuint_float3_signed_zero() + { + TestUtils.AreEqual(asuint(float3(-0.0f, -0.0f, -0.0f)), uint3(0x80000000u, 0x80000000u, 0x80000000u)); + } + + [TestCompiler] + public static void asuint_float4() + { + TestUtils.AreEqual(asuint(float4(0.0f, 1.0f, 1234.56f, float.PositiveInfinity)), uint4(0u, 0x3F800000u, 0x449A51ECu, 0x7F800000u)); + TestUtils.AreEqual(asuint(float4(float.NaN, -1.0f, -1234.56f, float.NegativeInfinity)), uint4(0xFFC00000u, 0xBF800000u, 0xC49A51ECu, 0xFF800000u)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asuint_float4_singed_zero() + { + TestUtils.AreEqual(asuint(float4(-0.0f, -0.0f, -0.0f, -0.0f)), uint4(0x80000000u, 0x80000000u, 0x80000000u, 0x80000000u)); + } + + [TestCompiler] + public static void aslong_ulong() + { + TestUtils.AreEqual(aslong(0ul), 0L); + TestUtils.AreEqual(aslong(0x0123456789ABCDEFul), 0x0123456789ABCDEFL); + TestUtils.AreEqual(aslong(0x7FFFFFFFFFFFFFFFul), 0x7FFFFFFFFFFFFFFFL); + TestUtils.AreEqual(aslong(0x8000000000000000ul), -9223372036854775808L); + TestUtils.AreEqual(aslong(0xFEDCBA9876543210ul), -81985529216486896L); + TestUtils.AreEqual(aslong(0xFFFFFFFFFFFFFFFFul), -1L); + } + + [TestCompiler] + public static void aslong_double() + { + TestUtils.AreEqual(aslong(0.0), 0L); + TestUtils.AreEqual(aslong(1.0), 0x3FF0000000000000L); + TestUtils.AreEqual(aslong(1234.56), 0x40934A3D70A3D70AL); + TestUtils.AreEqual(aslong(double.PositiveInfinity), 0x7FF0000000000000L); + TestUtils.AreEqual(aslong(double.NaN), unchecked((long)0xFFF8000000000000UL)); + + TestUtils.AreEqual(aslong(-1.0), unchecked((long)0xBFF0000000000000UL)); + TestUtils.AreEqual(aslong(-1234.56), unchecked((long)0xC0934A3D70A3D70AUL)); + TestUtils.AreEqual(aslong(double.NegativeInfinity), unchecked((long)0xFFF0000000000000UL)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void aslong_double_signed_zero() + { + TestUtils.AreEqual(aslong(-0.0), unchecked((long)0x8000000000000000UL)); + } + + [TestCompiler] + public static void asulong_long() + { + TestUtils.AreEqual(asulong(0L), 0ul); + TestUtils.AreEqual(asulong(0x0123456789ABCDEFL), 0x0123456789ABCDEFul); + TestUtils.AreEqual(asulong(0x7FFFFFFFFFFFFFFFL), 0x7FFFFFFFFFFFFFFFul); + TestUtils.AreEqual(asulong(-9223372036854775808L), 0x8000000000000000ul); + TestUtils.AreEqual(asulong(-81985529216486896L), 0xFEDCBA9876543210ul); + TestUtils.AreEqual(asulong(-1L), 0xFFFFFFFFFFFFFFFFul); + } + + [TestCompiler] + public static void asulong_double() + { + TestUtils.AreEqual(asulong(0.0), 0UL); + TestUtils.AreEqual(asulong(1.0), 0x3FF0000000000000UL); + TestUtils.AreEqual(asulong(1234.56), 0x40934A3D70A3D70AUL); + TestUtils.AreEqual(asulong(double.PositiveInfinity), 0x7FF0000000000000UL); + TestUtils.AreEqual(asulong(double.NaN), 0xFFF8000000000000UL); + + TestUtils.AreEqual(asulong(-1.0), 0xBFF0000000000000UL); + TestUtils.AreEqual(asulong(-1234.56), 0xC0934A3D70A3D70AUL); + TestUtils.AreEqual(asulong(double.NegativeInfinity), 0xFFF0000000000000UL); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asulong_double_signed_zero() + { + TestUtils.AreEqual(asulong(-0.0), 0x8000000000000000UL); + } + + [TestCompiler] + public static void asfloat_int() + { + TestUtils.AreEqual(asfloat(0), 0.0f); + TestUtils.AreEqual(asfloat(0x3F800000), 1.0f); + TestUtils.AreEqual(asfloat(0x449A51EC), 1234.56f); + TestUtils.AreEqual(asfloat(0x7F800000), float.PositiveInfinity); + TestUtils.AreEqual(asfloat(unchecked((int)0x80000000)), -0.0f); + TestUtils.AreEqual(asfloat(unchecked((int)0xBF800000)), -1.0f); + TestUtils.AreEqual(asfloat(unchecked((int)0xC49A51EC)), -1234.56f); + TestUtils.AreEqual(asfloat(unchecked((int)0xFF800000)), float.NegativeInfinity); + + TestUtils.AreEqual(asuint(asfloat(unchecked((int)0xFFC00000))), asuint(float.NaN)); + } + + [TestCompiler] + public static void asfloat_int2() + { + TestUtils.AreEqual(asfloat(int2(0, 0x3F800000)), float2(0.0f, 1.0f)); + TestUtils.AreEqual(asfloat(int2(0x449A51EC, 0x7F800000)), float2(1234.56f, float.PositiveInfinity)); + TestUtils.AreEqual(asfloat(int2(unchecked((int)0x80000000), unchecked((int)0xBF800000))), float2(-0.0f, -1.0f)); + + TestUtils.AreEqual(asfloat(int2(unchecked((int)0xC49A51EC), unchecked((int)0xFF800000))), float2(-1234.56f, float.NegativeInfinity)); + TestUtils.AreEqual(asuint(asfloat(int2(unchecked((int)0xFFC00000), unchecked((int)0xFFC00000)))), asuint(float2(float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_int3() + { + TestUtils.AreEqual(asfloat(int3(0, 0x3F800000, 0x449A51EC)), float3(0.0f, 1.0f, 1234.56f)); + TestUtils.AreEqual(asfloat(int3(0x7F800000, unchecked((int)0x80000000), unchecked((int)0xBF800000))), float3(float.PositiveInfinity, -0.0f, -1.0f)); + + TestUtils.AreEqual(asfloat(int3(unchecked((int)0xC49A51EC), unchecked((int)0xFF800000), 0)), float3(-1234.56f, float.NegativeInfinity, 0.0f)); + TestUtils.AreEqual(asuint(asfloat(int3(unchecked((int)0xFFC00000), unchecked((int)0xFFC00000), unchecked((int)0xFFC00000)))), asuint(float3(float.NaN, float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_int4() + { + TestUtils.AreEqual(asfloat(int4(0, 0x3F800000, 0x449A51EC, 0x7F800000)), float4(0.0f, 1.0f, 1234.56f, float.PositiveInfinity)); + TestUtils.AreEqual(asfloat(int4(unchecked((int)0x80000000), unchecked((int)0xBF800000), unchecked((int)0xC49A51EC), unchecked((int)0xFF800000))), float4(-0.0f, -1.0f, -1234.56f, float.NegativeInfinity)); + + TestUtils.AreEqual(asuint(asfloat(int4(unchecked((int)0xFFC00000), unchecked((int)0xFFC00000), unchecked((int)0xFFC00000), unchecked((int)0xFFC00000)))), asuint(float4(float.NaN, float.NaN, float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_uint() + { + TestUtils.AreEqual(asfloat(0u), 0.0f); + TestUtils.AreEqual(asfloat(0x3F800000u), 1.0f); + TestUtils.AreEqual(asfloat(0x449A51ECu), 1234.56f); + TestUtils.AreEqual(asfloat(0x7F800000u), float.PositiveInfinity); + TestUtils.AreEqual(asfloat(0x80000000u), -0.0f); + TestUtils.AreEqual(asfloat(0xBF800000u), -1.0f); + TestUtils.AreEqual(asfloat(0xC49A51ECu), -1234.56f); + TestUtils.AreEqual(asfloat(0xFF800000u), float.NegativeInfinity); + + TestUtils.AreEqual(asuint(asfloat(0xFFC00000u)), asuint(float.NaN)); + } + + [TestCompiler] + public static void asfloat_uint2() + { + TestUtils.AreEqual(asfloat(uint2(0u, 0x3F800000u)), float2(0.0f, 1.0f)); + TestUtils.AreEqual(asfloat(uint2(0x449A51ECu, 0x7F800000u)), float2(1234.56f, float.PositiveInfinity)); + TestUtils.AreEqual(asfloat(uint2(0x80000000u, 0xBF800000u)), float2(-0.0f, -1.0f)); + + TestUtils.AreEqual(asfloat(uint2(0xC49A51ECu, 0xFF800000u)), float2(-1234.56f, float.NegativeInfinity)); + TestUtils.AreEqual(asuint(asfloat(uint2(0xFFC00000u, 0xFFC00000u))), asuint(float2(float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_uint3() + { + TestUtils.AreEqual(asfloat(uint3(0u, 0x3F800000u, 0x449A51ECu)), float3(0.0f, 1.0f, 1234.56f)); + TestUtils.AreEqual(asfloat(uint3(0x7F800000u, 0x80000000u, 0xBF800000u)), float3(float.PositiveInfinity, -0.0f, -1.0f)); + + TestUtils.AreEqual(asfloat(uint3(0xC49A51ECu, 0xFF800000u, 0u)), float3(-1234.56f, float.NegativeInfinity, 0.0f)); + TestUtils.AreEqual(asuint(asfloat(uint3(0xFFC00000u, 0xFFC00000u, 0xFFC00000u))), asuint(float3(float.NaN, float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_uint4() + { + TestUtils.AreEqual(asfloat(uint4(0u, 0x3F800000u, 0x449A51ECu, 0x7F800000u)), float4(0.0f, 1.0f, 1234.56f, float.PositiveInfinity)); + TestUtils.AreEqual(asfloat(uint4(0x80000000u, 0xBF800000u, 0xC49A51ECu, 0xFF800000u)), float4(-0.0f, -1.0f, -1234.56f, float.NegativeInfinity)); + + TestUtils.AreEqual(asuint(asfloat(uint4(0xFFC00000u, 0xFFC00000u, 0xFFC00000u, 0xFFC00000u))), asuint(float4(float.NaN, float.NaN, float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asdouble_long() + { + TestUtils.AreEqual(asdouble(0L), 0.0); + TestUtils.AreEqual(asdouble(0x3FF0000000000000L), 1.0); + TestUtils.AreEqual(asdouble(0x40934A3D70A3D70AL), 1234.56); + TestUtils.AreEqual(asdouble(0x7FF0000000000000L), double.PositiveInfinity); + TestUtils.AreEqual(asdouble(unchecked((long)0xFFF8000000000000UL)), double.NaN); + + TestUtils.AreEqual(asdouble(unchecked((long)0x8000000000000000UL)), -0.0); + TestUtils.AreEqual(asdouble(unchecked((long)0xBFF0000000000000UL)), -1.0); + TestUtils.AreEqual(asdouble(unchecked((long)0xC0934A3D70A3D70AUL)), -1234.56); + TestUtils.AreEqual(asdouble(unchecked((long)0xFFF0000000000000UL)), double.NegativeInfinity); + } + + [TestCompiler] + public static void asdouble_ulong() + { + TestUtils.AreEqual(asdouble(0UL), 0.0); + TestUtils.AreEqual(asdouble(0x3FF0000000000000UL), 1.0); + TestUtils.AreEqual(asdouble(0x40934A3D70A3D70AUL), 1234.56); + TestUtils.AreEqual(asdouble(0x7FF0000000000000UL), double.PositiveInfinity); + TestUtils.AreEqual(asdouble(0xFFF8000000000000UL), double.NaN); + + TestUtils.AreEqual(asdouble(0x8000000000000000UL), -0.0); + TestUtils.AreEqual(asdouble(0xBFF0000000000000UL), -1.0); + TestUtils.AreEqual(asdouble(0xC0934A3D70A3D70AUL), -1234.56); + TestUtils.AreEqual(asdouble(0xFFF0000000000000UL), double.NegativeInfinity); + } + + [TestCompiler] + public static void faceforward_float2() + { + TestUtils.AreEqual(faceforward(float2(3.5f, -4.5f), float2(1.0f, -2.0f), float2(3.0f, -4.0f)), float2(-3.5f, 4.5f)); + TestUtils.AreEqual(faceforward(float2(3.5f, -4.5f), float2(1.0f, -2.0f), float2(-3.0f, 4.0f)), float2(3.5f, -4.5f)); + TestUtils.AreEqual(faceforward(float2(3.5f, -4.5f), float2(1.0f, -2.0f), float2(0.0f, 0.0f)), float2(-3.5f, 4.5f)); + } + + [TestCompiler] + public static void faceforward_float3() + { + TestUtils.AreEqual(faceforward(float3(3.5f, -4.5f, 5.5f), float3(1.0f, -2.0f, 3.0f), float3(3.0f, -4.0f, 5.0f)), float3(-3.5f, 4.5f, -5.5f)); + TestUtils.AreEqual(faceforward(float3(3.5f, -4.5f, 5.5f), float3(1.0f, -2.0f, 3.0f), float3(-3.0f, 4.0f, -5.0f)), float3(3.5f, -4.5f, 5.5f)); + TestUtils.AreEqual(faceforward(float3(3.5f, -4.5f, 5.5f), float3(1.0f, -2.0f, 3.0f), float3(0.0f, 0.0f, 0.0f)), float3(-3.5f, 4.5f, -5.5f)); + } + + [TestCompiler] + public static void faceforward_float4() + { + TestUtils.AreEqual(faceforward(float4(3.5f, -4.5f, 5.5f, -6.5f), float4(1.0f, -2.0f, 3.0f, -4.0f), float4(3.0f, -4.0f, 5.0f, -6.0f)), float4(-3.5f, 4.5f, -5.5f, 6.5f)); + TestUtils.AreEqual(faceforward(float4(3.5f, -4.5f, 5.5f, -6.5f), float4(1.0f, -2.0f, 3.0f, -4.0f), float4(-3.0f, 4.0f, -5.0f, 6.0f)), float4(3.5f, -4.5f, 5.5f, -6.5f)); + TestUtils.AreEqual(faceforward(float4(3.5f, -4.5f, 5.5f, -6.5f), float4(1.0f, -2.0f, 3.0f, -4.0f), float4(0.0f, 0.0f, 0.0f, 0.0f)), float4(-3.5f, 4.5f, -5.5f, 6.5f)); + } + + [TestCompiler] + public static void faceforward_double2() + { + TestUtils.AreEqual(faceforward(double2(3.5, -4.5), double2(1.0, -2.0), double2(3.0, -4.0)), double2(-3.5, 4.5)); + TestUtils.AreEqual(faceforward(double2(3.5, -4.5), double2(1.0, -2.0), double2(-3.0, 4.0)), double2(3.5, -4.5)); + TestUtils.AreEqual(faceforward(double2(3.5, -4.5), double2(1.0, -2.0), double2(0.0, 0.0)), double2(-3.5, 4.5)); + } + + [TestCompiler] + public static void faceforward_double3() + { + TestUtils.AreEqual(faceforward(double3(3.5, -4.5, 5.5), double3(1.0, -2.0, 3.0), double3(3.0, -4.0, 5.0)), double3(-3.5, 4.5, -5.5)); + TestUtils.AreEqual(faceforward(double3(3.5, -4.5, 5.5), double3(1.0, -2.0, 3.0), double3(-3.0, 4.0, -5.0)), double3(3.5, -4.5, 5.5)); + TestUtils.AreEqual(faceforward(double3(3.5, -4.5, 5.5), double3(1.0, -2.0, 3.0), double3(0.0, 0.0, 0.0)), double3(-3.5, 4.5, -5.5)); + } + + [TestCompiler] + public static void faceforward_double4() + { + TestUtils.AreEqual(faceforward(double4(3.5, -4.5, 5.5, -6.5), double4(1.0, -2.0, 3.0, -4.0), double4(3.0, -4.0, 5.0, -6.0)), double4(-3.5, 4.5, -5.5, 6.5)); + TestUtils.AreEqual(faceforward(double4(3.5, -4.5, 5.5, -6.5), double4(1.0, -2.0, 3.0, -4.0), double4(-3.0, 4.0, -5.0, 6.0)), double4(3.5, -4.5, 5.5, -6.5)); + TestUtils.AreEqual(faceforward(double4(3.5, -4.5, 5.5, -6.5), double4(1.0, -2.0, 3.0, -4.0), double4(0.0, 0.0, 0.0, 0.0)), double4(-3.5, 4.5, -5.5, 6.5)); + } + + [TestCompiler] + public static void modf_float() + { + float f, i; + f = modf(313.75f, out i); + TestUtils.AreEqual(i, 313.0f); + TestUtils.AreEqual(f, 0.75f); + + f = modf(-313.25f, out i); + TestUtils.AreEqual(i, -313.0f); + TestUtils.AreEqual(f, -0.25f); + + f = modf(-314.0f, out i); + TestUtils.AreEqual(i, -314.0f); + TestUtils.AreEqual(f, 0.0f); + } + + [TestCompiler] + public static void modf_float2() + { + float2 f, i; + f = modf(float2(313.75f, -313.25f), out i); + TestUtils.AreEqual(i, float2(313.0f, -313.0f)); + TestUtils.AreEqual(f, float2(0.75f, -0.25f)); + + f = modf(float2(-314.0f, 7.5f), out i); + TestUtils.AreEqual(i, float2(-314.0f, 7.0f)); + TestUtils.AreEqual(f, float2(0.0f, 0.5f)); + } + + [TestCompiler] + public static void modf_float3() + { + float3 f, i; + f = modf(float3(313.75f, -313.25f, -314.0f), out i); + TestUtils.AreEqual(i, float3(313.0f, -313.0f, -314.0f)); + TestUtils.AreEqual(f, float3(0.75f, -0.25f, 0.0f)); + } + + [TestCompiler] + public static void modf_float4() + { + float4 f, i; + f = modf(float4(313.75f, -313.25f, -314.0f, 7.5f), out i); + TestUtils.AreEqual(i, float4(313.0f, -313.0f, -314.0f, 7.0f)); + TestUtils.AreEqual(f, float4(0.75f, -0.25f, 0.0f, 0.5f)); + } + + [TestCompiler] + public static void modf_double() + { + double f, i; + f = modf(313.75, out i); + TestUtils.AreEqual(i, 313.0); + TestUtils.AreEqual(f, 0.75); + + f = modf(-313.25, out i); + TestUtils.AreEqual(i, -313.0); + TestUtils.AreEqual(f, -0.25); + + f = modf(-314.0, out i); + TestUtils.AreEqual(i, -314.0); + TestUtils.AreEqual(f, 0.0); + } + + [TestCompiler] + public static void modf_double2() + { + double2 f, i; + f = modf(double2(313.75, -313.25), out i); + TestUtils.AreEqual(i, double2(313.0, -313.0)); + TestUtils.AreEqual(f, double2(0.75, -0.25)); + + f = modf(double2(-314.0, 7.5), out i); + TestUtils.AreEqual(i, double2(-314.0, 7.0)); + TestUtils.AreEqual(f, double2(0.0, 0.5)); + } + + [TestCompiler] + public static void modf_double3() + { + double3 f, i; + f = modf(double3(313.75, -313.25, -314.0), out i); + TestUtils.AreEqual(i, double3(313.0, -313.0, -314.0)); + TestUtils.AreEqual(f, double3(0.75, -0.25, 0.0)); + } + + [TestCompiler] + public static void modf_double4() + { + double4 f, i; + f = modf(double4(313.75, -313.25, -314.0, 7.5), out i); + TestUtils.AreEqual(i, double4(313.0, -313.0, -314.0, 7.0)); + TestUtils.AreEqual(f, double4(0.75, -0.25, 0.0, 0.5f)); + } + + [TestCompiler] + public static void normalize_float2() + { + TestUtils.AreEqual(normalize(float2(3.1f, -5.3f)), float2(0.504883f, -0.863188f), 0.0001f); + TestUtils.AreEqual(all(isnan(normalize(float2(0.0f, 0.0f)))), true); + } + + [TestCompiler] + public static void normalize_float3() + { + TestUtils.AreEqual(normalizesafe(float3(3.1f, -5.3f, 2.6f)), float3(0.464916f, -0.794861f, 0.389932f), 0.0001f); + TestUtils.AreEqual(all(isnan(normalize(float3(0.0f, 0.0f, 0.0f)))), true); + } + + [TestCompiler] + public static void normalize_float4() + { + TestUtils.AreEqual(normalizesafe(float4(3.1f, -5.3f, 2.6f, 11.4f)), float4(0.234727f, -0.401308f, 0.196868f, 0.863191f), 0.0001f); + TestUtils.AreEqual(all(isnan(normalize(float4(0.0f, 0.0f, 0.0f, 0.0f)))), true); + } + + + [TestCompiler] + public static void normalize_double2() + { + TestUtils.AreEqual(normalize(double2(3.1, -5.3)), double2(0.504883, -0.863188), 0.0001); + TestUtils.AreEqual(all(isnan(normalize(double2(0.0, 0.0)))), true); + } + + [TestCompiler] + public static void normalize_double3() + { + TestUtils.AreEqual(normalizesafe(double3(3.1, -5.3, 2.6)), double3(0.464916, -0.794861, 0.389932), 0.0001); + TestUtils.AreEqual(all(isnan(normalize(double3(0.0, 0.0, 0.0)))), true); + } + + [TestCompiler] + public static void normalize_double4() + { + TestUtils.AreEqual(normalizesafe(double4(3.1, -5.3, 2.6, 11.4)), double4(0.234727, -0.401308, 0.196868, 0.863191), 0.0001); + TestUtils.AreEqual(all(isnan(normalize(double4(0.0, 0.0, 0.0, 0.0f)))), true); + } + + [TestCompiler] + public static void normalize_quaternion() + { + TestUtils.AreEqual(normalizesafe(quaternion(3.1f, -5.3f, 2.6f, 11.4f)), quaternion(0.234727f, -0.401308f, 0.196868f, 0.863191f), 0.0001f); + TestUtils.AreEqual(all(isnan(normalize(quaternion(0.0f, 0.0f, 0.0f, 0.0f)).value)), true); + } + + + [TestCompiler] + public static void normalizesafe_float2() + { + TestUtils.AreEqual(normalizesafe(float2(3.1f, -5.3f)), float2(0.504883f, -0.863188f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float2(0.0f, 0.0f)), float2(0.0f, 0.0f)); + TestUtils.AreEqual(normalizesafe(float2(0.0f, 0.0f), float2(1.0f, 2.0f)), float2(1.0f, 2.0f)); + TestUtils.AreEqual(normalizesafe(float2(1e-18f, 2e-18f)), float2(0.447214f, 0.894427f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float2(7.66e-20f, 7.66e-20f), float2(1.0f, 2.0f)), float2(1.0f, 2.0f)); + } + + [TestCompiler] + public static void normalizesafe_float3() + { + TestUtils.AreEqual(normalizesafe(float3(3.1f, -5.3f, 2.6f)), float3(0.464916f, -0.794861f, 0.389932f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float3(0.0f, 0.0f, 0.0f)), float3(0.0f, 0.0f, 0.0f)); + TestUtils.AreEqual(normalizesafe(float3(0.0f, 0.0f, 0.0f), float3(1.0f, 2.0f, 3.0f)), float3(1.0f, 2.0f, 3.0f)); + TestUtils.AreEqual(normalizesafe(float3(1e-19f, 2e-19f, 3e-19f)), float3(0.267261f, 0.534523f, 0.801784f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float3(6.25e-20f, 6.25e-20f, 6.25e-20f), float3(1.0f, 2.0f, 3.0f)), float3(1.0f, 2.0f, 3.0f)); + } + + [TestCompiler] + public static void normalizesafe_float4() + { + TestUtils.AreEqual(normalizesafe(float4(3.1f, -5.3f, 2.6f, 11.4f)), float4(0.234727f, -0.401308f, 0.196868f, 0.863191f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float4(0.0f, 0.0f, 0.0f, 0.0f)), float4(0.0f, 0.0f, 0.0f, 0.0f)); + TestUtils.AreEqual(normalizesafe(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(1.0f, 2.0f, 3.0f, 4.0f)), float4(1.0f, 2.0f, 3.0f, 4.0f)); + TestUtils.AreEqual(normalizesafe(float4(1e-19f, 2e-19f, 3e-19f, 4e-19f)), float4(0.182574f, 0.3651484f, 0.547723f, 0.730297f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float4(5.42e-20f, 5.42e-20f, 5.42e-20f, 5.42e-20f), float4(1.0f, 2.0f, 3.0f, 4.0f)), float4(1.0f, 2.0f, 3.0f, 4.0f)); + } + + + [TestCompiler] + public static void normalizesafe_double2() + { + TestUtils.AreEqual(normalizesafe(double2(3.1, -5.3)), double2(0.504883, -0.863188), 0.0001); + TestUtils.AreEqual(normalizesafe(double2(0.0, 0.0)), double2(0.0, 0.0)); + TestUtils.AreEqual(normalizesafe(double2(0.0, 0.0), double2(1.0, 2.0)), double2(1.0, 2.0)); + TestUtils.AreEqual(normalizesafe(double2(1e-18, 2e-18)), double2(0.447214, 0.894427), 0.0001); + TestUtils.AreEqual(normalizesafe(double2(1.05e-154, 1.05e-154), double2(1.0, 2.0)), double2(1.0, 2.0)); + } + + [TestCompiler] + public static void normalizesafe_double3() + { + TestUtils.AreEqual(normalizesafe(double3(3.1, -5.3, 2.6)), double3(0.464916, -0.794861, 0.389932), 0.0001); + TestUtils.AreEqual(normalizesafe(double3(0.0, 0.0, 0.0)), double3(0.0, 0.0, 0.0)); + TestUtils.AreEqual(normalizesafe(double3(0.0, 0.0, 0.0), double3(1.0, 2.0, 3.0)), double3(1.0, 2.0, 3.0)); + TestUtils.AreEqual(normalizesafe(double3(1e-19, 2e-19, 3e-19)), double3(0.267261, 0.534523, 0.801784), 0.0001); + TestUtils.AreEqual(normalizesafe(double3(8.61e-155, 8.61e-155, 8.61e-155), double3(1.0, 2.0, 3.0)), double3(1.0, 2.0, 3.0)); + } + + [TestCompiler] + public static void normalizesafe_double4() + { + TestUtils.AreEqual(normalizesafe(double4(3.1, -5.3, 2.6, 11.4)), double4(0.234727, -0.401308, 0.196868, 0.863191), 0.0001); + TestUtils.AreEqual(normalizesafe(double4(0.0, 0.0, 0.0, 0.0)), double4(0.0, 0.0, 0.0, 0.0)); + TestUtils.AreEqual(normalizesafe(double4(0.0, 0.0, 0.0, 0.0), double4(1.0, 2.0, 3.0, 4.0)), double4(1.0, 2.0, 3.0, 4.0)); + TestUtils.AreEqual(normalizesafe(double4(1e-19, 2e-19, 3e-19, 4e-19)), double4(0.182574, 0.3651484, 0.547723, 0.730297), 0.0001); + TestUtils.AreEqual(normalizesafe(double4(7.45e-155, 7.45e-155, 7.45e-155, 7.45e-155), double4(1.0, 2.0, 3.0, 4.0)), double4(1.0, 2.0, 3.0, 4.0)); + } + + [TestCompiler] + public static void normalizesafe_quaternion() + { + TestUtils.AreEqual(normalizesafe(quaternion(3.1f, -5.3f, 2.6f, 11.4f)), quaternion(0.234727f, -0.401308f, 0.196868f, 0.863191f), 0.0001f); + TestUtils.AreEqual(normalizesafe(quaternion(0.0f, 0.0f, 0.0f, 0.0f)), quaternion(0.0f, 0.0f, 0.0f, 1.0f)); + TestUtils.AreEqual(normalizesafe(quaternion(0.0f, 0.0f, 0.0f, 0.0f), quaternion(1.0f, 2.0f, 3.0f, 4.0f)), quaternion(1.0f, 2.0f, 3.0f, 4.0f)); + TestUtils.AreEqual(normalizesafe(quaternion(1e-19f, 2e-19f, 3e-19f, 4e-19f)), quaternion(0.182574f, 0.3651484f, 0.547723f, 0.730297f), 0.0001f); + TestUtils.AreEqual(normalizesafe(quaternion(5.42e-20f, 5.42e-20f, 5.42e-20f, 5.42e-20f), quaternion(1.0f, 2.0f, 3.0f, 4.0f)), quaternion(1.0f, 2.0f, 3.0f, 4.0f)); + } + + [TestCompiler] + public static void f16tof32_float() + { + TestUtils.AreEqual(asuint(f16tof32(0x0000)), 0x00000000); + TestUtils.AreEqual(asuint(f16tof32(0x0203)), 0x3800C000); + TestUtils.AreEqual(asuint(f16tof32(0x4321)), 0x40642000); + TestUtils.AreEqual(asuint(f16tof32(0x7BFF)), 0x477FE000); + TestUtils.AreEqual(asuint(f16tof32(0x7C00)), 0x7F800000); + TestUtils.AreEqual(isnan(f16tof32(0x7C01)), true); + + TestUtils.AreEqual(asuint(f16tof32(0x8000)), 0x80000000); + TestUtils.AreEqual(asuint(f16tof32(0x8203)), 0xB800C000); + TestUtils.AreEqual(asuint(f16tof32(0xC321)), 0xC0642000); + TestUtils.AreEqual(asuint(f16tof32(0xFBFF)), 0xC77FE000); + TestUtils.AreEqual(asuint(f16tof32(0xFC00)), 0xFF800000); + TestUtils.AreEqual(isnan(f16tof32(0xFC01)), true); + } + + [TestCompiler] + public static void f16tof32_float2() + { + TestUtils.AreEqual(asuint(f16tof32(uint2(0x0000, 0x0203))), uint2(0x00000000, 0x3800C000)); + TestUtils.AreEqual(asuint(f16tof32(uint2(0x4321, 0x7BFF))), uint2(0x40642000, 0x477FE000)); + TestUtils.AreEqual(asuint(f16tof32(uint2(0x7C00, 0x7C00))), uint2(0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint2(0x7C01, 0x7C01)))), true); + + TestUtils.AreEqual(asuint(f16tof32(uint2(0x8000, 0x8203))), uint2(0x80000000, 0xB800C000)); + TestUtils.AreEqual(asuint(f16tof32(uint2(0xC321, 0xFBFF))), uint2(0xC0642000, 0xC77FE000)); + TestUtils.AreEqual(asuint(f16tof32(uint2(0xFC00, 0xFC00))), uint2(0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint2(0xFC01, 0xFC01)))), true); + } + + [TestCompiler] + public static void f16tof32_float3() + { + TestUtils.AreEqual(asuint(f16tof32(uint3(0x0000, 0x0203, 0x4321))), uint3(0x00000000, 0x3800C000, 0x40642000)); + TestUtils.AreEqual(asuint(f16tof32(uint3(0x7BFF, 0x7C00, 0x7C00))), uint3(0x477FE000, 0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint3(0x7C01, 0x7C01, 0x7C01)))), true); + + TestUtils.AreEqual(asuint(f16tof32(uint3(0x8000, 0x8203, 0xC321))), uint3(0x80000000, 0xB800C000, 0xC0642000)); + TestUtils.AreEqual(asuint(f16tof32(uint3(0xFBFF, 0xFC00, 0xFC00))), uint3(0xC77FE000, 0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint3(0xFC01, 0xFC01, 0xFC01)))), true); + } + + [TestCompiler] + public static void f16tof32_float4() + { + TestUtils.AreEqual(asuint(f16tof32(uint4(0x0000, 0x0203, 0x4321, 0x7BFF))), uint4(0x00000000, 0x3800C000, 0x40642000, 0x477FE000)); + TestUtils.AreEqual(asuint(f16tof32(uint4(0x7C00, 0x7C00, 0x7C00, 0x7C00))), uint4(0x7F800000, 0x7F800000, 0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint4(0x7C01, 0x7C01, 0x7C01, 0x7C01)))), true); + + TestUtils.AreEqual(asuint(f16tof32(uint4(0x8000, 0x8203, 0xC321, 0xFBFF))), uint4(0x80000000, 0xB800C000, 0xC0642000, 0xC77FE000)); + TestUtils.AreEqual(asuint(f16tof32(uint4(0xFC00, 0xFC00, 0xFC00, 0xFC00))), uint4(0xFF800000, 0xFF800000, 0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint4(0xFC01, 0xFC01, 0xFC01, 0xFC01)))), true); + } + + [TestCompiler] + public static void f32tof16_float() + { + TestUtils.AreEqual(f32tof16(0.0f), 0x0000); + TestUtils.AreEqual(f32tof16(2.98e-08f), 0x0000); + TestUtils.AreEqual(f32tof16(5.96046448e-08f), 0x0001); + TestUtils.AreEqual(f32tof16(123.4f), 0x57B6); + TestUtils.AreEqual(f32tof16(65504.0f), 0x7BFF); + TestUtils.AreEqual(f32tof16(65520.0f), 0x7C00); + TestUtils.AreEqual(f32tof16(float.PositiveInfinity), 0x7C00); + TestUtils.AreEqual(f32tof16(float.NaN), 0xFE00); + + TestUtils.AreEqual(f32tof16(-2.98e-08f), 0x8000); + TestUtils.AreEqual(f32tof16(-5.96046448e-08f), 0x8001); + TestUtils.AreEqual(f32tof16(-123.4f), 0xD7B6); + TestUtils.AreEqual(f32tof16(-65504.0f), 0xFBFF); + TestUtils.AreEqual(f32tof16(-65520.0f), 0xFC00); + TestUtils.AreEqual(f32tof16(float.NegativeInfinity), 0xFC00); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void f32tof16_float_signed_zero() + { + TestUtils.AreEqual(f32tof16(-0.0f), 0x8000); + } + + [TestCompiler] + public static void f32tof16_float2() + { + TestUtils.AreEqual(f32tof16(float2(0.0f, 2.98e-08f)), uint2(0x0000, 0x0000)); + TestUtils.AreEqual(f32tof16(float2(5.96046448e-08f, 123.4f)), uint2(0x0001, 0x57B6)); + TestUtils.AreEqual(f32tof16(float2(65504.0f, 65520.0f)), uint2(0x7BFF, 0x7C00)); + TestUtils.AreEqual(f32tof16(float2(float.PositiveInfinity, float.NaN)), uint2(0x7C00, 0xFE00)); + + TestUtils.AreEqual(f32tof16(float2(-2.98e-08f, -5.96046448e-08f)), uint2(0x8000, 0x8001)); + TestUtils.AreEqual(f32tof16(float2(-123.4f, -65504.0f)), uint2(0xD7B6, 0xFBFF)); + TestUtils.AreEqual(f32tof16(float2(-65520.0f, float.NegativeInfinity)), uint2(0xFC00, 0xFC00)); + TestUtils.AreEqual(f32tof16(float2(float.NegativeInfinity, 0.0f)), uint2(0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void f32tof16_float2_signed_zero() + { + TestUtils.AreEqual(f32tof16(float2(-0.0f, -0.0f)), uint2(0x8000, 0x8000)); + } + + [TestCompiler] + public static void f32tof16_float3() + { + TestUtils.AreEqual(f32tof16(float3(0.0f, 2.98e-08f, 5.96046448e-08f)), uint3(0x0000, 0x0000, 0x0001)); + TestUtils.AreEqual(f32tof16(float3(123.4f, 65504.0f, 65520.0f)), uint3(0x57B6, 0x7BFF, 0x7C00)); + TestUtils.AreEqual(f32tof16(float3(float.PositiveInfinity, float.NaN, -2.98e-08f)), uint3(0x7C00, 0xFE00, 0x8000)); + + TestUtils.AreEqual(f32tof16(float3(-5.96046448e-08f, -123.4f, -65504.0f)), uint3(0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(f32tof16(float3(-65520.0f, float.NegativeInfinity, 0.0f)), uint3(0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void f32tof16_float3_signed_zero() + { + TestUtils.AreEqual(f32tof16(float3(-0.0f, -0.0f, -0.0f)), uint3(0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void f32tof16_float4() + { + TestUtils.AreEqual(f32tof16(float4(0.0f, 2.98e-08f, 5.96046448e-08f, 123.4f)), uint4(0x0000, 0x0000, 0x0001, 0x57B6)); + TestUtils.AreEqual(f32tof16(float4(65504.0f, 65520.0f, float.PositiveInfinity, float.NaN)), uint4(0x7BFF, 0x7C00, 0x7C00, 0xFE00)); + TestUtils.AreEqual(f32tof16(float4(-2.98e-08f, -5.96046448e-08f, -123.4f, -65504.0f)), uint4(0x8000, 0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(f32tof16(float4(-65520.0f, float.NegativeInfinity, float.NegativeInfinity, 0.0f)), uint4(0xFC00, 0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void f32tof16_float4_signed_zero() + { + TestUtils.AreEqual(f32tof16(float4(-0.0f, -0.0f, -0.0f, -0.0f)), uint4(0x8000, 0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void reflect_float2() + { + TestUtils.AreEqual(reflect(float2(1.2f, 3.6f), float2(1.5f, -1.3f)), float2(9.84f, -3.888f), 8, false); + TestUtils.AreEqual(reflect(float2(-1.2f, 3.6f), float2(-1.5f, -1.3f)), float2(-9.84f, -3.888f), 8, false); + TestUtils.AreEqual(reflect(float2(-1.2f, 3.6f), float2(0.0f, 0.0f)), float2(-1.2f, 3.6f)); + TestUtils.AreEqual(reflect(float2(0.0f, 0.0f), float2(-1.5f, -1.3f)), float2(0.0f, 0.0f), 8, false); + } + + [TestCompiler] + public static void reflect_float3() + { + TestUtils.AreEqual(reflect(float3(1.2f, 3.6f, -2.8f), float3(1.5f, -1.3f, 3.1f)), float3(35.88f, -26.456f, 68.872f), 8, false); + TestUtils.AreEqual(reflect(float3(-1.2f, 3.6f, -2.8f), float3(-1.5f, -1.3f, 3.1f)), float3(-35.88f, -26.456f, 68.872f), 8, false); + TestUtils.AreEqual(reflect(float3(-1.2f, 3.6f, -2.8f), float3(0.0f, 0.0f, 0.0f)), float3(-1.2f, 3.6f, -2.8f)); + TestUtils.AreEqual(reflect(float3(0.0f, 0.0f, 0.0f), float3(-1.5f, -1.3f, 3.1f)), float3(0.0f, 0.0f, 0.0f), 8, false); + } + + [TestCompiler] + public static void reflect_float4() + { + TestUtils.AreEqual(reflect(float4(1.2f, 3.6f, -2.8f, 0.3f), float4(1.5f, -1.3f, 3.1f, -0.7f)), float4(36.51f, -27.002f, 70.174f, -16.178f), 8, false); + TestUtils.AreEqual(reflect(float4(-1.2f, 3.6f, -2.8f, 0.3f), float4(-1.5f, -1.3f, 3.1f, -0.7f)), float4(-36.51f, -27.002f, 70.174f, -16.178f), 8, false); + TestUtils.AreEqual(reflect(float4(-1.2f, 3.6f, -2.8f, 0.3f), float4(0.0f, 0.0f, 0.0f, 0.0f)), float4(-1.2f, 3.6f, -2.8f, 0.3f)); + TestUtils.AreEqual(reflect(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(-1.5f, -1.3f, 3.1f, -0.7f)), float4(0.0f, 0.0f, 0.0f, 0.0f), 8, false); + } + + + [TestCompiler] + public static void reflect_double2() + { + TestUtils.AreEqual(reflect(double2(1.2, 3.6), double2(1.5, -1.3)), double2(9.84, -3.888), 8, false); + TestUtils.AreEqual(reflect(double2(-1.2, 3.6), double2(-1.5, -1.3)), double2(-9.84, -3.888), 8, false); + TestUtils.AreEqual(reflect(double2(-1.2, 3.6), double2(0.0, 0.0)), double2(-1.2, 3.6)); + TestUtils.AreEqual(reflect(double2(0.0, 0.0), double2(-1.5, -1.3)), double2(0.0, 0.0), 8, false); + } + + [TestCompiler] + public static void reflect_double3() + { + TestUtils.AreEqual(reflect(double3(1.2, 3.6, -2.8), double3(1.5, -1.3, 3.1)), double3(35.88, -26.456, 68.872), 8, false); + TestUtils.AreEqual(reflect(double3(-1.2, 3.6, -2.8), double3(-1.5, -1.3, 3.1)), double3(-35.88, -26.456, 68.872), 8, false); + TestUtils.AreEqual(reflect(double3(-1.2, 3.6, -2.8), double3(0.0, 0.0, 0.0)), double3(-1.2, 3.6, -2.8)); + TestUtils.AreEqual(reflect(double3(0.0, 0.0, 0.0), double3(-1.5f, -1.3, 3.1)), double3(0.0, 0.0, 0.0), 8, false); + } + + [TestCompiler] + public static void reflect_double4() + { + TestUtils.AreEqual(reflect(double4(1.2, 3.6, -2.8, 0.3), double4(1.5, -1.3, 3.1, -0.7)), double4(36.51, -27.002, 70.174, -16.178), 8, false); + TestUtils.AreEqual(reflect(double4(-1.2, 3.6, -2.8, 0.3), double4(-1.5, -1.3, 3.1, -0.7)), double4(-36.51, -27.002, 70.174, -16.178), 8, false); + TestUtils.AreEqual(reflect(double4(-1.2, 3.6, -2.8, 0.3), double4(0.0, 0.0, 0.0, 0.0)), double4(-1.2, 3.6, -2.8, 0.3)); + TestUtils.AreEqual(reflect(double4(0.0, 0.0, 0.0, 0.0), double4(-1.5, -1.3, 3.1, -0.7)), double4(0.0, 0.0, 0.0, 0.0), 8, false); + } + + + [TestCompiler] + public static void refract_float2() + { + TestUtils.AreEqual(refract(float2(0.316228f, 0.948683f), float2(0.755689f, -0.654931f), 0.5f), float2(-0.3676186f, 0.9299768f), 8, false); + TestUtils.AreEqual(refract(float2(0.316228f, 0.948683f), float2(0.755689f, -0.654931f), 1.05f), float2(0.4523711f, 0.8918296f), 8, false); + TestUtils.AreEqual(refract(float2(0.316228f, 0.948683f), float2(0.755689f, -0.654931f), 1.5f), float2(0.0f, 0.0f)); + } + + [TestCompiler] + public static void refract_float3() + { + TestUtils.AreEqual(refract(float3(0.288375f, 0.865125f, -0.410365f), float3(0.662147f, -0.573861f, 0.481919f), 0.5f), float3(-0.2863437f, 0.8056898f, -0.5185286f), 8, false); + TestUtils.AreEqual(refract(float3(0.288375f, 0.865125f, -0.410365f), float3(0.662147f, -0.573861f, 0.481919f), 1.05f), float3(0.3743219f, 0.8463902f, -0.3788242f), 8, false); + TestUtils.AreEqual(refract(float3(0.288375f, 0.865125f, -0.410365f), float3(0.662147f, -0.573861f, 0.481919f), 1.5f), float3(0.0f, 0.0f, 0.0f)); + } + + [TestCompiler] + public static void refract_float4() + { + TestUtils.AreEqual(refract(float4(0.278154f, 0.834461f, -0.39582f, -0.26388f), float4(0.652208f, -0.565247f, 0.474685f, -0.1726139f), 0.5f), float4(-0.302029191645545f, 0.799522577847971f, -0.518952508802814f, -0.015196476378571f), 16, false); + TestUtils.AreEqual(refract(float4(0.278154f, 0.834461f, -0.39582f, -0.26388f), float4(0.652208f, -0.565247f, 0.474685f, -0.172613f), 1.05f), float4(0.378159678850401f, 0.801565792862319f, -0.352947832589293f, -0.299860642333894f), 16, false); + TestUtils.AreEqual(refract(float4(0.278154f, 0.834461f, -0.39582f, -0.26388f), float4(0.652208f, -0.565247f, 0.474685f, -0.172613f), 1.5f), float4(0.0f, 0.0f, 0.0f, 0.0f)); + } + + + [TestCompiler] + public static void refract_double2() + { + TestUtils.AreEqual(refract(double2(0.316228, 0.948683), double2(0.755689, -0.654931), 0.5), double2(-0.367618540673032, 0.929976739623085), 8, false); + TestUtils.AreEqual(refract(double2(0.316228, 0.948683), double2(0.755689, -0.654931), 1.05), double2(0.452371226326029, 0.891829482258995), 8, false); + TestUtils.AreEqual(refract(double2(0.316228, 0.948683), double2(0.755689, -0.654931), 1.5), double2(0.0, 0.0)); + } + + [TestCompiler] + public static void refract_double3() + { + TestUtils.AreEqual(refract(double3(0.288375, 0.865125, -0.410365), double3(0.662147, -0.573861, 0.481919), 0.5), double3(-0.286343746291412, 0.805689753507206, -0.518528611485079), 8, false); + TestUtils.AreEqual(refract(double3(0.288375, 0.865125, -0.410365), double3(0.662147, -0.573861, 0.481919), 1.05), double3(0.374321889019825, 0.846390167376268, -0.378824161567529), 8, false); + TestUtils.AreEqual(refract(double3(0.288375, 0.865125, -0.410365), double3(0.662147, -0.573861, 0.481919), 1.5), double3(0.0, 0.0, 0.0)); + } + + [TestCompiler] + public static void refract_double4() + { + TestUtils.AreEqual(refract(double4(0.278154, 0.834461, -0.39582, -0.26388), double4(0.652208, -0.565247, 0.474685, -0.1726139), 0.5), double4(-0.302029191645545, 0.799522577847971, -0.518952508802814, -0.015196476378571), 16, false); + TestUtils.AreEqual(refract(double4(0.278154, 0.834461, -0.39582, -0.26388), double4(0.652208, -0.565247, 0.474685, -0.172613), 1.05), double4(0.378159678850401, 0.801565792862319, -0.352947832589293, -0.299860642333894), 16, false); + TestUtils.AreEqual(refract(double4(0.278154, 0.834461, -0.39582, -0.26388), double4(0.652208, -0.565247, 0.474685, -0.172613), 1.5), double4(0.0, 0.0, 0.0, 0.0)); + } + + [TestCompiler] + public static void sincos_float() + { + float s, c; + + sincos(-1000000f, out s, out c); + TestUtils.AreEqual(s, 0.3499935f, 1, false); + TestUtils.AreEqual(c, 0.936752141f, 8, false); + + sincos(-1.2f, out s, out c); + TestUtils.AreEqual(s, -0.9320391f, 1, false); + TestUtils.AreEqual(c, 0.362357765f, 8, false); + + sincos(0f, out s, out c); + TestUtils.AreEqual(s, 0f, 1, false); + TestUtils.AreEqual(c, 1f, 8, false); + + sincos(1.2f, out s, out c); + TestUtils.AreEqual(s, 0.9320391f, 1, false); + TestUtils.AreEqual(c, 0.362357765f, 8, false); + + sincos(1000000f, out s, out c); + TestUtils.AreEqual(s, -0.3499935f, 1, false); + TestUtils.AreEqual(c, 0.936752141f, 8, false); + + sincos(float.NegativeInfinity, out s, out c); + TestUtils.AreEqual(s, float.NaN, 1, false); + TestUtils.AreEqual(c, float.NaN, 8, false); + + sincos(float.NaN, out s, out c); + TestUtils.AreEqual(s, float.NaN, 1, false); + TestUtils.AreEqual(c, float.NaN, 8, false); + + sincos(float.PositiveInfinity, out s, out c); + TestUtils.AreEqual(s, float.NaN, 1, false); + TestUtils.AreEqual(c, float.NaN, 8, false); + } + + + [TestCompiler] + public static void sincos_float2() + { + float2 s, c; + + sincos(float2(-1000000f, -1.2f), out s, out c); + TestUtils.AreEqual(s, float2(0.3499935f, -0.9320391f), 1, false); + TestUtils.AreEqual(c, float2(0.936752141f, 0.362357765f), 8, false); + + sincos(float2(0f, 1.2f), out s, out c); + TestUtils.AreEqual(s, float2(0f, 0.9320391f), 1, false); + TestUtils.AreEqual(c, float2(1f, 0.362357765f), 8, false); + + sincos(float2(1000000f, float.NegativeInfinity), out s, out c); + TestUtils.AreEqual(s, float2(-0.3499935f, float.NaN), 1, false); + TestUtils.AreEqual(c, float2(0.936752141f, float.NaN), 8, false); + + sincos(float2(float.NaN, float.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(c, float2(float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void sincos_float3() + { + float3 s, c; + + sincos(float3(-1000000f, -1.2f, 0f), out s, out c); + TestUtils.AreEqual(s, float3(0.3499935f, -0.9320391f, 0f), 1, false); + TestUtils.AreEqual(c, float3(0.936752141f, 0.362357765f, 1f), 8, false); + + sincos(float3(1.2f, 1000000f, float.NegativeInfinity), out s, out c); + TestUtils.AreEqual(s, float3(0.9320391f, -0.3499935f, float.NaN), 1, false); + TestUtils.AreEqual(c, float3(0.362357765f, 0.936752141f, float.NaN), 8, false); + + sincos(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(c, float3(float.NaN, float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void sincos_float4() + { + float4 s, c; + + sincos(float4(-1000000f, -1.2f, 0f, 1.2f), out s, out c); + TestUtils.AreEqual(s, float4(0.3499935f, -0.9320391f, 0f, 0.9320391f), 1, false); + TestUtils.AreEqual(c, float4(0.936752141f, 0.362357765f, 1f, 0.362357765f), 8, false); + + sincos(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, float4(-0.3499935f, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(c, float4(0.936752141f, float.NaN, float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void sincos_double() + { + double s, c; + sincos(-1000000.0, out s, out c); + TestUtils.AreEqual(s, 0.34999350217129294, 32, false); + TestUtils.AreEqual(c, 0.93675212753314474, 32, false); + + sincos(-1.2, out s, out c); + TestUtils.AreEqual(s, -0.9320390859672264, 32, false); + TestUtils.AreEqual(c, 0.36235775447667357, 32, false); + + sincos(0.0, out s, out c); + TestUtils.AreEqual(s, 0.0, 32, false); + TestUtils.AreEqual(c, 1.0, 32, false); + + sincos(1.2, out s, out c); + TestUtils.AreEqual(s, 0.9320390859672264, 32, false); + TestUtils.AreEqual(c, 0.36235775447667357, 32, false); + + sincos(1000000.0, out s, out c); + TestUtils.AreEqual(s, -0.34999350217129294, 32, false); + TestUtils.AreEqual(c, 0.93675212753314474, 32, false); + + sincos(double.NegativeInfinity, out s, out c); + TestUtils.AreEqual(s, double.NaN, 32, false); + TestUtils.AreEqual(c, double.NaN, 32, false); + + sincos(double.NaN, out s, out c); + TestUtils.AreEqual(s, double.NaN, 32, false); + TestUtils.AreEqual(c, double.NaN, 32, false); + + sincos(double.NaN, out s, out c); + TestUtils.AreEqual(s, double.NaN, 32, false); + TestUtils.AreEqual(c, double.NaN, 32, false); + } + + [TestCompiler] + public static void sincos_double2() + { + double2 s, c; + sincos(double2(-1000000.0, -1.2), out s, out c); + TestUtils.AreEqual(s, double2(0.34999350217129294, -0.9320390859672264), 32, false); + TestUtils.AreEqual(c, double2(0.93675212753314474, 0.36235775447667357), 32, false); + + sincos(double2(0.0, 1.2), out s, out c); + TestUtils.AreEqual(s, double2(0.0, 0.9320390859672264), 32, false); + TestUtils.AreEqual(c, double2(1.0, 0.36235775447667357), 32, false); + + sincos(double2(1000000.0, double.NegativeInfinity), out s, out c); + TestUtils.AreEqual(s, double2(-0.34999350217129294, double.NaN), 32, false); + TestUtils.AreEqual(c, double2(0.93675212753314474, double.NaN), 32, false); + + sincos(double2(double.NaN, double.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, double2(double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(c, double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sincos_double3() + { + double3 s, c; + + sincos(double3(-1000000.0, -1.2, 0.0), out s, out c); + TestUtils.AreEqual(s, double3(0.34999350217129294, -0.9320390859672264, 0.0), 32, false); + TestUtils.AreEqual(c, double3(0.93675212753314474, 0.36235775447667357, 1.0), 32, false); + + sincos(double3(1.2, 1000000.0, double.NegativeInfinity), out s, out c); + TestUtils.AreEqual(s, double3(0.9320390859672264, -0.34999350217129294, double.NaN), 32, false); + TestUtils.AreEqual(c, double3(0.36235775447667357, 0.93675212753314474, double.NaN), 32, false); + + sincos(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, double3(double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(c, double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sincos_double4() + { + double4 s, c; + + sincos(double4(-1000000.0, -1.2, 0.0, 1.2), out s, out c); + TestUtils.AreEqual(s, double4(0.34999350217129294, -0.9320390859672264, 0.0, 0.9320390859672264), 32, false); + TestUtils.AreEqual(c, double4(0.93675212753314474, 0.36235775447667357, 1.0, 0.36235775447667357), 32, false); + + sincos(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, double4(-0.34999350217129294, double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(c, double4(0.93675212753314474, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void select_int() + { + TestUtils.AreEqual(select(-123456789, 987654321, false), -123456789); + TestUtils.AreEqual(select(-123456789, 987654321, true), 987654321); + } + + [TestCompiler] + public static void select_int2() + { + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), false), int2(-123456789, -123456790)); + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), true), int2(987654321, 987654322)); + + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), bool2(false, false)), int2(-123456789, -123456790)); + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), bool2(false, true)), int2(-123456789, 987654322)); + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), bool2(true, false)), int2(987654321, -123456790)); + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), bool2(true, true)), int2(987654321, 987654322)); + } + + [TestCompiler] + public static void select_int3() + { + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), false), int3(-123456789, -123456790, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), true), int3(987654321, 987654322, 987654323)); + + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(false, false, false)), int3(-123456789, -123456790, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(false, false, true)), int3(-123456789, -123456790, 987654323)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(false, true, false)), int3(-123456789, 987654322, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(false, true, true)), int3(-123456789, 987654322, 987654323)); + + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(true, false, false)), int3(987654321, -123456790, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(true, false, true)), int3(987654321, -123456790, 987654323)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(true, true, false)), int3(987654321, 987654322, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(true, true, true)), int3(987654321, 987654322, 987654323)); + } + + [TestCompiler] + public static void select_int4() + { + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), false), int4(-123456789, -123456790, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), true), int4(987654321, 987654322, 987654323, 987654324)); + + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, false, false, false)), int4(-123456789, -123456790, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, false, false, true)), int4(-123456789, -123456790, -123456791, 987654324)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, false, true, false)), int4(-123456789, -123456790, 987654323, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, false, true, true)), int4(-123456789, -123456790, 987654323, 987654324)); + + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, true, false, false)), int4(-123456789, 987654322, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, true, false, true)), int4(-123456789, 987654322, -123456791, 987654324)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, true, true, false)), int4(-123456789, 987654322, 987654323, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, true, true, true)), int4(-123456789, 987654322, 987654323, 987654324)); + + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, false, false, false)), int4(987654321, -123456790, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, false, false, true)), int4(987654321, -123456790, -123456791, 987654324)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, false, true, false)), int4(987654321, -123456790, 987654323, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, false, true, true)), int4(987654321, -123456790, 987654323, 987654324)); + + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, true, false, false)), int4(987654321, 987654322, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, true, false, true)), int4(987654321, 987654322, -123456791, 987654324)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, true, true, false)), int4(987654321, 987654322, 987654323, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, true, true, true)), int4(987654321, 987654322, 987654323, 987654324)); + } + + [TestCompiler] + public static void select_uint() + { + TestUtils.AreEqual(select(123456789u, 987654321u, false), 123456789u); + TestUtils.AreEqual(select(123456789u, 987654321u, true), 987654321u); + } + + [TestCompiler] + public static void select_uint2() + { + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), false), uint2(123456789u, 123456790u)); + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), true), uint2(987654321u, 987654322)); + + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), bool2(false, false)), uint2(123456789u, 123456790u)); + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), bool2(false, true)), uint2(123456789u, 987654322u)); + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), bool2(true, false)), uint2(987654321u, 123456790u)); + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), bool2(true, true)), uint2(987654321u, 987654322u)); + } + + [TestCompiler] + public static void select_uint3() + { + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), false), uint3(123456789u, 123456790u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), true), uint3(987654321u, 987654322u, 987654323)); + + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(false, false, false)), uint3(123456789u, 123456790u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(false, false, true)), uint3(123456789u, 123456790u, 987654323u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(false, true, false)), uint3(123456789u, 987654322u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(false, true, true)), uint3(123456789u, 987654322u, 987654323u)); + + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(true, false, false)), uint3(987654321u, 123456790u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(true, false, true)), uint3(987654321u, 123456790u, 987654323u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(true, true, false)), uint3(987654321u, 987654322u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(true, true, true)), uint3(987654321u, 987654322u, 987654323u)); + } + + [TestCompiler] + public static void select_uint4() + { + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), false), uint4(123456789u, 123456790u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), true), uint4(987654321u, 987654322u, 987654323u, 987654324u)); + + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, false, false, false)), uint4(123456789u, 123456790u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, false, false, true)), uint4(123456789u, 123456790u, 123456791u, 987654324u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, false, true, false)), uint4(123456789u, 123456790u, 987654323u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, false, true, true)), uint4(123456789u, 123456790u, 987654323u, 987654324u)); + + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, true, false, false)), uint4(123456789u, 987654322u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, true, false, true)), uint4(123456789u, 987654322u, 123456791u, 987654324u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, true, true, false)), uint4(123456789u, 987654322u, 987654323u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, true, true, true)), uint4(123456789u, 987654322u, 987654323u, 987654324u)); + + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, false, false, false)), uint4(987654321u, 123456790u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, false, false, true)), uint4(987654321u, 123456790u, 123456791u, 987654324u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, false, true, false)), uint4(987654321u, 123456790u, 987654323u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, false, true, true)), uint4(987654321u, 123456790u, 987654323u, 987654324u)); + + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, true, false, false)), uint4(987654321u, 987654322u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, true, false, true)), uint4(987654321u, 987654322u, 123456791u, 987654324u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, true, true, false)), uint4(987654321u, 987654322u, 987654323u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, true, true, true)), uint4(987654321u, 987654322u, 987654323u, 987654324u)); + } + + [TestCompiler] + public static void select_long() + { + TestUtils.AreEqual(select(-12345678910111314L, 987654321011121314L, false), -12345678910111314L); + TestUtils.AreEqual(select(-12345678910111314L, 987654321011121314L, true), 987654321011121314L); + } + + [TestCompiler] + public static void select_ulong() + { + TestUtils.AreEqual(select(12345678910111314UL, 987654321011121314UL, false), 12345678910111314UL); + TestUtils.AreEqual(select(12345678910111314UL, 987654321011121314UL, true), 987654321011121314UL); + } + + + [TestCompiler] + public static void select_float() + { + TestUtils.AreEqual(select(-1234.5f, 9876.25f, false), -1234.5f); + TestUtils.AreEqual(select(-1234.5f, 9876.25f, true), 9876.25f); + } + + [TestCompiler] + public static void select_float2() + { + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), false), float2(-1234.5f, -1235.5f)); + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), true), float2(9876.25f, 9877.25f)); + + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), bool2(false, false)), float2(-1234.5f, -1235.5f)); + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), bool2(false, true)), float2(-1234.5f, 9877.25f)); + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), bool2(true, false)), float2(9876.25f, -1235.5f)); + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), bool2(true, true)), float2(9876.25f, 9877.25f)); + } + + [TestCompiler] + public static void select_float3() + { + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), false), float3(-1234.5f, -1235.5f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), true), float3(9876.25f, 9877.25f, 9878.25f)); + + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(false, false, false)), float3(-1234.5f, -1235.5f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(false, false, true)), float3(-1234.5f, -1235.5f, 9878.25f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(false, true, false)), float3(-1234.5f, 9877.25f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(false, true, true)), float3(-1234.5f, 9877.25f, 9878.25f)); + + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(true, false, false)), float3(9876.25f, -1235.5f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(true, false, true)), float3(9876.25f, -1235.5f, 9878.25f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(true, true, false)), float3(9876.25f, 9877.25f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(true, true, true)), float3(9876.25f, 9877.25f, 9878.25f)); + } + + [TestCompiler] + public static void select_float4() + { + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), false), float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), true), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f)); + + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, false, false, false)), float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, false, false, true)), float4(-1234.5f, -1235.5f, -1236.5f, 9879.25f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, false, true, false)), float4(-1234.5f, -1235.5f, 9878.25f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, false, true, true)), float4(-1234.5f, -1235.5f, 9878.25f, 9879.25f)); + + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, true, false, false)), float4(-1234.5f, 9877.25f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, true, false, true)), float4(-1234.5f, 9877.25f, -1236.5f, 9879.25f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, true, true, false)), float4(-1234.5f, 9877.25f, 9878.25f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, true, true, true)), float4(-1234.5f, 9877.25f, 9878.25f, 9879.25f)); + + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, false, false, false)), float4(9876.25f, -1235.5f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, false, false, true)), float4(9876.25f, -1235.5f, -1236.5f, 9879.25f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, false, true, false)), float4(9876.25f, -1235.5f, 9878.25f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, false, true, true)), float4(9876.25f, -1235.5f, 9878.25f, 9879.25f)); + + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, true, false, false)), float4(9876.25f, 9877.25f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, true, false, true)), float4(9876.25f, 9877.25f, -1236.5f, 9879.25f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, true, true, false)), float4(9876.25f, 9877.25f, 9878.25f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, true, true, true)), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f)); + } + + + [TestCompiler] + public static void select_double() + { + TestUtils.AreEqual(select(-1234.5, 9876.25, false), -1234.5); + TestUtils.AreEqual(select(-1234.5, 9876.25, true), 9876.25); + } + + [TestCompiler] + public static void select_double2() + { + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), false), double2(-1234.5, -1235.5)); + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), true), double2(9876.25, 9877.25)); + + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), bool2(false, false)), double2(-1234.5, -1235.5)); + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), bool2(false, true)), double2(-1234.5, 9877.25)); + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), bool2(true, false)), double2(9876.25, -1235.5)); + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), bool2(true, true)), double2(9876.25, 9877.25)); + } + + [TestCompiler] + public static void select_double3() + { + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), false), double3(-1234.5, -1235.5, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), true), double3(9876.25, 9877.25, 9878.25)); + + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(false, false, false)), double3(-1234.5, -1235.5, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(false, false, true)), double3(-1234.5, -1235.5, 9878.25)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(false, true, false)), double3(-1234.5, 9877.25, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(false, true, true)), double3(-1234.5, 9877.25, 9878.25)); + + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(true, false, false)), double3(9876.25, -1235.5, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(true, false, true)), double3(9876.25, -1235.5, 9878.25)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(true, true, false)), double3(9876.25, 9877.25, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(true, true, true)), double3(9876.25, 9877.25, 9878.25)); + } + + [TestCompiler] + public static void select_double4() + { + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), false), double4(-1234.5, -1235.5, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), true), double4(9876.25, 9877.25, 9878.25, 9879.25)); + + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, false, false, false)), double4(-1234.5, -1235.5, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, false, false, true)), double4(-1234.5, -1235.5, -1236.5, 9879.25)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, false, true, false)), double4(-1234.5, -1235.5, 9878.25, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, false, true, true)), double4(-1234.5, -1235.5, 9878.25, 9879.25)); + + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, true, false, false)), double4(-1234.5, 9877.25, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, true, false, true)), double4(-1234.5, 9877.25, -1236.5, 9879.25)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, true, true, false)), double4(-1234.5, 9877.25, 9878.25, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, true, true, true)), double4(-1234.5, 9877.25, 9878.25, 9879.25)); + + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, false, false, false)), double4(9876.25, -1235.5, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, false, false, true)), double4(9876.25, -1235.5, -1236.5, 9879.25)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, false, true, false)), double4(9876.25, -1235.5, 9878.25, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, false, true, true)), double4(9876.25, -1235.5, 9878.25, 9879.25)); + + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, true, false, false)), double4(9876.25, 9877.25, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, true, false, true)), double4(9876.25, 9877.25, -1236.5, 9879.25)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, true, true, false)), double4(9876.25, 9877.25, 9878.25, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, true, true, true)), double4(9876.25, 9877.25, 9878.25, 9879.25)); + } + + + [TestCompiler] + public static void dot_int() + { + TestUtils.AreEqual(dot(7, 19), 133); + TestUtils.AreEqual(dot(-7, 19), -133); + TestUtils.AreEqual(dot(61031, 41312), -1773654624); + TestUtils.AreEqual(dot(61031, 81312), 667585376); + } + + [TestCompiler] + public static void dot_int2() + { + TestUtils.AreEqual(dot(int2(7, 9), int2(19, 21)), 322); + TestUtils.AreEqual(dot(int2(-7, 9), int2(19, -21)), -322); + TestUtils.AreEqual(dot(int2(61031, 12534), int2(41312, 5312)), -1707074016); + TestUtils.AreEqual(dot(int2(61031, -12534), int2(-41312, -5312)), 1840235232); + } + + [TestCompiler] + public static void dot_int3() + { + TestUtils.AreEqual(dot(int3(7, 9, 13), int3(19, 21, 20)), 582); + TestUtils.AreEqual(dot(int3(-7, 9, 13), int3(19, -21, -20)), -582); + TestUtils.AreEqual(dot(int3(61031, 12534, 9211), int3(41312, 5312, 22123)), -1503299063); + TestUtils.AreEqual(dot(int3(61031, -12534, 9211), int3(-41312, -5312, -22123)), 1636460279); + } + + [TestCompiler] + public static void dot_int4() + { + TestUtils.AreEqual(dot(int4(7, 9, 13, 17), int4(19, 21, 20, 24)), 990); + TestUtils.AreEqual(dot(int4(-7, 9, 13, -17), int4(19, -21, -20, 24)), -990); + TestUtils.AreEqual(dot(int4(61031, 12534, 9211, 33122), int4(41312, 5312, 22123, 65423)), 663641543); + TestUtils.AreEqual(dot(int4(61031, -12534, 9211, 33122), int4(-41312, -5312, -22123, 65423)), -491566411); + } + + + [TestCompiler] + public static void dot_uint() + { + TestUtils.AreEqual(dot(7u, 19u), 133u); + TestUtils.AreEqual(dot(61031u, 81312u), 667585376u); + } + + [TestCompiler] + public static void dot_uint2() + { + TestUtils.AreEqual(dot(uint2(7u, 9u), uint2(19u, 21u)), 322); + TestUtils.AreEqual(dot(uint2(61031u, 12534u), uint2(81312u, 5312u)), 734165984u); + } + + [TestCompiler] + public static void dot_uint3() + { + TestUtils.AreEqual(dot(uint3(7u, 9u, 13u), uint3(19u, 21u, 20u)), 582u); + TestUtils.AreEqual(dot(uint3(61031u, 12534u, 9211u), uint3(81312u, 5312u, 22123u)), 937940937u); + } + + [TestCompiler] + public static void dot_uint4() + { + TestUtils.AreEqual(dot(uint4(7u, 9u, 13u, 17u), uint4(19u, 21u, 20u, 24u)), 990u); + TestUtils.AreEqual(dot(uint4(61031u, 12534u, 9211u, 33122u), uint4(81312u, 5312u, 22123u, 65423u)), 3104881543u); + } + + + [TestCompiler] + public static void dot_float() + { + TestUtils.AreEqual(dot(1.2f, 6.1f), 7.32f, 1, false); + TestUtils.AreEqual(dot(1.2f, -6.1f), -7.32f, 1, false); + TestUtils.AreEqual(dot(1.2e19f, 6.1e18f), 7.32e37f, 1, false); + TestUtils.AreEqual(dot(-1.2e19f, 6.1e18f), -7.32e37f, 1, false); + TestUtils.AreEqual(dot(1.2e19f, 6.1e19f), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(dot(1.2e19f, -6.1e19f), float.NegativeInfinity, 0, false); + } + + [TestCompiler] + public static void dot_float2() + { + TestUtils.AreEqual(dot(float2(1.2f, 5.5f), float2(6.1f, 9.2f)), 57.92f, 1, false); + TestUtils.AreEqual(dot(float2(-1.2f, 5.5f), float2(6.1f, -9.2f)), -57.92f, 1, false); + TestUtils.AreEqual(dot(float2(1.2e18f, 5.5e18f), float2(6.1e18f, 9.2e18f)), 5.792e37f, 1, false); + TestUtils.AreEqual(dot(float2(-1.2e18f, 5.5e18f), float2(6.1e18f, -9.2e18f)), -5.792e37f, 1, false); + TestUtils.AreEqual(dot(float2(1.2e18f, 5.5e18f), float2(6.1e19f, 9.2e19f)), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(float2(-1.2e18f, 5.5e18f), float2(6.1e19f, -9.2e19f)), float.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void dot_float3() + { + TestUtils.AreEqual(dot(float3(1.2f, 5.5f, 3.4f), float3(6.1f, 9.2f, 2.7f)), 67.1f, 8, false); + TestUtils.AreEqual(dot(float3(-1.2f, 5.5f, -3.4f), float3(6.1f, -9.2f, 2.7f)), -67.1f, 8, false); + TestUtils.AreEqual(dot(float3(1.2e18f, 5.5e18f, 3.4e18f), float3(6.1e18f, 9.2e18f, 2.7e18f)), 6.71e37f, 1, false); + TestUtils.AreEqual(dot(float3(-1.2e18f, 5.5e18f, 3.4e18f), float3(6.1e18f, -9.2e18f, -2.7e18f)), -6.71e37f, 1, false); + TestUtils.AreEqual(dot(float3(1.2e18f, 5.5e18f, 3.4e18f), float3(6.1e19f, 9.2e19f, 2.7e19f)), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(float3(-1.2e18f, 5.5e18f, 3.4e18f), float3(6.1e19f, -9.2e19f, -2.7e19f)), float.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void dot_float4() + { + TestUtils.AreEqual(dot(float4(1.2f, 5.5f, 3.4f, 4.9f), float4(6.1f, 9.2f, 2.7f, 0.3f)), 68.57f, 8, false); + TestUtils.AreEqual(dot(float4(-1.2f, 5.5f, -3.4f, 4.9f), float4(6.1f, -9.2f, 2.7f, -0.3f)), -68.57f, 8, false); + TestUtils.AreEqual(dot(float4(1.2e18f, 5.5e18f, 3.4e18f, 4.9e18f), float4(6.1e18f, 9.2e18f, 2.7e18f, 3e17f)), 6.857e37f, 1, false); + TestUtils.AreEqual(dot(float4(-1.2e18f, 5.5e18f, 3.4e18f, -4.9e18f), float4(6.1e18f, -9.2e18f, -2.7e18f, 3e17f)), -6.857e37f, 1, false); + TestUtils.AreEqual(dot(float4(1.2e18f, 5.5e18f, 3.4e18f, 4.9e18f), float4(6.1e19f, 9.2e19f, 2.7e19f, 3e18f)), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(float4(-1.2e18f, 5.5e18f, 3.4e18f, -4.9e18f), float4(6.1e19f, -9.2e19f, -2.7e19f, 3e18f)), float.NegativeInfinity, 1, false); + } + + + public static void dot_double() + { + TestUtils.AreEqual(dot(1.2, 6.1), 7.32, 1, false); + TestUtils.AreEqual(dot(1.2, -6.1), -7.32, 1, false); + TestUtils.AreEqual(dot(1.2e19, 6.1e18), 7.32e37, 1, false); + TestUtils.AreEqual(dot(-1.2e19, 6.1e18), -7.32e37, 1, false); + TestUtils.AreEqual(dot(1.2e19, 6.1e19), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(dot(1.2e19, -6.1e19), double.NegativeInfinity, 0, false); + } + + [TestCompiler] + public static void dot_double2() + { + TestUtils.AreEqual(dot(double2(1.2, 5.5), double2(6.1, 9.2)), 57.92, 1, false); + TestUtils.AreEqual(dot(double2(-1.2, 5.5), double2(6.1, -9.2)), -57.92, 1, false); + TestUtils.AreEqual(dot(double2(1.2e153, 5.5e153), double2(6.1e153, 9.2e153)), 5.792e307, 1, false); + TestUtils.AreEqual(dot(double2(-1.2e153, 5.5e153), double2(6.1e153, -9.2e153)), -5.792e307, 1, false); + TestUtils.AreEqual(dot(double2(1.2e153, 5.5e153), double2(6.1e154, 9.2e154)), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(double2(-1.2e153, 5.5e153), double2(6.1e154, -9.2e154)), double.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void dot_double3() + { + TestUtils.AreEqual(dot(double3(1.2, 5.5, 3.4), double3(6.1, 9.2, 2.7)), 67.1, 8, false); + TestUtils.AreEqual(dot(double3(-1.2, 5.5, -3.4), double3(6.1, -9.2, 2.7)), -67.1, 8, false); + TestUtils.AreEqual(dot(double3(1.2e153, 5.5e153, 3.4e153), double3(6.1e153, 9.2e153, 2.7e153)), 6.71e307, 1, false); + TestUtils.AreEqual(dot(double3(-1.2e153, 5.5e153, 3.4e153), double3(6.1e153, -9.2e153, -2.7e153)), -6.71e307, 1, false); + TestUtils.AreEqual(dot(double3(1.2e153, 5.5e153, 3.4e153), double3(6.1e154, 9.2e154, 2.7e154)), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(double3(-1.2e153, 5.5e153, 3.4e153), double3(6.1e154, -9.2e154, -2.7e154)), double.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void dot_double4() + { + TestUtils.AreEqual(dot(double4(1.2, 5.5, 3.4, 4.9), double4(6.1, 9.2, 2.7, 0.3)), 68.57, 8, false); + TestUtils.AreEqual(dot(double4(-1.2, 5.5, -3.4, 4.9), double4(6.1, -9.2, 2.7, -0.3)), -68.57, 8, false); + TestUtils.AreEqual(dot(double4(1.2e153, 5.5e153, 3.4e153, 4.9e153), double4(6.1e153, 9.2e153, 2.7e153, 3e152)), 6.857e307, 1, false); + TestUtils.AreEqual(dot(double4(-1.2e153, 5.5e153, 3.4e153, -4.9e153), double4(6.1e153, -9.2e153, -2.7e153, 3e152)), -6.857e307, 1, false); + TestUtils.AreEqual(dot(double4(1.2e153, 5.5e153, 3.4e153, 4.9e153), double4(6.1e154, 9.2e154, 2.7e154, 3e153)), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(double4(-1.2e153, 5.5e153, 3.4e153, -4.9e153), double4(6.1e154, -9.2e154, -2.7e154, 3e153)), double.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void cmin_int2() + { + TestUtils.AreEqual(cmin(int2(100, 200)), 100); + TestUtils.AreEqual(cmin(int2(100, -200)), -200); + TestUtils.AreEqual(cmin(int2(int.MaxValue, 0)), 0); + TestUtils.AreEqual(cmin(int2(int.MinValue, 0)), int.MinValue); + TestUtils.AreEqual(cmin(int2(int.MaxValue, int.MinValue)), int.MinValue); + } + + + [TestCompiler] + public static void cmin_int3() + { + TestUtils.AreEqual(cmin(int3(100, 200, 300)), 100); + TestUtils.AreEqual(cmin(int3(100, -200, 300)), -200); + TestUtils.AreEqual(cmin(int3(int.MaxValue, 0, 7)), 0); + TestUtils.AreEqual(cmin(int3(int.MinValue, 0, 7)), int.MinValue); + TestUtils.AreEqual(cmin(int3(int.MaxValue, int.MinValue, 0)), int.MinValue); + } + + + [TestCompiler] + public static void cmin_int4() + { + TestUtils.AreEqual(cmin(int4(100, 200, 300, 400)), 100); + TestUtils.AreEqual(cmin(int4(100, -200, 300, -400)), -400); + TestUtils.AreEqual(cmin(int4(int.MaxValue, 0, 7, 19)), 0); + TestUtils.AreEqual(cmin(int4(int.MinValue, 0, 7, 19)), int.MinValue); + TestUtils.AreEqual(cmin(int4(int.MaxValue, int.MinValue, 0, 19)), int.MinValue); + } + + [TestCompiler] + public static void cmin_uint2() + { + TestUtils.AreEqual(cmin(uint2(100u, 200u)), 100u); + TestUtils.AreEqual(cmin(uint2(100u, uint.MaxValue)), 100u); + TestUtils.AreEqual(cmin(uint2(uint.MinValue, uint.MaxValue)), uint.MinValue); + } + + + [TestCompiler] + public static void cmin_uint3() + { + TestUtils.AreEqual(cmin(uint3(100u, 200u, 300u)), 100u); + TestUtils.AreEqual(cmin(uint3(uint.MaxValue, 100u, 300u)), 100u); + TestUtils.AreEqual(cmin(uint3(7u, uint.MinValue, uint.MaxValue)), uint.MinValue); + } + + + [TestCompiler] + public static void cmin_uint4() + { + TestUtils.AreEqual(cmin(uint4(100u, 200u, 300u, 400u)), 100u); + TestUtils.AreEqual(cmin(uint4(300u, 100u, uint.MaxValue, 200u)), 100u); + TestUtils.AreEqual(cmin(uint4(19u, uint.MinValue, uint.MaxValue, 7u)), uint.MinValue); + } + + [TestCompiler] + public static void cmin_float2() + { + TestUtils.AreEqual(cmin(float2(5.2f, -0.5f)), -0.5f); + TestUtils.AreEqual(cmin(float2(float.NegativeInfinity, float.PositiveInfinity)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float2(float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float2(float.NegativeInfinity, 100.0f)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float2(float.PositiveInfinity, 100.0f)), 100.0f); + + TestUtils.AreEqual(cmin(float2(1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float2(float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmin(float2(float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float2(float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmin(float2(float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float2(float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + [TestCompiler] + public static void cmin_float3() + { + TestUtils.AreEqual(cmin(float3(5.2f, -0.5f, -1.2f)), -1.2f); + TestUtils.AreEqual(cmin(float3(float.NegativeInfinity, float.PositiveInfinity, 100.0f)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float3(float.NegativeInfinity, float.NaN, 100.0f)), float.NegativeInfinity); + + TestUtils.AreEqual(cmin(float3(1.0f, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float3(float.NaN, 1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float3(float.NaN, float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmin(float3(float.PositiveInfinity, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float3(float.NaN, float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float3(float.NaN, float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmin(float3(float.NegativeInfinity, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float3(float.NaN, float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float3(float.NaN, float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + [TestCompiler] + public static void cmin_float4() + { + TestUtils.AreEqual(cmin(float4(5.2f, -0.5f, -1.2f, 2.3f)), -1.2f); + TestUtils.AreEqual(cmin(float4(float.NegativeInfinity, float.PositiveInfinity, 100.0f, float.NaN)), float.NegativeInfinity); + + TestUtils.AreEqual(cmin(float4(1.0f, float.NaN, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float4(float.NaN, 1.0f, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, 1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmin(float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.PositiveInfinity, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmin(float4(float.NegativeInfinity, float.NaN, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NegativeInfinity, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + + [TestCompiler] + public static void cmin_double2() + { + TestUtils.AreEqual(cmin(double2(5.2, -0.5)), -0.5); + TestUtils.AreEqual(cmin(double2(5.2e100, -0.5e100)), -0.5e100); + TestUtils.AreEqual(cmin(double2(double.NegativeInfinity, double.PositiveInfinity)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double2(double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double2(double.NegativeInfinity, 100.0)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double2(double.PositiveInfinity, 100.0)), 100.0); + + TestUtils.AreEqual(cmin(double2(1.0, double.NaN)), 1.0); + TestUtils.AreEqual(cmin(double2(double.NaN, 1.0)), 1.0); + + TestUtils.AreEqual(cmin(double2(double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double2(double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmin(double2(double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double2(double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void cmin_double3() + { + TestUtils.AreEqual(cmin(double3(5.2, -0.5, -1.2)), -1.2); + TestUtils.AreEqual(cmin(double3(5.2e100, -0.5e100, -1.2e100)), -1.2e100); + TestUtils.AreEqual(cmin(double3(double.NegativeInfinity, double.PositiveInfinity, 100.0)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double3(double.NegativeInfinity, double.NaN, 100.0)), double.NegativeInfinity); + + TestUtils.AreEqual(cmin(double3(1.0, double.NaN, double.NaN)), 1.0); + TestUtils.AreEqual(cmin(double3(double.NaN, 1.0, double.NaN)), 1.0); + TestUtils.AreEqual(cmin(double3(double.NaN, double.NaN, 1.0)), 1.0); + + TestUtils.AreEqual(cmin(double3(double.PositiveInfinity, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double3(double.NaN, double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double3(double.NaN, double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmin(double3(double.NegativeInfinity, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double3(double.NaN, double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double3(double.NaN, double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void cmin_double4() + { + TestUtils.AreEqual(cmin(double4(5.2, -0.5, -1.2, 2.3)), -1.2); + TestUtils.AreEqual(cmin(double4(5.2e100, -0.5e100, -1.2e100, 2.3e100)), -1.2e100); + + TestUtils.AreEqual(cmin(double4(double.NegativeInfinity, double.PositiveInfinity, 100.0, double.NaN)), double.NegativeInfinity); + + TestUtils.AreEqual(cmin(double4(1.0, double.NaN, double.NaN, double.NaN)), 1.0); + TestUtils.AreEqual(cmin(double4(double.NaN, 1.0, double.NaN, double.NaN)), 1.0f); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, 1.0, double.NaN)), 1.0f); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.NaN, 1.0)), 1.0f); + + TestUtils.AreEqual(cmin(double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.PositiveInfinity, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmin(double4(double.NegativeInfinity, double.NaN, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NegativeInfinity, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + + [TestCompiler] + public static void cmax_int2() + { + TestUtils.AreEqual(cmax(int2(100, 200)), 200); + TestUtils.AreEqual(cmax(int2(100, -200)), 100); + TestUtils.AreEqual(cmax(int2(int.MaxValue, 0)), int.MaxValue); + TestUtils.AreEqual(cmax(int2(int.MinValue, 0)), 0); + TestUtils.AreEqual(cmax(int2(int.MaxValue, int.MinValue)), int.MaxValue); + } + + + [TestCompiler] + public static void cmax_int3() + { + TestUtils.AreEqual(cmax(int3(100, 200, 300)), 300); + TestUtils.AreEqual(cmax(int3(100, -200, 300)), 300); + TestUtils.AreEqual(cmax(int3(int.MaxValue, 0, 7)), int.MaxValue); + TestUtils.AreEqual(cmax(int3(int.MinValue, 0, 7)), 7); + TestUtils.AreEqual(cmax(int3(int.MaxValue, int.MinValue, 0)), int.MaxValue); + } + + + [TestCompiler] + public static void cmax_int4() + { + TestUtils.AreEqual(cmax(int4(100, 200, 300, 400)), 400); + TestUtils.AreEqual(cmax(int4(100, -200, 300, -400)), 300); + TestUtils.AreEqual(cmax(int4(int.MaxValue, 0, 7, 19)), int.MaxValue); + TestUtils.AreEqual(cmax(int4(int.MinValue, 0, 7, 19)), 19); + TestUtils.AreEqual(cmax(int4(int.MaxValue, int.MinValue, 0, 19)), int.MaxValue); + } + + [TestCompiler] + public static void cmax_uint2() + { + TestUtils.AreEqual(cmax(uint2(100u, 200u)), 200u); + TestUtils.AreEqual(cmax(uint2(100u, uint.MaxValue)), uint.MaxValue); + TestUtils.AreEqual(cmax(uint2(uint.MinValue, uint.MaxValue)), uint.MaxValue); + } + + + [TestCompiler] + public static void cmax_uint3() + { + TestUtils.AreEqual(cmax(uint3(100u, 200u, 300u)), 300u); + TestUtils.AreEqual(cmax(uint3(uint.MaxValue, 100u, 300u)), uint.MaxValue); + TestUtils.AreEqual(cmax(uint3(7u, uint.MinValue, uint.MaxValue)), uint.MaxValue); + } + + + [TestCompiler] + public static void cmax_uint4() + { + TestUtils.AreEqual(cmax(uint4(100u, 200u, 300u, 400u)), 400u); + TestUtils.AreEqual(cmax(uint4(300u, 100u, uint.MaxValue, 200u)), uint.MaxValue); + TestUtils.AreEqual(cmax(uint4(19u, uint.MinValue, uint.MaxValue, 7u)), uint.MaxValue); + } + + [TestCompiler] + public static void cmax_float2() + { + TestUtils.AreEqual(cmax(float2(5.2f, -0.5f)), 5.2f); + TestUtils.AreEqual(cmax(float2(float.NegativeInfinity, float.PositiveInfinity)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float2(float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float2(float.NegativeInfinity, 100.0f)), 100.0f); + TestUtils.AreEqual(cmax(float2(float.PositiveInfinity, 100.0f)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float2(1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float2(float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmax(float2(float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float2(float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float2(float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float2(float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + [TestCompiler] + public static void cmax_float3() + { + TestUtils.AreEqual(cmax(float3(5.2f, -0.5f, -1.2f)), 5.2f); + TestUtils.AreEqual(cmax(float3(float.NegativeInfinity, float.PositiveInfinity, 100.0f)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float3(float.NegativeInfinity, float.NaN, 100.0f)), 100.0f); + + TestUtils.AreEqual(cmax(float3(1.0f, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float3(float.NaN, 1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float3(float.NaN, float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmax(float3(float.PositiveInfinity, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float3(float.NaN, float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float3(float.NaN, float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float3(float.NegativeInfinity, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float3(float.NaN, float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float3(float.NaN, float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + [TestCompiler] + public static void cmax_float4() + { + TestUtils.AreEqual(cmax(float4(5.2f, -0.5f, -1.2f, 2.3f)), 5.2f); + TestUtils.AreEqual(cmax(float4(float.NegativeInfinity, float.PositiveInfinity, 100.0f, float.NaN)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float4(1.0f, float.NaN, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float4(float.NaN, 1.0f, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, 1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmax(float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.PositiveInfinity, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float4(float.NegativeInfinity, float.NaN, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NegativeInfinity, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + + [TestCompiler] + public static void cmax_double2() + { + TestUtils.AreEqual(cmax(double2(5.2, -0.5)), 5.2); + TestUtils.AreEqual(cmax(double2(5.2e100, -0.5e100)), 5.2e100); + TestUtils.AreEqual(cmax(double2(double.NegativeInfinity, double.PositiveInfinity)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double2(double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double2(double.NegativeInfinity, 100.0)), 100.0); + TestUtils.AreEqual(cmax(double2(double.PositiveInfinity, 100.0)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double2(1.0, double.NaN)), 1.0); + TestUtils.AreEqual(cmax(double2(double.NaN, 1.0)), 1.0); + + TestUtils.AreEqual(cmax(double2(double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double2(double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double2(double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double2(double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void cmax_double3() + { + TestUtils.AreEqual(cmax(double3(5.2, -0.5, -1.2)), 5.2); + TestUtils.AreEqual(cmax(double3(5.2e100, -0.5e100, -1.2e100)), 5.2e100); + TestUtils.AreEqual(cmax(double3(double.NegativeInfinity, double.PositiveInfinity, 100.0)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double3(double.NegativeInfinity, double.NaN, 100.0)), 100.0); + + TestUtils.AreEqual(cmax(double3(1.0, double.NaN, double.NaN)), 1.0); + TestUtils.AreEqual(cmax(double3(double.NaN, 1.0, double.NaN)), 1.0); + TestUtils.AreEqual(cmax(double3(double.NaN, double.NaN, 1.0)), 1.0); + + TestUtils.AreEqual(cmax(double3(double.PositiveInfinity, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double3(double.NaN, double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double3(double.NaN, double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double3(double.NegativeInfinity, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double3(double.NaN, double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double3(double.NaN, double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void cmax_double4() + { + TestUtils.AreEqual(cmax(double4(5.2, -0.5, -1.2, 2.3)), 5.2); + TestUtils.AreEqual(cmax(double4(5.2e100, -0.5e100, -1.2e100, 2.3e100)), 5.2e100); + + TestUtils.AreEqual(cmax(double4(double.NegativeInfinity, double.PositiveInfinity, 100.0, double.NaN)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double4(1.0, double.NaN, double.NaN, double.NaN)), 1.0); + TestUtils.AreEqual(cmax(double4(double.NaN, 1.0, double.NaN, double.NaN)), 1.0f); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, 1.0, double.NaN)), 1.0f); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.NaN, 1.0)), 1.0f); + + TestUtils.AreEqual(cmax(double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.PositiveInfinity, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double4(double.NegativeInfinity, double.NaN, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NegativeInfinity, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void csum_int2() + { + TestUtils.AreEqual(csum(int2(100, 200)), 300); + TestUtils.AreEqual(csum(int2(100, -200)), -100); + TestUtils.AreEqual(csum(int2(int.MaxValue, 7)), int.MinValue + 6); + TestUtils.AreEqual(csum(int2(int.MinValue, -7)), int.MaxValue - 6); + TestUtils.AreEqual(csum(int2(int.MaxValue, int.MinValue)), -1); + } + + + [TestCompiler] + public static void csum_int3() + { + TestUtils.AreEqual(csum(int3(100, 200, 300)), 600); + TestUtils.AreEqual(csum(int3(100, -200, -300)), -400); + TestUtils.AreEqual(csum(int3(int.MaxValue, 7, 11)), int.MinValue + 17); + TestUtils.AreEqual(csum(int3(int.MinValue, -7, -11)), int.MaxValue - 17); + TestUtils.AreEqual(csum(int3(int.MaxValue, int.MinValue, 0)), -1); + } + + + [TestCompiler] + public static void csum_int4() + { + TestUtils.AreEqual(csum(int4(100, 200, 300, 400)), 1000); + TestUtils.AreEqual(csum(int4(100, -200, 300, -400)), -200); + TestUtils.AreEqual(csum(int4(int.MaxValue, 7, 11, 19)), int.MinValue + 36); + TestUtils.AreEqual(csum(int4(int.MinValue, -7, -11, -19)), int.MaxValue - 36); + TestUtils.AreEqual(csum(int4(int.MaxValue, int.MinValue, 0, 0)), -1); + } + + [TestCompiler] + public static void csum_uint2() + { + TestUtils.AreEqual(csum(uint2(100u, 200u)), 300u); + TestUtils.AreEqual(csum(uint2(uint.MaxValue, 7u)), 6u); + } + + + [TestCompiler] + public static void csum_uint3() + { + TestUtils.AreEqual(csum(uint3(100u, 200u, 300u)), 600u); + TestUtils.AreEqual(csum(uint3(uint.MaxValue, 7u, 19u)), 25u); + } + + + [TestCompiler] + public static void csum_uint4() + { + TestUtils.AreEqual(csum(uint4(100u, 200u, 300u, 400u)), 1000u); + TestUtils.AreEqual(csum(uint4(uint.MaxValue, 7u, 11u, 19u)), 36u); + } + + [TestCompiler] + public static void csum_float2() + { + TestUtils.AreEqual(csum(float2(2.2f, -1.5f)), 0.7f, 4, false); + TestUtils.AreEqual(csum(float2(-2.2e38f, 1.5e38f)), -7e37f, 4, false); + TestUtils.AreEqual(csum(float2(-2.2e38f, -1.5e38f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float2( 2.2e38f, 1.5e38f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float2(float.NegativeInfinity, float.PositiveInfinity)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float2(float.NegativeInfinity, float.NaN)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float2(float.NegativeInfinity, 100.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float2(float.PositiveInfinity, 100.0f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float2(1.0f, float.NaN)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float2(float.NaN, 1.0f)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float2(float.PositiveInfinity, 1.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float2(-1.0f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float2(float.NegativeInfinity, 1.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float2(-1.0f, float.NegativeInfinity)), float.NegativeInfinity, 0, false); + } + + [TestCompiler] + public static void csum_float3() + { + TestUtils.AreEqual(csum(float3(2.2f, -1.5f, 1.2f)), 1.9f, 4, false); + TestUtils.AreEqual(csum(float3(2.2e38f, -1.5e38f, 1.2e38f)), 1.9e38f, 4, false); + TestUtils.AreEqual(csum(float3(-2.2e38f, -1.5e38f, -1.2e38f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float3(2.2e38f, 1.5e38f, 1.2e38f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float3(float.NegativeInfinity, float.PositiveInfinity, 100.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float3(float.NegativeInfinity, float.NaN, 100.0f)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float3(float.NaN, 1.0f, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float3(1.0f, float.NaN, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float3(1.0f, 1.0f, float.NaN)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float3(float.PositiveInfinity, 1.0f, -2.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float3(1.0f, float.PositiveInfinity, -2.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float3(-2.0f, 1.0f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float3(float.NegativeInfinity, 1.0f, -2.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float3(-1.0f, float.NegativeInfinity, 2.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float3(-2.0f, 1.0f, float.NegativeInfinity)), float.NegativeInfinity, 0, false); + } + + [TestCompiler] + public static void csum_float4() + { + TestUtils.AreEqual(csum(float4(2.2f, -1.5f, 1.2f, -0.7f)), 1.2f, 4, false); + TestUtils.AreEqual(csum(float4(2.2e38f, -1.5e38f, 1.2e38f, -0.7e38f)), 1.2e38f, 4, false); + TestUtils.AreEqual(csum(float4(-2.2e38f, -1.5e38f, -1.2e38f, -0.7e38f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float4(2.2e38f, 1.5e38f, 1.2e38f, 0.7e38f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float4(float.NegativeInfinity, float.PositiveInfinity, 100.0f, 200.0f)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float4(float.NaN, 1.0f, 1.0f, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, float.NaN, 1.0f, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, 1.0f, float.NaN, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, 1.0f, 1.0f, float.NaN)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float4(float.PositiveInfinity, 1.0f, -2.0f, 3.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, float.PositiveInfinity, -2.0f, 3.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, -2.0f, float.PositiveInfinity, 3.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, -2.0f, 3.0f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float4(float.NegativeInfinity, 1.0f, -2.0f, 3.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, float.NegativeInfinity, -2.0f, 3.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, -2.0f, float.NegativeInfinity, 3.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, -2.0f, -3.0f, float.NegativeInfinity)), float.NegativeInfinity, 0, false); + } + + + [TestCompiler] + public static void csum_double2() + { + TestUtils.AreEqual(csum(double2(2.2, -1.5)), 0.7, 4, false); + TestUtils.AreEqual(csum(double2(-2.2e307, 1.5e307)), -7e306, 4, false); + TestUtils.AreEqual(csum(double2(-1.2e308, -0.7e308)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double2(1.2e308, 0.7e308)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double2(double.NegativeInfinity, double.PositiveInfinity)), double.NaN); + TestUtils.AreEqual(csum(double2(double.NegativeInfinity, double.NaN)), double.NaN); + TestUtils.AreEqual(csum(double2(double.NegativeInfinity, 100.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double2(double.PositiveInfinity, 100.0)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double2(1.0, double.NaN)), double.NaN); + TestUtils.AreEqual(csum(double2(double.NaN, 1.0)), double.NaN); + + TestUtils.AreEqual(csum(double2(double.PositiveInfinity, 1.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double2(-1.0, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double2(double.NegativeInfinity, 1.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double2(-1.0, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void csum_double3() + { + TestUtils.AreEqual(csum(double3(2.2, -1.5, 1.2)), 1.9, 4, false); + TestUtils.AreEqual(csum(double3(2.2e307, -1.5e307, 1.2e307)), 1.9e307, 4, false); + TestUtils.AreEqual(csum(double3(-1.2e308, -0.7e308, -1.4e308)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double3(1.2e308, 0.7e308, 1.4e308)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double3(double.NegativeInfinity, double.PositiveInfinity, 100.0)), double.NaN); + TestUtils.AreEqual(csum(double3(double.NegativeInfinity, double.NaN, 100.0)), double.NaN); + + TestUtils.AreEqual(csum(double3(double.NaN, 1.0, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double3(1.0, double.NaN, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double3(1.0, 1.0, double.NaN)), double.NaN); + + TestUtils.AreEqual(csum(double3(double.PositiveInfinity, 1.0, -2.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double3(1.0, double.PositiveInfinity, -2.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double3(-2.0, 1.0, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double3(double.NegativeInfinity, 1.0, -2.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double3(-1.0, double.NegativeInfinity, 2.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double3(-2.0, 1.0, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void csum_double4() + { + TestUtils.AreEqual(csum(double4(2.2, -1.5, 1.2, -0.7)), 1.2, 4, false); + TestUtils.AreEqual(csum(double4(2.2e307, -1.5e307, 1.2e307, -0.7e307)), 1.2e307, 4, false); + TestUtils.AreEqual(csum(double4(-1.2e308, -0.7e308, -1.4e308, -0.9e308)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double4(1.2e308, 0.7e308, 1.4e308, 0.9e308)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double4(double.NegativeInfinity, double.PositiveInfinity, 100.0, 200.0)), double.NaN); + + TestUtils.AreEqual(csum(double4(double.NaN, 1.0, 1.0, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double4(1.0, double.NaN, 1.0, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double4(1.0, 1.0, double.NaN, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double4(1.0, 1.0, 1.0, double.NaN)), double.NaN); + + TestUtils.AreEqual(csum(double4(double.PositiveInfinity, 1.0, -2.0, 3.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double4(1.0, double.PositiveInfinity, -2.0, 3.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double4(1.0, -2.0, double.PositiveInfinity, 3.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double4(1.0, -2.0, 3.0, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double4(double.NegativeInfinity, 1.0, -2.0, 3.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double4(1.0, double.NegativeInfinity, -2.0, 3.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double4(1.0, -2.0, double.NegativeInfinity, 3.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double4(1.0, -2.0, 3.0, double.NegativeInfinity)), double.NegativeInfinity); + } + + + [TestCompiler] + public static void any_bool2() + { + TestUtils.AreEqual(any(bool2(false, false)), false); + TestUtils.AreEqual(any(bool2(false, true)), true); + TestUtils.AreEqual(any(bool2(true, false)), true); + TestUtils.AreEqual(any(bool2(true, true)), true); + } + + [TestCompiler] + public static void any_bool3() + { + TestUtils.AreEqual(any(bool3(false, false, false)), false); + TestUtils.AreEqual(any(bool3(false, false, true)), true); + TestUtils.AreEqual(any(bool3(false, true, false)), true); + TestUtils.AreEqual(any(bool3(false, true, true)), true); + + TestUtils.AreEqual(any(bool3(true, false, false)), true); + TestUtils.AreEqual(any(bool3(true, false, true)), true); + TestUtils.AreEqual(any(bool3(true, true, false)), true); + TestUtils.AreEqual(any(bool3(true, true, true)), true); + } + + [TestCompiler] + public static void any_bool4() + { + TestUtils.AreEqual(any(bool4(false, false, false, false)), false); + TestUtils.AreEqual(any(bool4(false, false, false, true)), true); + TestUtils.AreEqual(any(bool4(false, false, true, false)), true); + TestUtils.AreEqual(any(bool4(false, false, true, true)), true); + + TestUtils.AreEqual(any(bool4(false, true, false, false)), true); + TestUtils.AreEqual(any(bool4(false, true, false, true)), true); + TestUtils.AreEqual(any(bool4(false, true, true, false)), true); + TestUtils.AreEqual(any(bool4(false, true, true, true)), true); + + TestUtils.AreEqual(any(bool4(true, false, false, false)), true); + TestUtils.AreEqual(any(bool4(true, false, false, true)), true); + TestUtils.AreEqual(any(bool4(true, false, true, false)), true); + TestUtils.AreEqual(any(bool4(true, false, true, true)), true); + + TestUtils.AreEqual(any(bool4(true, true, false, false)), true); + TestUtils.AreEqual(any(bool4(true, true, false, true)), true); + TestUtils.AreEqual(any(bool4(true, true, true, false)), true); + TestUtils.AreEqual(any(bool4(true, true, true, true)), true); + } + + [TestCompiler] + public static void any_int2() + { + TestUtils.AreEqual(any(int2(0, 0)), false); + TestUtils.AreEqual(any(int2(0, -1)), true); + TestUtils.AreEqual(any(int2(1, 0)), true); + TestUtils.AreEqual(any(int2(2, int.MinValue)), true); + } + + + [TestCompiler] + public static void any_int3() + { + TestUtils.AreEqual(any(int3(0, 0, 0)), false); + TestUtils.AreEqual(any(int3(0, 0, 1)), true); + TestUtils.AreEqual(any(int3(0, -1, 0)), true); + TestUtils.AreEqual(any(int3(0, int.MinValue, int.MaxValue)), true); + + TestUtils.AreEqual(any(int3(5, 0, 0)), true); + TestUtils.AreEqual(any(int3(11, 0, -11)), true); + TestUtils.AreEqual(any(int3(-100, -32, 0)), true); + TestUtils.AreEqual(any(int3(-121, 100, 322)), true); + } + + [TestCompiler] + public static void any_int4() + { + TestUtils.AreEqual(any(int4(0, 0, 0, 0)), false); + TestUtils.AreEqual(any(int4(0, 0, 0, 1)), true); + TestUtils.AreEqual(any(int4(0, 0, -1, 0)), true); + TestUtils.AreEqual(any(int4(0, 0, int.MinValue, int.MaxValue)), true); + + TestUtils.AreEqual(any(int4(0, 5, 0, 0)), true); + TestUtils.AreEqual(any(int4(0, 11, 0, -11)), true); + TestUtils.AreEqual(any(int4(0, 12, 55, 0)), true); + TestUtils.AreEqual(any(int4(0, 100, 102, 10123)), true); + + TestUtils.AreEqual(any(int4(-323, 0, 0, 0)), true); + TestUtils.AreEqual(any(int4(-564, 0, 0, 55)), true); + TestUtils.AreEqual(any(int4(23, 0, 12, 0)), true); + TestUtils.AreEqual(any(int4(100, 0, 55, 22)), true); + + TestUtils.AreEqual(any(int4(22, -99, 0, 0)), true); + TestUtils.AreEqual(any(int4(33, -88, 0, 100)), true); + TestUtils.AreEqual(any(int4(44, -77, 0x10000, 0)), true); + TestUtils.AreEqual(any(int4(55, -66, 0x20000, 0x30000)), true); + } + + + [TestCompiler] + public static void any_uint2() + { + TestUtils.AreEqual(any(uint2(0u, 0u)), false); + TestUtils.AreEqual(any(uint2(0u, 0xFFFFFFFFu)), true); + TestUtils.AreEqual(any(uint2(100u, 0u)), true); + TestUtils.AreEqual(any(uint2(200u, 1000u)), true); + } + + + [TestCompiler] + public static void any_uint3() + { + TestUtils.AreEqual(any(uint3(0u, 0u, 0u)), false); + TestUtils.AreEqual(any(uint3(0u, 0u, 1u)), true); + TestUtils.AreEqual(any(uint3(0u, 0xFFFFFFFFu, 0u)), true); + TestUtils.AreEqual(any(uint3(0u, uint.MinValue, uint.MaxValue)), true); + + TestUtils.AreEqual(any(uint3(5u, 0u, 0u)), true); + TestUtils.AreEqual(any(uint3(11u, 0u, 100u)), true); + TestUtils.AreEqual(any(uint3(100u, 32u, 0u)), true); + TestUtils.AreEqual(any(uint3(121u, 100u, 322u)), true); + } + + [TestCompiler] + public static void any_uint4() + { + TestUtils.AreEqual(any(uint4(0u, 0u, 0u, 0u)), false); + TestUtils.AreEqual(any(uint4(0u, 0u, 0u, 1u)), true); + TestUtils.AreEqual(any(uint4(0u, 0u, 0xFFFFFFFFu, 0u)), true); + TestUtils.AreEqual(any(uint4(0u, 0u, uint.MinValue, uint.MaxValue)), true); + + TestUtils.AreEqual(any(uint4(0u, 5u, 0u, 0u)), true); + TestUtils.AreEqual(any(uint4(0u, 11u, 0u, 22u)), true); + TestUtils.AreEqual(any(uint4(0u, 12u, 55u, 0u)), true); + TestUtils.AreEqual(any(uint4(0u, 100u, 102u, 10123u)), true); + + TestUtils.AreEqual(any(uint4(323u, 0u, 0u, 0u)), true); + TestUtils.AreEqual(any(uint4(564u, 0u, 0u, 55u)), true); + TestUtils.AreEqual(any(uint4(23u, 0u, 12u, 0u)), true); + TestUtils.AreEqual(any(uint4(100u, 0u, 55u, 22u)), true); + + TestUtils.AreEqual(any(uint4(22u, 99u, 0u, 0u)), true); + TestUtils.AreEqual(any(uint4(33u, 88u, 0u, 100u)), true); + TestUtils.AreEqual(any(uint4(44u, 77u, 0x10000, 0u)), true); + TestUtils.AreEqual(any(uint4(55u, 66u, 0x20000u, 0x30000u)), true); + } + + + [TestCompiler] + public static void any_float2() + { + //TestUtils.AreEqual(any(float2(0, float.NaN)), true); // TODO: doesn't work with burst + + TestUtils.AreEqual(any(float2(0, -0)), false); + //TestUtils.AreEqual(any(float2(0, float.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(float2(-2.0f, 0)), true); + TestUtils.AreEqual(any(float2(float.PositiveInfinity, float.NegativeInfinity)), true); + } + + + [TestCompiler] + public static void any_float3() + { + //TestUtils.AreEqual(any(float3(0.0f, float.NaN, 0.0f)), true); // TODO: doesn't work with burst + + TestUtils.AreEqual(any(float3(0.0f, 0.0f, 0.0f)), false); + //TestUtils.AreEqual(any(float3(0.0f, 0.0f, float.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(float3(0.0f, -1.0f, 0.0f)), true); + TestUtils.AreEqual(any(float3(0.0f, float.NegativeInfinity, float.PositiveInfinity)), true); + + TestUtils.AreEqual(any(float3(float.PositiveInfinity, 0.0f, 0.0f)), true); + TestUtils.AreEqual(any(float3(float.MaxValue, -0.0f, 1e38f)), true); + TestUtils.AreEqual(any(float3(-1.2e28f, 3.2f, 0.0f)), true); + TestUtils.AreEqual(any(float3(121.2f, 100.0f, -32.2f)), true); + } + + [TestCompiler] + public static void any_float4() + { + TestUtils.AreEqual(any(float4(0.0f, 0.0f, 0.0f, 0.0f)), false); + //TestUtils.AreEqual(any(float4(0.0f, 0.0f, 0.0f, float.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(float4(0.0f, 0.0f, 1.0f, 0.0f)), true); + TestUtils.AreEqual(any(float4(0.0f, 0.0f, float.NegativeInfinity, float.PositiveInfinity)), true); + + TestUtils.AreEqual(any(float4(0.0f, float.PositiveInfinity, 0.0f, 0.0f)), true); + TestUtils.AreEqual(any(float4(0.0f, 11.2f, 0.0f, float.MinValue)), true); + TestUtils.AreEqual(any(float4(0.0f, -12.2f, float.MaxValue, 0u)), true); + TestUtils.AreEqual(any(float4(0.0f, -1.2e28f, -32.2f, 22.0f)), true); + + TestUtils.AreEqual(any(float4(323.2f, 0.0f, 0.0f, 0.0f)), true); + TestUtils.AreEqual(any(float4(-564.6f, 0.0f, 0.0f, 1113f)), true); + TestUtils.AreEqual(any(float4(-23.0f, 0.0f, 0.2f, 0.0f)), true); + TestUtils.AreEqual(any(float4(102.0f, 0.0f, 5.5f, -22.0f)), true); + + //TestUtils.AreEqual(any(float4(float.NaN, -99.0f, 0.0f, 0.0f)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(float4(33.0f, 88.0f, 0.0f, 100.0f)), true); + TestUtils.AreEqual(any(float4(44.0f, 77.0f, -2000.0f, 0.0f)), true); + TestUtils.AreEqual(any(float4(55.0f, 66.0f, 5000.0f, 10000.2f)), true); + } + + [TestCompiler] + public static void any_double2() + { + //TestUtils.AreEqual(any(double2(0, double.NaN)), true); // TODO: doesn't work with burst. + + TestUtils.AreEqual(any(double2(0, -0)), false); + //TestUtils.AreEqual(any(double2(0, double.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(double2(-2.0, 0)), true); + TestUtils.AreEqual(any(double2(double.PositiveInfinity, double.NegativeInfinity)), true); + } + + + [TestCompiler] + public static void any_double3() + { + //TestUtils.AreEqual(any(double3(0.0, double.NaN, 0.0)), true); // TODO: doesn't work with burst + + TestUtils.AreEqual(any(double3(0.0, 0.0, 0.0)), false); + //TestUtils.AreEqual(any(double3(0.0, 0.0, double.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(double3(0.0, -1.0, 0.0)), true); + TestUtils.AreEqual(any(double3(0.0, double.NegativeInfinity, double.PositiveInfinity)), true); + + TestUtils.AreEqual(any(double3(double.PositiveInfinity, 0.0, 0.0)), true); + TestUtils.AreEqual(any(double3(double.MaxValue, -0.0, 1e108)), true); + TestUtils.AreEqual(any(double3(-1.2e128, 3.2, 0.0)), true); + TestUtils.AreEqual(any(double3(121.2, 100.0, -32.2)), true); + } + + [TestCompiler] + public static void any_double4() + { + TestUtils.AreEqual(any(double4(0.0, 0.0, 0.0, 0.0)), false); + //TestUtils.AreEqual(any(double4(0.0, 0.0, 0.0, double.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(double4(0.0, 0.0, 1.0, 0.0)), true); + TestUtils.AreEqual(any(double4(0.0, 0.0, double.NegativeInfinity, double.PositiveInfinity)), true); + + TestUtils.AreEqual(any(double4(0.0, double.PositiveInfinity, 0.0, 0.0)), true); + TestUtils.AreEqual(any(double4(0.0, 11.2, 0.0, double.MinValue)), true); + TestUtils.AreEqual(any(double4(0.0, -12.2, double.MaxValue, 0.0)), true); + TestUtils.AreEqual(any(double4(0.0, -1.2e28, -32.2, 22.0)), true); + + TestUtils.AreEqual(any(double4(323.2, 0.0, 0.0, 0.0)), true); + TestUtils.AreEqual(any(double4(-564.6, 0.0, 0.0, 1113.0)), true); + TestUtils.AreEqual(any(double4(-23.0, 0.0, 0.2, 0.0)), true); + TestUtils.AreEqual(any(double4(102.0, 0.0, 5.5, -22.0)), true); + + //TestUtils.AreEqual(any(double4(double.NaN, -99.0, 0.0, 0.0)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(double4(33.0, 88.0, 0.0, 100.0)), true); + TestUtils.AreEqual(any(double4(44.0, 77.0, -2000.0, 0.0)), true); + TestUtils.AreEqual(any(double4(55.0, 66.0, 5000.0, 10000.2)), true); + } + + + [TestCompiler] + public static void all_bool2() + { + TestUtils.AreEqual(all(bool2(false, false)), false); + TestUtils.AreEqual(all(bool2(false, true)), false); + TestUtils.AreEqual(all(bool2(true, false)), false); + TestUtils.AreEqual(all(bool2(true, true)), true); + } + + [TestCompiler] + public static void all_bool3() + { + TestUtils.AreEqual(all(bool3(false, false, false)), false); + TestUtils.AreEqual(all(bool3(false, false, true)), false); + TestUtils.AreEqual(all(bool3(false, true, false)), false); + TestUtils.AreEqual(all(bool3(false, true, true)), false); + + TestUtils.AreEqual(all(bool3(true, false, false)), false); + TestUtils.AreEqual(all(bool3(true, false, true)), false); + TestUtils.AreEqual(all(bool3(true, true, false)), false); + TestUtils.AreEqual(all(bool3(true, true, true)), true); + } + + [TestCompiler] + public static void all_bool4() + { + TestUtils.AreEqual(all(bool4(false, false, false, false)), false); + TestUtils.AreEqual(all(bool4(false, false, false, true)), false); + TestUtils.AreEqual(all(bool4(false, false, true, false)), false); + TestUtils.AreEqual(all(bool4(false, false, true, true)), false); + + TestUtils.AreEqual(all(bool4(false, true, false, false)), false); + TestUtils.AreEqual(all(bool4(false, true, false, true)), false); + TestUtils.AreEqual(all(bool4(false, true, true, false)), false); + TestUtils.AreEqual(all(bool4(false, true, true, true)), false); + + TestUtils.AreEqual(all(bool4(true, false, false, false)), false); + TestUtils.AreEqual(all(bool4(true, false, false, true)), false); + TestUtils.AreEqual(all(bool4(true, false, true, false)), false); + TestUtils.AreEqual(all(bool4(true, false, true, true)), false); + + TestUtils.AreEqual(all(bool4(true, true, false, false)), false); + TestUtils.AreEqual(all(bool4(true, true, false, true)), false); + TestUtils.AreEqual(all(bool4(true, true, true, false)), false); + TestUtils.AreEqual(all(bool4(true, true, true, true)), true); + } + + [TestCompiler] + public static void all_int2() + { + TestUtils.AreEqual(all(int2(0, 0)), false); + TestUtils.AreEqual(all(int2(0, -1)), false); + TestUtils.AreEqual(all(int2(1, 0)), false); + TestUtils.AreEqual(all(int2(2, int.MinValue)), true); + } + + [TestCompiler] + public static void all_int3() + { + TestUtils.AreEqual(all(int3(0, 0, 0)), false); + TestUtils.AreEqual(all(int3(0, 0, 1)), false); + TestUtils.AreEqual(all(int3(0, -1, 0)), false); + TestUtils.AreEqual(all(int3(0, int.MinValue, int.MaxValue)), false); + + TestUtils.AreEqual(all(int3(5, 0, 0)), false); + TestUtils.AreEqual(all(int3(11, 0, -11)), false); + TestUtils.AreEqual(all(int3(-100, -32, 0)), false); + TestUtils.AreEqual(all(int3(-121, 100, 322)), true); + } + + [TestCompiler] + public static void all_int4() + { + TestUtils.AreEqual(all(int4(0, 0, 0, 0)), false); + TestUtils.AreEqual(all(int4(0, 0, 0, 1)), false); + TestUtils.AreEqual(all(int4(0, 0, -1, 0)), false); + TestUtils.AreEqual(all(int4(0, 0, int.MinValue, int.MaxValue)), false); + + TestUtils.AreEqual(all(int4(0, 5, 0, 0)), false); + TestUtils.AreEqual(all(int4(0, 11, 0, -11)), false); + TestUtils.AreEqual(all(int4(0, 12, 55, 0)), false); + TestUtils.AreEqual(all(int4(0, 100, 102, 10123)), false); + + TestUtils.AreEqual(all(int4(-323, 0, 0, 0)), false); + TestUtils.AreEqual(all(int4(-564, 0, 0, 55)), false); + TestUtils.AreEqual(all(int4(23, 0, 12, 0)), false); + TestUtils.AreEqual(all(int4(100, 0, 55, 22)), false); + + TestUtils.AreEqual(all(int4(22, -99, 0, 0)), false); + TestUtils.AreEqual(all(int4(33, -88, 0, 100)), false); + TestUtils.AreEqual(all(int4(44, -77, 0x10000, 0)), false); + TestUtils.AreEqual(all(int4(55, -66, 0x20000, 0x30000)), true); + } + + + [TestCompiler] + public static void all_uint2() + { + TestUtils.AreEqual(all(uint2(0u, 0u)), false); + TestUtils.AreEqual(all(uint2(0u, 0xFFFFFFFFu)), false); + TestUtils.AreEqual(all(uint2(100u, 0u)), false); + TestUtils.AreEqual(all(uint2(200u, 1000u)), true); + } + + + [TestCompiler] + public static void all_uint3() + { + TestUtils.AreEqual(all(uint3(0u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint3(0u, 0u, 1u)), false); + TestUtils.AreEqual(all(uint3(0u, 0xFFFFFFFFu, 0u)), false); + TestUtils.AreEqual(all(uint3(0u, uint.MinValue, uint.MaxValue)), false); + + TestUtils.AreEqual(all(uint3(5u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint3(11u, 0u, 100u)), false); + TestUtils.AreEqual(all(uint3(100u, 32u, 0u)), false); + TestUtils.AreEqual(all(uint3(121u, 100u, 322u)), true); + } + + [TestCompiler] + public static void all_uint4() + { + TestUtils.AreEqual(all(uint4(0u, 0u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint4(0u, 0u, 0u, 1u)), false); + TestUtils.AreEqual(all(uint4(0u, 0u, 0xFFFFFFFFu, 0u)), false); + TestUtils.AreEqual(all(uint4(0u, 0u, uint.MinValue, uint.MaxValue)), false); + + TestUtils.AreEqual(all(uint4(0u, 5u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint4(0u, 11u, 0u, 22u)), false); + TestUtils.AreEqual(all(uint4(0u, 12u, 55u, 0u)), false); + TestUtils.AreEqual(all(uint4(0u, 100u, 102u, 10123u)), false); + + TestUtils.AreEqual(all(uint4(323u, 0u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint4(564u, 0u, 0u, 55u)), false); + TestUtils.AreEqual(all(uint4(23u, 0u, 12u, 0u)), false); + TestUtils.AreEqual(all(uint4(100u, 0u, 55u, 22u)), false); + + TestUtils.AreEqual(all(uint4(22u, 99u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint4(33u, 88u, 0u, 100u)), false); + TestUtils.AreEqual(all(uint4(44u, 77u, 0x10000, 0u)), false); + TestUtils.AreEqual(all(uint4(55u, 66u, 0x20000u, 0x30000u)), true); + } + + + [TestCompiler] + public static void all_float2() + { + TestUtils.AreEqual(all(float2(float.NaN, float.NaN)), true); + + TestUtils.AreEqual(all(float2(0, -0)), false); + TestUtils.AreEqual(all(float2(0, float.NaN)), false); + TestUtils.AreEqual(all(float2(-2.0f, 0)), false); + TestUtils.AreEqual(all(float2(float.PositiveInfinity, float.NegativeInfinity)), true); + } + + + [TestCompiler] + public static void all_float3() + { + TestUtils.AreEqual(all(float3(float.NaN, float.NaN, float.NaN)), true); + + TestUtils.AreEqual(all(float3(0.0f, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float3(0.0f, 0.0f, float.NaN)), false); + TestUtils.AreEqual(all(float3(0.0f, -1.0f, 0.0f)), false); + TestUtils.AreEqual(all(float3(0.0f, float.NegativeInfinity, float.PositiveInfinity)), false); + + TestUtils.AreEqual(all(float3(float.PositiveInfinity, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float3(float.MaxValue, -0.0f, 1e38f)), false); + TestUtils.AreEqual(all(float3(-1.2e28f, 3.2f, 0.0f)), false); + TestUtils.AreEqual(all(float3(121.2f, 100.0f, -32.2f)), true); + } + + [TestCompiler] + public static void all_float4() + { + TestUtils.AreEqual(all(float4(float.NaN, float.NaN, float.NaN, float.NaN)), true); + + TestUtils.AreEqual(all(float4(0.0f, 0.0f, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(0.0f, 0.0f, 0.0f, float.NaN)), false); + TestUtils.AreEqual(all(float4(0.0f, 0.0f, 1.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(0.0f, 0.0f, float.NegativeInfinity, float.PositiveInfinity)), false); + + TestUtils.AreEqual(all(float4(0.0f, float.PositiveInfinity, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(0.0f, 11.2f, 0.0f, float.MinValue)), false); + TestUtils.AreEqual(all(float4(0.0f, -12.2f, float.MaxValue, 0u)), false); + TestUtils.AreEqual(all(float4(0.0f, -1.2e28f, -32.2f, 22.0f)), false); + + TestUtils.AreEqual(all(float4(323.2f, 0.0f, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(-564.6f, 0.0f, 0.0f, 1113f)), false); + TestUtils.AreEqual(all(float4(-23.0f, 0.0f, 0.2f, 0.0f)), false); + TestUtils.AreEqual(all(float4(102.0f, 0.0f, 5.5f, -22.0f)), false); + + TestUtils.AreEqual(all(float4(float.NaN, -99.0f, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(33.0f, 88.0f, 0.0f, 100.0f)), false); + TestUtils.AreEqual(all(float4(44.0f, 77.0f, -2000.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(55.0f, 66.0f, 5000.0f, 10000.2f)), true); + } + + [TestCompiler] + public static void all_double2() + { + TestUtils.AreEqual(all(double2(double.NaN, double.NaN)), true); + + TestUtils.AreEqual(all(double2(0, -0)), false); + TestUtils.AreEqual(all(double2(0, double.NaN)), false); + TestUtils.AreEqual(all(double2(-2.0, 0)), false); + TestUtils.AreEqual(all(double2(double.PositiveInfinity, double.NegativeInfinity)), true); + } + + + [TestCompiler] + public static void all_double3() + { + TestUtils.AreEqual(all(double3(double.NaN, double.NaN, double.NaN)), true); + + TestUtils.AreEqual(all(double3(0.0, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double3(0.0, 0.0, double.NaN)), false); + TestUtils.AreEqual(all(double3(0.0, -1.0, 0.0)), false); + TestUtils.AreEqual(all(double3(0.0, double.NegativeInfinity, double.PositiveInfinity)), false); + + TestUtils.AreEqual(all(double3(double.PositiveInfinity, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double3(double.MaxValue, -0.0, 1e108)), false); + TestUtils.AreEqual(all(double3(-1.2e128, 3.2, 0.0)), false); + TestUtils.AreEqual(all(double3(121.2, 100.0, -32.2)), true); + } + + [TestCompiler] + public static void all_double4() + { + TestUtils.AreEqual(all(double4(double.NaN, double.NaN, double.NaN, double.NaN)), true); + + TestUtils.AreEqual(all(double4(0.0, 0.0, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double4(0.0, 0.0, 0.0, double.NaN)), false); + TestUtils.AreEqual(all(double4(0.0, 0.0, 1.0, 0.0)), false); + TestUtils.AreEqual(all(double4(0.0, 0.0, double.NegativeInfinity, double.PositiveInfinity)), false); + + TestUtils.AreEqual(all(double4(0.0, double.PositiveInfinity, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double4(0.0, 11.2, 0.0, double.MinValue)), false); + TestUtils.AreEqual(all(double4(0.0, -12.2, double.MaxValue, 0.0)), false); + TestUtils.AreEqual(all(double4(0.0, -1.2e28, -32.2, 22.0)), false); + + TestUtils.AreEqual(all(double4(323.2, 0.0, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double4(-564.6, 0.0, 0.0, 1113.0)), false); + TestUtils.AreEqual(all(double4(-23.0, 0.0, 0.2, 0.0)), false); + TestUtils.AreEqual(all(double4(102.0, 0.0, 5.5, -22.0)), false); + + TestUtils.AreEqual(all(double4(double.NaN, -99.0, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double4(33.0, 88.0, 0.0, 100.0)), false); + TestUtils.AreEqual(all(double4(44.0, 77.0, -2000.0, 0.0)), false); + TestUtils.AreEqual(all(double4(55.0, 66.0, 5000.0, 10000.2)), true); + } + + + [TestCompiler] + public static void length_float2() + { + TestUtils.AreEqual(length(float2(0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(length(float2(1.2f, -2.6f)), 2.86356421265527063f, 8, false); + TestUtils.AreEqual(length(float2(1.2f, float.NaN)), float.NaN, 0, false); + TestUtils.AreEqual(length(float2(1.2f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(float2(1.2f, float.NegativeInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(float2(-1.2e18f, 2.6e18f)), 2.863564e18f, 8, false); + TestUtils.AreEqual(length(float2(-1.2e19f, -2.6e19f)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void length_float3() + { + TestUtils.AreEqual(length(float3(0.0f, 0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(length(float3(1.2f, -2.6f, 2.2f)), 3.611094f, 8, false); + TestUtils.AreEqual(length(float3(1.2f, float.NaN, 2.2f)), float.NaN, 0, false); + TestUtils.AreEqual(length(float3(1.2f, float.PositiveInfinity, 2.2f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(float3(1.2f, float.NegativeInfinity, 2.2f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(float3(-1.2e18f, 2.6e18f, 2.2e18f)), 3.611094e18f, 8, false); + TestUtils.AreEqual(length(float3(-1.2e19f, -2.6e19f, 2.2e19f)), float.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void length_float4() + { + TestUtils.AreEqual(length(float4(0.0f, 0.0f, 0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(length(float4(1.2f, -2.6f, 2.2f, -4.2f)), 5.538953f, 8, false); + TestUtils.AreEqual(length(float4(1.2f, float.NaN, 2.2f, -4.2f)), float.NaN, 0, false); + TestUtils.AreEqual(length(float4(1.2f, float.PositiveInfinity, 2.2f, -4.2f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(float4(1.2f, float.NegativeInfinity, 2.2f, -4.2f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(float4(-1.2e18f, 2.6e18f, 2.2e18f, -4.2e18f)), 5.538953e18f, 8, false); + TestUtils.AreEqual(length(float4(-1.2e19f, -2.6e19f, 2.2e19f, -4.2e19f)), float.PositiveInfinity, 8, false); + } + + + [TestCompiler] + public static void length_double2() + { + TestUtils.AreEqual(length(double2(0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(length(double2(1.2, -2.6)), 2.86356421265527063, 8, false); + TestUtils.AreEqual(length(double2(1.2, double.NaN)), double.NaN, 0, false); + TestUtils.AreEqual(length(double2(1.2, double.PositiveInfinity)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(double2(1.2, double.NegativeInfinity)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(double2(-1.2e153, 2.6e153)), 2.86356421265527063e153, 8, false); + } + + [TestCompiler] + public static void length_double3() + { + TestUtils.AreEqual(length(double3(0.0, 0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(length(double3(1.2, -2.6, 2.2)), 3.6110940170535577, 8, false); + TestUtils.AreEqual(length(double3(1.2, double.NaN, 2.2)), double.NaN, 0, false); + TestUtils.AreEqual(length(double3(1.2, double.PositiveInfinity, 2.2)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(double3(1.2, double.NegativeInfinity, 2.2)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(double3(-1.2e153, 2.6e153, 2.2e153)), 3.6110940170535577e153, 8, false); + } + + [TestCompiler] + public static void length_double4() + { + TestUtils.AreEqual(length(double4(0.0, 0.0, 0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(length(double4(1.2, -2.6, 2.2, -4.2)), 5.5389529696504916, 8, false); + TestUtils.AreEqual(length(double4(1.2, double.NaN, 2.2, -4.2)), double.NaN, 0, false); + TestUtils.AreEqual(length(double4(1.2, double.PositiveInfinity, 2.2, -4.2)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(double4(1.2, double.NegativeInfinity, 2.2, -4.2)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(double4(-1.2e153, 2.6e153, 2.2e153, -4.2e153)), 5.5389529696504916e153, 8, false); + } + + + [TestCompiler] + public static void lengthsq_float2() + { + TestUtils.AreEqual(lengthsq(float2(0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(lengthsq(float2(1.2f, -2.6f)), 8.2f, 8, false); + TestUtils.AreEqual(lengthsq(float2(1.2f, float.NaN)), float.NaN, 0, false); + TestUtils.AreEqual(lengthsq(float2(1.2f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(float2(1.2f, float.NegativeInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(float2(-1.2e18f, 2.6e18f)), 8.2e36f, 8, false); + } + + [TestCompiler] + public static void lengthsq_float3() + { + TestUtils.AreEqual(lengthsq(float3(0.0f, 0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(lengthsq(float3(1.2f, -2.6f, 2.2f)), 13.04f, 8, false); + TestUtils.AreEqual(lengthsq(float3(1.2f, float.NaN, 2.2f)), float.NaN, 0, false); + TestUtils.AreEqual(lengthsq(float3(1.2f, float.PositiveInfinity, 2.2f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(float3(1.2f, float.NegativeInfinity, 2.2f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(float3(-1.2e18f, 2.6e18f, 2.2e18f)), 1.304e37f, 8, false); + TestUtils.AreEqual(lengthsq(float3(-1.2e19f, -2.6e19f, 2.2e19f)), float.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void lengthsq_float4() + { + TestUtils.AreEqual(lengthsq(float4(0.0f, 0.0f, 0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(lengthsq(float4(1.2f, -2.6f, 2.2f, -4.2f)), 30.68f, 8, false); + TestUtils.AreEqual(lengthsq(float4(1.2f, float.NaN, 2.2f, -4.2f)), float.NaN, 0, false); + TestUtils.AreEqual(lengthsq(float4(1.2f, float.PositiveInfinity, 2.2f, -4.2f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(float4(1.2f, float.NegativeInfinity, 2.2f, -4.2f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(float4(-1.2e18f, 2.6e18f, 2.2e18f, -4.2e18f)), 3.068e37f, 8, false); + TestUtils.AreEqual(lengthsq(float4(-1.2e19f, -2.6e19f, 2.2e19f, -4.2e19f)), float.PositiveInfinity, 8, false); + } + + + [TestCompiler] + public static void lengthsq_double2() + { + TestUtils.AreEqual(lengthsq(double2(0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(lengthsq(double2(1.2, -2.6)), 8.2, 8, false); + TestUtils.AreEqual(lengthsq(double2(1.2, double.NaN)), double.NaN, 0, false); + TestUtils.AreEqual(lengthsq(double2(1.2, double.PositiveInfinity)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(double2(1.2, double.NegativeInfinity)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(double2(-1.2e153, 2.6e153)), 8.2e306, 8, false); + TestUtils.AreEqual(lengthsq(double2(-1.2e154, -2.6e154)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void lengthsq_double3() + { + TestUtils.AreEqual(lengthsq(double3(0.0, 0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(lengthsq(double3(1.2, -2.6, 2.2)), 13.04, 8, false); + TestUtils.AreEqual(lengthsq(double3(1.2, double.NaN, 2.2)), double.NaN, 0, false); + TestUtils.AreEqual(lengthsq(double3(1.2, double.PositiveInfinity, 2.2)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(double3(1.2, double.NegativeInfinity, 2.2)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(double3(-1.2e153, 2.6e153, 2.2e153)), 1.304e307, 8, false); + TestUtils.AreEqual(lengthsq(double3(-1.2e154, -2.6e154, 2.2e154)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void lengthsq_double4() + { + TestUtils.AreEqual(lengthsq(double4(0.0, 0.0, 0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(lengthsq(double4(1.2, -2.6, 2.2, -4.2)), 30.68, 8, false); + TestUtils.AreEqual(lengthsq(double4(1.2, double.NaN, 2.2, -4.2)), double.NaN, 0, false); + TestUtils.AreEqual(lengthsq(double4(1.2, double.PositiveInfinity, 2.2, -4.2)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(double4(1.2, double.NegativeInfinity, 2.2, -4.2)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(double4(-1.2e153, 2.6e153, 2.2e153, -4.2e153)), 3.068e307, 8, false); + TestUtils.AreEqual(lengthsq(double4(-1.2e154, -2.6e154, 2.2e154, -4.2e154)), double.PositiveInfinity, 0, false); + } + + + + + [TestCompiler] + public static void distance_float2() + { + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(1.3f, -2.4f)), 0.0f, 0, false); + + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(-5.3f, 4.3f)), 9.404786f, 8, false); + TestUtils.AreEqual(distance(float2(1.3e18f, -2.4e18f), float2(-5.3e18f, 4.3e18f)), 9.404786e18f, 8, false); + TestUtils.AreEqual(distance(float2(1.3e19f, -2.4e19f), float2(-5.3e19f, 4.3e19f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(float.NaN, 4.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(-5.3f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(distance(float2(1.3f, float.NegativeInfinity), float2(-5.3f, 4.3f)), float.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distance_float3() + { + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(1.3f, -2.4f)), 0.0f, 0, false); + + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(-5.3f, 4.3f)), 9.404786f, 8, false); + TestUtils.AreEqual(distance(float2(1.3e18f, -2.4e18f), float2(-5.3e18f, 4.3e18f)), 9.404786e18f, 8, false); + TestUtils.AreEqual(distance(float2(1.3e19f, -2.4e19f), float2(-5.3e19f, 4.3e19f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(float.NaN, 4.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(-5.3f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(distance(float2(1.3f, float.NegativeInfinity), float2(-5.3f, 4.3f)), float.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distance_float4() + { + TestUtils.AreEqual(distance(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(1.3f, -2.4f, 5.7f, 3.1f)), 0.0, 0, false); + + TestUtils.AreEqual(distance(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(-5.3f, 4.3f, 4.7f, 0.3f)), 9.863569f, 8, false); + TestUtils.AreEqual(distance(float4(1.3e18f, -2.4e18f, 5.7e18f, 3.1e18f), float4(-5.3e18f, 4.3e18f, 4.7e18f, 3e17f)), 9.863569e18f, 8, false); + TestUtils.AreEqual(distance(float4(1.3e19f, -2.4e19f, 5.7e19f, 3.1e19f), float4(-5.3e19f, 4.3e19f, 4.7e19f, 3e18f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(distance(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(float.NaN, 4.3f, 4.7f, 0.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distance(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(-5.3f, float.PositiveInfinity, 4.7f, 0.3f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(distance(float4(1.3f, float.NegativeInfinity, 5.7f, 3.1f), double4(-5.3f, 4.3f, 4.7f, 0.3f)), float.PositiveInfinity, 0, false); + } + + + [TestCompiler] + public static void distance_double2() + { + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(1.3, -2.4)), 0.0, 0, false); + + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(-5.3, 4.3)), 9.4047860156411852, 8, false); + TestUtils.AreEqual(distance(double2(1.3e153, -2.4e153), double2(-5.3e153, 4.3e153)), 9.4047860156411852e153, 8, false); + TestUtils.AreEqual(distance(double2(1.3e154, -2.4e154), double2(-5.3e154, 4.3e154)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(double.NaN, 4.3)), double.NaN, 0, false); + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(-5.3, double.PositiveInfinity)), double.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distance_double3() + { + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(1.3, -2.4)), 0.0, 0, false); + + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(-5.3, 4.3)), 9.4047860156411852, 8, false); + TestUtils.AreEqual(distance(double2(1.3e153, -2.4e153), double2(-5.3e153, 4.3e153)), 9.4047860156411852e153, 8, false); + TestUtils.AreEqual(distance(double2(1.3e154, -2.4e154), double2(-5.3e154, 4.3e154)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(double.NaN, 4.3)), double.NaN, 0, false); + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(-5.3, double.PositiveInfinity)), double.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distance_double4() + { + TestUtils.AreEqual(distance(double4(1.3, -2.4, 5.7, 3.1), double4(1.3, -2.4, 5.7, 3.1)), 0.0, 0, false); + + TestUtils.AreEqual(distance(double4(1.3, -2.4, 5.7, 3.1), double4(-5.3, 4.3, 4.7, 0.3)), 9.8635693336641579, 8, false); + TestUtils.AreEqual(distance(double4(1.3e153, -2.4e153, 5.7e153, 3.1e153), double4(-5.3e153, 4.3e153, 4.7e153, 3e152)), 9.8635693336641579e153, 8, false); + + TestUtils.AreEqual(distance(double4(1.3, -2.4, 5.7, 3.1), double4(double.NaN, 4.3, 4.7, 0.3)), double.NaN, 0, false); + TestUtils.AreEqual(distance(double4(1.3, -2.4, 5.7, 3.1), double4(-5.3, double.PositiveInfinity, 4.7, 0.3)), double.PositiveInfinity, 0, false); + } + + + [TestCompiler] + public static void distancesq_float2() + { + TestUtils.AreEqual(distancesq(float2(1.3f, -2.4f), float2(1.3f, -2.4f)), 0.0f, 0, false); + + TestUtils.AreEqual(distancesq(float2(1.3f, -2.4f), float2(-5.3f, 4.3f)), 88.45f, 8, false); + TestUtils.AreEqual(distancesq(float2(1.3e18f, -2.4e18f), float2(-5.3e18f, 4.3e18f)), 8.845e37f, 8, false); + + TestUtils.AreEqual(distancesq(float2(1.3f, -2.4f), float2(float.NaN, 4.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distancesq(float2(1.3f, -2.4f), float2(-5.3f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distancesq_float3() + { + TestUtils.AreEqual(distancesq(float3(1.3f, -2.4f, 5.7f), float3(1.3f, -2.4f, 5.7f)), 0.0f, 0, false); + + TestUtils.AreEqual(distancesq(float3(1.3f, -2.4f, 5.7f), float3(-5.3f, 4.3f, 4.7f)), 89.45f, 8, false); + TestUtils.AreEqual(distancesq(float3(1.3e18f, -2.4e18f, 5.7e18f), float3(-5.3e18f, 4.3e18f, 4.7e18f)), 8.945e37f, 8, false); + TestUtils.AreEqual(distancesq(float3(1.3e19f, -2.4e19f, 5.7e19f), float3(-5.3e19f, 4.3e19f, 4.7e19f)), float.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distancesq(float3(1.3f, -2.4f, 5.7f), float3(float.NaN, 4.3f, 4.7f)), float.NaN, 0, false); + TestUtils.AreEqual(distancesq(float3(1.3f, -2.4f, 5.7f), float3(-5.3f, float.PositiveInfinity, 4.7f)), float.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distancesq_float4() + { + TestUtils.AreEqual(distancesq(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(1.3f, -2.4f, 5.7f, 3.1f)), 0.0f, 0, false); + + TestUtils.AreEqual(distancesq(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(-5.3f, 4.3f, 4.7f, 0.3f)), 97.29f, 8, false); + TestUtils.AreEqual(distancesq(float4(1.3e18f, -2.4e18f, 5.7e18f, 3.1e18f), float4(-5.3e18f, 4.3e18f, 4.7e18f, 3e17f)), 9.729e37f, 8, false); + + TestUtils.AreEqual(distancesq(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(float.NaN, 4.3f, 4.7f, 0.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distancesq(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(-5.3f, float.PositiveInfinity, 4.7f, 0.3f)), float.PositiveInfinity, 0, false); + } + + + [TestCompiler] + public static void distancesq_double2() + { + TestUtils.AreEqual(distancesq(double2(1.3, -2.4), double2(1.3, -2.4)), 0.0, 0, false); + + TestUtils.AreEqual(distancesq(double2(1.3, -2.4), double2(-5.3, 4.3)), 88.45, 8, false); + TestUtils.AreEqual(distancesq(double2(1.3e153, -2.4e153), double2(-5.3e153, 4.3e153)), 8.845e307, 8, false); + TestUtils.AreEqual(distancesq(double2(1.3e154, -2.4e154), double2(-5.3e154, 4.3e154)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distancesq(double2(1.3, -2.4), double2(double.NaN, 4.3)), double.NaN, 0, false); + TestUtils.AreEqual(distancesq(double2(1.3, -2.4), double2(-5.3, double.PositiveInfinity)), double.PositiveInfinity, 8, false); + TestUtils.AreEqual(distancesq(double2(1.3, double.NegativeInfinity), double2(-5.3, 4.3)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void distancesq_double3() + { + TestUtils.AreEqual(distancesq(double3(1.3, -2.4, 5.7), double3(1.3, -2.4, 5.7)), 0.0, 0, false); + + TestUtils.AreEqual(distancesq(double3(1.3, -2.4, 5.7), double3(-5.3, 4.3, 4.7)), 89.45, 8, false); + TestUtils.AreEqual(distancesq(double3(1.3e153, -2.4e153, 5.7e153), double3(-5.3e153, 4.3e153, 4.7e153)), 8.945e307, 8, false); + TestUtils.AreEqual(distancesq(double3(1.3e154, -2.4e154, 5.7e154), double3(-5.3e154, 4.3e154, 4.7e154)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distancesq(double3(1.3, -2.4, 5.7), double3(double.NaN, 4.3, 4.7)), double.NaN, 0, false); + TestUtils.AreEqual(distancesq(double3(1.3, -2.4, 5.7), double3(-5.3, double.PositiveInfinity, 4.7)), double.PositiveInfinity, 8, false); + TestUtils.AreEqual(distancesq(double3(1.3, double.NegativeInfinity, 5.7), double3(-5.3, 4.3, 4.7)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void distancesq_double4() + { + TestUtils.AreEqual(distancesq(double4(1.3, -2.4, 5.7, 3.1), double4(1.3, -2.4, 5.7, 3.1)), 0.0, 0, false); + + TestUtils.AreEqual(distancesq(double4(1.3, -2.4, 5.7, 3.1), double4(-5.3, 4.3, 4.7, 0.3)), 97.29, 8, false); + TestUtils.AreEqual(distancesq(double4(1.3e153, -2.4e153, 5.7e153, 3.1e153), double4(-5.3e153, 4.3e153, 4.7e153, 3e152)), 9.729e307, 8, false); + TestUtils.AreEqual(distancesq(double4(1.3e154, -2.4e154, 5.7e154, 3.1e153), double4(-5.3e154, 4.3e154, 4.7e154, 3e153)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distancesq(double4(1.3, -2.4, 5.7, 3.1), double4(double.NaN, 4.3, 4.7, 0.3)), double.NaN, 0, false); + TestUtils.AreEqual(distancesq(double4(1.3, -2.4, 5.7, 3.1), double4(-5.3, double.PositiveInfinity, 4.7, 0.3)), double.PositiveInfinity, 8, false); + TestUtils.AreEqual(distancesq(double4(1.3, double.NegativeInfinity, 5.7, 3.1), double4(-5.3, 4.3, 4.7, 0.3)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_float_signed_zero() + { + TestUtils.AreEqual(rcp(-0.0f), float.NegativeInfinity); + TestUtils.AreEqual(rcp(float.NegativeInfinity), -0.0f); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_float2_signed_zero() + { + TestUtils.AreEqual(rcp(float2(-0.0f, float.NegativeInfinity)), float2(float.NegativeInfinity, -0.0f)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_float3_signed_zero() + { + TestUtils.AreEqual(rcp(float3(-0.0f, float.NegativeInfinity, -0.0f)), float3(float.NegativeInfinity, -0.0f, float.NegativeInfinity)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_float4_signed_zero() + { + TestUtils.AreEqual(rcp(float4(-0.0f, float.NegativeInfinity, -0.0f, float.NegativeInfinity)), float4(float.NegativeInfinity, -0.0f, float.NegativeInfinity, -0.0f)); + } + + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_double_signed_zero() + { + TestUtils.AreEqual(rcp(-0.0), double.NegativeInfinity); + TestUtils.AreEqual(rcp(double.NegativeInfinity), -0.0); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_double2_signed_zero() + { + TestUtils.AreEqual(rcp(double2(-0.0, double.NegativeInfinity)), double2(double.NegativeInfinity, -0.0)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_double3_signed_zero() + { + TestUtils.AreEqual(rcp(double3(-0.0, double.NegativeInfinity, -0.0)), double3(double.NegativeInfinity, -0.0, double.NegativeInfinity)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_double4_signed_zero() + { + TestUtils.AreEqual(rcp(double4(-0.0, double.NegativeInfinity, -0.0, double.NegativeInfinity)), double4(double.NegativeInfinity, -0.0, double.NegativeInfinity, -0.0)); + } + + [TestCompiler] + unsafe public static void compress_test() + { + int4 value = int4(0x12345678, 0x2468ACE0, 0x369BE147, 0x48C059D1); + + int ptrOffset = 4; + int* dest = stackalloc int[16]; + int* ptr = dest + ptrOffset; + + for(int offset = -4; offset <= 4; offset++) + { + for (int m = 0; m < 16; m++) + { + for (int i = 0; i < 16; i++) + dest[i] = 0; + + bool4 mask = bool4((m & 1) != 0, (m & 2) != 0, (m & 4) != 0, (m & 8) != 0); + compress(ptr, offset, value, mask); + + for(int i = 0; i < 16; i++) + { + int vectorIdx = i - (ptrOffset + offset); + + int v = 0; + if (vectorIdx >= 0 && vectorIdx < 4) + { + for(int k = 0; k < 4; k++) + { + if (mask[k] && vectorIdx-- == 0) + v = value[k]; + } + } + TestUtils.AreEqual(dest[i], v); + } + } + } + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.cs.meta new file mode 100644 index 0000000..40ad0f2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fca0e2ff0321404da5c0ab527bdc756 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.gen.cs new file mode 100644 index 0000000..b557e40 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.gen.cs @@ -0,0 +1,4139 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public partial class TestMath + { + [TestCompiler] + public static void abs_int() + { + TestUtils.AreEqual(abs(0), 0); + TestUtils.AreEqual(abs(-7), 7); + TestUtils.AreEqual(abs(11), 11); + TestUtils.AreEqual(abs(-2147483647), 2147483647); + TestUtils.AreEqual(abs(-2147483648), -2147483648); + } + + [TestCompiler] + public static void abs_int2() + { + TestUtils.AreEqual(abs(int2(0, -7)), int2(0, 7)); + TestUtils.AreEqual(abs(int2(11, -2147483647)), int2(11, 2147483647)); + TestUtils.AreEqual(abs(int2(-2147483648, -2147483648)), int2(-2147483648, -2147483648)); + } + + [TestCompiler] + public static void abs_int3() + { + TestUtils.AreEqual(abs(int3(0, -7, 11)), int3(0, 7, 11)); + TestUtils.AreEqual(abs(int3(-2147483647, -2147483648, -2147483648)), int3(2147483647, -2147483648, -2147483648)); + } + + [TestCompiler] + public static void abs_int4() + { + TestUtils.AreEqual(abs(int4(0, -7, 11, -2147483647)), int4(0, 7, 11, 2147483647)); + TestUtils.AreEqual(abs(int4(-2147483648, -2147483648, -2147483648, -2147483648)), int4(-2147483648, -2147483648, -2147483648, -2147483648)); + } + + [TestCompiler] + public static void abs_float() + { + TestUtils.AreEqual(abs(0f), 0f); + TestUtils.AreEqual(abs(-1.1f), 1.1f); + TestUtils.AreEqual(abs(2.2f), 2.2f); + TestUtils.AreEqual(abs(float.NegativeInfinity), float.PositiveInfinity); + TestUtils.AreEqual(abs(float.PositiveInfinity), float.PositiveInfinity); + } + + [TestCompiler] + public static void abs_float2() + { + TestUtils.AreEqual(abs(float2(0f, -1.1f)), float2(0f, 1.1f)); + TestUtils.AreEqual(abs(float2(2.2f, float.NegativeInfinity)), float2(2.2f, float.PositiveInfinity)); + TestUtils.AreEqual(abs(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_float3() + { + TestUtils.AreEqual(abs(float3(0f, -1.1f, 2.2f)), float3(0f, 1.1f, 2.2f)); + TestUtils.AreEqual(abs(float3(float.NegativeInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_float4() + { + TestUtils.AreEqual(abs(float4(0f, -1.1f, 2.2f, float.NegativeInfinity)), float4(0f, 1.1f, 2.2f, float.PositiveInfinity)); + TestUtils.AreEqual(abs(float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_double() + { + TestUtils.AreEqual(abs(0.0), 0.0); + TestUtils.AreEqual(abs(-1.1), 1.1); + TestUtils.AreEqual(abs(2.2), 2.2); + TestUtils.AreEqual(abs(double.NegativeInfinity), double.PositiveInfinity); + TestUtils.AreEqual(abs(double.PositiveInfinity), double.PositiveInfinity); + } + + [TestCompiler] + public static void abs_double2() + { + TestUtils.AreEqual(abs(double2(0.0, -1.1)), double2(0.0, 1.1)); + TestUtils.AreEqual(abs(double2(2.2, double.NegativeInfinity)), double2(2.2, double.PositiveInfinity)); + TestUtils.AreEqual(abs(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_double3() + { + TestUtils.AreEqual(abs(double3(0.0, -1.1, 2.2)), double3(0.0, 1.1, 2.2)); + TestUtils.AreEqual(abs(double3(double.NegativeInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_double4() + { + TestUtils.AreEqual(abs(double4(0.0, -1.1, 2.2, double.NegativeInfinity)), double4(0.0, 1.1, 2.2, double.PositiveInfinity)); + TestUtils.AreEqual(abs(double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)); + } + + [TestCompiler] + public static void isfinite_float() + { + TestUtils.AreEqual(isfinite(-float.NaN), false); + TestUtils.AreEqual(isfinite(float.NegativeInfinity), false); + TestUtils.AreEqual(isfinite(float.MinValue), true); + TestUtils.AreEqual(isfinite(-1f), true); + TestUtils.AreEqual(isfinite(0f), true); + TestUtils.AreEqual(isfinite(1f), true); + TestUtils.AreEqual(isfinite(float.MaxValue), true); + TestUtils.AreEqual(isfinite(float.PositiveInfinity), false); + TestUtils.AreEqual(isfinite(float.NaN), false); + } + + [TestCompiler] + public static void isfinite_float2() + { + TestUtils.AreEqual(isfinite(float2(-float.NaN, float.NegativeInfinity)), bool2(false, false)); + TestUtils.AreEqual(isfinite(float2(float.MinValue, -1f)), bool2(true, true)); + TestUtils.AreEqual(isfinite(float2(0f, 1f)), bool2(true, true)); + TestUtils.AreEqual(isfinite(float2(float.MaxValue, float.PositiveInfinity)), bool2(true, false)); + TestUtils.AreEqual(isfinite(float2(float.NaN, float.NaN)), bool2(false, false)); + } + + [TestCompiler] + public static void isfinite_float3() + { + TestUtils.AreEqual(isfinite(float3(-float.NaN, float.NegativeInfinity, float.MinValue)), bool3(false, false, true)); + TestUtils.AreEqual(isfinite(float3(-1f, 0f, 1f)), bool3(true, true, true)); + TestUtils.AreEqual(isfinite(float3(float.MaxValue, float.PositiveInfinity, float.NaN)), bool3(true, false, false)); + } + + [TestCompiler] + public static void isfinite_float4() + { + TestUtils.AreEqual(isfinite(float4(-float.NaN, float.NegativeInfinity, float.MinValue, -1f)), bool4(false, false, true, true)); + TestUtils.AreEqual(isfinite(float4(0f, 1f, float.MaxValue, float.PositiveInfinity)), bool4(true, true, true, false)); + TestUtils.AreEqual(isfinite(float4(float.NaN, float.NaN, float.NaN, float.NaN)), bool4(false, false, false, false)); + } + + [TestCompiler] + public static void isfinite_double() + { + TestUtils.AreEqual(isfinite(-double.NaN), false); + TestUtils.AreEqual(isfinite(double.NegativeInfinity), false); + TestUtils.AreEqual(isfinite(double.MinValue), true); + TestUtils.AreEqual(isfinite(-1.0), true); + TestUtils.AreEqual(isfinite(0.0), true); + TestUtils.AreEqual(isfinite(1.0), true); + TestUtils.AreEqual(isfinite(double.MaxValue), true); + TestUtils.AreEqual(isfinite(double.PositiveInfinity), false); + TestUtils.AreEqual(isfinite(double.NaN), false); + } + + [TestCompiler] + public static void isfinite_double2() + { + TestUtils.AreEqual(isfinite(double2(-double.NaN, double.NegativeInfinity)), bool2(false, false)); + TestUtils.AreEqual(isfinite(double2(double.MinValue, -1.0)), bool2(true, true)); + TestUtils.AreEqual(isfinite(double2(0.0, 1.0)), bool2(true, true)); + TestUtils.AreEqual(isfinite(double2(double.MaxValue, double.PositiveInfinity)), bool2(true, false)); + TestUtils.AreEqual(isfinite(double2(double.NaN, double.NaN)), bool2(false, false)); + } + + [TestCompiler] + public static void isfinite_double3() + { + TestUtils.AreEqual(isfinite(double3(-double.NaN, double.NegativeInfinity, double.MinValue)), bool3(false, false, true)); + TestUtils.AreEqual(isfinite(double3(-1.0, 0.0, 1.0)), bool3(true, true, true)); + TestUtils.AreEqual(isfinite(double3(double.MaxValue, double.PositiveInfinity, double.NaN)), bool3(true, false, false)); + } + + [TestCompiler] + public static void isfinite_double4() + { + TestUtils.AreEqual(isfinite(double4(-double.NaN, double.NegativeInfinity, double.MinValue, -1.0)), bool4(false, false, true, true)); + TestUtils.AreEqual(isfinite(double4(0.0, 1.0, double.MaxValue, double.PositiveInfinity)), bool4(true, true, true, false)); + TestUtils.AreEqual(isfinite(double4(double.NaN, double.NaN, double.NaN, double.NaN)), bool4(false, false, false, false)); + } + + [TestCompiler] + public static void isinf_float() + { + TestUtils.AreEqual(isinf(-float.NaN), false); + TestUtils.AreEqual(isinf(float.NegativeInfinity), true); + TestUtils.AreEqual(isinf(float.MinValue), false); + TestUtils.AreEqual(isinf(-1f), false); + TestUtils.AreEqual(isinf(0f), false); + TestUtils.AreEqual(isinf(1f), false); + TestUtils.AreEqual(isinf(float.MaxValue), false); + TestUtils.AreEqual(isinf(float.PositiveInfinity), true); + TestUtils.AreEqual(isinf(float.NaN), false); + } + + [TestCompiler] + public static void isinf_float2() + { + TestUtils.AreEqual(isinf(float2(-float.NaN, float.NegativeInfinity)), bool2(false, true)); + TestUtils.AreEqual(isinf(float2(float.MinValue, -1f)), bool2(false, false)); + TestUtils.AreEqual(isinf(float2(0f, 1f)), bool2(false, false)); + TestUtils.AreEqual(isinf(float2(float.MaxValue, float.PositiveInfinity)), bool2(false, true)); + TestUtils.AreEqual(isinf(float2(float.NaN, float.NaN)), bool2(false, false)); + } + + [TestCompiler] + public static void isinf_float3() + { + TestUtils.AreEqual(isinf(float3(-float.NaN, float.NegativeInfinity, float.MinValue)), bool3(false, true, false)); + TestUtils.AreEqual(isinf(float3(-1f, 0f, 1f)), bool3(false, false, false)); + TestUtils.AreEqual(isinf(float3(float.MaxValue, float.PositiveInfinity, float.NaN)), bool3(false, true, false)); + } + + [TestCompiler] + public static void isinf_float4() + { + TestUtils.AreEqual(isinf(float4(-float.NaN, float.NegativeInfinity, float.MinValue, -1f)), bool4(false, true, false, false)); + TestUtils.AreEqual(isinf(float4(0f, 1f, float.MaxValue, float.PositiveInfinity)), bool4(false, false, false, true)); + TestUtils.AreEqual(isinf(float4(float.NaN, float.NaN, float.NaN, float.NaN)), bool4(false, false, false, false)); + } + + [TestCompiler] + public static void isinf_double() + { + TestUtils.AreEqual(isinf(-double.NaN), false); + TestUtils.AreEqual(isinf(double.NegativeInfinity), true); + TestUtils.AreEqual(isinf(double.MinValue), false); + TestUtils.AreEqual(isinf(-1.0), false); + TestUtils.AreEqual(isinf(0.0), false); + TestUtils.AreEqual(isinf(1.0), false); + TestUtils.AreEqual(isinf(double.MaxValue), false); + TestUtils.AreEqual(isinf(double.PositiveInfinity), true); + TestUtils.AreEqual(isinf(double.NaN), false); + } + + [TestCompiler] + public static void isinf_double2() + { + TestUtils.AreEqual(isinf(double2(-double.NaN, double.NegativeInfinity)), bool2(false, true)); + TestUtils.AreEqual(isinf(double2(double.MinValue, -1.0)), bool2(false, false)); + TestUtils.AreEqual(isinf(double2(0.0, 1.0)), bool2(false, false)); + TestUtils.AreEqual(isinf(double2(double.MaxValue, double.PositiveInfinity)), bool2(false, true)); + TestUtils.AreEqual(isinf(double2(double.NaN, double.NaN)), bool2(false, false)); + } + + [TestCompiler] + public static void isinf_double3() + { + TestUtils.AreEqual(isinf(double3(-double.NaN, double.NegativeInfinity, double.MinValue)), bool3(false, true, false)); + TestUtils.AreEqual(isinf(double3(-1.0, 0.0, 1.0)), bool3(false, false, false)); + TestUtils.AreEqual(isinf(double3(double.MaxValue, double.PositiveInfinity, double.NaN)), bool3(false, true, false)); + } + + [TestCompiler] + public static void isinf_double4() + { + TestUtils.AreEqual(isinf(double4(-double.NaN, double.NegativeInfinity, double.MinValue, -1.0)), bool4(false, true, false, false)); + TestUtils.AreEqual(isinf(double4(0.0, 1.0, double.MaxValue, double.PositiveInfinity)), bool4(false, false, false, true)); + TestUtils.AreEqual(isinf(double4(double.NaN, double.NaN, double.NaN, double.NaN)), bool4(false, false, false, false)); + } + + [TestCompiler] + public static void isnan_float() + { + TestUtils.AreEqual(isnan(-float.NaN), true); + TestUtils.AreEqual(isnan(float.NegativeInfinity), false); + TestUtils.AreEqual(isnan(float.MinValue), false); + TestUtils.AreEqual(isnan(-1f), false); + TestUtils.AreEqual(isnan(0f), false); + TestUtils.AreEqual(isnan(1f), false); + TestUtils.AreEqual(isnan(float.MaxValue), false); + TestUtils.AreEqual(isnan(float.PositiveInfinity), false); + TestUtils.AreEqual(isnan(float.NaN), true); + } + + [TestCompiler] + public static void isnan_float2() + { + TestUtils.AreEqual(isnan(float2(-float.NaN, float.NegativeInfinity)), bool2(true, false)); + TestUtils.AreEqual(isnan(float2(float.MinValue, -1f)), bool2(false, false)); + TestUtils.AreEqual(isnan(float2(0f, 1f)), bool2(false, false)); + TestUtils.AreEqual(isnan(float2(float.MaxValue, float.PositiveInfinity)), bool2(false, false)); + TestUtils.AreEqual(isnan(float2(float.NaN, float.NaN)), bool2(true, true)); + } + + [TestCompiler] + public static void isnan_float3() + { + TestUtils.AreEqual(isnan(float3(-float.NaN, float.NegativeInfinity, float.MinValue)), bool3(true, false, false)); + TestUtils.AreEqual(isnan(float3(-1f, 0f, 1f)), bool3(false, false, false)); + TestUtils.AreEqual(isnan(float3(float.MaxValue, float.PositiveInfinity, float.NaN)), bool3(false, false, true)); + } + + [TestCompiler] + public static void isnan_float4() + { + TestUtils.AreEqual(isnan(float4(-float.NaN, float.NegativeInfinity, float.MinValue, -1f)), bool4(true, false, false, false)); + TestUtils.AreEqual(isnan(float4(0f, 1f, float.MaxValue, float.PositiveInfinity)), bool4(false, false, false, false)); + TestUtils.AreEqual(isnan(float4(float.NaN, float.NaN, float.NaN, float.NaN)), bool4(true, true, true, true)); + } + + [TestCompiler] + public static void isnan_double() + { + TestUtils.AreEqual(isnan(-double.NaN), true); + TestUtils.AreEqual(isnan(double.NegativeInfinity), false); + TestUtils.AreEqual(isnan(double.MinValue), false); + TestUtils.AreEqual(isnan(-1.0), false); + TestUtils.AreEqual(isnan(0.0), false); + TestUtils.AreEqual(isnan(1.0), false); + TestUtils.AreEqual(isnan(double.MaxValue), false); + TestUtils.AreEqual(isnan(double.PositiveInfinity), false); + TestUtils.AreEqual(isnan(double.NaN), true); + } + + [TestCompiler] + public static void isnan_double2() + { + TestUtils.AreEqual(isnan(double2(-double.NaN, double.NegativeInfinity)), bool2(true, false)); + TestUtils.AreEqual(isnan(double2(double.MinValue, -1.0)), bool2(false, false)); + TestUtils.AreEqual(isnan(double2(0.0, 1.0)), bool2(false, false)); + TestUtils.AreEqual(isnan(double2(double.MaxValue, double.PositiveInfinity)), bool2(false, false)); + TestUtils.AreEqual(isnan(double2(double.NaN, double.NaN)), bool2(true, true)); + } + + [TestCompiler] + public static void isnan_double3() + { + TestUtils.AreEqual(isnan(double3(-double.NaN, double.NegativeInfinity, double.MinValue)), bool3(true, false, false)); + TestUtils.AreEqual(isnan(double3(-1.0, 0.0, 1.0)), bool3(false, false, false)); + TestUtils.AreEqual(isnan(double3(double.MaxValue, double.PositiveInfinity, double.NaN)), bool3(false, false, true)); + } + + [TestCompiler] + public static void isnan_double4() + { + TestUtils.AreEqual(isnan(double4(-double.NaN, double.NegativeInfinity, double.MinValue, -1.0)), bool4(true, false, false, false)); + TestUtils.AreEqual(isnan(double4(0.0, 1.0, double.MaxValue, double.PositiveInfinity)), bool4(false, false, false, false)); + TestUtils.AreEqual(isnan(double4(double.NaN, double.NaN, double.NaN, double.NaN)), bool4(true, true, true, true)); + } + + [TestCompiler] + public static void sin_float() + { + TestUtils.AreEqual(sin(-1000000f), 0.3499935f, 1, false); + TestUtils.AreEqual(sin(-1.2f), -0.9320391f, 1, false); + TestUtils.AreEqual(sin(0f), 0f, 1, false); + TestUtils.AreEqual(sin(1.2f), 0.9320391f, 1, false); + TestUtils.AreEqual(sin(1000000f), -0.3499935f, 1, false); + TestUtils.AreEqual(sin(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(sin(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(sin(float.PositiveInfinity), float.NaN, 1, false); + } + + [TestCompiler] + public static void sin_float2() + { + TestUtils.AreEqual(sin(float2(-1000000f, -1.2f)), float2(0.3499935f, -0.9320391f), 1, false); + TestUtils.AreEqual(sin(float2(0f, 1.2f)), float2(0f, 0.9320391f), 1, false); + TestUtils.AreEqual(sin(float2(1000000f, float.NegativeInfinity)), float2(-0.3499935f, float.NaN), 1, false); + TestUtils.AreEqual(sin(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void sin_float3() + { + TestUtils.AreEqual(sin(float3(-1000000f, -1.2f, 0f)), float3(0.3499935f, -0.9320391f, 0f), 1, false); + TestUtils.AreEqual(sin(float3(1.2f, 1000000f, float.NegativeInfinity)), float3(0.9320391f, -0.3499935f, float.NaN), 1, false); + TestUtils.AreEqual(sin(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void sin_float4() + { + TestUtils.AreEqual(sin(float4(-1000000f, -1.2f, 0f, 1.2f)), float4(0.3499935f, -0.9320391f, 0f, 0.9320391f), 1, false); + TestUtils.AreEqual(sin(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(-0.3499935f, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void sin_double() + { + TestUtils.AreEqual(sin(-1000000.0), 0.34999350217129294, 32, false); + TestUtils.AreEqual(sin(-1.2), -0.9320390859672264, 32, false); + TestUtils.AreEqual(sin(0.0), 0.0, 32, false); + TestUtils.AreEqual(sin(1.2), 0.9320390859672264, 32, false); + TestUtils.AreEqual(sin(1000000.0), -0.34999350217129294, 32, false); + TestUtils.AreEqual(sin(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(sin(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(sin(double.PositiveInfinity), double.NaN, 32, false); + } + + [TestCompiler] + public static void sin_double2() + { + TestUtils.AreEqual(sin(double2(-1000000.0, -1.2)), double2(0.34999350217129294, -0.9320390859672264), 32, false); + TestUtils.AreEqual(sin(double2(0.0, 1.2)), double2(0.0, 0.9320390859672264), 32, false); + TestUtils.AreEqual(sin(double2(1000000.0, double.NegativeInfinity)), double2(-0.34999350217129294, double.NaN), 32, false); + TestUtils.AreEqual(sin(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sin_double3() + { + TestUtils.AreEqual(sin(double3(-1000000.0, -1.2, 0.0)), double3(0.34999350217129294, -0.9320390859672264, 0.0), 32, false); + TestUtils.AreEqual(sin(double3(1.2, 1000000.0, double.NegativeInfinity)), double3(0.9320390859672264, -0.34999350217129294, double.NaN), 32, false); + TestUtils.AreEqual(sin(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sin_double4() + { + TestUtils.AreEqual(sin(double4(-1000000.0, -1.2, 0.0, 1.2)), double4(0.34999350217129294, -0.9320390859672264, 0.0, 0.9320390859672264), 32, false); + TestUtils.AreEqual(sin(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(-0.34999350217129294, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void cos_float() + { + TestUtils.AreEqual(cos(-1000000f), 0.936752141f, 8, false); + TestUtils.AreEqual(cos(-1.2f), 0.362357765f, 8, false); + TestUtils.AreEqual(cos(0f), 1f, 8, false); + TestUtils.AreEqual(cos(1.2f), 0.362357765f, 8, false); + TestUtils.AreEqual(cos(1000000f), 0.936752141f, 8, false); + TestUtils.AreEqual(cos(float.NegativeInfinity), float.NaN, 8, false); + TestUtils.AreEqual(cos(float.NaN), float.NaN, 8, false); + TestUtils.AreEqual(cos(float.PositiveInfinity), float.NaN, 8, false); + } + + [TestCompiler] + public static void cos_float2() + { + TestUtils.AreEqual(cos(float2(-1000000f, -1.2f)), float2(0.936752141f, 0.362357765f), 8, false); + TestUtils.AreEqual(cos(float2(0f, 1.2f)), float2(1f, 0.362357765f), 8, false); + TestUtils.AreEqual(cos(float2(1000000f, float.NegativeInfinity)), float2(0.936752141f, float.NaN), 8, false); + TestUtils.AreEqual(cos(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void cos_float3() + { + TestUtils.AreEqual(cos(float3(-1000000f, -1.2f, 0f)), float3(0.936752141f, 0.362357765f, 1f), 8, false); + TestUtils.AreEqual(cos(float3(1.2f, 1000000f, float.NegativeInfinity)), float3(0.362357765f, 0.936752141f, float.NaN), 8, false); + TestUtils.AreEqual(cos(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void cos_float4() + { + TestUtils.AreEqual(cos(float4(-1000000f, -1.2f, 0f, 1.2f)), float4(0.936752141f, 0.362357765f, 1f, 0.362357765f), 8, false); + TestUtils.AreEqual(cos(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(0.936752141f, float.NaN, float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void cos_double() + { + TestUtils.AreEqual(cos(-1000000.0), 0.93675212753314474, 32, false); + TestUtils.AreEqual(cos(-1.2), 0.36235775447667357, 32, false); + TestUtils.AreEqual(cos(0.0), 1.0, 32, false); + TestUtils.AreEqual(cos(1.2), 0.36235775447667357, 32, false); + TestUtils.AreEqual(cos(1000000.0), 0.93675212753314474, 32, false); + TestUtils.AreEqual(cos(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(cos(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(cos(double.PositiveInfinity), double.NaN, 32, false); + } + + [TestCompiler] + public static void cos_double2() + { + TestUtils.AreEqual(cos(double2(-1000000.0, -1.2)), double2(0.93675212753314474, 0.36235775447667357), 32, false); + TestUtils.AreEqual(cos(double2(0.0, 1.2)), double2(1.0, 0.36235775447667357), 32, false); + TestUtils.AreEqual(cos(double2(1000000.0, double.NegativeInfinity)), double2(0.93675212753314474, double.NaN), 32, false); + TestUtils.AreEqual(cos(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void cos_double3() + { + TestUtils.AreEqual(cos(double3(-1000000.0, -1.2, 0.0)), double3(0.93675212753314474, 0.36235775447667357, 1.0), 32, false); + TestUtils.AreEqual(cos(double3(1.2, 1000000.0, double.NegativeInfinity)), double3(0.36235775447667357, 0.93675212753314474, double.NaN), 32, false); + TestUtils.AreEqual(cos(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void cos_double4() + { + TestUtils.AreEqual(cos(double4(-1000000.0, -1.2, 0.0, 1.2)), double4(0.93675212753314474, 0.36235775447667357, 1.0, 0.36235775447667357), 32, false); + TestUtils.AreEqual(cos(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(0.93675212753314474, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void tan_float() + { + TestUtils.AreEqual(tan(-1000000f), 0.373624444f, 1, false); + TestUtils.AreEqual(tan(-1.2f), -2.57215166f, 1, false); + TestUtils.AreEqual(tan(0f), 0f, 1, false); + TestUtils.AreEqual(tan(1.2f), 2.57215166f, 1, false); + TestUtils.AreEqual(tan(1000000f), -0.373624444f, 1, false); + TestUtils.AreEqual(tan(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(tan(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(tan(float.PositiveInfinity), float.NaN, 1, false); + } + + [TestCompiler] + public static void tan_float2() + { + TestUtils.AreEqual(tan(float2(-1000000f, -1.2f)), float2(0.373624444f, -2.57215166f), 1, false); + TestUtils.AreEqual(tan(float2(0f, 1.2f)), float2(0f, 2.57215166f), 1, false); + TestUtils.AreEqual(tan(float2(1000000f, float.NegativeInfinity)), float2(-0.373624444f, float.NaN), 1, false); + TestUtils.AreEqual(tan(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void tan_float3() + { + TestUtils.AreEqual(tan(float3(-1000000f, -1.2f, 0f)), float3(0.373624444f, -2.57215166f, 0f), 1, false); + TestUtils.AreEqual(tan(float3(1.2f, 1000000f, float.NegativeInfinity)), float3(2.57215166f, -0.373624444f, float.NaN), 1, false); + TestUtils.AreEqual(tan(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void tan_float4() + { + TestUtils.AreEqual(tan(float4(-1000000f, -1.2f, 0f, 1.2f)), float4(0.373624444f, -2.57215166f, 0f, 2.57215166f), 1, false); + TestUtils.AreEqual(tan(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(-0.373624444f, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void tan_double() + { + TestUtils.AreEqual(tan(-1000000.0), 0.373624453987599, 32, false); + TestUtils.AreEqual(tan(-1.2), -2.57215162212632, 32, false); + TestUtils.AreEqual(tan(0.0), 0.0, 32, false); + TestUtils.AreEqual(tan(1.2), 2.57215162212632, 32, false); + TestUtils.AreEqual(tan(1000000.0), -0.373624453987599, 32, false); + TestUtils.AreEqual(tan(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(tan(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(tan(double.PositiveInfinity), double.NaN, 32, false); + } + + [TestCompiler] + public static void tan_double2() + { + TestUtils.AreEqual(tan(double2(-1000000.0, -1.2)), double2(0.373624453987599, -2.57215162212632), 32, false); + TestUtils.AreEqual(tan(double2(0.0, 1.2)), double2(0.0, 2.57215162212632), 32, false); + TestUtils.AreEqual(tan(double2(1000000.0, double.NegativeInfinity)), double2(-0.373624453987599, double.NaN), 32, false); + TestUtils.AreEqual(tan(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void tan_double3() + { + TestUtils.AreEqual(tan(double3(-1000000.0, -1.2, 0.0)), double3(0.373624453987599, -2.57215162212632, 0.0), 32, false); + TestUtils.AreEqual(tan(double3(1.2, 1000000.0, double.NegativeInfinity)), double3(2.57215162212632, -0.373624453987599, double.NaN), 32, false); + TestUtils.AreEqual(tan(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void tan_double4() + { + TestUtils.AreEqual(tan(double4(-1000000.0, -1.2, 0.0, 1.2)), double4(0.373624453987599, -2.57215162212632, 0.0, 2.57215162212632), 32, false); + TestUtils.AreEqual(tan(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(-0.373624453987599, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void atan_float() + { + TestUtils.AreEqual(atan(-1000000f), -1.5707953f, 1, false); + TestUtils.AreEqual(atan(-1.2f), -0.876058042f, 1, false); + TestUtils.AreEqual(atan(0f), 0f, 1, false); + TestUtils.AreEqual(atan(1.2f), 0.876058042f, 1, false); + TestUtils.AreEqual(atan(1000000f), 1.5707953f, 1, false); + TestUtils.AreEqual(atan(float.NegativeInfinity), -1.57079637f, 1, false); + TestUtils.AreEqual(atan(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(atan(float.PositiveInfinity), 1.57079637f, 1, false); + } + + [TestCompiler] + public static void atan_float2() + { + TestUtils.AreEqual(atan(float2(-1000000f, -1.2f)), float2(-1.5707953f, -0.876058042f), 1, false); + TestUtils.AreEqual(atan(float2(0f, 1.2f)), float2(0f, 0.876058042f), 1, false); + TestUtils.AreEqual(atan(float2(1000000f, float.NegativeInfinity)), float2(1.5707953f, -1.57079637f), 1, false); + TestUtils.AreEqual(atan(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, 1.57079637f), 1, false); + } + + [TestCompiler] + public static void atan_float3() + { + TestUtils.AreEqual(atan(float3(-1000000f, -1.2f, 0f)), float3(-1.5707953f, -0.876058042f, 0f), 1, false); + TestUtils.AreEqual(atan(float3(1.2f, 1000000f, float.NegativeInfinity)), float3(0.876058042f, 1.5707953f, -1.57079637f), 1, false); + TestUtils.AreEqual(atan(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, 1.57079637f, 1.57079637f), 1, false); + } + + [TestCompiler] + public static void atan_float4() + { + TestUtils.AreEqual(atan(float4(-1000000f, -1.2f, 0f, 1.2f)), float4(-1.5707953f, -0.876058042f, 0f, 0.876058042f), 1, false); + TestUtils.AreEqual(atan(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(1.5707953f, -1.57079637f, float.NaN, 1.57079637f), 1, false); + } + + [TestCompiler] + public static void atan_double() + { + TestUtils.AreEqual(atan(-1000000.0), -1.5707953267948971, 32, false); + TestUtils.AreEqual(atan(-1.2), -0.87605805059819342, 32, false); + TestUtils.AreEqual(atan(0.0), 0.0, 32, false); + TestUtils.AreEqual(atan(1.2), 0.87605805059819342, 32, false); + TestUtils.AreEqual(atan(1000000.0), 1.5707953267948971, 32, false); + TestUtils.AreEqual(atan(double.NegativeInfinity), -1.570796326794897, 32, false); + TestUtils.AreEqual(atan(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(atan(double.PositiveInfinity), 1.570796326794897, 32, false); + } + + [TestCompiler] + public static void atan_double2() + { + TestUtils.AreEqual(atan(double2(-1000000.0, -1.2)), double2(-1.5707953267948971, -0.87605805059819342), 32, false); + TestUtils.AreEqual(atan(double2(0.0, 1.2)), double2(0.0, 0.87605805059819342), 32, false); + TestUtils.AreEqual(atan(double2(1000000.0, double.NegativeInfinity)), double2(1.5707953267948971, -1.570796326794897), 32, false); + TestUtils.AreEqual(atan(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, 1.570796326794897), 32, false); + } + + [TestCompiler] + public static void atan_double3() + { + TestUtils.AreEqual(atan(double3(-1000000.0, -1.2, 0.0)), double3(-1.5707953267948971, -0.87605805059819342, 0.0), 32, false); + TestUtils.AreEqual(atan(double3(1.2, 1000000.0, double.NegativeInfinity)), double3(0.87605805059819342, 1.5707953267948971, -1.570796326794897), 32, false); + TestUtils.AreEqual(atan(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, 1.570796326794897, 1.570796326794897), 32, false); + } + + [TestCompiler] + public static void atan_double4() + { + TestUtils.AreEqual(atan(double4(-1000000.0, -1.2, 0.0, 1.2)), double4(-1.5707953267948971, -0.87605805059819342, 0.0, 0.87605805059819342), 32, false); + TestUtils.AreEqual(atan(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(1.5707953267948971, -1.570796326794897, double.NaN, 1.570796326794897), 32, false); + } + + [TestCompiler] + public static void atan2_float() + { + TestUtils.AreEqual(atan2(3.1f, 2.4f), 0.9119903f, 1, false); + TestUtils.AreEqual(atan2(3.1f, -2.4f), 2.22960234f, 1, false); + TestUtils.AreEqual(atan2(-3.1f, 2.4f), -0.9119903f, 1, false); + TestUtils.AreEqual(atan2(-3.1f, -2.4f), -2.22960234f, 1, false); + TestUtils.AreEqual(atan2(0f, 0f), 0f, 1, false); + TestUtils.AreEqual(atan2(1f, float.NegativeInfinity), 3.14159274f, 1, false); + TestUtils.AreEqual(atan2(1f, float.PositiveInfinity), 0f, 1, false); + TestUtils.AreEqual(atan2(float.NegativeInfinity, 1f), -1.57079637f, 1, false); + TestUtils.AreEqual(atan2(float.PositiveInfinity, 1f), 1.57079637f, 1, false); + TestUtils.AreEqual(atan2(1f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(atan2(float.NaN, 1f), float.NaN, 1, false); + TestUtils.AreEqual(atan2(float.NaN, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void atan2_float2() + { + TestUtils.AreEqual(atan2(float2(3.1f, 3.1f), float2(2.4f, -2.4f)), float2(0.9119903f, 2.22960234f), 1, false); + TestUtils.AreEqual(atan2(float2(-3.1f, -3.1f), float2(2.4f, -2.4f)), float2(-0.9119903f, -2.22960234f), 1, false); + TestUtils.AreEqual(atan2(float2(0f, 1f), float2(0f, float.NegativeInfinity)), float2(0f, 3.14159274f), 1, false); + TestUtils.AreEqual(atan2(float2(1f, float.NegativeInfinity), float2(float.PositiveInfinity, 1f)), float2(0f, -1.57079637f), 1, false); + TestUtils.AreEqual(atan2(float2(float.PositiveInfinity, 1f), float2(1f, float.NaN)), float2(1.57079637f, float.NaN), 1, false); + TestUtils.AreEqual(atan2(float2(float.NaN, float.NaN), float2(1f, float.NaN)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void atan2_float3() + { + TestUtils.AreEqual(atan2(float3(3.1f, 3.1f, -3.1f), float3(2.4f, -2.4f, 2.4f)), float3(0.9119903f, 2.22960234f, -0.9119903f), 1, false); + TestUtils.AreEqual(atan2(float3(-3.1f, 0f, 1f), float3(-2.4f, 0f, float.NegativeInfinity)), float3(-2.22960234f, 0f, 3.14159274f), 1, false); + TestUtils.AreEqual(atan2(float3(1f, float.NegativeInfinity, float.PositiveInfinity), float3(float.PositiveInfinity, 1f, 1f)), float3(0f, -1.57079637f, 1.57079637f), 1, false); + TestUtils.AreEqual(atan2(float3(1f, float.NaN, float.NaN), float3(float.NaN, 1f, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void atan2_float4() + { + TestUtils.AreEqual(atan2(float4(3.1f, 3.1f, -3.1f, -3.1f), float4(2.4f, -2.4f, 2.4f, -2.4f)), float4(0.9119903f, 2.22960234f, -0.9119903f, -2.22960234f), 1, false); + TestUtils.AreEqual(atan2(float4(0f, 1f, 1f, float.NegativeInfinity), float4(0f, float.NegativeInfinity, float.PositiveInfinity, 1f)), float4(0f, 3.14159274f, 0f, -1.57079637f), 1, false); + TestUtils.AreEqual(atan2(float4(float.PositiveInfinity, 1f, float.NaN, float.NaN), float4(1f, float.NaN, 1f, float.NaN)), float4(1.57079637f, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void atan2_double() + { + TestUtils.AreEqual(atan2(3.1, 2.4), 0.91199029067742043, 32, false); + TestUtils.AreEqual(atan2(3.1, -2.4), 2.2296023629123729, 32, false); + TestUtils.AreEqual(atan2(-3.1, 2.4), -0.91199029067742043, 32, false); + TestUtils.AreEqual(atan2(-3.1, -2.4), -2.2296023629123729, 32, false); + TestUtils.AreEqual(atan2(0.0, 0.0), 0.0, 32, false); + TestUtils.AreEqual(atan2(1.0, double.NegativeInfinity), 3.1415926535897931, 32, false); + TestUtils.AreEqual(atan2(1.0, double.PositiveInfinity), 0.0, 32, false); + TestUtils.AreEqual(atan2(double.NegativeInfinity, 1.0), -1.5707963267948966, 32, false); + TestUtils.AreEqual(atan2(double.PositiveInfinity, 1.0), 1.5707963267948966, 32, false); + TestUtils.AreEqual(atan2(1.0, double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(atan2(double.NaN, 1.0), double.NaN, 32, false); + TestUtils.AreEqual(atan2(double.NaN, double.NaN), double.NaN, 32, false); + } + + [TestCompiler] + public static void atan2_double2() + { + TestUtils.AreEqual(atan2(double2(3.1, 3.1), double2(2.4, -2.4)), double2(0.91199029067742043, 2.2296023629123729), 32, false); + TestUtils.AreEqual(atan2(double2(-3.1, -3.1), double2(2.4, -2.4)), double2(-0.91199029067742043, -2.2296023629123729), 32, false); + TestUtils.AreEqual(atan2(double2(0.0, 1.0), double2(0.0, double.NegativeInfinity)), double2(0.0, 3.1415926535897931), 32, false); + TestUtils.AreEqual(atan2(double2(1.0, double.NegativeInfinity), double2(double.PositiveInfinity, 1.0)), double2(0.0, -1.5707963267948966), 32, false); + TestUtils.AreEqual(atan2(double2(double.PositiveInfinity, 1.0), double2(1.0, double.NaN)), double2(1.5707963267948966, double.NaN), 32, false); + TestUtils.AreEqual(atan2(double2(double.NaN, double.NaN), double2(1.0, double.NaN)), double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void atan2_double3() + { + TestUtils.AreEqual(atan2(double3(3.1, 3.1, -3.1), double3(2.4, -2.4, 2.4)), double3(0.91199029067742043, 2.2296023629123729, -0.91199029067742043), 32, false); + TestUtils.AreEqual(atan2(double3(-3.1, 0.0, 1.0), double3(-2.4, 0.0, double.NegativeInfinity)), double3(-2.2296023629123729, 0.0, 3.1415926535897931), 32, false); + TestUtils.AreEqual(atan2(double3(1.0, double.NegativeInfinity, double.PositiveInfinity), double3(double.PositiveInfinity, 1.0, 1.0)), double3(0.0, -1.5707963267948966, 1.5707963267948966), 32, false); + TestUtils.AreEqual(atan2(double3(1.0, double.NaN, double.NaN), double3(double.NaN, 1.0, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void atan2_double4() + { + TestUtils.AreEqual(atan2(double4(3.1, 3.1, -3.1, -3.1), double4(2.4, -2.4, 2.4, -2.4)), double4(0.91199029067742043, 2.2296023629123729, -0.91199029067742043, -2.2296023629123729), 32, false); + TestUtils.AreEqual(atan2(double4(0.0, 1.0, 1.0, double.NegativeInfinity), double4(0.0, double.NegativeInfinity, double.PositiveInfinity, 1.0)), double4(0.0, 3.1415926535897931, 0.0, -1.5707963267948966), 32, false); + TestUtils.AreEqual(atan2(double4(double.PositiveInfinity, 1.0, double.NaN, double.NaN), double4(1.0, double.NaN, 1.0, double.NaN)), double4(1.5707963267948966, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sinh_float() + { + TestUtils.AreEqual(sinh(-2f), -3.62686038f, 1, false); + TestUtils.AreEqual(sinh(-1.2f), -1.5094614f, 1, false); + TestUtils.AreEqual(sinh(0f), 0f, 1, false); + TestUtils.AreEqual(sinh(1.2f), 1.5094614f, 1, false); + TestUtils.AreEqual(sinh(2f), 3.62686038f, 1, false); + TestUtils.AreEqual(sinh(float.NegativeInfinity), float.NegativeInfinity, 1, false); + TestUtils.AreEqual(sinh(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(sinh(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void sinh_float2() + { + TestUtils.AreEqual(sinh(float2(-2f, -1.2f)), float2(-3.62686038f, -1.5094614f), 1, false); + TestUtils.AreEqual(sinh(float2(0f, 1.2f)), float2(0f, 1.5094614f), 1, false); + TestUtils.AreEqual(sinh(float2(2f, float.NegativeInfinity)), float2(3.62686038f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(sinh(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sinh_float3() + { + TestUtils.AreEqual(sinh(float3(-2f, -1.2f, 0f)), float3(-3.62686038f, -1.5094614f, 0f), 1, false); + TestUtils.AreEqual(sinh(float3(1.2f, 2f, float.NegativeInfinity)), float3(1.5094614f, 3.62686038f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(sinh(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sinh_float4() + { + TestUtils.AreEqual(sinh(float4(-2f, -1.2f, 0f, 1.2f)), float4(-3.62686038f, -1.5094614f, 0f, 1.5094614f), 1, false); + TestUtils.AreEqual(sinh(float4(2f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(3.62686038f, float.NegativeInfinity, float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sinh_double() + { + TestUtils.AreEqual(sinh(-2.0), -3.6268604078470181, 32, false); + TestUtils.AreEqual(sinh(-1.2), -1.509461355412173, 32, false); + TestUtils.AreEqual(sinh(0.0), 0.0, 32, false); + TestUtils.AreEqual(sinh(1.2), 1.509461355412173, 32, false); + TestUtils.AreEqual(sinh(2.0), 3.6268604078470181, 32, false); + TestUtils.AreEqual(sinh(double.NegativeInfinity), double.NegativeInfinity, 32, false); + TestUtils.AreEqual(sinh(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(sinh(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void sinh_double2() + { + TestUtils.AreEqual(sinh(double2(-2.0, -1.2)), double2(-3.6268604078470181, -1.509461355412173), 32, false); + TestUtils.AreEqual(sinh(double2(0.0, 1.2)), double2(0.0, 1.509461355412173), 32, false); + TestUtils.AreEqual(sinh(double2(2.0, double.NegativeInfinity)), double2(3.6268604078470181, double.NegativeInfinity), 32, false); + TestUtils.AreEqual(sinh(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void sinh_double3() + { + TestUtils.AreEqual(sinh(double3(-2.0, -1.2, 0.0)), double3(-3.6268604078470181, -1.509461355412173, 0.0), 32, false); + TestUtils.AreEqual(sinh(double3(1.2, 2.0, double.NegativeInfinity)), double3(1.509461355412173, 3.6268604078470181, double.NegativeInfinity), 32, false); + TestUtils.AreEqual(sinh(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void sinh_double4() + { + TestUtils.AreEqual(sinh(double4(-2.0, -1.2, 0.0, 1.2)), double4(-3.6268604078470181, -1.509461355412173, 0.0, 1.509461355412173), 32, false); + TestUtils.AreEqual(sinh(double4(2.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(3.6268604078470181, double.NegativeInfinity, double.NaN, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void cosh_float() + { + TestUtils.AreEqual(cosh(-2f), 3.76219559f, 1, false); + TestUtils.AreEqual(cosh(-1.2f), 1.81065559f, 1, false); + TestUtils.AreEqual(cosh(0f), 1f, 1, false); + TestUtils.AreEqual(cosh(1.2f), 1.81065559f, 1, false); + TestUtils.AreEqual(cosh(2f), 3.76219559f, 1, false); + TestUtils.AreEqual(cosh(float.NegativeInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(cosh(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(cosh(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void cosh_float2() + { + TestUtils.AreEqual(cosh(float2(-2f, -1.2f)), float2(3.76219559f, 1.81065559f), 1, false); + TestUtils.AreEqual(cosh(float2(0f, 1.2f)), float2(1f, 1.81065559f), 1, false); + TestUtils.AreEqual(cosh(float2(2f, float.NegativeInfinity)), float2(3.76219559f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(cosh(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void cosh_float3() + { + TestUtils.AreEqual(cosh(float3(-2f, -1.2f, 0f)), float3(3.76219559f, 1.81065559f, 1f), 1, false); + TestUtils.AreEqual(cosh(float3(1.2f, 2f, float.NegativeInfinity)), float3(1.81065559f, 3.76219559f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(cosh(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void cosh_float4() + { + TestUtils.AreEqual(cosh(float4(-2f, -1.2f, 0f, 1.2f)), float4(3.76219559f, 1.81065559f, 1f, 1.81065559f), 1, false); + TestUtils.AreEqual(cosh(float4(2f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(3.76219559f, float.PositiveInfinity, float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void cosh_double() + { + TestUtils.AreEqual(cosh(-2.0), 3.7621956910836314, 32, false); + TestUtils.AreEqual(cosh(-1.2), 1.81065556732437, 32, false); + TestUtils.AreEqual(cosh(0.0), 1.0, 32, false); + TestUtils.AreEqual(cosh(1.2), 1.81065556732437, 32, false); + TestUtils.AreEqual(cosh(2.0), 3.7621956910836314, 32, false); + TestUtils.AreEqual(cosh(double.NegativeInfinity), double.PositiveInfinity, 32, false); + TestUtils.AreEqual(cosh(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(cosh(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void cosh_double2() + { + TestUtils.AreEqual(cosh(double2(-2.0, -1.2)), double2(3.7621956910836314, 1.81065556732437), 32, false); + TestUtils.AreEqual(cosh(double2(0.0, 1.2)), double2(1.0, 1.81065556732437), 32, false); + TestUtils.AreEqual(cosh(double2(2.0, double.NegativeInfinity)), double2(3.7621956910836314, double.PositiveInfinity), 32, false); + TestUtils.AreEqual(cosh(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void cosh_double3() + { + TestUtils.AreEqual(cosh(double3(-2.0, -1.2, 0.0)), double3(3.7621956910836314, 1.81065556732437, 1.0), 32, false); + TestUtils.AreEqual(cosh(double3(1.2, 2.0, double.NegativeInfinity)), double3(1.81065556732437, 3.7621956910836314, double.PositiveInfinity), 32, false); + TestUtils.AreEqual(cosh(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void cosh_double4() + { + TestUtils.AreEqual(cosh(double4(-2.0, -1.2, 0.0, 1.2)), double4(3.7621956910836314, 1.81065556732437, 1.0, 1.81065556732437), 32, false); + TestUtils.AreEqual(cosh(double4(2.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(3.7621956910836314, double.PositiveInfinity, double.NaN, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void tanh_float() + { + TestUtils.AreEqual(tanh(-2f), -0.9640276f, 1, false); + TestUtils.AreEqual(tanh(-1.2f), -0.8336546f, 1, false); + TestUtils.AreEqual(tanh(0f), 0f, 1, false); + TestUtils.AreEqual(tanh(1.2f), 0.8336546f, 1, false); + TestUtils.AreEqual(tanh(2f), 0.9640276f, 1, false); + TestUtils.AreEqual(tanh(float.NegativeInfinity), -1f, 1, false); + TestUtils.AreEqual(tanh(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(tanh(float.PositiveInfinity), 1f, 1, false); + } + + [TestCompiler] + public static void tanh_float2() + { + TestUtils.AreEqual(tanh(float2(-2f, -1.2f)), float2(-0.9640276f, -0.8336546f), 1, false); + TestUtils.AreEqual(tanh(float2(0f, 1.2f)), float2(0f, 0.8336546f), 1, false); + TestUtils.AreEqual(tanh(float2(2f, float.NegativeInfinity)), float2(0.9640276f, -1f), 1, false); + TestUtils.AreEqual(tanh(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, 1f), 1, false); + } + + [TestCompiler] + public static void tanh_float3() + { + TestUtils.AreEqual(tanh(float3(-2f, -1.2f, 0f)), float3(-0.9640276f, -0.8336546f, 0f), 1, false); + TestUtils.AreEqual(tanh(float3(1.2f, 2f, float.NegativeInfinity)), float3(0.8336546f, 0.9640276f, -1f), 1, false); + TestUtils.AreEqual(tanh(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, 1f, 1f), 1, false); + } + + [TestCompiler] + public static void tanh_float4() + { + TestUtils.AreEqual(tanh(float4(-2f, -1.2f, 0f, 1.2f)), float4(-0.9640276f, -0.8336546f, 0f, 0.8336546f), 1, false); + TestUtils.AreEqual(tanh(float4(2f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(0.9640276f, -1f, float.NaN, 1f), 1, false); + } + + [TestCompiler] + public static void tanh_double() + { + TestUtils.AreEqual(tanh(-2.0), -0.9640275800758169, 32, false); + TestUtils.AreEqual(tanh(-1.2), -0.83365460701215521, 32, false); + TestUtils.AreEqual(tanh(0.0), 0.0, 32, false); + TestUtils.AreEqual(tanh(1.2), 0.83365460701215521, 32, false); + TestUtils.AreEqual(tanh(2.0), 0.9640275800758169, 32, false); + TestUtils.AreEqual(tanh(double.NegativeInfinity), -1.0, 32, false); + TestUtils.AreEqual(tanh(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(tanh(double.PositiveInfinity), 1.0, 32, false); + } + + [TestCompiler] + public static void tanh_double2() + { + TestUtils.AreEqual(tanh(double2(-2.0, -1.2)), double2(-0.9640275800758169, -0.83365460701215521), 32, false); + TestUtils.AreEqual(tanh(double2(0.0, 1.2)), double2(0.0, 0.83365460701215521), 32, false); + TestUtils.AreEqual(tanh(double2(2.0, double.NegativeInfinity)), double2(0.9640275800758169, -1.0), 32, false); + TestUtils.AreEqual(tanh(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, 1.0), 32, false); + } + + [TestCompiler] + public static void tanh_double3() + { + TestUtils.AreEqual(tanh(double3(-2.0, -1.2, 0.0)), double3(-0.9640275800758169, -0.83365460701215521, 0.0), 32, false); + TestUtils.AreEqual(tanh(double3(1.2, 2.0, double.NegativeInfinity)), double3(0.83365460701215521, 0.9640275800758169, -1.0), 32, false); + TestUtils.AreEqual(tanh(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, 1.0, 1.0), 32, false); + } + + [TestCompiler] + public static void tanh_double4() + { + TestUtils.AreEqual(tanh(double4(-2.0, -1.2, 0.0, 1.2)), double4(-0.9640275800758169, -0.83365460701215521, 0.0, 0.83365460701215521), 32, false); + TestUtils.AreEqual(tanh(double4(2.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(0.9640275800758169, -1.0, double.NaN, 1.0), 32, false); + } + + [TestCompiler] + public static void exp_float() + { + TestUtils.AreEqual(exp(-10f), 4.539993E-05f, 1, false); + TestUtils.AreEqual(exp(-1.2f), 0.301194221f, 1, false); + TestUtils.AreEqual(exp(0f), 1f, 1, false); + TestUtils.AreEqual(exp(1.2f), 3.320117f, 1, false); + TestUtils.AreEqual(exp(float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(exp(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(exp(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void exp_float2() + { + TestUtils.AreEqual(exp(float2(-10f, -1.2f)), float2(4.539993E-05f, 0.301194221f), 1, false); + TestUtils.AreEqual(exp(float2(0f, 1.2f)), float2(1f, 3.320117f), 1, false); + TestUtils.AreEqual(exp(float2(float.NegativeInfinity, float.NaN)), float2(0f, float.NaN), 1, false); + TestUtils.AreEqual(exp(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp_float3() + { + TestUtils.AreEqual(exp(float3(-10f, -1.2f, 0f)), float3(4.539993E-05f, 0.301194221f, 1f), 1, false); + TestUtils.AreEqual(exp(float3(1.2f, float.NegativeInfinity, float.NaN)), float3(3.320117f, 0f, float.NaN), 1, false); + TestUtils.AreEqual(exp(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp_float4() + { + TestUtils.AreEqual(exp(float4(-10f, -1.2f, 0f, 1.2f)), float4(4.539993E-05f, 0.301194221f, 1f, 3.320117f), 1, false); + TestUtils.AreEqual(exp(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp_double() + { + TestUtils.AreEqual(exp(-10.0), 4.5399929762484847E-05, 32, false); + TestUtils.AreEqual(exp(-1.2), 0.30119421191220208, 32, false); + TestUtils.AreEqual(exp(0.0), 1.0, 32, false); + TestUtils.AreEqual(exp(1.2), 3.3201169227365477, 32, false); + TestUtils.AreEqual(exp(double.NegativeInfinity), 0.0, 32, false); + TestUtils.AreEqual(exp(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(exp(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void exp_double2() + { + TestUtils.AreEqual(exp(double2(-10.0, -1.2)), double2(4.5399929762484847E-05, 0.30119421191220208), 32, false); + TestUtils.AreEqual(exp(double2(0.0, 1.2)), double2(1.0, 3.3201169227365477), 32, false); + TestUtils.AreEqual(exp(double2(double.NegativeInfinity, double.NaN)), double2(0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp_double3() + { + TestUtils.AreEqual(exp(double3(-10.0, -1.2, 0.0)), double3(4.5399929762484847E-05, 0.30119421191220208, 1.0), 32, false); + TestUtils.AreEqual(exp(double3(1.2, double.NegativeInfinity, double.NaN)), double3(3.3201169227365477, 0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp_double4() + { + TestUtils.AreEqual(exp(double4(-10.0, -1.2, 0.0, 1.2)), double4(4.5399929762484847E-05, 0.30119421191220208, 1.0, 3.3201169227365477), 32, false); + TestUtils.AreEqual(exp(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp2_float() + { + TestUtils.AreEqual(exp2(-10f), 0.0009765625f, 1, false); + TestUtils.AreEqual(exp2(-1.2f), 0.4352753f, 1, false); + TestUtils.AreEqual(exp2(0f), 1f, 1, false); + TestUtils.AreEqual(exp2(1.2f), 2.29739666f, 1, false); + TestUtils.AreEqual(exp2(float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(exp2(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(exp2(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void exp2_float2() + { + TestUtils.AreEqual(exp2(float2(-10f, -1.2f)), float2(0.0009765625f, 0.4352753f), 1, false); + TestUtils.AreEqual(exp2(float2(0f, 1.2f)), float2(1f, 2.29739666f), 1, false); + TestUtils.AreEqual(exp2(float2(float.NegativeInfinity, float.NaN)), float2(0f, float.NaN), 1, false); + TestUtils.AreEqual(exp2(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp2_float3() + { + TestUtils.AreEqual(exp2(float3(-10f, -1.2f, 0f)), float3(0.0009765625f, 0.4352753f, 1f), 1, false); + TestUtils.AreEqual(exp2(float3(1.2f, float.NegativeInfinity, float.NaN)), float3(2.29739666f, 0f, float.NaN), 1, false); + TestUtils.AreEqual(exp2(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp2_float4() + { + TestUtils.AreEqual(exp2(float4(-10f, -1.2f, 0f, 1.2f)), float4(0.0009765625f, 0.4352753f, 1f, 2.29739666f), 1, false); + TestUtils.AreEqual(exp2(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp2_double() + { + TestUtils.AreEqual(exp2(-10.0), 0.0009765625, 32, false); + TestUtils.AreEqual(exp2(-1.2), 0.435275281648062, 32, false); + TestUtils.AreEqual(exp2(0.0), 1.0, 32, false); + TestUtils.AreEqual(exp2(1.2), 2.29739670999407, 32, false); + TestUtils.AreEqual(exp2(double.NegativeInfinity), 0.0, 32, false); + TestUtils.AreEqual(exp2(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(exp2(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void exp2_double2() + { + TestUtils.AreEqual(exp2(double2(-10.0, -1.2)), double2(0.0009765625, 0.435275281648062), 32, false); + TestUtils.AreEqual(exp2(double2(0.0, 1.2)), double2(1.0, 2.29739670999407), 32, false); + TestUtils.AreEqual(exp2(double2(double.NegativeInfinity, double.NaN)), double2(0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp2(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp2_double3() + { + TestUtils.AreEqual(exp2(double3(-10.0, -1.2, 0.0)), double3(0.0009765625, 0.435275281648062, 1.0), 32, false); + TestUtils.AreEqual(exp2(double3(1.2, double.NegativeInfinity, double.NaN)), double3(2.29739670999407, 0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp2(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp2_double4() + { + TestUtils.AreEqual(exp2(double4(-10.0, -1.2, 0.0, 1.2)), double4(0.0009765625, 0.435275281648062, 1.0, 2.29739670999407), 32, false); + TestUtils.AreEqual(exp2(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_float() + { + TestUtils.AreEqual(exp10(-10f), 1E-10f, 32, false); + TestUtils.AreEqual(exp10(-1.2f), 0.06309573f, 32, false); + TestUtils.AreEqual(exp10(0f), 1f, 32, false); + TestUtils.AreEqual(exp10(1.2f), 15.8489323f, 32, false); + TestUtils.AreEqual(exp10(float.NegativeInfinity), 0f, 32, false); + TestUtils.AreEqual(exp10(float.NaN), float.NaN, 32, false); + TestUtils.AreEqual(exp10(float.PositiveInfinity), float.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void exp10_float2() + { + TestUtils.AreEqual(exp10(float2(-10f, -1.2f)), float2(1E-10f, 0.06309573f), 32, false); + TestUtils.AreEqual(exp10(float2(0f, 1.2f)), float2(1f, 15.8489323f), 32, false); + TestUtils.AreEqual(exp10(float2(float.NegativeInfinity, float.NaN)), float2(0f, float.NaN), 32, false); + TestUtils.AreEqual(exp10(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_float3() + { + TestUtils.AreEqual(exp10(float3(-10f, -1.2f, 0f)), float3(1E-10f, 0.06309573f, 1f), 32, false); + TestUtils.AreEqual(exp10(float3(1.2f, float.NegativeInfinity, float.NaN)), float3(15.8489323f, 0f, float.NaN), 32, false); + TestUtils.AreEqual(exp10(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_float4() + { + TestUtils.AreEqual(exp10(float4(-10f, -1.2f, 0f, 1.2f)), float4(1E-10f, 0.06309573f, 1f, 15.8489323f), 32, false); + TestUtils.AreEqual(exp10(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_double() + { + TestUtils.AreEqual(exp10(-10.0), 1E-10, 32, false); + TestUtils.AreEqual(exp10(-1.2), 0.063095734448019331, 32, false); + TestUtils.AreEqual(exp10(0.0), 1.0, 32, false); + TestUtils.AreEqual(exp10(1.2), 15.848931924611135, 32, false); + TestUtils.AreEqual(exp10(double.NegativeInfinity), 0.0, 32, false); + TestUtils.AreEqual(exp10(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(exp10(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void exp10_double2() + { + TestUtils.AreEqual(exp10(double2(-10.0, -1.2)), double2(1E-10, 0.063095734448019331), 32, false); + TestUtils.AreEqual(exp10(double2(0.0, 1.2)), double2(1.0, 15.848931924611135), 32, false); + TestUtils.AreEqual(exp10(double2(double.NegativeInfinity, double.NaN)), double2(0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp10(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_double3() + { + TestUtils.AreEqual(exp10(double3(-10.0, -1.2, 0.0)), double3(1E-10, 0.063095734448019331, 1.0), 32, false); + TestUtils.AreEqual(exp10(double3(1.2, double.NegativeInfinity, double.NaN)), double3(15.848931924611135, 0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp10(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_double4() + { + TestUtils.AreEqual(exp10(double4(-10.0, -1.2, 0.0, 1.2)), double4(1E-10, 0.063095734448019331, 1.0, 15.848931924611135), 32, false); + TestUtils.AreEqual(exp10(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log_float() + { + TestUtils.AreEqual(log(1.2E-09f), -20.5409451f, 1, false); + TestUtils.AreEqual(log(1f), 0f, 1, false); + TestUtils.AreEqual(log(1.2E+10f), 23.2081718f, 1, false); + TestUtils.AreEqual(log(-1f), float.NaN, 1, false); + TestUtils.AreEqual(log(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(log(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(log(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void log_float2() + { + TestUtils.AreEqual(log(float2(1.2E-09f, 1f)), float2(-20.5409451f, 0f), 1, false); + TestUtils.AreEqual(log(float2(1.2E+10f, -1f)), float2(23.2081718f, float.NaN), 1, false); + TestUtils.AreEqual(log(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log_float3() + { + TestUtils.AreEqual(log(float3(1.2E-09f, 1f, 1.2E+10f)), float3(-20.5409451f, 0f, 23.2081718f), 1, false); + TestUtils.AreEqual(log(float3(-1f, float.NegativeInfinity, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log_float4() + { + TestUtils.AreEqual(log(float4(1.2E-09f, 1f, 1.2E+10f, -1f)), float4(-20.5409451f, 0f, 23.2081718f, float.NaN), 1, false); + TestUtils.AreEqual(log(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log_double() + { + TestUtils.AreEqual(log(1.2E-09), -20.540944280152456, 32, false); + TestUtils.AreEqual(log(1.0), 0.0, 32, false); + TestUtils.AreEqual(log(12000000000.0), 23.208172486734409, 32, false); + TestUtils.AreEqual(log(-1.0), double.NaN, 32, false); + TestUtils.AreEqual(log(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(log(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(log(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void log_double2() + { + TestUtils.AreEqual(log(double2(1.2E-09, 1.0)), double2(-20.540944280152456, 0.0), 32, false); + TestUtils.AreEqual(log(double2(12000000000.0, -1.0)), double2(23.208172486734409, double.NaN), 32, false); + TestUtils.AreEqual(log(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log_double3() + { + TestUtils.AreEqual(log(double3(1.2E-09, 1.0, 12000000000.0)), double3(-20.540944280152456, 0.0, 23.208172486734409), 32, false); + TestUtils.AreEqual(log(double3(-1.0, double.NegativeInfinity, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log_double4() + { + TestUtils.AreEqual(log(double4(1.2E-09, 1.0, 12000000000.0, -1.0)), double4(-20.540944280152456, 0.0, 23.208172486734409, double.NaN), 32, false); + TestUtils.AreEqual(log(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log2_float() + { + TestUtils.AreEqual(log2(1.2E-09f), -29.63432f, 1, false); + TestUtils.AreEqual(log2(1f), 0f, 1, false); + TestUtils.AreEqual(log2(1.2E+10f), 33.4823151f, 1, false); + TestUtils.AreEqual(log2(-1f), float.NaN, 1, false); + TestUtils.AreEqual(log2(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(log2(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(log2(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void log2_float2() + { + TestUtils.AreEqual(log2(float2(1.2E-09f, 1f)), float2(-29.63432f, 0f), 1, false); + TestUtils.AreEqual(log2(float2(1.2E+10f, -1f)), float2(33.4823151f, float.NaN), 1, false); + TestUtils.AreEqual(log2(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log2(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log2_float3() + { + TestUtils.AreEqual(log2(float3(1.2E-09f, 1f, 1.2E+10f)), float3(-29.63432f, 0f, 33.4823151f), 1, false); + TestUtils.AreEqual(log2(float3(-1f, float.NegativeInfinity, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log2(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log2_float4() + { + TestUtils.AreEqual(log2(float4(1.2E-09f, 1f, 1.2E+10f, -1f)), float4(-29.63432f, 0f, 33.4823151f, float.NaN), 1, false); + TestUtils.AreEqual(log2(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log2_double() + { + TestUtils.AreEqual(log2(1.2E-09), -29.634318448152467, 32, false); + TestUtils.AreEqual(log2(1.0), 0.0, 32, false); + TestUtils.AreEqual(log2(12000000000.0), 33.482315354707417, 32, false); + TestUtils.AreEqual(log2(-1.0), double.NaN, 32, false); + TestUtils.AreEqual(log2(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(log2(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(log2(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void log2_double2() + { + TestUtils.AreEqual(log2(double2(1.2E-09, 1.0)), double2(-29.634318448152467, 0.0), 32, false); + TestUtils.AreEqual(log2(double2(12000000000.0, -1.0)), double2(33.482315354707417, double.NaN), 32, false); + TestUtils.AreEqual(log2(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log2(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log2_double3() + { + TestUtils.AreEqual(log2(double3(1.2E-09, 1.0, 12000000000.0)), double3(-29.634318448152467, 0.0, 33.482315354707417), 32, false); + TestUtils.AreEqual(log2(double3(-1.0, double.NegativeInfinity, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log2(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log2_double4() + { + TestUtils.AreEqual(log2(double4(1.2E-09, 1.0, 12000000000.0, -1.0)), double4(-29.634318448152467, 0.0, 33.482315354707417, double.NaN), 32, false); + TestUtils.AreEqual(log2(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log10_float() + { + TestUtils.AreEqual(log10(1.2E-09f), -8.920818f, 1, false); + TestUtils.AreEqual(log10(1f), 0f, 1, false); + TestUtils.AreEqual(log10(1.2E+10f), 10.0791817f, 1, false); + TestUtils.AreEqual(log10(-1f), float.NaN, 1, false); + TestUtils.AreEqual(log10(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(log10(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(log10(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void log10_float2() + { + TestUtils.AreEqual(log10(float2(1.2E-09f, 1f)), float2(-8.920818f, 0f), 1, false); + TestUtils.AreEqual(log10(float2(1.2E+10f, -1f)), float2(10.0791817f, float.NaN), 1, false); + TestUtils.AreEqual(log10(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log10(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log10_float3() + { + TestUtils.AreEqual(log10(float3(1.2E-09f, 1f, 1.2E+10f)), float3(-8.920818f, 0f, 10.0791817f), 1, false); + TestUtils.AreEqual(log10(float3(-1f, float.NegativeInfinity, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log10(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log10_float4() + { + TestUtils.AreEqual(log10(float4(1.2E-09f, 1f, 1.2E+10f, -1f)), float4(-8.920818f, 0f, 10.0791817f, float.NaN), 1, false); + TestUtils.AreEqual(log10(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log10_double() + { + TestUtils.AreEqual(log10(1.2E-09), -8.9208187539523749, 32, false); + TestUtils.AreEqual(log10(1.0), 0.0, 32, false); + TestUtils.AreEqual(log10(12000000000.0), 10.079181246047623, 32, false); + TestUtils.AreEqual(log10(-1.0), double.NaN, 32, false); + TestUtils.AreEqual(log10(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(log10(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(log10(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void log10_double2() + { + TestUtils.AreEqual(log10(double2(1.2E-09, 1.0)), double2(-8.9208187539523749, 0.0), 32, false); + TestUtils.AreEqual(log10(double2(12000000000.0, -1.0)), double2(10.079181246047623, double.NaN), 32, false); + TestUtils.AreEqual(log10(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log10(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log10_double3() + { + TestUtils.AreEqual(log10(double3(1.2E-09, 1.0, 12000000000.0)), double3(-8.9208187539523749, 0.0, 10.079181246047623), 32, false); + TestUtils.AreEqual(log10(double3(-1.0, double.NegativeInfinity, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log10(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log10_double4() + { + TestUtils.AreEqual(log10(double4(1.2E-09, 1.0, 12000000000.0, -1.0)), double4(-8.9208187539523749, 0.0, 10.079181246047623, double.NaN), 32, false); + TestUtils.AreEqual(log10(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void radians_float() + { + TestUtils.AreEqual(radians(-123.45f), -2.154609f, 1, false); + TestUtils.AreEqual(radians(0f), 0f, 1, false); + TestUtils.AreEqual(radians(123.45f), 2.154609f, 1, false); + TestUtils.AreEqual(radians(float.NegativeInfinity), float.NegativeInfinity, 1, false); + TestUtils.AreEqual(radians(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(radians(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void radians_float2() + { + TestUtils.AreEqual(radians(float2(-123.45f, 0f)), float2(-2.154609f, 0f), 1, false); + TestUtils.AreEqual(radians(float2(123.45f, float.NegativeInfinity)), float2(2.154609f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(radians(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_float3() + { + TestUtils.AreEqual(radians(float3(-123.45f, 0f, 123.45f)), float3(-2.154609f, 0f, 2.154609f), 1, false); + TestUtils.AreEqual(radians(float3(float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float3(float.NegativeInfinity, float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_float4() + { + TestUtils.AreEqual(radians(float4(-123.45f, 0f, 123.45f, float.NegativeInfinity)), float4(-2.154609f, 0f, 2.154609f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(radians(float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_double() + { + TestUtils.AreEqual(radians(-123.45), -2.154608961587, 1, false); + TestUtils.AreEqual(radians(0.0), 0.0, 1, false); + TestUtils.AreEqual(radians(123.45), 2.154608961587, 1, false); + TestUtils.AreEqual(radians(double.NegativeInfinity), double.NegativeInfinity, 1, false); + TestUtils.AreEqual(radians(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(radians(double.PositiveInfinity), double.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void radians_double2() + { + TestUtils.AreEqual(radians(double2(-123.45, 0.0)), double2(-2.154608961587, 0.0), 1, false); + TestUtils.AreEqual(radians(double2(123.45, double.NegativeInfinity)), double2(2.154608961587, double.NegativeInfinity), 1, false); + TestUtils.AreEqual(radians(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_double3() + { + TestUtils.AreEqual(radians(double3(-123.45, 0.0, 123.45)), double3(-2.154608961587, 0.0, 2.154608961587), 1, false); + TestUtils.AreEqual(radians(double3(double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double3(double.NegativeInfinity, double.NaN, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_double4() + { + TestUtils.AreEqual(radians(double4(-123.45, 0.0, 123.45, double.NegativeInfinity)), double4(-2.154608961587, 0.0, 2.154608961587, double.NegativeInfinity), 1, false); + TestUtils.AreEqual(radians(double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_float() + { + TestUtils.AreEqual(degrees(-123.45f), -7073.164f, 1, false); + TestUtils.AreEqual(degrees(0f), 0f, 1, false); + TestUtils.AreEqual(degrees(123.45f), 7073.164f, 1, false); + TestUtils.AreEqual(degrees(float.NegativeInfinity), float.NegativeInfinity, 1, false); + TestUtils.AreEqual(degrees(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(degrees(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void degrees_float2() + { + TestUtils.AreEqual(degrees(float2(-123.45f, 0f)), float2(-7073.164f, 0f), 1, false); + TestUtils.AreEqual(degrees(float2(123.45f, float.NegativeInfinity)), float2(7073.164f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(degrees(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_float3() + { + TestUtils.AreEqual(degrees(float3(-123.45f, 0f, 123.45f)), float3(-7073.164f, 0f, 7073.164f), 1, false); + TestUtils.AreEqual(degrees(float3(float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float3(float.NegativeInfinity, float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_float4() + { + TestUtils.AreEqual(degrees(float4(-123.45f, 0f, 123.45f, float.NegativeInfinity)), float4(-7073.164f, 0f, 7073.164f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(degrees(float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_double() + { + TestUtils.AreEqual(degrees(-123.45), -7073.1639808900127, 1, false); + TestUtils.AreEqual(degrees(0.0), 0.0, 1, false); + TestUtils.AreEqual(degrees(123.45), 7073.1639808900127, 1, false); + TestUtils.AreEqual(degrees(double.NegativeInfinity), double.NegativeInfinity, 1, false); + TestUtils.AreEqual(degrees(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(degrees(double.PositiveInfinity), double.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void degrees_double2() + { + TestUtils.AreEqual(degrees(double2(-123.45, 0.0)), double2(-7073.1639808900127, 0.0), 1, false); + TestUtils.AreEqual(degrees(double2(123.45, double.NegativeInfinity)), double2(7073.1639808900127, double.NegativeInfinity), 1, false); + TestUtils.AreEqual(degrees(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_double3() + { + TestUtils.AreEqual(degrees(double3(-123.45, 0.0, 123.45)), double3(-7073.1639808900127, 0.0, 7073.1639808900127), 1, false); + TestUtils.AreEqual(degrees(double3(double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double3(double.NegativeInfinity, double.NaN, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_double4() + { + TestUtils.AreEqual(degrees(double4(-123.45, 0.0, 123.45, double.NegativeInfinity)), double4(-7073.1639808900127, 0.0, 7073.1639808900127, double.NegativeInfinity), 1, false); + TestUtils.AreEqual(degrees(double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sign_float() + { + TestUtils.AreEqual(sign(-123.45f), -1f); + TestUtils.AreEqual(sign(-1E-20f), -1f); + TestUtils.AreEqual(sign(0f), 0f); + TestUtils.AreEqual(sign(1E-10f), 1f); + TestUtils.AreEqual(sign(123.45f), 1f); + TestUtils.AreEqual(sign(float.NegativeInfinity), -1f); + TestUtils.AreEqual(sign(float.NaN), 0f); + TestUtils.AreEqual(sign(float.PositiveInfinity), 1f); + } + + [TestCompiler] + public static void sign_float2() + { + TestUtils.AreEqual(sign(float2(-123.45f, -1E-20f)), float2(-1f, -1f)); + TestUtils.AreEqual(sign(float2(0f, 1E-10f)), float2(0f, 1f)); + TestUtils.AreEqual(sign(float2(123.45f, float.NegativeInfinity)), float2(1f, -1f)); + TestUtils.AreEqual(sign(float2(float.NaN, float.PositiveInfinity)), float2(0f, 1f)); + } + + [TestCompiler] + public static void sign_float3() + { + TestUtils.AreEqual(sign(float3(-123.45f, -1E-20f, 0f)), float3(-1f, -1f, 0f)); + TestUtils.AreEqual(sign(float3(1E-10f, 123.45f, float.NegativeInfinity)), float3(1f, 1f, -1f)); + TestUtils.AreEqual(sign(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(0f, 1f, 1f)); + } + + [TestCompiler] + public static void sign_float4() + { + TestUtils.AreEqual(sign(float4(-123.45f, -1E-20f, 0f, 1E-10f)), float4(-1f, -1f, 0f, 1f)); + TestUtils.AreEqual(sign(float4(123.45f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(1f, -1f, 0f, 1f)); + } + + [TestCompiler] + public static void sign_double() + { + TestUtils.AreEqual(sign(-123.45), -1.0); + TestUtils.AreEqual(sign(-1E-20), -1.0); + TestUtils.AreEqual(sign(0.0), 0.0); + TestUtils.AreEqual(sign(1E-10), 1.0); + TestUtils.AreEqual(sign(123.45), 1.0); + TestUtils.AreEqual(sign(double.NegativeInfinity), -1.0); + TestUtils.AreEqual(sign(double.NaN), 0.0); + TestUtils.AreEqual(sign(double.PositiveInfinity), 1.0); + } + + [TestCompiler] + public static void sign_double2() + { + TestUtils.AreEqual(sign(double2(-123.45, -1E-20)), double2(-1.0, -1.0)); + TestUtils.AreEqual(sign(double2(0.0, 1E-10)), double2(0.0, 1.0)); + TestUtils.AreEqual(sign(double2(123.45, double.NegativeInfinity)), double2(1.0, -1.0)); + TestUtils.AreEqual(sign(double2(double.NaN, double.PositiveInfinity)), double2(0.0, 1.0)); + } + + [TestCompiler] + public static void sign_double3() + { + TestUtils.AreEqual(sign(double3(-123.45, -1E-20, 0.0)), double3(-1.0, -1.0, 0.0)); + TestUtils.AreEqual(sign(double3(1E-10, 123.45, double.NegativeInfinity)), double3(1.0, 1.0, -1.0)); + TestUtils.AreEqual(sign(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(0.0, 1.0, 1.0)); + } + + [TestCompiler] + public static void sign_double4() + { + TestUtils.AreEqual(sign(double4(-123.45, -1E-20, 0.0, 1E-10)), double4(-1.0, -1.0, 0.0, 1.0)); + TestUtils.AreEqual(sign(double4(123.45, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(1.0, -1.0, 0.0, 1.0)); + } + + [TestCompiler] + public static void sqrt_float() + { + TestUtils.AreEqual(sqrt(-1f), float.NaN, 1, false); + TestUtils.AreEqual(sqrt(0f), 0f, 1, false); + TestUtils.AreEqual(sqrt(1E-10f), 1E-05f, 1, false); + TestUtils.AreEqual(sqrt(123.45f), 11.1108055f, 1, false); + TestUtils.AreEqual(sqrt(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(sqrt(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(sqrt(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void sqrt_float2() + { + TestUtils.AreEqual(sqrt(float2(-1f, 0f)), float2(float.NaN, 0f), 1, false); + TestUtils.AreEqual(sqrt(float2(1E-10f, 123.45f)), float2(1E-05f, 11.1108055f), 1, false); + TestUtils.AreEqual(sqrt(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(sqrt(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_float3() + { + TestUtils.AreEqual(sqrt(float3(-1f, 0f, 1E-10f)), float3(float.NaN, 0f, 1E-05f), 1, false); + TestUtils.AreEqual(sqrt(float3(123.45f, float.NegativeInfinity, float.NaN)), float3(11.1108055f, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(sqrt(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_float4() + { + TestUtils.AreEqual(sqrt(float4(-1f, 0f, 1E-10f, 123.45f)), float4(float.NaN, 0f, 1E-05f, 11.1108055f), 1, false); + TestUtils.AreEqual(sqrt(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_double() + { + TestUtils.AreEqual(sqrt(-1.0), double.NaN, 1, false); + TestUtils.AreEqual(sqrt(0.0), 0.0, 1, false); + TestUtils.AreEqual(sqrt(1E-10), 1E-05, 1, false); + TestUtils.AreEqual(sqrt(123.45), 11.11080555135405, 1, false); + TestUtils.AreEqual(sqrt(double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(sqrt(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(sqrt(double.PositiveInfinity), double.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void sqrt_double2() + { + TestUtils.AreEqual(sqrt(double2(-1.0, 0.0)), double2(double.NaN, 0.0), 1, false); + TestUtils.AreEqual(sqrt(double2(1E-10, 123.45)), double2(1E-05, 11.11080555135405), 1, false); + TestUtils.AreEqual(sqrt(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(sqrt(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_double3() + { + TestUtils.AreEqual(sqrt(double3(-1.0, 0.0, 1E-10)), double3(double.NaN, 0.0, 1E-05), 1, false); + TestUtils.AreEqual(sqrt(double3(123.45, double.NegativeInfinity, double.NaN)), double3(11.11080555135405, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(sqrt(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_double4() + { + TestUtils.AreEqual(sqrt(double4(-1.0, 0.0, 1E-10, 123.45)), double4(double.NaN, 0.0, 1E-05, 11.11080555135405), 1, false); + TestUtils.AreEqual(sqrt(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void rsqrt_float() + { + TestUtils.AreEqual(rsqrt(-1f), float.NaN, 1, false); + TestUtils.AreEqual(rsqrt(0f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(rsqrt(1E+10f), 1E-05f, 1, false); + TestUtils.AreEqual(rsqrt(123.45f), 0.09000248f, 1, false); + TestUtils.AreEqual(rsqrt(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(rsqrt(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(rsqrt(float.PositiveInfinity), 0f, 1, false); + } + + [TestCompiler] + public static void rsqrt_float2() + { + TestUtils.AreEqual(rsqrt(float2(-1f, 0f)), float2(float.NaN, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(rsqrt(float2(1E+10f, 123.45f)), float2(1E-05f, 0.09000248f), 1, false); + TestUtils.AreEqual(rsqrt(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(rsqrt(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(0f, 0f), 1, false); + } + + [TestCompiler] + public static void rsqrt_float3() + { + TestUtils.AreEqual(rsqrt(float3(-1f, 0f, 1E+10f)), float3(float.NaN, float.PositiveInfinity, 1E-05f), 1, false); + TestUtils.AreEqual(rsqrt(float3(123.45f, float.NegativeInfinity, float.NaN)), float3(0.09000248f, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(rsqrt(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(0f, 0f, 0f), 1, false); + } + + [TestCompiler] + public static void rsqrt_float4() + { + TestUtils.AreEqual(rsqrt(float4(-1f, 0f, 1E+10f, 123.45f)), float4(float.NaN, float.PositiveInfinity, 1E-05f, 0.09000248f), 1, false); + TestUtils.AreEqual(rsqrt(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, 0f, 0f), 1, false); + } + + [TestCompiler] + public static void rsqrt_double() + { + TestUtils.AreEqual(rsqrt(-1.0), double.NaN, 1, false); + TestUtils.AreEqual(rsqrt(0.0), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(rsqrt(10000000000.0), 1E-05, 1, false); + TestUtils.AreEqual(rsqrt(123.45), 0.090002475102098425, 1, false); + TestUtils.AreEqual(rsqrt(double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(rsqrt(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(rsqrt(double.PositiveInfinity), 0.0, 1, false); + } + + [TestCompiler] + public static void rsqrt_double2() + { + TestUtils.AreEqual(rsqrt(double2(-1.0, 0.0)), double2(double.NaN, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(rsqrt(double2(10000000000.0, 123.45)), double2(1E-05, 0.090002475102098425), 1, false); + TestUtils.AreEqual(rsqrt(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(rsqrt(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rsqrt_double3() + { + TestUtils.AreEqual(rsqrt(double3(-1.0, 0.0, 10000000000.0)), double3(double.NaN, double.PositiveInfinity, 1E-05), 1, false); + TestUtils.AreEqual(rsqrt(double3(123.45, double.NegativeInfinity, double.NaN)), double3(0.090002475102098425, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(rsqrt(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(0.0, 0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rsqrt_double4() + { + TestUtils.AreEqual(rsqrt(double4(-1.0, 0.0, 10000000000.0, 123.45)), double4(double.NaN, double.PositiveInfinity, 1E-05, 0.090002475102098425), 1, false); + TestUtils.AreEqual(rsqrt(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, 0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rcp_float() + { + TestUtils.AreEqual(rcp(-123.45f), -0.008100445f, 1, false); + TestUtils.AreEqual(rcp(0f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(rcp(123.45f), 0.008100445f, 1, false); + TestUtils.AreEqual(rcp(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(rcp(float.PositiveInfinity), 0f, 1, false); + } + + [TestCompiler] + public static void rcp_float2() + { + TestUtils.AreEqual(rcp(float2(-123.45f, 0f)), float2(-0.008100445f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(rcp(float2(123.45f, float.NaN)), float2(0.008100445f, float.NaN), 1, false); + TestUtils.AreEqual(rcp(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(0f, 0f), 1, false); + } + + [TestCompiler] + public static void rcp_float3() + { + TestUtils.AreEqual(rcp(float3(-123.45f, 0f, 123.45f)), float3(-0.008100445f, float.PositiveInfinity, 0.008100445f), 1, false); + TestUtils.AreEqual(rcp(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, 0f, 0f), 1, false); + } + + [TestCompiler] + public static void rcp_float4() + { + TestUtils.AreEqual(rcp(float4(-123.45f, 0f, 123.45f, float.NaN)), float4(-0.008100445f, float.PositiveInfinity, 0.008100445f, float.NaN), 1, false); + TestUtils.AreEqual(rcp(float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, 0f, 0f, 0f), 1, false); + } + + [TestCompiler] + public static void rcp_double() + { + TestUtils.AreEqual(rcp(-123.45), -0.0081004455245038479, 1, false); + TestUtils.AreEqual(rcp(0.0), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(rcp(123.45), 0.0081004455245038479, 1, false); + TestUtils.AreEqual(rcp(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(rcp(double.PositiveInfinity), 0.0, 1, false); + } + + [TestCompiler] + public static void rcp_double2() + { + TestUtils.AreEqual(rcp(double2(-123.45, 0.0)), double2(-0.0081004455245038479, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(rcp(double2(123.45, double.NaN)), double2(0.0081004455245038479, double.NaN), 1, false); + TestUtils.AreEqual(rcp(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rcp_double3() + { + TestUtils.AreEqual(rcp(double3(-123.45, 0.0, 123.45)), double3(-0.0081004455245038479, double.PositiveInfinity, 0.0081004455245038479), 1, false); + TestUtils.AreEqual(rcp(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, 0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rcp_double4() + { + TestUtils.AreEqual(rcp(double4(-123.45, 0.0, 123.45, double.NaN)), double4(-0.0081004455245038479, double.PositiveInfinity, 0.0081004455245038479, double.NaN), 1, false); + TestUtils.AreEqual(rcp(double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, 0.0, 0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void floor_float() + { + TestUtils.AreEqual(floor(float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(floor(-100.51f), -101f); + TestUtils.AreEqual(floor(-100.5f), -101f); + TestUtils.AreEqual(floor(-100.49f), -101f); + TestUtils.AreEqual(floor(0f), 0f); + TestUtils.AreEqual(floor(100.49f), 100f); + TestUtils.AreEqual(floor(100.5f), 100f); + TestUtils.AreEqual(floor(100.51f), 100f); + TestUtils.AreEqual(floor(float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(floor(float.NaN), float.NaN); + } + + [TestCompiler] + public static void floor_float2() + { + TestUtils.AreEqual(floor(float2(float.NegativeInfinity, -100.51f)), float2(float.NegativeInfinity, -101f)); + TestUtils.AreEqual(floor(float2(-100.5f, -100.49f)), float2(-101f, -101f)); + TestUtils.AreEqual(floor(float2(0f, 100.49f)), float2(0f, 100f)); + TestUtils.AreEqual(floor(float2(100.5f, 100.51f)), float2(100f, 100f)); + TestUtils.AreEqual(floor(float2(float.PositiveInfinity, float.NaN)), float2(float.PositiveInfinity, float.NaN)); + } + + [TestCompiler] + public static void floor_float3() + { + TestUtils.AreEqual(floor(float3(float.NegativeInfinity, -100.51f, -100.5f)), float3(float.NegativeInfinity, -101f, -101f)); + TestUtils.AreEqual(floor(float3(-100.49f, 0f, 100.49f)), float3(-101f, 0f, 100f)); + TestUtils.AreEqual(floor(float3(100.5f, 100.51f, float.PositiveInfinity)), float3(100f, 100f, float.PositiveInfinity)); + TestUtils.AreEqual(floor(float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void floor_float4() + { + TestUtils.AreEqual(floor(float4(float.NegativeInfinity, -100.51f, -100.5f, -100.49f)), float4(float.NegativeInfinity, -101f, -101f, -101f)); + TestUtils.AreEqual(floor(float4(0f, 100.49f, 100.5f, 100.51f)), float4(0f, 100f, 100f, 100f)); + TestUtils.AreEqual(floor(float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)), float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void floor_double() + { + TestUtils.AreEqual(floor(double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(floor(-100.51), -101.0); + TestUtils.AreEqual(floor(-100.5), -101.0); + TestUtils.AreEqual(floor(-100.49), -101.0); + TestUtils.AreEqual(floor(0.0), 0.0); + TestUtils.AreEqual(floor(100.49), 100.0); + TestUtils.AreEqual(floor(100.5), 100.0); + TestUtils.AreEqual(floor(100.51), 100.0); + TestUtils.AreEqual(floor(double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(floor(double.NaN), double.NaN); + } + + [TestCompiler] + public static void floor_double2() + { + TestUtils.AreEqual(floor(double2(double.NegativeInfinity, -100.51)), double2(double.NegativeInfinity, -101.0)); + TestUtils.AreEqual(floor(double2(-100.5, -100.49)), double2(-101.0, -101.0)); + TestUtils.AreEqual(floor(double2(0.0, 100.49)), double2(0.0, 100.0)); + TestUtils.AreEqual(floor(double2(100.5, 100.51)), double2(100.0, 100.0)); + TestUtils.AreEqual(floor(double2(double.PositiveInfinity, double.NaN)), double2(double.PositiveInfinity, double.NaN)); + } + + [TestCompiler] + public static void floor_double3() + { + TestUtils.AreEqual(floor(double3(double.NegativeInfinity, -100.51, -100.5)), double3(double.NegativeInfinity, -101.0, -101.0)); + TestUtils.AreEqual(floor(double3(-100.49, 0.0, 100.49)), double3(-101.0, 0.0, 100.0)); + TestUtils.AreEqual(floor(double3(100.5, 100.51, double.PositiveInfinity)), double3(100.0, 100.0, double.PositiveInfinity)); + TestUtils.AreEqual(floor(double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void floor_double4() + { + TestUtils.AreEqual(floor(double4(double.NegativeInfinity, -100.51, -100.5, -100.49)), double4(double.NegativeInfinity, -101.0, -101.0, -101.0)); + TestUtils.AreEqual(floor(double4(0.0, 100.49, 100.5, 100.51)), double4(0.0, 100.0, 100.0, 100.0)); + TestUtils.AreEqual(floor(double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)), double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void ceil_float() + { + TestUtils.AreEqual(ceil(float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(ceil(-100.51f), -100f); + TestUtils.AreEqual(ceil(-100.5f), -100f); + TestUtils.AreEqual(ceil(-100.49f), -100f); + TestUtils.AreEqual(ceil(0f), 0f); + TestUtils.AreEqual(ceil(100.49f), 101f); + TestUtils.AreEqual(ceil(100.5f), 101f); + TestUtils.AreEqual(ceil(100.51f), 101f); + TestUtils.AreEqual(ceil(float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(ceil(float.NaN), float.NaN); + } + + [TestCompiler] + public static void ceil_float2() + { + TestUtils.AreEqual(ceil(float2(float.NegativeInfinity, -100.51f)), float2(float.NegativeInfinity, -100f)); + TestUtils.AreEqual(ceil(float2(-100.5f, -100.49f)), float2(-100f, -100f)); + TestUtils.AreEqual(ceil(float2(0f, 100.49f)), float2(0f, 101f)); + TestUtils.AreEqual(ceil(float2(100.5f, 100.51f)), float2(101f, 101f)); + TestUtils.AreEqual(ceil(float2(float.PositiveInfinity, float.NaN)), float2(float.PositiveInfinity, float.NaN)); + } + + [TestCompiler] + public static void ceil_float3() + { + TestUtils.AreEqual(ceil(float3(float.NegativeInfinity, -100.51f, -100.5f)), float3(float.NegativeInfinity, -100f, -100f)); + TestUtils.AreEqual(ceil(float3(-100.49f, 0f, 100.49f)), float3(-100f, 0f, 101f)); + TestUtils.AreEqual(ceil(float3(100.5f, 100.51f, float.PositiveInfinity)), float3(101f, 101f, float.PositiveInfinity)); + TestUtils.AreEqual(ceil(float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void ceil_float4() + { + TestUtils.AreEqual(ceil(float4(float.NegativeInfinity, -100.51f, -100.5f, -100.49f)), float4(float.NegativeInfinity, -100f, -100f, -100f)); + TestUtils.AreEqual(ceil(float4(0f, 100.49f, 100.5f, 100.51f)), float4(0f, 101f, 101f, 101f)); + TestUtils.AreEqual(ceil(float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)), float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void ceil_double() + { + TestUtils.AreEqual(ceil(double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(ceil(-100.51), -100.0); + TestUtils.AreEqual(ceil(-100.5), -100.0); + TestUtils.AreEqual(ceil(-100.49), -100.0); + TestUtils.AreEqual(ceil(0.0), 0.0); + TestUtils.AreEqual(ceil(100.49), 101.0); + TestUtils.AreEqual(ceil(100.5), 101.0); + TestUtils.AreEqual(ceil(100.51), 101.0); + TestUtils.AreEqual(ceil(double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(ceil(double.NaN), double.NaN); + } + + [TestCompiler] + public static void ceil_double2() + { + TestUtils.AreEqual(ceil(double2(double.NegativeInfinity, -100.51)), double2(double.NegativeInfinity, -100.0)); + TestUtils.AreEqual(ceil(double2(-100.5, -100.49)), double2(-100.0, -100.0)); + TestUtils.AreEqual(ceil(double2(0.0, 100.49)), double2(0.0, 101.0)); + TestUtils.AreEqual(ceil(double2(100.5, 100.51)), double2(101.0, 101.0)); + TestUtils.AreEqual(ceil(double2(double.PositiveInfinity, double.NaN)), double2(double.PositiveInfinity, double.NaN)); + } + + [TestCompiler] + public static void ceil_double3() + { + TestUtils.AreEqual(ceil(double3(double.NegativeInfinity, -100.51, -100.5)), double3(double.NegativeInfinity, -100.0, -100.0)); + TestUtils.AreEqual(ceil(double3(-100.49, 0.0, 100.49)), double3(-100.0, 0.0, 101.0)); + TestUtils.AreEqual(ceil(double3(100.5, 100.51, double.PositiveInfinity)), double3(101.0, 101.0, double.PositiveInfinity)); + TestUtils.AreEqual(ceil(double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void ceil_double4() + { + TestUtils.AreEqual(ceil(double4(double.NegativeInfinity, -100.51, -100.5, -100.49)), double4(double.NegativeInfinity, -100.0, -100.0, -100.0)); + TestUtils.AreEqual(ceil(double4(0.0, 100.49, 100.5, 100.51)), double4(0.0, 101.0, 101.0, 101.0)); + TestUtils.AreEqual(ceil(double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)), double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void round_float() + { + TestUtils.AreEqual(round(float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(round(-100.51f), -101f); + TestUtils.AreEqual(round(-100.5f), -100f); + TestUtils.AreEqual(round(-100.49f), -100f); + TestUtils.AreEqual(round(0f), 0f); + TestUtils.AreEqual(round(100.49f), 100f); + TestUtils.AreEqual(round(100.5f), 100f); + TestUtils.AreEqual(round(100.51f), 101f); + TestUtils.AreEqual(round(101.5f), 102f); + TestUtils.AreEqual(round(float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(round(float.NaN), float.NaN); + } + + [TestCompiler] + public static void round_float2() + { + TestUtils.AreEqual(round(float2(float.NegativeInfinity, -100.51f)), float2(float.NegativeInfinity, -101f)); + TestUtils.AreEqual(round(float2(-100.5f, -100.49f)), float2(-100f, -100f)); + TestUtils.AreEqual(round(float2(0f, 100.49f)), float2(0f, 100f)); + TestUtils.AreEqual(round(float2(100.5f, 100.51f)), float2(100f, 101f)); + TestUtils.AreEqual(round(float2(101.5f, float.PositiveInfinity)), float2(102f, float.PositiveInfinity)); + TestUtils.AreEqual(round(float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN)); + } + + [TestCompiler] + public static void round_float3() + { + TestUtils.AreEqual(round(float3(float.NegativeInfinity, -100.51f, -100.5f)), float3(float.NegativeInfinity, -101f, -100f)); + TestUtils.AreEqual(round(float3(-100.49f, 0f, 100.49f)), float3(-100f, 0f, 100f)); + TestUtils.AreEqual(round(float3(100.5f, 100.51f, 101.5f)), float3(100f, 101f, 102f)); + TestUtils.AreEqual(round(float3(float.PositiveInfinity, float.NaN, float.NaN)), float3(float.PositiveInfinity, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void round_float4() + { + TestUtils.AreEqual(round(float4(float.NegativeInfinity, -100.51f, -100.5f, -100.49f)), float4(float.NegativeInfinity, -101f, -100f, -100f)); + TestUtils.AreEqual(round(float4(0f, 100.49f, 100.5f, 100.51f)), float4(0f, 100f, 100f, 101f)); + TestUtils.AreEqual(round(float4(101.5f, float.PositiveInfinity, float.NaN, float.NaN)), float4(102f, float.PositiveInfinity, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void round_double() + { + TestUtils.AreEqual(round(double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(round(-100.51), -101.0); + TestUtils.AreEqual(round(-100.5), -100.0); + TestUtils.AreEqual(round(-100.49), -100.0); + TestUtils.AreEqual(round(0.0), 0.0); + TestUtils.AreEqual(round(100.49), 100.0); + TestUtils.AreEqual(round(100.5), 100.0); + TestUtils.AreEqual(round(100.51), 101.0); + TestUtils.AreEqual(round(101.5), 102.0); + TestUtils.AreEqual(round(double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(round(double.NaN), double.NaN); + } + + [TestCompiler] + public static void round_double2() + { + TestUtils.AreEqual(round(double2(double.NegativeInfinity, -100.51)), double2(double.NegativeInfinity, -101.0)); + TestUtils.AreEqual(round(double2(-100.5, -100.49)), double2(-100.0, -100.0)); + TestUtils.AreEqual(round(double2(0.0, 100.49)), double2(0.0, 100.0)); + TestUtils.AreEqual(round(double2(100.5, 100.51)), double2(100.0, 101.0)); + TestUtils.AreEqual(round(double2(101.5, double.PositiveInfinity)), double2(102.0, double.PositiveInfinity)); + TestUtils.AreEqual(round(double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN)); + } + + [TestCompiler] + public static void round_double3() + { + TestUtils.AreEqual(round(double3(double.NegativeInfinity, -100.51, -100.5)), double3(double.NegativeInfinity, -101.0, -100.0)); + TestUtils.AreEqual(round(double3(-100.49, 0.0, 100.49)), double3(-100.0, 0.0, 100.0)); + TestUtils.AreEqual(round(double3(100.5, 100.51, 101.5)), double3(100.0, 101.0, 102.0)); + TestUtils.AreEqual(round(double3(double.PositiveInfinity, double.NaN, double.NaN)), double3(double.PositiveInfinity, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void round_double4() + { + TestUtils.AreEqual(round(double4(double.NegativeInfinity, -100.51, -100.5, -100.49)), double4(double.NegativeInfinity, -101.0, -100.0, -100.0)); + TestUtils.AreEqual(round(double4(0.0, 100.49, 100.5, 100.51)), double4(0.0, 100.0, 100.0, 101.0)); + TestUtils.AreEqual(round(double4(101.5, double.PositiveInfinity, double.NaN, double.NaN)), double4(102.0, double.PositiveInfinity, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void trunc_float() + { + TestUtils.AreEqual(trunc(float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(trunc(-100.51f), -100f); + TestUtils.AreEqual(trunc(-100.5f), -100f); + TestUtils.AreEqual(trunc(-100.49f), -100f); + TestUtils.AreEqual(trunc(0f), 0f); + TestUtils.AreEqual(trunc(100.49f), 100f); + TestUtils.AreEqual(trunc(100.5f), 100f); + TestUtils.AreEqual(trunc(100.51f), 100f); + TestUtils.AreEqual(trunc(101.5f), 101f); + TestUtils.AreEqual(trunc(float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(trunc(float.NaN), float.NaN); + } + + [TestCompiler] + public static void trunc_float2() + { + TestUtils.AreEqual(trunc(float2(float.NegativeInfinity, -100.51f)), float2(float.NegativeInfinity, -100f)); + TestUtils.AreEqual(trunc(float2(-100.5f, -100.49f)), float2(-100f, -100f)); + TestUtils.AreEqual(trunc(float2(0f, 100.49f)), float2(0f, 100f)); + TestUtils.AreEqual(trunc(float2(100.5f, 100.51f)), float2(100f, 100f)); + TestUtils.AreEqual(trunc(float2(101.5f, float.PositiveInfinity)), float2(101f, float.PositiveInfinity)); + TestUtils.AreEqual(trunc(float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN)); + } + + [TestCompiler] + public static void trunc_float3() + { + TestUtils.AreEqual(trunc(float3(float.NegativeInfinity, -100.51f, -100.5f)), float3(float.NegativeInfinity, -100f, -100f)); + TestUtils.AreEqual(trunc(float3(-100.49f, 0f, 100.49f)), float3(-100f, 0f, 100f)); + TestUtils.AreEqual(trunc(float3(100.5f, 100.51f, 101.5f)), float3(100f, 100f, 101f)); + TestUtils.AreEqual(trunc(float3(float.PositiveInfinity, float.NaN, float.NaN)), float3(float.PositiveInfinity, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void trunc_float4() + { + TestUtils.AreEqual(trunc(float4(float.NegativeInfinity, -100.51f, -100.5f, -100.49f)), float4(float.NegativeInfinity, -100f, -100f, -100f)); + TestUtils.AreEqual(trunc(float4(0f, 100.49f, 100.5f, 100.51f)), float4(0f, 100f, 100f, 100f)); + TestUtils.AreEqual(trunc(float4(101.5f, float.PositiveInfinity, float.NaN, float.NaN)), float4(101f, float.PositiveInfinity, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void trunc_double() + { + TestUtils.AreEqual(trunc(double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(trunc(-100.51), -100.0); + TestUtils.AreEqual(trunc(-100.5), -100.0); + TestUtils.AreEqual(trunc(-100.49), -100.0); + TestUtils.AreEqual(trunc(0.0), 0.0); + TestUtils.AreEqual(trunc(100.49), 100.0); + TestUtils.AreEqual(trunc(100.5), 100.0); + TestUtils.AreEqual(trunc(100.51), 100.0); + TestUtils.AreEqual(trunc(101.5), 101.0); + TestUtils.AreEqual(trunc(double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(trunc(double.NaN), double.NaN); + } + + [TestCompiler] + public static void trunc_double2() + { + TestUtils.AreEqual(trunc(double2(double.NegativeInfinity, -100.51)), double2(double.NegativeInfinity, -100.0)); + TestUtils.AreEqual(trunc(double2(-100.5, -100.49)), double2(-100.0, -100.0)); + TestUtils.AreEqual(trunc(double2(0.0, 100.49)), double2(0.0, 100.0)); + TestUtils.AreEqual(trunc(double2(100.5, 100.51)), double2(100.0, 100.0)); + TestUtils.AreEqual(trunc(double2(101.5, double.PositiveInfinity)), double2(101.0, double.PositiveInfinity)); + TestUtils.AreEqual(trunc(double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN)); + } + + [TestCompiler] + public static void trunc_double3() + { + TestUtils.AreEqual(trunc(double3(double.NegativeInfinity, -100.51, -100.5)), double3(double.NegativeInfinity, -100.0, -100.0)); + TestUtils.AreEqual(trunc(double3(-100.49, 0.0, 100.49)), double3(-100.0, 0.0, 100.0)); + TestUtils.AreEqual(trunc(double3(100.5, 100.51, 101.5)), double3(100.0, 100.0, 101.0)); + TestUtils.AreEqual(trunc(double3(double.PositiveInfinity, double.NaN, double.NaN)), double3(double.PositiveInfinity, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void trunc_double4() + { + TestUtils.AreEqual(trunc(double4(double.NegativeInfinity, -100.51, -100.5, -100.49)), double4(double.NegativeInfinity, -100.0, -100.0, -100.0)); + TestUtils.AreEqual(trunc(double4(0.0, 100.49, 100.5, 100.51)), double4(0.0, 100.0, 100.0, 100.0)); + TestUtils.AreEqual(trunc(double4(101.5, double.PositiveInfinity, double.NaN, double.NaN)), double4(101.0, double.PositiveInfinity, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void frac_float() + { + TestUtils.AreEqual(frac(float.NegativeInfinity), float.NaN, 64, false); + TestUtils.AreEqual(frac(-1E+20f), 0f, 64, false); + TestUtils.AreEqual(frac(-100.3f), 0.7f, 64, false); + TestUtils.AreEqual(frac(0f), 0f, 64, false); + TestUtils.AreEqual(frac(100.8f), 0.8f, 64, false); + TestUtils.AreEqual(frac(float.PositiveInfinity), float.NaN, 64, false); + TestUtils.AreEqual(frac(float.NaN), float.NaN, 64, false); + } + + [TestCompiler] + public static void frac_float2() + { + TestUtils.AreEqual(frac(float2(float.NegativeInfinity, -1E+20f)), float2(float.NaN, 0f), 64, false); + TestUtils.AreEqual(frac(float2(-100.3f, 0f)), float2(0.7f, 0f), 64, false); + TestUtils.AreEqual(frac(float2(100.8f, float.PositiveInfinity)), float2(0.8f, float.NaN), 64, false); + TestUtils.AreEqual(frac(float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 64, false); + } + + [TestCompiler] + public static void frac_float3() + { + TestUtils.AreEqual(frac(float3(float.NegativeInfinity, -1E+20f, -100.3f)), float3(float.NaN, 0f, 0.7f), 64, false); + TestUtils.AreEqual(frac(float3(0f, 100.8f, float.PositiveInfinity)), float3(0f, 0.8f, float.NaN), 64, false); + TestUtils.AreEqual(frac(float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 64, false); + } + + [TestCompiler] + public static void frac_float4() + { + TestUtils.AreEqual(frac(float4(float.NegativeInfinity, -1E+20f, -100.3f, 0f)), float4(float.NaN, 0f, 0.7f, 0f), 64, false); + TestUtils.AreEqual(frac(float4(100.8f, float.PositiveInfinity, float.NaN, float.NaN)), float4(0.8f, float.NaN, float.NaN, float.NaN), 64, false); + } + + [TestCompiler] + public static void frac_double() + { + TestUtils.AreEqual(frac(double.NegativeInfinity), double.NaN, 64, false); + TestUtils.AreEqual(frac(-1E+20), 0.0, 64, false); + TestUtils.AreEqual(frac(-100.3), 0.7, 64, false); + TestUtils.AreEqual(frac(0.0), 0.0, 64, false); + TestUtils.AreEqual(frac(100.8), 0.8, 64, false); + TestUtils.AreEqual(frac(double.PositiveInfinity), double.NaN, 64, false); + TestUtils.AreEqual(frac(double.NaN), double.NaN, 64, false); + } + + [TestCompiler] + public static void frac_double2() + { + TestUtils.AreEqual(frac(double2(double.NegativeInfinity, -1E+20)), double2(double.NaN, 0.0), 64, false); + TestUtils.AreEqual(frac(double2(-100.3, 0.0)), double2(0.7, 0.0), 64, false); + TestUtils.AreEqual(frac(double2(100.8, double.PositiveInfinity)), double2(0.8, double.NaN), 64, false); + TestUtils.AreEqual(frac(double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 64, false); + } + + [TestCompiler] + public static void frac_double3() + { + TestUtils.AreEqual(frac(double3(double.NegativeInfinity, -1E+20, -100.3)), double3(double.NaN, 0.0, 0.7), 64, false); + TestUtils.AreEqual(frac(double3(0.0, 100.8, double.PositiveInfinity)), double3(0.0, 0.8, double.NaN), 64, false); + TestUtils.AreEqual(frac(double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 64, false); + } + + [TestCompiler] + public static void frac_double4() + { + TestUtils.AreEqual(frac(double4(double.NegativeInfinity, -1E+20, -100.3, 0.0)), double4(double.NaN, 0.0, 0.7, 0.0), 64, false); + TestUtils.AreEqual(frac(double4(100.8, double.PositiveInfinity, double.NaN, double.NaN)), double4(0.8, double.NaN, double.NaN, double.NaN), 64, false); + } + + [TestCompiler] + public static void lerp_float() + { + TestUtils.AreEqual(lerp(-123.45f, 439.43f, -1.5f), -967.77f, 1, false); + TestUtils.AreEqual(lerp(-123.45f, 439.43f, 0.5f), 157.99f, 1, false); + TestUtils.AreEqual(lerp(-123.45f, 439.43f, 5.5f), 2972.39f, 1, false); + TestUtils.AreEqual(lerp(-123.45f, 439.43f, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void lerp_float2() + { + TestUtils.AreEqual(lerp(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(-1.5f, 0.5f)), float2(-967.77f, 157.99f), 1, false); + TestUtils.AreEqual(lerp(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(5.5f, float.NaN)), float2(2972.39f, float.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_float3() + { + TestUtils.AreEqual(lerp(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(-1.5f, 0.5f, 5.5f)), float3(-967.77f, 157.99f, 2972.39f), 1, false); + TestUtils.AreEqual(lerp(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_float4() + { + TestUtils.AreEqual(lerp(float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(439.43f, 439.43f, 439.43f, 439.43f), float4(-1.5f, 0.5f, 5.5f, float.NaN)), float4(-967.77f, 157.99f, 2972.39f, float.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_double() + { + TestUtils.AreEqual(lerp(-123.45, 439.43, -1.5), -967.77, 1, false); + TestUtils.AreEqual(lerp(-123.45, 439.43, 0.5), 157.99, 1, false); + TestUtils.AreEqual(lerp(-123.45, 439.43, 5.5), 2972.39, 1, false); + TestUtils.AreEqual(lerp(-123.45, 439.43, double.NaN), double.NaN, 1, false); + } + + [TestCompiler] + public static void lerp_double2() + { + TestUtils.AreEqual(lerp(double2(-123.45, -123.45), double2(439.43, 439.43), double2(-1.5, 0.5)), double2(-967.77, 157.99), 1, false); + TestUtils.AreEqual(lerp(double2(-123.45, -123.45), double2(439.43, 439.43), double2(5.5, double.NaN)), double2(2972.39, double.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_double3() + { + TestUtils.AreEqual(lerp(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(-1.5, 0.5, 5.5)), double3(-967.77, 157.99, 2972.39), 1, false); + TestUtils.AreEqual(lerp(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_double4() + { + TestUtils.AreEqual(lerp(double4(-123.45, -123.45, -123.45, -123.45), double4(439.43, 439.43, 439.43, 439.43), double4(-1.5, 0.5, 5.5, double.NaN)), double4(-967.77, 157.99, 2972.39, double.NaN), 1, false); + } + + [TestCompiler] + public static void unlerp_float() + { + TestUtils.AreEqual(unlerp(-123.45f, 439.43f, -254.3f), -0.232465178f, 4, false); + TestUtils.AreEqual(unlerp(-123.45f, 439.43f, 0f), 0.219318509f, 4, false); + TestUtils.AreEqual(unlerp(-123.45f, 439.43f, 632.1f), 1.34229326f, 4, false); + TestUtils.AreEqual(unlerp(123.4f, 123.4f, -430f), float.NegativeInfinity, 4, false); + TestUtils.AreEqual(unlerp(123.4f, 123.4f, 430f), float.PositiveInfinity, 4, false); + TestUtils.AreEqual(unlerp(439.43f, -123.45f, -254.3f), 1.23246515f, 4, false); + TestUtils.AreEqual(unlerp(439.43f, -123.45f, 0f), 0.7806815f, 4, false); + TestUtils.AreEqual(unlerp(439.43f, -123.45f, 632.1f), -0.3422932f, 4, false); + } + + [TestCompiler] + public static void unlerp_float2() + { + TestUtils.AreEqual(unlerp(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(-254.3f, 0f)), float2(-0.232465178f, 0.219318509f), 4, false); + TestUtils.AreEqual(unlerp(float2(-123.45f, 123.4f), float2(439.43f, 123.4f), float2(632.1f, -430f)), float2(1.34229326f, float.NegativeInfinity), 4, false); + TestUtils.AreEqual(unlerp(float2(123.4f, 439.43f), float2(123.4f, -123.45f), float2(430f, -254.3f)), float2(float.PositiveInfinity, 1.23246515f), 4, false); + TestUtils.AreEqual(unlerp(float2(439.43f, 439.43f), float2(-123.45f, -123.45f), float2(0f, 632.1f)), float2(0.7806815f, -0.3422932f), 4, false); + } + + [TestCompiler] + public static void unlerp_float3() + { + TestUtils.AreEqual(unlerp(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(-254.3f, 0f, 632.1f)), float3(-0.232465178f, 0.219318509f, 1.34229326f), 4, false); + TestUtils.AreEqual(unlerp(float3(123.4f, 123.4f, 439.43f), float3(123.4f, 123.4f, -123.45f), float3(-430f, 430f, -254.3f)), float3(float.NegativeInfinity, float.PositiveInfinity, 1.23246515f), 4, false); + TestUtils.AreEqual(unlerp(float3(439.43f, 439.43f, 439.43f), float3(-123.45f, -123.45f, -123.45f), float3(0f, 632.1f, 632.1f)), float3(0.7806815f, -0.3422932f, -0.3422932f), 4, false); + } + + [TestCompiler] + public static void unlerp_float4() + { + TestUtils.AreEqual(unlerp(float4(-123.45f, -123.45f, -123.45f, 123.4f), float4(439.43f, 439.43f, 439.43f, 123.4f), float4(-254.3f, 0f, 632.1f, -430f)), float4(-0.232465178f, 0.219318509f, 1.34229326f, float.NegativeInfinity), 4, false); + TestUtils.AreEqual(unlerp(float4(123.4f, 439.43f, 439.43f, 439.43f), float4(123.4f, -123.45f, -123.45f, -123.45f), float4(430f, -254.3f, 0f, 632.1f)), float4(float.PositiveInfinity, 1.23246515f, 0.7806815f, -0.3422932f), 4, false); + } + + [TestCompiler] + public static void unlerp_double() + { + TestUtils.AreEqual(unlerp(-123.45, 439.43, -254.3), -0.23246517907902217, 4, false); + TestUtils.AreEqual(unlerp(-123.45, 439.43, 0.0), 0.21931850483229107, 4, false); + TestUtils.AreEqual(unlerp(-123.45, 439.43, 632.1), 1.3422932063672541, 4, false); + TestUtils.AreEqual(unlerp(123.4, 123.4, -430.0), double.NegativeInfinity, 4, false); + TestUtils.AreEqual(unlerp(123.4, 123.4, 430.0), double.PositiveInfinity, 4, false); + TestUtils.AreEqual(unlerp(439.43, -123.45, -254.3), 1.2324651790790222, 4, false); + TestUtils.AreEqual(unlerp(439.43, -123.45, 0.0), 0.78068149516770891, 4, false); + TestUtils.AreEqual(unlerp(439.43, -123.45, 632.1), -0.34229320636725413, 4, false); + } + + [TestCompiler] + public static void unlerp_double2() + { + TestUtils.AreEqual(unlerp(double2(-123.45, -123.45), double2(439.43, 439.43), double2(-254.3, 0.0)), double2(-0.23246517907902217, 0.21931850483229107), 4, false); + TestUtils.AreEqual(unlerp(double2(-123.45, 123.4), double2(439.43, 123.4), double2(632.1, -430.0)), double2(1.3422932063672541, double.NegativeInfinity), 4, false); + TestUtils.AreEqual(unlerp(double2(123.4, 439.43), double2(123.4, -123.45), double2(430.0, -254.3)), double2(double.PositiveInfinity, 1.2324651790790222), 4, false); + TestUtils.AreEqual(unlerp(double2(439.43, 439.43), double2(-123.45, -123.45), double2(0.0, 632.1)), double2(0.78068149516770891, -0.34229320636725413), 4, false); + } + + [TestCompiler] + public static void unlerp_double3() + { + TestUtils.AreEqual(unlerp(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(-254.3, 0.0, 632.1)), double3(-0.23246517907902217, 0.21931850483229107, 1.3422932063672541), 4, false); + TestUtils.AreEqual(unlerp(double3(123.4, 123.4, 439.43), double3(123.4, 123.4, -123.45), double3(-430.0, 430.0, -254.3)), double3(double.NegativeInfinity, double.PositiveInfinity, 1.2324651790790222), 4, false); + TestUtils.AreEqual(unlerp(double3(439.43, 439.43, 439.43), double3(-123.45, -123.45, -123.45), double3(0.0, 632.1, 632.1)), double3(0.78068149516770891, -0.34229320636725413, -0.34229320636725413), 4, false); + } + + [TestCompiler] + public static void unlerp_double4() + { + TestUtils.AreEqual(unlerp(double4(-123.45, -123.45, -123.45, 123.4), double4(439.43, 439.43, 439.43, 123.4), double4(-254.3, 0.0, 632.1, -430.0)), double4(-0.23246517907902217, 0.21931850483229107, 1.3422932063672541, double.NegativeInfinity), 4, false); + TestUtils.AreEqual(unlerp(double4(123.4, 439.43, 439.43, 439.43), double4(123.4, -123.45, -123.45, -123.45), double4(430.0, -254.3, 0.0, 632.1)), double4(double.PositiveInfinity, 1.2324651790790222, 0.78068149516770891, -0.34229320636725413), 4, false); + } + + [TestCompiler] + public static void remap_float() + { + TestUtils.AreEqual(remap(-123.45f, 439.43f, 541.3f, 631.5f, -200f), 529.0331f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 541.3f, 631.5f, -100f), 545.0578f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 541.3f, 631.5f, 500f), 641.2062f, 4, false); + TestUtils.AreEqual(remap(439.43f, -123.45f, 541.3f, 631.5f, -200f), 643.7669f, 4, false); + TestUtils.AreEqual(remap(439.43f, -123.45f, 541.3f, 631.5f, -100f), 627.7422f, 4, false); + TestUtils.AreEqual(remap(439.43f, -123.45f, 541.3f, 631.5f, 500f), 531.5938f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 631.5f, 541.3f, -200f), 643.7669f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 631.5f, 541.3f, -100f), 627.7422f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 631.5f, 541.3f, 500f), 531.5938f, 4, false); + TestUtils.AreEqual(remap(-123.45f, -123.45f, 541.3f, 631.5f, -200f), float.NegativeInfinity, 4, false); + TestUtils.AreEqual(remap(-123.45f, -123.45f, 541.3f, 631.5f, -100f), float.PositiveInfinity, 4, false); + } + + [TestCompiler] + public static void remap_float2() + { + TestUtils.AreEqual(remap(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(541.3f, 541.3f), float2(631.5f, 631.5f), float2(-200f, -100f)), float2(529.0331f, 545.0578f), 4, false); + TestUtils.AreEqual(remap(float2(-123.45f, 439.43f), float2(439.43f, -123.45f), float2(541.3f, 541.3f), float2(631.5f, 631.5f), float2(500f, -200f)), float2(641.2062f, 643.7669f), 4, false); + TestUtils.AreEqual(remap(float2(439.43f, 439.43f), float2(-123.45f, -123.45f), float2(541.3f, 541.3f), float2(631.5f, 631.5f), float2(-100f, 500f)), float2(627.7422f, 531.5938f), 4, false); + TestUtils.AreEqual(remap(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(631.5f, 631.5f), float2(541.3f, 541.3f), float2(-200f, -100f)), float2(643.7669f, 627.7422f), 4, false); + TestUtils.AreEqual(remap(float2(-123.45f, -123.45f), float2(439.43f, -123.45f), float2(631.5f, 541.3f), float2(541.3f, 631.5f), float2(500f, -200f)), float2(531.5938f, float.NegativeInfinity), 4, false); + TestUtils.AreEqual(remap(float2(-123.45f, -123.45f), float2(-123.45f, -123.45f), float2(541.3f, 541.3f), float2(631.5f, 631.5f), float2(-100f, -100f)), float2(float.PositiveInfinity, float.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_float3() + { + TestUtils.AreEqual(remap(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(541.3f, 541.3f, 541.3f), float3(631.5f, 631.5f, 631.5f), float3(-200f, -100f, 500f)), float3(529.0331f, 545.0578f, 641.2062f), 4, false); + TestUtils.AreEqual(remap(float3(439.43f, 439.43f, 439.43f), float3(-123.45f, -123.45f, -123.45f), float3(541.3f, 541.3f, 541.3f), float3(631.5f, 631.5f, 631.5f), float3(-200f, -100f, 500f)), float3(643.7669f, 627.7422f, 531.5938f), 4, false); + TestUtils.AreEqual(remap(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(631.5f, 631.5f, 631.5f), float3(541.3f, 541.3f, 541.3f), float3(-200f, -100f, 500f)), float3(643.7669f, 627.7422f, 531.5938f), 4, false); + TestUtils.AreEqual(remap(float3(-123.45f, -123.45f, -123.45f), float3(-123.45f, -123.45f, -123.45f), float3(541.3f, 541.3f, 541.3f), float3(631.5f, 631.5f, 631.5f), float3(-200f, -100f, -100f)), float3(float.NegativeInfinity, float.PositiveInfinity, float.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_float4() + { + TestUtils.AreEqual(remap(float4(-123.45f, -123.45f, -123.45f, 439.43f), float4(439.43f, 439.43f, 439.43f, -123.45f), float4(541.3f, 541.3f, 541.3f, 541.3f), float4(631.5f, 631.5f, 631.5f, 631.5f), float4(-200f, -100f, 500f, -200f)), float4(529.0331f, 545.0578f, 641.2062f, 643.7669f), 4, false); + TestUtils.AreEqual(remap(float4(439.43f, 439.43f, -123.45f, -123.45f), float4(-123.45f, -123.45f, 439.43f, 439.43f), float4(541.3f, 541.3f, 631.5f, 631.5f), float4(631.5f, 631.5f, 541.3f, 541.3f), float4(-100f, 500f, -200f, -100f)), float4(627.7422f, 531.5938f, 643.7669f, 627.7422f), 4, false); + TestUtils.AreEqual(remap(float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(439.43f, -123.45f, -123.45f, -123.45f), float4(631.5f, 541.3f, 541.3f, 541.3f), float4(541.3f, 631.5f, 631.5f, 631.5f), float4(500f, -200f, -100f, -100f)), float4(531.5938f, float.NegativeInfinity, float.PositiveInfinity, float.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_double() + { + TestUtils.AreEqual(remap(-123.45, 439.43, 541.3, 631.5, -200.0), 529.03306921546334, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 541.3, 631.5, -100.0), 545.057799175668, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 541.3, 631.5, 500.0), 641.206178936896, 4, false); + TestUtils.AreEqual(remap(439.43, -123.45, 541.3, 631.5, -200.0), 643.76693078453673, 4, false); + TestUtils.AreEqual(remap(439.43, -123.45, 541.3, 631.5, -100.0), 627.742200824332, 4, false); + TestUtils.AreEqual(remap(439.43, -123.45, 541.3, 631.5, 500.0), 531.59382106310409, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 631.5, 541.3, -200.0), 643.76693078453673, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 631.5, 541.3, -100.0), 627.742200824332, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 631.5, 541.3, 500.0), 531.59382106310409, 4, false); + TestUtils.AreEqual(remap(-123.45, -123.45, 541.3, 631.5, -200.0), double.NegativeInfinity, 4, false); + TestUtils.AreEqual(remap(-123.45, -123.45, 541.3, 631.5, -100.0), double.PositiveInfinity, 4, false); + } + + [TestCompiler] + public static void remap_double2() + { + TestUtils.AreEqual(remap(double2(-123.45, -123.45), double2(439.43, 439.43), double2(541.3, 541.3), double2(631.5, 631.5), double2(-200.0, -100.0)), double2(529.03306921546334, 545.057799175668), 4, false); + TestUtils.AreEqual(remap(double2(-123.45, 439.43), double2(439.43, -123.45), double2(541.3, 541.3), double2(631.5, 631.5), double2(500.0, -200.0)), double2(641.206178936896, 643.76693078453673), 4, false); + TestUtils.AreEqual(remap(double2(439.43, 439.43), double2(-123.45, -123.45), double2(541.3, 541.3), double2(631.5, 631.5), double2(-100.0, 500.0)), double2(627.742200824332, 531.59382106310409), 4, false); + TestUtils.AreEqual(remap(double2(-123.45, -123.45), double2(439.43, 439.43), double2(631.5, 631.5), double2(541.3, 541.3), double2(-200.0, -100.0)), double2(643.76693078453673, 627.742200824332), 4, false); + TestUtils.AreEqual(remap(double2(-123.45, -123.45), double2(439.43, -123.45), double2(631.5, 541.3), double2(541.3, 631.5), double2(500.0, -200.0)), double2(531.59382106310409, double.NegativeInfinity), 4, false); + TestUtils.AreEqual(remap(double2(-123.45, -123.45), double2(-123.45, -123.45), double2(541.3, 541.3), double2(631.5, 631.5), double2(-100.0, -100.0)), double2(double.PositiveInfinity, double.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_double3() + { + TestUtils.AreEqual(remap(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(541.3, 541.3, 541.3), double3(631.5, 631.5, 631.5), double3(-200.0, -100.0, 500.0)), double3(529.03306921546334, 545.057799175668, 641.206178936896), 4, false); + TestUtils.AreEqual(remap(double3(439.43, 439.43, 439.43), double3(-123.45, -123.45, -123.45), double3(541.3, 541.3, 541.3), double3(631.5, 631.5, 631.5), double3(-200.0, -100.0, 500.0)), double3(643.76693078453673, 627.742200824332, 531.59382106310409), 4, false); + TestUtils.AreEqual(remap(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(631.5, 631.5, 631.5), double3(541.3, 541.3, 541.3), double3(-200.0, -100.0, 500.0)), double3(643.76693078453673, 627.742200824332, 531.59382106310409), 4, false); + TestUtils.AreEqual(remap(double3(-123.45, -123.45, -123.45), double3(-123.45, -123.45, -123.45), double3(541.3, 541.3, 541.3), double3(631.5, 631.5, 631.5), double3(-200.0, -100.0, -100.0)), double3(double.NegativeInfinity, double.PositiveInfinity, double.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_double4() + { + TestUtils.AreEqual(remap(double4(-123.45, -123.45, -123.45, 439.43), double4(439.43, 439.43, 439.43, -123.45), double4(541.3, 541.3, 541.3, 541.3), double4(631.5, 631.5, 631.5, 631.5), double4(-200.0, -100.0, 500.0, -200.0)), double4(529.03306921546334, 545.057799175668, 641.206178936896, 643.76693078453673), 4, false); + TestUtils.AreEqual(remap(double4(439.43, 439.43, -123.45, -123.45), double4(-123.45, -123.45, 439.43, 439.43), double4(541.3, 541.3, 631.5, 631.5), double4(631.5, 631.5, 541.3, 541.3), double4(-100.0, 500.0, -200.0, -100.0)), double4(627.742200824332, 531.59382106310409, 643.76693078453673, 627.742200824332), 4, false); + TestUtils.AreEqual(remap(double4(-123.45, -123.45, -123.45, -123.45), double4(439.43, -123.45, -123.45, -123.45), double4(631.5, 541.3, 541.3, 541.3), double4(541.3, 631.5, 631.5, 631.5), double4(500.0, -200.0, -100.0, -100.0)), double4(531.59382106310409, double.NegativeInfinity, double.PositiveInfinity, double.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void clamp_int() + { + TestUtils.AreEqual(clamp(-2147483648, -123, 439), -123); + TestUtils.AreEqual(clamp(-254, -123, 439), -123); + TestUtils.AreEqual(clamp(246, -123, 439), 246); + TestUtils.AreEqual(clamp(632, -123, 439), 439); + TestUtils.AreEqual(clamp(-254, 439, -123), 439); + TestUtils.AreEqual(clamp(246, 439, -123), 439); + TestUtils.AreEqual(clamp(632, 439, -123), 439); + TestUtils.AreEqual(clamp(2147483647, -123, 439), 439); + } + + [TestCompiler] + public static void clamp_int2() + { + TestUtils.AreEqual(clamp(int2(-2147483648, -254), int2(-123, -123), int2(439, 439)), int2(-123, -123)); + TestUtils.AreEqual(clamp(int2(246, 632), int2(-123, -123), int2(439, 439)), int2(246, 439)); + TestUtils.AreEqual(clamp(int2(-254, 246), int2(439, 439), int2(-123, -123)), int2(439, 439)); + TestUtils.AreEqual(clamp(int2(632, 2147483647), int2(439, -123), int2(-123, 439)), int2(439, 439)); + } + + [TestCompiler] + public static void clamp_int3() + { + TestUtils.AreEqual(clamp(int3(-2147483648, -254, 246), int3(-123, -123, -123), int3(439, 439, 439)), int3(-123, -123, 246)); + TestUtils.AreEqual(clamp(int3(632, -254, 246), int3(-123, 439, 439), int3(439, -123, -123)), int3(439, 439, 439)); + TestUtils.AreEqual(clamp(int3(632, 2147483647, 2147483647), int3(439, -123, -123), int3(-123, 439, 439)), int3(439, 439, 439)); + } + + [TestCompiler] + public static void clamp_int4() + { + TestUtils.AreEqual(clamp(int4(-2147483648, -254, 246, 632), int4(-123, -123, -123, -123), int4(439, 439, 439, 439)), int4(-123, -123, 246, 439)); + TestUtils.AreEqual(clamp(int4(-254, 246, 632, 2147483647), int4(439, 439, 439, -123), int4(-123, -123, -123, 439)), int4(439, 439, 439, 439)); + } + + [TestCompiler] + public static void clamp_uint() + { + TestUtils.AreEqual(clamp(0u, 123u, 439u), 123u); + TestUtils.AreEqual(clamp(54u, 123u, 439u), 123u); + TestUtils.AreEqual(clamp(246u, 123u, 439u), 246u); + TestUtils.AreEqual(clamp(632u, 123u, 439u), 439u); + TestUtils.AreEqual(clamp(54u, 439u, 123u), 439u); + TestUtils.AreEqual(clamp(246u, 439u, 123u), 439u); + TestUtils.AreEqual(clamp(632u, 439u, 123u), 439u); + TestUtils.AreEqual(clamp(4294967295u, 123u, 439u), 439u); + } + + [TestCompiler] + public static void clamp_uint2() + { + TestUtils.AreEqual(clamp(uint2(0u, 54u), uint2(123u, 123u), uint2(439u, 439u)), uint2(123u, 123u)); + TestUtils.AreEqual(clamp(uint2(246u, 632u), uint2(123u, 123u), uint2(439u, 439u)), uint2(246u, 439u)); + TestUtils.AreEqual(clamp(uint2(54u, 246u), uint2(439u, 439u), uint2(123u, 123u)), uint2(439u, 439u)); + TestUtils.AreEqual(clamp(uint2(632u, 4294967295u), uint2(439u, 123u), uint2(123u, 439u)), uint2(439u, 439u)); + } + + [TestCompiler] + public static void clamp_uint3() + { + TestUtils.AreEqual(clamp(uint3(0u, 54u, 246u), uint3(123u, 123u, 123u), uint3(439u, 439u, 439u)), uint3(123u, 123u, 246u)); + TestUtils.AreEqual(clamp(uint3(632u, 54u, 246u), uint3(123u, 439u, 439u), uint3(439u, 123u, 123u)), uint3(439u, 439u, 439u)); + TestUtils.AreEqual(clamp(uint3(632u, 4294967295u, 4294967295u), uint3(439u, 123u, 123u), uint3(123u, 439u, 439u)), uint3(439u, 439u, 439u)); + } + + [TestCompiler] + public static void clamp_uint4() + { + TestUtils.AreEqual(clamp(uint4(0u, 54u, 246u, 632u), uint4(123u, 123u, 123u, 123u), uint4(439u, 439u, 439u, 439u)), uint4(123u, 123u, 246u, 439u)); + TestUtils.AreEqual(clamp(uint4(54u, 246u, 632u, 4294967295u), uint4(439u, 439u, 439u, 123u), uint4(123u, 123u, 123u, 439u)), uint4(439u, 439u, 439u, 439u)); + } + + [TestCompiler] + public static void clamp_long() + { + TestUtils.AreEqual(clamp(-9223372036854775808L, -123L, 439L), -123L); + TestUtils.AreEqual(clamp(-254L, -123L, 439L), -123L); + TestUtils.AreEqual(clamp(246L, -123L, 439L), 246L); + TestUtils.AreEqual(clamp(632L, -123L, 439L), 439L); + TestUtils.AreEqual(clamp(-254L, 439L, -123L), 439L); + TestUtils.AreEqual(clamp(246L, 439L, -123L), 439L); + TestUtils.AreEqual(clamp(632L, 439L, -123L), 439L); + TestUtils.AreEqual(clamp(9223372036854775807L, -123L, 439L), 439L); + } + + [TestCompiler] + public static void clamp_ulong() + { + TestUtils.AreEqual(clamp(0UL, 123UL, 439UL), 123UL); + TestUtils.AreEqual(clamp(54UL, 123UL, 439UL), 123UL); + TestUtils.AreEqual(clamp(246UL, 123UL, 439UL), 246UL); + TestUtils.AreEqual(clamp(632UL, 123UL, 439UL), 439UL); + TestUtils.AreEqual(clamp(54UL, 439UL, 123UL), 439UL); + TestUtils.AreEqual(clamp(246UL, 439UL, 123UL), 439UL); + TestUtils.AreEqual(clamp(632UL, 439UL, 123UL), 439UL); + TestUtils.AreEqual(clamp(18446744073709551615UL, 123UL, 439UL), 439UL); + } + + [TestCompiler] + public static void clamp_float() + { + TestUtils.AreEqual(clamp(float.NegativeInfinity, -123.45f, 439.43f), -123.45f); + TestUtils.AreEqual(clamp(-254.3f, -123.45f, 439.43f), -123.45f); + TestUtils.AreEqual(clamp(246.3f, -123.45f, 439.43f), 246.3f); + TestUtils.AreEqual(clamp(632.1f, -123.45f, 439.43f), 439.43f); + TestUtils.AreEqual(clamp(-254.3f, 439.43f, -123.45f), 439.43f); + TestUtils.AreEqual(clamp(246.3f, 439.43f, -123.45f), 439.43f); + TestUtils.AreEqual(clamp(632.1f, 439.43f, -123.45f), 439.43f); + TestUtils.AreEqual(clamp(float.PositiveInfinity, -123.45f, 439.43f), 439.43f); + TestUtils.AreEqual(clamp(float.NaN, -123.45f, 439.43f), 439.43f); + } + + [TestCompiler] + public static void clamp_float2() + { + TestUtils.AreEqual(clamp(float2(float.NegativeInfinity, -254.3f), float2(-123.45f, -123.45f), float2(439.43f, 439.43f)), float2(-123.45f, -123.45f)); + TestUtils.AreEqual(clamp(float2(246.3f, 632.1f), float2(-123.45f, -123.45f), float2(439.43f, 439.43f)), float2(246.3f, 439.43f)); + TestUtils.AreEqual(clamp(float2(-254.3f, 246.3f), float2(439.43f, 439.43f), float2(-123.45f, -123.45f)), float2(439.43f, 439.43f)); + TestUtils.AreEqual(clamp(float2(632.1f, float.PositiveInfinity), float2(439.43f, -123.45f), float2(-123.45f, 439.43f)), float2(439.43f, 439.43f)); + TestUtils.AreEqual(clamp(float2(float.NaN, float.NaN), float2(-123.45f, -123.45f), float2(439.43f, 439.43f)), float2(439.43f, 439.43f)); + } + + [TestCompiler] + public static void clamp_float3() + { + TestUtils.AreEqual(clamp(float3(float.NegativeInfinity, -254.3f, 246.3f), float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f)), float3(-123.45f, -123.45f, 246.3f)); + TestUtils.AreEqual(clamp(float3(632.1f, -254.3f, 246.3f), float3(-123.45f, 439.43f, 439.43f), float3(439.43f, -123.45f, -123.45f)), float3(439.43f, 439.43f, 439.43f)); + TestUtils.AreEqual(clamp(float3(632.1f, float.PositiveInfinity, float.NaN), float3(439.43f, -123.45f, -123.45f), float3(-123.45f, 439.43f, 439.43f)), float3(439.43f, 439.43f, 439.43f)); + } + + [TestCompiler] + public static void clamp_float4() + { + TestUtils.AreEqual(clamp(float4(float.NegativeInfinity, -254.3f, 246.3f, 632.1f), float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(439.43f, 439.43f, 439.43f, 439.43f)), float4(-123.45f, -123.45f, 246.3f, 439.43f)); + TestUtils.AreEqual(clamp(float4(-254.3f, 246.3f, 632.1f, float.PositiveInfinity), float4(439.43f, 439.43f, 439.43f, -123.45f), float4(-123.45f, -123.45f, -123.45f, 439.43f)), float4(439.43f, 439.43f, 439.43f, 439.43f)); + TestUtils.AreEqual(clamp(float4(float.NaN, float.NaN, float.NaN, float.NaN), float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(439.43f, 439.43f, 439.43f, 439.43f)), float4(439.43f, 439.43f, 439.43f, 439.43f)); + } + + [TestCompiler] + public static void clamp_double() + { + TestUtils.AreEqual(clamp(double.NegativeInfinity, -123.45, 439.43), -123.45); + TestUtils.AreEqual(clamp(-254.3, -123.45, 439.43), -123.45); + TestUtils.AreEqual(clamp(246.3, -123.45, 439.43), 246.3); + TestUtils.AreEqual(clamp(632.1, -123.45, 439.43), 439.43); + TestUtils.AreEqual(clamp(-254.3, 439.43, -123.45), 439.43); + TestUtils.AreEqual(clamp(246.3, 439.43, -123.45), 439.43); + TestUtils.AreEqual(clamp(632.1, 439.43, -123.45), 439.43); + TestUtils.AreEqual(clamp(double.PositiveInfinity, -123.45, 439.43), 439.43); + TestUtils.AreEqual(clamp(double.NaN, -123.45, 439.43), 439.43); + } + + [TestCompiler] + public static void clamp_double2() + { + TestUtils.AreEqual(clamp(double2(double.NegativeInfinity, -254.3), double2(-123.45, -123.45), double2(439.43, 439.43)), double2(-123.45, -123.45)); + TestUtils.AreEqual(clamp(double2(246.3, 632.1), double2(-123.45, -123.45), double2(439.43, 439.43)), double2(246.3, 439.43)); + TestUtils.AreEqual(clamp(double2(-254.3, 246.3), double2(439.43, 439.43), double2(-123.45, -123.45)), double2(439.43, 439.43)); + TestUtils.AreEqual(clamp(double2(632.1, double.PositiveInfinity), double2(439.43, -123.45), double2(-123.45, 439.43)), double2(439.43, 439.43)); + TestUtils.AreEqual(clamp(double2(double.NaN, double.NaN), double2(-123.45, -123.45), double2(439.43, 439.43)), double2(439.43, 439.43)); + } + + [TestCompiler] + public static void clamp_double3() + { + TestUtils.AreEqual(clamp(double3(double.NegativeInfinity, -254.3, 246.3), double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43)), double3(-123.45, -123.45, 246.3)); + TestUtils.AreEqual(clamp(double3(632.1, -254.3, 246.3), double3(-123.45, 439.43, 439.43), double3(439.43, -123.45, -123.45)), double3(439.43, 439.43, 439.43)); + TestUtils.AreEqual(clamp(double3(632.1, double.PositiveInfinity, double.NaN), double3(439.43, -123.45, -123.45), double3(-123.45, 439.43, 439.43)), double3(439.43, 439.43, 439.43)); + } + + [TestCompiler] + public static void clamp_double4() + { + TestUtils.AreEqual(clamp(double4(double.NegativeInfinity, -254.3, 246.3, 632.1), double4(-123.45, -123.45, -123.45, -123.45), double4(439.43, 439.43, 439.43, 439.43)), double4(-123.45, -123.45, 246.3, 439.43)); + TestUtils.AreEqual(clamp(double4(-254.3, 246.3, 632.1, double.PositiveInfinity), double4(439.43, 439.43, 439.43, -123.45), double4(-123.45, -123.45, -123.45, 439.43)), double4(439.43, 439.43, 439.43, 439.43)); + TestUtils.AreEqual(clamp(double4(double.NaN, double.NaN, double.NaN, double.NaN), double4(-123.45, -123.45, -123.45, -123.45), double4(439.43, 439.43, 439.43, 439.43)), double4(439.43, 439.43, 439.43, 439.43)); + } + + [TestCompiler] + public static void saturate_float() + { + TestUtils.AreEqual(saturate(float.NegativeInfinity), 0f); + TestUtils.AreEqual(saturate(-123.45f), 0f); + TestUtils.AreEqual(saturate(0f), 0f); + TestUtils.AreEqual(saturate(0.5f), 0.5f); + TestUtils.AreEqual(saturate(1f), 1f); + TestUtils.AreEqual(saturate(123.45f), 1f); + TestUtils.AreEqual(saturate(float.PositiveInfinity), 1f); + TestUtils.AreEqual(saturate(float.NaN), 1f); + } + + [TestCompiler] + public static void saturate_float2() + { + TestUtils.AreEqual(saturate(float2(float.NegativeInfinity, -123.45f)), float2(0f, 0f)); + TestUtils.AreEqual(saturate(float2(0f, 0.5f)), float2(0f, 0.5f)); + TestUtils.AreEqual(saturate(float2(1f, 123.45f)), float2(1f, 1f)); + TestUtils.AreEqual(saturate(float2(float.PositiveInfinity, float.NaN)), float2(1f, 1f)); + } + + [TestCompiler] + public static void saturate_float3() + { + TestUtils.AreEqual(saturate(float3(float.NegativeInfinity, -123.45f, 0f)), float3(0f, 0f, 0f)); + TestUtils.AreEqual(saturate(float3(0.5f, 1f, 123.45f)), float3(0.5f, 1f, 1f)); + TestUtils.AreEqual(saturate(float3(float.PositiveInfinity, float.NaN, float.NaN)), float3(1f, 1f, 1f)); + } + + [TestCompiler] + public static void saturate_float4() + { + TestUtils.AreEqual(saturate(float4(float.NegativeInfinity, -123.45f, 0f, 0.5f)), float4(0f, 0f, 0f, 0.5f)); + TestUtils.AreEqual(saturate(float4(1f, 123.45f, float.PositiveInfinity, float.NaN)), float4(1f, 1f, 1f, 1f)); + } + + [TestCompiler] + public static void saturate_double() + { + TestUtils.AreEqual(saturate(double.NegativeInfinity), 0.0); + TestUtils.AreEqual(saturate(-123.45), 0.0); + TestUtils.AreEqual(saturate(0.0), 0.0); + TestUtils.AreEqual(saturate(0.5), 0.5); + TestUtils.AreEqual(saturate(1.0), 1.0); + TestUtils.AreEqual(saturate(123.45), 1.0); + TestUtils.AreEqual(saturate(double.PositiveInfinity), 1.0); + TestUtils.AreEqual(saturate(double.NaN), 1.0); + } + + [TestCompiler] + public static void saturate_double2() + { + TestUtils.AreEqual(saturate(double2(double.NegativeInfinity, -123.45)), double2(0.0, 0.0)); + TestUtils.AreEqual(saturate(double2(0.0, 0.5)), double2(0.0, 0.5)); + TestUtils.AreEqual(saturate(double2(1.0, 123.45)), double2(1.0, 1.0)); + TestUtils.AreEqual(saturate(double2(double.PositiveInfinity, double.NaN)), double2(1.0, 1.0)); + } + + [TestCompiler] + public static void saturate_double3() + { + TestUtils.AreEqual(saturate(double3(double.NegativeInfinity, -123.45, 0.0)), double3(0.0, 0.0, 0.0)); + TestUtils.AreEqual(saturate(double3(0.5, 1.0, 123.45)), double3(0.5, 1.0, 1.0)); + TestUtils.AreEqual(saturate(double3(double.PositiveInfinity, double.NaN, double.NaN)), double3(1.0, 1.0, 1.0)); + } + + [TestCompiler] + public static void saturate_double4() + { + TestUtils.AreEqual(saturate(double4(double.NegativeInfinity, -123.45, 0.0, 0.5)), double4(0.0, 0.0, 0.0, 0.5)); + TestUtils.AreEqual(saturate(double4(1.0, 123.45, double.PositiveInfinity, double.NaN)), double4(1.0, 1.0, 1.0, 1.0)); + } + + [TestCompiler] + public static void step_float() + { + TestUtils.AreEqual(step(-123.45f, float.NegativeInfinity), 0f); + TestUtils.AreEqual(step(-123.45f, -200f), 0f); + TestUtils.AreEqual(step(-123.45f, 200f), 1f); + TestUtils.AreEqual(step(-123.45f, float.PositiveInfinity), 1f); + TestUtils.AreEqual(step(-123.45f, float.NaN), 0f); + TestUtils.AreEqual(step(123.45f, float.NegativeInfinity), 0f); + TestUtils.AreEqual(step(123.45f, -200f), 0f); + TestUtils.AreEqual(step(123.45f, 200f), 1f); + TestUtils.AreEqual(step(123.45f, float.PositiveInfinity), 1f); + TestUtils.AreEqual(step(123.45f, float.NaN), 0f); + TestUtils.AreEqual(step(float.NegativeInfinity, float.NegativeInfinity), 1f); + TestUtils.AreEqual(step(float.NegativeInfinity, -200f), 1f); + TestUtils.AreEqual(step(float.NegativeInfinity, 200f), 1f); + TestUtils.AreEqual(step(float.NegativeInfinity, float.PositiveInfinity), 1f); + TestUtils.AreEqual(step(float.NegativeInfinity, float.NaN), 0f); + TestUtils.AreEqual(step(float.PositiveInfinity, float.NegativeInfinity), 0f); + TestUtils.AreEqual(step(float.PositiveInfinity, -200f), 0f); + TestUtils.AreEqual(step(float.PositiveInfinity, 200f), 0f); + TestUtils.AreEqual(step(float.PositiveInfinity, float.PositiveInfinity), 1f); + TestUtils.AreEqual(step(float.PositiveInfinity, float.NaN), 0f); + TestUtils.AreEqual(step(float.NaN, float.NegativeInfinity), 0f); + TestUtils.AreEqual(step(float.NaN, -200f), 0f); + TestUtils.AreEqual(step(float.NaN, 200f), 0f); + TestUtils.AreEqual(step(float.NaN, float.PositiveInfinity), 0f); + TestUtils.AreEqual(step(float.NaN, float.NaN), 0f); + } + + [TestCompiler] + public static void step_float2() + { + TestUtils.AreEqual(step(float2(-123.45f, -123.45f), float2(float.NegativeInfinity, -200f)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(-123.45f, -123.45f), float2(200f, float.PositiveInfinity)), float2(1f, 1f)); + TestUtils.AreEqual(step(float2(-123.45f, 123.45f), float2(float.NaN, float.NegativeInfinity)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(123.45f, 123.45f), float2(-200f, 200f)), float2(0f, 1f)); + TestUtils.AreEqual(step(float2(123.45f, 123.45f), float2(float.PositiveInfinity, float.NaN)), float2(1f, 0f)); + TestUtils.AreEqual(step(float2(float.NegativeInfinity, float.NegativeInfinity), float2(float.NegativeInfinity, -200f)), float2(1f, 1f)); + TestUtils.AreEqual(step(float2(float.NegativeInfinity, float.NegativeInfinity), float2(200f, float.PositiveInfinity)), float2(1f, 1f)); + TestUtils.AreEqual(step(float2(float.NegativeInfinity, float.PositiveInfinity), float2(float.NaN, float.NegativeInfinity)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(float.PositiveInfinity, float.PositiveInfinity), float2(-200f, 200f)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(float.PositiveInfinity, float.PositiveInfinity), float2(float.PositiveInfinity, float.NaN)), float2(1f, 0f)); + TestUtils.AreEqual(step(float2(float.NaN, float.NaN), float2(float.NegativeInfinity, -200f)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(float.NaN, float.NaN), float2(200f, float.PositiveInfinity)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(float.NaN, float.NaN), float2(float.NaN, float.NaN)), float2(0f, 0f)); + } + + [TestCompiler] + public static void step_float3() + { + TestUtils.AreEqual(step(float3(-123.45f, -123.45f, -123.45f), float3(float.NegativeInfinity, -200f, 200f)), float3(0f, 0f, 1f)); + TestUtils.AreEqual(step(float3(-123.45f, -123.45f, 123.45f), float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity)), float3(1f, 0f, 0f)); + TestUtils.AreEqual(step(float3(123.45f, 123.45f, 123.45f), float3(-200f, 200f, float.PositiveInfinity)), float3(0f, 1f, 1f)); + TestUtils.AreEqual(step(float3(123.45f, float.NegativeInfinity, float.NegativeInfinity), float3(float.NaN, float.NegativeInfinity, -200f)), float3(0f, 1f, 1f)); + TestUtils.AreEqual(step(float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity), float3(200f, float.PositiveInfinity, float.NaN)), float3(1f, 1f, 0f)); + TestUtils.AreEqual(step(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), float3(float.NegativeInfinity, -200f, 200f)), float3(0f, 0f, 0f)); + TestUtils.AreEqual(step(float3(float.PositiveInfinity, float.PositiveInfinity, float.NaN), float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity)), float3(1f, 0f, 0f)); + TestUtils.AreEqual(step(float3(float.NaN, float.NaN, float.NaN), float3(-200f, 200f, float.PositiveInfinity)), float3(0f, 0f, 0f)); + TestUtils.AreEqual(step(float3(float.NaN, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(0f, 0f, 0f)); + } + + [TestCompiler] + public static void step_float4() + { + TestUtils.AreEqual(step(float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(float.NegativeInfinity, -200f, 200f, float.PositiveInfinity)), float4(0f, 0f, 1f, 1f)); + TestUtils.AreEqual(step(float4(-123.45f, 123.45f, 123.45f, 123.45f), float4(float.NaN, float.NegativeInfinity, -200f, 200f)), float4(0f, 0f, 0f, 1f)); + TestUtils.AreEqual(step(float4(123.45f, 123.45f, float.NegativeInfinity, float.NegativeInfinity), float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -200f)), float4(1f, 0f, 1f, 1f)); + TestUtils.AreEqual(step(float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.PositiveInfinity), float4(200f, float.PositiveInfinity, float.NaN, float.NegativeInfinity)), float4(1f, 1f, 0f, 0f)); + TestUtils.AreEqual(step(float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), float4(-200f, 200f, float.PositiveInfinity, float.NaN)), float4(0f, 0f, 1f, 0f)); + TestUtils.AreEqual(step(float4(float.NaN, float.NaN, float.NaN, float.NaN), float4(float.NegativeInfinity, -200f, 200f, float.PositiveInfinity)), float4(0f, 0f, 0f, 0f)); + TestUtils.AreEqual(step(float4(float.NaN, float.NaN, float.NaN, float.NaN), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(0f, 0f, 0f, 0f)); + } + + [TestCompiler] + public static void step_double() + { + TestUtils.AreEqual(step(-123.45, double.NegativeInfinity), 0.0); + TestUtils.AreEqual(step(-123.45, -200.0), 0.0); + TestUtils.AreEqual(step(-123.45, 200.0), 1.0); + TestUtils.AreEqual(step(-123.45, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(step(-123.45, double.NaN), 0.0); + TestUtils.AreEqual(step(123.45, double.NegativeInfinity), 0.0); + TestUtils.AreEqual(step(123.45, -200.0), 0.0); + TestUtils.AreEqual(step(123.45, 200.0), 1.0); + TestUtils.AreEqual(step(123.45, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(step(123.45, double.NaN), 0.0); + TestUtils.AreEqual(step(double.NegativeInfinity, double.NegativeInfinity), 1.0); + TestUtils.AreEqual(step(double.NegativeInfinity, -200.0), 1.0); + TestUtils.AreEqual(step(double.NegativeInfinity, 200.0), 1.0); + TestUtils.AreEqual(step(double.NegativeInfinity, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(step(double.NegativeInfinity, double.NaN), 0.0); + TestUtils.AreEqual(step(double.PositiveInfinity, double.NegativeInfinity), 0.0); + TestUtils.AreEqual(step(double.PositiveInfinity, -200.0), 0.0); + TestUtils.AreEqual(step(double.PositiveInfinity, 200.0), 0.0); + TestUtils.AreEqual(step(double.PositiveInfinity, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(step(double.PositiveInfinity, double.NaN), 0.0); + TestUtils.AreEqual(step(double.NaN, double.NegativeInfinity), 0.0); + TestUtils.AreEqual(step(double.NaN, -200.0), 0.0); + TestUtils.AreEqual(step(double.NaN, 200.0), 0.0); + TestUtils.AreEqual(step(double.NaN, double.PositiveInfinity), 0.0); + TestUtils.AreEqual(step(double.NaN, double.NaN), 0.0); + } + + [TestCompiler] + public static void step_double2() + { + TestUtils.AreEqual(step(double2(-123.45, -123.45), double2(double.NegativeInfinity, -200.0)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(-123.45, -123.45), double2(200.0, double.PositiveInfinity)), double2(1.0, 1.0)); + TestUtils.AreEqual(step(double2(-123.45, 123.45), double2(double.NaN, double.NegativeInfinity)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(123.45, 123.45), double2(-200.0, 200.0)), double2(0.0, 1.0)); + TestUtils.AreEqual(step(double2(123.45, 123.45), double2(double.PositiveInfinity, double.NaN)), double2(1.0, 0.0)); + TestUtils.AreEqual(step(double2(double.NegativeInfinity, double.NegativeInfinity), double2(double.NegativeInfinity, -200.0)), double2(1.0, 1.0)); + TestUtils.AreEqual(step(double2(double.NegativeInfinity, double.NegativeInfinity), double2(200.0, double.PositiveInfinity)), double2(1.0, 1.0)); + TestUtils.AreEqual(step(double2(double.NegativeInfinity, double.PositiveInfinity), double2(double.NaN, double.NegativeInfinity)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(double.PositiveInfinity, double.PositiveInfinity), double2(-200.0, 200.0)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(double.PositiveInfinity, double.PositiveInfinity), double2(double.PositiveInfinity, double.NaN)), double2(1.0, 0.0)); + TestUtils.AreEqual(step(double2(double.NaN, double.NaN), double2(double.NegativeInfinity, -200.0)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(double.NaN, double.NaN), double2(200.0, double.PositiveInfinity)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(double.NaN, double.NaN), double2(double.NaN, double.NaN)), double2(0.0, 0.0)); + } + + [TestCompiler] + public static void step_double3() + { + TestUtils.AreEqual(step(double3(-123.45, -123.45, -123.45), double3(double.NegativeInfinity, -200.0, 200.0)), double3(0.0, 0.0, 1.0)); + TestUtils.AreEqual(step(double3(-123.45, -123.45, 123.45), double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity)), double3(1.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double3(123.45, 123.45, 123.45), double3(-200.0, 200.0, double.PositiveInfinity)), double3(0.0, 1.0, 1.0)); + TestUtils.AreEqual(step(double3(123.45, double.NegativeInfinity, double.NegativeInfinity), double3(double.NaN, double.NegativeInfinity, -200.0)), double3(0.0, 1.0, 1.0)); + TestUtils.AreEqual(step(double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity), double3(200.0, double.PositiveInfinity, double.NaN)), double3(1.0, 1.0, 0.0)); + TestUtils.AreEqual(step(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), double3(double.NegativeInfinity, -200.0, 200.0)), double3(0.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double3(double.PositiveInfinity, double.PositiveInfinity, double.NaN), double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity)), double3(1.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double3(double.NaN, double.NaN, double.NaN), double3(-200.0, 200.0, double.PositiveInfinity)), double3(0.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double3(double.NaN, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(0.0, 0.0, 0.0)); + } + + [TestCompiler] + public static void step_double4() + { + TestUtils.AreEqual(step(double4(-123.45, -123.45, -123.45, -123.45), double4(double.NegativeInfinity, -200.0, 200.0, double.PositiveInfinity)), double4(0.0, 0.0, 1.0, 1.0)); + TestUtils.AreEqual(step(double4(-123.45, 123.45, 123.45, 123.45), double4(double.NaN, double.NegativeInfinity, -200.0, 200.0)), double4(0.0, 0.0, 0.0, 1.0)); + TestUtils.AreEqual(step(double4(123.45, 123.45, double.NegativeInfinity, double.NegativeInfinity), double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -200.0)), double4(1.0, 0.0, 1.0, 1.0)); + TestUtils.AreEqual(step(double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, double.PositiveInfinity), double4(200.0, double.PositiveInfinity, double.NaN, double.NegativeInfinity)), double4(1.0, 1.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), double4(-200.0, 200.0, double.PositiveInfinity, double.NaN)), double4(0.0, 0.0, 1.0, 0.0)); + TestUtils.AreEqual(step(double4(double.NaN, double.NaN, double.NaN, double.NaN), double4(double.NegativeInfinity, -200.0, 200.0, double.PositiveInfinity)), double4(0.0, 0.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double4(double.NaN, double.NaN, double.NaN, double.NaN), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(0.0, 0.0, 0.0, 0.0)); + } + + [TestCompiler] + public static void min_int() + { + TestUtils.AreEqual(min(-2147483648, -2147483648), -2147483648); + TestUtils.AreEqual(min(-2147483648, -1), -2147483648); + TestUtils.AreEqual(min(-1, -2147483648), -2147483648); + TestUtils.AreEqual(min(-1234, -3456), -3456); + TestUtils.AreEqual(min(-3456, -1234), -3456); + TestUtils.AreEqual(min(-1234, 3456), -1234); + TestUtils.AreEqual(min(3456, -1234), -1234); + TestUtils.AreEqual(min(1234, 3456), 1234); + TestUtils.AreEqual(min(3456, 1234), 1234); + TestUtils.AreEqual(min(1, 2147483647), 1); + TestUtils.AreEqual(min(2147483647, 1), 1); + TestUtils.AreEqual(min(2147483647, -2147483648), -2147483648); + TestUtils.AreEqual(min(2147483647, 2147483647), 2147483647); + } + + [TestCompiler] + public static void min_int2() + { + TestUtils.AreEqual(min(int2(-2147483648, -2147483648), int2(-2147483648, -1)), int2(-2147483648, -2147483648)); + TestUtils.AreEqual(min(int2(-1, -1234), int2(-2147483648, -3456)), int2(-2147483648, -3456)); + TestUtils.AreEqual(min(int2(-3456, -1234), int2(-1234, 3456)), int2(-3456, -1234)); + TestUtils.AreEqual(min(int2(3456, 1234), int2(-1234, 3456)), int2(-1234, 1234)); + TestUtils.AreEqual(min(int2(3456, 1), int2(1234, 2147483647)), int2(1234, 1)); + TestUtils.AreEqual(min(int2(2147483647, 2147483647), int2(1, -2147483648)), int2(1, -2147483648)); + TestUtils.AreEqual(min(int2(2147483647, 2147483647), int2(2147483647, 2147483647)), int2(2147483647, 2147483647)); + } + + [TestCompiler] + public static void min_int3() + { + TestUtils.AreEqual(min(int3(-2147483648, -2147483648, -1), int3(-2147483648, -1, -2147483648)), int3(-2147483648, -2147483648, -2147483648)); + TestUtils.AreEqual(min(int3(-1234, -3456, -1234), int3(-3456, -1234, 3456)), int3(-3456, -3456, -1234)); + TestUtils.AreEqual(min(int3(3456, 1234, 3456), int3(-1234, 3456, 1234)), int3(-1234, 1234, 1234)); + TestUtils.AreEqual(min(int3(1, 2147483647, 2147483647), int3(2147483647, 1, -2147483648)), int3(1, 1, -2147483648)); + TestUtils.AreEqual(min(int3(2147483647, 2147483647, 2147483647), int3(2147483647, 2147483647, 2147483647)), int3(2147483647, 2147483647, 2147483647)); + } + + [TestCompiler] + public static void min_int4() + { + TestUtils.AreEqual(min(int4(-2147483648, -2147483648, -1, -1234), int4(-2147483648, -1, -2147483648, -3456)), int4(-2147483648, -2147483648, -2147483648, -3456)); + TestUtils.AreEqual(min(int4(-3456, -1234, 3456, 1234), int4(-1234, 3456, -1234, 3456)), int4(-3456, -1234, -1234, 1234)); + TestUtils.AreEqual(min(int4(3456, 1, 2147483647, 2147483647), int4(1234, 2147483647, 1, -2147483648)), int4(1234, 1, 1, -2147483648)); + TestUtils.AreEqual(min(int4(2147483647, 2147483647, 2147483647, 2147483647), int4(2147483647, 2147483647, 2147483647, 2147483647)), int4(2147483647, 2147483647, 2147483647, 2147483647)); + } + + [TestCompiler] + public static void min_uint() + { + TestUtils.AreEqual(min(1234u, 3456u), 1234u); + TestUtils.AreEqual(min(3456u, 1234u), 1234u); + TestUtils.AreEqual(min(4294967040u, 7u), 7u); + TestUtils.AreEqual(min(7u, 4294967040u), 7u); + TestUtils.AreEqual(min(1u, 4294967295u), 1u); + TestUtils.AreEqual(min(4294967295u, 1u), 1u); + TestUtils.AreEqual(min(4294967295u, 4294967295u), 4294967295u); + } + + [TestCompiler] + public static void min_uint2() + { + TestUtils.AreEqual(min(uint2(1234u, 3456u), uint2(3456u, 1234u)), uint2(1234u, 1234u)); + TestUtils.AreEqual(min(uint2(4294967040u, 7u), uint2(7u, 4294967040u)), uint2(7u, 7u)); + TestUtils.AreEqual(min(uint2(1u, 4294967295u), uint2(4294967295u, 1u)), uint2(1u, 1u)); + TestUtils.AreEqual(min(uint2(4294967295u, 4294967295u), uint2(4294967295u, 4294967295u)), uint2(4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void min_uint3() + { + TestUtils.AreEqual(min(uint3(1234u, 3456u, 4294967040u), uint3(3456u, 1234u, 7u)), uint3(1234u, 1234u, 7u)); + TestUtils.AreEqual(min(uint3(7u, 1u, 4294967295u), uint3(4294967040u, 4294967295u, 1u)), uint3(7u, 1u, 1u)); + TestUtils.AreEqual(min(uint3(4294967295u, 4294967295u, 4294967295u), uint3(4294967295u, 4294967295u, 4294967295u)), uint3(4294967295u, 4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void min_uint4() + { + TestUtils.AreEqual(min(uint4(1234u, 3456u, 4294967040u, 7u), uint4(3456u, 1234u, 7u, 4294967040u)), uint4(1234u, 1234u, 7u, 7u)); + TestUtils.AreEqual(min(uint4(1u, 4294967295u, 4294967295u, 4294967295u), uint4(4294967295u, 1u, 4294967295u, 4294967295u)), uint4(1u, 1u, 4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void min_long() + { + TestUtils.AreEqual(min(-9223372036854775808L, -9223372036854775808L), -9223372036854775808L); + TestUtils.AreEqual(min(-9223372036854775808L, -1L), -9223372036854775808L); + TestUtils.AreEqual(min(-1L, -9223372036854775808L), -9223372036854775808L); + TestUtils.AreEqual(min(-1234L, -3456L), -3456L); + TestUtils.AreEqual(min(-3456L, -1234L), -3456L); + TestUtils.AreEqual(min(-1234L, 3456L), -1234L); + TestUtils.AreEqual(min(3456L, -1234L), -1234L); + TestUtils.AreEqual(min(1234L, 3456L), 1234L); + TestUtils.AreEqual(min(3456L, 1234L), 1234L); + TestUtils.AreEqual(min(1L, 9223372036854775807L), 1L); + TestUtils.AreEqual(min(9223372036854775807L, 1L), 1L); + TestUtils.AreEqual(min(9223372036854775807L, -9223372036854775808L), -9223372036854775808L); + TestUtils.AreEqual(min(9223372036854775807L, 9223372036854775807L), 9223372036854775807L); + } + + [TestCompiler] + public static void min_ulong() + { + TestUtils.AreEqual(min(1234UL, 3456UL), 1234UL); + TestUtils.AreEqual(min(3456UL, 1234UL), 1234UL); + TestUtils.AreEqual(min(18446744073709551360UL, 7UL), 7UL); + TestUtils.AreEqual(min(7UL, 18446744073709551360UL), 7UL); + TestUtils.AreEqual(min(1UL, 18446744073709551615UL), 1UL); + TestUtils.AreEqual(min(18446744073709551615UL, 1UL), 1UL); + TestUtils.AreEqual(min(18446744073709551615UL, 18446744073709551615UL), 18446744073709551615UL); + } + + [TestCompiler] + public static void min_float() + { + TestUtils.AreEqual(min(float.NegativeInfinity, float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(min(float.NegativeInfinity, -1f), float.NegativeInfinity); + TestUtils.AreEqual(min(-1f, float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(min(-1234.56f, -3456.7f), -3456.7f); + TestUtils.AreEqual(min(-3456.7f, -1234.56f), -3456.7f); + TestUtils.AreEqual(min(-1234.56f, 3456.7f), -1234.56f); + TestUtils.AreEqual(min(3456.7f, -1234.56f), -1234.56f); + TestUtils.AreEqual(min(1234.56f, 3456.7f), 1234.56f); + TestUtils.AreEqual(min(3456.7f, 1234.56f), 1234.56f); + TestUtils.AreEqual(min(1f, float.PositiveInfinity), 1f); + TestUtils.AreEqual(min(float.PositiveInfinity, 1f), 1f); + TestUtils.AreEqual(min(float.PositiveInfinity, float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(min(float.PositiveInfinity, float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(min(float.NaN, 2.3f), 2.3f); + TestUtils.AreEqual(min(2.3f, float.NaN), 2.3f); + TestUtils.AreEqual(min(float.NaN, float.NaN), float.NaN); + } + + [TestCompiler] + public static void min_float2() + { + TestUtils.AreEqual(min(float2(float.NegativeInfinity, float.NegativeInfinity), float2(float.NegativeInfinity, -1f)), float2(float.NegativeInfinity, float.NegativeInfinity)); + TestUtils.AreEqual(min(float2(-1f, -1234.56f), float2(float.NegativeInfinity, -3456.7f)), float2(float.NegativeInfinity, -3456.7f)); + TestUtils.AreEqual(min(float2(-3456.7f, -1234.56f), float2(-1234.56f, 3456.7f)), float2(-3456.7f, -1234.56f)); + TestUtils.AreEqual(min(float2(3456.7f, 1234.56f), float2(-1234.56f, 3456.7f)), float2(-1234.56f, 1234.56f)); + TestUtils.AreEqual(min(float2(3456.7f, 1f), float2(1234.56f, float.PositiveInfinity)), float2(1234.56f, 1f)); + TestUtils.AreEqual(min(float2(float.PositiveInfinity, float.PositiveInfinity), float2(1f, float.NegativeInfinity)), float2(1f, float.NegativeInfinity)); + TestUtils.AreEqual(min(float2(float.PositiveInfinity, float.NaN), float2(float.PositiveInfinity, 2.3f)), float2(float.PositiveInfinity, 2.3f)); + TestUtils.AreEqual(min(float2(2.3f, float.NaN), float2(float.NaN, float.NaN)), float2(2.3f, float.NaN)); + } + + [TestCompiler] + public static void min_float3() + { + TestUtils.AreEqual(min(float3(float.NegativeInfinity, float.NegativeInfinity, -1f), float3(float.NegativeInfinity, -1f, float.NegativeInfinity)), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)); + TestUtils.AreEqual(min(float3(-1234.56f, -3456.7f, -1234.56f), float3(-3456.7f, -1234.56f, 3456.7f)), float3(-3456.7f, -3456.7f, -1234.56f)); + TestUtils.AreEqual(min(float3(3456.7f, 1234.56f, 3456.7f), float3(-1234.56f, 3456.7f, 1234.56f)), float3(-1234.56f, 1234.56f, 1234.56f)); + TestUtils.AreEqual(min(float3(1f, float.PositiveInfinity, float.PositiveInfinity), float3(float.PositiveInfinity, 1f, float.NegativeInfinity)), float3(1f, 1f, float.NegativeInfinity)); + TestUtils.AreEqual(min(float3(float.PositiveInfinity, float.NaN, 2.3f), float3(float.PositiveInfinity, 2.3f, float.NaN)), float3(float.PositiveInfinity, 2.3f, 2.3f)); + TestUtils.AreEqual(min(float3(float.NaN, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void min_float4() + { + TestUtils.AreEqual(min(float4(float.NegativeInfinity, float.NegativeInfinity, -1f, -1234.56f), float4(float.NegativeInfinity, -1f, float.NegativeInfinity, -3456.7f)), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, -3456.7f)); + TestUtils.AreEqual(min(float4(-3456.7f, -1234.56f, 3456.7f, 1234.56f), float4(-1234.56f, 3456.7f, -1234.56f, 3456.7f)), float4(-3456.7f, -1234.56f, -1234.56f, 1234.56f)); + TestUtils.AreEqual(min(float4(3456.7f, 1f, float.PositiveInfinity, float.PositiveInfinity), float4(1234.56f, float.PositiveInfinity, 1f, float.NegativeInfinity)), float4(1234.56f, 1f, 1f, float.NegativeInfinity)); + TestUtils.AreEqual(min(float4(float.PositiveInfinity, float.NaN, 2.3f, float.NaN), float4(float.PositiveInfinity, 2.3f, float.NaN, float.NaN)), float4(float.PositiveInfinity, 2.3f, 2.3f, float.NaN)); + } + + [TestCompiler] + public static void min_double() + { + TestUtils.AreEqual(min(double.NegativeInfinity, double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(min(double.NegativeInfinity, -1.0), double.NegativeInfinity); + TestUtils.AreEqual(min(-1.0, double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(min(-1234.56, -3456.7), -3456.7); + TestUtils.AreEqual(min(-3456.7, -1234.56), -3456.7); + TestUtils.AreEqual(min(-1234.56, 3456.7), -1234.56); + TestUtils.AreEqual(min(3456.7, -1234.56), -1234.56); + TestUtils.AreEqual(min(1234.56, 3456.7), 1234.56); + TestUtils.AreEqual(min(3456.7, 1234.56), 1234.56); + TestUtils.AreEqual(min(1.0, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(min(double.PositiveInfinity, 1.0), 1.0); + TestUtils.AreEqual(min(double.PositiveInfinity, double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(min(double.PositiveInfinity, double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(min(double.NaN, 2.3), 2.3); + TestUtils.AreEqual(min(2.3, double.NaN), 2.3); + TestUtils.AreEqual(min(double.NaN, double.NaN), double.NaN); + } + + [TestCompiler] + public static void min_double2() + { + TestUtils.AreEqual(min(double2(double.NegativeInfinity, double.NegativeInfinity), double2(double.NegativeInfinity, -1.0)), double2(double.NegativeInfinity, double.NegativeInfinity)); + TestUtils.AreEqual(min(double2(-1.0, -1234.56), double2(double.NegativeInfinity, -3456.7)), double2(double.NegativeInfinity, -3456.7)); + TestUtils.AreEqual(min(double2(-3456.7, -1234.56), double2(-1234.56, 3456.7)), double2(-3456.7, -1234.56)); + TestUtils.AreEqual(min(double2(3456.7, 1234.56), double2(-1234.56, 3456.7)), double2(-1234.56, 1234.56)); + TestUtils.AreEqual(min(double2(3456.7, 1.0), double2(1234.56, double.PositiveInfinity)), double2(1234.56, 1.0)); + TestUtils.AreEqual(min(double2(double.PositiveInfinity, double.PositiveInfinity), double2(1.0, double.NegativeInfinity)), double2(1.0, double.NegativeInfinity)); + TestUtils.AreEqual(min(double2(double.PositiveInfinity, double.NaN), double2(double.PositiveInfinity, 2.3)), double2(double.PositiveInfinity, 2.3)); + TestUtils.AreEqual(min(double2(2.3, double.NaN), double2(double.NaN, double.NaN)), double2(2.3, double.NaN)); + } + + [TestCompiler] + public static void min_double3() + { + TestUtils.AreEqual(min(double3(double.NegativeInfinity, double.NegativeInfinity, -1.0), double3(double.NegativeInfinity, -1.0, double.NegativeInfinity)), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)); + TestUtils.AreEqual(min(double3(-1234.56, -3456.7, -1234.56), double3(-3456.7, -1234.56, 3456.7)), double3(-3456.7, -3456.7, -1234.56)); + TestUtils.AreEqual(min(double3(3456.7, 1234.56, 3456.7), double3(-1234.56, 3456.7, 1234.56)), double3(-1234.56, 1234.56, 1234.56)); + TestUtils.AreEqual(min(double3(1.0, double.PositiveInfinity, double.PositiveInfinity), double3(double.PositiveInfinity, 1.0, double.NegativeInfinity)), double3(1.0, 1.0, double.NegativeInfinity)); + TestUtils.AreEqual(min(double3(double.PositiveInfinity, double.NaN, 2.3), double3(double.PositiveInfinity, 2.3, double.NaN)), double3(double.PositiveInfinity, 2.3, 2.3)); + TestUtils.AreEqual(min(double3(double.NaN, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void min_double4() + { + TestUtils.AreEqual(min(double4(double.NegativeInfinity, double.NegativeInfinity, -1.0, -1234.56), double4(double.NegativeInfinity, -1.0, double.NegativeInfinity, -3456.7)), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, -3456.7)); + TestUtils.AreEqual(min(double4(-3456.7, -1234.56, 3456.7, 1234.56), double4(-1234.56, 3456.7, -1234.56, 3456.7)), double4(-3456.7, -1234.56, -1234.56, 1234.56)); + TestUtils.AreEqual(min(double4(3456.7, 1.0, double.PositiveInfinity, double.PositiveInfinity), double4(1234.56, double.PositiveInfinity, 1.0, double.NegativeInfinity)), double4(1234.56, 1.0, 1.0, double.NegativeInfinity)); + TestUtils.AreEqual(min(double4(double.PositiveInfinity, double.NaN, 2.3, double.NaN), double4(double.PositiveInfinity, 2.3, double.NaN, double.NaN)), double4(double.PositiveInfinity, 2.3, 2.3, double.NaN)); + } + + [TestCompiler] + public static void max_int() + { + TestUtils.AreEqual(max(-2147483648, -2147483648), -2147483648); + TestUtils.AreEqual(max(-2147483648, -1), -1); + TestUtils.AreEqual(max(-1, -2147483648), -1); + TestUtils.AreEqual(max(-1234, -3456), -1234); + TestUtils.AreEqual(max(-3456, -1234), -1234); + TestUtils.AreEqual(max(-1234, 3456), 3456); + TestUtils.AreEqual(max(3456, -1234), 3456); + TestUtils.AreEqual(max(1234, 3456), 3456); + TestUtils.AreEqual(max(3456, 1234), 3456); + TestUtils.AreEqual(max(1, 2147483647), 2147483647); + TestUtils.AreEqual(max(2147483647, 1), 2147483647); + TestUtils.AreEqual(max(2147483647, -2147483648), 2147483647); + TestUtils.AreEqual(max(2147483647, 2147483647), 2147483647); + } + + [TestCompiler] + public static void max_int2() + { + TestUtils.AreEqual(max(int2(-2147483648, -2147483648), int2(-2147483648, -1)), int2(-2147483648, -1)); + TestUtils.AreEqual(max(int2(-1, -1234), int2(-2147483648, -3456)), int2(-1, -1234)); + TestUtils.AreEqual(max(int2(-3456, -1234), int2(-1234, 3456)), int2(-1234, 3456)); + TestUtils.AreEqual(max(int2(3456, 1234), int2(-1234, 3456)), int2(3456, 3456)); + TestUtils.AreEqual(max(int2(3456, 1), int2(1234, 2147483647)), int2(3456, 2147483647)); + TestUtils.AreEqual(max(int2(2147483647, 2147483647), int2(1, -2147483648)), int2(2147483647, 2147483647)); + TestUtils.AreEqual(max(int2(2147483647, 2147483647), int2(2147483647, 2147483647)), int2(2147483647, 2147483647)); + } + + [TestCompiler] + public static void max_int3() + { + TestUtils.AreEqual(max(int3(-2147483648, -2147483648, -1), int3(-2147483648, -1, -2147483648)), int3(-2147483648, -1, -1)); + TestUtils.AreEqual(max(int3(-1234, -3456, -1234), int3(-3456, -1234, 3456)), int3(-1234, -1234, 3456)); + TestUtils.AreEqual(max(int3(3456, 1234, 3456), int3(-1234, 3456, 1234)), int3(3456, 3456, 3456)); + TestUtils.AreEqual(max(int3(1, 2147483647, 2147483647), int3(2147483647, 1, -2147483648)), int3(2147483647, 2147483647, 2147483647)); + TestUtils.AreEqual(max(int3(2147483647, 2147483647, 2147483647), int3(2147483647, 2147483647, 2147483647)), int3(2147483647, 2147483647, 2147483647)); + } + + [TestCompiler] + public static void max_int4() + { + TestUtils.AreEqual(max(int4(-2147483648, -2147483648, -1, -1234), int4(-2147483648, -1, -2147483648, -3456)), int4(-2147483648, -1, -1, -1234)); + TestUtils.AreEqual(max(int4(-3456, -1234, 3456, 1234), int4(-1234, 3456, -1234, 3456)), int4(-1234, 3456, 3456, 3456)); + TestUtils.AreEqual(max(int4(3456, 1, 2147483647, 2147483647), int4(1234, 2147483647, 1, -2147483648)), int4(3456, 2147483647, 2147483647, 2147483647)); + TestUtils.AreEqual(max(int4(2147483647, 2147483647, 2147483647, 2147483647), int4(2147483647, 2147483647, 2147483647, 2147483647)), int4(2147483647, 2147483647, 2147483647, 2147483647)); + } + + [TestCompiler] + public static void max_uint() + { + TestUtils.AreEqual(max(1234u, 3456u), 3456u); + TestUtils.AreEqual(max(3456u, 1234u), 3456u); + TestUtils.AreEqual(max(4294967040u, 7u), 4294967040u); + TestUtils.AreEqual(max(7u, 4294967040u), 4294967040u); + TestUtils.AreEqual(max(1u, 4294967295u), 4294967295u); + TestUtils.AreEqual(max(4294967295u, 1u), 4294967295u); + TestUtils.AreEqual(max(4294967295u, 4294967295u), 4294967295u); + } + + [TestCompiler] + public static void max_uint2() + { + TestUtils.AreEqual(max(uint2(1234u, 3456u), uint2(3456u, 1234u)), uint2(3456u, 3456u)); + TestUtils.AreEqual(max(uint2(4294967040u, 7u), uint2(7u, 4294967040u)), uint2(4294967040u, 4294967040u)); + TestUtils.AreEqual(max(uint2(1u, 4294967295u), uint2(4294967295u, 1u)), uint2(4294967295u, 4294967295u)); + TestUtils.AreEqual(max(uint2(4294967295u, 4294967295u), uint2(4294967295u, 4294967295u)), uint2(4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void max_uint3() + { + TestUtils.AreEqual(max(uint3(1234u, 3456u, 4294967040u), uint3(3456u, 1234u, 7u)), uint3(3456u, 3456u, 4294967040u)); + TestUtils.AreEqual(max(uint3(7u, 1u, 4294967295u), uint3(4294967040u, 4294967295u, 1u)), uint3(4294967040u, 4294967295u, 4294967295u)); + TestUtils.AreEqual(max(uint3(4294967295u, 4294967295u, 4294967295u), uint3(4294967295u, 4294967295u, 4294967295u)), uint3(4294967295u, 4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void max_uint4() + { + TestUtils.AreEqual(max(uint4(1234u, 3456u, 4294967040u, 7u), uint4(3456u, 1234u, 7u, 4294967040u)), uint4(3456u, 3456u, 4294967040u, 4294967040u)); + TestUtils.AreEqual(max(uint4(1u, 4294967295u, 4294967295u, 4294967295u), uint4(4294967295u, 1u, 4294967295u, 4294967295u)), uint4(4294967295u, 4294967295u, 4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void max_long() + { + TestUtils.AreEqual(max(-9223372036854775808L, -9223372036854775808L), -9223372036854775808L); + TestUtils.AreEqual(max(-9223372036854775808L, -1L), -1L); + TestUtils.AreEqual(max(-1L, -9223372036854775808L), -1L); + TestUtils.AreEqual(max(-1234L, -3456L), -1234L); + TestUtils.AreEqual(max(-3456L, -1234L), -1234L); + TestUtils.AreEqual(max(-1234L, 3456L), 3456L); + TestUtils.AreEqual(max(3456L, -1234L), 3456L); + TestUtils.AreEqual(max(1234L, 3456L), 3456L); + TestUtils.AreEqual(max(3456L, 1234L), 3456L); + TestUtils.AreEqual(max(1L, 9223372036854775807L), 9223372036854775807L); + TestUtils.AreEqual(max(9223372036854775807L, 1L), 9223372036854775807L); + TestUtils.AreEqual(max(9223372036854775807L, -9223372036854775808L), 9223372036854775807L); + TestUtils.AreEqual(max(9223372036854775807L, 9223372036854775807L), 9223372036854775807L); + } + + [TestCompiler] + public static void max_ulong() + { + TestUtils.AreEqual(max(1234UL, 3456UL), 3456UL); + TestUtils.AreEqual(max(3456UL, 1234UL), 3456UL); + TestUtils.AreEqual(max(18446744073709551360UL, 7UL), 18446744073709551360UL); + TestUtils.AreEqual(max(7UL, 18446744073709551360UL), 18446744073709551360UL); + TestUtils.AreEqual(max(1UL, 18446744073709551615UL), 18446744073709551615UL); + TestUtils.AreEqual(max(18446744073709551615UL, 1UL), 18446744073709551615UL); + TestUtils.AreEqual(max(18446744073709551615UL, 18446744073709551615UL), 18446744073709551615UL); + } + + [TestCompiler] + public static void max_float() + { + TestUtils.AreEqual(max(float.NegativeInfinity, float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(max(float.NegativeInfinity, -1f), -1f); + TestUtils.AreEqual(max(-1f, float.NegativeInfinity), -1f); + TestUtils.AreEqual(max(-1234.56f, -3456.7f), -1234.56f); + TestUtils.AreEqual(max(-3456.7f, -1234.56f), -1234.56f); + TestUtils.AreEqual(max(-1234.56f, 3456.7f), 3456.7f); + TestUtils.AreEqual(max(3456.7f, -1234.56f), 3456.7f); + TestUtils.AreEqual(max(1234.56f, 3456.7f), 3456.7f); + TestUtils.AreEqual(max(3456.7f, 1234.56f), 3456.7f); + TestUtils.AreEqual(max(1f, float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(max(float.PositiveInfinity, 1f), float.PositiveInfinity); + TestUtils.AreEqual(max(float.PositiveInfinity, float.NegativeInfinity), float.PositiveInfinity); + TestUtils.AreEqual(max(float.PositiveInfinity, float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(max(float.NaN, 2.3f), 2.3f); + TestUtils.AreEqual(max(2.3f, float.NaN), 2.3f); + TestUtils.AreEqual(max(float.NaN, float.NaN), float.NaN); + } + + [TestCompiler] + public static void max_float2() + { + TestUtils.AreEqual(max(float2(float.NegativeInfinity, float.NegativeInfinity), float2(float.NegativeInfinity, -1f)), float2(float.NegativeInfinity, -1f)); + TestUtils.AreEqual(max(float2(-1f, -1234.56f), float2(float.NegativeInfinity, -3456.7f)), float2(-1f, -1234.56f)); + TestUtils.AreEqual(max(float2(-3456.7f, -1234.56f), float2(-1234.56f, 3456.7f)), float2(-1234.56f, 3456.7f)); + TestUtils.AreEqual(max(float2(3456.7f, 1234.56f), float2(-1234.56f, 3456.7f)), float2(3456.7f, 3456.7f)); + TestUtils.AreEqual(max(float2(3456.7f, 1f), float2(1234.56f, float.PositiveInfinity)), float2(3456.7f, float.PositiveInfinity)); + TestUtils.AreEqual(max(float2(float.PositiveInfinity, float.PositiveInfinity), float2(1f, float.NegativeInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity)); + TestUtils.AreEqual(max(float2(float.PositiveInfinity, float.NaN), float2(float.PositiveInfinity, 2.3f)), float2(float.PositiveInfinity, 2.3f)); + TestUtils.AreEqual(max(float2(2.3f, float.NaN), float2(float.NaN, float.NaN)), float2(2.3f, float.NaN)); + } + + [TestCompiler] + public static void max_float3() + { + TestUtils.AreEqual(max(float3(float.NegativeInfinity, float.NegativeInfinity, -1f), float3(float.NegativeInfinity, -1f, float.NegativeInfinity)), float3(float.NegativeInfinity, -1f, -1f)); + TestUtils.AreEqual(max(float3(-1234.56f, -3456.7f, -1234.56f), float3(-3456.7f, -1234.56f, 3456.7f)), float3(-1234.56f, -1234.56f, 3456.7f)); + TestUtils.AreEqual(max(float3(3456.7f, 1234.56f, 3456.7f), float3(-1234.56f, 3456.7f, 1234.56f)), float3(3456.7f, 3456.7f, 3456.7f)); + TestUtils.AreEqual(max(float3(1f, float.PositiveInfinity, float.PositiveInfinity), float3(float.PositiveInfinity, 1f, float.NegativeInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)); + TestUtils.AreEqual(max(float3(float.PositiveInfinity, float.NaN, 2.3f), float3(float.PositiveInfinity, 2.3f, float.NaN)), float3(float.PositiveInfinity, 2.3f, 2.3f)); + TestUtils.AreEqual(max(float3(float.NaN, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void max_float4() + { + TestUtils.AreEqual(max(float4(float.NegativeInfinity, float.NegativeInfinity, -1f, -1234.56f), float4(float.NegativeInfinity, -1f, float.NegativeInfinity, -3456.7f)), float4(float.NegativeInfinity, -1f, -1f, -1234.56f)); + TestUtils.AreEqual(max(float4(-3456.7f, -1234.56f, 3456.7f, 1234.56f), float4(-1234.56f, 3456.7f, -1234.56f, 3456.7f)), float4(-1234.56f, 3456.7f, 3456.7f, 3456.7f)); + TestUtils.AreEqual(max(float4(3456.7f, 1f, float.PositiveInfinity, float.PositiveInfinity), float4(1234.56f, float.PositiveInfinity, 1f, float.NegativeInfinity)), float4(3456.7f, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)); + TestUtils.AreEqual(max(float4(float.PositiveInfinity, float.NaN, 2.3f, float.NaN), float4(float.PositiveInfinity, 2.3f, float.NaN, float.NaN)), float4(float.PositiveInfinity, 2.3f, 2.3f, float.NaN)); + } + + [TestCompiler] + public static void max_double() + { + TestUtils.AreEqual(max(double.NegativeInfinity, double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(max(double.NegativeInfinity, -1.0), -1.0); + TestUtils.AreEqual(max(-1.0, double.NegativeInfinity), -1.0); + TestUtils.AreEqual(max(-1234.56, -3456.7), -1234.56); + TestUtils.AreEqual(max(-3456.7, -1234.56), -1234.56); + TestUtils.AreEqual(max(-1234.56, 3456.7), 3456.7); + TestUtils.AreEqual(max(3456.7, -1234.56), 3456.7); + TestUtils.AreEqual(max(1234.56, 3456.7), 3456.7); + TestUtils.AreEqual(max(3456.7, 1234.56), 3456.7); + TestUtils.AreEqual(max(1.0, double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(max(double.PositiveInfinity, 1.0), double.PositiveInfinity); + TestUtils.AreEqual(max(double.PositiveInfinity, double.NegativeInfinity), double.PositiveInfinity); + TestUtils.AreEqual(max(double.PositiveInfinity, double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(max(double.NaN, 2.3), 2.3); + TestUtils.AreEqual(max(2.3, double.NaN), 2.3); + TestUtils.AreEqual(max(double.NaN, double.NaN), double.NaN); + } + + [TestCompiler] + public static void max_double2() + { + TestUtils.AreEqual(max(double2(double.NegativeInfinity, double.NegativeInfinity), double2(double.NegativeInfinity, -1.0)), double2(double.NegativeInfinity, -1.0)); + TestUtils.AreEqual(max(double2(-1.0, -1234.56), double2(double.NegativeInfinity, -3456.7)), double2(-1.0, -1234.56)); + TestUtils.AreEqual(max(double2(-3456.7, -1234.56), double2(-1234.56, 3456.7)), double2(-1234.56, 3456.7)); + TestUtils.AreEqual(max(double2(3456.7, 1234.56), double2(-1234.56, 3456.7)), double2(3456.7, 3456.7)); + TestUtils.AreEqual(max(double2(3456.7, 1.0), double2(1234.56, double.PositiveInfinity)), double2(3456.7, double.PositiveInfinity)); + TestUtils.AreEqual(max(double2(double.PositiveInfinity, double.PositiveInfinity), double2(1.0, double.NegativeInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity)); + TestUtils.AreEqual(max(double2(double.PositiveInfinity, double.NaN), double2(double.PositiveInfinity, 2.3)), double2(double.PositiveInfinity, 2.3)); + TestUtils.AreEqual(max(double2(2.3, double.NaN), double2(double.NaN, double.NaN)), double2(2.3, double.NaN)); + } + + [TestCompiler] + public static void max_double3() + { + TestUtils.AreEqual(max(double3(double.NegativeInfinity, double.NegativeInfinity, -1.0), double3(double.NegativeInfinity, -1.0, double.NegativeInfinity)), double3(double.NegativeInfinity, -1.0, -1.0)); + TestUtils.AreEqual(max(double3(-1234.56, -3456.7, -1234.56), double3(-3456.7, -1234.56, 3456.7)), double3(-1234.56, -1234.56, 3456.7)); + TestUtils.AreEqual(max(double3(3456.7, 1234.56, 3456.7), double3(-1234.56, 3456.7, 1234.56)), double3(3456.7, 3456.7, 3456.7)); + TestUtils.AreEqual(max(double3(1.0, double.PositiveInfinity, double.PositiveInfinity), double3(double.PositiveInfinity, 1.0, double.NegativeInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)); + TestUtils.AreEqual(max(double3(double.PositiveInfinity, double.NaN, 2.3), double3(double.PositiveInfinity, 2.3, double.NaN)), double3(double.PositiveInfinity, 2.3, 2.3)); + TestUtils.AreEqual(max(double3(double.NaN, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void max_double4() + { + TestUtils.AreEqual(max(double4(double.NegativeInfinity, double.NegativeInfinity, -1.0, -1234.56), double4(double.NegativeInfinity, -1.0, double.NegativeInfinity, -3456.7)), double4(double.NegativeInfinity, -1.0, -1.0, -1234.56)); + TestUtils.AreEqual(max(double4(-3456.7, -1234.56, 3456.7, 1234.56), double4(-1234.56, 3456.7, -1234.56, 3456.7)), double4(-1234.56, 3456.7, 3456.7, 3456.7)); + TestUtils.AreEqual(max(double4(3456.7, 1.0, double.PositiveInfinity, double.PositiveInfinity), double4(1234.56, double.PositiveInfinity, 1.0, double.NegativeInfinity)), double4(3456.7, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)); + TestUtils.AreEqual(max(double4(double.PositiveInfinity, double.NaN, 2.3, double.NaN), double4(double.PositiveInfinity, 2.3, double.NaN, double.NaN)), double4(double.PositiveInfinity, 2.3, 2.3, double.NaN)); + } + + [TestCompiler] + public static void smoothstep_float() + { + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, float.NegativeInfinity), 0f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, -200f), 0f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, -100f), 0.00724848127f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, 400f), 1f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, float.PositiveInfinity), 1f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, float.NaN), 1f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, float.NegativeInfinity), 1f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, -200f), 1f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, -100f), 0.992751539f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, 400f), 0f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, float.PositiveInfinity), 0f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, float.NaN), 1f, 8, false); + } + + [TestCompiler] + public static void smoothstep_float2() + { + TestUtils.AreEqual(smoothstep(float2(-123.45f, -123.45f), float2(345.6f, 345.6f), float2(float.NegativeInfinity, -200f)), float2(0f, 0f), 8, false); + TestUtils.AreEqual(smoothstep(float2(-123.45f, -123.45f), float2(345.6f, 345.6f), float2(-100f, 400f)), float2(0.00724848127f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float2(-123.45f, -123.45f), float2(345.6f, 345.6f), float2(float.PositiveInfinity, float.NaN)), float2(1f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float2(345.6f, 345.6f), float2(-123.45f, -123.45f), float2(float.NegativeInfinity, -200f)), float2(1f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float2(345.6f, 345.6f), float2(-123.45f, -123.45f), float2(-100f, 400f)), float2(0.992751539f, 0f), 8, false); + TestUtils.AreEqual(smoothstep(float2(345.6f, 345.6f), float2(-123.45f, -123.45f), float2(float.PositiveInfinity, float.NaN)), float2(0f, 1f), 8, false); + } + + [TestCompiler] + public static void smoothstep_float3() + { + TestUtils.AreEqual(smoothstep(float3(-123.45f, -123.45f, -123.45f), float3(345.6f, 345.6f, 345.6f), float3(float.NegativeInfinity, -200f, -100f)), float3(0f, 0f, 0.00724848127f), 8, false); + TestUtils.AreEqual(smoothstep(float3(-123.45f, -123.45f, -123.45f), float3(345.6f, 345.6f, 345.6f), float3(400f, float.PositiveInfinity, float.NaN)), float3(1f, 1f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float3(345.6f, 345.6f, 345.6f), float3(-123.45f, -123.45f, -123.45f), float3(float.NegativeInfinity, -200f, -100f)), float3(1f, 1f, 0.992751539f), 8, false); + TestUtils.AreEqual(smoothstep(float3(345.6f, 345.6f, 345.6f), float3(-123.45f, -123.45f, -123.45f), float3(400f, float.PositiveInfinity, float.NaN)), float3(0f, 0f, 1f), 8, false); + } + + [TestCompiler] + public static void smoothstep_float4() + { + TestUtils.AreEqual(smoothstep(float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(345.6f, 345.6f, 345.6f, 345.6f), float4(float.NegativeInfinity, -200f, -100f, 400f)), float4(0f, 0f, 0.00724848127f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float4(-123.45f, -123.45f, 345.6f, 345.6f), float4(345.6f, 345.6f, -123.45f, -123.45f), float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -200f)), float4(1f, 1f, 1f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float4(345.6f, 345.6f, 345.6f, 345.6f), float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(-100f, 400f, float.PositiveInfinity, float.NaN)), float4(0.992751539f, 0f, 0f, 1f), 8, false); + } + + [TestCompiler] + public static void smoothstep_double() + { + TestUtils.AreEqual(smoothstep(-123.45, 345.6, double.NegativeInfinity), 0.0, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, -200.0), 0.0, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, -100.0), 0.0072484810488798995, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, 400.0), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, double.PositiveInfinity), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, double.NaN), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, double.NegativeInfinity), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, -200.0), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, -100.0), 0.99275151895112013, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, 400.0), 0.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, double.PositiveInfinity), 0.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, double.NaN), 1.0, 8, false); + } + + [TestCompiler] + public static void smoothstep_double2() + { + TestUtils.AreEqual(smoothstep(double2(-123.45, -123.45), double2(345.6, 345.6), double2(double.NegativeInfinity, -200.0)), double2(0.0, 0.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(-123.45, -123.45), double2(345.6, 345.6), double2(-100.0, 400.0)), double2(0.0072484810488798995, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(-123.45, -123.45), double2(345.6, 345.6), double2(double.PositiveInfinity, double.NaN)), double2(1.0, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(345.6, 345.6), double2(-123.45, -123.45), double2(double.NegativeInfinity, -200.0)), double2(1.0, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(345.6, 345.6), double2(-123.45, -123.45), double2(-100.0, 400.0)), double2(0.99275151895112013, 0.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(345.6, 345.6), double2(-123.45, -123.45), double2(double.PositiveInfinity, double.NaN)), double2(0.0, 1.0), 8, false); + } + + [TestCompiler] + public static void smoothstep_double3() + { + TestUtils.AreEqual(smoothstep(double3(-123.45, -123.45, -123.45), double3(345.6, 345.6, 345.6), double3(double.NegativeInfinity, -200.0, -100.0)), double3(0.0, 0.0, 0.0072484810488798995), 8, false); + TestUtils.AreEqual(smoothstep(double3(-123.45, -123.45, -123.45), double3(345.6, 345.6, 345.6), double3(400.0, double.PositiveInfinity, double.NaN)), double3(1.0, 1.0, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double3(345.6, 345.6, 345.6), double3(-123.45, -123.45, -123.45), double3(double.NegativeInfinity, -200.0, -100.0)), double3(1.0, 1.0, 0.99275151895112013), 8, false); + TestUtils.AreEqual(smoothstep(double3(345.6, 345.6, 345.6), double3(-123.45, -123.45, -123.45), double3(400.0, double.PositiveInfinity, double.NaN)), double3(0.0, 0.0, 1.0), 8, false); + } + + [TestCompiler] + public static void smoothstep_double4() + { + TestUtils.AreEqual(smoothstep(double4(-123.45, -123.45, -123.45, -123.45), double4(345.6, 345.6, 345.6, 345.6), double4(double.NegativeInfinity, -200.0, -100.0, 400.0)), double4(0.0, 0.0, 0.0072484810488798995, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double4(-123.45, -123.45, 345.6, 345.6), double4(345.6, 345.6, -123.45, -123.45), double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -200.0)), double4(1.0, 1.0, 1.0, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double4(345.6, 345.6, 345.6, 345.6), double4(-123.45, -123.45, -123.45, -123.45), double4(-100.0, 400.0, double.PositiveInfinity, double.NaN)), double4(0.99275151895112013, 0.0, 0.0, 1.0), 8, false); + } + + [TestCompiler] + public static void mad_int() + { + TestUtils.AreEqual(mad(1234, 5678, 91011), 7097663); + TestUtils.AreEqual(mad(1234, 5678, -91011), 6915641); + TestUtils.AreEqual(mad(1234, -5678, 91011), -6915641); + TestUtils.AreEqual(mad(1234, -5678, -91011), -7097663); + TestUtils.AreEqual(mad(-1234, 5678, 91011), -6915641); + TestUtils.AreEqual(mad(-1234, 5678, -91011), -7097663); + TestUtils.AreEqual(mad(-1234, -5678, 91011), 7097663); + TestUtils.AreEqual(mad(-1234, -5678, -91011), 6915641); + TestUtils.AreEqual(mad(98765, 56789, 91011), 1313889300); + TestUtils.AreEqual(mad(98765, 56789, -91011), 1313707278); + TestUtils.AreEqual(mad(98765, -56789, 91011), -1313707278); + TestUtils.AreEqual(mad(98765, -56789, -91011), -1313889300); + TestUtils.AreEqual(mad(-98765, 56789, 91011), -1313707278); + TestUtils.AreEqual(mad(-98765, 56789, -91011), -1313889300); + TestUtils.AreEqual(mad(-98765, -56789, 91011), 1313889300); + TestUtils.AreEqual(mad(-98765, -56789, -91011), 1313707278); + } + + [TestCompiler] + public static void mad_int2() + { + TestUtils.AreEqual(mad(int2(1234, 1234), int2(5678, 5678), int2(91011, -91011)), int2(7097663, 6915641)); + TestUtils.AreEqual(mad(int2(1234, 1234), int2(-5678, -5678), int2(91011, -91011)), int2(-6915641, -7097663)); + TestUtils.AreEqual(mad(int2(-1234, -1234), int2(5678, 5678), int2(91011, -91011)), int2(-6915641, -7097663)); + TestUtils.AreEqual(mad(int2(-1234, -1234), int2(-5678, -5678), int2(91011, -91011)), int2(7097663, 6915641)); + TestUtils.AreEqual(mad(int2(98765, 98765), int2(56789, 56789), int2(91011, -91011)), int2(1313889300, 1313707278)); + TestUtils.AreEqual(mad(int2(98765, 98765), int2(-56789, -56789), int2(91011, -91011)), int2(-1313707278, -1313889300)); + TestUtils.AreEqual(mad(int2(-98765, -98765), int2(56789, 56789), int2(91011, -91011)), int2(-1313707278, -1313889300)); + TestUtils.AreEqual(mad(int2(-98765, -98765), int2(-56789, -56789), int2(91011, -91011)), int2(1313889300, 1313707278)); + } + + [TestCompiler] + public static void mad_int3() + { + TestUtils.AreEqual(mad(int3(1234, 1234, 1234), int3(5678, 5678, -5678), int3(91011, -91011, 91011)), int3(7097663, 6915641, -6915641)); + TestUtils.AreEqual(mad(int3(1234, -1234, -1234), int3(-5678, 5678, 5678), int3(-91011, 91011, -91011)), int3(-7097663, -6915641, -7097663)); + TestUtils.AreEqual(mad(int3(-1234, -1234, 98765), int3(-5678, -5678, 56789), int3(91011, -91011, 91011)), int3(7097663, 6915641, 1313889300)); + TestUtils.AreEqual(mad(int3(98765, 98765, 98765), int3(56789, -56789, -56789), int3(-91011, 91011, -91011)), int3(1313707278, -1313707278, -1313889300)); + TestUtils.AreEqual(mad(int3(-98765, -98765, -98765), int3(56789, 56789, -56789), int3(91011, -91011, 91011)), int3(-1313707278, -1313889300, 1313889300)); + TestUtils.AreEqual(mad(int3(-98765, -98765, -98765), int3(-56789, -56789, -56789), int3(-91011, -91011, -91011)), int3(1313707278, 1313707278, 1313707278)); + } + + [TestCompiler] + public static void mad_int4() + { + TestUtils.AreEqual(mad(int4(1234, 1234, 1234, 1234), int4(5678, 5678, -5678, -5678), int4(91011, -91011, 91011, -91011)), int4(7097663, 6915641, -6915641, -7097663)); + TestUtils.AreEqual(mad(int4(-1234, -1234, -1234, -1234), int4(5678, 5678, -5678, -5678), int4(91011, -91011, 91011, -91011)), int4(-6915641, -7097663, 7097663, 6915641)); + TestUtils.AreEqual(mad(int4(98765, 98765, 98765, 98765), int4(56789, 56789, -56789, -56789), int4(91011, -91011, 91011, -91011)), int4(1313889300, 1313707278, -1313707278, -1313889300)); + TestUtils.AreEqual(mad(int4(-98765, -98765, -98765, -98765), int4(56789, 56789, -56789, -56789), int4(91011, -91011, 91011, -91011)), int4(-1313707278, -1313889300, 1313889300, 1313707278)); + } + + [TestCompiler] + public static void mad_uint() + { + TestUtils.AreEqual(mad(1234u, 5678u, 91011u), 7097663u); + TestUtils.AreEqual(mad(98765u, 56789u, 91011u), 1313889300u); + } + + [TestCompiler] + public static void mad_uint2() + { + TestUtils.AreEqual(mad(uint2(1234u, 98765u), uint2(5678u, 56789u), uint2(91011u, 91011u)), uint2(7097663u, 1313889300u)); + } + + [TestCompiler] + public static void mad_uint3() + { + TestUtils.AreEqual(mad(uint3(1234u, 98765u, 98765u), uint3(5678u, 56789u, 56789u), uint3(91011u, 91011u, 91011u)), uint3(7097663u, 1313889300u, 1313889300u)); + } + + [TestCompiler] + public static void mad_uint4() + { + TestUtils.AreEqual(mad(uint4(1234u, 98765u, 98765u, 98765u), uint4(5678u, 56789u, 56789u, 56789u), uint4(91011u, 91011u, 91011u, 91011u)), uint4(7097663u, 1313889300u, 1313889300u, 1313889300u)); + } + + [TestCompiler] + public static void mad_long() + { + TestUtils.AreEqual(mad(1234L, 5678L, 91011L), 7097663L); + TestUtils.AreEqual(mad(1234L, 5678L, -91011L), 6915641L); + TestUtils.AreEqual(mad(1234L, -5678L, 91011L), -6915641L); + TestUtils.AreEqual(mad(1234L, -5678L, -91011L), -7097663L); + TestUtils.AreEqual(mad(-1234L, 5678L, 91011L), -6915641L); + TestUtils.AreEqual(mad(-1234L, 5678L, -91011L), -7097663L); + TestUtils.AreEqual(mad(-1234L, -5678L, 91011L), 7097663L); + TestUtils.AreEqual(mad(-1234L, -5678L, -91011L), 6915641L); + TestUtils.AreEqual(mad(9876543210L, 5678901234L, 9101112134L), 747681210895778426L); + TestUtils.AreEqual(mad(9876543210L, 5678901234L, -9101112134L), 747681192693554158L); + TestUtils.AreEqual(mad(9876543210L, -5678901234L, 9101112134L), -747681192693554158L); + TestUtils.AreEqual(mad(9876543210L, -5678901234L, -9101112134L), -747681210895778426L); + TestUtils.AreEqual(mad(-9876543210L, 5678901234L, 9101112134L), -747681192693554158L); + TestUtils.AreEqual(mad(-9876543210L, 5678901234L, -9101112134L), -747681210895778426L); + TestUtils.AreEqual(mad(-9876543210L, -5678901234L, 9101112134L), 747681210895778426L); + TestUtils.AreEqual(mad(-9876543210L, -5678901234L, -9101112134L), 747681192693554158L); + } + + [TestCompiler] + public static void mad_ulong() + { + TestUtils.AreEqual(mad(1234UL, 5678UL, 91011UL), 7097663L); + TestUtils.AreEqual(mad(9876543210UL, 5678901234UL, 9101112134UL), 747681210895778426L); + } + + [TestCompiler] + public static void mad_float() + { + TestUtils.AreEqual(mad(-123.45f, 345.6f, 4.321f), -42660f, 1, false); + TestUtils.AreEqual(mad(float.NaN, 345.6f, 4.321f), float.NaN, 1, false); + TestUtils.AreEqual(mad(-123.45f, float.NaN, 4.321f), float.NaN, 1, false); + TestUtils.AreEqual(mad(-123.45f, 345.6f, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void mad_float2() + { + TestUtils.AreEqual(mad(float2(-123.45f, float.NaN), float2(345.6f, 345.6f), float2(4.321f, 4.321f)), float2(-42660f, float.NaN), 1, false); + TestUtils.AreEqual(mad(float2(-123.45f, -123.45f), float2(float.NaN, 345.6f), float2(4.321f, float.NaN)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void mad_float3() + { + TestUtils.AreEqual(mad(float3(-123.45f, float.NaN, -123.45f), float3(345.6f, 345.6f, float.NaN), float3(4.321f, 4.321f, 4.321f)), float3(-42660f, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(mad(float3(-123.45f, -123.45f, -123.45f), float3(345.6f, 345.6f, 345.6f), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void mad_float4() + { + TestUtils.AreEqual(mad(float4(-123.45f, float.NaN, -123.45f, -123.45f), float4(345.6f, 345.6f, float.NaN, 345.6f), float4(4.321f, 4.321f, 4.321f, float.NaN)), float4(-42660f, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void mad_double() + { + TestUtils.AreEqual(mad(-123.45, 345.6, 4.321), -42659.999, 1, false); + TestUtils.AreEqual(mad(double.NaN, 345.6, 4.321), double.NaN, 1, false); + TestUtils.AreEqual(mad(-123.45, double.NaN, 4.321), double.NaN, 1, false); + TestUtils.AreEqual(mad(-123.45, 345.6, double.NaN), double.NaN, 1, false); + } + + [TestCompiler] + public static void mad_double2() + { + TestUtils.AreEqual(mad(double2(-123.45, double.NaN), double2(345.6, 345.6), double2(4.321, 4.321)), double2(-42659.999, double.NaN), 1, false); + TestUtils.AreEqual(mad(double2(-123.45, -123.45), double2(double.NaN, 345.6), double2(4.321, double.NaN)), double2(double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void mad_double3() + { + TestUtils.AreEqual(mad(double3(-123.45, double.NaN, -123.45), double3(345.6, 345.6, double.NaN), double3(4.321, 4.321, 4.321)), double3(-42659.999, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(mad(double3(-123.45, -123.45, -123.45), double3(345.6, 345.6, 345.6), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void mad_double4() + { + TestUtils.AreEqual(mad(double4(-123.45, double.NaN, -123.45, -123.45), double4(345.6, 345.6, double.NaN, 345.6), double4(4.321, 4.321, 4.321, double.NaN)), double4(-42659.999, double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_float() + { + TestUtils.AreEqual(fmod(float.NegativeInfinity, float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, float.NegativeInfinity), -323.4f, 1, false); + TestUtils.AreEqual(fmod(-0.0f, float.NegativeInfinity), -0.0f, 1, false); + TestUtils.AreEqual(fmod(0f, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(fmod(323.4f, float.NegativeInfinity), 323.4f, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, -123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, -123.6f), -76.2f, 1, false); + TestUtils.AreEqual(fmod(-0.0f, -123.6f), -0.0f, 1, false); + TestUtils.AreEqual(fmod(0f, -123.6f), 0f, 1, false); + TestUtils.AreEqual(fmod(323.4f, -123.6f), 76.2f, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, -123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, -123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0f, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(0f, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4f, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0f, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(0f, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4f, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, 123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, 123.6f), -76.2f, 1, false); + TestUtils.AreEqual(fmod(-0.0f, 123.6f), -0.0f, 1, false); + TestUtils.AreEqual(fmod(0f, 123.6f), 0f, 1, false); + TestUtils.AreEqual(fmod(323.4f, 123.6f), 76.2f, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, 123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, 123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, float.PositiveInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, float.PositiveInfinity), -323.4f, 1, false); + TestUtils.AreEqual(fmod(-0.0f, float.PositiveInfinity), -0.0f, 1, false); + TestUtils.AreEqual(fmod(0f, float.PositiveInfinity), 0f, 1, false); + TestUtils.AreEqual(fmod(323.4f, float.PositiveInfinity), 323.4f, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, float.PositiveInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, float.PositiveInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(0f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void fmod_float2() + { + TestUtils.AreEqual(fmod(float2(float.NegativeInfinity, -323.4f), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(float.NaN, -323.4f), 1, false); + TestUtils.AreEqual(fmod(float2(-0.0f, 0f), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(-0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float2(323.4f, float.PositiveInfinity), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(323.4f, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NaN, float.NegativeInfinity), float2(float.NegativeInfinity, -123.6f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-323.4f, -0.0f), float2(-123.6f, -123.6f)), float2(-76.2f, -0.0f), 1, false); + TestUtils.AreEqual(fmod(float2(0f, 323.4f), float2(-123.6f, -123.6f)), float2(0f, 76.2f), 1, false); + TestUtils.AreEqual(fmod(float2(float.PositiveInfinity, float.NaN), float2(-123.6f, -123.6f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NegativeInfinity, -323.4f), float2(-0.0f, -0.0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-0.0f, 0f), float2(-0.0f, -0.0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(323.4f, float.PositiveInfinity), float2(-0.0f, -0.0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NaN, float.NegativeInfinity), float2(-0.0f, 0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-323.4f, -0.0f), float2(0f, 0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(0f, 323.4f), float2(0f, 0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.PositiveInfinity, float.NaN), float2(0f, 0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NegativeInfinity, -323.4f), float2(123.6f, 123.6f)), float2(float.NaN, -76.2f), 1, false); + TestUtils.AreEqual(fmod(float2(-0.0f, 0f), float2(123.6f, 123.6f)), float2(-0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float2(323.4f, float.PositiveInfinity), float2(123.6f, 123.6f)), float2(76.2f, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NaN, float.NegativeInfinity), float2(123.6f, float.PositiveInfinity)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-323.4f, -0.0f), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(-323.4f, -0.0f), 1, false); + TestUtils.AreEqual(fmod(float2(0f, 323.4f), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(0f, 323.4f), 1, false); + TestUtils.AreEqual(fmod(float2(float.PositiveInfinity, float.NaN), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NegativeInfinity, -323.4f), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-0.0f, 0f), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(323.4f, float.PositiveInfinity), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NaN, float.NaN), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_float3() + { + TestUtils.AreEqual(fmod(float3(float.NegativeInfinity, -323.4f, -0.0f), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float3(float.NaN, -323.4f, -0.0f), 1, false); + TestUtils.AreEqual(fmod(float3(0f, 323.4f, float.PositiveInfinity), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float3(0f, 323.4f, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NaN, float.NegativeInfinity, -323.4f), float3(float.NegativeInfinity, -123.6f, -123.6f)), float3(float.NaN, float.NaN, -76.2f), 1, false); + TestUtils.AreEqual(fmod(float3(-0.0f, 0f, 323.4f), float3(-123.6f, -123.6f, -123.6f)), float3(-0.0f, 0f, 76.2f), 1, false); + TestUtils.AreEqual(fmod(float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity), float3(-123.6f, -123.6f, -0.0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(-323.4f, -0.0f, 0f), float3(-0.0f, -0.0f, -0.0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(323.4f, float.PositiveInfinity, float.NaN), float3(-0.0f, -0.0f, -0.0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NegativeInfinity, -323.4f, -0.0f), float3(0f, 0f, 0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(0f, 323.4f, float.PositiveInfinity), float3(0f, 0f, 0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NaN, float.NegativeInfinity, -323.4f), float3(0f, 123.6f, 123.6f)), float3(float.NaN, float.NaN, -76.2f), 1, false); + TestUtils.AreEqual(fmod(float3(-0.0f, 0f, 323.4f), float3(123.6f, 123.6f, 123.6f)), float3(-0.0f, 0f, 76.2f), 1, false); + TestUtils.AreEqual(fmod(float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity), float3(123.6f, 123.6f, float.PositiveInfinity)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(-323.4f, -0.0f, 0f), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(-323.4f, -0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float3(323.4f, float.PositiveInfinity, float.NaN), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(323.4f, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NegativeInfinity, -323.4f, -0.0f), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(0f, 323.4f, float.PositiveInfinity), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NaN, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_float4() + { + TestUtils.AreEqual(fmod(float4(float.NegativeInfinity, -323.4f, -0.0f, 0f), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float4(float.NaN, -323.4f, -0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float4(323.4f, float.PositiveInfinity, float.NaN, float.NegativeInfinity), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, -123.6f)), float4(323.4f, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(-323.4f, -0.0f, 0f, 323.4f), float4(-123.6f, -123.6f, -123.6f, -123.6f)), float4(-76.2f, -0.0f, 0f, 76.2f), 1, false); + TestUtils.AreEqual(fmod(float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -323.4f), float4(-123.6f, -123.6f, -0.0f, -0.0f)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(-0.0f, 0f, 323.4f, float.PositiveInfinity), float4(-0.0f, -0.0f, -0.0f, -0.0f)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(float.NaN, float.NegativeInfinity, -323.4f, -0.0f), float4(-0.0f, 0f, 0f, 0f)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(0f, 323.4f, float.PositiveInfinity, float.NaN), float4(0f, 0f, 0f, 0f)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(float.NegativeInfinity, -323.4f, -0.0f, 0f), float4(123.6f, 123.6f, 123.6f, 123.6f)), float4(float.NaN, -76.2f, -0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float4(323.4f, float.PositiveInfinity, float.NaN, float.NegativeInfinity), float4(123.6f, 123.6f, 123.6f, float.PositiveInfinity)), float4(76.2f, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(-323.4f, -0.0f, 0f, 323.4f), float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(-323.4f, -0.0f, 0f, 323.4f), 1, false); + TestUtils.AreEqual(fmod(float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -323.4f), float4(float.PositiveInfinity, float.PositiveInfinity, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(-0.0f, 0f, 323.4f, float.PositiveInfinity), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(float.NaN, float.NaN, float.NaN, float.NaN), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_double() + { + TestUtils.AreEqual(fmod(double.NegativeInfinity, double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, double.NegativeInfinity), -323.4, 1, false); + TestUtils.AreEqual(fmod(-0.0, double.NegativeInfinity), -0.0, 1, false); + TestUtils.AreEqual(fmod(0.0, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(fmod(323.4, double.NegativeInfinity), 323.4, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, -123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, -123.6), -76.2, 1, false); + TestUtils.AreEqual(fmod(-0.0, -123.6), -0.0, 1, false); + TestUtils.AreEqual(fmod(0.0, -123.6), 0.0, 1, false); + TestUtils.AreEqual(fmod(323.4, -123.6), 76.2, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, -123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, -123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(0.0, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(0.0, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, 123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, 123.6), -76.2, 1, false); + TestUtils.AreEqual(fmod(-0.0, 123.6), -0.0, 1, false); + TestUtils.AreEqual(fmod(0.0, 123.6), 0.0, 1, false); + TestUtils.AreEqual(fmod(323.4, 123.6), 76.2, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, 123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, 123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, double.PositiveInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, double.PositiveInfinity), -323.4, 1, false); + TestUtils.AreEqual(fmod(-0.0, double.PositiveInfinity), -0.0, 1, false); + TestUtils.AreEqual(fmod(0.0, double.PositiveInfinity), 0.0, 1, false); + TestUtils.AreEqual(fmod(323.4, double.PositiveInfinity), 323.4, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, double.PositiveInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, double.PositiveInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(0.0, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, double.NaN), double.NaN, 1, false); + } + + [TestCompiler] + public static void fmod_double2() + { + TestUtils.AreEqual(fmod(double2(double.NegativeInfinity, -323.4), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(double.NaN, -323.4), 1, false); + TestUtils.AreEqual(fmod(double2(-0.0, 0.0), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(-0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double2(323.4, double.PositiveInfinity), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(323.4, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NaN, double.NegativeInfinity), double2(double.NegativeInfinity, -123.6)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-323.4, -0.0), double2(-123.6, -123.6)), double2(-76.2, -0.0), 1, false); + TestUtils.AreEqual(fmod(double2(0.0, 323.4), double2(-123.6, -123.6)), double2(0.0, 76.2), 1, false); + TestUtils.AreEqual(fmod(double2(double.PositiveInfinity, double.NaN), double2(-123.6, -123.6)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NegativeInfinity, -323.4), double2(-0.0, -0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-0.0, 0.0), double2(-0.0, -0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(323.4, double.PositiveInfinity), double2(-0.0, -0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NaN, double.NegativeInfinity), double2(-0.0, 0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-323.4, -0.0), double2(0.0, 0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(0.0, 323.4), double2(0.0, 0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.PositiveInfinity, double.NaN), double2(0.0, 0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NegativeInfinity, -323.4), double2(123.6, 123.6)), double2(double.NaN, -76.2), 1, false); + TestUtils.AreEqual(fmod(double2(-0.0, 0.0), double2(123.6, 123.6)), double2(-0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double2(323.4, double.PositiveInfinity), double2(123.6, 123.6)), double2(76.2, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NaN, double.NegativeInfinity), double2(123.6, double.PositiveInfinity)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-323.4, -0.0), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(-323.4, -0.0), 1, false); + TestUtils.AreEqual(fmod(double2(0.0, 323.4), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(0.0, 323.4), 1, false); + TestUtils.AreEqual(fmod(double2(double.PositiveInfinity, double.NaN), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NegativeInfinity, -323.4), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-0.0, 0.0), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(323.4, double.PositiveInfinity), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NaN, double.NaN), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_double3() + { + TestUtils.AreEqual(fmod(double3(double.NegativeInfinity, -323.4, -0.0), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double3(double.NaN, -323.4, -0.0), 1, false); + TestUtils.AreEqual(fmod(double3(0.0, 323.4, double.PositiveInfinity), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double3(0.0, 323.4, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NaN, double.NegativeInfinity, -323.4), double3(double.NegativeInfinity, -123.6, -123.6)), double3(double.NaN, double.NaN, -76.2), 1, false); + TestUtils.AreEqual(fmod(double3(-0.0, 0.0, 323.4), double3(-123.6, -123.6, -123.6)), double3(-0.0, 0.0, 76.2), 1, false); + TestUtils.AreEqual(fmod(double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity), double3(-123.6, -123.6, -0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(-323.4, -0.0, 0.0), double3(-0.0, -0.0, -0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(323.4, double.PositiveInfinity, double.NaN), double3(-0.0, -0.0, -0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NegativeInfinity, -323.4, -0.0), double3(0.0, 0.0, 0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(0.0, 323.4, double.PositiveInfinity), double3(0.0, 0.0, 0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NaN, double.NegativeInfinity, -323.4), double3(0.0, 123.6, 123.6)), double3(double.NaN, double.NaN, -76.2), 1, false); + TestUtils.AreEqual(fmod(double3(-0.0, 0.0, 323.4), double3(123.6, 123.6, 123.6)), double3(-0.0, 0.0, 76.2), 1, false); + TestUtils.AreEqual(fmod(double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity), double3(123.6, 123.6, double.PositiveInfinity)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(-323.4, -0.0, 0.0), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(-323.4, -0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double3(323.4, double.PositiveInfinity, double.NaN), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(323.4, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NegativeInfinity, -323.4, -0.0), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(0.0, 323.4, double.PositiveInfinity), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NaN, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_double4() + { + TestUtils.AreEqual(fmod(double4(double.NegativeInfinity, -323.4, -0.0, 0.0), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double4(double.NaN, -323.4, -0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double4(323.4, double.PositiveInfinity, double.NaN, double.NegativeInfinity), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, -123.6)), double4(323.4, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(-323.4, -0.0, 0.0, 323.4), double4(-123.6, -123.6, -123.6, -123.6)), double4(-76.2, -0.0, 0.0, 76.2), 1, false); + TestUtils.AreEqual(fmod(double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -323.4), double4(-123.6, -123.6, -0.0, -0.0)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(-0.0, 0.0, 323.4, double.PositiveInfinity), double4(-0.0, -0.0, -0.0, -0.0)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(double.NaN, double.NegativeInfinity, -323.4, -0.0), double4(-0.0, 0.0, 0.0, 0.0)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(0.0, 323.4, double.PositiveInfinity, double.NaN), double4(0.0, 0.0, 0.0, 0.0)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(double.NegativeInfinity, -323.4, -0.0, 0.0), double4(123.6, 123.6, 123.6, 123.6)), double4(double.NaN, -76.2, -0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double4(323.4, double.PositiveInfinity, double.NaN, double.NegativeInfinity), double4(123.6, 123.6, 123.6, double.PositiveInfinity)), double4(76.2, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(-323.4, -0.0, 0.0, 323.4), double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(-323.4, -0.0, 0.0, 323.4), 1, false); + TestUtils.AreEqual(fmod(double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -323.4), double4(double.PositiveInfinity, double.PositiveInfinity, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(-0.0, 0.0, 323.4, double.PositiveInfinity), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(double.NaN, double.NaN, double.NaN, double.NaN), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void pow_float() + { + TestUtils.AreEqual(pow(float.NegativeInfinity, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(-3.4f, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(-0.0f, float.NegativeInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(0f, float.NegativeInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(3.4f, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(float.NaN, float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, -2.6f), 0f, 1, false); + TestUtils.AreEqual(pow(-3.4f, -2.6f), float.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0f, -2.6f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(0f, -2.6f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(3.4f, -2.6f), 0.0415102f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, -2.6f), 0f, 1, false); + TestUtils.AreEqual(pow(float.NaN, -2.6f), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(-3.4f, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(-0.0f, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(0f, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(3.4f, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(-3.4f, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(-0.0f, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(0f, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(3.4f, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, 2.6f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-3.4f, 2.6f), float.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0f, 2.6f), 0f, 1, false); + TestUtils.AreEqual(pow(0f, 2.6f), 0f, 1, false); + TestUtils.AreEqual(pow(3.4f, 2.6f), 24.0904655f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, 2.6f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(float.NaN, 2.6f), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, float.PositiveInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-3.4f, float.PositiveInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-0.0f, float.PositiveInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(0f, float.PositiveInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(3.4f, float.PositiveInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, float.PositiveInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(float.NaN, float.PositiveInfinity), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(-3.4f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(0f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(3.4f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NaN, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void pow_float2() + { + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(0f, 0f), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(0f, 0f), 1, false); + TestUtils.AreEqual(pow(float2(float.NaN, float.NegativeInfinity), float2(float.NegativeInfinity, -2.6f)), float2(float.NaN, 0f), 1, false); + TestUtils.AreEqual(pow(float2(-3.4f, -0.0f), float2(-2.6f, -2.6f)), float2(float.NaN, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(0f, 3.4f), float2(-2.6f, -2.6f)), float2(float.PositiveInfinity, 0.0415102f), 1, false); + TestUtils.AreEqual(pow(float2(float.PositiveInfinity, float.NaN), float2(-2.6f, -2.6f)), float2(0f, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(-0.0f, -0.0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(-0.0f, -0.0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(-0.0f, -0.0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(0f, 0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(0f, 0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(0f, 0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(2.6f, 2.6f)), float2(float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(2.6f, 2.6f)), float2(0f, 0f), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(2.6f, 2.6f)), float2(24.0904655f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(float.NaN, float.NegativeInfinity), float2(2.6f, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(-3.4f, -0.0f), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, 0f), 1, false); + TestUtils.AreEqual(pow(float2(0f, 3.4f), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(0f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(float.PositiveInfinity, float.NaN), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(float.NaN, float.NaN), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void pow_float3() + { + TestUtils.AreEqual(pow(float3(float.NegativeInfinity, -3.4f, -0.0f), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float3(0f, 0f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float3(0f, 3.4f, float.PositiveInfinity), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float3(float.PositiveInfinity, 0f, 0f), 1, false); + TestUtils.AreEqual(pow(float3(float.NaN, float.NegativeInfinity, -3.4f), float3(float.NegativeInfinity, -2.6f, -2.6f)), float3(float.NaN, 0f, float.NaN), 1, false); + TestUtils.AreEqual(pow(float3(-0.0f, 0f, 3.4f), float3(-2.6f, -2.6f, -2.6f)), float3(float.PositiveInfinity, float.PositiveInfinity, 0.0415102f), 1, false); + TestUtils.AreEqual(pow(float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity), float3(-2.6f, -2.6f, -0.0f)), float3(0f, float.NaN, 1f), 1, false); + TestUtils.AreEqual(pow(float3(-3.4f, -0.0f, 0f), float3(-0.0f, -0.0f, -0.0f)), float3(1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float3(3.4f, float.PositiveInfinity, float.NegativeInfinity), float3(-0.0f, -0.0f, 0f)), float3(1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float3(-3.4f, -0.0f, 0f), float3(0f, 0f, 0f)), float3(1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float3(3.4f, float.PositiveInfinity, float.NegativeInfinity), float3(0f, 0f, 2.6f)), float3(1f, 1f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float3(-3.4f, -0.0f, 0f), float3(2.6f, 2.6f, 2.6f)), float3(float.NaN, 0f, 0f), 1, false); + TestUtils.AreEqual(pow(float3(3.4f, float.PositiveInfinity, float.NaN), float3(2.6f, 2.6f, 2.6f)), float3(24.0904655f, float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float3(float.NegativeInfinity, -3.4f, -0.0f), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, 0f), 1, false); + TestUtils.AreEqual(pow(float3(0f, 3.4f, float.PositiveInfinity), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(0f, float.PositiveInfinity, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float3(float.NaN, float.NegativeInfinity, -3.4f), float3(float.PositiveInfinity, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float3(-0.0f, 0f, 3.4f), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float3(float.PositiveInfinity, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void pow_float4() + { + TestUtils.AreEqual(pow(float4(float.NegativeInfinity, -3.4f, -0.0f, 0f), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float4(0f, 0f, float.PositiveInfinity, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float4(3.4f, float.PositiveInfinity, float.NaN, float.NegativeInfinity), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, -2.6f)), float4(0f, 0f, float.NaN, 0f), 1, false); + TestUtils.AreEqual(pow(float4(-3.4f, -0.0f, 0f, 3.4f), float4(-2.6f, -2.6f, -2.6f, -2.6f)), float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, 0.0415102f), 1, false); + TestUtils.AreEqual(pow(float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -3.4f), float4(-2.6f, -2.6f, -0.0f, -0.0f)), float4(0f, float.NaN, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float4(-0.0f, 0f, 3.4f, float.PositiveInfinity), float4(-0.0f, -0.0f, -0.0f, -0.0f)), float4(1f, 1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float4(float.NegativeInfinity, -3.4f, -0.0f, 0f), float4(0f, 0f, 0f, 0f)), float4(1f, 1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float4(3.4f, float.PositiveInfinity, float.NegativeInfinity, -3.4f), float4(0f, 0f, 2.6f, 2.6f)), float4(1f, 1f, float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float4(-0.0f, 0f, 3.4f, float.PositiveInfinity), float4(2.6f, 2.6f, 2.6f, 2.6f)), float4(0f, 0f, 24.0904655f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float4(float.NaN, float.NegativeInfinity, -3.4f, -0.0f), float4(2.6f, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, 0f), 1, false); + TestUtils.AreEqual(pow(float4(0f, 3.4f, float.PositiveInfinity, float.NaN), float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, float.PositiveInfinity, float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float4(float.NegativeInfinity, -3.4f, -0.0f, 0f), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float4(3.4f, float.PositiveInfinity, float.NaN, float.NaN), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void pow_double() + { + TestUtils.AreEqual(pow(double.NegativeInfinity, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(-3.4, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(-0.0, double.NegativeInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(0.0, double.NegativeInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(3.4, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(double.NaN, double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, -2.6), 0.0, 1, false); + TestUtils.AreEqual(pow(-3.4, -2.6), double.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0, -2.6), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(0.0, -2.6), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(3.4, -2.6), 0.041510199028461224, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, -2.6), 0.0, 1, false); + TestUtils.AreEqual(pow(double.NaN, -2.6), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(-3.4, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(-0.0, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(0.0, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(3.4, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(-3.4, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(-0.0, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(0.0, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(3.4, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, 2.6), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-3.4, 2.6), double.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0, 2.6), 0.0, 1, false); + TestUtils.AreEqual(pow(0.0, 2.6), 0.0, 1, false); + TestUtils.AreEqual(pow(3.4, 2.6), 24.090465076169735, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, 2.6), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(double.NaN, 2.6), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, double.PositiveInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-3.4, double.PositiveInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-0.0, double.PositiveInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(0.0, double.PositiveInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(3.4, double.PositiveInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, double.PositiveInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(double.NaN, double.PositiveInfinity), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(-3.4, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(0.0, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(3.4, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NaN, double.NaN), double.NaN, 1, false); + } + + [TestCompiler] + public static void pow_double2() + { + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(double.NaN, double.NegativeInfinity), double2(double.NegativeInfinity, -2.6)), double2(double.NaN, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(-3.4, -0.0), double2(-2.6, -2.6)), double2(double.NaN, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(0.0, 3.4), double2(-2.6, -2.6)), double2(double.PositiveInfinity, 0.041510199028461224), 1, false); + TestUtils.AreEqual(pow(double2(double.PositiveInfinity, double.NaN), double2(-2.6, -2.6)), double2(0.0, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(-0.0, -0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(-0.0, -0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(-0.0, -0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(0.0, 0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(0.0, 0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(0.0, 0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(2.6, 2.6)), double2(double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(2.6, 2.6)), double2(0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(2.6, 2.6)), double2(24.090465076169735, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(double.NaN, double.NegativeInfinity), double2(2.6, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(-3.4, -0.0), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(0.0, 3.4), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(0.0, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(double.PositiveInfinity, double.NaN), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(double.NaN, double.NaN), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void pow_double3() + { + TestUtils.AreEqual(pow(double3(double.NegativeInfinity, -3.4, -0.0), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double3(0.0, 0.0, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double3(0.0, 3.4, double.PositiveInfinity), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double3(double.PositiveInfinity, 0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double3(double.NaN, double.NegativeInfinity, -3.4), double3(double.NegativeInfinity, -2.6, -2.6)), double3(double.NaN, 0.0, double.NaN), 1, false); + TestUtils.AreEqual(pow(double3(-0.0, 0.0, 3.4), double3(-2.6, -2.6, -2.6)), double3(double.PositiveInfinity, double.PositiveInfinity, 0.041510199028461224), 1, false); + TestUtils.AreEqual(pow(double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity), double3(-2.6, -2.6, -0.0)), double3(0.0, double.NaN, 1.0), 1, false); + TestUtils.AreEqual(pow(double3(-3.4, -0.0, 0.0), double3(-0.0, -0.0, -0.0)), double3(1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double3(3.4, double.PositiveInfinity, double.NegativeInfinity), double3(-0.0, -0.0, 0.0)), double3(1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double3(-3.4, -0.0, 0.0), double3(0.0, 0.0, 0.0)), double3(1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double3(3.4, double.PositiveInfinity, double.NegativeInfinity), double3(0.0, 0.0, 2.6)), double3(1.0, 1.0, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double3(-3.4, -0.0, 0.0), double3(2.6, 2.6, 2.6)), double3(double.NaN, 0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double3(3.4, double.PositiveInfinity, double.NaN), double3(2.6, 2.6, 2.6)), double3(24.090465076169735, double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double3(double.NegativeInfinity, -3.4, -0.0), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, 0.0), 1, false); + TestUtils.AreEqual(pow(double3(0.0, 3.4, double.PositiveInfinity), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(0.0, double.PositiveInfinity, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double3(double.NaN, double.NegativeInfinity, -3.4), double3(double.PositiveInfinity, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double3(-0.0, 0.0, 3.4), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double3(double.PositiveInfinity, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void pow_double4() + { + TestUtils.AreEqual(pow(double4(double.NegativeInfinity, -3.4, -0.0, 0.0), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double4(0.0, 0.0, double.PositiveInfinity, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double4(3.4, double.PositiveInfinity, double.NaN, double.NegativeInfinity), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, -2.6)), double4(0.0, 0.0, double.NaN, 0.0), 1, false); + TestUtils.AreEqual(pow(double4(-3.4, -0.0, 0.0, 3.4), double4(-2.6, -2.6, -2.6, -2.6)), double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, 0.041510199028461224), 1, false); + TestUtils.AreEqual(pow(double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -3.4), double4(-2.6, -2.6, -0.0, -0.0)), double4(0.0, double.NaN, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double4(-0.0, 0.0, 3.4, double.PositiveInfinity), double4(-0.0, -0.0, -0.0, -0.0)), double4(1.0, 1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double4(double.NegativeInfinity, -3.4, -0.0, 0.0), double4(0.0, 0.0, 0.0, 0.0)), double4(1.0, 1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double4(3.4, double.PositiveInfinity, double.NegativeInfinity, -3.4), double4(0.0, 0.0, 2.6, 2.6)), double4(1.0, 1.0, double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double4(-0.0, 0.0, 3.4, double.PositiveInfinity), double4(2.6, 2.6, 2.6, 2.6)), double4(0.0, 0.0, 24.090465076169735, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double4(double.NaN, double.NegativeInfinity, -3.4, -0.0), double4(2.6, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, 0.0), 1, false); + TestUtils.AreEqual(pow(double4(0.0, 3.4, double.PositiveInfinity, double.NaN), double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, double.PositiveInfinity, double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double4(double.NegativeInfinity, -3.4, -0.0, 0.0), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double4(3.4, double.PositiveInfinity, double.NaN, double.NaN), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void ceilpow2_int() + { + TestUtils.AreEqual(ceilpow2(0), 0); + TestUtils.AreEqual(ceilpow2(1), 1); + TestUtils.AreEqual(ceilpow2(2), 2); + TestUtils.AreEqual(ceilpow2(3), 4); + TestUtils.AreEqual(ceilpow2(1019642234), 1073741824); + TestUtils.AreEqual(ceilpow2(1823423423), -2147483648); + TestUtils.AreEqual(ceilpow2(-2147483647), 0); + } + + [TestCompiler] + public static void ceilpow2_int2() + { + TestUtils.AreEqual(ceilpow2(int2(0, 1)), int2(0, 1)); + TestUtils.AreEqual(ceilpow2(int2(2, 3)), int2(2, 4)); + TestUtils.AreEqual(ceilpow2(int2(1019642234, 1823423423)), int2(1073741824, -2147483648)); + TestUtils.AreEqual(ceilpow2(int2(-2147483647, -2147483647)), int2(0, 0)); + } + + [TestCompiler] + public static void ceilpow2_int3() + { + TestUtils.AreEqual(ceilpow2(int3(0, 1, 2)), int3(0, 1, 2)); + TestUtils.AreEqual(ceilpow2(int3(3, 1019642234, 1823423423)), int3(4, 1073741824, -2147483648)); + TestUtils.AreEqual(ceilpow2(int3(-2147483647, -2147483647, -2147483647)), int3(0, 0, 0)); + } + + [TestCompiler] + public static void ceilpow2_int4() + { + TestUtils.AreEqual(ceilpow2(int4(0, 1, 2, 3)), int4(0, 1, 2, 4)); + TestUtils.AreEqual(ceilpow2(int4(1019642234, 1823423423, -2147483647, -2147483647)), int4(1073741824, -2147483648, 0, 0)); + } + + [TestCompiler] + public static void ceilpow2_uint() + { + TestUtils.AreEqual(ceilpow2(0u), 0u); + TestUtils.AreEqual(ceilpow2(1u), 1u); + TestUtils.AreEqual(ceilpow2(2u), 2u); + TestUtils.AreEqual(ceilpow2(3u), 4u); + TestUtils.AreEqual(ceilpow2(1019642234u), 1073741824u); + TestUtils.AreEqual(ceilpow2(1823423423u), 2147483648u); + TestUtils.AreEqual(ceilpow2(4294967295u), 0u); + } + + [TestCompiler] + public static void ceilpow2_uint2() + { + TestUtils.AreEqual(ceilpow2(uint2(0u, 1u)), uint2(0u, 1u)); + TestUtils.AreEqual(ceilpow2(uint2(2u, 3u)), uint2(2u, 4u)); + TestUtils.AreEqual(ceilpow2(uint2(1019642234u, 1823423423u)), uint2(1073741824u, 2147483648u)); + TestUtils.AreEqual(ceilpow2(uint2(4294967295u, 4294967295u)), uint2(0u, 0u)); + } + + [TestCompiler] + public static void ceilpow2_uint3() + { + TestUtils.AreEqual(ceilpow2(uint3(0u, 1u, 2u)), uint3(0u, 1u, 2u)); + TestUtils.AreEqual(ceilpow2(uint3(3u, 1019642234u, 1823423423u)), uint3(4u, 1073741824u, 2147483648u)); + TestUtils.AreEqual(ceilpow2(uint3(4294967295u, 4294967295u, 4294967295u)), uint3(0u, 0u, 0u)); + } + + [TestCompiler] + public static void ceilpow2_uint4() + { + TestUtils.AreEqual(ceilpow2(uint4(0u, 1u, 2u, 3u)), uint4(0u, 1u, 2u, 4u)); + TestUtils.AreEqual(ceilpow2(uint4(1019642234u, 1823423423u, 4294967295u, 4294967295u)), uint4(1073741824u, 2147483648u, 0u, 0u)); + } + + [TestCompiler] + public static void ceilpow2_long() + { + TestUtils.AreEqual(ceilpow2(0L), 0L); + TestUtils.AreEqual(ceilpow2(1L), 1L); + TestUtils.AreEqual(ceilpow2(2L), 2L); + TestUtils.AreEqual(ceilpow2(3L), 4L); + TestUtils.AreEqual(ceilpow2(1019642234L), 1073741824L); + TestUtils.AreEqual(ceilpow2(1823423423L), 2147483648L); + TestUtils.AreEqual(ceilpow2(2147483648L), 2147483648L); + TestUtils.AreEqual(ceilpow2(4294967295L), 4294967296L); + TestUtils.AreEqual(ceilpow2(4294967296L), 4294967296L); + TestUtils.AreEqual(ceilpow2(7227372236554874814L), -9223372036854775808L); + TestUtils.AreEqual(ceilpow2(-100L), 0L); + } + + [TestCompiler] + public static void ceilpow2_ulong() + { + TestUtils.AreEqual(ceilpow2(0UL), 0UL); + TestUtils.AreEqual(ceilpow2(1UL), 1UL); + TestUtils.AreEqual(ceilpow2(2UL), 2UL); + TestUtils.AreEqual(ceilpow2(3UL), 4UL); + TestUtils.AreEqual(ceilpow2(1019642234UL), 1073741824UL); + TestUtils.AreEqual(ceilpow2(1823423423UL), 2147483648UL); + TestUtils.AreEqual(ceilpow2(2147483648UL), 2147483648UL); + TestUtils.AreEqual(ceilpow2(4294967295UL), 4294967296UL); + TestUtils.AreEqual(ceilpow2(4294967296UL), 4294967296UL); + TestUtils.AreEqual(ceilpow2(7227372236554874814UL), 9223372036854775808UL); + TestUtils.AreEqual(ceilpow2(10223372036854775808UL), 0UL); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.gen.cs.meta new file mode 100644 index 0000000..429eec9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMath.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a9baee454a793140a0be3d7d81d09ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMatrix.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMatrix.cs new file mode 100644 index 0000000..6912877 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMatrix.cs @@ -0,0 +1,1152 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + class TestMatrix + { + [TestCompiler] + public static void float2x2_constructor_columns() + { + float2x2 a = float2x2(float2(1.0f, 2.0f), + float2(3.0f, 4.0f)); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c0.y, 2.0f); + TestUtils.AreEqual(a.c1.x, 3.0f); + TestUtils.AreEqual(a.c1.y, 4.0f); + } + + [TestCompiler] + public static void float3x3_constructor_columns() + { + float3x3 a = float3x3(float3(1.0f, 2.0f, 3.0f), + float3(4.0f, 5.0f, 6.0f), + float3(7.0f, 8.0f, 9.0f)); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c0.y, 2.0f); + TestUtils.AreEqual(a.c0.z, 3.0f); + TestUtils.AreEqual(a.c1.x, 4.0f); + TestUtils.AreEqual(a.c1.y, 5.0f); + TestUtils.AreEqual(a.c1.z, 6.0f); + TestUtils.AreEqual(a.c2.x, 7.0f); + TestUtils.AreEqual(a.c2.y, 8.0f); + TestUtils.AreEqual(a.c2.z, 9.0f); + } + + [TestCompiler] + public static void float4x4_constructor_columns() + { + float4x4 a = float4x4(float4( 1.0f, 2.0f, 3.0f, 4.0f), + float4( 5.0f, 6.0f, 7.0f, 8.0f), + float4( 9.0f, 10.0f, 11.0f, 12.0f), + float4(13.0f, 14.0f, 15.0f, 16.0f)); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c0.y, 2.0f); + TestUtils.AreEqual(a.c0.z, 3.0f); + TestUtils.AreEqual(a.c0.w, 4.0f); + TestUtils.AreEqual(a.c1.x, 5.0f); + TestUtils.AreEqual(a.c1.y, 6.0f); + TestUtils.AreEqual(a.c1.z, 7.0f); + TestUtils.AreEqual(a.c1.w, 8.0f); + TestUtils.AreEqual(a.c2.x, 9.0f); + TestUtils.AreEqual(a.c2.y, 10.0f); + TestUtils.AreEqual(a.c2.z, 11.0f); + TestUtils.AreEqual(a.c2.w, 12.0f); + TestUtils.AreEqual(a.c3.x, 13.0f); + TestUtils.AreEqual(a.c3.y, 14.0f); + TestUtils.AreEqual(a.c3.z, 15.0f); + TestUtils.AreEqual(a.c3.w, 16.0f); + } + + [TestCompiler] + public static void float2x2_constructor_scalars() + { + float2x2 a = float2x2(1.0f, 2.0f, + 3.0f, 4.0f); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 2.0f); + TestUtils.AreEqual(a.c0.y, 3.0f); + TestUtils.AreEqual(a.c1.y, 4.0f); + } + + [TestCompiler] + public static void float3x3_constructor_scalars() + { + float3x3 a = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 2.0f); + TestUtils.AreEqual(a.c2.x, 3.0f); + TestUtils.AreEqual(a.c0.y, 4.0f); + TestUtils.AreEqual(a.c1.y, 5.0f); + TestUtils.AreEqual(a.c2.y, 6.0f); + TestUtils.AreEqual(a.c0.z, 7.0f); + TestUtils.AreEqual(a.c1.z, 8.0f); + TestUtils.AreEqual(a.c2.z, 9.0f); + } + + [TestCompiler] + public static void float4x4_constructor_scalars() + { + float4x4 a = float4x4( 1.0f, 2.0f, 3.0f, 4.0f, + 5.0f, 6.0f, 7.0f, 8.0f, + 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 2.0f); + TestUtils.AreEqual(a.c2.x, 3.0f); + TestUtils.AreEqual(a.c3.x, 4.0f); + TestUtils.AreEqual(a.c0.y, 5.0f); + TestUtils.AreEqual(a.c1.y, 6.0f); + TestUtils.AreEqual(a.c2.y, 7.0f); + TestUtils.AreEqual(a.c3.y, 8.0f); + TestUtils.AreEqual(a.c0.z, 9.0f); + TestUtils.AreEqual(a.c1.z, 10.0f); + TestUtils.AreEqual(a.c2.z, 11.0f); + TestUtils.AreEqual(a.c3.z, 12.0f); + TestUtils.AreEqual(a.c0.w, 13.0f); + TestUtils.AreEqual(a.c1.w, 14.0f); + TestUtils.AreEqual(a.c2.w, 15.0f); + TestUtils.AreEqual(a.c3.w, 16.0f); + } + + [TestCompiler] + public static void float4x4_constructor_float3x3() + { + float3x3 rot = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + float3 pos = float3(10.0f, 11.0f, 12.0f); + float4x4 m = float4x4(rot, pos); + + float4x4 r = float4x4(1.0f, 2.0f, 3.0f, 10.0f, + 4.0f, 5.0f, 6.0f, 11.0f, + 7.0f, 8.0f, 9.0f, 12.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + TestUtils.AreEqual(m, r); + } + + + [TestCompiler] + public static void float3x3_constructor_quaternion() + { + float3x3 m = float3x3(normalize(quaternion(1.0f, 2.5f, 3.3f, 4.6f))); + + float3x3 r = float3x3( 0.12774f, -0.64529f, 0.75318f, + 0.89975f, 0.39491f, 0.18575f, + -0.41730f, 0.65394f, 0.63104f); + + TestUtils.AreEqual(m, r, 0.0001f); + } + + [TestCompiler] + public static void float4x4_constructor_quaternion_position() + { + float4x4 m = float4x4(normalize(quaternion(1.0f, 2.5f, 3.3f, 4.6f)), float3(1.0f, 2.0f, 3.0f)); + + float4x4 r = float4x4( 0.12774f, -0.64529f, 0.75318f, 1.0f, + 0.89975f, 0.39491f, 0.18575f, 2.0f, + -0.41730f, 0.65394f, 0.63104f, 3.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + + TestUtils.AreEqual(m, r, 0.0001f); + } + + [TestCompiler] + public static void float2x2_identity() + { + float2x2 a = float2x2.identity; + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 0.0f); + TestUtils.AreEqual(a.c0.y, 0.0f); + TestUtils.AreEqual(a.c1.y, 1.0f); + } + + [TestCompiler] + public static void float3x3_identity() + { + float3x3 a = float3x3.identity; + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 0.0f); + TestUtils.AreEqual(a.c2.x, 0.0f); + TestUtils.AreEqual(a.c0.y, 0.0f); + TestUtils.AreEqual(a.c1.y, 1.0f); + TestUtils.AreEqual(a.c2.y, 0.0f); + TestUtils.AreEqual(a.c0.z, 0.0f); + TestUtils.AreEqual(a.c1.z, 0.0f); + TestUtils.AreEqual(a.c2.z, 1.0f); + } + + [TestCompiler] + public static void float4x4_identity() + { + float4x4 a = float4x4.identity; + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 0.0f); + TestUtils.AreEqual(a.c2.x, 0.0f); + TestUtils.AreEqual(a.c3.x, 0.0f); + TestUtils.AreEqual(a.c0.y, 0.0f); + TestUtils.AreEqual(a.c1.y, 1.0f); + TestUtils.AreEqual(a.c2.y, 0.0f); + TestUtils.AreEqual(a.c3.y, 0.0f); + TestUtils.AreEqual(a.c0.z, 0.0f); + TestUtils.AreEqual(a.c1.z, 0.0f); + TestUtils.AreEqual(a.c2.z, 1.0f); + TestUtils.AreEqual(a.c3.z, 0.0f); + TestUtils.AreEqual(a.c0.w, 0.0f); + TestUtils.AreEqual(a.c1.w, 0.0f); + TestUtils.AreEqual(a.c2.w, 0.0f); + TestUtils.AreEqual(a.c3.w, 1.0f); + } + + [TestCompiler] + public static void float2x2_rotate() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float2x2 m = float2x2.Rotate(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, sin(angle), epsilon); + TestUtils.AreEqual(m.c1.x, -sin(angle), epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + } + + [TestCompiler] + public static void float3x3_axis_angle() + { + float3 axis = normalize(float3(1.1f, 2.3f, -3.6f)); + float angle = 2.7f; + + float3x3 r = float3x3(quaternion.AxisAngle(axis, angle)); + float3x3 m = float3x3.AxisAngle(axis, angle); + TestUtils.AreEqual(m, r, 0.00001f); + } + + [TestCompiler] + public static void float3x3_axis_angle_consistency() + { + TestUtils.AreEqual(float3x3.AxisAngle(float3(1, 0, 0), 1.0f), float3x3.RotateX(1.0f), 0.001f); + TestUtils.AreEqual(float3x3.AxisAngle(float3(0, 1, 0), 1.0f), float3x3.RotateY(1.0f), 0.001f); + TestUtils.AreEqual(float3x3.AxisAngle(float3(0, 0, 1), 1.0f), float3x3.RotateZ(1.0f), 0.001f); + } + + [TestCompiler] + public static void float3x3_rotate_x() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float3x3 m = float3x3.RotateX(angle); + TestUtils.AreEqual(m.c0.x, 1.0f, epsilon); + TestUtils.AreEqual(m.c0.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + TestUtils.AreEqual(m.c1.z, sin(angle), epsilon); + TestUtils.AreEqual(m.c2.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.y, -sin(angle), epsilon); + TestUtils.AreEqual(m.c2.z, cos(angle), epsilon); + } + + [TestCompiler] + public static void float3x3_rotate_y() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float3x3 m = float3x3.RotateY(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.z, -sin(angle), epsilon); + TestUtils.AreEqual(m.c1.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.y, 1.0f, epsilon); + TestUtils.AreEqual(m.c1.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, sin(angle), epsilon); + TestUtils.AreEqual(m.c2.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.z, cos(angle), epsilon); + } + + [TestCompiler] + public static void float3x3_rotate_z() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float3x3 m = float3x3.RotateZ(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, sin(angle), epsilon); + TestUtils.AreEqual(m.c0.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, -sin(angle), epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + TestUtils.AreEqual(m.c1.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.z, 1.0f, epsilon); + } + + [TestCompiler] + public static void float3x3_rotate_x_handedness() + { + float3 a = float3(0.0f, 0.3f, 0.7f); + float3x3 m = float3x3.RotateX(0.3f); + float3 b = mul(m, a); + float w = cross(a, b).x; + TestUtils.AreEqual(true, w > 0.0f); + } + + + [TestCompiler] + public static void float3x3_rotate_y_handedness() + { + float3 a = float3(0.3f, 0.0f, 0.7f); + float3x3 m = float3x3.RotateY(0.3f); + float3 b = mul(m, a); + float w = cross(a, b).y; + TestUtils.AreEqual(true, w > 0.0f); + } + + [TestCompiler] + public static void float3x3_rotate_z_handedness() + { + float3 a = float3(0.3f, 0.7f, 0.0f); + float3x3 m = float3x3.RotateZ(0.3f); + float3 b = mul(m, a); + float w = cross(a, b).z; + TestUtils.AreEqual(true, w > 0.0f); + } + + [TestCompiler] + public static void float4x4_axis_angle() + { + float3 axis = normalize(float3(1.1f, 2.3f, -3.6f)); + float angle = 2.7f; + + float4x4 r = float4x4(quaternion.AxisAngle(axis, angle), float3.zero); + float4x4 m = float4x4.AxisAngle(axis, angle); + TestUtils.AreEqual(m, r, 0.00001f); + } + + [TestCompiler] + public static void float4x4_axis_angle_consistency() + { + TestUtils.AreEqual(float4x4.AxisAngle(float3(1, 0, 0), 1.0f), float4x4.RotateX(1.0f), 0.001f); + TestUtils.AreEqual(float4x4.AxisAngle(float3(0, 1, 0), 1.0f), float4x4.RotateY(1.0f), 0.001f); + TestUtils.AreEqual(float4x4.AxisAngle(float3(0, 0, 1), 1.0f), float4x4.RotateZ(1.0f), 0.001f); + } + + [TestCompiler] + public static void float4x4_rotate_x() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float4x4 m = float4x4.RotateX(angle); + TestUtils.AreEqual(m.c0.x, 1.0f, epsilon); + TestUtils.AreEqual(m.c0.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + TestUtils.AreEqual(m.c1.z, sin(angle), epsilon); + TestUtils.AreEqual(m.c1.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.y, -sin(angle), epsilon); + TestUtils.AreEqual(m.c2.z, cos(angle), epsilon); + TestUtils.AreEqual(m.c2.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.w, 1.0f, epsilon); + } + + [TestCompiler] + public static void float4x4_rotate_y() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float4x4 m = float4x4.RotateY(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.z, -sin(angle), epsilon); + TestUtils.AreEqual(m.c0.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.y, 1.0f, epsilon); + TestUtils.AreEqual(m.c1.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, sin(angle), epsilon); + TestUtils.AreEqual(m.c2.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.z, cos(angle), epsilon); + TestUtils.AreEqual(m.c2.w, 0.0f); + TestUtils.AreEqual(m.c3.x, 0.0f); + TestUtils.AreEqual(m.c3.y, 0.0f); + TestUtils.AreEqual(m.c3.z, 0.0f); + TestUtils.AreEqual(m.c3.w, 1.0f); + } + + [TestCompiler] + public static void float4x4_rotate_z() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float4x4 m = float4x4.RotateZ(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, sin(angle), epsilon); + TestUtils.AreEqual(m.c0.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, -sin(angle), epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + TestUtils.AreEqual(m.c1.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.z, 1.0f, epsilon); + TestUtils.AreEqual(m.c2.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.w, 1.0f, epsilon); + } + + [TestCompiler] + public static void float4x4_rotate_x_handedness() + { + float3 a = float3(0.0f, 0.3f, 0.7f); + float4x4 m = float4x4.RotateX(0.3f); + float3 b = rotate(m, a); + float w = cross(a, b).x; + TestUtils.AreEqual(true, w > 0.0f); + } + + + [TestCompiler] + public static void float4x4_rotate_y_handedness() + { + float3 a = float3(0.3f, 0.0f, 0.7f); + float4x4 m = float4x4.RotateY(0.3f); + float3 b = rotate(m, a); + float w = cross(a, b).y; + TestUtils.AreEqual(true, w > 0.0f); + } + + [TestCompiler] + public static void float4x4_rotate_z_handedness() + { + float3 a = float3(0.3f, 0.7f, 0.0f); + float4x4 m = float4x4.RotateZ(0.3f); + float3 b = rotate(m, a); + float w = cross(a, b).z; + TestUtils.AreEqual(true, w > 0.0f); + } + + + // rotation by (-50, 28, 39) degrees from Max + static internal readonly float3 test_angles = math.radians(float3(-50.0f, 28.0f, 39.0f)); + + static internal readonly float3x3 test3x3_xyz = new float3x3( 0.686179155968f, -0.684009078513f, -0.247567660300f, + 0.555656924414f, 0.273213475262f, 0.785238676636f, + -0.469471562786f, -0.676377097075f, 0.567547772692f); + + static internal readonly float3x3 test3x3_xzy = new float3x3( 0.686179155968f, -0.716805468125f, -0.123887395569f, + 0.629320391050f, 0.499539794942f, 0.595328345266f, + -0.364847929038f, -0.486466765705f, 0.793874092373f); + + static internal readonly float3x3 test3x3_yxz = new float3x3( 0.912505475649f, -0.404519349890f, -0.0608099701904f, + 0.276167195792f, 0.499539794942f, 0.8210917568930f, + -0.301770503659f, -0.766044443119f, 0.5675477726920f); + + static internal readonly float3x3 test3x3_yzx = new float3x3( 0.68617915596800f, -0.629320391050f, 0.364847929038f, + -0.00246669562435f, 0.499539794942f, 0.866287428445f, + -0.72742840288700f, -0.595328345266f, 0.341221453011f); + + static internal readonly float3x3 test3x3_zxy = new float3x3( 0.459852836288f, -0.835146653037f, 0.301770503659f, + 0.404519349890f, 0.499539794942f, 0.766044443119f, + -0.790505828266f, -0.230195701935f, 0.567547772692f); + + static internal readonly float3x3 test3x3_zyx = new float3x3( 0.686179155968f, -0.555656924414f, 0.469471562786f, + 0.125029621267f, 0.725866114623f, 0.676377097075f, + -0.716607116711f, -0.405418013897f, 0.567547772692f); + + + static internal readonly float4x4 test4x4_xyz = new float4x4(test3x3_xyz, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_xzy = new float4x4(test3x3_xzy, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_yxz = new float4x4(test3x3_yxz, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_yzx = new float4x4(test3x3_yzx, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_zxy = new float4x4(test3x3_zxy, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_zyx = new float4x4(test3x3_zyx, new float3(0, 0, 0)); + + + [TestCompiler] + public static void float3x3_euler() + { + float3x3 m0_xyz = float3x3.EulerXYZ(test_angles); + float3x3 m0_xzy = float3x3.EulerXZY(test_angles); + float3x3 m0_yxz = float3x3.EulerYXZ(test_angles); + float3x3 m0_yzx = float3x3.EulerYZX(test_angles); + float3x3 m0_zxy = float3x3.EulerZXY(test_angles); + float3x3 m0_zyx = float3x3.EulerZYX(test_angles); + + float3x3 m1 = float3x3.Euler(test_angles); + float3x3 m1_xyz = float3x3.Euler(test_angles, RotationOrder.XYZ); + float3x3 m1_xzy = float3x3.Euler(test_angles, RotationOrder.XZY); + float3x3 m1_yxz = float3x3.Euler(test_angles, RotationOrder.YXZ); + float3x3 m1_yzx = float3x3.Euler(test_angles, RotationOrder.YZX); + float3x3 m1_zxy = float3x3.Euler(test_angles, RotationOrder.ZXY); + float3x3 m1_zyx = float3x3.Euler(test_angles, RotationOrder.ZYX); + + + float3x3 m2_xyz = float3x3.EulerXYZ(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_xzy = float3x3.EulerXZY(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_yxz = float3x3.EulerYXZ(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_yzx = float3x3.EulerYZX(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_zxy = float3x3.EulerZXY(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_zyx = float3x3.EulerZYX(test_angles.x, test_angles.y, test_angles.z); + + float3x3 m3 = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z); + float3x3 m3_xyz = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XYZ); + float3x3 m3_xzy = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XZY); + float3x3 m3_yxz = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YXZ); + float3x3 m3_yzx = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YZX); + float3x3 m3_zxy = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZXY); + float3x3 m3_zyx = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZYX); + + + TestUtils.AreEqual(m0_xyz, test3x3_xyz, 0.0001f); + TestUtils.AreEqual(m0_yzx, test3x3_yzx, 0.0001f); + TestUtils.AreEqual(m0_zxy, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m0_xzy, test3x3_xzy, 0.0001f); + TestUtils.AreEqual(m0_yxz, test3x3_yxz, 0.0001f); + TestUtils.AreEqual(m0_zyx, test3x3_zyx, 0.0001f); + + TestUtils.AreEqual(m1, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m1_xyz, test3x3_xyz, 0.0001f); + TestUtils.AreEqual(m1_yzx, test3x3_yzx, 0.0001f); + TestUtils.AreEqual(m1_zxy, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m1_xzy, test3x3_xzy, 0.0001f); + TestUtils.AreEqual(m1_yxz, test3x3_yxz, 0.0001f); + TestUtils.AreEqual(m1_zyx, test3x3_zyx, 0.0001f); + + + TestUtils.AreEqual(m2_xyz, test3x3_xyz, 0.0001f); + TestUtils.AreEqual(m2_yzx, test3x3_yzx, 0.0001f); + TestUtils.AreEqual(m2_zxy, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m2_xzy, test3x3_xzy, 0.0001f); + TestUtils.AreEqual(m2_yxz, test3x3_yxz, 0.0001f); + TestUtils.AreEqual(m2_zyx, test3x3_zyx, 0.0001f); + + TestUtils.AreEqual(m3, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m3_xyz, test3x3_xyz, 0.0001f); + TestUtils.AreEqual(m3_yzx, test3x3_yzx, 0.0001f); + TestUtils.AreEqual(m3_zxy, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m3_xzy, test3x3_xzy, 0.0001f); + TestUtils.AreEqual(m3_yxz, test3x3_yxz, 0.0001f); + TestUtils.AreEqual(m3_zyx, test3x3_zyx, 0.0001f); + } + + [TestCompiler] + public static void float4x4_euler() + { + float4x4 m0_xyz = float4x4.EulerXYZ(test_angles); + float4x4 m0_xzy = float4x4.EulerXZY(test_angles); + float4x4 m0_yxz = float4x4.EulerYXZ(test_angles); + float4x4 m0_yzx = float4x4.EulerYZX(test_angles); + float4x4 m0_zxy = float4x4.EulerZXY(test_angles); + float4x4 m0_zyx = float4x4.EulerZYX(test_angles); + + float4x4 m1 = float4x4.Euler(test_angles); + float4x4 m1_xyz = float4x4.Euler(test_angles, RotationOrder.XYZ); + float4x4 m1_xzy = float4x4.Euler(test_angles, RotationOrder.XZY); + float4x4 m1_yxz = float4x4.Euler(test_angles, RotationOrder.YXZ); + float4x4 m1_yzx = float4x4.Euler(test_angles, RotationOrder.YZX); + float4x4 m1_zxy = float4x4.Euler(test_angles, RotationOrder.ZXY); + float4x4 m1_zyx = float4x4.Euler(test_angles, RotationOrder.ZYX); + + + float4x4 m2_xyz = float4x4.EulerXYZ(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_xzy = float4x4.EulerXZY(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_yxz = float4x4.EulerYXZ(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_yzx = float4x4.EulerYZX(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_zxy = float4x4.EulerZXY(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_zyx = float4x4.EulerZYX(test_angles.x, test_angles.y, test_angles.z); + + float4x4 m3 = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z); + float4x4 m3_xyz = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XYZ); + float4x4 m3_xzy = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XZY); + float4x4 m3_yxz = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YXZ); + float4x4 m3_yzx = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YZX); + float4x4 m3_zxy = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZXY); + float4x4 m3_zyx = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZYX); + + + TestUtils.AreEqual(m0_xyz, test4x4_xyz, 0.0001f); + TestUtils.AreEqual(m0_yzx, test4x4_yzx, 0.0001f); + TestUtils.AreEqual(m0_zxy, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m0_xzy, test4x4_xzy, 0.0001f); + TestUtils.AreEqual(m0_yxz, test4x4_yxz, 0.0001f); + TestUtils.AreEqual(m0_zyx, test4x4_zyx, 0.0001f); + + TestUtils.AreEqual(m1, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m1_xyz, test4x4_xyz, 0.0001f); + TestUtils.AreEqual(m1_yzx, test4x4_yzx, 0.0001f); + TestUtils.AreEqual(m1_zxy, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m1_xzy, test4x4_xzy, 0.0001f); + TestUtils.AreEqual(m1_yxz, test4x4_yxz, 0.0001f); + TestUtils.AreEqual(m1_zyx, test4x4_zyx, 0.0001f); + + + TestUtils.AreEqual(m2_xyz, test4x4_xyz, 0.0001f); + TestUtils.AreEqual(m2_yzx, test4x4_yzx, 0.0001f); + TestUtils.AreEqual(m2_zxy, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m2_xzy, test4x4_xzy, 0.0001f); + TestUtils.AreEqual(m2_yxz, test4x4_yxz, 0.0001f); + TestUtils.AreEqual(m2_zyx, test4x4_zyx, 0.0001f); + + TestUtils.AreEqual(m3, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m3_xyz, test4x4_xyz, 0.0001f); + TestUtils.AreEqual(m3_yzx, test4x4_yzx, 0.0001f); + TestUtils.AreEqual(m3_zxy, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m3_xzy, test4x4_xzy, 0.0001f); + TestUtils.AreEqual(m3_yxz, test4x4_yxz, 0.0001f); + TestUtils.AreEqual(m3_zyx, test4x4_zyx, 0.0001f); + } + + [TestCompiler] + public static void float2x2_scale() + { + float2x2 m = float2x2(1.0f, 2.0f, + 3.0f, 4.0f); + + float2x2 r0 = float2x2(2.0f, 4.0f, + 6.0f, 8.0f); + + float2x2 r1 = float2x2(2.0f, 4.0f, + 9.0f, 12.0f); + + float2x2 a = mul(float2x2.Scale(2.0f), m); + float2x2 b = mul(float2x2.Scale(2.0f, 3.0f), m); + float2x2 c = mul(float2x2.Scale(2.0f, 3.0f), m); + + TestUtils.AreEqual(a, r0); + TestUtils.AreEqual(b, r1); + TestUtils.AreEqual(c, r1); + } + + [TestCompiler] + public static void float3x3_scale() + { + float3x3 m = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + + + float3x3 r0 = float3x3( 2.0f, 4.0f, 6.0f, + 8.0f, 10.0f, 12.0f, + 14.0f, 16.0f, 18.0f); + + float3x3 r1 = float3x3( 2.0f, 4.0f, 6.0f, + 12.0f, 15.0f, 18.0f, + 28.0f, 32.0f, 36.0f); + + + float3x3 a = mul(float3x3.Scale(2.0f), m); + float3x3 b = mul(float3x3.Scale(2.0f, 3.0f, 4.0f), m); + float3x3 c = mul(float3x3.Scale(2.0f, 3.0f, 4.0f), m); + + TestUtils.AreEqual(a, r0); + TestUtils.AreEqual(b, r1); + TestUtils.AreEqual(c, r1); + } + + [TestCompiler] + public static void float4x4_scale() + { + float4x4 m = float4x4( 1.0f, 2.0f, 3.0f, 4.0f, + 5.0f, 6.0f, 7.0f, 8.0f, + 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + float4x4 r0 = float4x4( 2.0f, 4.0f, 6.0f, 8.0f, + 10.0f, 12.0f, 14.0f, 16.0f, + 18.0f, 20.0f, 22.0f, 24.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + float4x4 r1 = float4x4( 2.0f, 4.0f, 6.0f, 8.0f, + 15.0f, 18.0f, 21.0f, 24.0f, + 36.0f, 40.0f, 44.0f, 48.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + float4x4 a = mul(float4x4.Scale(2.0f), m); + float4x4 b = mul(float4x4.Scale(2.0f, 3.0f, 4.0f), m); + float4x4 c = mul(float4x4.Scale(2.0f, 3.0f, 4.0f), m); + + TestUtils.AreEqual(a, r0); + TestUtils.AreEqual(b, r1); + TestUtils.AreEqual(c, r1); + } + + [TestCompiler] + public static void float2x2_matrix_mul() + { + // http://www.wolframalpha.com/input/?i=%5B%5B1,2%5D,%5B3,4%5D%5D*%5B%5B21,22%5D,%5B23,24%5D%5D + float2x2 a = float2x2(1.0f, 2.0f, + 3.0f, 4.0f); + + float2x2 b = float2x2(21.0f, 22.0f, + 23.0f, 24.0f); + + float2x2 c = mul(a, b); + TestUtils.AreEqual(c.c0.x, 67.0f); + TestUtils.AreEqual(c.c1.x, 70.0f); + + TestUtils.AreEqual(c.c0.y, 155.0f); + TestUtils.AreEqual(c.c1.y, 162.0f); + } + + [TestCompiler] + public static void float3x3_matrix_mul() + { + // http://www.wolframalpha.com/input/?i=%5B%5B1,2,3%5D,%5B4,5,6%5D,%5B7,8,9%5D%5D*%5B%5B21,22,23%5D,%5B24,25,26%5D,%5B27,28,29%5D%5D + float3x3 a = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + + float3x3 b = float3x3(21.0f, 22.0f, 23.0f, + 24.0f, 25.0f, 26.0f, + 27.0f, 28.0f, 29.0f); + + float3x3 c = mul(a, b); + TestUtils.AreEqual(c.c0.x, 150.0f); + TestUtils.AreEqual(c.c1.x, 156.0f); + TestUtils.AreEqual(c.c2.x, 162.0f); + + TestUtils.AreEqual(c.c0.y, 366.0f); + TestUtils.AreEqual(c.c1.y, 381.0f); + TestUtils.AreEqual(c.c2.y, 396.0f); + + TestUtils.AreEqual(c.c0.z, 582.0f); + TestUtils.AreEqual(c.c1.z, 606.0f); + TestUtils.AreEqual(c.c2.z, 630.0f); + } + + [TestCompiler] + public static void float4x4_matrix_mul() + { + // https://fogbugz.unity3d.com/f/cases/1041176/ + // http://www.wolframalpha.com/input/?i=%5B%5B1,2,3,4%5D,%5B5,6,7,8%5D,%5B9,10,11,12%5D,%5B13,14,15,16%5D%5D*%5B%5B21,22,23,24%5D,%5B25,26,27,28%5D,%5B29,30,31,32%5D,%5B33,34,35,36%5D%5D + float4x4 a = float4x4( 1.0f, 2.0f, 3.0f, 4.0f, + 5.0f, 6.0f, 7.0f, 8.0f, + 9.0f,10.0f,11.0f,12.0f, + 13.0f,14.0f,15.0f,16.0f); + + float4x4 b = float4x4(21.0f,22.0f,23.0f,24.0f, + 25.0f,26.0f,27.0f,28.0f, + 29.0f,30.0f,31.0f,32.0f, + 33.0f,34.0f,35.0f,36.0f); + + float4x4 c = mul(a, b); + TestUtils.AreEqual(c.c0.x, 290.0f); + TestUtils.AreEqual(c.c1.x, 300.0f); + TestUtils.AreEqual(c.c2.x, 310.0f); + TestUtils.AreEqual(c.c3.x, 320.0f); + + TestUtils.AreEqual(c.c0.y, 722.0f); + TestUtils.AreEqual(c.c1.y, 748.0f); + TestUtils.AreEqual(c.c2.y, 774.0f); + TestUtils.AreEqual(c.c3.y, 800.0f); + + TestUtils.AreEqual(c.c0.z, 1154.0f); + TestUtils.AreEqual(c.c1.z, 1196.0f); + TestUtils.AreEqual(c.c2.z, 1238.0f); + TestUtils.AreEqual(c.c3.z, 1280.0f); + + TestUtils.AreEqual(c.c0.w, 1586.0f); + TestUtils.AreEqual(c.c1.w, 1644.0f); + TestUtils.AreEqual(c.c2.w, 1702.0f); + TestUtils.AreEqual(c.c3.w, 1760.0f); + } + + [TestCompiler] + public static void float2x2_transpose() + { + float2x2 a = float2x2(1.0f, 2.0f, + 3.0f, 4.0f); + + float2x2 b = transpose(a); + + TestUtils.AreEqual(b.c0.x, 1.0f); + TestUtils.AreEqual(b.c1.x, 3.0f); + TestUtils.AreEqual(b.c0.y, 2.0f); + TestUtils.AreEqual(b.c1.y, 4.0f); + } + + [TestCompiler] + public static void float3x3_transpose() + { + float3x3 a = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + + float3x3 b = transpose(a); + + TestUtils.AreEqual(b.c0.x, 1.0f); + TestUtils.AreEqual(b.c1.x, 4.0f); + TestUtils.AreEqual(b.c2.x, 7.0f); + TestUtils.AreEqual(b.c0.y, 2.0f); + TestUtils.AreEqual(b.c1.y, 5.0f); + TestUtils.AreEqual(b.c2.y, 8.0f); + TestUtils.AreEqual(b.c0.z, 3.0f); + TestUtils.AreEqual(b.c1.z, 6.0f); + TestUtils.AreEqual(b.c2.z, 9.0f); + } + + [TestCompiler] + public static void float4x4_transpose() + { + float4x4 a = float4x4( 1.0f, 2.0f, 3.0f, 4.0f, + 5.0f, 6.0f, 7.0f, 8.0f, + 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + float4x4 b = transpose(a); + + TestUtils.AreEqual(b.c0.x, 1.0f); + TestUtils.AreEqual(b.c1.x, 5.0f); + TestUtils.AreEqual(b.c2.x, 9.0f); + TestUtils.AreEqual(b.c3.x, 13.0f); + TestUtils.AreEqual(b.c0.y, 2.0f); + TestUtils.AreEqual(b.c1.y, 6.0f); + TestUtils.AreEqual(b.c2.y, 10.0f); + TestUtils.AreEqual(b.c3.y, 14.0f); + TestUtils.AreEqual(b.c0.z, 3.0f); + TestUtils.AreEqual(b.c1.z, 7.0f); + TestUtils.AreEqual(b.c2.z, 11.0f); + TestUtils.AreEqual(b.c3.z, 15.0f); + TestUtils.AreEqual(b.c0.w, 4.0f); + TestUtils.AreEqual(b.c1.w, 8.0f); + TestUtils.AreEqual(b.c2.w, 12.0f); + TestUtils.AreEqual(b.c3.w, 16.0f); + } + + [TestCompiler] + public static void float2x2_inverse() + { + float2x2 a = float2x2( 0.542968f, 0.867379f, + -0.270153f, -0.912324f); + + float2x2 invA = float2x2( 3.49499f, 3.32281f, + -1.03492f, -2.08004f); + + float2x2 r = inverse(a); + + float epsilon = 0.0001f; + TestUtils.AreEqual(invA.c0.x, r.c0.x, epsilon); + TestUtils.AreEqual(invA.c1.x, r.c1.x, epsilon); + + TestUtils.AreEqual(invA.c0.y, r.c0.y, epsilon); + TestUtils.AreEqual(invA.c1.y, r.c1.y, epsilon); + } + + [TestCompiler] + public static void float3x3_inverse() + { + float3x3 a = float3x3( 0.542968f, 0.867379f, 0.526616f, + -0.270153f,-0.912324f, 0.148933f, + 0.816727f, 0.905933f, 0.902392f); + + float3x3 invA = float3x3(-15.91790f,-5.077350f,10.1273f, + 6.07051f, 0.994556f,-3.70676f, + 8.31247f, 3.596890f,-4.33645f); + + float3x3 r = inverse(a); + + float epsilon = 0.0001f; + TestUtils.AreEqual(invA.c0.x, r.c0.x, epsilon); + TestUtils.AreEqual(invA.c1.x, r.c1.x, epsilon); + TestUtils.AreEqual(invA.c2.x, r.c2.x, epsilon); + + TestUtils.AreEqual(invA.c0.y, r.c0.y, epsilon); + TestUtils.AreEqual(invA.c1.y, r.c1.y, epsilon); + TestUtils.AreEqual(invA.c2.y, r.c2.y, epsilon); + + TestUtils.AreEqual(invA.c0.z, r.c0.z, epsilon); + TestUtils.AreEqual(invA.c1.z, r.c1.z, epsilon); + TestUtils.AreEqual(invA.c2.z, r.c2.z, epsilon); + } + + [TestCompiler] + public static void float4x4_inverse() + { + float4x4 a = float4x4( 0.542968f, 0.867379f, 0.526616f,-0.943083f, + -0.270153f,-0.912324f, 0.148933f, 0.299995f, + 0.816727f, 0.905933f, 0.902392f,-0.060931f, + -0.254780f, 0.604543f, 0.563340f,-0.383911f); + + float4x4 invA = float4x4( 0.548951f, 0.126367f, 0.487260f,-1.327100f, + -0.582901f,-1.108000f, 0.188292f, 0.536211f, + 0.001968f, 0.970678f, 0.528701f, 0.669759f, + -1.279310f,-0.404277f, 0.748937f, 0.103102f); + + float4x4 r = inverse(a); + + float epsilon = 0.0001f; + TestUtils.AreEqual(invA.c0.x, r.c0.x, epsilon); + TestUtils.AreEqual(invA.c1.x, r.c1.x, epsilon); + TestUtils.AreEqual(invA.c2.x, r.c2.x, epsilon); + TestUtils.AreEqual(invA.c3.x, r.c3.x, epsilon); + + TestUtils.AreEqual(invA.c0.y, r.c0.y, epsilon); + TestUtils.AreEqual(invA.c1.y, r.c1.y, epsilon); + TestUtils.AreEqual(invA.c2.y, r.c2.y, epsilon); + TestUtils.AreEqual(invA.c3.y, r.c3.y, epsilon); + + TestUtils.AreEqual(invA.c0.z, r.c0.z, epsilon); + TestUtils.AreEqual(invA.c1.z, r.c1.z, epsilon); + TestUtils.AreEqual(invA.c2.z, r.c2.z, epsilon); + TestUtils.AreEqual(invA.c3.z, r.c3.z, epsilon); + + TestUtils.AreEqual(invA.c0.w, r.c0.w, epsilon); + TestUtils.AreEqual(invA.c1.w, r.c1.w, epsilon); + TestUtils.AreEqual(invA.c2.w, r.c2.w, epsilon); + TestUtils.AreEqual(invA.c3.w, r.c3.w, epsilon); + } + + [TestCompiler] + public static void float3x4_fastinverse() + { + float4x4 a = test4x4_xyz; + a.c3 = float4(1, 2, 3, 1); + + float3x4 b = float3x4(a.c0.xyz, a.c1.xyz, a.c2.xyz, a.c3.xyz); + + float4x4 invA = inverse(a); + float3x4 fastInvB = fastinverse(b); + + TestUtils.AreEqual(fastInvB.c0.xyz, invA.c0.xyz, 0.0001f); + TestUtils.AreEqual(fastInvB.c1.xyz, invA.c1.xyz, 0.0001f); + TestUtils.AreEqual(fastInvB.c2.xyz, invA.c2.xyz, 0.0001f); + TestUtils.AreEqual(fastInvB.c3.xyz, invA.c3.xyz, 0.0001f); + } + + [TestCompiler] + public static void float4x4_fastinverse() + { + float4x4 a = test4x4_xyz; + a.c3 = float4(1, 2, 3, 1); + + float4x4 invA = inverse(a); + float4x4 fastInvA = fastinverse(a); + + TestUtils.AreEqual(fastInvA, invA, 0.0001f); + } + + [TestCompiler] + public static void float2x2_determinant() + { + float2x2 a = float2x2(0.542968f, 0.867379f, + -0.270153f, -0.912324f); + + float det = determinant(a); + TestUtils.AreEqual(det, -0.2610378f, 0.0001f); + } + + [TestCompiler] + public static void float3x3_determinant() + { + float3x3 a = float3x3( 0.542968f, 0.867379f, 0.526616f, + -0.270153f, -0.912324f, 0.148933f, + 0.816727f, 0.905933f, 0.902392f); + + float det = determinant(a); + TestUtils.AreEqual(det, 0.06019618f, 0.0001f); + } + + [TestCompiler] + public static void float4x4_determinant() + { + float4x4 a = float4x4( 0.542968f, 0.867379f, 0.526616f, -0.943083f, + -0.270153f, -0.912324f, 0.148933f, 0.299995f, + 0.816727f, 0.905933f, 0.902392f, -0.060931f, + -0.254780f, 0.604543f, 0.563340f, -0.383911f); + + float det = determinant(a); + TestUtils.AreEqual(det, 0.5838502f, 0.0001f); + } + + [TestCompiler] + public static void float3x3_look_rotation() + { + float3 forward0 = normalize(float3(1.0f, 2.0f, 3.0f)); + float3 up0 = float3(0.0f, 1.0f, 0.0f); + float3x3 m0 = float3x3.LookRotation(forward0, up0); + TestUtils.AreEqual(m0, + float3x3( 0.948683f, -0.169031f, 0.267261f, + 0.000000f, 0.845154f, 0.534523f, + -0.316228f, -0.507093f, 0.801784f), 0.001f); + TestUtils.AreEqual(m0, float3x3(quaternion.LookRotation(forward0, up0)), 0.001f); + + float3 forward1 = normalize(float3(-3.2f, 2.3f, -1.3f)); + float3 up1 = normalize(float3(1.0f, -3.2f, -1.5f)); + float3x3 m1 = float3x3.LookRotation(forward1, up1); + TestUtils.AreEqual(m1, + float3x3( 0.605102f, -0.197976f, -0.771140f, + 0.485036f, -0.676417f, 0.554257f, + -0.631342f, -0.709413f, -0.313276f), 0.001f); + TestUtils.AreEqual(m1, float3x3(quaternion.LookRotation(forward1, up1)), 0.001f); + + float3 forward2 = normalize(float3(-2.6f, -5.2f, -1.1f)); + float3 up2 = normalize(float3(-4.2f, -1.2f, -4.5f)); + float3x3 m2 = float3x3.LookRotation(forward2, up2); + TestUtils.AreEqual(m2, + float3x3(-0.740918f, -0.507890f, -0.439418f, + 0.237577f, 0.413771f, -0.878835f, + 0.628170f, -0.755540f, -0.185907f), 0.001f); + TestUtils.AreEqual(m2, float3x3(quaternion.LookRotation(forward2, up2)), 0.001f); + + float3 forward3 = normalize(float3(1.3f, 2.1f, 3.4f)); + float3 up3 = normalize(float3(0.2f, -1.0f, 0.3f)); + float3x3 m3 = float3x3.LookRotation(forward3, up3); + TestUtils.AreEqual(m3, + float3x3(-0.917727f, 0.249162f, 0.309349f, + -0.066040f, -0.863668f, 0.499717f, + 0.391685f, 0.438174f, 0.809065f), 0.001f); + TestUtils.AreEqual(m3, float3x3(quaternion.LookRotation(forward3, up3)), 0.001f); + } + + [TestCompiler] + public static void float3x3_look_rotation_safe() + { + float3 forward0 = float3(-3.2f, 2.3f, -1.3f) * 1e-10f; + float3 up0 = float3(1.0f, -3.2f, -1.5f) * 1e10f; + float3x3 m0 = float3x3.LookRotationSafe(forward0, up0); + TestUtils.AreEqual(m0, + float3x3(0.605102f, -0.197976f, -0.771140f, + 0.485036f, -0.676417f, 0.554257f, + -0.631342f, -0.709413f, -0.313276f), 0.001f); + + float3 forward1 = float3(-3.2f, 2.3f, -1.3f) * 1e-30f; + float3 up1 = float3(1.0f, -3.2f, -1.5f); + float3x3 m1 = float3x3.LookRotationSafe(forward1, up1); + TestUtils.AreEqual(m1, float3x3.identity, 0.001f); + } + + + [TestCompiler] + public static void float4x4_lookat() + { + float4x4 m = float4x4.LookAt(float3(0.3f, -0.5f, 3.0f), float3(3.2f, -3.1f, 0.2f), normalize(float3(0.3f, 1.0f, -3.0f))); + float4x4 r = float4x4( + -0.77374f, -0.18930f, 0.60456f, 0.30000f, + -0.57373f, 0.61404f, -0.54202f, -0.50000f, + -0.26862f, -0.76624f, -0.58371f, 3.00000f, + 0.00000f, 0.00000f, 0.00000f, 1.00000f + ); + TestUtils.AreEqual(m, r, 0.001f); + } + + + [TestCompiler] + public static void float4x4_ortho() + { + float4x4 m = float4x4.Ortho(2.0f, 3.0f, -3.0f, 7.0f); + float4x4 r = float4x4( + 1.00000f, 0.00000f, 0.00000f, 0.00000f, + 0.00000f, 0.66667f, 0.00000f, 0.00000f, + 0.00000f, 0.00000f, -0.20000f, -0.40000f, + 0.00000f, 0.00000f, 0.00000f, 1.00000f + ); + TestUtils.AreEqual(m, r, 0.001f); + } + + [TestCompiler] + public static void float4x4_orthoOffCenter() + { + float4x4 m = float4x4.OrthoOffCenter(-2.0f, 1.0f, -3.0f, -1.0f, -3.0f, 7.0f); + float4x4 r = float4x4( + 0.66667f, 0.00000f, 0.00000f, 0.33333f, + 0.00000f, 1.00000f, 0.00000f, 2.00000f, + 0.00000f, 0.00000f, -0.20000f, -0.40000f, + 0.00000f, 0.00000f, 0.00000f, 1.00000f + ); + TestUtils.AreEqual(m, r, 0.001f); + } + + [TestCompiler] + public static void float4x4_perspective() + { + float fovy = 1.6f; + float aspect = 1.3333f; + float near = 0.1f; + float far = 100.0f; + + float height = tan(fovy * 0.5f) * near; + float width = height * 1.3333f; + + float4x4 m = float4x4.PerspectiveFov(fovy, aspect, near, far); + float4x4 r = float4x4( + 0.72843f, 0.00000f, 0.00000f, 0.00000f, + 0.00000f, 0.97121f, 0.00000f, 0.00000f, + 0.00000f, 0.00000f, -1.00200f, -0.20020f, + 0.00000f, 0.00000f, -1.00000f, 0.00000f + ); + TestUtils.AreEqual(m, r, 0.001f); + + float4 p0 = mul(m, float4(-width, -height, -near, 1.0f)); + float4 pp0 = p0 / p0.w; + TestUtils.AreEqual(pp0.xyz, float3(-1.0f, -1.0f, -1.0f), 0.001f); + + float4 p1 = mul(m, float4(width / near * far, height / near * far, -far, 1.0f)); + float4 pp1 = p1 / p1.w; + TestUtils.AreEqual(pp1.xyz, float3(1.0f, 1.0f, 1.0f), 0.001f); + } + + [TestCompiler] + public static void float4x4_perspectiveOffCenter() + { + float fovy = 1.6f; + float aspect = 1.3333f; + float near = 0.1f; + float far = 100.0f; + + float4x4 r0 = float4x4.PerspectiveFov(fovy, aspect, near, far); + + float height = tan(fovy * 0.5f) * near; + float width = height * 1.3333f; + + float4x4 m0 = float4x4.PerspectiveOffCenter(-width, width, -height, height, 0.1f, 100.0f); + TestUtils.AreEqual(m0, r0, 0.001f); + + float left = -0.3f; + float right = -0.1f; + float bottom = -0.2f; + float top = 0.1f; + float4x4 m1 = float4x4.PerspectiveOffCenter(left, right, bottom, top, near, far); + float4 p0 = mul(m1, float4(left, bottom, -near, 1.0f)); + float4 pp0 = p0 / p0.w; + TestUtils.AreEqual(pp0.xyz, float3(-1.0f, -1.0f, -1.0f), 0.001f); + + float4 p1 = mul(m1, float4(right, top, -near, 1.0f)); + float4 pp1 = p1 / p1.w; + TestUtils.AreEqual(pp1.xyz, float3(1.0f, 1.0f, -1.0f), 0.001f); + + float4 p2 = mul(m1, float4(left*far/near, top * far / near, -far, 1.0f)); + float4 pp2 = p2 / p2.w; + TestUtils.AreEqual(pp2.xyz, float3(-1.0f, 1.0f, 1.0f), 0.001f); + } + + [TestCompiler] + public static void float4x4_TRS() + { + float3 scale = float3(1.2f, -0.4f, 2.3f); + quaternion rotation = TestQuaternion.test_q0; + float3 translation = float3(12.3f, -4.3f, 135.99f); + float4x4 r0 = mul(float4x4(quaternion.identity, translation), mul(float4x4(rotation, float3.zero), float4x4.Scale(scale))); + float4x4 m0 = float4x4.TRS(translation, rotation, scale); + TestUtils.AreEqual(m0, r0, 0.001f); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMatrix.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMatrix.cs.meta new file mode 100644 index 0000000..5e1f1b3 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestMatrix.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6216aa8a60396374dbab4fbd185eac26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestQuaternion.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestQuaternion.cs new file mode 100644 index 0000000..5de4417 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestQuaternion.cs @@ -0,0 +1,341 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + class TestQuaternion + { + [TestCompiler] + public static void quaternion_basic_constructors() + { + quaternion q = quaternion(1.0f, 2.0f, 3.0f, 4.0f); + quaternion q2 = quaternion(float4(1.0f, 2.0f, 3.0f, 4.0f)); + + TestUtils.AreEqual(q.value.x, 1.0f); + TestUtils.AreEqual(q.value.y, 2.0f); + TestUtils.AreEqual(q.value.z, 3.0f); + TestUtils.AreEqual(q.value.w, 4.0f); + TestUtils.AreEqual(q2.value.x, 1.0f); + TestUtils.AreEqual(q2.value.y, 2.0f); + TestUtils.AreEqual(q2.value.z, 3.0f); + TestUtils.AreEqual(q2.value.w, 4.0f); + } + + [TestCompiler] + public static void quaternion_construct_from_matrix() + { + TestUtils.AreEqual(TestMatrix.test3x3_xyz, float3x3(quaternion(TestMatrix.test3x3_xyz)), 0.0001f); + TestUtils.AreEqual(TestMatrix.test4x4_xyz, float4x4(quaternion(TestMatrix.test4x4_xyz), float3.zero), 0.0001f); + + // Make sure to hit all 4 cases + float3x3 m0 = float3x3.AxisAngle(normalize(float3(1, 2, 3)), 1.0f); + float3x3 m1 = float3x3.AxisAngle(normalize(float3(3, 2, 1)), 3.0f); + float3x3 m2 = float3x3.AxisAngle(normalize(float3(1, 3, 2)), 3.0f); + float3x3 m3 = float3x3.AxisAngle(normalize(float3(1, 2, 3)), 3.0f); + quaternion q0 = quaternion(m0); + quaternion q1 = quaternion(m1); + quaternion q2 = quaternion(m2); + quaternion q3 = quaternion(m3); + TestUtils.AreEqual(q0, quaternion(0.1281319f, 0.2562638f, 0.3843956f, 0.8775827f), 0.0001f); + TestUtils.AreEqual(q1, quaternion(0.7997754f, 0.5331835f, 0.2665918f, 0.0707372f), 0.0001f); + TestUtils.AreEqual(q2, quaternion(0.2665918f, 0.7997754f, 0.5331835f, 0.0707372f), 0.0001f); + TestUtils.AreEqual(q3, quaternion(0.2665918f, 0.5331835f, 0.7997754f, 0.0707372f), 0.0001f); + } + + + [TestCompiler] + public static void quaternion_construct_from_matrix3x3_torture() + { + Random rnd = new Random(0x12345678); + for(int i = 0; i < 1000; i++) + { + float3x3 r = float3x3(rnd.NextQuaternionRotation()); + quaternion q = quaternion(r); + float3x3 t = float3x3(q); + TestUtils.AreEqual(t, r, 0.001f); + } + } + + [TestCompiler] + public static void quaternion_construct_from_matrix4x4_torture() + { + Random rnd = new Random(0x12345678); + for (int i = 0; i < 1000; i++) + { + float4x4 r = float4x4(rnd.NextQuaternionRotation(), float3.zero); + quaternion q = quaternion(r); + float4x4 t = float4x4(q, float3.zero); + TestUtils.AreEqual(t, r, 0.001f); + } + } + + [TestCompiler] + public static void quaternion_axis_angle() + { + quaternion q = quaternion.AxisAngle(normalize(float3(1.0f, 2.0f, 3.0f)), 10.0f); + + quaternion r = quaternion(-0.2562833f, -0.5125666f, -0.76885f, 0.2836622f); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void quaternion_axis_angle_consistency() + { + TestUtils.AreEqual(quaternion.AxisAngle(float3(1, 0, 0), 1.0f), quaternion.RotateX(1.0f), 0.001f); + TestUtils.AreEqual(quaternion.AxisAngle(float3(0, 1, 0), 1.0f), quaternion.RotateY(1.0f), 0.001f); + TestUtils.AreEqual(quaternion.AxisAngle(float3(0, 0, 1), 1.0f), quaternion.RotateZ(1.0f), 0.001f); + } + + [TestCompiler] + public static void quaternion_euler() + { + float3 test_angles = TestMatrix.test_angles; + quaternion q0 = quaternion.Euler(test_angles); + quaternion q0_xyz = quaternion.Euler(test_angles, RotationOrder.XYZ); + quaternion q0_xzy = quaternion.Euler(test_angles, RotationOrder.XZY); + quaternion q0_yxz = quaternion.Euler(test_angles, RotationOrder.YXZ); + quaternion q0_yzx = quaternion.Euler(test_angles, RotationOrder.YZX); + quaternion q0_zxy = quaternion.Euler(test_angles, RotationOrder.ZXY); + quaternion q0_zyx = quaternion.Euler(test_angles, RotationOrder.ZYX); + + quaternion q1 = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z); + quaternion q1_xyz = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XYZ); + quaternion q1_xzy = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XZY); + quaternion q1_yxz = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YXZ); + quaternion q1_yzx = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YZX); + quaternion q1_zxy = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZXY); + quaternion q1_zyx = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZYX); + + float epsilon = 0.0001f; + TestUtils.AreEqual(q0, quaternion(-0.3133549f, 0.3435619f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q0_xyz, quaternion(-0.4597331f, 0.06979711f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q0_xzy, quaternion(-0.3133549f, 0.06979711f, 0.3899215f, 0.8630749f), epsilon); + TestUtils.AreEqual(q0_yxz, quaternion(-0.4597331f, 0.06979711f, 0.1971690f, 0.8630748f), epsilon); + TestUtils.AreEqual(q0_yzx, quaternion(-0.4597331f, 0.34356190f, 0.1971690f, 0.7948176f), epsilon); + TestUtils.AreEqual(q0_zxy, quaternion(-0.3133549f, 0.34356190f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q0_zyx, quaternion(-0.3133549f, 0.34356190f, 0.1971690f, 0.8630749f), epsilon); + + TestUtils.AreEqual(q1, quaternion(-0.3133549f, 0.3435619f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q1_xyz, quaternion(-0.4597331f, 0.06979711f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q1_xzy, quaternion(-0.3133549f, 0.06979711f, 0.3899215f, 0.8630749f), epsilon); + TestUtils.AreEqual(q1_yxz, quaternion(-0.4597331f, 0.06979711f, 0.1971690f, 0.8630748f), epsilon); + TestUtils.AreEqual(q1_yzx, quaternion(-0.4597331f, 0.34356190f, 0.1971690f, 0.7948176f), epsilon); + TestUtils.AreEqual(q1_zxy, quaternion(-0.3133549f, 0.34356190f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q1_zyx, quaternion(-0.3133549f, 0.34356190f, 0.1971690f, 0.8630749f), epsilon); + + float3x3 m0 = float3x3(q0); + float3x3 m0_xyz = float3x3(q0_xyz); + float3x3 m0_xzy = float3x3(q0_xzy); + float3x3 m0_yxz = float3x3(q0_yxz); + float3x3 m0_yzx = float3x3(q0_yzx); + float3x3 m0_zxy = float3x3(q0_zxy); + float3x3 m0_zyx = float3x3(q0_zyx); + + float3x3 m1 = float3x3(q1); + float3x3 m1_xyz = float3x3(q1_xyz); + float3x3 m1_xzy = float3x3(q1_xzy); + float3x3 m1_yxz = float3x3(q1_yxz); + float3x3 m1_yzx = float3x3(q1_yzx); + float3x3 m1_zxy = float3x3(q1_zxy); + float3x3 m1_zyx = float3x3(q1_zyx); + + TestUtils.AreEqual(m0, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m0_xyz, TestMatrix.test3x3_xyz, epsilon); + TestUtils.AreEqual(m0_yzx, TestMatrix.test3x3_yzx, epsilon); + TestUtils.AreEqual(m0_zxy, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m0_xzy, TestMatrix.test3x3_xzy, epsilon); + TestUtils.AreEqual(m0_yxz, TestMatrix.test3x3_yxz, epsilon); + TestUtils.AreEqual(m0_zyx, TestMatrix.test3x3_zyx, 0.0001f); + + TestUtils.AreEqual(m1, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m1_xyz, TestMatrix.test3x3_xyz, epsilon); + TestUtils.AreEqual(m1_yzx, TestMatrix.test3x3_yzx, epsilon); + TestUtils.AreEqual(m1_zxy, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m1_xzy, TestMatrix.test3x3_xzy, epsilon); + TestUtils.AreEqual(m1_yxz, TestMatrix.test3x3_yxz, epsilon); + TestUtils.AreEqual(m1_zyx, TestMatrix.test3x3_zyx, epsilon); + } + + [TestCompiler] + public static void quaternion_rotateX() + { + float angle = 2.3f; + quaternion q = quaternion.RotateX(angle); + + quaternion r = quaternion(0.91276394f, 0.0f, 0.0f, 0.40848744f); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void quaternion_rotateY() + { + float angle = 2.3f; + quaternion q = quaternion.RotateY(angle); + + quaternion r = quaternion(0.0f, 0.91276394f, 0.0f, 0.40848744f); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void quaternion_rotateZ() + { + float angle = 2.3f; + quaternion q = quaternion.RotateZ(angle); + + quaternion r = quaternion(0.0f, 0.0f, 0.91276394f, 0.40848744f); + TestUtils.AreEqual(q, r, 0.0001f); + } + + static internal readonly quaternion test_q0 = new quaternion(0.3270836f, 0.8449658f, -0.1090279f, 0.4088545f); + static internal readonly quaternion test_q1 = new quaternion(-0.05623216f, 0.731018f, -0.6747859f, -0.08434824f); + static internal readonly quaternion test_q2 = new quaternion(-0.2316205f, -0.6022133f, -0.7411857f, -0.1852964f); + static internal readonly quaternion test_q3 = new quaternion(0.3619499f, 0.8352691f, -0.1392115f, 0.3897922f); + + [TestCompiler] + public static void quaternion_conjugate() + { + quaternion q = quaternion(1.0f, -2.0f, 3.0f, -4.0f); + quaternion cq = conjugate(q); + quaternion r = quaternion(-1.0f, 2.0f, -3.0f, -4.0f); + + TestUtils.AreEqual(cq, r); + } + + [TestCompiler] + public static void quaternion_inverse() + { + quaternion q = quaternion(1.0f, -2.0f, 3.0f, -4.0f); + quaternion iq = inverse(q); + quaternion qiq = mul(iq, q); + + TestUtils.AreEqual(qiq, quaternion.identity, 0.00001f); + } + + [TestCompiler] + public static void quaternion_dot() + { + float dot01 = dot(test_q0, test_q1); + float dot02 = dot(test_q0, test_q2); + + TestUtils.AreEqual(dot01, 0.6383769f, 0.00001f); + TestUtils.AreEqual(dot02, -0.5795583f, 0.00001f); + } + + [TestCompiler] + public static void quaternion_nlerp() + { + quaternion r0 = nlerp(test_q0, test_q1, 0.3f); + quaternion r1 = nlerp(test_q0, test_q1, -4.3f); + quaternion r2 = nlerp(test_q0, test_q1, 5.1f); + + TestUtils.AreEqual(r0, quaternion(0.2302977f, 0.8803911f, -0.3026878f, 0.2832927f), 0.0001f); + TestUtils.AreEqual(r1, quaternion(0.4724294f, 0.3192692f, 0.5557517f, 0.604994f), 0.0001f); + TestUtils.AreEqual(r2, quaternion(-0.4054004f, 0.06570576f, -0.7457358f, -0.5246059f), 0.0001f); + } + + [TestCompiler] + public static void quaternion_slerp() + { + quaternion r0 = slerp(test_q0, test_q1, 0.3f); + quaternion r1 = slerp(test_q0, test_q1, -4.3f); + quaternion r2 = slerp(test_q0, test_q1, 5.1f); + + TestUtils.AreEqual(r0, quaternion(0.2261014f, 0.8806396f, -0.3100654f, 0.2778693f), 0.0001f); + TestUtils.AreEqual(r1, quaternion(-0.4676181f, -0.5321988f, -0.3789966f, -0.5953646f), 0.0001f); + TestUtils.AreEqual(r2, quaternion(0.2596942f, -0.4369303f, 0.7902023f, 0.34239f), 0.0001f); + } + + [TestCompiler] + public static void quaternion_mul_vector() + { + float3x3 m = TestMatrix.test3x3_xyz; + quaternion q = quaternion(m); + + float3 vector = float3(1.1f, -2.2f, 3.5f); + + float3 mvector = mul(m, vector); + float3 qvector = mul(q, vector); + + TestUtils.AreEqual(qvector, mvector, 0.0001f); + } + + [TestCompiler] + public static void quaternion_log_exp_identity() + { + quaternion q = quaternion(1.2f, -2.6f, 3.1f, 6.0f); + quaternion log_q = log(q); + quaternion exp_log_q = exp(log_q); + TestUtils.AreEqual(exp_log_q, q, 0.0001f); + } + + [TestCompiler] + public static void quaternion_log_exp_rotation() + { + quaternion q = quaternion(TestMatrix.test3x3_xyz); + quaternion q3 = mul(q, mul(q, q)); + quaternion log_q = log(q); + quaternion t = exp(quaternion(log_q.value * 3.0f)); + TestUtils.AreEqual(t, q3, 0.0001f); + } + + [TestCompiler] + public static void quaternion_unitlog_unitexp_rotation() + { + quaternion q = quaternion(TestMatrix.test3x3_xyz); + quaternion q3 = mul(q, mul(q, q)); + quaternion log_q = unitlog(q); + quaternion t = unitexp(quaternion(log_q.value * 3.0f)); + TestUtils.AreEqual(t, q3, 0.0001f); + } + + [TestCompiler] + public static void quaternion_look_rotation() + { + // Exercise the 4 cases + float3 forward0 = normalize(float3(1.0f, 2.0f, 3.0f)); + float3 up0 = float3(0.0f, 1.0f, 0.0f); + quaternion q0 = quaternion.LookRotation(forward0, up0); + TestUtils.AreEqual(q0, quaternion(-0.274657f, 0.153857f, 0.044571f, 0.948106f), 0.001f); + TestUtils.AreEqual(float3x3(q0), float3x3.LookRotation(forward0, up0), 0.001f); + + float3 forward1 = normalize(float3(-3.2f, 2.3f, -1.3f)); + float3 up1 = normalize(float3(1.0f, -3.2f, -1.5f)); + quaternion q1 = quaternion.LookRotation(forward1, up1); + TestUtils.AreEqual(q1, quaternion(0.805418f, 0.089103f, -0.435327f, -0.392240f), 0.001f); + TestUtils.AreEqual(float3x3(q1), float3x3.LookRotation(forward1, up1), 0.001f); + + float3 forward2 = normalize(float3(-2.6f, -5.2f, -1.1f)); + float3 up2 = normalize(float3(-4.2f, -1.2f, -4.5f)); + quaternion q2 = quaternion.LookRotation(forward2, up2); + TestUtils.AreEqual(q2, quaternion(-0.088343f, 0.764951f, -0.534144f, -0.348907f), 0.001f); + TestUtils.AreEqual(float3x3(q2), float3x3.LookRotation(forward2, up2), 0.001f); + + float3 forward3 = normalize(float3(1.3f, 2.1f, 3.4f)); + float3 up3 = normalize(float3(0.2f, -1.0f, 0.3f)); + quaternion q3 = quaternion.LookRotation(forward3, up3); + TestUtils.AreEqual(q3, quaternion(0.184984f, 0.247484f, 0.947425f, -0.083173f), 0.001f); + TestUtils.AreEqual(float3x3(q3), float3x3.LookRotation(forward3, up3), 0.001f); + } + + [TestCompiler] + public static void quaternion_look_rotation_safe() + { + float3 forward0 = float3(-3.2f, 2.3f, -1.3f) * 1e-10f; + float3 up0 = float3(1.0f, -3.2f, -1.5f) * 1e10f; + quaternion q0 = quaternion.LookRotationSafe(forward0, up0); + TestUtils.AreEqual(q0, quaternion(0.805418f, 0.089103f, -0.435327f, -0.392240f), 0.001f); + + float3 forward1 = float3(-3.2f, 2.3f, -1.3f) * 1e-30f; + float3 up1 = float3(1.0f, -3.2f, -1.5f); + quaternion q1 = quaternion.LookRotationSafe(forward1, up1); + TestUtils.AreEqual(q1, quaternion.identity, 0.001f); + + float3 forward2 = float3(-3.2f, 2.3f, -1.3f); + float3 up2 = forward2; + quaternion q2 = quaternion.LookRotationSafe(forward2, up2); + TestUtils.AreEqual(q2, quaternion.identity, 0.001f); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestQuaternion.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestQuaternion.cs.meta new file mode 100644 index 0000000..9ea60bc --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestQuaternion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36c7224b1052973439eead9de857ea33 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestRigidTransform.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestRigidTransform.cs new file mode 100644 index 0000000..5255b65 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestRigidTransform.cs @@ -0,0 +1,163 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + class TestRigidTransform + { + [TestCompiler] + public static void rigid_transform_construct_from_matrix() + { + float4x4 m4x4 = TestMatrix.test4x4_zyx; + + RigidTransform q4x4 = RigidTransform(m4x4); + + float4x4 mq4x4 = float4x4(q4x4); + + TestUtils.AreEqual(mq4x4, m4x4, 0.0001f); + } + + [TestCompiler] + public static void rigid_transform_axisAngle() + { + RigidTransform q = RigidTransform.AxisAngle(normalize(float3(1.0f, 2.0f, 3.0f)), 10.0f); + + RigidTransform r = RigidTransform(quaternion(-0.2562833f, -0.5125666f, -0.76885f, 0.2836622f), float3.zero); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void rigid_transform_euler() + { + float3 test_angles = TestMatrix.test_angles; + RigidTransform q0 = RigidTransform.Euler(test_angles); + RigidTransform q0_xyz = RigidTransform.Euler(test_angles, RotationOrder.XYZ); + RigidTransform q0_xzy = RigidTransform.Euler(test_angles, RotationOrder.XZY); + RigidTransform q0_yxz = RigidTransform.Euler(test_angles, RotationOrder.YXZ); + RigidTransform q0_yzx = RigidTransform.Euler(test_angles, RotationOrder.YZX); + RigidTransform q0_zxy = RigidTransform.Euler(test_angles, RotationOrder.ZXY); + RigidTransform q0_zyx = RigidTransform.Euler(test_angles, RotationOrder.ZYX); + + RigidTransform q1 = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z); + RigidTransform q1_xyz = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XYZ); + RigidTransform q1_xzy = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XZY); + RigidTransform q1_yxz = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YXZ); + RigidTransform q1_yzx = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YZX); + RigidTransform q1_zxy = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZXY); + RigidTransform q1_zyx = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZYX); + + float epsilon = 0.0001f; + TestUtils.AreEqual(q0, RigidTransform(quaternion(-0.3133549f, 0.3435619f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q0_xyz, RigidTransform(quaternion(-0.4597331f, 0.06979711f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q0_xzy, RigidTransform(quaternion(-0.3133549f, 0.06979711f, 0.3899215f, 0.8630749f), float3.zero), epsilon); + TestUtils.AreEqual(q0_yxz, RigidTransform(quaternion(-0.4597331f, 0.06979711f, 0.1971690f, 0.8630748f), float3.zero), epsilon); + TestUtils.AreEqual(q0_yzx, RigidTransform(quaternion(-0.4597331f, 0.34356190f, 0.1971690f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q0_zxy, RigidTransform(quaternion(-0.3133549f, 0.34356190f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q0_zyx, RigidTransform(quaternion(-0.3133549f, 0.34356190f, 0.1971690f, 0.8630749f), float3.zero), epsilon); + + TestUtils.AreEqual(q1, RigidTransform(quaternion(-0.3133549f, 0.3435619f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q1_xyz, RigidTransform(quaternion(-0.4597331f, 0.06979711f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q1_xzy, RigidTransform(quaternion(-0.3133549f, 0.06979711f, 0.3899215f, 0.8630749f), float3.zero), epsilon); + TestUtils.AreEqual(q1_yxz, RigidTransform(quaternion(-0.4597331f, 0.06979711f, 0.1971690f, 0.8630748f), float3.zero), epsilon); + TestUtils.AreEqual(q1_yzx, RigidTransform(quaternion(-0.4597331f, 0.34356190f, 0.1971690f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q1_zxy, RigidTransform(quaternion(-0.3133549f, 0.34356190f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q1_zyx, RigidTransform(quaternion(-0.3133549f, 0.34356190f, 0.1971690f, 0.8630749f), float3.zero), epsilon); + + float3x3 m0 = float3x3(q0.rot); + float3x3 m0_xyz = float3x3(q0_xyz.rot); + float3x3 m0_xzy = float3x3(q0_xzy.rot); + float3x3 m0_yxz = float3x3(q0_yxz.rot); + float3x3 m0_yzx = float3x3(q0_yzx.rot); + float3x3 m0_zxy = float3x3(q0_zxy.rot); + float3x3 m0_zyx = float3x3(q0_zyx.rot); + + float3x3 m1 = float3x3(q1.rot); + float3x3 m1_xyz = float3x3(q1_xyz.rot); + float3x3 m1_xzy = float3x3(q1_xzy.rot); + float3x3 m1_yxz = float3x3(q1_yxz.rot); + float3x3 m1_yzx = float3x3(q1_yzx.rot); + float3x3 m1_zxy = float3x3(q1_zxy.rot); + float3x3 m1_zyx = float3x3(q1_zyx.rot); + + TestUtils.AreEqual(m0, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m0_xyz, TestMatrix.test3x3_xyz, epsilon); + TestUtils.AreEqual(m0_yzx, TestMatrix.test3x3_yzx, epsilon); + TestUtils.AreEqual(m0_zxy, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m0_xzy, TestMatrix.test3x3_xzy, epsilon); + TestUtils.AreEqual(m0_yxz, TestMatrix.test3x3_yxz, epsilon); + TestUtils.AreEqual(m0_zyx, TestMatrix.test3x3_zyx, 0.0001f); + + TestUtils.AreEqual(m1, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m1_xyz, TestMatrix.test3x3_xyz, epsilon); + TestUtils.AreEqual(m1_yzx, TestMatrix.test3x3_yzx, epsilon); + TestUtils.AreEqual(m1_zxy, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m1_xzy, TestMatrix.test3x3_xzy, epsilon); + TestUtils.AreEqual(m1_yxz, TestMatrix.test3x3_yxz, epsilon); + TestUtils.AreEqual(m1_zyx, TestMatrix.test3x3_zyx, epsilon); + } + + [TestCompiler] + public static void rigid_transform_rotateX() + { + float angle = 2.3f; + RigidTransform q = RigidTransform.RotateX(angle); + + RigidTransform r = RigidTransform(quaternion(0.91276394f, 0.0f, 0.0f, 0.40848744f), float3.zero); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void rigid_transform_rotateY() + { + float angle = 2.3f; + RigidTransform q = RigidTransform.RotateY(angle); + + RigidTransform r = RigidTransform(quaternion(0.0f, 0.91276394f, 0.0f, 0.40848744f), float3.zero); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void rigid_transform_rotateZ() + { + float angle = 2.3f; + RigidTransform q = RigidTransform.RotateZ(angle); + + RigidTransform r = RigidTransform(quaternion(0.0f, 0.0f, 0.91276394f, 0.40848744f), float3.zero); + TestUtils.AreEqual(q, r, 0.0001f); + } + + static internal readonly quaternion test_q0 = new quaternion(0.3270836f, 0.8449658f, -0.1090279f, 0.4088545f); + static internal readonly quaternion test_q1 = new quaternion(-0.05623216f, 0.731018f, -0.6747859f, -0.08434824f); + static internal readonly quaternion test_q2 = new quaternion(-0.2316205f, -0.6022133f, -0.7411857f, -0.1852964f); + static internal readonly quaternion test_q3 = new quaternion(0.3619499f, 0.8352691f, -0.1392115f, 0.3897922f); + + [TestCompiler] + public static void rigid_transform_inverse() + { + RigidTransform q = RigidTransform(quaternion(1.0f, -2.0f, 3.0f, -4.0f), float3(1,2,3)); + RigidTransform iq = inverse(q); + RigidTransform qiq = mul(iq, q); + + TestUtils.AreEqual(qiq, RigidTransform.identity, 0.00001f); + } + + [TestCompiler] + public static void rigid_transform_mul_vector() + { + float4x4 m = TestMatrix.test4x4_xyz; + RigidTransform q = RigidTransform(m); + + float3 vector = float3(1.1f, -2.2f, 3.5f); + + float4 mvector0 = mul(m, float4(vector, 0)); + float4 qvector0 = mul(q, float4(vector, 0)); + TestUtils.AreEqual(qvector0, mvector0, 0.0001f); + + float4 mvector1 = mul(m, float4(vector, 1)); + float4 qvector1 = mul(q, float4(vector, 1)); + TestUtils.AreEqual(qvector1, mvector1, 0.0001f); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestRigidTransform.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestRigidTransform.cs.meta new file mode 100644 index 0000000..2d5869d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestRigidTransform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ea7743c8ecbfba4abe11751b744207e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2.gen.cs new file mode 100644 index 0000000..c926e8d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2.gen.cs @@ -0,0 +1,1339 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint2 + { + [TestCompiler] + public static void uint2_zero() + { + TestUtils.AreEqual(uint2.zero.x, 0u); + TestUtils.AreEqual(uint2.zero.y, 0u); + } + + [TestCompiler] + public static void uint2_constructor() + { + uint2 a = new uint2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void uint2_scalar_constructor() + { + uint2 a = new uint2(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + } + + [TestCompiler] + public static void uint2_static_constructor() + { + uint2 a = uint2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void uint2_static_scalar_constructor() + { + uint2 a = uint2(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + } + + [TestCompiler] + public static void uint2_operator_equal_wide_wide() + { + uint2 a0 = uint2(790229414, 970783976); + uint2 b0 = uint2(612337669, 1214209108); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2 a1 = uint2(1428432738, 1578747135); + uint2 b1 = uint2(2120643427, 295461214); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2 a2 = uint2(1733797753, 2001507228); + uint2 b2 = uint2(1510890331, 1893316566); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2 a3 = uint2(1446876437, 1777406370); + uint2 b3 = uint2(921816149, 1834958575); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2_operator_equal_wide_scalar() + { + uint2 a0 = uint2(1211464300, 1921862607); + uint b0 = (746972502); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2 a1 = uint2(508076684, 1394594555); + uint b1 = (1249127920); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2 a2 = uint2(746862310, 1884008277); + uint b2 = (1733655277); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2 a3 = uint2(1682018538, 936027116); + uint b3 = (795585660); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint2 b0 = uint2(233855098, 924242519); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1402948791); + uint2 b1 = uint2(601381975, 2120518068); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (629187703); + uint2 b2 = uint2(1971977031, 47183124); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1061805787); + uint2 b3 = uint2(1009011238, 312511148); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2_operator_not_equal_wide_wide() + { + uint2 a0 = uint2(1660932106, 982847023); + uint2 b0 = uint2(107139049, 75478496); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2 a1 = uint2(97046264, 1739517447); + uint2 b1 = uint2(2055495054, 358586687); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2 a2 = uint2(1253499180, 1830584069); + uint2 b2 = uint2(942338347, 111564990); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2 a3 = uint2(1841470429, 1397841646); + uint2 b3 = uint2(113811950, 948912488); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2_operator_not_equal_wide_scalar() + { + uint2 a0 = uint2(747758183, 1033001286); + uint b0 = (248693828); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2 a1 = uint2(1439973882, 1197845089); + uint b1 = (2138928797); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2 a2 = uint2(1432672459, 238704450); + uint b2 = (950170763); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2 a3 = uint2(2105962247, 1640688041); + uint b3 = (727205263); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint2 b0 = uint2(2037494727, 1989050616); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (48833929); + uint2 b1 = uint2(1897435904, 514354517); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (1783749164); + uint2 b2 = uint2(364694471, 754315072); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (124108032); + uint2 b3 = uint2(1512967900, 1178825850); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_wide_wide() + { + uint2 a0 = uint2(1182186063, 415538999); + uint2 b0 = uint2(524633529, 1032195686); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2 a1 = uint2(1667335818, 1566618442); + uint2 b1 = uint2(760723389, 1505751409); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint2 a2 = uint2(1166180837, 639095188); + uint2 b2 = uint2(431962172, 1287906509); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2 a3 = uint2(1080836365, 771119973); + uint2 b3 = uint2(1560084663, 1450178202); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_wide_scalar() + { + uint2 a0 = uint2(608447185, 818840405); + uint b0 = (1491216667); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2 a1 = uint2(869219329, 1214500548); + uint b1 = (2080125385); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2 a2 = uint2(1361741203, 1615392341); + uint b2 = (1667165786); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2 a3 = uint2(840091491, 1247103789); + uint b3 = (469591900); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint2 b0 = uint2(282703327, 14370648); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1862117300); + uint2 b1 = uint2(1304793311, 826073259); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (988910157); + uint2 b2 = uint2(445132446, 1139670255); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (111349251); + uint2 b3 = uint2(1102440676, 112183144); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_wide_wide() + { + uint2 a0 = uint2(592884447, 2133928932); + uint2 b0 = uint2(138737040, 192863971); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2 a1 = uint2(918957182, 1284069471); + uint2 b1 = uint2(1700841444, 1044631301); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint2 a2 = uint2(194584707, 739120780); + uint2 b2 = uint2(1391589821, 730837695); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint2 a3 = uint2(241654068, 1340158550); + uint2 b3 = uint2(253553987, 2078872742); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_wide_scalar() + { + uint2 a0 = uint2(1097138316, 211763648); + uint b0 = (438688675); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint2 a1 = uint2(1883002501, 43662641); + uint b1 = (56406996); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint2 a2 = uint2(1923456111, 1219010035); + uint b2 = (1437755186); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2 a3 = uint2(2125058448, 893125636); + uint b3 = (304028799); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint2 b0 = uint2(599356784, 185671342); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1932327391); + uint2 b1 = uint2(2025591013, 1257191721); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1312388500); + uint2 b2 = uint2(1443698859, 779217735); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (691047512); + uint2 b3 = uint2(741776730, 732565983); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_equal_wide_wide() + { + uint2 a0 = uint2(1577248162, 2043073061); + uint2 b0 = uint2(903445031, 2108974565); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2 a1 = uint2(1688380407, 176431985); + uint2 b1 = uint2(210822256, 1281704747); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2 a2 = uint2(223299035, 1502802140); + uint2 b2 = uint2(453681718, 66138830); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2 a3 = uint2(1691709825, 386789394); + uint2 b3 = uint2(1229799377, 1620922595); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_equal_wide_scalar() + { + uint2 a0 = uint2(1722165358, 1219858357); + uint b0 = (1688048545); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2 a1 = uint2(860410743, 348104022); + uint b1 = (411099660); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2 a2 = uint2(1963256951, 58924407); + uint b2 = (212084836); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2 a3 = uint2(1459242706, 532949158); + uint b3 = (1745758438); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint2 b0 = uint2(1181030049, 1787703989); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1729760948); + uint2 b1 = uint2(1816537388, 1359786460); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (874999193); + uint2 b2 = uint2(1678863148, 1711365839); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (762067160); + uint2 b3 = uint2(11953554, 1131583906); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_equal_wide_wide() + { + uint2 a0 = uint2(263000030, 744235661); + uint2 b0 = uint2(1395535146, 1178373944); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2 a1 = uint2(1893760267, 237248); + uint2 b1 = uint2(1237373760, 1364855321); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2 a2 = uint2(1062370984, 1676977687); + uint2 b2 = uint2(600811864, 362060472); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2 a3 = uint2(816766880, 1089431546); + uint2 b3 = uint2(290870624, 1839067862); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_equal_wide_scalar() + { + uint2 a0 = uint2(2112791350, 1043657935); + uint b0 = (1470533736); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2 a1 = uint2(101764761, 556026890); + uint b1 = (1529909067); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2 a2 = uint2(281734132, 815093894); + uint b2 = (1186600258); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2 a3 = uint2(609211196, 829548642); + uint b3 = (1604309397); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint2 b0 = uint2(1503244746, 861711266); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (817773856); + uint2 b1 = uint2(925984572, 571221723); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (683686810); + uint2 b2 = uint2(118252990, 1653952090); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (1240253990); + uint2 b3 = uint2(1947039008, 1869136019); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_add_wide_wide() + { + uint2 a0 = uint2(2049228671, 1658660009); + uint2 b0 = uint2(2088751567, 645762023); + uint2 r0 = uint2(4137980238, 2304422032); + TestUtils.AreEqual(a0 + b0, r0); + + uint2 a1 = uint2(491719392, 937013355); + uint2 b1 = uint2(306868786, 4360271); + uint2 r1 = uint2(798588178, 941373626); + TestUtils.AreEqual(a1 + b1, r1); + + uint2 a2 = uint2(81108663, 1063894558); + uint2 b2 = uint2(506047997, 2094559874); + uint2 r2 = uint2(587156660, 3158454432); + TestUtils.AreEqual(a2 + b2, r2); + + uint2 a3 = uint2(86954702, 843159721); + uint2 b3 = uint2(1634712736, 1601474440); + uint2 r3 = uint2(1721667438, 2444634161); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2_operator_add_wide_scalar() + { + uint2 a0 = uint2(2038218457, 134923711); + uint b0 = (2124409227); + uint2 r0 = uint2(4162627684, 2259332938); + TestUtils.AreEqual(a0 + b0, r0); + + uint2 a1 = uint2(875689667, 997710928); + uint b1 = (1338884463); + uint2 r1 = uint2(2214574130, 2336595391); + TestUtils.AreEqual(a1 + b1, r1); + + uint2 a2 = uint2(340490871, 70433301); + uint b2 = (1067888129); + uint2 r2 = uint2(1408379000, 1138321430); + TestUtils.AreEqual(a2 + b2, r2); + + uint2 a3 = uint2(2003021861, 1160398286); + uint b3 = (1635971971); + uint2 r3 = uint2(3638993832, 2796370257); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint2 b0 = uint2(519908870, 851424292); + uint2 r0 = uint2(911000948, 1242516370); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (328314822); + uint2 b1 = uint2(135622204, 740923360); + uint2 r1 = uint2(463937026, 1069238182); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (655394201); + uint2 b2 = uint2(1451896269, 1781697072); + uint2 r2 = uint2(2107290470, 2437091273); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (996031825); + uint2 b3 = uint2(1557774949, 779774940); + uint2 r3 = uint2(2553806774, 1775806765); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2_operator_sub_wide_wide() + { + uint2 a0 = uint2(1353441118, 797269833); + uint2 b0 = uint2(1332656812, 1827794007); + uint2 r0 = uint2(20784306, 3264443122); + TestUtils.AreEqual(a0 - b0, r0); + + uint2 a1 = uint2(659988112, 56022121); + uint2 b1 = uint2(972557431, 2078233689); + uint2 r1 = uint2(3982397977, 2272755728); + TestUtils.AreEqual(a1 - b1, r1); + + uint2 a2 = uint2(365847472, 2062899435); + uint2 b2 = uint2(1508184327, 1372307701); + uint2 r2 = uint2(3152630441, 690591734); + TestUtils.AreEqual(a2 - b2, r2); + + uint2 a3 = uint2(1380988474, 799885138); + uint2 b3 = uint2(810327977, 936799885); + uint2 r3 = uint2(570660497, 4158052549); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2_operator_sub_wide_scalar() + { + uint2 a0 = uint2(1176369558, 1934521195); + uint b0 = (462232403); + uint2 r0 = uint2(714137155, 1472288792); + TestUtils.AreEqual(a0 - b0, r0); + + uint2 a1 = uint2(309452150, 108910717); + uint b1 = (1417634074); + uint2 r1 = uint2(3186785372, 2986243939); + TestUtils.AreEqual(a1 - b1, r1); + + uint2 a2 = uint2(1306356714, 1451794815); + uint b2 = (1502312334); + uint2 r2 = uint2(4099011676, 4244449777); + TestUtils.AreEqual(a2 - b2, r2); + + uint2 a3 = uint2(281174200, 1913724431); + uint b3 = (87530840); + uint2 r3 = uint2(193643360, 1826193591); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint2 b0 = uint2(2022393810, 1612688515); + uint2 r0 = uint2(3964107891, 78845890); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (496689713); + uint2 b1 = uint2(887037586, 2097630964); + uint2 r1 = uint2(3904619423, 2694026045); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (374934538); + uint2 b2 = uint2(939035482, 935242277); + uint2 r2 = uint2(3730866352, 3734659557); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1789300421); + uint2 b3 = uint2(264712893, 1231856067); + uint2 r3 = uint2(1524587528, 557444354); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mul_wide_wide() + { + uint2 a0 = uint2(245827027, 208934650); + uint2 b0 = uint2(759663997, 350129201); + uint2 r0 = uint2(3662155527, 1402281434); + TestUtils.AreEqual(a0 * b0, r0); + + uint2 a1 = uint2(1019478917, 568231809); + uint2 b1 = uint2(477450108, 1635735015); + uint2 r1 = uint2(332447596, 2361989735); + TestUtils.AreEqual(a1 * b1, r1); + + uint2 a2 = uint2(877289039, 1585782440); + uint2 b2 = uint2(388710278, 757722665); + uint2 r2 = uint2(2624048730, 1455036648); + TestUtils.AreEqual(a2 * b2, r2); + + uint2 a3 = uint2(2111178729, 1186019069); + uint2 b3 = uint2(1509388321, 1841703980); + uint2 r3 = uint2(2128344329, 3700879228); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mul_wide_scalar() + { + uint2 a0 = uint2(1762033447, 465343930); + uint b0 = (1476837906); + uint2 r0 = uint2(2981789374, 1326807828); + TestUtils.AreEqual(a0 * b0, r0); + + uint2 a1 = uint2(1570757881, 1824319147); + uint b1 = (1326409563); + uint2 r1 = uint2(1666366339, 4042902473); + TestUtils.AreEqual(a1 * b1, r1); + + uint2 a2 = uint2(1356578909, 154616909); + uint b2 = (72749215); + uint2 r2 = uint2(130042307, 1400257491); + TestUtils.AreEqual(a2 * b2, r2); + + uint2 a3 = uint2(975743632, 1958912969); + uint b3 = (573770299); + uint2 r3 = uint2(414773040, 3595344211); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint2 b0 = uint2(1764461774, 657072478); + uint2 r0 = uint2(3344568648, 4192918280); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1459784358); + uint2 b1 = uint2(1610646683, 1632058826); + uint2 r1 = uint2(1040681602, 2635396348); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (868441654); + uint2 b2 = uint2(1408757883, 335917146); + uint2 r2 = uint2(1867178994, 2458009340); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (2105124483); + uint2 b3 = uint2(1178393968, 1963904348); + uint2 r3 = uint2(3266048080, 2084093460); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2_operator_div_wide_wide() + { + uint2 a0 = uint2(1590198532, 507812502); + uint2 b0 = uint2(1434703236, 911965201); + uint2 r0 = uint2(1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint2 a1 = uint2(126627032, 1058247011); + uint2 b1 = uint2(390415521, 128746927); + uint2 r1 = uint2(0, 8); + TestUtils.AreEqual(a1 / b1, r1); + + uint2 a2 = uint2(427387861, 290676154); + uint2 b2 = uint2(525835375, 816946613); + uint2 r2 = uint2(0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2 a3 = uint2(1829594484, 1127868739); + uint2 b3 = uint2(878264647, 146789678); + uint2 r3 = uint2(2, 7); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2_operator_div_wide_scalar() + { + uint2 a0 = uint2(560951562, 1218680769); + uint b0 = (947861580); + uint2 r0 = uint2(0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint2 a1 = uint2(375341724, 1919409166); + uint b1 = (1613542090); + uint2 r1 = uint2(0, 1); + TestUtils.AreEqual(a1 / b1, r1); + + uint2 a2 = uint2(1397425408, 524526253); + uint b2 = (1349573078); + uint2 r2 = uint2(1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2 a3 = uint2(341995568, 1515313790); + uint b3 = (495895326); + uint2 r3 = uint2(0, 3); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint2 b0 = uint2(187325733, 1594107378); + uint2 r0 = uint2(6, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (2016183849); + uint2 b1 = uint2(1589343709, 388768753); + uint2 r1 = uint2(1, 5); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1417077283); + uint2 b2 = uint2(1773486938, 1154044032); + uint2 r2 = uint2(0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (81831373); + uint2 b3 = uint2(1476877645, 653688843); + uint2 r3 = uint2(0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mod_wide_wide() + { + uint2 a0 = uint2(146150818, 1846543305); + uint2 b0 = uint2(983050390, 771341152); + uint2 r0 = uint2(146150818, 303861001); + TestUtils.AreEqual(a0 % b0, r0); + + uint2 a1 = uint2(1071447756, 308965362); + uint2 b1 = uint2(942375212, 367361754); + uint2 r1 = uint2(129072544, 308965362); + TestUtils.AreEqual(a1 % b1, r1); + + uint2 a2 = uint2(659881575, 1002365460); + uint2 b2 = uint2(749500619, 750718852); + uint2 r2 = uint2(659881575, 251646608); + TestUtils.AreEqual(a2 % b2, r2); + + uint2 a3 = uint2(861198439, 1510617532); + uint2 b3 = uint2(2095151755, 88438806); + uint2 r3 = uint2(861198439, 7157830); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mod_wide_scalar() + { + uint2 a0 = uint2(164800505, 1062177828); + uint b0 = (883951171); + uint2 r0 = uint2(164800505, 178226657); + TestUtils.AreEqual(a0 % b0, r0); + + uint2 a1 = uint2(1898749675, 820393245); + uint b1 = (1701653318); + uint2 r1 = uint2(197096357, 820393245); + TestUtils.AreEqual(a1 % b1, r1); + + uint2 a2 = uint2(19002208, 1464010899); + uint b2 = (128329633); + uint2 r2 = uint2(19002208, 52384936); + TestUtils.AreEqual(a2 % b2, r2); + + uint2 a3 = uint2(896587769, 1982762194); + uint b3 = (405208598); + uint2 r3 = uint2(86170573, 361927802); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint2 b0 = uint2(740000543, 1556450291); + uint2 r0 = uint2(242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1104736385); + uint2 b1 = uint2(437976569, 1911837205); + uint2 r1 = uint2(228783247, 1104736385); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1507212038); + uint2 b2 = uint2(1906405167, 247693265); + uint2 r2 = uint2(1507212038, 21052448); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (293460573); + uint2 b3 = uint2(1495295166, 873323603); + uint2 r3 = uint2(293460573, 293460573); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2_operator_plus() + { + uint2 a0 = uint2(1643476803, 907898539); + uint2 r0 = uint2(1643476803, 907898539); + TestUtils.AreEqual(+a0, r0); + + uint2 a1 = uint2(379615839, 1735287433); + uint2 r1 = uint2(379615839, 1735287433); + TestUtils.AreEqual(+a1, r1); + + uint2 a2 = uint2(1743199272, 339091479); + uint2 r2 = uint2(1743199272, 339091479); + TestUtils.AreEqual(+a2, r2); + + uint2 a3 = uint2(401565897, 849339193); + uint2 r3 = uint2(401565897, 849339193); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint2_operator_neg() + { + uint2 a0 = uint2(1955022112, 662160019); + uint2 r0 = uint2(2339945184, 3632807277); + TestUtils.AreEqual(-a0, r0); + + uint2 a1 = uint2(370300775, 1004505619); + uint2 r1 = uint2(3924666521, 3290461677); + TestUtils.AreEqual(-a1, r1); + + uint2 a2 = uint2(28153593, 505708349); + uint2 r2 = uint2(4266813703, 3789258947); + TestUtils.AreEqual(-a2, r2); + + uint2 a3 = uint2(1115028238, 694995093); + uint2 r3 = uint2(3179939058, 3599972203); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint2_operator_prefix_inc() + { + uint2 a0 = uint2(864455342, 2035793213); + uint2 r0 = uint2(864455343, 2035793214); + TestUtils.AreEqual(++a0, r0); + + uint2 a1 = uint2(1275443862, 411610189); + uint2 r1 = uint2(1275443863, 411610190); + TestUtils.AreEqual(++a1, r1); + + uint2 a2 = uint2(446210725, 115573442); + uint2 r2 = uint2(446210726, 115573443); + TestUtils.AreEqual(++a2, r2); + + uint2 a3 = uint2(913293639, 1208161871); + uint2 r3 = uint2(913293640, 1208161872); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint2_operator_postfix_inc() + { + uint2 a0 = uint2(1751003569, 2063707595); + uint2 r0 = uint2(1751003569, 2063707595); + TestUtils.AreEqual(a0++, r0); + + uint2 a1 = uint2(1500486291, 1007848192); + uint2 r1 = uint2(1500486291, 1007848192); + TestUtils.AreEqual(a1++, r1); + + uint2 a2 = uint2(2028651936, 1190630527); + uint2 r2 = uint2(2028651936, 1190630527); + TestUtils.AreEqual(a2++, r2); + + uint2 a3 = uint2(1396179607, 177416855); + uint2 r3 = uint2(1396179607, 177416855); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint2_operator_prefix_dec() + { + uint2 a0 = uint2(200904609, 871077500); + uint2 r0 = uint2(200904608, 871077499); + TestUtils.AreEqual(--a0, r0); + + uint2 a1 = uint2(968578728, 1995396216); + uint2 r1 = uint2(968578727, 1995396215); + TestUtils.AreEqual(--a1, r1); + + uint2 a2 = uint2(435367037, 1589827826); + uint2 r2 = uint2(435367036, 1589827825); + TestUtils.AreEqual(--a2, r2); + + uint2 a3 = uint2(1434377580, 1699290403); + uint2 r3 = uint2(1434377579, 1699290402); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint2_operator_postfix_dec() + { + uint2 a0 = uint2(283970262, 1109329936); + uint2 r0 = uint2(283970262, 1109329936); + TestUtils.AreEqual(a0--, r0); + + uint2 a1 = uint2(1073216143, 1932646215); + uint2 r1 = uint2(1073216143, 1932646215); + TestUtils.AreEqual(a1--, r1); + + uint2 a2 = uint2(1174104498, 524156737); + uint2 r2 = uint2(1174104498, 524156737); + TestUtils.AreEqual(a2--, r2); + + uint2 a3 = uint2(691209285, 802721301); + uint2 r3 = uint2(691209285, 802721301); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_and_wide_wide() + { + uint2 a0 = uint2(779935043, 1097962163); + uint2 b0 = uint2(307705143, 1710882162); + uint2 r0 = uint2(39064835, 1097961522); + TestUtils.AreEqual(a0 & b0, r0); + + uint2 a1 = uint2(1939593304, 800599247); + uint2 b1 = uint2(866836769, 532490608); + uint2 r1 = uint2(864731136, 263727168); + TestUtils.AreEqual(a1 & b1, r1); + + uint2 a2 = uint2(952140918, 782792558); + uint2 b2 = uint2(679371720, 1794035877); + uint2 r2 = uint2(675283008, 715673636); + TestUtils.AreEqual(a2 & b2, r2); + + uint2 a3 = uint2(1608557706, 396446406); + uint2 b3 = uint2(1439832202, 519529812); + uint2 r3 = uint2(1438646410, 379666500); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_and_wide_scalar() + { + uint2 a0 = uint2(443615469, 490057985); + uint b0 = (93423598); + uint2 r0 = uint2(1114348, 85033216); + TestUtils.AreEqual(a0 & b0, r0); + + uint2 a1 = uint2(2042441263, 1405175110); + uint b1 = (1524760558); + uint2 r1 = uint2(1486958126, 1388397894); + TestUtils.AreEqual(a1 & b1, r1); + + uint2 a2 = uint2(510212004, 1236735839); + uint b2 = (1941875181); + uint2 r2 = uint2(304619940, 1102446925); + TestUtils.AreEqual(a2 & b2, r2); + + uint2 a3 = uint2(1365509729, 607982857); + uint b3 = (428270198); + uint2 r3 = uint2(285475424, 262144); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint2 b0 = uint2(420346723, 562416448); + uint2 r0 = uint2(547170, 18752); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1393127318); + uint2 b1 = uint2(1560699552, 851218057); + uint2 r1 = uint2(1358979712, 302517888); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (703880958); + uint2 b2 = uint2(1159378889, 2031211279); + uint2 r2 = uint2(17831624, 688935438); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1089518981); + uint2 b3 = uint2(270607307, 1349288930); + uint2 r3 = uint2(2105729, 1080066432); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_or_wide_wide() + { + uint2 a0 = uint2(1731159103, 659068416); + uint2 b0 = uint2(1583847161, 692672727); + uint2 r0 = uint2(2138044159, 793370327); + TestUtils.AreEqual(a0 | b0, r0); + + uint2 a1 = uint2(382702471, 1821032196); + uint2 b1 = uint2(1161585489, 1756207130); + uint2 r1 = uint2(1476391895, 1823457054); + TestUtils.AreEqual(a1 | b1, r1); + + uint2 a2 = uint2(1565773438, 1004000514); + uint2 b2 = uint2(1321374429, 1287357212); + uint2 r2 = uint2(1607720703, 2147473182); + TestUtils.AreEqual(a2 | b2, r2); + + uint2 a3 = uint2(948501377, 600951835); + uint2 b3 = uint2(2075767170, 1273513430); + uint2 r3 = uint2(2075786115, 1811533279); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_or_wide_scalar() + { + uint2 a0 = uint2(961259683, 471103264); + uint b0 = (1666102508); + uint2 r0 = uint2(2068823279, 2136930284); + TestUtils.AreEqual(a0 | b0, r0); + + uint2 a1 = uint2(1733389229, 386953869); + uint b1 = (1591585258); + uint2 r1 = uint2(2145250287, 1608383471); + TestUtils.AreEqual(a1 | b1, r1); + + uint2 a2 = uint2(1148351449, 1814263250); + uint b2 = (1048929715); + uint2 r2 = uint2(2130147323, 2124903923); + TestUtils.AreEqual(a2 | b2, r2); + + uint2 a3 = uint2(860336789, 1227888278); + uint b3 = (1637162093); + uint2 r3 = uint2(1943518973, 1773477631); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint2 b0 = uint2(1212928242, 1614462616); + uint2 r0 = uint2(1213978111, 1752940445); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (936937728); + uint2 b1 = uint2(764766995, 306352095); + uint2 r1 = uint2(1071508243, 937070559); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (574719481); + uint2 b2 = uint2(1283571271, 2109131012); + uint2 r2 = uint2(1858191359, 2146946557); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (979469710); + uint2 b3 = uint2(1348323481, 1407542578); + uint2 r3 = uint2(2055064991, 2078664126); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_xor_wide_wide() + { + uint2 a0 = uint2(1556324760, 207002929); + uint2 b0 = uint2(1054997548, 1523759632); + uint2 r0 = uint2(1646419380, 1451501345); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2 a1 = uint2(1843444873, 1632079131); + uint2 b1 = uint2(251164872, 110472397); + uint2 r1 = uint2(1662567489, 1741824470); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2 a2 = uint2(1460334334, 1607815585); + uint2 b2 = uint2(384031112, 1109163205); + uint2 r2 = uint2(1105803126, 499723620); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2 a3 = uint2(220623650, 38668553); + uint2 b3 = uint2(535118981, 179106262); + uint2 r3 = uint2(314783655, 149092575); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_xor_wide_scalar() + { + uint2 a0 = uint2(2124666952, 177397845); + uint b0 = (493665894); + uint2 r0 = uint2(1674536494, 402546227); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2 a1 = uint2(574879617, 1136545648); + uint b1 = (1937385541); + uint2 r1 = uint2(1362747332, 818177845); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2 a2 = uint2(213863690, 289301586); + uint b2 = (535061373); + uint2 r2 = uint2(324742775, 249169711); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2 a3 = uint2(1305234431, 1308626970); + uint b3 = (353786540); + uint2 r3 = uint2(1490686291, 1528187574); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint2 b0 = uint2(1077599928, 884741329); + uint2 r0 = uint2(217506340, 2020616269); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (212164516); + uint2 b1 = uint2(1585020328, 152985454); + uint2 r1 = uint2(1390158348, 96141514); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1775851275); + uint2 b2 = uint2(1416249064, 1309317737); + uint2 r2 = uint2(1035168227, 668192098); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1773918217); + uint2 b3 = uint2(1509843030, 1206045972); + uint2 r3 = uint2(809875551, 777590045); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2_operator_left_shift() + { + uint2 a0 = uint2(197771193, 622182602); + int b0 = (1321149625); + uint2 r0 = uint2(1912602624, 2483027968); + TestUtils.AreEqual(a0 << b0, r0); + + uint2 a1 = uint2(1283988958, 473415985); + int b1 = (1327917304); + uint2 r1 = uint2(3724541952, 822083584); + TestUtils.AreEqual(a1 << b1, r1); + + uint2 a2 = uint2(432425717, 2058433484); + int b2 = (870301196); + uint2 r2 = uint2(1689210880, 322748416); + TestUtils.AreEqual(a2 << b2, r2); + + uint2 a3 = uint2(1200694230, 1360008038); + int b3 = (1531607705); + uint2 r3 = uint2(2885681152, 3422552064); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint2_operator_right_shift() + { + uint2 a0 = uint2(548167301, 1161338299); + int b0 = (1266801540); + uint2 r0 = uint2(34260456, 72583643); + TestUtils.AreEqual(a0 >> b0, r0); + + uint2 a1 = uint2(1617625829, 713958715); + int b1 = (1860731847); + uint2 r1 = uint2(12637701, 5577802); + TestUtils.AreEqual(a1 >> b1, r1); + + uint2 a2 = uint2(196552656, 1265099998); + int b2 = (770466193); + uint2 r2 = uint2(1499, 9651); + TestUtils.AreEqual(a2 >> b2, r2); + + uint2 a3 = uint2(572763124, 426807581); + int b3 = (506619530); + uint2 r3 = uint2(559338, 416804); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_not() + { + uint2 a0 = uint2(1403358969, 831360921); + uint2 r0 = uint2(2891608326, 3463606374); + TestUtils.AreEqual(~a0, r0); + + uint2 a1 = uint2(2088190243, 878283189); + uint2 r1 = uint2(2206777052, 3416684106); + TestUtils.AreEqual(~a1, r1); + + uint2 a2 = uint2(308994339, 1420884856); + uint2 r2 = uint2(3985972956, 2874082439); + TestUtils.AreEqual(~a2, r2); + + uint2 a3 = uint2(472965491, 627580960); + uint2 r3 = uint2(3822001804, 3667386335); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void uint2_shuffle_result_1() + { + uint2 a = uint2(0, 1); + uint2 b = uint2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (3)); + } + + [TestCompiler] + public static void uint2_shuffle_result_2() + { + uint2 a = uint2(0, 1); + uint2 b = uint2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX), uint2(0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftX), uint2(1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), uint2(2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX), uint2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY), uint2(0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint2(1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint2(2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), uint2(3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX), uint2(0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX), uint2(2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), uint2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint2(0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY), uint2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), uint2(3, 3)); + } + + [TestCompiler] + public static void uint2_shuffle_result_3() + { + uint2 a = uint2(0, 1); + uint2 b = uint2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY), uint3(2, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightX), uint3(2, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(1, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), uint3(0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftX), uint3(3, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), uint3(2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX), uint3(2, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY), uint3(3, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightX), uint3(3, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(0, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(3, 1, 1)); + } + + [TestCompiler] + public static void uint2_shuffle_result_4() + { + uint2 a = uint2(0, 1); + uint2 b = uint2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint4(0, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(2, 1, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX), uint4(3, 2, 3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), uint4(2, 0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightX), uint4(0, 3, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftY), uint4(3, 0, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftX), uint4(2, 2, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(2, 2, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint4(0, 1, 2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightY), uint4(2, 1, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftY), uint4(3, 3, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint4(2, 2, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), uint4(3, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), uint4(2, 2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(0, 3, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), uint4(2, 0, 0, 0)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2.gen.cs.meta new file mode 100644 index 0000000..ade3bfc --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b6fc6b61ea1f4f42944befb17029ea1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x2.gen.cs new file mode 100644 index 0000000..43881d0 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x2.gen.cs @@ -0,0 +1,1234 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint2x2 + { + [TestCompiler] + public static void uint2x2_zero() + { + TestUtils.AreEqual(uint2x2.zero.c0.x, 0u); + TestUtils.AreEqual(uint2x2.zero.c0.y, 0u); + TestUtils.AreEqual(uint2x2.zero.c1.x, 0u); + TestUtils.AreEqual(uint2x2.zero.c1.y, 0u); + } + + [TestCompiler] + public static void uint2x2_identity() + { + TestUtils.AreEqual(uint2x2.identity.c0.x, 1u); + TestUtils.AreEqual(uint2x2.identity.c0.y, 0u); + TestUtils.AreEqual(uint2x2.identity.c1.x, 0u); + TestUtils.AreEqual(uint2x2.identity.c1.y, 1u); + } + + [TestCompiler] + public static void uint2x2_operator_equal_wide_wide() + { + uint2x2 a0 = uint2x2(790229414, 970783976, 1428432738, 1578747135); + uint2x2 b0 = uint2x2(612337669, 1214209108, 2120643427, 295461214); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x2 a1 = uint2x2(1733797753, 2001507228, 1446876437, 1777406370); + uint2x2 b1 = uint2x2(1510890331, 1893316566, 921816149, 1834958575); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x2 a2 = uint2x2(1426387268, 1809275021, 1843770816, 1172185222); + uint2x2 b2 = uint2x2(1482011863, 2062852792, 226398742, 770290735); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x2 a3 = uint2x2(1469608940, 869874758, 458603090, 581282460); + uint2x2 b3 = uint2x2(36812057, 543224481, 1565350150, 1909926604); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_equal_wide_scalar() + { + uint2x2 a0 = uint2x2(1211464300, 1921862607, 508076684, 1249127920); + uint b0 = (746972502); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x2 a1 = uint2x2(1394594555, 1733655277, 1884008277, 1682018538); + uint b1 = (746862310); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x2 a2 = uint2x2(795585660, 927605411, 672785749, 1465584610); + uint b2 = (936027116); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x2 a3 = uint2x2(585324157, 969511077, 442746747, 1772925698); + uint b3 = (404448210); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint2x2 b0 = uint2x2(233855098, 924242519, 1402948791, 601381975); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (2120518068); + uint2x2 b1 = uint2x2(629187703, 1971977031, 47183124, 1061805787); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1009011238); + uint2x2 b2 = uint2x2(312511148, 1460673064, 737210539, 1737844479); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1892405453); + uint2x2 b3 = uint2x2(2133024000, 455818693, 2003197687, 1276241219); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_not_equal_wide_wide() + { + uint2x2 a0 = uint2x2(1660932106, 982847023, 97046264, 1739517447); + uint2x2 b0 = uint2x2(107139049, 75478496, 2055495054, 358586687); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x2 a1 = uint2x2(1253499180, 1830584069, 1841470429, 1397841646); + uint2x2 b1 = uint2x2(942338347, 111564990, 113811950, 948912488); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x2 a2 = uint2x2(1770890135, 1906548631, 169082967, 2099271786); + uint2x2 b2 = uint2x2(1080084121, 1400504872, 1032134499, 1061123400); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x2 a3 = uint2x2(1909317609, 46519139, 1433204003, 931492669); + uint2x2 b3 = uint2x2(221862069, 858950046, 989094643, 2023070999); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_not_equal_wide_scalar() + { + uint2x2 a0 = uint2x2(747758183, 1033001286, 1439973882, 2138928797); + uint b0 = (248693828); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x2 a1 = uint2x2(1197845089, 950170763, 238704450, 2105962247); + uint b1 = (1432672459); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x2 a2 = uint2x2(727205263, 276313906, 2126300423, 791998981); + uint b2 = (1640688041); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x2 a3 = uint2x2(2035077187, 1412347883, 1622176923, 768370497); + uint b3 = (1171827730); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint2x2 b0 = uint2x2(2037494727, 1989050616, 48833929, 1897435904); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (514354517); + uint2x2 b1 = uint2x2(1783749164, 364694471, 754315072, 124108032); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (1512967900); + uint2x2 b2 = uint2x2(1178825850, 1854793298, 50286949, 2100802631); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1640811853); + uint2x2 b3 = uint2x2(82110247, 472172806, 266984506, 2003668365); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_wide_wide() + { + uint2x2 a0 = uint2x2(1182186063, 415538999, 1667335818, 1566618442); + uint2x2 b0 = uint2x2(524633529, 1032195686, 760723389, 1505751409); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x2 a1 = uint2x2(1166180837, 639095188, 1080836365, 771119973); + uint2x2 b1 = uint2x2(431962172, 1287906509, 1560084663, 1450178202); + bool2x2 r1 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x2 a2 = uint2x2(928263233, 789225474, 665243110, 1003542034); + uint2x2 b2 = uint2x2(2066166337, 1107069023, 1640077524, 2103263105); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x2 a3 = uint2x2(1032480172, 1961336172, 923379558, 21210619); + uint2x2 b3 = uint2x2(684229139, 1234033624, 1278743281, 1953079347); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_wide_scalar() + { + uint2x2 a0 = uint2x2(608447185, 818840405, 869219329, 2080125385); + uint b0 = (1491216667); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x2 a1 = uint2x2(1214500548, 1667165786, 1615392341, 840091491); + uint b1 = (1361741203); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x2 a2 = uint2x2(469591900, 315321650, 930950514, 1100560246); + uint b2 = (1247103789); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x2 a3 = uint2x2(933855388, 1127696709, 1286331950, 380753337); + uint b3 = (908563901); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint2x2 b0 = uint2x2(282703327, 14370648, 1862117300, 1304793311); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (826073259); + uint2x2 b1 = uint2x2(988910157, 445132446, 1139670255, 111349251); + bool2x2 r1 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1102440676); + uint2x2 b2 = uint2x2(112183144, 1594415311, 1890019295, 2098715503); + bool2x2 r2 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (608933527); + uint2x2 b3 = uint2x2(183989010, 1596056507, 1027318999, 146281093); + bool2x2 r3 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_wide_wide() + { + uint2x2 a0 = uint2x2(592884447, 2133928932, 918957182, 1284069471); + uint2x2 b0 = uint2x2(138737040, 192863971, 1700841444, 1044631301); + bool2x2 r0 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x2 a1 = uint2x2(194584707, 739120780, 241654068, 1340158550); + uint2x2 b1 = uint2x2(1391589821, 730837695, 253553987, 2078872742); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x2 a2 = uint2x2(2099542537, 1182623667, 1399607274, 789301637); + uint2x2 b2 = uint2x2(910845808, 976047676, 202633078, 1223618940); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x2 a3 = uint2x2(180400925, 594688333, 1877031463, 1360073500); + uint2x2 b3 = uint2x2(641600530, 1830470354, 1570701388, 1104256103); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_wide_scalar() + { + uint2x2 a0 = uint2x2(1097138316, 211763648, 1883002501, 56406996); + uint b0 = (438688675); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x2 a1 = uint2x2(43662641, 1437755186, 1219010035, 2125058448); + uint b1 = (1923456111); + bool2x2 r1 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x2 a2 = uint2x2(304028799, 48044515, 711945018, 1035679270); + uint b2 = (893125636); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x2 a3 = uint2x2(577943770, 1016617211, 2063134811, 1577403353); + uint b3 = (572743717); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint2x2 b0 = uint2x2(599356784, 185671342, 1932327391, 2025591013); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1257191721); + uint2x2 b1 = uint2x2(1312388500, 1443698859, 779217735, 691047512); + bool2x2 r1 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (741776730); + uint2x2 b2 = uint2x2(732565983, 668302204, 1556466996, 858599525); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (1896917159); + uint2x2 b3 = uint2x2(701542098, 1052151621, 1023307544, 1435392907); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_equal_wide_wide() + { + uint2x2 a0 = uint2x2(1577248162, 2043073061, 1688380407, 176431985); + uint2x2 b0 = uint2x2(903445031, 2108974565, 210822256, 1281704747); + bool2x2 r0 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x2 a1 = uint2x2(223299035, 1502802140, 1691709825, 386789394); + uint2x2 b1 = uint2x2(453681718, 66138830, 1229799377, 1620922595); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x2 a2 = uint2x2(117182003, 1665770435, 1958490731, 420032601); + uint2x2 b2 = uint2x2(1715833766, 1366430432, 13102000, 46919981); + bool2x2 r2 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x2 a3 = uint2x2(1251092689, 2011681765, 749743684, 183784440); + uint2x2 b3 = uint2x2(486470891, 1709514236, 2145785285, 854254454); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_equal_wide_scalar() + { + uint2x2 a0 = uint2x2(1722165358, 1219858357, 860410743, 411099660); + uint b0 = (1688048545); + bool2x2 r0 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x2 a1 = uint2x2(348104022, 212084836, 58924407, 1459242706); + uint b1 = (1963256951); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x2 a2 = uint2x2(1745758438, 262559763, 690091301, 1806172431); + uint b2 = (532949158); + bool2x2 r2 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x2 a3 = uint2x2(2091514001, 1617221948, 2017733017, 804204255); + uint b3 = (1857173043); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint2x2 b0 = uint2x2(1181030049, 1787703989, 1729760948, 1816537388); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1359786460); + uint2x2 b1 = uint2x2(874999193, 1678863148, 1711365839, 762067160); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (11953554); + uint2x2 b2 = uint2x2(1131583906, 1175393186, 1293698493, 48893340); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (66196247); + uint2x2 b3 = uint2x2(1958607116, 1576473309, 861890786, 478252419); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_equal_wide_wide() + { + uint2x2 a0 = uint2x2(263000030, 744235661, 1893760267, 237248); + uint2x2 b0 = uint2x2(1395535146, 1178373944, 1237373760, 1364855321); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x2 a1 = uint2x2(1062370984, 1676977687, 816766880, 1089431546); + uint2x2 b1 = uint2x2(600811864, 362060472, 290870624, 1839067862); + bool2x2 r1 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x2 a2 = uint2x2(1394493730, 1176473380, 1193988637, 1703862455); + uint2x2 b2 = uint2x2(396958580, 1336888643, 1019684398, 1697684196); + bool2x2 r2 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x2 a3 = uint2x2(1806186947, 1253571980, 589397635, 1951842887); + uint2x2 b3 = uint2x2(1227300220, 2044269675, 1898323839, 874509380); + bool2x2 r3 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_equal_wide_scalar() + { + uint2x2 a0 = uint2x2(2112791350, 1043657935, 101764761, 1529909067); + uint b0 = (1470533736); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x2 a1 = uint2x2(556026890, 1186600258, 815093894, 609211196); + uint b1 = (281734132); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x2 a2 = uint2x2(1604309397, 244604867, 1419295004, 471843809); + uint b2 = (829548642); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x2 a3 = uint2x2(1819986195, 1646290021, 196833647, 1596738181); + uint b3 = (1460027917); + bool2x2 r3 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint2x2 b0 = uint2x2(1503244746, 861711266, 817773856, 925984572); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (571221723); + uint2x2 b1 = uint2x2(683686810, 118252990, 1653952090, 1240253990); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1947039008); + uint2x2 b2 = uint2x2(1869136019, 152012637, 1214546726, 917376832); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (303549425); + uint2x2 b3 = uint2x2(2111728811, 945321577, 173706579, 625318949); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_add_wide_wide() + { + uint2x2 a0 = uint2x2(2049228671, 1658660009, 491719392, 937013355); + uint2x2 b0 = uint2x2(2088751567, 645762023, 306868786, 4360271); + uint2x2 r0 = uint2x2(4137980238, 2304422032, 798588178, 941373626); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x2 a1 = uint2x2(81108663, 1063894558, 86954702, 843159721); + uint2x2 b1 = uint2x2(506047997, 2094559874, 1634712736, 1601474440); + uint2x2 r1 = uint2x2(587156660, 3158454432, 1721667438, 2444634161); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x2 a2 = uint2x2(698977704, 192867135, 1683407172, 137301303); + uint2x2 b2 = uint2x2(1586485231, 908746788, 1812370320, 1247342357); + uint2x2 r2 = uint2x2(2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x2 a3 = uint2x2(2103582820, 526139155, 447937230, 2127411006); + uint2x2 b3 = uint2x2(2043773873, 223363428, 175115707, 985928617); + uint2x2 r3 = uint2x2(4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_add_wide_scalar() + { + uint2x2 a0 = uint2x2(2038218457, 134923711, 875689667, 1338884463); + uint b0 = (2124409227); + uint2x2 r0 = uint2x2(4162627684, 2259332938, 3000098894, 3463293690); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x2 a1 = uint2x2(997710928, 1067888129, 70433301, 2003021861); + uint b1 = (340490871); + uint2x2 r1 = uint2x2(1338201799, 1408379000, 410924172, 2343512732); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x2 a2 = uint2x2(1635971971, 85446202, 1068152966, 1239387100); + uint b2 = (1160398286); + uint2x2 r2 = uint2x2(2796370257, 1245844488, 2228551252, 2399785386); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x2 a3 = uint2x2(1497676888, 1095438654, 756559204, 1818718931); + uint b3 = (1727477485); + uint2x2 r3 = uint2x2(3225154373, 2822916139, 2484036689, 3546196416); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint2x2 b0 = uint2x2(519908870, 851424292, 328314822, 135622204); + uint2x2 r0 = uint2x2(911000948, 1242516370, 719406900, 526714282); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (740923360); + uint2x2 b1 = uint2x2(655394201, 1451896269, 1781697072, 996031825); + uint2x2 r1 = uint2x2(1396317561, 2192819629, 2522620432, 1736955185); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1557774949); + uint2x2 b2 = uint2x2(779774940, 1111541302, 783046445, 1130163944); + uint2x2 r2 = uint2x2(2337549889, 2669316251, 2340821394, 2687938893); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (288279584); + uint2x2 b3 = uint2x2(1397683861, 1636583489, 673263339, 1469300874); + uint2x2 r3 = uint2x2(1685963445, 1924863073, 961542923, 1757580458); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_sub_wide_wide() + { + uint2x2 a0 = uint2x2(1353441118, 797269833, 659988112, 56022121); + uint2x2 b0 = uint2x2(1332656812, 1827794007, 972557431, 2078233689); + uint2x2 r0 = uint2x2(20784306, 3264443122, 3982397977, 2272755728); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x2 a1 = uint2x2(365847472, 2062899435, 1380988474, 799885138); + uint2x2 b1 = uint2x2(1508184327, 1372307701, 810327977, 936799885); + uint2x2 r1 = uint2x2(3152630441, 690591734, 570660497, 4158052549); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x2 a2 = uint2x2(1306058185, 579775276, 1239163824, 344591081); + uint2x2 b2 = uint2x2(71562303, 1418723328, 1971342989, 1226053395); + uint2x2 r2 = uint2x2(1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x2 a3 = uint2x2(86359575, 1049709943, 721529513, 1767221271); + uint2x2 b3 = uint2x2(136565478, 1979903295, 600719425, 837912956); + uint2x2 r3 = uint2x2(4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_sub_wide_scalar() + { + uint2x2 a0 = uint2x2(1176369558, 1934521195, 309452150, 1417634074); + uint b0 = (462232403); + uint2x2 r0 = uint2x2(714137155, 1472288792, 4142187043, 955401671); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x2 a1 = uint2x2(108910717, 1502312334, 1451794815, 281174200); + uint b1 = (1306356714); + uint2x2 r1 = uint2x2(3097521299, 195955620, 145438101, 3269784782); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x2 a2 = uint2x2(87530840, 2041593336, 557239990, 1119051448); + uint b2 = (1913724431); + uint2x2 r2 = uint2x2(2468773705, 127868905, 2938482855, 3500294313); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x2 a3 = uint2x2(1590376732, 816382635, 815920639, 1829033117); + uint b3 = (819090189); + uint2x2 r3 = uint2x2(771286543, 4292259742, 4291797746, 1009942928); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint2x2 b0 = uint2x2(2022393810, 1612688515, 496689713, 887037586); + uint2x2 r0 = uint2x2(3964107891, 78845890, 1194844692, 804496819); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (2097630964); + uint2x2 b1 = uint2x2(374934538, 939035482, 935242277, 1789300421); + uint2x2 r1 = uint2x2(1722696426, 1158595482, 1162388687, 308330543); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (264712893); + uint2x2 b2 = uint2x2(1231856067, 1818112748, 1428436109, 1258745460); + uint2x2 r2 = uint2x2(3327824122, 2741567441, 3131244080, 3300934729); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1077380396); + uint2x2 b3 = uint2x2(1330722719, 518111829, 967128529, 344666254); + uint2x2 r3 = uint2x2(4041624973, 559268567, 110251867, 732714142); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mul_wide_wide() + { + uint2x2 a0 = uint2x2(245827027, 208934650, 1019478917, 568231809); + uint2x2 b0 = uint2x2(759663997, 350129201, 477450108, 1635735015); + uint2x2 r0 = uint2x2(3662155527, 1402281434, 332447596, 2361989735); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x2 a1 = uint2x2(877289039, 1585782440, 2111178729, 1186019069); + uint2x2 b1 = uint2x2(388710278, 757722665, 1509388321, 1841703980); + uint2x2 r1 = uint2x2(2624048730, 1455036648, 2128344329, 3700879228); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x2 a2 = uint2x2(571481445, 1570087048, 629447153, 619383734); + uint2x2 b2 = uint2x2(1826369331, 1524322467, 1605207974, 428419155); + uint2x2 r2 = uint2x2(2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x2 a3 = uint2x2(2055121568, 700402816, 263414349, 187830569); + uint2x2 b3 = uint2x2(1460605791, 1968043860, 771161742, 2037340417); + uint2x2 r3 = uint2x2(990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mul_wide_scalar() + { + uint2x2 a0 = uint2x2(1762033447, 465343930, 1570757881, 1326409563); + uint b0 = (1476837906); + uint2x2 r0 = uint2x2(2981789374, 1326807828, 2156411778, 4018813542); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x2 a1 = uint2x2(1824319147, 72749215, 154616909, 975743632); + uint b1 = (1356578909); + uint2x2 r1 = uint2x2(4058582047, 130042307, 1244434425, 2313287248); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x2 a2 = uint2x2(573770299, 971327747, 1818877398, 1324050764); + uint b2 = (1958912969); + uint2x2 r2 = uint2x2(3595344211, 583613531, 2609540870, 377032876); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x2 a3 = uint2x2(660611671, 391009467, 1186856590, 890343818); + uint b3 = (1279757657); + uint2x2 r3 = uint2x2(4252425023, 1120105475, 4272141662, 1972017914); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint2x2 b0 = uint2x2(1764461774, 657072478, 1459784358, 1610646683); + uint2x2 r0 = uint2x2(3344568648, 4192918280, 1260585960, 1158730452); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1632058826); + uint2x2 b1 = uint2x2(868441654, 1408757883, 335917146, 2105124483); + uint2x2 r1 = uint2x2(4237636764, 2735607822, 712546564, 3489634910); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1178393968); + uint2x2 b2 = uint2x2(1963904348, 1409533767, 243286231, 1336308795); + uint2x2 r2 = uint2x2(1196573760, 592673296, 209320208, 3942500560); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (517963367); + uint2x2 b3 = uint2x2(1733623488, 459880225, 994616533, 1420531535); + uint2x2 r3 = uint2x2(3520397120, 3023465543, 652617651, 2505294537); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_div_wide_wide() + { + uint2x2 a0 = uint2x2(1590198532, 507812502, 126627032, 1058247011); + uint2x2 b0 = uint2x2(1434703236, 911965201, 390415521, 128746927); + uint2x2 r0 = uint2x2(1, 0, 0, 8); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x2 a1 = uint2x2(427387861, 290676154, 1829594484, 1127868739); + uint2x2 b1 = uint2x2(525835375, 816946613, 878264647, 146789678); + uint2x2 r1 = uint2x2(0, 0, 2, 7); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x2 a2 = uint2x2(499016351, 1341209632, 134906097, 785470242); + uint2x2 b2 = uint2x2(2089524057, 254213018, 1916850021, 1737806518); + uint2x2 r2 = uint2x2(0, 5, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x2 a3 = uint2x2(788249865, 1099825433, 1552968283, 1822367139); + uint2x2 b3 = uint2x2(1906634983, 437754923, 825037958, 902508708); + uint2x2 r3 = uint2x2(0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_div_wide_scalar() + { + uint2x2 a0 = uint2x2(560951562, 1218680769, 375341724, 1613542090); + uint b0 = (947861580); + uint2x2 r0 = uint2x2(0, 1, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x2 a1 = uint2x2(1919409166, 1349573078, 524526253, 341995568); + uint b1 = (1397425408); + uint2x2 r1 = uint2x2(1, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x2 a2 = uint2x2(495895326, 1676971657, 2131487088, 2105094094); + uint b2 = (1515313790); + uint2x2 r2 = uint2x2(0, 1, 1, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x2 a3 = uint2x2(1017891310, 1646044372, 1447236569, 107215658); + uint b3 = (542666029); + uint2x2 r3 = uint2x2(1, 3, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint2x2 b0 = uint2x2(187325733, 1594107378, 2016183849, 1589343709); + uint2x2 r0 = uint2x2(6, 0, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (388768753); + uint2x2 b1 = uint2x2(1417077283, 1773486938, 1154044032, 81831373); + uint2x2 r1 = uint2x2(0, 0, 0, 4); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1476877645); + uint2x2 b2 = uint2x2(653688843, 45756703, 631027637, 396671391); + uint2x2 r2 = uint2x2(2, 32, 2, 3); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (784365696); + uint2x2 b3 = uint2x2(1250594097, 1818363859, 1653451772, 270557729); + uint2x2 r3 = uint2x2(0, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mod_wide_wide() + { + uint2x2 a0 = uint2x2(146150818, 1846543305, 1071447756, 308965362); + uint2x2 b0 = uint2x2(983050390, 771341152, 942375212, 367361754); + uint2x2 r0 = uint2x2(146150818, 303861001, 129072544, 308965362); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x2 a1 = uint2x2(659881575, 1002365460, 861198439, 1510617532); + uint2x2 b1 = uint2x2(749500619, 750718852, 2095151755, 88438806); + uint2x2 r1 = uint2x2(659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x2 a2 = uint2x2(778525078, 1458458044, 101987897, 1249565173); + uint2x2 b2 = uint2x2(769227442, 647214624, 1026513788, 1544950956); + uint2x2 r2 = uint2x2(9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x2 a3 = uint2x2(938026607, 1692541775, 1518877124, 1806965510); + uint2x2 b3 = uint2x2(160166322, 1099108075, 1158422232, 1798905209); + uint2x2 r3 = uint2x2(137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mod_wide_scalar() + { + uint2x2 a0 = uint2x2(164800505, 1062177828, 1898749675, 1701653318); + uint b0 = (883951171); + uint2x2 r0 = uint2x2(164800505, 178226657, 130847333, 817702147); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x2 a1 = uint2x2(820393245, 128329633, 1464010899, 896587769); + uint b1 = (19002208); + uint2x2 r1 = uint2x2(3298301, 14316385, 840883, 3483993); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x2 a2 = uint2x2(405208598, 959236935, 712321026, 172564850); + uint b2 = (1982762194); + uint2x2 r2 = uint2x2(405208598, 959236935, 712321026, 172564850); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x2 a3 = uint2x2(1540068445, 1607489717, 165478511, 647846716); + uint b3 = (1085897743); + uint2x2 r3 = uint2x2(454170702, 521591974, 165478511, 647846716); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint2x2 b0 = uint2x2(740000543, 1556450291, 1104736385, 437976569); + uint2x2 r0 = uint2x2(242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1911837205); + uint2x2 b1 = uint2x2(1507212038, 1906405167, 247693265, 293460573); + uint2x2 r1 = uint2x2(404625167, 5432038, 177984350, 151073767); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1495295166); + uint2x2 b2 = uint2x2(873323603, 530681233, 1298102643, 2057984657); + uint2x2 r2 = uint2x2(621971563, 433932700, 197192523, 1495295166); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1000742091); + uint2x2 b3 = uint2x2(1461372131, 1859742342, 797184687, 821888842); + uint2x2 r3 = uint2x2(1000742091, 1000742091, 203557404, 178853249); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_plus() + { + uint2x2 a0 = uint2x2(1643476803, 907898539, 379615839, 1140483021); + uint2x2 r0 = uint2x2(1643476803, 907898539, 379615839, 1140483021); + TestUtils.AreEqual(+a0, r0); + + uint2x2 a1 = uint2x2(1735287433, 1472881565, 339091479, 401565897); + uint2x2 r1 = uint2x2(1735287433, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a1, r1); + + uint2x2 a2 = uint2x2(1287765427, 174532915, 1864850812, 1566098441); + uint2x2 r2 = uint2x2(1287765427, 174532915, 1864850812, 1566098441); + TestUtils.AreEqual(+a2, r2); + + uint2x2 a3 = uint2x2(1145639744, 2049663954, 1723005749, 409076474); + uint2x2 r3 = uint2x2(1145639744, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_neg() + { + uint2x2 a0 = uint2x2(1955022112, 662160019, 370300775, 2141283773); + uint2x2 r0 = uint2x2(2339945184, 3632807277, 3924666521, 2153683523); + TestUtils.AreEqual(-a0, r0); + + uint2x2 a1 = uint2x2(1004505619, 33894270, 505708349, 1115028238); + uint2x2 r1 = uint2x2(3290461677, 4261073026, 3789258947, 3179939058); + TestUtils.AreEqual(-a1, r1); + + uint2x2 a2 = uint2x2(1636274969, 1542206286, 213087293, 243937487); + uint2x2 r2 = uint2x2(2658692327, 2752761010, 4081880003, 4051029809); + TestUtils.AreEqual(-a2, r2); + + uint2x2 a3 = uint2x2(341522275, 574159094, 1687250035, 2057919693); + uint2x2 r3 = uint2x2(3953445021, 3720808202, 2607717261, 2237047603); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_prefix_inc() + { + uint2x2 a0 = uint2x2(864455342, 2035793213, 1275443862, 971919915); + uint2x2 r0 = uint2x2(864455343, 2035793214, 1275443863, 971919916); + TestUtils.AreEqual(++a0, r0); + + uint2x2 a1 = uint2x2(411610189, 395072276, 115573442, 913293639); + uint2x2 r1 = uint2x2(411610190, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a1, r1); + + uint2x2 a2 = uint2x2(432884105, 1385544935, 1835605516, 831396561); + uint2x2 r2 = uint2x2(432884106, 1385544936, 1835605517, 831396562); + TestUtils.AreEqual(++a2, r2); + + uint2x2 a3 = uint2x2(388229350, 1786514683, 993189311, 752093909); + uint2x2 r3 = uint2x2(388229351, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_postfix_inc() + { + uint2x2 a0 = uint2x2(1751003569, 2063707595, 1500486291, 969189211); + uint2x2 r0 = uint2x2(1751003569, 2063707595, 1500486291, 969189211); + TestUtils.AreEqual(a0++, r0); + + uint2x2 a1 = uint2x2(1007848192, 1643023524, 1190630527, 1396179607); + uint2x2 r1 = uint2x2(1007848192, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a1++, r1); + + uint2x2 a2 = uint2x2(708474528, 1524860667, 1408994706, 375284401); + uint2x2 r2 = uint2x2(708474528, 1524860667, 1408994706, 375284401); + TestUtils.AreEqual(a2++, r2); + + uint2x2 a3 = uint2x2(1580130369, 717006530, 506142468, 732199129); + uint2x2 r3 = uint2x2(1580130369, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint2x2_operator_prefix_dec() + { + uint2x2 a0 = uint2x2(200904609, 871077500, 968578728, 638967721); + uint2x2 r0 = uint2x2(200904608, 871077499, 968578727, 638967720); + TestUtils.AreEqual(--a0, r0); + + uint2x2 a1 = uint2x2(1995396216, 1782514098, 1589827826, 1434377580); + uint2x2 r1 = uint2x2(1995396215, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a1, r1); + + uint2x2 a2 = uint2x2(596759698, 1758478358, 1914114460, 71237375); + uint2x2 r2 = uint2x2(596759697, 1758478357, 1914114459, 71237374); + TestUtils.AreEqual(--a2, r2); + + uint2x2 a3 = uint2x2(389120307, 1310293956, 356565557, 18299409); + uint2x2 r3 = uint2x2(389120306, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_postfix_dec() + { + uint2x2 a0 = uint2x2(283970262, 1109329936, 1073216143, 649439137); + uint2x2 r0 = uint2x2(283970262, 1109329936, 1073216143, 649439137); + TestUtils.AreEqual(a0--, r0); + + uint2x2 a1 = uint2x2(1932646215, 484207852, 524156737, 691209285); + uint2x2 r1 = uint2x2(1932646215, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a1--, r1); + + uint2x2 a2 = uint2x2(2017728859, 377162390, 526366486, 1504625034); + uint2x2 r2 = uint2x2(2017728859, 377162390, 526366486, 1504625034); + TestUtils.AreEqual(a2--, r2); + + uint2x2 a3 = uint2x2(590919177, 1867810045, 2095777993, 670715645); + uint2x2 r3 = uint2x2(590919177, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_and_wide_wide() + { + uint2x2 a0 = uint2x2(779935043, 1097962163, 1939593304, 800599247); + uint2x2 b0 = uint2x2(307705143, 1710882162, 866836769, 532490608); + uint2x2 r0 = uint2x2(39064835, 1097961522, 864731136, 263727168); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x2 a1 = uint2x2(952140918, 782792558, 1608557706, 396446406); + uint2x2 b1 = uint2x2(679371720, 1794035877, 1439832202, 519529812); + uint2x2 r1 = uint2x2(675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x2 a2 = uint2x2(2039894114, 1286974642, 442394124, 1759739564); + uint2x2 b2 = uint2x2(23633139, 1209152681, 646737179, 1255867027); + uint2x2 r2 = uint2x2(16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x2 a3 = uint2x2(233435438, 665207770, 1942050241, 1022352952); + uint2x2 b3 = uint2x2(1900854122, 413173763, 1409138251, 2087190272); + uint2x2 r3 = uint2x2(21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_and_wide_scalar() + { + uint2x2 a0 = uint2x2(443615469, 490057985, 2042441263, 1524760558); + uint b0 = (93423598); + uint2x2 r0 = uint2x2(1114348, 85033216, 26281518, 8488942); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x2 a1 = uint2x2(1405175110, 1941875181, 1236735839, 1365509729); + uint b1 = (510212004); + uint2x2 r1 = uint2x2(306251012, 304619940, 136386308, 274728480); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x2 a2 = uint2x2(428270198, 650270920, 1249238550, 814629680); + uint b2 = (607982857); + uint2x2 r2 = uint2x2(262144, 603983880, 3478528, 537657600); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x2 a3 = uint2x2(1862276471, 861733033, 1408932942, 957693145); + uint b3 = (143502472); + uint2x2 r3 = uint2x2(134218752, 852104, 8948744, 134556808); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint2x2 b0 = uint2x2(420346723, 562416448, 1393127318, 1560699552); + uint2x2 r0 = uint2x2(547170, 18752, 1074284806, 1140867104); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (851218057); + uint2x2 b1 = uint2x2(703880958, 1159378889, 2031211279, 1089518981); + uint2x2 r1 = uint2x2(548671112, 1607305, 806388233, 11570305); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (270607307); + uint2x2 b2 = uint2x2(1349288930, 520199596, 1763483957, 1248975349); + uint2x2 r2 = uint2x2(270533570, 268501384, 8449, 2163137); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (236938635); + uint2x2 b3 = uint2x2(185023291, 1085233038, 1845693112, 946052961); + uint2x2 r3 = uint2x2(168239371, 1000842, 235077768, 134415617); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_or_wide_wide() + { + uint2x2 a0 = uint2x2(1731159103, 659068416, 382702471, 1821032196); + uint2x2 b0 = uint2x2(1583847161, 692672727, 1161585489, 1756207130); + uint2x2 r0 = uint2x2(2138044159, 793370327, 1476391895, 1823457054); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x2 a1 = uint2x2(1565773438, 1004000514, 948501377, 600951835); + uint2x2 b1 = uint2x2(1321374429, 1287357212, 2075767170, 1273513430); + uint2x2 r1 = uint2x2(1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x2 a2 = uint2x2(669346222, 396691477, 2108560248, 2117522137); + uint2x2 b2 = uint2x2(1610830169, 1316929125, 511625048, 573925879); + uint2x2 r2 = uint2x2(1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x2 a3 = uint2x2(330307355, 818676817, 1774459567, 1117506257); + uint2x2 b3 = uint2x2(1502255628, 1841676448, 1682928938, 1115131952); + uint2x2 r3 = uint2x2(1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_or_wide_scalar() + { + uint2x2 a0 = uint2x2(961259683, 471103264, 1733389229, 1591585258); + uint b0 = (1666102508); + uint2x2 r0 = uint2x2(2068823279, 2136930284, 1734344685, 2145369582); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x2 a1 = uint2x2(386953869, 1048929715, 1814263250, 860336789); + uint b1 = (1148351449); + uint2x2 r1 = uint2x2(1467118557, 2130147323, 1819506651, 2004349917); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x2 a2 = uint2x2(1637162093, 774029856, 879300408, 1179087439); + uint b2 = (1227888278); + uint2x2 r2 = uint2x2(1773477631, 1865602742, 2105089982, 1333229279); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x2 a3 = uint2x2(797240690, 46921989, 1980838747, 284225881); + uint b3 = (1977614655); + uint2x2 r3 = uint2x2(2145709439, 2011953471, 2012296063, 1978724735); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint2x2 b0 = uint2x2(1212928242, 1614462616, 936937728, 764766995); + uint2x2 r0 = uint2x2(1213978111, 1752940445, 2145094925, 1842867999); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (306352095); + uint2x2 b1 = uint2x2(574719481, 1283571271, 2109131012, 979469710); + uint2x2 r1 = uint2x2(843288575, 1589886943, 2146881503, 979603423); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1348323481); + uint2x2 b2 = uint2x2(1407542578, 697517649, 1059093741, 627815046); + uint2x2 r2 = uint2x2(1409150395, 2044710617, 2138963197, 1971321503); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (418822515); + uint2x2 b3 = uint2x2(83214352, 424663473, 447949225, 527022375); + uint2x2 r3 = uint2x2(486013299, 436206067, 452442619, 536852855); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_xor_wide_wide() + { + uint2x2 a0 = uint2x2(1556324760, 207002929, 1843444873, 1632079131); + uint2x2 b0 = uint2x2(1054997548, 1523759632, 251164872, 110472397); + uint2x2 r0 = uint2x2(1646419380, 1451501345, 1662567489, 1741824470); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x2 a1 = uint2x2(1460334334, 1607815585, 220623650, 38668553); + uint2x2 b1 = uint2x2(384031112, 1109163205, 535118981, 179106262); + uint2x2 r1 = uint2x2(1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x2 a2 = uint2x2(47193340, 643663548, 1371932564, 94957188); + uint2x2 b2 = uint2x2(1523031711, 1713313372, 1294118730, 520360641); + uint2x2 r2 = uint2x2(1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x2 a3 = uint2x2(700973621, 370621508, 2087573076, 351476570); + uint2x2 b3 = uint2x2(1040688781, 1020757245, 1143954843, 1281933464); + uint2x2 r3 = uint2x2(399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_xor_wide_scalar() + { + uint2x2 a0 = uint2x2(2124666952, 177397845, 574879617, 1937385541); + uint b0 = (493665894); + uint2x2 r0 = uint2x2(1674536494, 402546227, 1060063719, 1846973987); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x2 a1 = uint2x2(1136545648, 535061373, 289301586, 1305234431); + uint b1 = (213863690); + uint2x2 r1 = uint2x2(1325466234, 324742775, 495003992, 1098057461); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x2 a2 = uint2x2(353786540, 1267729267, 125659640, 1315625690); + uint b2 = (1308626970); + uint2x2 r2 = uint2x2(1528187574, 93328233, 1232959970, 6998720); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x2 a3 = uint2x2(1730088797, 375757978, 491079274, 191750702); + uint b3 = (116862046); + uint2x2 r3 = uint2x2(1642603267, 278048964, 464677428, 228249200); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint2x2 b0 = uint2x2(1077599928, 884741329, 212164516, 1585020328); + uint2x2 r0 = uint2x2(217506340, 2020616269, 1080648504, 313868596); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (152985454); + uint2x2 b1 = uint2x2(1775851275, 1416249064, 1309317737, 1773918217); + uint2x2 r1 = uint2x2(1623656549, 1567908230, 1192543495, 1621460839); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1509843030); + uint2x2 b2 = uint2x2(1206045972, 1154916424, 1947871003, 1774252400); + uint2x2 r2 = uint2x2(505195842, 489209886, 769935181, 809406758); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1946113778); + uint2x2 b3 = uint2x2(1079717492, 290620937, 1382343363, 939045099); + uint2x2 r3 = uint2x2(866416774, 1655558395, 563852337, 1141368345); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_left_shift() + { + uint2x2 a0 = uint2x2(197771193, 622182602, 1283988958, 1327917304); + int b0 = (1321149625); + uint2x2 r0 = uint2x2(1912602624, 2483027968, 3154116608, 4026531840); + TestUtils.AreEqual(a0 << b0, r0); + + uint2x2 a1 = uint2x2(473415985, 870301196, 2058433484, 1200694230); + int b1 = (432425717); + uint2x2 r1 = uint2x2(639631360, 3246391296, 2038431744, 2059403264); + TestUtils.AreEqual(a1 << b1, r1); + + uint2x2 a2 = uint2x2(1531607705, 1008296534, 1447702302, 1079614371); + int b2 = (1360008038); + uint2x2 r2 = uint2x2(3533612608, 106468736, 2458634112, 375843008); + TestUtils.AreEqual(a2 << b2, r2); + + uint2x2 a3 = uint2x2(35667343, 2045594989, 2077023268, 592678686); + int b3 = (1664454606); + uint2x2 r3 = uint2x2(258195456, 1398489088, 923336704, 3821502464); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_right_shift() + { + uint2x2 a0 = uint2x2(548167301, 1161338299, 1617625829, 1860731847); + int b0 = (1266801540); + uint2x2 r0 = uint2x2(34260456, 72583643, 101101614, 116295740); + TestUtils.AreEqual(a0 >> b0, r0); + + uint2x2 a1 = uint2x2(713958715, 770466193, 1265099998, 572763124); + int b1 = (196552656); + uint2x2 r1 = uint2x2(10894, 11756, 19303, 8739); + TestUtils.AreEqual(a1 >> b1, r1); + + uint2x2 a2 = uint2x2(506619530, 2031319045, 701927980, 917785020); + int b2 = (426807581); + uint2x2 r2 = uint2x2(0, 3, 1, 1); + TestUtils.AreEqual(a2 >> b2, r2); + + uint2x2 a3 = uint2x2(569504877, 1102123711, 334005460, 1624751550); + int b3 = (185593382); + uint2x2 r3 = uint2x2(8898513, 17220682, 5218835, 25386742); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_not() + { + uint2x2 a0 = uint2x2(1403358969, 831360921, 2088190243, 976721016); + uint2x2 r0 = uint2x2(2891608326, 3463606374, 2206777052, 3318246279); + TestUtils.AreEqual(~a0, r0); + + uint2x2 a1 = uint2x2(878283189, 1935567517, 1420884856, 472965491); + uint2x2 r1 = uint2x2(3416684106, 2359399778, 2874082439, 3822001804); + TestUtils.AreEqual(~a1, r1); + + uint2x2 a2 = uint2x2(771711426, 2061524024, 753208488, 2097179283); + uint2x2 r2 = uint2x2(3523255869, 2233443271, 3541758807, 2197788012); + TestUtils.AreEqual(~a2, r2); + + uint2x2 a3 = uint2x2(1303022493, 1289372466, 1635981125, 1951018596); + uint2x2 r3 = uint2x2(2991944802, 3005594829, 2658986170, 2343948699); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x2.gen.cs.meta new file mode 100644 index 0000000..998b402 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 103b5058df216b7488fb5bf96d18666e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x3.gen.cs new file mode 100644 index 0000000..8e3912e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x3.gen.cs @@ -0,0 +1,1227 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint2x3 + { + [TestCompiler] + public static void uint2x3_zero() + { + TestUtils.AreEqual(uint2x3.zero.c0.x, 0u); + TestUtils.AreEqual(uint2x3.zero.c0.y, 0u); + TestUtils.AreEqual(uint2x3.zero.c1.x, 0u); + TestUtils.AreEqual(uint2x3.zero.c1.y, 0u); + TestUtils.AreEqual(uint2x3.zero.c2.x, 0u); + TestUtils.AreEqual(uint2x3.zero.c2.y, 0u); + } + + [TestCompiler] + public static void uint2x3_operator_equal_wide_wide() + { + uint2x3 a0 = uint2x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228); + uint2x3 b0 = uint2x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x3 a1 = uint2x3(1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + uint2x3 b1 = uint2x3(921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x3 a2 = uint2x3(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + uint2x3 b2 = uint2x3(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x3 a3 = uint2x3(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint2x3 b3 = uint2x3(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_equal_wide_scalar() + { + uint2x3 a0 = uint2x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310); + uint b0 = (746972502); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x3 a1 = uint2x3(1733655277, 1682018538, 795585660, 936027116, 927605411, 672785749); + uint b1 = (1884008277); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x3 a2 = uint2x3(1465584610, 404448210, 969511077, 442746747, 1772925698, 1884034177); + uint b2 = (585324157); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x3 a3 = uint2x3(451512860, 1370577708, 597010220, 1249636005, 211986678, 1305479811); + uint b3 = (425476075); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint2x3 b0 = uint2x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1971977031); + uint2x3 b1 = uint2x3(47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1737844479); + uint2x3 b2 = uint2x3(1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (559824292); + uint2x3 b3 = uint2x3(1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_not_equal_wide_wide() + { + uint2x3 a0 = uint2x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069); + uint2x3 b0 = uint2x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x3 a1 = uint2x3(1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + uint2x3 b1 = uint2x3(113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x3 a2 = uint2x3(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + uint2x3 b2 = uint2x3(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x3 a3 = uint2x3(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint2x3 b3 = uint2x3(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_not_equal_wide_scalar() + { + uint2x3 a0 = uint2x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459); + uint b0 = (248693828); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x3 a1 = uint2x3(950170763, 2105962247, 727205263, 1640688041, 276313906, 2126300423); + uint b1 = (238704450); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x3 a2 = uint2x3(791998981, 1171827730, 1412347883, 1622176923, 768370497, 1072798259); + uint b2 = (2035077187); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x3 a3 = uint2x3(1808712713, 1582645163, 1876273820, 90244766, 30493685, 904014575); + uint b3 = (1497830076); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint2x3 b0 = uint2x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (364694471); + uint2x3 b1 = uint2x3(754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (2100802631); + uint2x3 b2 = uint2x3(1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1041416160); + uint2x3 b3 = uint2x3(356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_wide_wide() + { + uint2x3 a0 = uint2x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188); + uint2x3 b0 = uint2x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509); + bool2x3 r0 = bool2x3(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x3 a1 = uint2x3(1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + uint2x3 b1 = uint2x3(1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x3 a2 = uint2x3(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + uint2x3 b2 = uint2x3(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool2x3 r2 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x3 a3 = uint2x3(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint2x3 b3 = uint2x3(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool2x3 r3 = bool2x3(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_wide_scalar() + { + uint2x3 a0 = uint2x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203); + uint b0 = (1491216667); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x3 a1 = uint2x3(1667165786, 840091491, 469591900, 1247103789, 315321650, 930950514); + uint b1 = (1615392341); + bool2x3 r1 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x3 a2 = uint2x3(1100560246, 908563901, 1127696709, 1286331950, 380753337, 971148054); + uint b2 = (933855388); + bool2x3 r2 = bool2x3(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x3 a3 = uint2x3(1827886929, 1579735991, 689044913, 1960894027, 371987110, 867559111); + uint b3 = (1056649851); + bool2x3 r3 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint2x3 b0 = uint2x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (445132446); + uint2x3 b1 = uint2x3(1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (2098715503); + uint2x3 b2 = uint2x3(608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (874278078); + uint2x3 b3 = uint2x3(1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911); + bool2x3 r3 = bool2x3(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_wide_wide() + { + uint2x3 a0 = uint2x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780); + uint2x3 b0 = uint2x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695); + bool2x3 r0 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x3 a1 = uint2x3(241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + uint2x3 b1 = uint2x3(253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x3 a2 = uint2x3(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + uint2x3 b2 = uint2x3(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool2x3 r2 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x3 a3 = uint2x3(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint2x3 b3 = uint2x3(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_wide_scalar() + { + uint2x3 a0 = uint2x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111); + uint b0 = (438688675); + bool2x3 r0 = bool2x3(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x3 a1 = uint2x3(1437755186, 2125058448, 304028799, 893125636, 48044515, 711945018); + uint b1 = (1219010035); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x3 a2 = uint2x3(1035679270, 572743717, 1016617211, 2063134811, 1577403353, 64009107); + uint b2 = (577943770); + bool2x3 r2 = bool2x3(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x3 a3 = uint2x3(1462961460, 3715845, 689362811, 263973424, 1045140419, 1058332184); + uint b3 = (1143565920); + bool2x3 r3 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint2x3 b0 = uint2x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1443698859); + uint2x3 b1 = uint2x3(779217735, 691047512, 741776730, 732565983, 668302204, 1556466996); + bool2x3 r1 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (858599525); + uint2x3 b2 = uint2x3(1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345); + bool2x3 r2 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (299897686); + uint2x3 b3 = uint2x3(632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_equal_wide_wide() + { + uint2x3 a0 = uint2x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140); + uint2x3 b0 = uint2x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830); + bool2x3 r0 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x3 a1 = uint2x3(1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + uint2x3 b1 = uint2x3(1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool2x3 r1 = bool2x3(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x3 a2 = uint2x3(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + uint2x3 b2 = uint2x3(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool2x3 r2 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x3 a3 = uint2x3(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint2x3 b3 = uint2x3(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_equal_wide_scalar() + { + uint2x3 a0 = uint2x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951); + uint b0 = (1688048545); + bool2x3 r0 = bool2x3(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x3 a1 = uint2x3(212084836, 1459242706, 1745758438, 532949158, 262559763, 690091301); + uint b1 = (58924407); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x3 a2 = uint2x3(1806172431, 1857173043, 1617221948, 2017733017, 804204255, 981729559); + uint b2 = (2091514001); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x3 a3 = uint2x3(2032949254, 2079225209, 26179915, 238796519, 1917813750, 1258115260); + uint b3 = (910922522); + bool2x3 r3 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint2x3 b0 = uint2x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1678863148); + uint2x3 b1 = uint2x3(1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493); + bool2x3 r1 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (48893340); + uint2x3 b2 = uint2x3(66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (117849810); + uint2x3 b3 = uint2x3(1348693584, 105489302, 259034238, 530713566, 601413850, 830430286); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_equal_wide_wide() + { + uint2x3 a0 = uint2x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687); + uint2x3 b0 = uint2x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472); + bool2x3 r0 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x3 a1 = uint2x3(816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + uint2x3 b1 = uint2x3(290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x3 a2 = uint2x3(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + uint2x3 b2 = uint2x3(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool2x3 r2 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x3 a3 = uint2x3(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint2x3 b3 = uint2x3(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool2x3 r3 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_equal_wide_scalar() + { + uint2x3 a0 = uint2x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132); + uint b0 = (1470533736); + bool2x3 r0 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x3 a1 = uint2x3(1186600258, 609211196, 1604309397, 829548642, 244604867, 1419295004); + uint b1 = (815093894); + bool2x3 r1 = bool2x3(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x3 a2 = uint2x3(471843809, 1460027917, 1646290021, 196833647, 1596738181, 1905036391); + uint b2 = (1819986195); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x3 a3 = uint2x3(1771391775, 370941146, 440219668, 1607345862, 1449142607, 1223010129); + uint b3 = (1584946560); + bool2x3 r3 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint2x3 b0 = uint2x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (118252990); + uint2x3 b1 = uint2x3(1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (917376832); + uint2x3 b2 = uint2x3(303549425, 2111728811, 945321577, 173706579, 625318949, 519443238); + bool2x3 r2 = bool2x3(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (1583588379); + uint2x3 b3 = uint2x3(1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_add_wide_wide() + { + uint2x3 a0 = uint2x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558); + uint2x3 b0 = uint2x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874); + uint2x3 r0 = uint2x3(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x3 a1 = uint2x3(86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + uint2x3 b1 = uint2x3(1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + uint2x3 r1 = uint2x3(1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x3 a2 = uint2x3(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + uint2x3 b2 = uint2x3(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + uint2x3 r2 = uint2x3(4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x3 a3 = uint2x3(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint2x3 b3 = uint2x3(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint2x3 r3 = uint2x3(1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_add_wide_scalar() + { + uint2x3 a0 = uint2x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871); + uint b0 = (2124409227); + uint2x3 r0 = uint2x3(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x3 a1 = uint2x3(1067888129, 2003021861, 1635971971, 1160398286, 85446202, 1068152966); + uint b1 = (70433301); + uint2x3 r1 = uint2x3(1138321430, 2073455162, 1706405272, 1230831587, 155879503, 1138586267); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x3 a2 = uint2x3(1239387100, 1727477485, 1095438654, 756559204, 1818718931, 658923552); + uint b2 = (1497676888); + uint2x3 r2 = uint2x3(2737063988, 3225154373, 2593115542, 2254236092, 3316395819, 2156600440); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x3 a3 = uint2x3(1610518921, 692843300, 1068593469, 1704776233, 577782260, 736972565); + uint b3 = (1585755398); + uint2x3 r3 = uint2x3(3196274319, 2278598698, 2654348867, 3290531631, 2163537658, 2322727963); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint2x3 b0 = uint2x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201); + uint2x3 r0 = uint2x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (1451896269); + uint2x3 b1 = uint2x3(1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445); + uint2x3 r1 = uint2x3(3233593341, 2447928094, 3009671218, 2231671209, 2563437571, 2234942714); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1130163944); + uint2x3 b2 = uint2x3(288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965); + uint2x3 r2 = uint2x3(1418443528, 2527847805, 2766747433, 1803427283, 2599464818, 1145019909); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1116636999); + uint2x3 b3 = uint2x3(1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835); + uint2x3 r3 = uint2x3(2605500299, 2717627885, 1307288300, 2424096767, 2036722838, 3198866834); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_sub_wide_wide() + { + uint2x3 a0 = uint2x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435); + uint2x3 b0 = uint2x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701); + uint2x3 r0 = uint2x3(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x3 a1 = uint2x3(1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + uint2x3 b1 = uint2x3(810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + uint2x3 r1 = uint2x3(570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x3 a2 = uint2x3(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + uint2x3 b2 = uint2x3(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + uint2x3 r2 = uint2x3(4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x3 a3 = uint2x3(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint2x3 b3 = uint2x3(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint2x3 r3 = uint2x3(3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_sub_wide_scalar() + { + uint2x3 a0 = uint2x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714); + uint b0 = (462232403); + uint2x3 r0 = uint2x3(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x3 a1 = uint2x3(1502312334, 281174200, 87530840, 1913724431, 2041593336, 557239990); + uint b1 = (1451794815); + uint2x3 r1 = uint2x3(50517519, 3124346681, 2930703321, 461929616, 589798521, 3400412471); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x3 a2 = uint2x3(1119051448, 819090189, 816382635, 815920639, 1829033117, 1792801932); + uint b2 = (1590376732); + uint2x3 r2 = uint2x3(3823642012, 3523680753, 3520973199, 3520511203, 238656385, 202425200); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x3 a3 = uint2x3(1113440549, 1277257189, 2092779398, 642236742, 1605250794, 819644478); + uint b3 = (1418937976); + uint2x3 r3 = uint2x3(3989469869, 4153286509, 673841422, 3518266062, 186312818, 3695673798); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint2x3 b0 = uint2x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538); + uint2x3 r0 = uint2x3(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (939035482); + uint2x3 b1 = uint2x3(935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109); + uint2x3 r1 = uint2x3(3793205, 3444702357, 674322589, 4002146711, 3415890030, 3805566669); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1258745460); + uint2x3 b2 = uint2x3(1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918); + uint2x3 r2 = uint2x3(181365064, 4222990037, 740633631, 291616931, 914079206, 176477542); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (907866696); + uint2x3 b3 = uint2x3(1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777); + uint2x3 r3 = uint2x3(3385948869, 447526128, 4240679494, 350753235, 3501617283, 3222735215); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mul_wide_wide() + { + uint2x3 a0 = uint2x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440); + uint2x3 b0 = uint2x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665); + uint2x3 r0 = uint2x3(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x3 a1 = uint2x3(2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + uint2x3 b1 = uint2x3(1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + uint2x3 r1 = uint2x3(2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x3 a2 = uint2x3(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + uint2x3 b2 = uint2x3(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + uint2x3 r2 = uint2x3(990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x3 a3 = uint2x3(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint2x3 b3 = uint2x3(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint2x3 r3 = uint2x3(1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mul_wide_scalar() + { + uint2x3 a0 = uint2x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909); + uint b0 = (1476837906); + uint2x3 r0 = uint2x3(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x3 a1 = uint2x3(72749215, 975743632, 573770299, 1958912969, 971327747, 1818877398); + uint b1 = (154616909); + uint2x3 r1 = uint2x3(1400257491, 7966032, 499040191, 322676597, 469811687, 3921580382); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x3 a2 = uint2x3(1324050764, 1279757657, 391009467, 1186856590, 890343818, 800117742); + uint b2 = (660611671); + uint2x3 r2 = uint2x3(645718228, 4252425023, 2516558221, 1570790978, 4161587686, 1820172770); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x3 a3 = uint2x3(606927173, 1688964615, 1439447294, 387721300, 1192501703, 1613845584); + uint b3 = (1338014500); + uint2x3 r3 = uint2x3(4040635572, 1134384636, 1352273336, 4065724368, 1766808828, 645024576); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint2x3 b0 = uint2x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654); + uint2x3 r0 = uint2x3(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1408757883); + uint2x3 b1 = uint2x3(335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231); + uint2x3 r1 = uint2x3(1223039806, 1995624689, 3320276176, 375843636, 858017565, 2027534157); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1336308795); + uint2x3 b2 = uint2x3(517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700); + uint2x3 r2 = uint2x3(580046269, 3297097280, 3969951899, 831291671, 3260394293, 3040627372); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (677771573); + uint2x3 b3 = uint2x3(2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236); + uint2x3 r3 = uint2x3(4169123457, 1435043573, 698030233, 9173379, 3470328490, 113055164); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_div_wide_wide() + { + uint2x3 a0 = uint2x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154); + uint2x3 b0 = uint2x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613); + uint2x3 r0 = uint2x3(1, 0, 0, 8, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x3 a1 = uint2x3(1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + uint2x3 b1 = uint2x3(878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + uint2x3 r1 = uint2x3(2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x3 a2 = uint2x3(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + uint2x3 b2 = uint2x3(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + uint2x3 r2 = uint2x3(0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x3 a3 = uint2x3(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint2x3 b3 = uint2x3(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint2x3 r3 = uint2x3(0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_div_wide_scalar() + { + uint2x3 a0 = uint2x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408); + uint b0 = (947861580); + uint2x3 r0 = uint2x3(0, 1, 0, 1, 2, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x3 a1 = uint2x3(1349573078, 341995568, 495895326, 1515313790, 1676971657, 2131487088); + uint b1 = (524526253); + uint2x3 r1 = uint2x3(2, 0, 0, 2, 3, 4); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x3 a2 = uint2x3(2105094094, 542666029, 1646044372, 1447236569, 107215658, 19616726); + uint b2 = (1017891310); + uint2x3 r2 = uint2x3(2, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x3 a3 = uint2x3(896899915, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864); + uint b3 = (707389627); + uint2x3 r3 = uint2x3(1, 1, 2, 2, 2, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint2x3 b0 = uint2x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283); + uint2x3 r0 = uint2x3(6, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1773486938); + uint2x3 b1 = uint2x3(1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637); + uint2x3 r1 = uint2x3(1, 21, 1, 2, 38, 2); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (396671391); + uint2x3 b2 = uint2x3(784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453); + uint2x3 r2 = uint2x3(0, 0, 0, 0, 1, 8); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (1796936382); + uint2x3 b3 = uint2x3(1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083); + uint2x3 r3 = uint2x3(1, 1, 0, 2, 1, 5); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mod_wide_wide() + { + uint2x3 a0 = uint2x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460); + uint2x3 b0 = uint2x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852); + uint2x3 r0 = uint2x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x3 a1 = uint2x3(861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + uint2x3 b1 = uint2x3(2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + uint2x3 r1 = uint2x3(861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x3 a2 = uint2x3(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + uint2x3 b2 = uint2x3(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + uint2x3 r2 = uint2x3(137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x3 a3 = uint2x3(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint2x3 b3 = uint2x3(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint2x3 r3 = uint2x3(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mod_wide_scalar() + { + uint2x3 a0 = uint2x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208); + uint b0 = (883951171); + uint2x3 r0 = uint2x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x3 a1 = uint2x3(128329633, 896587769, 405208598, 1982762194, 959236935, 712321026); + uint b1 = (1464010899); + uint2x3 r1 = uint2x3(128329633, 896587769, 405208598, 518751295, 959236935, 712321026); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x3 a2 = uint2x3(172564850, 1085897743, 1607489717, 165478511, 647846716, 915707999); + uint b2 = (1540068445); + uint2x3 r2 = uint2x3(172564850, 1085897743, 67421272, 165478511, 647846716, 915707999); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x3 a3 = uint2x3(1602830401, 1084934806, 488509689, 2087820912, 377501313, 1778384846); + uint b3 = (928191283); + uint2x3 r3 = uint2x3(674639118, 156743523, 488509689, 231438346, 377501313, 850193563); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint2x3 b0 = uint2x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038); + uint2x3 r0 = uint2x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1906405167); + uint2x3 b1 = uint2x3(247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643); + uint2x3 r1 = uint2x3(172552312, 145641729, 411110001, 159757961, 314361468, 608302524); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (2057984657); + uint2x3 b2 = uint2x3(1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997); + uint2x3 r2 = uint2x3(56500475, 596612526, 198242315, 463615283, 414206973, 974791660); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (840114986); + uint2x3 b3 = uint2x3(1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061); + uint2x3 r3 = uint2x3(840114986, 224955022, 840114986, 217454, 840114986, 17224681); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_plus() + { + uint2x3 a0 = uint2x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + uint2x3 r0 = uint2x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + TestUtils.AreEqual(+a0, r0); + + uint2x3 a1 = uint2x3(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + uint2x3 r1 = uint2x3(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + TestUtils.AreEqual(+a1, r1); + + uint2x3 a2 = uint2x3(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + uint2x3 r2 = uint2x3(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + TestUtils.AreEqual(+a2, r2); + + uint2x3 a3 = uint2x3(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + uint2x3 r3 = uint2x3(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_neg() + { + uint2x3 a0 = uint2x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593); + uint2x3 r0 = uint2x3(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703); + TestUtils.AreEqual(-a0, r0); + + uint2x3 a1 = uint2x3(33894270, 1115028238, 1636274969, 694995093, 1542206286, 213087293); + uint2x3 r1 = uint2x3(4261073026, 3179939058, 2658692327, 3599972203, 2752761010, 4081880003); + TestUtils.AreEqual(-a1, r1); + + uint2x3 a2 = uint2x3(243937487, 841085242, 574159094, 1687250035, 2057919693, 1175014732); + uint2x3 r2 = uint2x3(4051029809, 3453882054, 3720808202, 2607717261, 2237047603, 3119952564); + TestUtils.AreEqual(-a2, r2); + + uint2x3 a3 = uint2x3(1259809073, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454); + uint2x3 r3 = uint2x3(3035158223, 3104397376, 2247011524, 2174237432, 2854192368, 2809370842); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_prefix_inc() + { + uint2x3 a0 = uint2x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725); + uint2x3 r0 = uint2x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726); + TestUtils.AreEqual(++a0, r0); + + uint2x3 a1 = uint2x3(395072276, 913293639, 432884105, 1208161871, 1385544935, 1835605516); + uint2x3 r1 = uint2x3(395072277, 913293640, 432884106, 1208161872, 1385544936, 1835605517); + TestUtils.AreEqual(++a1, r1); + + uint2x3 a2 = uint2x3(831396561, 696475402, 1786514683, 993189311, 752093909, 1622410417); + uint2x3 r2 = uint2x3(831396562, 696475403, 1786514684, 993189312, 752093910, 1622410418); + TestUtils.AreEqual(++a2, r2); + + uint2x3 a3 = uint2x3(1398865015, 1705625817, 609525897, 172599489, 504806865, 519296647); + uint2x3 r3 = uint2x3(1398865016, 1705625818, 609525898, 172599490, 504806866, 519296648); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_postfix_inc() + { + uint2x3 a0 = uint2x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + uint2x3 r0 = uint2x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + TestUtils.AreEqual(a0++, r0); + + uint2x3 a1 = uint2x3(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + uint2x3 r1 = uint2x3(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + TestUtils.AreEqual(a1++, r1); + + uint2x3 a2 = uint2x3(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + uint2x3 r2 = uint2x3(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + TestUtils.AreEqual(a2++, r2); + + uint2x3 a3 = uint2x3(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + uint2x3 r3 = uint2x3(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint2x3_operator_prefix_dec() + { + uint2x3 a0 = uint2x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037); + uint2x3 r0 = uint2x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036); + TestUtils.AreEqual(--a0, r0); + + uint2x3 a1 = uint2x3(1782514098, 1434377580, 596759698, 1699290403, 1758478358, 1914114460); + uint2x3 r1 = uint2x3(1782514097, 1434377579, 596759697, 1699290402, 1758478357, 1914114459); + TestUtils.AreEqual(--a1, r1); + + uint2x3 a2 = uint2x3(71237375, 1022184392, 1310293956, 356565557, 18299409, 906734601); + uint2x3 r2 = uint2x3(71237374, 1022184391, 1310293955, 356565556, 18299408, 906734600); + TestUtils.AreEqual(--a2, r2); + + uint2x3 a3 = uint2x3(799006218, 1040798388, 1469596990, 1719228297, 220897829, 1454322707); + uint2x3 r3 = uint2x3(799006217, 1040798387, 1469596989, 1719228296, 220897828, 1454322706); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_postfix_dec() + { + uint2x3 a0 = uint2x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + uint2x3 r0 = uint2x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + TestUtils.AreEqual(a0--, r0); + + uint2x3 a1 = uint2x3(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + uint2x3 r1 = uint2x3(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + TestUtils.AreEqual(a1--, r1); + + uint2x3 a2 = uint2x3(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + uint2x3 r2 = uint2x3(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + TestUtils.AreEqual(a2--, r2); + + uint2x3 a3 = uint2x3(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + uint2x3 r3 = uint2x3(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_and_wide_wide() + { + uint2x3 a0 = uint2x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558); + uint2x3 b0 = uint2x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877); + uint2x3 r0 = uint2x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x3 a1 = uint2x3(1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + uint2x3 b1 = uint2x3(1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + uint2x3 r1 = uint2x3(1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x3 a2 = uint2x3(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + uint2x3 b2 = uint2x3(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + uint2x3 r2 = uint2x3(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x3 a3 = uint2x3(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint2x3 b3 = uint2x3(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint2x3 r3 = uint2x3(168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_and_wide_scalar() + { + uint2x3 a0 = uint2x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004); + uint b0 = (93423598); + uint2x3 r0 = uint2x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x3 a1 = uint2x3(1941875181, 1365509729, 428270198, 607982857, 650270920, 1249238550); + uint b1 = (1236735839); + uint2x3 r1 = uint2x3(1102446925, 1092879937, 159777366, 3478793, 8523848, 1211438614); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x3 a2 = uint2x3(814629680, 143502472, 861733033, 1408932942, 957693145, 1567715668); + uint b2 = (1862276471); + uint2x3 r2 = uint2x3(536871216, 134218752, 587202593, 1124078662, 687871057, 1291850068); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x3 a3 = uint2x3(1102952410, 1599352836, 208656708, 1272226025, 462670926, 1817145060); + uint b3 = (322053683); + uint2x3 r3 = uint2x3(19932690, 319823872, 2228224, 51388449, 319947778, 140832); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint2x3 b0 = uint2x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958); + uint2x3 r0 = uint2x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1159378889); + uint2x3 b1 = uint2x3(2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957); + uint2x3 r1 = uint2x3(1091605257, 1074836865, 9161, 1074299840, 83924360, 1092133121); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1248975349); + uint2x3 b2 = uint2x3(236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522); + uint2x3 r2 = uint2x3(168903041, 167844145, 1075925380, 1241581744, 140613985, 1074872496); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (2042776519); + uint2x3 b3 = uint2x3(56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404); + uint2x3 r3 = uint2x3(21118982, 1770146496, 1769996867, 1371555910, 1229064577, 1212170948); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_or_wide_wide() + { + uint2x3 a0 = uint2x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514); + uint2x3 b0 = uint2x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212); + uint2x3 r0 = uint2x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x3 a1 = uint2x3(948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + uint2x3 b1 = uint2x3(2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + uint2x3 r1 = uint2x3(2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x3 a2 = uint2x3(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + uint2x3 b2 = uint2x3(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + uint2x3 r2 = uint2x3(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x3 a3 = uint2x3(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint2x3 b3 = uint2x3(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint2x3 r3 = uint2x3(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_or_wide_scalar() + { + uint2x3 a0 = uint2x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449); + uint b0 = (1666102508); + uint2x3 r0 = uint2x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x3 a1 = uint2x3(1048929715, 860336789, 1637162093, 1227888278, 774029856, 879300408); + uint b1 = (1814263250); + uint2x3 r1 = uint2x3(2124903923, 2137520087, 1840741887, 1832089558, 1847850994, 2087419898); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x3 a2 = uint2x3(1179087439, 1977614655, 46921989, 1980838747, 284225881, 64304104); + uint b2 = (797240690); + uint2x3 r2 = uint2x3(1875378047, 2145709439, 802159991, 2140536699, 1073020283, 802553850); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x3 a3 = uint2x3(313591807, 1890090886, 521303722, 2021379070, 2055963359, 1511253082); + uint b3 = (1393862490); + uint2x3 r3 = uint2x3(1404413951, 1941766110, 1595340794, 2071982078, 2074060767, 1528293210); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint2x3 b0 = uint2x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481); + uint2x3 r0 = uint2x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1283571271); + uint2x3 b1 = uint2x3(2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741); + uint2x3 r1 = uint2x3(2109210439, 2128723919, 1558052575, 1608908663, 1838415447, 2141322991); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (627815046); + uint2x3 b2 = uint2x3(418822515, 83214352, 424663473, 447949225, 527022375, 1947148461); + uint2x3 r2 = uint2x3(1040169975, 637530774, 1030749111, 1073462191, 1064024999, 1970254511); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (305251437); + uint2x3 b3 = uint2x3(1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808); + uint2x3 r3 = uint2x3(1526199917, 2054417661, 1593566973, 1589235437, 1391839215, 335281389); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_xor_wide_wide() + { + uint2x3 a0 = uint2x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585); + uint2x3 b0 = uint2x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205); + uint2x3 r0 = uint2x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x3 a1 = uint2x3(220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + uint2x3 b1 = uint2x3(535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + uint2x3 r1 = uint2x3(314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x3 a2 = uint2x3(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + uint2x3 b2 = uint2x3(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + uint2x3 r2 = uint2x3(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x3 a3 = uint2x3(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint2x3 b3 = uint2x3(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint2x3 r3 = uint2x3(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_xor_wide_scalar() + { + uint2x3 a0 = uint2x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690); + uint b0 = (493665894); + uint2x3 r0 = uint2x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x3 a1 = uint2x3(535061373, 1305234431, 353786540, 1308626970, 1267729267, 125659640); + uint b1 = (289301586); + uint2x3 r1 = uint2x3(249169711, 1559375789, 69746430, 1597928520, 1521379105, 373493162); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x3 a2 = uint2x3(1315625690, 116862046, 375757978, 491079274, 191750702, 187129429); + uint b2 = (1730088797); + uint2x3 r2 = uint2x3(695588231, 1642603267, 1903858631, 2052737335, 1819471219, 1815630088); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x3 a3 = uint2x3(967051293, 653124416, 788984, 1479174924, 1680011736, 447453839); + uint b3 = (549951551); + uint2x3 r3 = uint2x3(425955362, 103447423, 550212039, 2028860211, 1155885543, 980157104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint2x3 b0 = uint2x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275); + uint2x3 r0 = uint2x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1416249064); + uint2x3 b1 = uint2x3(1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003); + uint2x3 r1 = uint2x3(442541185, 1037166305, 227827390, 327742460, 280796832, 544217587); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1774252400); + uint2x3 b2 = uint2x3(1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053); + uint2x3 r2 = uint2x3(440379266, 698081028, 2022864761, 1000608691, 1580745115, 667852101); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (221134131); + uint2x3 b3 = uint2x3(885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520); + uint2x3 r3 = uint2x3(971170309, 693458543, 113181510, 1584258954, 790500762, 1630705027); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_left_shift() + { + uint2x3 a0 = uint2x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717); + int b0 = (1321149625); + uint2x3 r0 = uint2x3(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544); + TestUtils.AreEqual(a0 << b0, r0); + + uint2x3 a1 = uint2x3(870301196, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302); + int b1 = (2058433484); + uint2x3 r1 = uint2x3(4225810432, 306012160, 2812907520, 20340736, 2519031808, 2733760512); + TestUtils.AreEqual(a1 << b1, r1); + + uint2x3 a2 = uint2x3(1079614371, 1664454606, 2045594989, 2077023268, 592678686, 297755411); + int b2 = (35667343); + uint2x3 r2 = uint2x3(3453059072, 3353804800, 2796978176, 1846673408, 3348037632, 2978578432); + TestUtils.AreEqual(a2 << b2, r2); + + uint2x3 a3 = uint2x3(1722762487, 37265945, 997793693, 1521705181, 263886278, 221147365); + int b3 = (1161625759); + uint2x3 r3 = uint2x3(2147483648, 2147483648, 2147483648, 2147483648, 0, 2147483648); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_right_shift() + { + uint2x3 a0 = uint2x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656); + int b0 = (1266801540); + uint2x3 r0 = uint2x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541); + TestUtils.AreEqual(a0 >> b0, r0); + + uint2x3 a1 = uint2x3(770466193, 572763124, 506619530, 426807581, 2031319045, 701927980); + int b1 = (1265099998); + uint2x3 r1 = uint2x3(0, 0, 0, 0, 1, 0); + TestUtils.AreEqual(a1 >> b1, r1); + + uint2x3 a2 = uint2x3(917785020, 185593382, 1102123711, 334005460, 1624751550, 280138733); + int b2 = (569504877); + uint2x3 r2 = uint2x3(112034, 22655, 134536, 40772, 198333, 34196); + TestUtils.AreEqual(a2 >> b2, r2); + + uint2x3 a3 = uint2x3(1598620011, 736389149, 1279158873, 408822762, 763607760, 348013684); + int b3 = (1840564178); + uint2x3 r3 = uint2x3(6098, 2809, 4879, 1559, 2912, 1327); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_not() + { + uint2x3 a0 = uint2x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339); + uint2x3 r0 = uint2x3(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956); + TestUtils.AreEqual(~a0, r0); + + uint2x3 a1 = uint2x3(1935567517, 472965491, 771711426, 627580960, 2061524024, 753208488); + uint2x3 r1 = uint2x3(2359399778, 3822001804, 3523255869, 3667386335, 2233443271, 3541758807); + TestUtils.AreEqual(~a1, r1); + + uint2x3 a2 = uint2x3(2097179283, 664744603, 1289372466, 1635981125, 1951018596, 1545651937); + uint2x3 r2 = uint2x3(2197788012, 3630222692, 3005594829, 2658986170, 2343948699, 2749315358); + TestUtils.AreEqual(~a2, r2); + + uint2x3 a3 = uint2x3(717936457, 1342785385, 869629475, 2045854321, 1282546942, 1562433528); + uint2x3 r3 = uint2x3(3577030838, 2952181910, 3425337820, 2249112974, 3012420353, 2732533767); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x3.gen.cs.meta new file mode 100644 index 0000000..cdbcfb3 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 957fb6da77f246049898f0ef4647166d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x4.gen.cs new file mode 100644 index 0000000..b9bbbe6 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x4.gen.cs @@ -0,0 +1,1229 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint2x4 + { + [TestCompiler] + public static void uint2x4_zero() + { + TestUtils.AreEqual(uint2x4.zero.c0.x, 0u); + TestUtils.AreEqual(uint2x4.zero.c0.y, 0u); + TestUtils.AreEqual(uint2x4.zero.c1.x, 0u); + TestUtils.AreEqual(uint2x4.zero.c1.y, 0u); + TestUtils.AreEqual(uint2x4.zero.c2.x, 0u); + TestUtils.AreEqual(uint2x4.zero.c2.y, 0u); + TestUtils.AreEqual(uint2x4.zero.c3.x, 0u); + TestUtils.AreEqual(uint2x4.zero.c3.y, 0u); + } + + [TestCompiler] + public static void uint2x4_operator_equal_wide_wide() + { + uint2x4 a0 = uint2x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370); + uint2x4 b0 = uint2x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x4 a1 = uint2x4(1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + uint2x4 b1 = uint2x4(1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x4 a2 = uint2x4(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint2x4 b2 = uint2x4(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x4 a3 = uint2x4(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + uint2x4 b3 = uint2x4(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_equal_wide_scalar() + { + uint2x4 a0 = uint2x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277); + uint b0 = (746972502); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x4 a1 = uint2x4(1682018538, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077); + uint b1 = (795585660); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x4 a2 = uint2x4(442746747, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678); + uint b2 = (1772925698); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x4 a3 = uint2x4(1305479811, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832); + uint b3 = (255635293); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint2x4 b0 = uint2x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1061805787); + uint2x4 b1 = uint2x4(1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (2003197687); + uint2x4 b2 = uint2x4(1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (367814403); + uint2x4 b3 = uint2x4(1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_not_equal_wide_wide() + { + uint2x4 a0 = uint2x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646); + uint2x4 b0 = uint2x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x4 a1 = uint2x4(1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + uint2x4 b1 = uint2x4(1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x4 a2 = uint2x4(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint2x4 b2 = uint2x4(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x4 a3 = uint2x4(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + uint2x4 b3 = uint2x4(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_not_equal_wide_scalar() + { + uint2x4 a0 = uint2x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450); + uint b0 = (248693828); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x4 a1 = uint2x4(2105962247, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883); + uint b1 = (727205263); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x4 a2 = uint2x4(1622176923, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685); + uint b2 = (768370497); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x4 a3 = uint2x4(904014575, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907); + uint b3 = (384643370); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint2x4 b0 = uint2x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (124108032); + uint2x4 b1 = uint2x4(1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (266984506); + uint2x4 b2 = uint2x4(2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (572038024); + uint2x4 b3 = uint2x4(1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_wide_wide() + { + uint2x4 a0 = uint2x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973); + uint2x4 b0 = uint2x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202); + bool2x4 r0 = bool2x4(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x4 a1 = uint2x4(928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + uint2x4 b1 = uint2x4(2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x4 a2 = uint2x4(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint2x4 b2 = uint2x4(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool2x4 r2 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x4 a3 = uint2x4(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + uint2x4 b3 = uint2x4(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool2x4 r3 = bool2x4(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_wide_scalar() + { + uint2x4 a0 = uint2x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341); + uint b0 = (1491216667); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x4 a1 = uint2x4(840091491, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709); + uint b1 = (469591900); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x4 a2 = uint2x4(1286331950, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110); + uint b2 = (380753337); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x4 a3 = uint2x4(867559111, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996); + uint b3 = (1703747625); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint2x4 b0 = uint2x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (111349251); + uint2x4 b1 = uint2x4(1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1027318999); + uint2x4 b2 = uint2x4(146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400); + bool2x4 r2 = bool2x4(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (1329939911); + uint2x4 b3 = uint2x4(1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_wide_wide() + { + uint2x4 a0 = uint2x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550); + uint2x4 b0 = uint2x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742); + bool2x4 r0 = bool2x4(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x4 a1 = uint2x4(2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + uint2x4 b1 = uint2x4(910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool2x4 r1 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x4 a2 = uint2x4(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint2x4 b2 = uint2x4(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x4 a3 = uint2x4(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + uint2x4 b3 = uint2x4(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_wide_scalar() + { + uint2x4 a0 = uint2x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035); + uint b0 = (438688675); + bool2x4 r0 = bool2x4(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x4 a1 = uint2x4(2125058448, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211); + uint b1 = (304028799); + bool2x4 r1 = bool2x4(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x4 a2 = uint2x4(2063134811, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419); + uint b2 = (1577403353); + bool2x4 r2 = bool2x4(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x4 a3 = uint2x4(1058332184, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708); + uint b3 = (524569092); + bool2x4 r3 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint2x4 b0 = uint2x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (691047512); + uint2x4 b1 = uint2x4(741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1023307544); + uint2x4 b2 = uint2x4(1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900); + bool2x4 r2 = bool2x4(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (315569296); + uint2x4 b3 = uint2x4(292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844); + bool2x4 r3 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_equal_wide_wide() + { + uint2x4 a0 = uint2x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394); + uint2x4 b0 = uint2x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595); + bool2x4 r0 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x4 a1 = uint2x4(117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + uint2x4 b1 = uint2x4(1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool2x4 r1 = bool2x4(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x4 a2 = uint2x4(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint2x4 b2 = uint2x4(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool2x4 r2 = bool2x4(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x4 a3 = uint2x4(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + uint2x4 b3 = uint2x4(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_equal_wide_scalar() + { + uint2x4 a0 = uint2x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407); + uint b0 = (1688048545); + bool2x4 r0 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x4 a1 = uint2x4(1459242706, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948); + uint b1 = (1745758438); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x4 a2 = uint2x4(2017733017, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750); + uint b2 = (804204255); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x4 a3 = uint2x4(1258115260, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122); + uint b3 = (20607406); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint2x4 b0 = uint2x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (762067160); + uint2x4 b1 = uint2x4(11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309); + bool2x4 r1 = bool2x4(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (861890786); + uint2x4 b2 = uint2x4(478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850); + bool2x4 r2 = bool2x4(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (830430286); + uint2x4 b3 = uint2x4(145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788); + bool2x4 r3 = bool2x4(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_equal_wide_wide() + { + uint2x4 a0 = uint2x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546); + uint2x4 b0 = uint2x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862); + bool2x4 r0 = bool2x4(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x4 a1 = uint2x4(1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + uint2x4 b1 = uint2x4(396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool2x4 r1 = bool2x4(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x4 a2 = uint2x4(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint2x4 b2 = uint2x4(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool2x4 r2 = bool2x4(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x4 a3 = uint2x4(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + uint2x4 b3 = uint2x4(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool2x4 r3 = bool2x4(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_equal_wide_scalar() + { + uint2x4 a0 = uint2x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894); + uint b0 = (1470533736); + bool2x4 r0 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x4 a1 = uint2x4(609211196, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021); + uint b1 = (1604309397); + bool2x4 r1 = bool2x4(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x4 a2 = uint2x4(196833647, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607); + uint b2 = (1596738181); + bool2x4 r2 = bool2x4(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x4 a3 = uint2x4(1223010129, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090); + uint b3 = (379014762); + bool2x4 r3 = bool2x4(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint2x4 b0 = uint2x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1240253990); + uint2x4 b1 = uint2x4(1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577); + bool2x4 r1 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (173706579); + uint2x4 b2 = uint2x4(625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (233894308); + uint2x4 b3 = uint2x4(479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835); + bool2x4 r3 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_add_wide_wide() + { + uint2x4 a0 = uint2x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721); + uint2x4 b0 = uint2x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440); + uint2x4 r0 = uint2x4(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x4 a1 = uint2x4(698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + uint2x4 b1 = uint2x4(1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + uint2x4 r1 = uint2x4(2285462935, 1101613923, 3495777492, 1384643660, 4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x4 a2 = uint2x4(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint2x4 b2 = uint2x4(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint2x4 r2 = uint2x4(2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x4 a3 = uint2x4(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + uint2x4 b3 = uint2x4(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + uint2x4 r3 = uint2x4(3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_add_wide_scalar() + { + uint2x4 a0 = uint2x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301); + uint b0 = (2124409227); + uint2x4 r0 = uint2x4(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x4 a1 = uint2x4(2003021861, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654); + uint b1 = (1635971971); + uint2x4 r1 = uint2x4(3638993832, 2796370257, 1721418173, 2704124937, 2875359071, 3133648859, 3363449456, 2731410625); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x4 a2 = uint2x4(756559204, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260); + uint b2 = (1818718931); + uint2x4 r2 = uint2x4(2575278135, 2477642483, 3429237852, 3404474329, 2511562231, 2887312400, 3523495164, 2396501191); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x4 a3 = uint2x4(736972565, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516); + uint b3 = (711894571); + uint2x4 r3 = uint2x4(1448867136, 1276152010, 2763630854, 2284732268, 2339901116, 2567594834, 1368643353, 984669087); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint2x4 b0 = uint2x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072); + uint2x4 r0 = uint2x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (996031825); + uint2x4 b1 = uint2x4(1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489); + uint2x4 r1 = uint2x4(2553806774, 1775806765, 2107573127, 1779078270, 2126195769, 1284311409, 2393715686, 2632615314); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (673263339); + uint2x4 b2 = uint2x4(1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839); + uint2x4 r2 = uint2x4(2142564213, 688119304, 1789900338, 2162126639, 2274254225, 863914640, 1980723107, 1593349178); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (2082229835); + uint2x4 b3 = uint2x4(1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222); + uint2x4 r3 = uint2x4(4074635409, 3296154293, 2588071287, 3063650997, 3570567534, 3196056475, 3888376343, 3924021057); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_sub_wide_wide() + { + uint2x4 a0 = uint2x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138); + uint2x4 b0 = uint2x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885); + uint2x4 r0 = uint2x4(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x4 a1 = uint2x4(1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + uint2x4 b1 = uint2x4(71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + uint2x4 r1 = uint2x4(1234495882, 3456019244, 3562788131, 3413504982, 4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x4 a2 = uint2x4(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint2x4 b2 = uint2x4(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint2x4 r2 = uint2x4(3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x4 a3 = uint2x4(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + uint2x4 b3 = uint2x4(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + uint2x4 r3 = uint2x4(4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_sub_wide_scalar() + { + uint2x4 a0 = uint2x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815); + uint b0 = (462232403); + uint2x4 r0 = uint2x4(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x4 a1 = uint2x4(281174200, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635); + uint b1 = (87530840); + uint2x4 r1 = uint2x4(193643360, 1826193591, 1954062496, 469709150, 1031520608, 1502845892, 731559349, 728851795); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x4 a2 = uint2x4(815920639, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794); + uint b2 = (1829033117); + uint2x4 r2 = uint2x4(3281854818, 4258736111, 3579374728, 3884872155, 3743191368, 263746281, 3108170921, 4071184973); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x4 a3 = uint2x4(819644478, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500); + uint b3 = (1468003019); + uint2x4 r3 = uint2x4(3646608755, 2955267463, 3380458534, 3844091248, 531741763, 549269739, 349988745, 4107949777); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint2x4 b0 = uint2x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277); + uint2x4 r0 = uint2x4(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (1789300421); + uint2x4 b1 = uint2x4(264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829); + uint2x4 r1 = uint2x4(1524587528, 557444354, 4266154969, 360864312, 530554961, 711920025, 458577702, 1271188592); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (967128529); + uint2x4 b2 = uint2x4(344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709); + uint2x4 r2 = uint2x4(622462275, 4179827907, 59261833, 3445210702, 506787961, 4974031, 410015068, 3560879116); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1980098777); + uint2x4 b3 = uint2x4(730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041); + uint2x4 r3 = uint2x4(1250038225, 535700950, 1126528221, 1841262345, 966908349, 1262009247, 1473341387, 763650736); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mul_wide_wide() + { + uint2x4 a0 = uint2x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069); + uint2x4 b0 = uint2x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980); + uint2x4 r0 = uint2x4(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x4 a1 = uint2x4(571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + uint2x4 b1 = uint2x4(1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + uint2x4 r1 = uint2x4(2640799263, 2093463192, 3087460678, 3161406466, 990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x4 a2 = uint2x4(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint2x4 b2 = uint2x4(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint2x4 r2 = uint2x4(649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x4 a3 = uint2x4(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + uint2x4 b3 = uint2x4(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + uint2x4 r3 = uint2x4(1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mul_wide_scalar() + { + uint2x4 a0 = uint2x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909); + uint b0 = (1476837906); + uint2x4 r0 = uint2x4(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x4 a1 = uint2x4(975743632, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467); + uint b1 = (573770299); + uint2x4 r1 = uint2x4(414773040, 3595344211, 1045098929, 3165813842, 1954692228, 970215437, 1522404739, 631100697); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x4 a2 = uint2x4(1186856590, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703); + uint b2 = (890343818); + uint2x4 r2 = uint2x4(218605196, 908725324, 3489887282, 2766521704, 1365477062, 1262261996, 2040090952, 691203142); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x4 a3 = uint2x4(1613845584, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051); + uint b3 = (76318055); + uint2x4 r3 = uint2x4(2959506480, 1256424448, 3749667707, 628661398, 357366566, 753276674, 2132219401, 3469671949); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint2x4 b0 = uint2x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146); + uint2x4 r0 = uint2x4(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (2105124483); + uint2x4 b1 = uint2x4(1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225); + uint2x4 r1 = uint2x4(3266048080, 2084093460, 1286996821, 910923781, 1886305329, 3255007413, 644799552, 1815059427); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (994616533); + uint2x4 b2 = uint2x4(1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330); + uint2x4 r2 = uint2x4(585859259, 2021158292, 1046891801, 2353145761, 3556190869, 2579715257, 4134395107, 1259643370); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (1186460236); + uint2x4 b3 = uint2x4(657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873); + uint2x4 r3 = uint2x4(3393334220, 3415667152, 1278776548, 1761940324, 3619679884, 2049744268, 3919669496, 2350571308); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_div_wide_wide() + { + uint2x4 a0 = uint2x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739); + uint2x4 b0 = uint2x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678); + uint2x4 r0 = uint2x4(1, 0, 0, 8, 0, 0, 2, 7); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x4 a1 = uint2x4(499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + uint2x4 b1 = uint2x4(2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + uint2x4 r1 = uint2x4(0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x4 a2 = uint2x4(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint2x4 b2 = uint2x4(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint2x4 r2 = uint2x4(1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x4 a3 = uint2x4(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + uint2x4 b3 = uint2x4(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + uint2x4 r3 = uint2x4(2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_div_wide_scalar() + { + uint2x4 a0 = uint2x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253); + uint b0 = (947861580); + uint2x4 r0 = uint2x4(0, 1, 0, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x4 a1 = uint2x4(341995568, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372); + uint b1 = (495895326); + uint2x4 r1 = uint2x4(0, 3, 3, 4, 4, 2, 1, 3); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x4 a2 = uint2x4(1447236569, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924); + uint b2 = (107215658); + uint2x4 r2 = uint2x4(13, 0, 8, 6, 11, 13, 16, 17); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x4 a3 = uint2x4(1244966864, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348); + uint b3 = (1200843642); + uint2x4 r3 = uint2x4(1, 0, 1, 1, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint2x4 b0 = uint2x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032); + uint2x4 r0 = uint2x4(6, 0, 0, 0, 2, 0, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (81831373); + uint2x4 b1 = uint2x4(1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859); + uint2x4 r1 = uint2x4(0, 0, 1, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1653451772); + uint2x4 b2 = uint2x4(270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890); + uint2x4 r2 = uint2x4(6, 33, 0, 1, 1, 0, 2, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (351914083); + uint2x4 b3 = uint2x4(131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708); + uint2x4 r3 = uint2x4(2, 0, 0, 0, 1, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mod_wide_wide() + { + uint2x4 a0 = uint2x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532); + uint2x4 b0 = uint2x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806); + uint2x4 r0 = uint2x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x4 a1 = uint2x4(778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + uint2x4 b1 = uint2x4(769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + uint2x4 r1 = uint2x4(9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x4 a2 = uint2x4(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint2x4 b2 = uint2x4(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint2x4 r2 = uint2x4(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x4 a3 = uint2x4(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + uint2x4 b3 = uint2x4(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + uint2x4 r3 = uint2x4(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mod_wide_scalar() + { + uint2x4 a0 = uint2x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899); + uint b0 = (883951171); + uint2x4 r0 = uint2x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x4 a1 = uint2x4(896587769, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717); + uint b1 = (405208598); + uint2x4 r1 = uint2x4(86170573, 361927802, 148819739, 307112428, 172564850, 324442651, 275480547, 391863923); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x4 a2 = uint2x4(165478511, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313); + uint b2 = (647846716); + uint2x4 r2 = uint2x4(165478511, 267861283, 307136969, 280344567, 437088090, 488509689, 144280764, 377501313); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x4 a3 = uint2x4(1778384846, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942); + uint b3 = (1216011754); + uint2x4 r3 = uint2x4(562373092, 812183417, 1153802502, 426660116, 708698988, 665297470, 352079071, 834971188); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint2x4 b0 = uint2x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265); + uint2x4 r0 = uint2x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (293460573); + uint2x4 b1 = uint2x4(1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342); + uint2x4 r1 = uint2x4(293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (797184687); + uint2x4 b2 = uint2x4(821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318); + uint2x4 r2 = uint2x4(797184687, 797184687, 797184687, 797184687, 182024723, 797184687, 1919391, 797184687); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (164578061); + uint2x4 b3 = uint2x4(730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733); + uint2x4 r3 = uint2x4(164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_plus() + { + uint2x4 a0 = uint2x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + uint2x4 r0 = uint2x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + TestUtils.AreEqual(+a0, r0); + + uint2x4 a1 = uint2x4(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + uint2x4 r1 = uint2x4(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + TestUtils.AreEqual(+a1, r1); + + uint2x4 a2 = uint2x4(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + uint2x4 r2 = uint2x4(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + TestUtils.AreEqual(+a2, r2); + + uint2x4 a3 = uint2x4(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + uint2x4 r3 = uint2x4(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_neg() + { + uint2x4 a0 = uint2x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349); + uint2x4 r0 = uint2x4(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947); + TestUtils.AreEqual(-a0, r0); + + uint2x4 a1 = uint2x4(1115028238, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094); + uint2x4 r1 = uint2x4(3179939058, 3599972203, 2752761010, 4081880003, 4051029809, 3953445021, 3453882054, 3720808202); + TestUtils.AreEqual(-a1, r1); + + uint2x4 a2 = uint2x4(1687250035, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928); + uint2x4 r2 = uint2x4(2607717261, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432, 2854192368); + TestUtils.AreEqual(-a2, r2); + + uint2x4 a3 = uint2x4(1485596454, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098); + uint2x4 r3 = uint2x4(2809370842, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012, 2340793982, 2585110198); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_prefix_inc() + { + uint2x4 a0 = uint2x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442); + uint2x4 r0 = uint2x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443); + TestUtils.AreEqual(++a0, r0); + + uint2x4 a1 = uint2x4(913293639, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683); + uint2x4 r1 = uint2x4(913293640, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684); + TestUtils.AreEqual(++a1, r1); + + uint2x4 a2 = uint2x4(993189311, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865); + uint2x4 r2 = uint2x4(993189312, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866); + TestUtils.AreEqual(++a2, r2); + + uint2x4 a3 = uint2x4(519296647, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208); + uint2x4 r3 = uint2x4(519296648, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_postfix_inc() + { + uint2x4 a0 = uint2x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + uint2x4 r0 = uint2x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + TestUtils.AreEqual(a0++, r0); + + uint2x4 a1 = uint2x4(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + uint2x4 r1 = uint2x4(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + TestUtils.AreEqual(a1++, r1); + + uint2x4 a2 = uint2x4(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + uint2x4 r2 = uint2x4(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + TestUtils.AreEqual(a2++, r2); + + uint2x4 a3 = uint2x4(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + uint2x4 r3 = uint2x4(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint2x4_operator_prefix_dec() + { + uint2x4 a0 = uint2x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826); + uint2x4 r0 = uint2x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825); + TestUtils.AreEqual(--a0, r0); + + uint2x4 a1 = uint2x4(1434377580, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956); + uint2x4 r1 = uint2x4(1434377579, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955); + TestUtils.AreEqual(--a1, r1); + + uint2x4 a2 = uint2x4(356565557, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829); + uint2x4 r2 = uint2x4(356565556, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828); + TestUtils.AreEqual(--a2, r2); + + uint2x4 a3 = uint2x4(1454322707, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343); + uint2x4 r3 = uint2x4(1454322706, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_postfix_dec() + { + uint2x4 a0 = uint2x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + uint2x4 r0 = uint2x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + TestUtils.AreEqual(a0--, r0); + + uint2x4 a1 = uint2x4(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + uint2x4 r1 = uint2x4(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + TestUtils.AreEqual(a1--, r1); + + uint2x4 a2 = uint2x4(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + uint2x4 r2 = uint2x4(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + TestUtils.AreEqual(a2--, r2); + + uint2x4 a3 = uint2x4(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + uint2x4 r3 = uint2x4(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_and_wide_wide() + { + uint2x4 a0 = uint2x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406); + uint2x4 b0 = uint2x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812); + uint2x4 r0 = uint2x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x4 a1 = uint2x4(2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + uint2x4 b1 = uint2x4(23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + uint2x4 r1 = uint2x4(16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x4 a2 = uint2x4(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint2x4 b2 = uint2x4(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint2x4 r2 = uint2x4(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x4 a3 = uint2x4(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + uint2x4 b3 = uint2x4(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + uint2x4 r3 = uint2x4(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_and_wide_scalar() + { + uint2x4 a0 = uint2x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839); + uint b0 = (93423598); + uint2x4 r0 = uint2x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x4 a1 = uint2x4(1365509729, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033); + uint b1 = (428270198); + uint2x4 r1 = uint2x4(285475424, 262144, 8536128, 134529558, 277234224, 150995062, 142909440, 285474848); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x4 a2 = uint2x4(1408932942, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926); + uint b2 = (957693145); + uint2x4 r2 = uint2x4(286268488, 420556880, 18167000, 286270481, 420753408, 134551616, 152314057, 420547656); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x4 a3 = uint2x4(1817145060, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525); + uint b3 = (1466722981); + uint2x4 r3 = uint2x4(1145858724, 1145069572, 273443365, 101460005, 1093403136, 524420, 335806629, 1142948357); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint2x4 b0 = uint2x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279); + uint2x4 r0 = uint2x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1089518981); + uint2x4 b1 = uint2x4(270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038); + uint2x4 r1 = uint2x4(2105729, 1080066432, 40324, 1074831621, 1081121157, 1058177, 14593, 1084233092); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1845693112); + uint2x4 b2 = uint2x4(946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417); + uint2x4 r2 = uint2x4(671287840, 1141047992, 1744964224, 33751056, 1744964256, 1845559864, 1140852752, 1208158384); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1214109404); + uint2x4 b3 = uint2x4(2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506); + uint2x4 r3 = uint2x4(16988, 1208799884, 1074321052, 1209303624, 1115840, 1213727936, 1610312, 1078218760); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_or_wide_wide() + { + uint2x4 a0 = uint2x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835); + uint2x4 b0 = uint2x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430); + uint2x4 r0 = uint2x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x4 a1 = uint2x4(669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + uint2x4 b1 = uint2x4(1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + uint2x4 r1 = uint2x4(1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x4 a2 = uint2x4(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint2x4 b2 = uint2x4(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint2x4 r2 = uint2x4(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x4 a3 = uint2x4(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + uint2x4 b3 = uint2x4(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + uint2x4 r3 = uint2x4(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_or_wide_scalar() + { + uint2x4 a0 = uint2x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250); + uint b0 = (1666102508); + uint2x4 r0 = uint2x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x4 a1 = uint2x4(860336789, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989); + uint b1 = (1637162093); + uint2x4 r1 = uint2x4(1943518973, 1773477631, 1874321005, 1979522941, 1742175855, 1872100735, 1978998143, 1675623789); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x4 a2 = uint2x4(1980838747, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359); + uint b2 = (284225881); + uint2x4 r2 = uint2x4(1995567963, 334885881, 317847551, 1408563035, 1895366623, 536016891, 2029779967, 2063332319); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x4 a3 = uint2x4(1511253082, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895); + uint b3 = (1775629833); + uint2x4 r3 = uint2x4(2077750875, 1843265467, 1775761279, 2111176313, 2046817999, 2113404623, 1778251405, 2077753039); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint2x4 b0 = uint2x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012); + uint2x4 r0 = uint2x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (979469710); + uint2x4 b1 = uint2x4(1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473); + uint2x4 r1 = uint2x4(2055064991, 2078664126, 1005832159, 1063386607, 1064023950, 989314559, 1056294302, 997187007); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (447949225); + uint2x4 b2 = uint2x4(527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150); + uint2x4 r2 = uint2x4(536590767, 2126457261, 447999469, 1526184941, 2062773753, 1593519101, 1589357545, 1526197231); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (298563808); + uint2x4 b3 = uint2x4(2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556); + uint2x4 r3 = uint2x4(2078276845, 872414207, 938213110, 1945092072, 1375468774, 838844392, 1004273386, 836763636); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_xor_wide_wide() + { + uint2x4 a0 = uint2x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553); + uint2x4 b0 = uint2x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262); + uint2x4 r0 = uint2x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x4 a1 = uint2x4(47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + uint2x4 b1 = uint2x4(1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + uint2x4 r1 = uint2x4(1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x4 a2 = uint2x4(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint2x4 b2 = uint2x4(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint2x4 r2 = uint2x4(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x4 a3 = uint2x4(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + uint2x4 b3 = uint2x4(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + uint2x4 r3 = uint2x4(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_xor_wide_scalar() + { + uint2x4 a0 = uint2x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586); + uint b0 = (493665894); + uint2x4 r0 = uint2x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x4 a1 = uint2x4(1305234431, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978); + uint b1 = (353786540); + uint2x4 r1 = uint2x4(1490686291, 1528187574, 1585863135, 309015380, 1534886006, 1913214449, 333543154, 57919030); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x4 a2 = uint2x4(491079274, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736); + uint b2 = (191750702); + uint2x4 r2 = uint2x4(371762244, 4897915, 852093491, 732592657, 763363694, 190966742, 1397197090, 1867453430); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x4 a3 = uint2x4(447453839, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291); + uint b3 = (890841598); + uint2x4 r3 = uint2x4(800240497, 610664066, 711808497, 714187902, 1735978412, 1929239075, 171965729, 427463573); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint2x4 b0 = uint2x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737); + uint2x4 r0 = uint2x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1773918217); + uint2x4 b1 = uint2x4(1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937); + uint2x4 r1 = uint2x4(809875551, 777590045, 762148929, 497155858, 8071545, 440700667, 702609021, 2028559872); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1382343363); + uint2x4 b2 = uint2x4(939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481); + uint2x4 r2 = uint2x4(1704743464, 476745462, 1598742512, 1722301941, 1981778335, 1509285046, 19333242, 1884605034); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1813817520); + uint2x4 b3 = uint2x4(86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759); + uint2x4 r3 = uint2x4(1765145501, 465338881, 961174309, 1508358725, 916626445, 1734574159, 1183306712, 2052237431); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_left_shift() + { + uint2x4 a0 = uint2x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484); + int b0 = (1321149625); + uint2x4 r0 = uint2x4(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832); + TestUtils.AreEqual(a0 << b0, r0); + + uint2x4 a1 = uint2x4(1200694230, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989); + int b1 = (1531607705); + uint2x4 r1 = uint2x4(2885681152, 3422552064, 2885681152, 1006632960, 1174405120, 503316480, 2617245696, 3657433088); + TestUtils.AreEqual(a1 << b1, r1); + + uint2x4 a2 = uint2x4(2077023268, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278); + int b2 = (592678686); + uint2x4 r2 = uint2x4(0, 3221225472, 3221225472, 3221225472, 1073741824, 1073741824, 1073741824, 2147483648); + TestUtils.AreEqual(a2 << b2, r2); + + uint2x4 a3 = uint2x4(221147365, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688); + int b3 = (2084190583); + uint2x4 r3 = uint2x4(1920991232, 2952790016, 3690987520, 4160749568, 3489660928, 3984588800, 109051904, 1207959552); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_right_shift() + { + uint2x4 a0 = uint2x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998); + int b0 = (1266801540); + uint2x4 r0 = uint2x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749); + TestUtils.AreEqual(a0 >> b0, r0); + + uint2x4 a1 = uint2x4(572763124, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711); + int b1 = (506619530); + uint2x4 r1 = uint2x4(559338, 416804, 1983710, 685476, 896274, 556157, 181243, 1076292); + TestUtils.AreEqual(a1 >> b1, r1); + + uint2x4 a2 = uint2x4(334005460, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760); + int b2 = (1624751550); + uint2x4 r2 = uint2x4(0, 0, 1, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a2 >> b2, r2); + + uint2x4 a3 = uint2x4(348013684, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476); + int b3 = (1568185874); + uint2x4 r3 = uint2x4(1327, 2953, 6054, 2289, 112, 7175, 1343, 4442); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_not() + { + uint2x4 a0 = uint2x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856); + uint2x4 r0 = uint2x4(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439); + TestUtils.AreEqual(~a0, r0); + + uint2x4 a1 = uint2x4(472965491, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466); + uint2x4 r1 = uint2x4(3822001804, 3667386335, 2233443271, 3541758807, 2197788012, 2991944802, 3630222692, 3005594829); + TestUtils.AreEqual(~a1, r1); + + uint2x4 a2 = uint2x4(1635981125, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942); + uint2x4 r2 = uint2x4(2658986170, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974, 3012420353); + TestUtils.AreEqual(~a2, r2); + + uint2x4 a3 = uint2x4(1562433528, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039); + uint2x4 r3 = uint2x4(2732533767, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021, 3599787443, 2528029256); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x4.gen.cs.meta new file mode 100644 index 0000000..7ef0b94 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27ff3548fed6aa741b4d1d7cb7a291e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3.gen.cs new file mode 100644 index 0000000..bc4bb8a --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3.gen.cs @@ -0,0 +1,1346 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint3 + { + [TestCompiler] + public static void uint3_zero() + { + TestUtils.AreEqual(uint3.zero.x, 0u); + TestUtils.AreEqual(uint3.zero.y, 0u); + TestUtils.AreEqual(uint3.zero.z, 0u); + } + + [TestCompiler] + public static void uint3_constructor() + { + uint3 a = new uint3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void uint3_scalar_constructor() + { + uint3 a = new uint3(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + TestUtils.AreEqual(a.z, 17u); + } + + [TestCompiler] + public static void uint3_static_constructor() + { + uint3 a = uint3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void uint3_static_scalar_constructor() + { + uint3 a = uint3(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + TestUtils.AreEqual(a.z, 17u); + } + + [TestCompiler] + public static void uint3_operator_equal_wide_wide() + { + uint3 a0 = uint3(790229414, 970783976, 1428432738); + uint3 b0 = uint3(612337669, 1214209108, 2120643427); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3 a1 = uint3(1578747135, 1733797753, 2001507228); + uint3 b1 = uint3(295461214, 1510890331, 1893316566); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3 a2 = uint3(1446876437, 1777406370, 1426387268); + uint3 b2 = uint3(921816149, 1834958575, 1482011863); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3 a3 = uint3(1809275021, 1843770816, 1172185222); + uint3 b3 = uint3(2062852792, 226398742, 770290735); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3_operator_equal_wide_scalar() + { + uint3 a0 = uint3(1211464300, 1921862607, 508076684); + uint b0 = (746972502); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3 a1 = uint3(1249127920, 746862310, 1733655277); + uint b1 = (1394594555); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3 a2 = uint3(1884008277, 795585660, 936027116); + uint b2 = (1682018538); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3 a3 = uint3(927605411, 1465584610, 585324157); + uint b3 = (672785749); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint3 b0 = uint3(233855098, 924242519, 1402948791); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (601381975); + uint3 b1 = uint3(2120518068, 629187703, 1971977031); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (47183124); + uint3 b2 = uint3(1061805787, 1009011238, 312511148); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1460673064); + uint3 b3 = uint3(737210539, 1737844479, 1892405453); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3_operator_not_equal_wide_wide() + { + uint3 a0 = uint3(1660932106, 982847023, 97046264); + uint3 b0 = uint3(107139049, 75478496, 2055495054); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3 a1 = uint3(1739517447, 1253499180, 1830584069); + uint3 b1 = uint3(358586687, 942338347, 111564990); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3 a2 = uint3(1841470429, 1397841646, 1770890135); + uint3 b2 = uint3(113811950, 948912488, 1080084121); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3 a3 = uint3(1906548631, 169082967, 2099271786); + uint3 b3 = uint3(1400504872, 1032134499, 1061123400); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3_operator_not_equal_wide_scalar() + { + uint3 a0 = uint3(747758183, 1033001286, 1439973882); + uint b0 = (248693828); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3 a1 = uint3(2138928797, 1432672459, 950170763); + uint b1 = (1197845089); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3 a2 = uint3(238704450, 727205263, 1640688041); + uint b2 = (2105962247); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3 a3 = uint3(276313906, 791998981, 2035077187); + uint b3 = (2126300423); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint3 b0 = uint3(2037494727, 1989050616, 48833929); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (1897435904); + uint3 b1 = uint3(514354517, 1783749164, 364694471); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (754315072); + uint3 b2 = uint3(124108032, 1512967900, 1178825850); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1854793298); + uint3 b3 = uint3(50286949, 2100802631, 1640811853); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_wide_wide() + { + uint3 a0 = uint3(1182186063, 415538999, 1667335818); + uint3 b0 = uint3(524633529, 1032195686, 760723389); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint3 a1 = uint3(1566618442, 1166180837, 639095188); + uint3 b1 = uint3(1505751409, 431962172, 1287906509); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3 a2 = uint3(1080836365, 771119973, 928263233); + uint3 b2 = uint3(1560084663, 1450178202, 2066166337); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint3 a3 = uint3(789225474, 665243110, 1003542034); + uint3 b3 = uint3(1107069023, 1640077524, 2103263105); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_wide_scalar() + { + uint3 a0 = uint3(608447185, 818840405, 869219329); + uint b0 = (1491216667); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3 a1 = uint3(2080125385, 1361741203, 1667165786); + uint b1 = (1214500548); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint3 a2 = uint3(1615392341, 469591900, 1247103789); + uint b2 = (840091491); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint3 a3 = uint3(315321650, 1100560246, 933855388); + uint b3 = (930950514); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint3 b0 = uint3(282703327, 14370648, 1862117300); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1304793311); + uint3 b1 = uint3(826073259, 988910157, 445132446); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1139670255); + uint3 b2 = uint3(111349251, 1102440676, 112183144); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (1594415311); + uint3 b3 = uint3(1890019295, 2098715503, 608933527); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_wide_wide() + { + uint3 a0 = uint3(592884447, 2133928932, 918957182); + uint3 b0 = uint3(138737040, 192863971, 1700841444); + bool3 r0 = bool3(true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint3 a1 = uint3(1284069471, 194584707, 739120780); + uint3 b1 = uint3(1044631301, 1391589821, 730837695); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint3 a2 = uint3(241654068, 1340158550, 2099542537); + uint3 b2 = uint3(253553987, 2078872742, 910845808); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint3 a3 = uint3(1182623667, 1399607274, 789301637); + uint3 b3 = uint3(976047676, 202633078, 1223618940); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_wide_scalar() + { + uint3 a0 = uint3(1097138316, 211763648, 1883002501); + uint b0 = (438688675); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3 a1 = uint3(56406996, 1923456111, 1437755186); + uint b1 = (43662641); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint3 a2 = uint3(1219010035, 304028799, 893125636); + uint b2 = (2125058448); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3 a3 = uint3(48044515, 1035679270, 577943770); + uint b3 = (711945018); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint3 b0 = uint3(599356784, 185671342, 1932327391); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (2025591013); + uint3 b1 = uint3(1257191721, 1312388500, 1443698859); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (779217735); + uint3 b2 = uint3(691047512, 741776730, 732565983); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (668302204); + uint3 b3 = uint3(1556466996, 858599525, 1896917159); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_equal_wide_wide() + { + uint3 a0 = uint3(1577248162, 2043073061, 1688380407); + uint3 b0 = uint3(903445031, 2108974565, 210822256); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3 a1 = uint3(176431985, 223299035, 1502802140); + uint3 b1 = uint3(1281704747, 453681718, 66138830); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3 a2 = uint3(1691709825, 386789394, 117182003); + uint3 b2 = uint3(1229799377, 1620922595, 1715833766); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3 a3 = uint3(1665770435, 1958490731, 420032601); + uint3 b3 = uint3(1366430432, 13102000, 46919981); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_equal_wide_scalar() + { + uint3 a0 = uint3(1722165358, 1219858357, 860410743); + uint b0 = (1688048545); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3 a1 = uint3(411099660, 1963256951, 212084836); + uint b1 = (348104022); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3 a2 = uint3(58924407, 1745758438, 532949158); + uint b2 = (1459242706); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3 a3 = uint3(262559763, 1806172431, 2091514001); + uint b3 = (690091301); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint3 b0 = uint3(1181030049, 1787703989, 1729760948); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1816537388); + uint3 b1 = uint3(1359786460, 874999193, 1678863148); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (1711365839); + uint3 b2 = uint3(762067160, 11953554, 1131583906); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (1175393186); + uint3 b3 = uint3(1293698493, 48893340, 66196247); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_equal_wide_wide() + { + uint3 a0 = uint3(263000030, 744235661, 1893760267); + uint3 b0 = uint3(1395535146, 1178373944, 1237373760); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3 a1 = uint3(237248, 1062370984, 1676977687); + uint3 b1 = uint3(1364855321, 600811864, 362060472); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3 a2 = uint3(816766880, 1089431546, 1394493730); + uint3 b2 = uint3(290870624, 1839067862, 396958580); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3 a3 = uint3(1176473380, 1193988637, 1703862455); + uint3 b3 = uint3(1336888643, 1019684398, 1697684196); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_equal_wide_scalar() + { + uint3 a0 = uint3(2112791350, 1043657935, 101764761); + uint b0 = (1470533736); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3 a1 = uint3(1529909067, 281734132, 1186600258); + uint b1 = (556026890); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3 a2 = uint3(815093894, 1604309397, 829548642); + uint b2 = (609211196); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3 a3 = uint3(244604867, 471843809, 1819986195); + uint b3 = (1419295004); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint3 b0 = uint3(1503244746, 861711266, 817773856); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (925984572); + uint3 b1 = uint3(571221723, 683686810, 118252990); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1653952090); + uint3 b2 = uint3(1240253990, 1947039008, 1869136019); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (152012637); + uint3 b3 = uint3(1214546726, 917376832, 303549425); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_add_wide_wide() + { + uint3 a0 = uint3(2049228671, 1658660009, 491719392); + uint3 b0 = uint3(2088751567, 645762023, 306868786); + uint3 r0 = uint3(4137980238, 2304422032, 798588178); + TestUtils.AreEqual(a0 + b0, r0); + + uint3 a1 = uint3(937013355, 81108663, 1063894558); + uint3 b1 = uint3(4360271, 506047997, 2094559874); + uint3 r1 = uint3(941373626, 587156660, 3158454432); + TestUtils.AreEqual(a1 + b1, r1); + + uint3 a2 = uint3(86954702, 843159721, 698977704); + uint3 b2 = uint3(1634712736, 1601474440, 1586485231); + uint3 r2 = uint3(1721667438, 2444634161, 2285462935); + TestUtils.AreEqual(a2 + b2, r2); + + uint3 a3 = uint3(192867135, 1683407172, 137301303); + uint3 b3 = uint3(908746788, 1812370320, 1247342357); + uint3 r3 = uint3(1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3_operator_add_wide_scalar() + { + uint3 a0 = uint3(2038218457, 134923711, 875689667); + uint b0 = (2124409227); + uint3 r0 = uint3(4162627684, 2259332938, 3000098894); + TestUtils.AreEqual(a0 + b0, r0); + + uint3 a1 = uint3(1338884463, 340490871, 1067888129); + uint b1 = (997710928); + uint3 r1 = uint3(2336595391, 1338201799, 2065599057); + TestUtils.AreEqual(a1 + b1, r1); + + uint3 a2 = uint3(70433301, 1635971971, 1160398286); + uint b2 = (2003021861); + uint3 r2 = uint3(2073455162, 3638993832, 3163420147); + TestUtils.AreEqual(a2 + b2, r2); + + uint3 a3 = uint3(85446202, 1239387100, 1497676888); + uint b3 = (1068152966); + uint3 r3 = uint3(1153599168, 2307540066, 2565829854); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint3 b0 = uint3(519908870, 851424292, 328314822); + uint3 r0 = uint3(911000948, 1242516370, 719406900); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (135622204); + uint3 b1 = uint3(740923360, 655394201, 1451896269); + uint3 r1 = uint3(876545564, 791016405, 1587518473); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1781697072); + uint3 b2 = uint3(996031825, 1557774949, 779774940); + uint3 r2 = uint3(2777728897, 3339472021, 2561472012); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1111541302); + uint3 b3 = uint3(783046445, 1130163944, 288279584); + uint3 r3 = uint3(1894587747, 2241705246, 1399820886); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3_operator_sub_wide_wide() + { + uint3 a0 = uint3(1353441118, 797269833, 659988112); + uint3 b0 = uint3(1332656812, 1827794007, 972557431); + uint3 r0 = uint3(20784306, 3264443122, 3982397977); + TestUtils.AreEqual(a0 - b0, r0); + + uint3 a1 = uint3(56022121, 365847472, 2062899435); + uint3 b1 = uint3(2078233689, 1508184327, 1372307701); + uint3 r1 = uint3(2272755728, 3152630441, 690591734); + TestUtils.AreEqual(a1 - b1, r1); + + uint3 a2 = uint3(1380988474, 799885138, 1306058185); + uint3 b2 = uint3(810327977, 936799885, 71562303); + uint3 r2 = uint3(570660497, 4158052549, 1234495882); + TestUtils.AreEqual(a2 - b2, r2); + + uint3 a3 = uint3(579775276, 1239163824, 344591081); + uint3 b3 = uint3(1418723328, 1971342989, 1226053395); + uint3 r3 = uint3(3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3_operator_sub_wide_scalar() + { + uint3 a0 = uint3(1176369558, 1934521195, 309452150); + uint b0 = (462232403); + uint3 r0 = uint3(714137155, 1472288792, 4142187043); + TestUtils.AreEqual(a0 - b0, r0); + + uint3 a1 = uint3(1417634074, 1306356714, 1502312334); + uint b1 = (108910717); + uint3 r1 = uint3(1308723357, 1197445997, 1393401617); + TestUtils.AreEqual(a1 - b1, r1); + + uint3 a2 = uint3(1451794815, 87530840, 1913724431); + uint b2 = (281174200); + uint3 r2 = uint3(1170620615, 4101323936, 1632550231); + TestUtils.AreEqual(a2 - b2, r2); + + uint3 a3 = uint3(2041593336, 1119051448, 1590376732); + uint b3 = (557239990); + uint3 r3 = uint3(1484353346, 561811458, 1033136742); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint3 b0 = uint3(2022393810, 1612688515, 496689713); + uint3 r0 = uint3(3964107891, 78845890, 1194844692); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (887037586); + uint3 b1 = uint3(2097630964, 374934538, 939035482); + uint3 r1 = uint3(3084373918, 512103048, 4242969400); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (935242277); + uint3 b2 = uint3(1789300421, 264712893, 1231856067); + uint3 r2 = uint3(3440909152, 670529384, 3998353506); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1818112748); + uint3 b3 = uint3(1428436109, 1258745460, 1077380396); + uint3 r3 = uint3(389676639, 559367288, 740732352); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mul_wide_wide() + { + uint3 a0 = uint3(245827027, 208934650, 1019478917); + uint3 b0 = uint3(759663997, 350129201, 477450108); + uint3 r0 = uint3(3662155527, 1402281434, 332447596); + TestUtils.AreEqual(a0 * b0, r0); + + uint3 a1 = uint3(568231809, 877289039, 1585782440); + uint3 b1 = uint3(1635735015, 388710278, 757722665); + uint3 r1 = uint3(2361989735, 2624048730, 1455036648); + TestUtils.AreEqual(a1 * b1, r1); + + uint3 a2 = uint3(2111178729, 1186019069, 571481445); + uint3 b2 = uint3(1509388321, 1841703980, 1826369331); + uint3 r2 = uint3(2128344329, 3700879228, 2640799263); + TestUtils.AreEqual(a2 * b2, r2); + + uint3 a3 = uint3(1570087048, 629447153, 619383734); + uint3 b3 = uint3(1524322467, 1605207974, 428419155); + uint3 r3 = uint3(2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mul_wide_scalar() + { + uint3 a0 = uint3(1762033447, 465343930, 1570757881); + uint b0 = (1476837906); + uint3 r0 = uint3(2981789374, 1326807828, 2156411778); + TestUtils.AreEqual(a0 * b0, r0); + + uint3 a1 = uint3(1326409563, 1356578909, 72749215); + uint b1 = (1824319147); + uint3 r1 = uint3(4042902473, 4058582047, 2167403573); + TestUtils.AreEqual(a1 * b1, r1); + + uint3 a2 = uint3(154616909, 573770299, 1958912969); + uint b2 = (975743632); + uint3 r2 = uint3(7966032, 414773040, 262642448); + TestUtils.AreEqual(a2 * b2, r2); + + uint3 a3 = uint3(971327747, 1324050764, 660611671); + uint b3 = (1818877398); + uint3 r3 = uint3(2347605890, 1927061896, 2981154746); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint3 b0 = uint3(1764461774, 657072478, 1459784358); + uint3 r0 = uint3(3344568648, 4192918280, 1260585960); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1610646683); + uint3 b1 = uint3(1632058826, 868441654, 1408757883); + uint3 r1 = uint3(1644073294, 1407050418, 3474851449); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (335917146); + uint3 b2 = uint3(2105124483, 1178393968, 1963904348); + uint3 r2 = uint3(1003330062, 2631063904, 2268033624); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (1409533767); + uint3 b3 = uint3(243286231, 1336308795, 517963367); + uint3 r3 = uint3(108928161, 875895133, 2457018257); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3_operator_div_wide_wide() + { + uint3 a0 = uint3(1590198532, 507812502, 126627032); + uint3 b0 = uint3(1434703236, 911965201, 390415521); + uint3 r0 = uint3(1, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3 a1 = uint3(1058247011, 427387861, 290676154); + uint3 b1 = uint3(128746927, 525835375, 816946613); + uint3 r1 = uint3(8, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3 a2 = uint3(1829594484, 1127868739, 499016351); + uint3 b2 = uint3(878264647, 146789678, 2089524057); + uint3 r2 = uint3(2, 7, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint3 a3 = uint3(1341209632, 134906097, 785470242); + uint3 b3 = uint3(254213018, 1916850021, 1737806518); + uint3 r3 = uint3(5, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3_operator_div_wide_scalar() + { + uint3 a0 = uint3(560951562, 1218680769, 375341724); + uint b0 = (947861580); + uint3 r0 = uint3(0, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3 a1 = uint3(1613542090, 1397425408, 1349573078); + uint b1 = (1919409166); + uint3 r1 = uint3(0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3 a2 = uint3(524526253, 495895326, 1515313790); + uint b2 = (341995568); + uint3 r2 = uint3(1, 1, 4); + TestUtils.AreEqual(a2 / b2, r2); + + uint3 a3 = uint3(1676971657, 2105094094, 1017891310); + uint b3 = (2131487088); + uint3 r3 = uint3(0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint3 b0 = uint3(187325733, 1594107378, 2016183849); + uint3 r0 = uint3(6, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1589343709); + uint3 b1 = uint3(388768753, 1417077283, 1773486938); + uint3 r1 = uint3(4, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1154044032); + uint3 b2 = uint3(81831373, 1476877645, 653688843); + uint3 r2 = uint3(14, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (45756703); + uint3 b3 = uint3(631027637, 396671391, 784365696); + uint3 r3 = uint3(0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mod_wide_wide() + { + uint3 a0 = uint3(146150818, 1846543305, 1071447756); + uint3 b0 = uint3(983050390, 771341152, 942375212); + uint3 r0 = uint3(146150818, 303861001, 129072544); + TestUtils.AreEqual(a0 % b0, r0); + + uint3 a1 = uint3(308965362, 659881575, 1002365460); + uint3 b1 = uint3(367361754, 749500619, 750718852); + uint3 r1 = uint3(308965362, 659881575, 251646608); + TestUtils.AreEqual(a1 % b1, r1); + + uint3 a2 = uint3(861198439, 1510617532, 778525078); + uint3 b2 = uint3(2095151755, 88438806, 769227442); + uint3 r2 = uint3(861198439, 7157830, 9297636); + TestUtils.AreEqual(a2 % b2, r2); + + uint3 a3 = uint3(1458458044, 101987897, 1249565173); + uint3 b3 = uint3(647214624, 1026513788, 1544950956); + uint3 r3 = uint3(164028796, 101987897, 1249565173); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mod_wide_scalar() + { + uint3 a0 = uint3(164800505, 1062177828, 1898749675); + uint b0 = (883951171); + uint3 r0 = uint3(164800505, 178226657, 130847333); + TestUtils.AreEqual(a0 % b0, r0); + + uint3 a1 = uint3(1701653318, 19002208, 128329633); + uint b1 = (820393245); + uint3 r1 = uint3(60866828, 19002208, 128329633); + TestUtils.AreEqual(a1 % b1, r1); + + uint3 a2 = uint3(1464010899, 405208598, 1982762194); + uint b2 = (896587769); + uint3 r2 = uint3(567423130, 405208598, 189586656); + TestUtils.AreEqual(a2 % b2, r2); + + uint3 a3 = uint3(959236935, 172564850, 1540068445); + uint b3 = (712321026); + uint3 r3 = uint3(246915909, 172564850, 115426393); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint3 b0 = uint3(740000543, 1556450291, 1104736385); + uint3 r0 = uint3(242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (437976569); + uint3 b1 = uint3(1911837205, 1507212038, 1906405167); + uint3 r1 = uint3(437976569, 437976569, 437976569); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (247693265); + uint3 b2 = uint3(293460573, 1495295166, 873323603); + uint3 r2 = uint3(247693265, 247693265, 247693265); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (530681233); + uint3 b3 = uint3(1298102643, 2057984657, 1000742091); + uint3 r3 = uint3(530681233, 530681233, 530681233); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3_operator_plus() + { + uint3 a0 = uint3(1643476803, 907898539, 379615839); + uint3 r0 = uint3(1643476803, 907898539, 379615839); + TestUtils.AreEqual(+a0, r0); + + uint3 a1 = uint3(1140483021, 1743199272, 1472881565); + uint3 r1 = uint3(1140483021, 1743199272, 1472881565); + TestUtils.AreEqual(+a1, r1); + + uint3 a2 = uint3(339091479, 1287765427, 849339193); + uint3 r2 = uint3(339091479, 1287765427, 849339193); + TestUtils.AreEqual(+a2, r2); + + uint3 a3 = uint3(174532915, 1566098441, 1145639744); + uint3 r3 = uint3(174532915, 1566098441, 1145639744); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint3_operator_neg() + { + uint3 a0 = uint3(1955022112, 662160019, 370300775); + uint3 r0 = uint3(2339945184, 3632807277, 3924666521); + TestUtils.AreEqual(-a0, r0); + + uint3 a1 = uint3(2141283773, 28153593, 33894270); + uint3 r1 = uint3(2153683523, 4266813703, 4261073026); + TestUtils.AreEqual(-a1, r1); + + uint3 a2 = uint3(505708349, 1636274969, 694995093); + uint3 r2 = uint3(3789258947, 2658692327, 3599972203); + TestUtils.AreEqual(-a2, r2); + + uint3 a3 = uint3(1542206286, 243937487, 341522275); + uint3 r3 = uint3(2752761010, 4051029809, 3953445021); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint3_operator_prefix_inc() + { + uint3 a0 = uint3(864455342, 2035793213, 1275443862); + uint3 r0 = uint3(864455343, 2035793214, 1275443863); + TestUtils.AreEqual(++a0, r0); + + uint3 a1 = uint3(971919915, 446210725, 395072276); + uint3 r1 = uint3(971919916, 446210726, 395072277); + TestUtils.AreEqual(++a1, r1); + + uint3 a2 = uint3(115573442, 432884105, 1208161871); + uint3 r2 = uint3(115573443, 432884106, 1208161872); + TestUtils.AreEqual(++a2, r2); + + uint3 a3 = uint3(1385544935, 831396561, 388229350); + uint3 r3 = uint3(1385544936, 831396562, 388229351); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint3_operator_postfix_inc() + { + uint3 a0 = uint3(1751003569, 2063707595, 1500486291); + uint3 r0 = uint3(1751003569, 2063707595, 1500486291); + TestUtils.AreEqual(a0++, r0); + + uint3 a1 = uint3(969189211, 2028651936, 1643023524); + uint3 r1 = uint3(969189211, 2028651936, 1643023524); + TestUtils.AreEqual(a1++, r1); + + uint3 a2 = uint3(1190630527, 708474528, 177416855); + uint3 r2 = uint3(1190630527, 708474528, 177416855); + TestUtils.AreEqual(a2++, r2); + + uint3 a3 = uint3(1524860667, 375284401, 1580130369); + uint3 r3 = uint3(1524860667, 375284401, 1580130369); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint3_operator_prefix_dec() + { + uint3 a0 = uint3(200904609, 871077500, 968578728); + uint3 r0 = uint3(200904608, 871077499, 968578727); + TestUtils.AreEqual(--a0, r0); + + uint3 a1 = uint3(638967721, 435367037, 1782514098); + uint3 r1 = uint3(638967720, 435367036, 1782514097); + TestUtils.AreEqual(--a1, r1); + + uint3 a2 = uint3(1589827826, 596759698, 1699290403); + uint3 r2 = uint3(1589827825, 596759697, 1699290402); + TestUtils.AreEqual(--a2, r2); + + uint3 a3 = uint3(1758478358, 71237375, 389120307); + uint3 r3 = uint3(1758478357, 71237374, 389120306); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint3_operator_postfix_dec() + { + uint3 a0 = uint3(283970262, 1109329936, 1073216143); + uint3 r0 = uint3(283970262, 1109329936, 1073216143); + TestUtils.AreEqual(a0--, r0); + + uint3 a1 = uint3(649439137, 1174104498, 484207852); + uint3 r1 = uint3(649439137, 1174104498, 484207852); + TestUtils.AreEqual(a1--, r1); + + uint3 a2 = uint3(524156737, 2017728859, 802721301); + uint3 r2 = uint3(524156737, 2017728859, 802721301); + TestUtils.AreEqual(a2--, r2); + + uint3 a3 = uint3(377162390, 1504625034, 590919177); + uint3 r3 = uint3(377162390, 1504625034, 590919177); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_and_wide_wide() + { + uint3 a0 = uint3(779935043, 1097962163, 1939593304); + uint3 b0 = uint3(307705143, 1710882162, 866836769); + uint3 r0 = uint3(39064835, 1097961522, 864731136); + TestUtils.AreEqual(a0 & b0, r0); + + uint3 a1 = uint3(800599247, 952140918, 782792558); + uint3 b1 = uint3(532490608, 679371720, 1794035877); + uint3 r1 = uint3(263727168, 675283008, 715673636); + TestUtils.AreEqual(a1 & b1, r1); + + uint3 a2 = uint3(1608557706, 396446406, 2039894114); + uint3 b2 = uint3(1439832202, 519529812, 23633139); + uint3 r2 = uint3(1438646410, 379666500, 16781410); + TestUtils.AreEqual(a2 & b2, r2); + + uint3 a3 = uint3(1286974642, 442394124, 1759739564); + uint3 b3 = uint3(1209152681, 646737179, 1255867027); + uint3 r3 = uint3(1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_and_wide_scalar() + { + uint3 a0 = uint3(443615469, 490057985, 2042441263); + uint b0 = (93423598); + uint3 r0 = uint3(1114348, 85033216, 26281518); + TestUtils.AreEqual(a0 & b0, r0); + + uint3 a1 = uint3(1524760558, 510212004, 1941875181); + uint b1 = (1405175110); + uint3 r1 = uint3(1388397894, 306251012, 1400897860); + TestUtils.AreEqual(a1 & b1, r1); + + uint3 a2 = uint3(1236735839, 428270198, 607982857); + uint b2 = (1365509729); + uint3 r2 = uint3(1092879937, 285475424, 2360321); + TestUtils.AreEqual(a2 & b2, r2); + + uint3 a3 = uint3(650270920, 814629680, 1862276471); + uint b3 = (1249238550); + uint3 r3 = uint3(37771264, 279056, 1241519126); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint3 b0 = uint3(420346723, 562416448, 1393127318); + uint3 r0 = uint3(547170, 18752, 1074284806); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1560699552); + uint3 b1 = uint3(851218057, 703880958, 1159378889); + uint3 r1 = uint3(268698240, 151274144, 1157767808); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (2031211279); + uint3 b2 = uint3(1089518981, 270607307, 1349288930); + uint3 r2 = uint3(1074827525, 268501771, 1342210818); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (520199596); + uint3 b3 = uint3(1763483957, 1248975349, 236938635); + uint3 r3 = uint3(151028004, 167877028, 234947976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_or_wide_wide() + { + uint3 a0 = uint3(1731159103, 659068416, 382702471); + uint3 b0 = uint3(1583847161, 692672727, 1161585489); + uint3 r0 = uint3(2138044159, 793370327, 1476391895); + TestUtils.AreEqual(a0 | b0, r0); + + uint3 a1 = uint3(1821032196, 1565773438, 1004000514); + uint3 b1 = uint3(1756207130, 1321374429, 1287357212); + uint3 r1 = uint3(1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a1 | b1, r1); + + uint3 a2 = uint3(948501377, 600951835, 669346222); + uint3 b2 = uint3(2075767170, 1273513430, 1610830169); + uint3 r2 = uint3(2075786115, 1811533279, 1743223295); + TestUtils.AreEqual(a2 | b2, r2); + + uint3 a3 = uint3(396691477, 2108560248, 2117522137); + uint3 b3 = uint3(1316929125, 511625048, 573925879); + uint3 r3 = uint3(1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_or_wide_scalar() + { + uint3 a0 = uint3(961259683, 471103264, 1733389229); + uint b0 = (1666102508); + uint3 r0 = uint3(2068823279, 2136930284, 1734344685); + TestUtils.AreEqual(a0 | b0, r0); + + uint3 a1 = uint3(1591585258, 1148351449, 1048929715); + uint b1 = (386953869); + uint3 r1 = uint3(1608383471, 1467118557, 1066760127); + TestUtils.AreEqual(a1 | b1, r1); + + uint3 a2 = uint3(1814263250, 1637162093, 1227888278); + uint b2 = (860336789); + uint3 r2 = uint3(2137520087, 1943518973, 2071443095); + TestUtils.AreEqual(a2 | b2, r2); + + uint3 a3 = uint3(774029856, 1179087439, 797240690); + uint b3 = (879300408); + uint3 r3 = uint3(1047252792, 1987018623, 1072557946); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint3 b0 = uint3(1212928242, 1614462616, 936937728); + uint3 r0 = uint3(1213978111, 1752940445, 2145094925); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (764766995); + uint3 b1 = uint3(306352095, 574719481, 1283571271); + uint3 r1 = uint3(1071116255, 802549755, 1838546775); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (2109131012); + uint3 b2 = uint3(979469710, 1348323481, 1407542578); + uint3 r2 = uint3(2146946446, 2113915293, 2146954550); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (697517649); + uint3 b3 = uint3(1059093741, 627815046, 418822515); + uint3 r3 = uint3(1068728061, 771487447, 972554099); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_xor_wide_wide() + { + uint3 a0 = uint3(1556324760, 207002929, 1843444873); + uint3 b0 = uint3(1054997548, 1523759632, 251164872); + uint3 r0 = uint3(1646419380, 1451501345, 1662567489); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3 a1 = uint3(1632079131, 1460334334, 1607815585); + uint3 b1 = uint3(110472397, 384031112, 1109163205); + uint3 r1 = uint3(1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3 a2 = uint3(220623650, 38668553, 47193340); + uint3 b2 = uint3(535118981, 179106262, 1523031711); + uint3 r2 = uint3(314783655, 149092575, 1477935715); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3 a3 = uint3(643663548, 1371932564, 94957188); + uint3 b3 = uint3(1713313372, 1294118730, 520360641); + uint3 r3 = uint3(1078104288, 484747486, 447544389); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_xor_wide_scalar() + { + uint3 a0 = uint3(2124666952, 177397845, 574879617); + uint b0 = (493665894); + uint3 r0 = uint3(1674536494, 402546227, 1060063719); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3 a1 = uint3(1937385541, 213863690, 535061373); + uint b1 = (1136545648); + uint3 r1 = uint3(818177845, 1325466234, 1549413389); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3 a2 = uint3(289301586, 353786540, 1308626970); + uint b2 = (1305234431); + uint3 r2 = uint3(1559375789, 1490686291, 63724517); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3 a3 = uint3(1267729267, 1315625690, 1730088797); + uint b3 = (125659640); + uint3 r3 = uint3(1290627723, 1226289954, 1617061541); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint3 b0 = uint3(1077599928, 884741329, 212164516); + uint3 r0 = uint3(217506340, 2020616269, 1080648504); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1585020328); + uint3 b1 = uint3(152985454, 1775851275, 1416249064); + uint3 r1 = uint3(1466376902, 933243555, 169034560); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1309317737); + uint3 b2 = uint3(1773918217, 1509843030, 1206045972); + uint3 r2 = uint3(665928288, 401930815, 166221693); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1154916424); + uint3 b3 = uint3(1947871003, 1774252400, 1946113778); + uint3 r3 = uint3(818710355, 756437304, 925497018); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3_operator_left_shift() + { + uint3 a0 = uint3(197771193, 622182602, 1283988958); + int b0 = (1321149625); + uint3 r0 = uint3(1912602624, 2483027968, 3154116608); + TestUtils.AreEqual(a0 << b0, r0); + + uint3 a1 = uint3(1327917304, 432425717, 870301196); + int b1 = (473415985); + uint3 r1 = uint3(3522166784, 2515140608, 2081947648); + TestUtils.AreEqual(a1 << b1, r1); + + uint3 a2 = uint3(2058433484, 1531607705, 1360008038); + int b2 = (1200694230); + uint3 r2 = uint3(4076863488, 2789212160, 3649044480); + TestUtils.AreEqual(a2 << b2, r2); + + uint3 a3 = uint3(1008296534, 1079614371, 35667343); + int b3 = (1447702302); + uint3 r3 = uint3(2147483648, 3221225472, 3221225472); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint3_operator_right_shift() + { + uint3 a0 = uint3(548167301, 1161338299, 1617625829); + int b0 = (1266801540); + uint3 r0 = uint3(34260456, 72583643, 101101614); + TestUtils.AreEqual(a0 >> b0, r0); + + uint3 a1 = uint3(1860731847, 196552656, 770466193); + int b1 = (713958715); + uint3 r1 = uint3(13, 1, 5); + TestUtils.AreEqual(a1 >> b1, r1); + + uint3 a2 = uint3(1265099998, 506619530, 426807581); + int b2 = (572763124); + uint3 r2 = uint3(1206, 483, 407); + TestUtils.AreEqual(a2 >> b2, r2); + + uint3 a3 = uint3(2031319045, 917785020, 569504877); + int b3 = (701927980); + uint3 r3 = uint3(495927, 224068, 139039); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_not() + { + uint3 a0 = uint3(1403358969, 831360921, 2088190243); + uint3 r0 = uint3(2891608326, 3463606374, 2206777052); + TestUtils.AreEqual(~a0, r0); + + uint3 a1 = uint3(976721016, 308994339, 1935567517); + uint3 r1 = uint3(3318246279, 3985972956, 2359399778); + TestUtils.AreEqual(~a1, r1); + + uint3 a2 = uint3(1420884856, 771711426, 627580960); + uint3 r2 = uint3(2874082439, 3523255869, 3667386335); + TestUtils.AreEqual(~a2, r2); + + uint3 a3 = uint3(2061524024, 2097179283, 1303022493); + uint3 r3 = uint3(2233443271, 2197788012, 2991944802); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void uint3_shuffle_result_1() + { + uint3 a = uint3(0, 1, 2); + uint3 b = uint3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (5)); + } + + [TestCompiler] + public static void uint3_shuffle_result_2() + { + uint3 a = uint3(0, 1, 2); + uint3 b = uint3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), uint2(4, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), uint2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), uint2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY), uint2(5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), uint2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftZ), uint2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), uint2(5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), uint2(4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), uint2(4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), uint2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY), uint2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), uint2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), uint2(1, 2)); + } + + [TestCompiler] + public static void uint3_shuffle_result_3() + { + uint3 a = uint3(0, 1, 2); + uint3 b = uint3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.RightX), uint3(1, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), uint3(4, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX), uint3(2, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY), uint3(4, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.LeftZ), uint3(5, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.LeftY), uint3(2, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightX), uint3(2, 4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftY, ShuffleComponent.RightZ), uint3(2, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ), uint3(4, 4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint3(4, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint3(5, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint3(5, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightZ), uint3(4, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightY), uint3(2, 3, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint3(4, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightZ), uint3(4, 0, 5)); + } + + [TestCompiler] + public static void uint3_shuffle_result_4() + { + uint3 a = uint3(0, 1, 2); + uint3 b = uint3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint4(1, 2, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightY), uint4(4, 2, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.LeftY), uint4(4, 4, 5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint4(3, 3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), uint4(4, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightZ), uint4(3, 4, 3, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightZ), uint4(1, 5, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), uint4(4, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightZ, ShuffleComponent.LeftZ, ShuffleComponent.LeftX), uint4(3, 5, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint4(4, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint4(0, 2, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.RightZ), uint4(1, 4, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint4(2, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), uint4(3, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(5, 3, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(2, 5, 0, 4)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3.gen.cs.meta new file mode 100644 index 0000000..1fb2cc2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e540f901d21a5c4c94afaaa341f0eba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x2.gen.cs new file mode 100644 index 0000000..6eab9de --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x2.gen.cs @@ -0,0 +1,1227 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint3x2 + { + [TestCompiler] + public static void uint3x2_zero() + { + TestUtils.AreEqual(uint3x2.zero.c0.x, 0u); + TestUtils.AreEqual(uint3x2.zero.c0.y, 0u); + TestUtils.AreEqual(uint3x2.zero.c0.z, 0u); + TestUtils.AreEqual(uint3x2.zero.c1.x, 0u); + TestUtils.AreEqual(uint3x2.zero.c1.y, 0u); + TestUtils.AreEqual(uint3x2.zero.c1.z, 0u); + } + + [TestCompiler] + public static void uint3x2_operator_equal_wide_wide() + { + uint3x2 a0 = uint3x2(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228); + uint3x2 b0 = uint3x2(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x2 a1 = uint3x2(1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + uint3x2 b1 = uint3x2(921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x2 a2 = uint3x2(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + uint3x2 b2 = uint3x2(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x2 a3 = uint3x2(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint3x2 b3 = uint3x2(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_equal_wide_scalar() + { + uint3x2 a0 = uint3x2(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310); + uint b0 = (746972502); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x2 a1 = uint3x2(1733655277, 1682018538, 795585660, 936027116, 927605411, 672785749); + uint b1 = (1884008277); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x2 a2 = uint3x2(1465584610, 404448210, 969511077, 442746747, 1772925698, 1884034177); + uint b2 = (585324157); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x2 a3 = uint3x2(451512860, 1370577708, 597010220, 1249636005, 211986678, 1305479811); + uint b3 = (425476075); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint3x2 b0 = uint3x2(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1971977031); + uint3x2 b1 = uint3x2(47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1737844479); + uint3x2 b2 = uint3x2(1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (559824292); + uint3x2 b3 = uint3x2(1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_not_equal_wide_wide() + { + uint3x2 a0 = uint3x2(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069); + uint3x2 b0 = uint3x2(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x2 a1 = uint3x2(1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + uint3x2 b1 = uint3x2(113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x2 a2 = uint3x2(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + uint3x2 b2 = uint3x2(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x2 a3 = uint3x2(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint3x2 b3 = uint3x2(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_not_equal_wide_scalar() + { + uint3x2 a0 = uint3x2(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459); + uint b0 = (248693828); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x2 a1 = uint3x2(950170763, 2105962247, 727205263, 1640688041, 276313906, 2126300423); + uint b1 = (238704450); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x2 a2 = uint3x2(791998981, 1171827730, 1412347883, 1622176923, 768370497, 1072798259); + uint b2 = (2035077187); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x2 a3 = uint3x2(1808712713, 1582645163, 1876273820, 90244766, 30493685, 904014575); + uint b3 = (1497830076); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint3x2 b0 = uint3x2(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (364694471); + uint3x2 b1 = uint3x2(754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (2100802631); + uint3x2 b2 = uint3x2(1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1041416160); + uint3x2 b3 = uint3x2(356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_wide_wide() + { + uint3x2 a0 = uint3x2(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188); + uint3x2 b0 = uint3x2(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509); + bool3x2 r0 = bool3x2(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x2 a1 = uint3x2(1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + uint3x2 b1 = uint3x2(1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x2 a2 = uint3x2(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + uint3x2 b2 = uint3x2(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool3x2 r2 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x2 a3 = uint3x2(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint3x2 b3 = uint3x2(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool3x2 r3 = bool3x2(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_wide_scalar() + { + uint3x2 a0 = uint3x2(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203); + uint b0 = (1491216667); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x2 a1 = uint3x2(1667165786, 840091491, 469591900, 1247103789, 315321650, 930950514); + uint b1 = (1615392341); + bool3x2 r1 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x2 a2 = uint3x2(1100560246, 908563901, 1127696709, 1286331950, 380753337, 971148054); + uint b2 = (933855388); + bool3x2 r2 = bool3x2(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x2 a3 = uint3x2(1827886929, 1579735991, 689044913, 1960894027, 371987110, 867559111); + uint b3 = (1056649851); + bool3x2 r3 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint3x2 b0 = uint3x2(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (445132446); + uint3x2 b1 = uint3x2(1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (2098715503); + uint3x2 b2 = uint3x2(608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (874278078); + uint3x2 b3 = uint3x2(1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911); + bool3x2 r3 = bool3x2(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_wide_wide() + { + uint3x2 a0 = uint3x2(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780); + uint3x2 b0 = uint3x2(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695); + bool3x2 r0 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x2 a1 = uint3x2(241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + uint3x2 b1 = uint3x2(253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x2 a2 = uint3x2(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + uint3x2 b2 = uint3x2(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool3x2 r2 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x2 a3 = uint3x2(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint3x2 b3 = uint3x2(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_wide_scalar() + { + uint3x2 a0 = uint3x2(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111); + uint b0 = (438688675); + bool3x2 r0 = bool3x2(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x2 a1 = uint3x2(1437755186, 2125058448, 304028799, 893125636, 48044515, 711945018); + uint b1 = (1219010035); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x2 a2 = uint3x2(1035679270, 572743717, 1016617211, 2063134811, 1577403353, 64009107); + uint b2 = (577943770); + bool3x2 r2 = bool3x2(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x2 a3 = uint3x2(1462961460, 3715845, 689362811, 263973424, 1045140419, 1058332184); + uint b3 = (1143565920); + bool3x2 r3 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint3x2 b0 = uint3x2(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1443698859); + uint3x2 b1 = uint3x2(779217735, 691047512, 741776730, 732565983, 668302204, 1556466996); + bool3x2 r1 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (858599525); + uint3x2 b2 = uint3x2(1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345); + bool3x2 r2 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (299897686); + uint3x2 b3 = uint3x2(632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_equal_wide_wide() + { + uint3x2 a0 = uint3x2(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140); + uint3x2 b0 = uint3x2(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830); + bool3x2 r0 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x2 a1 = uint3x2(1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + uint3x2 b1 = uint3x2(1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool3x2 r1 = bool3x2(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x2 a2 = uint3x2(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + uint3x2 b2 = uint3x2(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool3x2 r2 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x2 a3 = uint3x2(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint3x2 b3 = uint3x2(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_equal_wide_scalar() + { + uint3x2 a0 = uint3x2(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951); + uint b0 = (1688048545); + bool3x2 r0 = bool3x2(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x2 a1 = uint3x2(212084836, 1459242706, 1745758438, 532949158, 262559763, 690091301); + uint b1 = (58924407); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x2 a2 = uint3x2(1806172431, 1857173043, 1617221948, 2017733017, 804204255, 981729559); + uint b2 = (2091514001); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x2 a3 = uint3x2(2032949254, 2079225209, 26179915, 238796519, 1917813750, 1258115260); + uint b3 = (910922522); + bool3x2 r3 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint3x2 b0 = uint3x2(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1678863148); + uint3x2 b1 = uint3x2(1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493); + bool3x2 r1 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (48893340); + uint3x2 b2 = uint3x2(66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (117849810); + uint3x2 b3 = uint3x2(1348693584, 105489302, 259034238, 530713566, 601413850, 830430286); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_equal_wide_wide() + { + uint3x2 a0 = uint3x2(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687); + uint3x2 b0 = uint3x2(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472); + bool3x2 r0 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x2 a1 = uint3x2(816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + uint3x2 b1 = uint3x2(290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x2 a2 = uint3x2(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + uint3x2 b2 = uint3x2(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool3x2 r2 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x2 a3 = uint3x2(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint3x2 b3 = uint3x2(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool3x2 r3 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_equal_wide_scalar() + { + uint3x2 a0 = uint3x2(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132); + uint b0 = (1470533736); + bool3x2 r0 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x2 a1 = uint3x2(1186600258, 609211196, 1604309397, 829548642, 244604867, 1419295004); + uint b1 = (815093894); + bool3x2 r1 = bool3x2(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x2 a2 = uint3x2(471843809, 1460027917, 1646290021, 196833647, 1596738181, 1905036391); + uint b2 = (1819986195); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x2 a3 = uint3x2(1771391775, 370941146, 440219668, 1607345862, 1449142607, 1223010129); + uint b3 = (1584946560); + bool3x2 r3 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint3x2 b0 = uint3x2(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (118252990); + uint3x2 b1 = uint3x2(1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (917376832); + uint3x2 b2 = uint3x2(303549425, 2111728811, 945321577, 173706579, 625318949, 519443238); + bool3x2 r2 = bool3x2(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (1583588379); + uint3x2 b3 = uint3x2(1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_add_wide_wide() + { + uint3x2 a0 = uint3x2(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558); + uint3x2 b0 = uint3x2(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874); + uint3x2 r0 = uint3x2(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x2 a1 = uint3x2(86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + uint3x2 b1 = uint3x2(1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + uint3x2 r1 = uint3x2(1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x2 a2 = uint3x2(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + uint3x2 b2 = uint3x2(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + uint3x2 r2 = uint3x2(4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x2 a3 = uint3x2(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint3x2 b3 = uint3x2(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint3x2 r3 = uint3x2(1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_add_wide_scalar() + { + uint3x2 a0 = uint3x2(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871); + uint b0 = (2124409227); + uint3x2 r0 = uint3x2(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x2 a1 = uint3x2(1067888129, 2003021861, 1635971971, 1160398286, 85446202, 1068152966); + uint b1 = (70433301); + uint3x2 r1 = uint3x2(1138321430, 2073455162, 1706405272, 1230831587, 155879503, 1138586267); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x2 a2 = uint3x2(1239387100, 1727477485, 1095438654, 756559204, 1818718931, 658923552); + uint b2 = (1497676888); + uint3x2 r2 = uint3x2(2737063988, 3225154373, 2593115542, 2254236092, 3316395819, 2156600440); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x2 a3 = uint3x2(1610518921, 692843300, 1068593469, 1704776233, 577782260, 736972565); + uint b3 = (1585755398); + uint3x2 r3 = uint3x2(3196274319, 2278598698, 2654348867, 3290531631, 2163537658, 2322727963); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint3x2 b0 = uint3x2(519908870, 851424292, 328314822, 135622204, 740923360, 655394201); + uint3x2 r0 = uint3x2(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (1451896269); + uint3x2 b1 = uint3x2(1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445); + uint3x2 r1 = uint3x2(3233593341, 2447928094, 3009671218, 2231671209, 2563437571, 2234942714); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1130163944); + uint3x2 b2 = uint3x2(288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965); + uint3x2 r2 = uint3x2(1418443528, 2527847805, 2766747433, 1803427283, 2599464818, 1145019909); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1116636999); + uint3x2 b3 = uint3x2(1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835); + uint3x2 r3 = uint3x2(2605500299, 2717627885, 1307288300, 2424096767, 2036722838, 3198866834); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_sub_wide_wide() + { + uint3x2 a0 = uint3x2(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435); + uint3x2 b0 = uint3x2(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701); + uint3x2 r0 = uint3x2(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x2 a1 = uint3x2(1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + uint3x2 b1 = uint3x2(810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + uint3x2 r1 = uint3x2(570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x2 a2 = uint3x2(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + uint3x2 b2 = uint3x2(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + uint3x2 r2 = uint3x2(4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x2 a3 = uint3x2(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint3x2 b3 = uint3x2(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint3x2 r3 = uint3x2(3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_sub_wide_scalar() + { + uint3x2 a0 = uint3x2(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714); + uint b0 = (462232403); + uint3x2 r0 = uint3x2(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x2 a1 = uint3x2(1502312334, 281174200, 87530840, 1913724431, 2041593336, 557239990); + uint b1 = (1451794815); + uint3x2 r1 = uint3x2(50517519, 3124346681, 2930703321, 461929616, 589798521, 3400412471); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x2 a2 = uint3x2(1119051448, 819090189, 816382635, 815920639, 1829033117, 1792801932); + uint b2 = (1590376732); + uint3x2 r2 = uint3x2(3823642012, 3523680753, 3520973199, 3520511203, 238656385, 202425200); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x2 a3 = uint3x2(1113440549, 1277257189, 2092779398, 642236742, 1605250794, 819644478); + uint b3 = (1418937976); + uint3x2 r3 = uint3x2(3989469869, 4153286509, 673841422, 3518266062, 186312818, 3695673798); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint3x2 b0 = uint3x2(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538); + uint3x2 r0 = uint3x2(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (939035482); + uint3x2 b1 = uint3x2(935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109); + uint3x2 r1 = uint3x2(3793205, 3444702357, 674322589, 4002146711, 3415890030, 3805566669); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1258745460); + uint3x2 b2 = uint3x2(1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918); + uint3x2 r2 = uint3x2(181365064, 4222990037, 740633631, 291616931, 914079206, 176477542); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (907866696); + uint3x2 b3 = uint3x2(1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777); + uint3x2 r3 = uint3x2(3385948869, 447526128, 4240679494, 350753235, 3501617283, 3222735215); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mul_wide_wide() + { + uint3x2 a0 = uint3x2(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440); + uint3x2 b0 = uint3x2(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665); + uint3x2 r0 = uint3x2(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x2 a1 = uint3x2(2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + uint3x2 b1 = uint3x2(1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + uint3x2 r1 = uint3x2(2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x2 a2 = uint3x2(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + uint3x2 b2 = uint3x2(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + uint3x2 r2 = uint3x2(990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x2 a3 = uint3x2(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint3x2 b3 = uint3x2(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint3x2 r3 = uint3x2(1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mul_wide_scalar() + { + uint3x2 a0 = uint3x2(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909); + uint b0 = (1476837906); + uint3x2 r0 = uint3x2(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x2 a1 = uint3x2(72749215, 975743632, 573770299, 1958912969, 971327747, 1818877398); + uint b1 = (154616909); + uint3x2 r1 = uint3x2(1400257491, 7966032, 499040191, 322676597, 469811687, 3921580382); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x2 a2 = uint3x2(1324050764, 1279757657, 391009467, 1186856590, 890343818, 800117742); + uint b2 = (660611671); + uint3x2 r2 = uint3x2(645718228, 4252425023, 2516558221, 1570790978, 4161587686, 1820172770); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x2 a3 = uint3x2(606927173, 1688964615, 1439447294, 387721300, 1192501703, 1613845584); + uint b3 = (1338014500); + uint3x2 r3 = uint3x2(4040635572, 1134384636, 1352273336, 4065724368, 1766808828, 645024576); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint3x2 b0 = uint3x2(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654); + uint3x2 r0 = uint3x2(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1408757883); + uint3x2 b1 = uint3x2(335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231); + uint3x2 r1 = uint3x2(1223039806, 1995624689, 3320276176, 375843636, 858017565, 2027534157); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1336308795); + uint3x2 b2 = uint3x2(517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700); + uint3x2 r2 = uint3x2(580046269, 3297097280, 3969951899, 831291671, 3260394293, 3040627372); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (677771573); + uint3x2 b3 = uint3x2(2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236); + uint3x2 r3 = uint3x2(4169123457, 1435043573, 698030233, 9173379, 3470328490, 113055164); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_div_wide_wide() + { + uint3x2 a0 = uint3x2(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154); + uint3x2 b0 = uint3x2(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613); + uint3x2 r0 = uint3x2(1, 0, 0, 8, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x2 a1 = uint3x2(1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + uint3x2 b1 = uint3x2(878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + uint3x2 r1 = uint3x2(2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x2 a2 = uint3x2(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + uint3x2 b2 = uint3x2(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + uint3x2 r2 = uint3x2(0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x2 a3 = uint3x2(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint3x2 b3 = uint3x2(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint3x2 r3 = uint3x2(0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_div_wide_scalar() + { + uint3x2 a0 = uint3x2(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408); + uint b0 = (947861580); + uint3x2 r0 = uint3x2(0, 1, 0, 1, 2, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x2 a1 = uint3x2(1349573078, 341995568, 495895326, 1515313790, 1676971657, 2131487088); + uint b1 = (524526253); + uint3x2 r1 = uint3x2(2, 0, 0, 2, 3, 4); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x2 a2 = uint3x2(2105094094, 542666029, 1646044372, 1447236569, 107215658, 19616726); + uint b2 = (1017891310); + uint3x2 r2 = uint3x2(2, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x2 a3 = uint3x2(896899915, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864); + uint b3 = (707389627); + uint3x2 r3 = uint3x2(1, 1, 2, 2, 2, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint3x2 b0 = uint3x2(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283); + uint3x2 r0 = uint3x2(6, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1773486938); + uint3x2 b1 = uint3x2(1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637); + uint3x2 r1 = uint3x2(1, 21, 1, 2, 38, 2); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (396671391); + uint3x2 b2 = uint3x2(784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453); + uint3x2 r2 = uint3x2(0, 0, 0, 0, 1, 8); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (1796936382); + uint3x2 b3 = uint3x2(1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083); + uint3x2 r3 = uint3x2(1, 1, 0, 2, 1, 5); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mod_wide_wide() + { + uint3x2 a0 = uint3x2(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460); + uint3x2 b0 = uint3x2(983050390, 771341152, 942375212, 367361754, 749500619, 750718852); + uint3x2 r0 = uint3x2(146150818, 303861001, 129072544, 308965362, 659881575, 251646608); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x2 a1 = uint3x2(861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + uint3x2 b1 = uint3x2(2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + uint3x2 r1 = uint3x2(861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x2 a2 = uint3x2(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + uint3x2 b2 = uint3x2(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + uint3x2 r2 = uint3x2(137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x2 a3 = uint3x2(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint3x2 b3 = uint3x2(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint3x2 r3 = uint3x2(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mod_wide_scalar() + { + uint3x2 a0 = uint3x2(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208); + uint b0 = (883951171); + uint3x2 r0 = uint3x2(164800505, 178226657, 130847333, 817702147, 820393245, 19002208); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x2 a1 = uint3x2(128329633, 896587769, 405208598, 1982762194, 959236935, 712321026); + uint b1 = (1464010899); + uint3x2 r1 = uint3x2(128329633, 896587769, 405208598, 518751295, 959236935, 712321026); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x2 a2 = uint3x2(172564850, 1085897743, 1607489717, 165478511, 647846716, 915707999); + uint b2 = (1540068445); + uint3x2 r2 = uint3x2(172564850, 1085897743, 67421272, 165478511, 647846716, 915707999); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x2 a3 = uint3x2(1602830401, 1084934806, 488509689, 2087820912, 377501313, 1778384846); + uint b3 = (928191283); + uint3x2 r3 = uint3x2(674639118, 156743523, 488509689, 231438346, 377501313, 850193563); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint3x2 b0 = uint3x2(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038); + uint3x2 r0 = uint3x2(242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1906405167); + uint3x2 b1 = uint3x2(247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643); + uint3x2 r1 = uint3x2(172552312, 145641729, 411110001, 159757961, 314361468, 608302524); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (2057984657); + uint3x2 b2 = uint3x2(1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997); + uint3x2 r2 = uint3x2(56500475, 596612526, 198242315, 463615283, 414206973, 974791660); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (840114986); + uint3x2 b3 = uint3x2(1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061); + uint3x2 r3 = uint3x2(840114986, 224955022, 840114986, 217454, 840114986, 17224681); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_plus() + { + uint3x2 a0 = uint3x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + uint3x2 r0 = uint3x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + TestUtils.AreEqual(+a0, r0); + + uint3x2 a1 = uint3x2(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + uint3x2 r1 = uint3x2(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + TestUtils.AreEqual(+a1, r1); + + uint3x2 a2 = uint3x2(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + uint3x2 r2 = uint3x2(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + TestUtils.AreEqual(+a2, r2); + + uint3x2 a3 = uint3x2(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + uint3x2 r3 = uint3x2(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_neg() + { + uint3x2 a0 = uint3x2(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593); + uint3x2 r0 = uint3x2(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703); + TestUtils.AreEqual(-a0, r0); + + uint3x2 a1 = uint3x2(33894270, 1115028238, 1636274969, 694995093, 1542206286, 213087293); + uint3x2 r1 = uint3x2(4261073026, 3179939058, 2658692327, 3599972203, 2752761010, 4081880003); + TestUtils.AreEqual(-a1, r1); + + uint3x2 a2 = uint3x2(243937487, 841085242, 574159094, 1687250035, 2057919693, 1175014732); + uint3x2 r2 = uint3x2(4051029809, 3453882054, 3720808202, 2607717261, 2237047603, 3119952564); + TestUtils.AreEqual(-a2, r2); + + uint3x2 a3 = uint3x2(1259809073, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454); + uint3x2 r3 = uint3x2(3035158223, 3104397376, 2247011524, 2174237432, 2854192368, 2809370842); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_prefix_inc() + { + uint3x2 a0 = uint3x2(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725); + uint3x2 r0 = uint3x2(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726); + TestUtils.AreEqual(++a0, r0); + + uint3x2 a1 = uint3x2(395072276, 913293639, 432884105, 1208161871, 1385544935, 1835605516); + uint3x2 r1 = uint3x2(395072277, 913293640, 432884106, 1208161872, 1385544936, 1835605517); + TestUtils.AreEqual(++a1, r1); + + uint3x2 a2 = uint3x2(831396561, 696475402, 1786514683, 993189311, 752093909, 1622410417); + uint3x2 r2 = uint3x2(831396562, 696475403, 1786514684, 993189312, 752093910, 1622410418); + TestUtils.AreEqual(++a2, r2); + + uint3x2 a3 = uint3x2(1398865015, 1705625817, 609525897, 172599489, 504806865, 519296647); + uint3x2 r3 = uint3x2(1398865016, 1705625818, 609525898, 172599490, 504806866, 519296648); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_postfix_inc() + { + uint3x2 a0 = uint3x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + uint3x2 r0 = uint3x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + TestUtils.AreEqual(a0++, r0); + + uint3x2 a1 = uint3x2(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + uint3x2 r1 = uint3x2(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + TestUtils.AreEqual(a1++, r1); + + uint3x2 a2 = uint3x2(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + uint3x2 r2 = uint3x2(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + TestUtils.AreEqual(a2++, r2); + + uint3x2 a3 = uint3x2(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + uint3x2 r3 = uint3x2(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint3x2_operator_prefix_dec() + { + uint3x2 a0 = uint3x2(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037); + uint3x2 r0 = uint3x2(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036); + TestUtils.AreEqual(--a0, r0); + + uint3x2 a1 = uint3x2(1782514098, 1434377580, 596759698, 1699290403, 1758478358, 1914114460); + uint3x2 r1 = uint3x2(1782514097, 1434377579, 596759697, 1699290402, 1758478357, 1914114459); + TestUtils.AreEqual(--a1, r1); + + uint3x2 a2 = uint3x2(71237375, 1022184392, 1310293956, 356565557, 18299409, 906734601); + uint3x2 r2 = uint3x2(71237374, 1022184391, 1310293955, 356565556, 18299408, 906734600); + TestUtils.AreEqual(--a2, r2); + + uint3x2 a3 = uint3x2(799006218, 1040798388, 1469596990, 1719228297, 220897829, 1454322707); + uint3x2 r3 = uint3x2(799006217, 1040798387, 1469596989, 1719228296, 220897828, 1454322706); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_postfix_dec() + { + uint3x2 a0 = uint3x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + uint3x2 r0 = uint3x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + TestUtils.AreEqual(a0--, r0); + + uint3x2 a1 = uint3x2(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + uint3x2 r1 = uint3x2(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + TestUtils.AreEqual(a1--, r1); + + uint3x2 a2 = uint3x2(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + uint3x2 r2 = uint3x2(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + TestUtils.AreEqual(a2--, r2); + + uint3x2 a3 = uint3x2(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + uint3x2 r3 = uint3x2(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_and_wide_wide() + { + uint3x2 a0 = uint3x2(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558); + uint3x2 b0 = uint3x2(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877); + uint3x2 r0 = uint3x2(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x2 a1 = uint3x2(1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + uint3x2 b1 = uint3x2(1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + uint3x2 r1 = uint3x2(1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x2 a2 = uint3x2(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + uint3x2 b2 = uint3x2(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + uint3x2 r2 = uint3x2(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x2 a3 = uint3x2(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint3x2 b3 = uint3x2(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint3x2 r3 = uint3x2(168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_and_wide_scalar() + { + uint3x2 a0 = uint3x2(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004); + uint b0 = (93423598); + uint3x2 r0 = uint3x2(1114348, 85033216, 26281518, 8488942, 25232710, 67176356); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x2 a1 = uint3x2(1941875181, 1365509729, 428270198, 607982857, 650270920, 1249238550); + uint b1 = (1236735839); + uint3x2 r1 = uint3x2(1102446925, 1092879937, 159777366, 3478793, 8523848, 1211438614); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x2 a2 = uint3x2(814629680, 143502472, 861733033, 1408932942, 957693145, 1567715668); + uint b2 = (1862276471); + uint3x2 r2 = uint3x2(536871216, 134218752, 587202593, 1124078662, 687871057, 1291850068); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x2 a3 = uint3x2(1102952410, 1599352836, 208656708, 1272226025, 462670926, 1817145060); + uint b3 = (322053683); + uint3x2 r3 = uint3x2(19932690, 319823872, 2228224, 51388449, 319947778, 140832); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint3x2 b0 = uint3x2(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958); + uint3x2 r0 = uint3x2(547170, 18752, 1074284806, 1140867104, 3672064, 3168358); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1159378889); + uint3x2 b1 = uint3x2(2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957); + uint3x2 r1 = uint3x2(1091605257, 1074836865, 9161, 1074299840, 83924360, 1092133121); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1248975349); + uint3x2 b2 = uint3x2(236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522); + uint3x2 r2 = uint3x2(168903041, 167844145, 1075925380, 1241581744, 140613985, 1074872496); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (2042776519); + uint3x2 b3 = uint3x2(56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404); + uint3x2 r3 = uint3x2(21118982, 1770146496, 1769996867, 1371555910, 1229064577, 1212170948); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_or_wide_wide() + { + uint3x2 a0 = uint3x2(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514); + uint3x2 b0 = uint3x2(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212); + uint3x2 r0 = uint3x2(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x2 a1 = uint3x2(948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + uint3x2 b1 = uint3x2(2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + uint3x2 r1 = uint3x2(2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x2 a2 = uint3x2(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + uint3x2 b2 = uint3x2(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + uint3x2 r2 = uint3x2(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x2 a3 = uint3x2(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint3x2 b3 = uint3x2(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint3x2 r3 = uint3x2(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_or_wide_scalar() + { + uint3x2 a0 = uint3x2(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449); + uint b0 = (1666102508); + uint3x2 r0 = uint3x2(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x2 a1 = uint3x2(1048929715, 860336789, 1637162093, 1227888278, 774029856, 879300408); + uint b1 = (1814263250); + uint3x2 r1 = uint3x2(2124903923, 2137520087, 1840741887, 1832089558, 1847850994, 2087419898); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x2 a2 = uint3x2(1179087439, 1977614655, 46921989, 1980838747, 284225881, 64304104); + uint b2 = (797240690); + uint3x2 r2 = uint3x2(1875378047, 2145709439, 802159991, 2140536699, 1073020283, 802553850); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x2 a3 = uint3x2(313591807, 1890090886, 521303722, 2021379070, 2055963359, 1511253082); + uint b3 = (1393862490); + uint3x2 r3 = uint3x2(1404413951, 1941766110, 1595340794, 2071982078, 2074060767, 1528293210); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint3x2 b0 = uint3x2(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481); + uint3x2 r0 = uint3x2(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1283571271); + uint3x2 b1 = uint3x2(2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741); + uint3x2 r1 = uint3x2(2109210439, 2128723919, 1558052575, 1608908663, 1838415447, 2141322991); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (627815046); + uint3x2 b2 = uint3x2(418822515, 83214352, 424663473, 447949225, 527022375, 1947148461); + uint3x2 r2 = uint3x2(1040169975, 637530774, 1030749111, 1073462191, 1064024999, 1970254511); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (305251437); + uint3x2 b3 = uint3x2(1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808); + uint3x2 r3 = uint3x2(1526199917, 2054417661, 1593566973, 1589235437, 1391839215, 335281389); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_xor_wide_wide() + { + uint3x2 a0 = uint3x2(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585); + uint3x2 b0 = uint3x2(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205); + uint3x2 r0 = uint3x2(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x2 a1 = uint3x2(220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + uint3x2 b1 = uint3x2(535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + uint3x2 r1 = uint3x2(314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x2 a2 = uint3x2(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + uint3x2 b2 = uint3x2(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + uint3x2 r2 = uint3x2(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x2 a3 = uint3x2(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint3x2 b3 = uint3x2(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint3x2 r3 = uint3x2(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_xor_wide_scalar() + { + uint3x2 a0 = uint3x2(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690); + uint b0 = (493665894); + uint3x2 r0 = uint3x2(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x2 a1 = uint3x2(535061373, 1305234431, 353786540, 1308626970, 1267729267, 125659640); + uint b1 = (289301586); + uint3x2 r1 = uint3x2(249169711, 1559375789, 69746430, 1597928520, 1521379105, 373493162); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x2 a2 = uint3x2(1315625690, 116862046, 375757978, 491079274, 191750702, 187129429); + uint b2 = (1730088797); + uint3x2 r2 = uint3x2(695588231, 1642603267, 1903858631, 2052737335, 1819471219, 1815630088); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x2 a3 = uint3x2(967051293, 653124416, 788984, 1479174924, 1680011736, 447453839); + uint b3 = (549951551); + uint3x2 r3 = uint3x2(425955362, 103447423, 550212039, 2028860211, 1155885543, 980157104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint3x2 b0 = uint3x2(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275); + uint3x2 r0 = uint3x2(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1416249064); + uint3x2 b1 = uint3x2(1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003); + uint3x2 r1 = uint3x2(442541185, 1037166305, 227827390, 327742460, 280796832, 544217587); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1774252400); + uint3x2 b2 = uint3x2(1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053); + uint3x2 r2 = uint3x2(440379266, 698081028, 2022864761, 1000608691, 1580745115, 667852101); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (221134131); + uint3x2 b3 = uint3x2(885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520); + uint3x2 r3 = uint3x2(971170309, 693458543, 113181510, 1584258954, 790500762, 1630705027); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_left_shift() + { + uint3x2 a0 = uint3x2(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717); + int b0 = (1321149625); + uint3x2 r0 = uint3x2(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544); + TestUtils.AreEqual(a0 << b0, r0); + + uint3x2 a1 = uint3x2(870301196, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302); + int b1 = (2058433484); + uint3x2 r1 = uint3x2(4225810432, 306012160, 2812907520, 20340736, 2519031808, 2733760512); + TestUtils.AreEqual(a1 << b1, r1); + + uint3x2 a2 = uint3x2(1079614371, 1664454606, 2045594989, 2077023268, 592678686, 297755411); + int b2 = (35667343); + uint3x2 r2 = uint3x2(3453059072, 3353804800, 2796978176, 1846673408, 3348037632, 2978578432); + TestUtils.AreEqual(a2 << b2, r2); + + uint3x2 a3 = uint3x2(1722762487, 37265945, 997793693, 1521705181, 263886278, 221147365); + int b3 = (1161625759); + uint3x2 r3 = uint3x2(2147483648, 2147483648, 2147483648, 2147483648, 0, 2147483648); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_right_shift() + { + uint3x2 a0 = uint3x2(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656); + int b0 = (1266801540); + uint3x2 r0 = uint3x2(34260456, 72583643, 101101614, 116295740, 44622419, 12284541); + TestUtils.AreEqual(a0 >> b0, r0); + + uint3x2 a1 = uint3x2(770466193, 572763124, 506619530, 426807581, 2031319045, 701927980); + int b1 = (1265099998); + uint3x2 r1 = uint3x2(0, 0, 0, 0, 1, 0); + TestUtils.AreEqual(a1 >> b1, r1); + + uint3x2 a2 = uint3x2(917785020, 185593382, 1102123711, 334005460, 1624751550, 280138733); + int b2 = (569504877); + uint3x2 r2 = uint3x2(112034, 22655, 134536, 40772, 198333, 34196); + TestUtils.AreEqual(a2 >> b2, r2); + + uint3x2 a3 = uint3x2(1598620011, 736389149, 1279158873, 408822762, 763607760, 348013684); + int b3 = (1840564178); + uint3x2 r3 = uint3x2(6098, 2809, 4879, 1559, 2912, 1327); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_not() + { + uint3x2 a0 = uint3x2(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339); + uint3x2 r0 = uint3x2(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956); + TestUtils.AreEqual(~a0, r0); + + uint3x2 a1 = uint3x2(1935567517, 472965491, 771711426, 627580960, 2061524024, 753208488); + uint3x2 r1 = uint3x2(2359399778, 3822001804, 3523255869, 3667386335, 2233443271, 3541758807); + TestUtils.AreEqual(~a1, r1); + + uint3x2 a2 = uint3x2(2097179283, 664744603, 1289372466, 1635981125, 1951018596, 1545651937); + uint3x2 r2 = uint3x2(2197788012, 3630222692, 3005594829, 2658986170, 2343948699, 2749315358); + TestUtils.AreEqual(~a2, r2); + + uint3x2 a3 = uint3x2(717936457, 1342785385, 869629475, 2045854321, 1282546942, 1562433528); + uint3x2 r3 = uint3x2(3577030838, 2952181910, 3425337820, 2249112974, 3012420353, 2732533767); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x2.gen.cs.meta new file mode 100644 index 0000000..43cda1b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bede9ed05d973fa43bff7c97121eab82 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x3.gen.cs new file mode 100644 index 0000000..86e0bb6 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x3.gen.cs @@ -0,0 +1,1244 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint3x3 + { + [TestCompiler] + public static void uint3x3_zero() + { + TestUtils.AreEqual(uint3x3.zero.c0.x, 0u); + TestUtils.AreEqual(uint3x3.zero.c0.y, 0u); + TestUtils.AreEqual(uint3x3.zero.c0.z, 0u); + TestUtils.AreEqual(uint3x3.zero.c1.x, 0u); + TestUtils.AreEqual(uint3x3.zero.c1.y, 0u); + TestUtils.AreEqual(uint3x3.zero.c1.z, 0u); + TestUtils.AreEqual(uint3x3.zero.c2.x, 0u); + TestUtils.AreEqual(uint3x3.zero.c2.y, 0u); + TestUtils.AreEqual(uint3x3.zero.c2.z, 0u); + } + + [TestCompiler] + public static void uint3x3_identity() + { + TestUtils.AreEqual(uint3x3.identity.c0.x, 1u); + TestUtils.AreEqual(uint3x3.identity.c0.y, 0u); + TestUtils.AreEqual(uint3x3.identity.c0.z, 0u); + TestUtils.AreEqual(uint3x3.identity.c1.x, 0u); + TestUtils.AreEqual(uint3x3.identity.c1.y, 1u); + TestUtils.AreEqual(uint3x3.identity.c1.z, 0u); + TestUtils.AreEqual(uint3x3.identity.c2.x, 0u); + TestUtils.AreEqual(uint3x3.identity.c2.y, 0u); + TestUtils.AreEqual(uint3x3.identity.c2.z, 1u); + } + + [TestCompiler] + public static void uint3x3_operator_equal_wide_wide() + { + uint3x3 a0 = uint3x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268); + uint3x3 b0 = uint3x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x3 a1 = uint3x3(1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + uint3x3 b1 = uint3x3(2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x3 a2 = uint3x3(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509, 1025529486, 2095601864, 193500113); + uint3x3 b2 = uint3x3(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580, 708665810, 1902328998, 1808456602); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x3 a3 = uint3x3(1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + uint3x3 b3 = uint3x3(563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_equal_wide_scalar() + { + uint3x3 a0 = uint3x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538); + uint b0 = (746972502); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x3 a1 = uint3x3(795585660, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077, 442746747, 1772925698); + uint b1 = (936027116); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x3 a2 = uint3x3(1884034177, 425476075, 1370577708, 597010220, 1249636005, 211986678, 1305479811, 255635293, 1150443719); + uint b2 = (451512860); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x3 a3 = uint3x3(177122433, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291, 872759249); + uint b3 = (511346787); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint3x3 b0 = uint3x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1009011238); + uint3x3 b1 = uint3x3(312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (534746610); + uint3x3 b2 = uint3x3(559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403, 1839429063, 223575614); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (79701214); + uint3x3 b3 = uint3x3(1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415, 1576985758); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_not_equal_wide_wide() + { + uint3x3 a0 = uint3x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135); + uint3x3 b0 = uint3x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x3 a1 = uint3x3(1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + uint3x3 b1 = uint3x3(1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x3 a2 = uint3x3(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890, 922313145, 2006448607, 1574579050); + uint3x3 b2 = uint3x3(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634, 1944210269, 92849031, 164029425); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x3 a3 = uint3x3(1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + uint3x3 b3 = uint3x3(628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_not_equal_wide_scalar() + { + uint3x3 a0 = uint3x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247); + uint b0 = (248693828); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x3 a1 = uint3x3(727205263, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883, 1622176923, 768370497); + uint b1 = (1640688041); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x3 a2 = uint3x3(1072798259, 1497830076, 1582645163, 1876273820, 90244766, 30493685, 904014575, 384643370, 11554610); + uint b2 = (1808712713); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x3 a3 = uint3x3(2016093187, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113, 765258490); + uint b3 = (1515760622); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint3x3 b0 = uint3x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (1512967900); + uint3x3 b1 = uint3x3(1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (1826089250); + uint3x3 b2 = uint3x3(1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024, 1936481966, 1366859342); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1775285431); + uint3x3 b3 = uint3x3(604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666, 358894860); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_wide_wide() + { + uint3x3 a0 = uint3x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233); + uint3x3 b0 = uint3x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337); + bool3x3 r0 = bool3x3(false, true, false, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x3 a1 = uint3x3(789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + uint3x3 b1 = uint3x3(1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool3x3 r1 = bool3x3(true, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x3 a2 = uint3x3(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162, 1638101724, 2044698552, 1543260981); + uint3x3 b2 = uint3x3(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133, 271967348, 1601249324, 1373999400); + bool3x3 r2 = bool3x3(true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x3 a3 = uint3x3(471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + uint3x3 b3 = uint3x3(1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool3x3 r3 = bool3x3(true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_wide_scalar() + { + uint3x3 a0 = uint3x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491); + uint b0 = (1491216667); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x3 a1 = uint3x3(469591900, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709, 1286331950, 380753337); + uint b1 = (1247103789); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x3 a2 = uint3x3(971148054, 1056649851, 1579735991, 689044913, 1960894027, 371987110, 867559111, 1703747625, 1698536333); + uint b2 = (1827886929); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x3 a3 = uint3x3(41716206, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606, 1891059504); + uint b3 = (243673862); + bool3x3 r3 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint3x3 b0 = uint3x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1102440676); + uint3x3 b1 = uint3x3(112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (358911716); + uint3x3 b2 = uint3x3(874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911, 1276652605, 593690439); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (771851138); + uint3x3 b3 = uint3x3(590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916, 168788814); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_wide_wide() + { + uint3x3 a0 = uint3x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537); + uint3x3 b0 = uint3x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808); + bool3x3 r0 = bool3x3(true, true, false, true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x3 a1 = uint3x3(1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + uint3x3 b1 = uint3x3(976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x3 a2 = uint3x3(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622, 1295065160, 715285504, 1130323487); + uint3x3 b2 = uint3x3(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265, 335209251, 1094341422, 1465325455); + bool3x3 r2 = bool3x3(false, false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x3 a3 = uint3x3(677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + uint3x3 b3 = uint3x3(390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool3x3 r3 = bool3x3(true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_wide_scalar() + { + uint3x3 a0 = uint3x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448); + uint b0 = (438688675); + bool3x3 r0 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x3 a1 = uint3x3(304028799, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211, 2063134811, 1577403353); + uint b1 = (893125636); + bool3x3 r1 = bool3x3(false, false, false, true, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x3 a2 = uint3x3(64009107, 1143565920, 3715845, 689362811, 263973424, 1045140419, 1058332184, 524569092, 1183316983); + uint b2 = (1462961460); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x3 a3 = uint3x3(1107974092, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732, 1284938191); + uint b3 = (212839726); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint3x3 b0 = uint3x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (741776730); + uint3x3 b1 = uint3x3(732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1858177345); + uint3x3 b2 = uint3x3(299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296, 292652611, 1002628348); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (927789921); + uint3x3 b3 = uint3x3(108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261, 267985383); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_equal_wide_wide() + { + uint3x3 a0 = uint3x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003); + uint3x3 b0 = uint3x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766); + bool3x3 r0 = bool3x3(false, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x3 a1 = uint3x3(1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + uint3x3 b1 = uint3x3(1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool3x3 r1 = bool3x3(false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x3 a2 = uint3x3(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884, 912169992, 1992682021, 1619593455); + uint3x3 b2 = uint3x3(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017, 620752145, 1213693681, 1281818305); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x3 a3 = uint3x3(1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + uint3x3 b3 = uint3x3(1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool3x3 r3 = bool3x3(false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_equal_wide_scalar() + { + uint3x3 a0 = uint3x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706); + uint b0 = (1688048545); + bool3x3 r0 = bool3x3(false, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x3 a1 = uint3x3(1745758438, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948, 2017733017, 804204255); + uint b1 = (532949158); + bool3x3 r1 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x3 a2 = uint3x3(981729559, 910922522, 2079225209, 26179915, 238796519, 1917813750, 1258115260, 20607406, 1337879822); + uint b2 = (2032949254); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x3 a3 = uint3x3(959460446, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244, 426908235); + uint b3 = (1599429457); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint3x3 b0 = uint3x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (11953554); + uint3x3 b1 = uint3x3(1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (957887737); + uint3x3 b2 = uint3x3(117849810, 1348693584, 105489302, 259034238, 530713566, 601413850, 830430286, 145552297, 1697295044); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (1150680564); + uint3x3 b3 = uint3x3(2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260, 733876180); + bool3x3 r3 = bool3x3(true, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_equal_wide_wide() + { + uint3x3 a0 = uint3x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730); + uint3x3 b0 = uint3x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580); + bool3x3 r0 = bool3x3(false, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x3 a1 = uint3x3(1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + uint3x3 b1 = uint3x3(1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x3 a2 = uint3x3(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474, 605043041, 1707339660, 2038122892); + uint3x3 b2 = uint3x3(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253, 2025187918, 750755999, 869709740); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x3 a3 = uint3x3(345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + uint3x3 b3 = uint3x3(1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool3x3 r3 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_equal_wide_scalar() + { + uint3x3 a0 = uint3x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196); + uint b0 = (1470533736); + bool3x3 r0 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x3 a1 = uint3x3(1604309397, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021, 196833647, 1596738181); + uint b1 = (829548642); + bool3x3 r1 = bool3x3(true, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x3 a2 = uint3x3(1905036391, 1584946560, 370941146, 440219668, 1607345862, 1449142607, 1223010129, 379014762, 1719435169); + uint b2 = (1771391775); + bool3x3 r2 = bool3x3(true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x3 a3 = uint3x3(258833609, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895, 192092521); + uint b3 = (1389585003); + bool3x3 r3 = bool3x3(false, false, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint3x3 b0 = uint3x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1947039008); + uint3x3 b1 = uint3x3(1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577, 173706579, 625318949); + bool3x3 r1 = bool3x3(true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (519443238); + uint3x3 b2 = uint3x3(1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308, 479913036, 984991199); + bool3x3 r2 = bool3x3(false, false, false, true, false, false, true, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (172993285); + uint3x3 b3 = uint3x3(2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513, 474197678); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_add_wide_wide() + { + uint3x3 a0 = uint3x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704); + uint3x3 b0 = uint3x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231); + uint3x3 r0 = uint3x3(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161, 2285462935); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x3 a1 = uint3x3(192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + uint3x3 b1 = uint3x3(908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + uint3x3 r1 = uint3x3(1101613923, 3495777492, 1384643660, 4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x3 a2 = uint3x3(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366, 941872903, 906908654, 1940071697); + uint3x3 b2 = uint3x3(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905, 2106992817, 1994483489, 539473); + uint3x3 r2 = uint3x3(1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271, 3048865720, 2901392143, 1940611170); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x3 a3 = uint3x3(862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + uint3x3 b3 = uint3x3(236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + uint3x3 r3 = uint3x3(1099044556, 2362767916, 1285092016, 2641863205, 3757383291, 604086579, 2150755997, 3626413591, 2674116169); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_add_wide_scalar() + { + uint3x3 a0 = uint3x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861); + uint b0 = (2124409227); + uint3x3 r0 = uint3x3(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528, 4127431088); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x3 a1 = uint3x3(1635971971, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654, 756559204, 1818718931); + uint b1 = (1160398286); + uint3x3 r1 = uint3x3(2796370257, 1245844488, 2228551252, 2399785386, 2658075174, 2887875771, 2255836940, 1916957490, 2979117217); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x3 a2 = uint3x3(658923552, 1585755398, 692843300, 1068593469, 1704776233, 577782260, 736972565, 711894571, 564257439); + uint b2 = (1610518921); + uint3x3 r2 = uint3x3(2269442473, 3196274319, 2303362221, 2679112390, 3315295154, 2188301181, 2347491486, 2322413492, 2174776360); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x3 a3 = uint3x3(2051736283, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190, 2092767444); + uint b3 = (1572837697); + uint3x3 r3 = uint3x3(3624573980, 3200844242, 3428537960, 2229586479, 1845612213, 3489970896, 2401160670, 3689647887, 3665605141); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint3x3 b0 = uint3x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825); + uint3x3 r0 = uint3x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150, 1387123903); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (1557774949); + uint3x3 b1 = uint3x3(779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874); + uint3x3 r1 = uint3x3(2337549889, 2669316251, 2340821394, 2687938893, 1846054533, 2955458810, 3194358438, 2231038288, 3027075823); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (14855965); + uint3x3 b2 = uint3x3(1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835, 1992405574, 1213924458); + uint3x3 r2 = uint3x3(1131492964, 1503719265, 1615846851, 205507266, 1322315733, 934941804, 2097085800, 2007261539, 1228780423); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (505841452); + uint3x3 b3 = uint3x3(981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886, 1459523189); + uint3x3 r3 = uint3x3(1487262614, 1994179151, 1619668092, 2311987960, 2347632674, 712452303, 1032813405, 1742201338, 1965364641); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_sub_wide_wide() + { + uint3x3 a0 = uint3x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185); + uint3x3 b0 = uint3x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303); + uint3x3 r0 = uint3x3(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549, 1234495882); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x3 a1 = uint3x3(579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + uint3x3 b1 = uint3x3(1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + uint3x3 r1 = uint3x3(3456019244, 3562788131, 3413504982, 4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x3 a2 = uint3x3(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454, 425848588, 2026967474, 1128492011); + uint3x3 b2 = uint3x3(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855, 609588723, 1054324682, 1678086165); + uint3x3 r2 = uint3x3(3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895, 4111227161, 972642792, 3745373142); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x3 a3 = uint3x3(61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + uint3x3 b3 = uint3x3(1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + uint3x3 r3 = uint3x3(2826807304, 3564332942, 1218011798, 1846728662, 3739059778, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_sub_wide_scalar() + { + uint3x3 a0 = uint3x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200); + uint b0 = (462232403); + uint3x3 r0 = uint3x3(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412, 4113909093); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x3 a1 = uint3x3(87530840, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635, 815920639, 1829033117); + uint b1 = (1913724431); + uint3x3 r1 = uint3x3(2468773705, 127868905, 2938482855, 3500294313, 3971619597, 3200333054, 3197625500, 3197163504, 4210275982); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x3 a2 = uint3x3(1792801932, 1418937976, 1277257189, 2092779398, 642236742, 1605250794, 819644478, 1468003019, 128303186); + uint b2 = (1113440549); + uint3x3 r2 = uint3x3(679361383, 305497427, 163816640, 979338849, 3823763489, 491810245, 4001171225, 354562470, 3309829933); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x3 a3 = uint3x3(553494257, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204, 1835969317); + uint b3 = (1017126971); + uint3x3 r3 = uint3x3(3831334582, 982617811, 1000145787, 800864793, 263858529, 3954815180, 620905642, 4227601529, 818842346); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint3x3 b0 = uint3x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421); + uint3x3 r0 = uint3x3(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128, 4197201280); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (264712893); + uint3x3 b1 = uint3x3(1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254); + uint3x3 r1 = uint3x3(3327824122, 2741567441, 3131244080, 3300934729, 3482299793, 3228957470, 4041568360, 3592551660, 4215013935); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1082267918); + uint3x3 b2 = uint3x3(907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777, 730060552, 1444397827); + uint3x3 r2 = uint3x3(174401222, 3560350091, 621927350, 120113420, 525154457, 3676018505, 3397136437, 352207366, 3932837387); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (853570556); + uint3x3 b3 = uint3x3(138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026, 902880656); + uint3x3 r3 = uint3x3(714734124, 4135347424, 135481026, 346813166, 3932089811, 4212225105, 3151251397, 3178555826, 4245657196); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mul_wide_wide() + { + uint3x3 a0 = uint3x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445); + uint3x3 b0 = uint3x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331); + uint3x3 r0 = uint3x3(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228, 2640799263); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x3 a1 = uint3x3(1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + uint3x3 b1 = uint3x3(1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + uint3x3 r1 = uint3x3(2093463192, 3087460678, 3161406466, 990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x3 a2 = uint3x3(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234, 899438811, 1765718681, 409003054); + uint3x3 b2 = uint3x3(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952, 675813713, 999254223, 1326064110); + uint3x3 r2 = uint3x3(1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720, 1891467339, 335415735, 1128927428); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x3 a3 = uint3x3(2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + uint3x3 b3 = uint3x3(788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + uint3x3 r3 = uint3x3(2638713520, 2861115658, 479369680, 3928339236, 4044803354, 48406862, 2297104000, 4019846068, 2811510105); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mul_wide_scalar() + { + uint3x3 a0 = uint3x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632); + uint b0 = (1476837906); + uint3x3 r0 = uint3x3(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778, 1736252960); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x3 a1 = uint3x3(573770299, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467, 1186856590, 890343818); + uint b1 = (1958912969); + uint3x3 r1 = uint3x3(3595344211, 583613531, 2609540870, 377032876, 2454084431, 3835667937, 506042323, 3286058878, 2903122778); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x3 a2 = uint3x3(800117742, 1338014500, 1688964615, 1439447294, 387721300, 1192501703, 1613845584, 76318055, 124378112); + uint b2 = (606927173); + uint3x3 r2 = uint3x3(3182664998, 4040635572, 1687557859, 1193437814, 1547735716, 2273028515, 2785905040, 1364534211, 3330558976); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x3 a3 = uint3x3(970518733, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648, 227492421); + uint b3 = (1370700538); + uint3x3 r3 = uint3x3(3770718770, 45251204, 2784815084, 28492454, 1649233534, 4185812774, 2668749740, 1373293008, 3727251810); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint3x3 b0 = uint3x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483); + uint3x3 r0 = uint3x3(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328, 1623617844); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1178393968); + uint3x3 b1 = uint3x3(1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535); + uint3x3 r1 = uint3x3(1196573760, 592673296, 209320208, 3942500560, 1007302672, 3390780416, 3294337904, 2248146480, 1026909584); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1821413700); + uint3x3 b2 = uint3x3(677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236, 657101857, 1275563580); + uint3x3 r2 = uint3x3(118306580, 1091472052, 1879587908, 2176549780, 4108343324, 1015975816, 1406756912, 3284535748, 3411133424); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (1031291523); + uint3x3 b3 = uint3x3(1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263, 2022856151); + uint3x3 r3 = uint3x3(2179584169, 2776004243, 358436435, 3342466462, 469974843, 2393957023, 2519661334, 1424675509, 3838532357); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_div_wide_wide() + { + uint3x3 a0 = uint3x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351); + uint3x3 b0 = uint3x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057); + uint3x3 r0 = uint3x3(1, 0, 0, 8, 0, 0, 2, 7, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x3 a1 = uint3x3(1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + uint3x3 b1 = uint3x3(254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + uint3x3 r1 = uint3x3(5, 0, 0, 0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x3 a2 = uint3x3(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343, 1735128704, 816492592, 2012272185); + uint3x3 b2 = uint3x3(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844, 616122946, 2035322800, 1324534444); + uint3x3 r2 = uint3x3(0, 1, 1, 1, 1, 0, 2, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x3 a3 = uint3x3(632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + uint3x3 b3 = uint3x3(1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + uint3x3 r3 = uint3x3(0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_div_wide_scalar() + { + uint3x3 a0 = uint3x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568); + uint b0 = (947861580); + uint3x3 r0 = uint3x3(0, 1, 0, 1, 2, 1, 1, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x3 a1 = uint3x3(495895326, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372, 1447236569, 107215658); + uint b1 = (1515313790); + uint3x3 r1 = uint3x3(0, 1, 1, 1, 0, 0, 1, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x3 a2 = uint3x3(19616726, 707389627, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864, 1200843642, 206442634); + uint b2 = (896899915); + uint3x3 r2 = uint3x3(0, 0, 1, 1, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x3 a3 = uint3x3(1508567412, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918, 1515555001); + uint b3 = (1825701056); + uint3x3 r3 = uint3x3(0, 0, 0, 0, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint3x3 b0 = uint3x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373); + uint3x3 r0 = uint3x3(6, 0, 0, 0, 2, 0, 0, 1, 14); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1476877645); + uint3x3 b1 = uint3x3(653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729); + uint3x3 r1 = uint3x3(2, 32, 2, 3, 1, 1, 0, 0, 5); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (48974453); + uint3x3 b2 = uint3x3(1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083, 131970646, 1320586926); + uint3x3 r2 = uint3x3(0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (366944102); + uint3x3 b3 = uint3x3(1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534, 126616016); + uint3x3 r3 = uint3x3(0, 1, 0, 0, 0, 8, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mod_wide_wide() + { + uint3x3 a0 = uint3x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078); + uint3x3 b0 = uint3x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442); + uint3x3 r0 = uint3x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x3 a1 = uint3x3(1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + uint3x3 b1 = uint3x3(647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + uint3x3 r1 = uint3x3(164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x3 a2 = uint3x3(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189, 1402964707, 2138294579, 1641714420); + uint3x3 b2 = uint3x3(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748, 798137669, 79717779, 1233582258); + uint3x3 r2 = uint3x3(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189, 604827038, 65632325, 408132162); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x3 a3 = uint3x3(1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + uint3x3 b3 = uint3x3(1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + uint3x3 r3 = uint3x3(514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mod_wide_scalar() + { + uint3x3 a0 = uint3x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769); + uint b0 = (883951171); + uint3x3 r0 = uint3x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x3 a1 = uint3x3(405208598, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717, 165478511, 647846716); + uint b1 = (1982762194); + uint3x3 r1 = uint3x3(405208598, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717, 165478511, 647846716); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x3 a2 = uint3x3(915707999, 928191283, 1084934806, 488509689, 2087820912, 377501313, 1778384846, 1216011754, 812183417); + uint b2 = (1602830401); + uint3x3 r2 = uint3x3(915707999, 928191283, 1084934806, 488509689, 484990511, 377501313, 175554445, 1216011754, 812183417); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x3 a3 = uint3x3(1153802502, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372, 586777590); + uint b3 = (1642671870); + uint3x3 r3 = uint3x3(1153802502, 282038872, 665297470, 1568090825, 408311072, 435886407, 453990946, 88993502, 586777590); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint3x3 b0 = uint3x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573); + uint3x3 r0 = uint3x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1495295166); + uint3x3 b1 = uint3x3(873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842); + uint3x3 r1 = uint3x3(621971563, 433932700, 197192523, 1495295166, 494553075, 33923035, 1495295166, 698110479, 673406324); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1083192997); + uint3x3 b2 = uint3x3(840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061, 730088119, 1444946139); + uint3x3 r2 = uint3x3(243078011, 1083192997, 468033033, 1083192997, 1875643, 1083192997, 95724631, 353104878, 1083192997); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1305792037); + uint3x3 b3 = uint3x3(1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894, 1342085447); + uint3x3 r3 = uint3x3(194963026, 433068456, 137860321, 1305792037, 282934571, 1305792037, 1305792037, 63018673, 1305792037); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_plus() + { + uint3x3 a0 = uint3x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897); + uint3x3 r0 = uint3x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a0, r0); + + uint3x3 a1 = uint3x3(1287765427, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954, 1723005749, 409076474); + uint3x3 r1 = uint3x3(1287765427, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a1, r1); + + uint3x3 a2 = uint3x3(591286416, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612); + uint3x3 r2 = uint3x3(591286416, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612); + TestUtils.AreEqual(+a2, r2); + + uint3x3 a3 = uint3x3(500666137, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485, 1012749225); + uint3x3 r3 = uint3x3(500666137, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485, 1012749225); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_neg() + { + uint3x3 a0 = uint3x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238); + uint3x3 r0 = uint3x3(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947, 3179939058); + TestUtils.AreEqual(-a0, r0); + + uint3x3 a1 = uint3x3(1636274969, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094, 1687250035, 2057919693); + uint3x3 r1 = uint3x3(2658692327, 2752761010, 4081880003, 4051029809, 3953445021, 3453882054, 3720808202, 2607717261, 2237047603); + TestUtils.AreEqual(-a1, r1); + + uint3x3 a2 = uint3x3(1175014732, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454, 431666091, 1387601718); + uint3x3 r2 = uint3x3(3119952564, 3082501970, 3104397376, 2247011524, 2174237432, 2854192368, 2809370842, 3863301205, 2907365578); + TestUtils.AreEqual(-a2, r2); + + uint3x3 a3 = uint3x3(1745651998, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868, 650922971); + uint3x3 r3 = uint3x3(2549315298, 3175007490, 3555835012, 2340793982, 2585110198, 2458456246, 2632160843, 3788822428, 3644044325); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_prefix_inc() + { + uint3x3 a0 = uint3x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639); + uint3x3 r0 = uint3x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a0, r0); + + uint3x3 a1 = uint3x3(432884105, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683, 993189311, 752093909); + uint3x3 r1 = uint3x3(432884106, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a1, r1); + + uint3x3 a2 = uint3x3(1622410417, 241906003, 1705625817, 609525897, 172599489, 504806865, 519296647, 281942776, 1541894135); + uint3x3 r2 = uint3x3(1622410418, 241906004, 1705625818, 609525898, 172599490, 504806866, 519296648, 281942777, 1541894136); + TestUtils.AreEqual(++a2, r2); + + uint3x3 a3 = uint3x3(924683935, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111, 1414867743); + uint3x3 r3 = uint3x3(924683936, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112, 1414867744); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_postfix_inc() + { + uint3x3 a0 = uint3x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607); + uint3x3 r0 = uint3x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a0++, r0); + + uint3x3 a1 = uint3x3(708474528, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530, 506142468, 732199129); + uint3x3 r1 = uint3x3(708474528, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a1++, r1); + + uint3x3 a2 = uint3x3(2026873940, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901); + uint3x3 r2 = uint3x3(2026873940, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901); + TestUtils.AreEqual(a2++, r2); + + uint3x3 a3 = uint3x3(101238629, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730, 1209169651); + uint3x3 r3 = uint3x3(101238629, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730, 1209169651); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint3x3_operator_prefix_dec() + { + uint3x3 a0 = uint3x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580); + uint3x3 r0 = uint3x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a0, r0); + + uint3x3 a1 = uint3x3(596759698, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956, 356565557, 18299409); + uint3x3 r1 = uint3x3(596759697, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a1, r1); + + uint3x3 a2 = uint3x3(906734601, 1383897383, 1040798388, 1469596990, 1719228297, 220897829, 1454322707, 678025545, 14227726); + uint3x3 r2 = uint3x3(906734600, 1383897382, 1040798387, 1469596989, 1719228296, 220897828, 1454322706, 678025544, 14227725); + TestUtils.AreEqual(--a2, r2); + + uint3x3 a3 = uint3x3(293093918, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380, 2083512379); + uint3x3 r3 = uint3x3(293093917, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379, 2083512378); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_postfix_dec() + { + uint3x3 a0 = uint3x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285); + uint3x3 r0 = uint3x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a0--, r0); + + uint3x3 a1 = uint3x3(2017728859, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045, 2095777993, 670715645); + uint3x3 r1 = uint3x3(2017728859, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a1--, r1); + + uint3x3 a2 = uint3x3(324944916, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377); + uint3x3 r2 = uint3x3(324944916, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377); + TestUtils.AreEqual(a2--, r2); + + uint3x3 a3 = uint3x3(181847458, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130, 2016700604); + uint3x3 r3 = uint3x3(181847458, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130, 2016700604); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_and_wide_wide() + { + uint3x3 a0 = uint3x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114); + uint3x3 b0 = uint3x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139); + uint3x3 r0 = uint3x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x3 a1 = uint3x3(1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + uint3x3 b1 = uint3x3(1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + uint3x3 r1 = uint3x3(1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x3 a2 = uint3x3(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372, 181537307, 130347414, 1240828622); + uint3x3 b2 = uint3x3(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586, 1855189321, 185194029, 810374380); + uint3x3 r2 = uint3x3(168582, 1107890178, 67125280, 880844837, 541065292, 337646976, 177340425, 50384900, 4522188); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x3 a3 = uint3x3(526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + uint3x3 b3 = uint3x3(133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + uint3x3 r3 = uint3x3(122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_and_wide_scalar() + { + uint3x3 a0 = uint3x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729); + uint b0 = (93423598); + uint3x3 r0 = uint3x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x3 a1 = uint3x3(428270198, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033, 1408932942, 957693145); + uint b1 = (607982857); + uint3x3 r1 = uint3x3(262144, 603983880, 3478528, 537657600, 603985153, 853000, 538771465, 3675144, 538252297); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x3 a2 = uint3x3(1567715668, 322053683, 1599352836, 208656708, 1272226025, 462670926, 1817145060, 1466722981, 1817277774); + uint b2 = (1102952410); + uint3x3 r2 = uint3x3(1093742928, 19932690, 1091842048, 2986304, 1100259528, 26313802, 1074603712, 1093411456, 1074869578); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x3 a3 = uint3x3(818900583, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061, 398141788); + uint b3 = (772681077); + uint3x3 r3 = uint3x3(537799781, 537788480, 537527636, 604374309, 67241029, 705568773, 671747424, 167912453, 101329236); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint3x3 b0 = uint3x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981); + uint3x3 r0 = uint3x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (270607307); + uint3x3 b1 = uint3x3(1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961); + uint3x3 r1 = uint3x3(270533570, 268501384, 8449, 2163137, 74123, 74507, 2163594, 66184, 270598977); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1436238522); + uint3x3 b2 = uint3x3(2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404, 2255485, 1814885263); + uint3x3 r2 = uint3x3(1367491202, 18563090, 1099055776, 1167655482, 1434992658, 1092288688, 1075397272, 148024, 1141392010); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1711986588); + uint3x3 b3 = uint3x3(1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007, 1808619374); + uint3x3 r3 = uint3x3(1140883976, 637536128, 1711801728, 101224968, 1610633224, 67682712, 1644860304, 67814532, 1644713740); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_or_wide_wide() + { + uint3x3 a0 = uint3x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222); + uint3x3 b0 = uint3x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169); + uint3x3 r0 = uint3x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x3 a1 = uint3x3(396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + uint3x3 b1 = uint3x3(1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + uint3x3 r1 = uint3x3(1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x3 a2 = uint3x3(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074, 543305337, 662107399, 1934997335); + uint3x3 b2 = uint3x3(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841, 108816721, 1694053551, 452638547); + uint3x3 r2 = uint3x3(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171, 645820281, 1744827823, 2080356183); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x3 a3 = uint3x3(436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + uint3x3 b3 = uint3x3(1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + uint3x3 r3 = uint3x3(1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_or_wide_scalar() + { + uint3x3 a0 = uint3x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789); + uint b0 = (1666102508); + uint3x3 r0 = uint3x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x3 a1 = uint3x3(1637162093, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989, 1980838747, 284225881); + uint b1 = (1227888278); + uint3x3 r1 = uint3x3(1773477631, 1865602742, 2105089982, 1333229279, 1874132982, 2112886719, 1274806167, 2133931999, 1508964319); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x3 a2 = uint3x3(64304104, 1393862490, 1890090886, 521303722, 2021379070, 2055963359, 1511253082, 1775629833, 1142751163); + uint b2 = (313591807); + uint3x3 r2 = uint3x3(334837759, 1404413951, 1924759551, 531855359, 2063323135, 2059110399, 1521739775, 2079717375, 1455292415); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x3 a3 = uint3x3(1767274359, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200, 1353013374); + uint b3 = (1421981808); + uint3x3 r3 = uint3x3(2111307639, 1576794359, 1559755519, 1961475324, 1455931127, 2096496501, 1607466226, 1440595320, 1424357502); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint3x3 b0 = uint3x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710); + uint3x3 r0 = uint3x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1348323481); + uint3x3 b1 = uint3x3(1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473, 447949225, 527022375); + uint3x3 r1 = uint3x3(1409150395, 2044710617, 2138963197, 1971321503, 1493170683, 1425918105, 1499453881, 1526720953, 1602091455); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1947148461); + uint3x3 b2 = uint3x3(305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808, 2052547661, 582843231); + uint3x3 r2 = uint3x3(1983898861, 2127540973, 2088725757, 2129601277, 2124393197, 1961878511, 1976547565, 2120180973, 1992260607); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (656983670); + uint3x3 b3 = uint3x3(1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598, 1098359242); + uint3x3 r3 = uint3x3(2012151678, 1736044278, 931000318, 1060691710, 666879990, 1877598071, 800640759, 2139019006, 1736435710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_xor_wide_wide() + { + uint3x3 a0 = uint3x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340); + uint3x3 b0 = uint3x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711); + uint3x3 r0 = uint3x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x3 a1 = uint3x3(643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + uint3x3 b1 = uint3x3(1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + uint3x3 r1 = uint3x3(1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x3 a2 = uint3x3(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405, 1972524935, 91962333, 1960780785); + uint3x3 b2 = uint3x3(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483, 1340735463, 546583617, 1034420616); + uint3x3 r2 = uint3x3(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070, 981182560, 636424092, 1232544377); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x3 a3 = uint3x3(1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + uint3x3 b3 = uint3x3(262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + uint3x3 r3 = uint3x3(1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_xor_wide_scalar() + { + uint3x3 a0 = uint3x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431); + uint b0 = (493665894); + uint3x3 r0 = uint3x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x3 a1 = uint3x3(353786540, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978, 491079274, 191750702); + uint b1 = (1308626970); + uint3x3 r1 = uint3x3(1528187574, 93328233, 1232959970, 6998720, 689905479, 1224162372, 1483050112, 1397053040, 1164833332); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x3 a2 = uint3x3(187129429, 549951551, 653124416, 788984, 1479174924, 1680011736, 447453839, 890841598, 293394300); + uint b2 = (967051293); + uint3x3 r2 = uint3x3(847468104, 425955362, 524938077, 967311845, 1636721425, 1569126853, 588223122, 213721571, 685301601); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x3 a3 = uint3x3(527727631, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239, 476052372); + uint b3 = (529042816); + uint3x3 r3 = uint3x3(16576911, 1307134418, 1483505245, 548297055, 871053291, 475694844, 1940126849, 528638031, 64452116); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint3x3 b0 = uint3x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217); + uint3x3 r0 = uint3x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1509843030); + uint3x3 b1 = uint3x3(1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099); + uint3x3 r1 = uint3x3(505195842, 489209886, 769935181, 809406758, 704722596, 430263842, 1219290719, 194675349, 1845940413); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1309568053); + uint3x3 b2 = uint3x3(221134131, 885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520, 86594349, 2006985393); + uint3x3 r2 = uint3x3(1126191366, 2059580163, 1786054505, 1168069184, 491622028, 1816020124, 571655301, 1260863256, 967722628); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1431761813); + uint3x3 b3 = uint3x3(905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615, 711527976); + uint3x3 r3 = uint3x3(1622008160, 266913576, 1579801450, 2144176381, 1125708626, 1502456780, 143731639, 2065991874, 2134900157); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_left_shift() + { + uint3x3 a0 = uint3x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230); + int b0 = (1321149625); + uint3x3 r0 = uint3x3(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832, 2885681152); + TestUtils.AreEqual(a0 << b0, r0); + + uint3x3 a1 = uint3x3(1531607705, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989, 2077023268, 592678686); + int b1 = (1360008038); + uint3x3 r1 = uint3x3(3533612608, 106468736, 2458634112, 375843008, 2282709952, 3445879680, 2069060416, 4080470272, 3571697536); + TestUtils.AreEqual(a1 << b1, r1); + + uint3x3 a2 = uint3x3(297755411, 1161625759, 37265945, 997793693, 1521705181, 263886278, 221147365, 2084190583, 230910816); + int b2 = (1722762487); + uint3x3 r2 = uint3x3(2306867200, 1333788672, 209715200, 3464495104, 1853882368, 3808428032, 1920991232, 3145728000, 2952790016); + TestUtils.AreEqual(a2 << b2, r2); + + uint3x3 a3 = uint3x3(71403448, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192, 740058147); + int b3 = (481375728); + uint3x3 r3 = uint3x3(2276982784, 3986685952, 1071316992, 705495040, 1989148672, 1981153280, 2880831488, 1022361600, 1680015360); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_right_shift() + { + uint3x3 a0 = uint3x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124); + int b0 = (1266801540); + uint3x3 r0 = uint3x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695); + TestUtils.AreEqual(a0 >> b0, r0); + + uint3x3 a1 = uint3x3(506619530, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711, 334005460, 1624751550); + int b1 = (426807581); + uint3x3 r1 = uint3x3(0, 3, 1, 1, 1, 0, 2, 0, 3); + TestUtils.AreEqual(a1 >> b1, r1); + + uint3x3 a2 = uint3x3(280138733, 1840564178, 736389149, 1279158873, 408822762, 763607760, 348013684, 1568185874, 774126687); + int b2 = (1598620011); + uint3x3 r2 = uint3x3(136786, 898712, 359565, 624589, 199620, 372855, 169928, 765715, 377991); + TestUtils.AreEqual(a2 >> b2, r2); + + uint3x3 a3 = uint3x3(1587054000, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381, 1234295294); + int b3 = (600069797); + uint3x3 r3 = uint3x3(49595437, 924264, 58780668, 11005463, 36390889, 13295044, 5829453, 34370605, 38571727); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_not() + { + uint3x3 a0 = uint3x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491); + uint3x3 r0 = uint3x3(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439, 3822001804); + TestUtils.AreEqual(~a0, r0); + + uint3x3 a1 = uint3x3(771711426, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466, 1635981125, 1951018596); + uint3x3 r1 = uint3x3(3523255869, 2233443271, 3541758807, 2197788012, 2991944802, 3630222692, 3005594829, 2658986170, 2343948699); + TestUtils.AreEqual(~a1, r1); + + uint3x3 a2 = uint3x3(1545651937, 1284504687, 1342785385, 869629475, 2045854321, 1282546942, 1562433528, 1824824810, 1736570715); + uint3x3 r2 = uint3x3(2749315358, 3010462608, 2952181910, 3425337820, 2249112974, 3012420353, 2732533767, 2470142485, 2558396580); + TestUtils.AreEqual(~a2, r2); + + uint3x3 a3 = uint3x3(508906058, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829, 1227946838); + uint3x3 r3 = uint3x3(3786061237, 2427548539, 3906437021, 3599787443, 2528029256, 3397043669, 2478776831, 2932060466, 3067020457); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x3.gen.cs.meta new file mode 100644 index 0000000..2d90954 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3db3407f5e21b84d8c21645d5517e9b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x4.gen.cs new file mode 100644 index 0000000..bb13e12 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x4.gen.cs @@ -0,0 +1,1233 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint3x4 + { + [TestCompiler] + public static void uint3x4_zero() + { + TestUtils.AreEqual(uint3x4.zero.c0.x, 0u); + TestUtils.AreEqual(uint3x4.zero.c0.y, 0u); + TestUtils.AreEqual(uint3x4.zero.c0.z, 0u); + TestUtils.AreEqual(uint3x4.zero.c1.x, 0u); + TestUtils.AreEqual(uint3x4.zero.c1.y, 0u); + TestUtils.AreEqual(uint3x4.zero.c1.z, 0u); + TestUtils.AreEqual(uint3x4.zero.c2.x, 0u); + TestUtils.AreEqual(uint3x4.zero.c2.y, 0u); + TestUtils.AreEqual(uint3x4.zero.c2.z, 0u); + TestUtils.AreEqual(uint3x4.zero.c3.x, 0u); + TestUtils.AreEqual(uint3x4.zero.c3.y, 0u); + TestUtils.AreEqual(uint3x4.zero.c3.z, 0u); + } + + [TestCompiler] + public static void uint3x4_operator_equal_wide_wide() + { + uint3x4 a0 = uint3x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + uint3x4 b0 = uint3x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x4 a1 = uint3x4(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint3x4 b1 = uint3x4(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x4 a2 = uint3x4(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + uint3x4 b2 = uint3x4(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x4 a3 = uint3x4(346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + uint3x4 b3 = uint3x4(1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_equal_wide_scalar() + { + uint3x4 a0 = uint3x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411); + uint b0 = (746972502); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x4 a1 = uint3x4(672785749, 585324157, 404448210, 969511077, 442746747, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005); + uint b1 = (1465584610); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x4 a2 = uint3x4(211986678, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291); + uint b2 = (1305479811); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x4 a3 = uint3x4(872759249, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886, 20195989); + uint b3 = (811880239); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint3x4 b0 = uint3x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (737210539); + uint3x4 b1 = uint3x4(1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (597498209); + uint3x4 b2 = uint3x4(367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1576985758); + uint3x4 b3 = uint3x4(1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036, 2074160001); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_not_equal_wide_wide() + { + uint3x4 a0 = uint3x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + uint3x4 b0 = uint3x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x4 a1 = uint3x4(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint3x4 b1 = uint3x4(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x4 a2 = uint3x4(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + uint3x4 b2 = uint3x4(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x4 a3 = uint3x4(1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + uint3x4 b3 = uint3x4(1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_not_equal_wide_scalar() + { + uint3x4 a0 = uint3x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906); + uint b0 = (248693828); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x4 a1 = uint3x4(2126300423, 2035077187, 1171827730, 1412347883, 1622176923, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766); + uint b1 = (791998981); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x4 a2 = uint3x4(30493685, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113); + uint b2 = (904014575); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x4 a3 = uint3x4(765258490, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942, 780105497); + uint b3 = (668154629); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint3x4 b0 = uint3x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (50286949); + uint3x4 b1 = uint3x4(2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (510966350); + uint3x4 b2 = uint3x4(572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (358894860); + uint3x4 b3 = uint3x4(1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167, 1002934795); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_wide_wide() + { + uint3x4 a0 = uint3x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + uint3x4 b0 = uint3x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool3x4 r0 = bool3x4(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x4 a1 = uint3x4(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint3x4 b1 = uint3x4(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool3x4 r1 = bool3x4(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x4 a2 = uint3x4(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + uint3x4 b2 = uint3x4(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool3x4 r2 = bool3x4(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x4 a3 = uint3x4(1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + uint3x4 b3 = uint3x4(1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool3x4 r3 = bool3x4(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_wide_scalar() + { + uint3x4 a0 = uint3x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650); + uint b0 = (1491216667); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x4 a1 = uint3x4(930950514, 933855388, 908563901, 1127696709, 1286331950, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027); + uint b1 = (1100560246); + bool3x4 r1 = bool3x4(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x4 a2 = uint3x4(371987110, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606); + uint b2 = (867559111); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x4 a3 = uint3x4(1891059504, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493, 212954934); + uint b3 = (1217893177); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint3x4 b0 = uint3x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1890019295); + uint3x4 b1 = uint3x4(2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659); + bool3x4 r1 = bool3x4(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (810406400); + uint3x4 b2 = uint3x4(1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916); + bool3x4 r2 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (168788814); + uint3x4 b3 = uint3x4(670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033, 685700324); + bool3x4 r3 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_wide_wide() + { + uint3x4 a0 = uint3x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + uint3x4 b0 = uint3x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool3x4 r0 = bool3x4(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x4 a1 = uint3x4(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint3x4 b1 = uint3x4(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x4 a2 = uint3x4(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + uint3x4 b2 = uint3x4(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x4 a3 = uint3x4(194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + uint3x4 b3 = uint3x4(1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_wide_scalar() + { + uint3x4 a0 = uint3x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515); + uint b0 = (438688675); + bool3x4 r0 = bool3x4(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x4 a1 = uint3x4(711945018, 577943770, 572743717, 1016617211, 2063134811, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424); + uint b1 = (1035679270); + bool3x4 r1 = bool3x4(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x4 a2 = uint3x4(1045140419, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732); + uint b2 = (1058332184); + bool3x4 r2 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x4 a3 = uint3x4(1284938191, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269, 1930086291); + uint b3 = (1452639553); + bool3x4 r3 = bool3x4(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint3x4 b0 = uint3x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1556466996); + uint3x4 b1 = uint3x4(858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1713088900); + uint3x4 b2 = uint3x4(315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (267985383); + uint3x4 b3 = uint3x4(126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217, 1480829811); + bool3x4 r3 = bool3x4(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_equal_wide_wide() + { + uint3x4 a0 = uint3x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + uint3x4 b0 = uint3x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool3x4 r0 = bool3x4(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x4 a1 = uint3x4(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint3x4 b1 = uint3x4(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool3x4 r1 = bool3x4(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x4 a2 = uint3x4(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + uint3x4 b2 = uint3x4(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool3x4 r2 = bool3x4(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x4 a3 = uint3x4(1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + uint3x4 b3 = uint3x4(1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_equal_wide_scalar() + { + uint3x4 a0 = uint3x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763); + uint b0 = (1688048545); + bool3x4 r0 = bool3x4(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x4 a1 = uint3x4(690091301, 2091514001, 1857173043, 1617221948, 2017733017, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519); + uint b1 = (1806172431); + bool3x4 r1 = bool3x4(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x4 a2 = uint3x4(1917813750, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244); + uint b2 = (1258115260); + bool3x4 r2 = bool3x4(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x4 a3 = uint3x4(426908235, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266, 1483727269); + uint b3 = (1818566980); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint3x4 b0 = uint3x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1293698493); + uint3x4 b1 = uint3x4(48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (601413850); + uint3x4 b2 = uint3x4(830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260); + bool3x4 r2 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (733876180); + uint3x4 b3 = uint3x4(1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410, 1987696011); + bool3x4 r3 = bool3x4(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_equal_wide_wide() + { + uint3x4 a0 = uint3x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + uint3x4 b0 = uint3x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool3x4 r0 = bool3x4(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x4 a1 = uint3x4(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint3x4 b1 = uint3x4(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool3x4 r1 = bool3x4(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x4 a2 = uint3x4(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + uint3x4 b2 = uint3x4(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool3x4 r2 = bool3x4(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x4 a3 = uint3x4(584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + uint3x4 b3 = uint3x4(2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_equal_wide_scalar() + { + uint3x4 a0 = uint3x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867); + uint b0 = (1470533736); + bool3x4 r0 = bool3x4(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x4 a1 = uint3x4(1419295004, 1819986195, 1460027917, 1646290021, 196833647, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862); + uint b1 = (471843809); + bool3x4 r1 = bool3x4(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x4 a2 = uint3x4(1449142607, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895); + uint b2 = (1223010129); + bool3x4 r2 = bool3x4(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x4 a3 = uint3x4(192092521, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700, 702382564); + uint b3 = (909358617); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint3x4 b0 = uint3x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1214546726); + uint3x4 b1 = uint3x4(917376832, 303549425, 2111728811, 945321577, 173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189); + bool3x4 r1 = bool3x4(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1336522452); + uint3x4 b2 = uint3x4(233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513); + bool3x4 r2 = bool3x4(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (474197678); + uint3x4 b3 = uint3x4(1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168, 1274079907); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_add_wide_wide() + { + uint3x4 a0 = uint3x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + uint3x4 b0 = uint3x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + uint3x4 r0 = uint3x4(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x4 a1 = uint3x4(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint3x4 b1 = uint3x4(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint3x4 r1 = uint3x4(4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x4 a2 = uint3x4(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + uint3x4 b2 = uint3x4(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + uint3x4 r2 = uint3x4(3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291, 604086579, 2150755997, 3626413591, 2674116169); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x4 a3 = uint3x4(728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + uint3x4 b3 = uint3x4(1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + uint3x4 r3 = uint3x4(2461211795, 1450246522, 2444787499, 1669976746, 3356749404, 1917402232, 1548618217, 2863380484, 3471071068, 2013864506, 348877644, 2242427741); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_add_wide_scalar() + { + uint3x4 a0 = uint3x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202); + uint b0 = (2124409227); + uint3x4 r0 = uint3x4(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528, 4127431088, 3760381198, 3284807513, 2209855429); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x4 a1 = uint3x4(1068152966, 1497676888, 1727477485, 1095438654, 756559204, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233); + uint b1 = (1239387100); + uint3x4 r1 = uint3x4(2307540066, 2737063988, 2966864585, 2334825754, 1995946304, 3058106031, 1898310652, 2849906021, 2825142498, 1932230400, 2307980569, 2944163333); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x4 a2 = uint3x4(577782260, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190); + uint b2 = (736972565); + uint3x4 r2 = uint3x4(1314754825, 1448867136, 1301230004, 2788708848, 2309810262, 2364979110, 2592672828, 1393721347, 1009747081, 2654105764, 1565295538, 2853782755); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x4 a3 = uint3x4(2092767444, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914, 1340503111); + uint b3 = (973587865); + uint3x4 r3 = uint3x4(3066355309, 2210519138, 1477852314, 1767880439, 2491646546, 2578224189, 1328461282, 1658835762, 1201369005, 1294770382, 2184163779, 2314090976); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint3x4 b0 = uint3x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302); + uint3x4 r0 = uint3x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150, 1387123903, 1948867027, 1170867018, 1502633380); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (783046445); + uint3x4 b1 = uint3x4(1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768); + uint3x4 r1 = uint3x4(1913210389, 1071326029, 2180730306, 2419629934, 1456309784, 2252347319, 797902410, 1899683444, 2271909745, 2384037331, 973697746, 2090506213); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (920085839); + uint3x4 b2 = uint3x4(2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886); + uint3x4 r2 = uint3x4(3002315674, 2912491413, 2134010297, 1425927291, 1901507001, 2408423538, 2033912479, 2726232347, 2761877061, 1126696690, 1447057792, 2156445725); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1459523189); + uint3x4 b3 = uint3x4(965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031, 1275565021); + uint3x4 r3 = uint3x4(2425263820, 1542365988, 2757926390, 3265332961, 3438387380, 1874526575, 3365827337, 2182393386, 2203771985, 3136746748, 1762899220, 2735088210); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_sub_wide_wide() + { + uint3x4 a0 = uint3x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + uint3x4 b0 = uint3x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + uint3x4 r0 = uint3x4(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x4 a1 = uint3x4(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint3x4 b1 = uint3x4(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint3x4 r1 = uint3x4(4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x4 a2 = uint3x4(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + uint3x4 b2 = uint3x4(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + uint3x4 r2 = uint3x4(4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x4 a3 = uint3x4(741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + uint3x4 b3 = uint3x4(1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + uint3x4 r3 = uint3x4(3949049757, 1650323877, 979082147, 182559134, 4158572232, 1442113917, 8339009, 1379854326, 3702505823, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_sub_wide_scalar() + { + uint3x4 a0 = uint3x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336); + uint b0 = (462232403); + uint3x4 r0 = uint3x4(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412, 4113909093, 3920265733, 1451492028, 1579360933); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x4 a1 = uint3x4(557239990, 1590376732, 819090189, 816382635, 815920639, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742); + uint b1 = (1119051448); + uint3x4 r1 = uint3x4(3733155838, 471325284, 3995006037, 3992298483, 3991836487, 709981669, 673750484, 4289356397, 299886528, 158205741, 973727950, 3818152590); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x4 a2 = uint3x4(1605250794, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204); + uint b2 = (819644478); + uint3x4 r2 = uint3x4(785606316, 648358541, 3603626004, 4028817075, 197482493, 1180100304, 1197628280, 998347286, 461341022, 4152297673, 818388135, 130116726); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x4 a3 = uint3x4(1835969317, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965, 941598524); + uint b3 = (919015590); + uint3x4 r3 = uint3x4(916953727, 57931720, 385231016, 537764618, 635007122, 4145756071, 1138816097, 4134088285, 4046384961, 3979183117, 754253375, 22582934); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint3x4 b0 = uint3x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748); + uint3x4 r0 = uint3x4(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128, 4197201280, 1426821512, 459678338, 4168388953); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (1428436109); + uint3x4 b1 = uint3x4(1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461); + uint3x4 r1 = uint3x4(169690649, 351055713, 97713390, 910324280, 461307580, 1083769855, 346168191, 520569413, 3906518282, 968095541, 466281611, 871322648); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1701216709); + uint3x4 b2 = uint3x4(1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026); + uint3x4 r2 = uint3x4(4016085228, 971156157, 256818882, 847646153, 1562380277, 688026281, 983127179, 1194459319, 484768668, 764903962, 3998897550, 4026201979); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (902880656); + uint3x4 b3 = uint3x4(1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072, 2066839749); + uint3x4 r3 = uint3x4(4036627255, 3755383227, 279919891, 171911747, 288056815, 3308068932, 4279525600, 768950736, 689757548, 3362397492, 381812584, 3131008203); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mul_wide_wide() + { + uint3x4 a0 = uint3x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + uint3x4 b0 = uint3x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + uint3x4 r0 = uint3x4(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x4 a1 = uint3x4(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint3x4 b1 = uint3x4(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint3x4 r1 = uint3x4(990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x4 a2 = uint3x4(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + uint3x4 b2 = uint3x4(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + uint3x4 r2 = uint3x4(1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354, 48406862, 2297104000, 4019846068, 2811510105); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x4 a3 = uint3x4(892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + uint3x4 b3 = uint3x4(142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + uint3x4 r3 = uint3x4(293009766, 3677102970, 1179445736, 3813187164, 2708838392, 1397450915, 487571412, 3889286542, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mul_wide_scalar() + { + uint3x4 a0 = uint3x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747); + uint b0 = (1476837906); + uint3x4 r0 = uint3x4(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778, 1736252960, 2595843622, 2760103458, 2441439286); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x4 a1 = uint3x4(1818877398, 660611671, 1279757657, 391009467, 1186856590, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300); + uint b1 = (1324050764); + uint3x4 r1 = uint3x4(1927061896, 645718228, 3706353516, 3450526340, 3727282216, 2610351864, 3202713768, 133057916, 2712818352, 3265005844, 4046133608, 100822256); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x4 a2 = uint3x4(1192501703, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648); + uint b2 = (1613845584); + uint3x4 r2 = uint3x4(3900103216, 2959506480, 692371456, 973833232, 1630959136, 2616598816, 4103626336, 1516495024, 2027781488, 471196848, 2169531488, 1043640960); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x4 a3 = uint3x4(227492421, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790, 396984449); + uint b3 = (217698851); + uint3x4 r3 = uint3x4(269461871, 1120555251, 1293383984, 1838219542, 3023271884, 1677010101, 1900394426, 512258290, 4056397088, 3786096410, 1697920914, 1359963043); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint3x4 b0 = uint3x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767); + uint3x4 r0 = uint3x4(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328, 1623617844, 2603413056, 3464455056, 3011267876); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (243286231); + uint3x4 b1 = uint3x4(1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639); + uint3x4 r1 = uint3x4(3646578061, 2731337857, 3893490496, 2980416695, 62369507, 4218409817, 2881159196, 3966864259, 2038656731, 2224055319, 2818606435, 2745388689); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1323243330); + uint3x4 b2 = uint3x4(1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263); + uint3x4 r2 = uint3x4(4200942488, 50866050, 1979584376, 2165828294, 2084048518, 3664351394, 1987582754, 2187955092, 3020934930, 1909741994, 2131645412, 527678350); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (2022856151); + uint3x4 b3 = uint3x4(1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370, 890235481); + uint3x4 r3 = uint3x4(2359761627, 3607975719, 2368172860, 3241673466, 3640972603, 2445305544, 1198448575, 3108682444, 2733658999, 2364617365, 3384645854, 938433983); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_div_wide_wide() + { + uint3x4 a0 = uint3x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + uint3x4 b0 = uint3x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + uint3x4 r0 = uint3x4(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x4 a1 = uint3x4(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint3x4 b1 = uint3x4(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint3x4 r1 = uint3x4(0, 2, 1, 2, 1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x4 a2 = uint3x4(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + uint3x4 b2 = uint3x4(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + uint3x4 r2 = uint3x4(2, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x4 a3 = uint3x4(991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + uint3x4 b3 = uint3x4(554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + uint3x4 r3 = uint3x4(1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_div_wide_scalar() + { + uint3x4 a0 = uint3x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657); + uint b0 = (947861580); + uint3x4 r0 = uint3x4(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x4 a1 = uint3x4(2131487088, 1017891310, 542666029, 1646044372, 1447236569, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885); + uint b1 = (2105094094); + uint3x4 r1 = uint3x4(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x4 a2 = uint3x4(1919705924, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918); + uint b2 = (1244966864); + uint3x4 r2 = uint3x4(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x4 a3 = uint3x4(1515555001, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647, 1222061694); + uint b3 = (614923813); + uint3x4 r3 = uint3x4(2, 1, 3, 3, 3, 1, 3, 0, 0, 2, 3, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint3x4 b0 = uint3x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703); + uint3x4 r0 = uint3x4(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (631027637); + uint3x4 b1 = uint3x4(396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043); + uint3x4 r1 = uint3x4(1, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1054404890); + uint3x4 b2 = uint3x4(351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534); + uint3x4 r2 = uint3x4(2, 7, 0, 2, 0, 4, 0, 0, 0, 23, 0, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (126616016); + uint3x4 b3 = uint3x4(1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719, 638134699); + uint3x4 r3 = uint3x4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mod_wide_wide() + { + uint3x4 a0 = uint3x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + uint3x4 b0 = uint3x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + uint3x4 r0 = uint3x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x4 a1 = uint3x4(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint3x4 b1 = uint3x4(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint3x4 r1 = uint3x4(137194997, 593433700, 360454892, 8060301, 7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x4 a2 = uint3x4(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + uint3x4 b2 = uint3x4(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + uint3x4 r2 = uint3x4(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x4 a3 = uint3x4(1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + uint3x4 b3 = uint3x4(244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + uint3x4 r3 = uint3x4(166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mod_wide_scalar() + { + uint3x4 a0 = uint3x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935); + uint b0 = (883951171); + uint3x4 r0 = uint3x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x4 a1 = uint3x4(712321026, 1540068445, 1085897743, 1607489717, 165478511, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912); + uint b1 = (172564850); + uint3x4 r1 = uint3x4(22061626, 159549645, 50508643, 54406067, 165478511, 130152166, 52883749, 49746751, 65367033, 49545706, 143379989, 17042712); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x4 a2 = uint3x4(377501313, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372); + uint b2 = (1778384846); + uint3x4 r2 = uint3x4(377501313, 1216011754, 812183417, 1153802502, 1642671870, 146325896, 665297470, 1568090825, 272598096, 435886407, 453990946, 1731665372); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x4 a3 = uint3x4(586777590, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411, 1524342239); + uint b3 = (1475597526); + uint3x4 r3 = uint3x4(586777590, 110051989, 1414579860, 416067455, 1262495021, 1400758118, 53934482, 430295164, 1386414018, 654749032, 666621411, 48744713); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint3x4 b0 = uint3x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233); + uint3x4 r0 = uint3x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1298102643); + uint3x4 b1 = uint3x4(2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738); + uint3x4 r1 = uint3x4(1298102643, 297360552, 1298102643, 1298102643, 500917956, 476213801, 214909646, 457987657, 1298102643, 67782715, 1298102643, 1739061); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (2122220318); + uint3x4 b2 = uint3x4(164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894); + uint3x4 r2 = uint3x4(147283586, 662044080, 677274179, 816428281, 1011391307, 376773156, 120051662, 644373900, 76505386, 479992776, 159909553, 50931378); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1342085447); + uint3x4 b3 = uint3x4(448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751, 1648646354); + uint3x4 r3 = uint3x4(445362875, 3415371, 636619696, 588996674, 195741437, 241524871, 267605306, 1342085447, 1342085447, 1342085447, 243643696, 1342085447); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_plus() + { + uint3x4 a0 = uint3x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + uint3x4 r0 = uint3x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + TestUtils.AreEqual(+a0, r0); + + uint3x4 a1 = uint3x4(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + uint3x4 r1 = uint3x4(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + TestUtils.AreEqual(+a1, r1); + + uint3x4 a2 = uint3x4(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + uint3x4 r2 = uint3x4(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + TestUtils.AreEqual(+a2, r2); + + uint3x4 a3 = uint3x4(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + uint3x4 r3 = uint3x4(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_neg() + { + uint3x4 a0 = uint3x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286); + uint3x4 r0 = uint3x4(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947, 3179939058, 2658692327, 3599972203, 2752761010); + TestUtils.AreEqual(-a0, r0); + + uint3x4 a1 = uint3x4(213087293, 341522275, 841085242, 574159094, 1687250035, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864); + uint3x4 r1 = uint3x4(4081880003, 3953445021, 3453882054, 3720808202, 2607717261, 2237047603, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432); + TestUtils.AreEqual(-a1, r1); + + uint3x4 a2 = uint3x4(1440774928, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868); + uint3x4 r2 = uint3x4(2854192368, 3863301205, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012, 2340793982, 2585110198, 2458456246, 2632160843, 3788822428); + TestUtils.AreEqual(-a2, r2); + + uint3x4 a3 = uint3x4(650922971, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551, 1768435578); + uint3x4 r3 = uint3x4(3644044325, 3020970047, 2820522109, 2441140349, 2599393523, 3565514784, 3949897936, 3719099760, 3700848258, 3093126687, 2952094745, 2526531718); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_prefix_inc() + { + uint3x4 a0 = uint3x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935); + uint3x4 r0 = uint3x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936); + TestUtils.AreEqual(++a0, r0); + + uint3x4 a1 = uint3x4(1835605516, 388229350, 696475402, 1786514683, 993189311, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489); + uint3x4 r1 = uint3x4(1835605517, 388229351, 696475403, 1786514684, 993189312, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490); + TestUtils.AreEqual(++a1, r1); + + uint3x4 a2 = uint3x4(504806865, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111); + uint3x4 r2 = uint3x4(504806866, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112); + TestUtils.AreEqual(++a2, r2); + + uint3x4 a3 = uint3x4(1414867743, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802, 413165245); + uint3x4 r3 = uint3x4(1414867744, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803, 413165246); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_postfix_inc() + { + uint3x4 a0 = uint3x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + uint3x4 r0 = uint3x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + TestUtils.AreEqual(a0++, r0); + + uint3x4 a1 = uint3x4(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + uint3x4 r1 = uint3x4(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + TestUtils.AreEqual(a1++, r1); + + uint3x4 a2 = uint3x4(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + uint3x4 r2 = uint3x4(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + TestUtils.AreEqual(a2++, r2); + + uint3x4 a3 = uint3x4(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + uint3x4 r3 = uint3x4(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint3x4_operator_prefix_dec() + { + uint3x4 a0 = uint3x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358); + uint3x4 r0 = uint3x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357); + TestUtils.AreEqual(--a0, r0); + + uint3x4 a1 = uint3x4(1914114460, 389120307, 1022184392, 1310293956, 356565557, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297); + uint3x4 r1 = uint3x4(1914114459, 389120306, 1022184391, 1310293955, 356565556, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296); + TestUtils.AreEqual(--a1, r1); + + uint3x4 a2 = uint3x4(220897829, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380); + uint3x4 r2 = uint3x4(220897828, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379); + TestUtils.AreEqual(--a2, r2); + + uint3x4 a3 = uint3x4(2083512379, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317, 767990877); + uint3x4 r3 = uint3x4(2083512378, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316, 767990876); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_postfix_dec() + { + uint3x4 a0 = uint3x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + uint3x4 r0 = uint3x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + TestUtils.AreEqual(a0--, r0); + + uint3x4 a1 = uint3x4(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + uint3x4 r1 = uint3x4(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + TestUtils.AreEqual(a1--, r1); + + uint3x4 a2 = uint3x4(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + uint3x4 r2 = uint3x4(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + TestUtils.AreEqual(a2--, r2); + + uint3x4 a3 = uint3x4(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + uint3x4 r3 = uint3x4(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_and_wide_wide() + { + uint3x4 a0 = uint3x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + uint3x4 b0 = uint3x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + uint3x4 r0 = uint3x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x4 a1 = uint3x4(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint3x4 b1 = uint3x4(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint3x4 r1 = uint3x4(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x4 a2 = uint3x4(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + uint3x4 b2 = uint3x4(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + uint3x4 r2 = uint3x4(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x4 a3 = uint3x4(1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + uint3x4 b3 = uint3x4(1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + uint3x4 r3 = uint3x4(706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_and_wide_scalar() + { + uint3x4 a0 = uint3x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920); + uint b0 = (93423598); + uint3x4 r0 = uint3x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x4 a1 = uint3x4(1249238550, 1862276471, 143502472, 861733033, 1408932942, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025); + uint b1 = (814629680); + uint3x4 r1 = uint3x4(279056, 536871216, 9175040, 806092832, 277479424, 805568528, 268452112, 9175824, 268567088, 268697600, 934144, 8650784); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x4 a2 = uint3x4(462670926, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061); + uint b2 = (1817145060); + uint3x4 r2 = uint3x4(134433860, 1145858724, 1816224836, 542076516, 739126372, 1611530816, 537593028, 604439716, 1140983364, 672014980, 1745571424, 1208165380); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x4 a3 = uint3x4(398141788, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172, 1826788967); + uint b3 = (156911041); + uint3x4 r3 = uint3x4(18481472, 17843457, 5783937, 156763393, 22151233, 138937729, 152585345, 4867329, 21643264, 132544, 4719616, 138544193); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint3x4 b0 = uint3x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596); + uint3x4 r0 = uint3x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1763483957); + uint3x4 b1 = uint3x4(1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366); + uint3x4 r1 = uint3x4(1209041205, 136061185, 151265585, 1074528516, 1744830512, 671121697, 1092091952, 1761607941, 18391060, 1761615904, 1763221553, 1091051540); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1233066417); + uint3x4 b2 = uint3x4(1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007); + uint3x4 r2 = uint3x4(1214058640, 2230321, 1210847617, 1074401680, 1211367456, 1116577, 1232603553, 3674113, 1078202400, 136118672, 1098518961, 4128897); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1808619374); + uint3x4 b3 = uint3x4(1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681, 1980296380); + uint3x4 r3 = uint3x4(1246058336, 1644778764, 12650346, 1640318254, 1216610624, 587220044, 1644695918, 33834028, 734795298, 671961678, 1241777216, 1644708908); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_or_wide_wide() + { + uint3x4 a0 = uint3x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + uint3x4 b0 = uint3x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + uint3x4 r0 = uint3x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x4 a1 = uint3x4(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint3x4 b1 = uint3x4(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint3x4 r1 = uint3x4(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x4 a2 = uint3x4(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + uint3x4 b2 = uint3x4(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + uint3x4 r2 = uint3x4(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x4 a3 = uint3x4(470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + uint3x4 b3 = uint3x4(1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + uint3x4 r3 = uint3x4(1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_or_wide_scalar() + { + uint3x4 a0 = uint3x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856); + uint b0 = (1666102508); + uint3x4 r0 = uint3x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x4 a1 = uint3x4(879300408, 797240690, 1977614655, 46921989, 1980838747, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070); + uint b1 = (1179087439); + uint3x4 r1 = uint3x4(1987018623, 1875378047, 2011657087, 1188035407, 1985442655, 1459090271, 1205302255, 1459058687, 1465382751, 1995407311, 1599567599, 2122316799); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x4 a2 = uint3x4(2055963359, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200); + uint b2 = (1511253082); + uint3x4 r2 = uint3x4(2057037535, 2077750875, 1579155451, 2069362559, 1590951034, 1534850271, 1593306847, 2050745566, 1519910623, 2117597023, 1604316378, 1600120154); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x4 a3 = uint3x4(1353013374, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643, 142082352); + uint b3 = (1349149982); + uint3x4 r3 = uint3x4(1357872510, 1895528286, 1374318015, 2012964638, 1550483390, 1602123263, 1483666815, 1920624063, 1458464191, 2012116286, 1424685023, 1484416318); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint3x4 b0 = uint3x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649); + uint3x4 r0 = uint3x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1059093741); + uint3x4 b1 = uint3x4(627815046, 418822515, 83214352, 424663473, 447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329); + uint3x4 r1 = uint3x4(1064042223, 1073151487, 1073085693, 1064304125, 1068727789, 1063910895, 2133818605, 1060240621, 2145910509, 2138209533, 2146074365, 2142830317); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1088734150); + uint3x4 b2 = uint3x4(298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598); + uint3x4 r2 = uint3x4(1374682086, 2063067087, 1660812255, 1743570934, 1945042926, 1089859558, 1911943150, 2079645678, 1627375606, 1307434967, 1341444039, 1526649806); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (1098359242); + uint3x4 b3 = uint3x4(997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616, 1326199854); + uint3x4 r3 = uint3x4(2071978954, 1098885598, 2071455727, 1702356954, 1098381823, 1568651246, 2046802926, 1509946863, 2038414794, 1644161007, 1308081658, 1333769710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_xor_wide_wide() + { + uint3x4 a0 = uint3x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + uint3x4 b0 = uint3x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + uint3x4 r0 = uint3x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x4 a1 = uint3x4(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint3x4 b1 = uint3x4(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint3x4 r1 = uint3x4(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x4 a2 = uint3x4(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + uint3x4 b2 = uint3x4(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + uint3x4 r2 = uint3x4(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x4 a3 = uint3x4(1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + uint3x4 b3 = uint3x4(1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + uint3x4 r3 = uint3x4(632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_xor_wide_scalar() + { + uint3x4 a0 = uint3x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267); + uint b0 = (493665894); + uint3x4 r0 = uint3x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x4 a1 = uint3x4(125659640, 1730088797, 116862046, 375757978, 491079274, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924); + uint b1 = (1315625690); + uint3x4 r1 = uint3x4(1226289954, 695588231, 1218311812, 1477396032, 1395629232, 1158101236, 1162708111, 2010043079, 1856848613, 1753692570, 1315361570, 373338582); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x4 a2 = uint3x4(1680011736, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239); + uint b2 = (447453839); + uint3x4 r2 = uint3x4(2122935127, 800240497, 198659571, 98559616, 86185743, 1221222109, 1565485394, 630017616, 919085284, 427397619, 1988160398, 446789440); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x4 a3 = uint3x4(476052372, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185, 1771744425); + uint b3 = (92561487); + uint3x4 r3 = uint3x4(433822683, 2133436125, 133297725, 1274987888, 2020970994, 180462097, 52620731, 1114759625, 2024733453, 2005017615, 912470822, 1813957862); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint3x4 b0 = uint3x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424); + uint3x4 r0 = uint3x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1947871003); + uint3x4 b1 = uint3x4(1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881); + uint3x4 r1 = uint3x4(500881003, 132477417, 876677487, 1699258642, 645842392, 1138923504, 974408494, 2033457704, 1087830061, 1348553799, 2139822446, 660194722); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (573581481); + uint3x4 b2 = uint3x4(1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615); + uint3x4 r2 = uint3x4(1311539225, 655981444, 1435501080, 2003229500, 399194716, 2022579220, 693043286, 145445825, 880683118, 787181808, 2146955403, 205673470); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (711527976); + uint3x4 b3 = uint3x4(710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645, 896851285); + uint3x4 r3 = uint3x4(3284335, 658000982, 154339351, 2085169939, 946304861, 44451568, 2115414221, 2137251591, 317021346, 552683235, 1575100285, 522048381); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_left_shift() + { + uint3x4 a0 = uint3x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534); + int b0 = (1321149625); + uint3x4 r0 = uint3x4(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832, 2885681152, 838860800, 3422552064, 2885681152); + TestUtils.AreEqual(a0 << b0, r0); + + uint3x4 a1 = uint3x4(1447702302, 35667343, 1664454606, 2045594989, 2077023268, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181); + int b1 = (1079614371); + uint3x4 r1 = uint3x4(2991683824, 285338744, 430734960, 3479858024, 3731284256, 446462192, 2382043288, 897198008, 703071480, 298127560, 3687382248, 3583706856); + TestUtils.AreEqual(a1 << b1, r1); + + uint3x4 a2 = uint3x4(263886278, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192); + int b2 = (221147365); + uint3x4 r2 = uint3x4(4149393600, 2269589216, 3094178816, 2284910336, 2519121408, 3273503744, 1296563040, 2556772768, 1884213760, 3366896320, 160790208, 31956480); + TestUtils.AreEqual(a2 << b2, r2); + + uint3x4 a3 = uint3x4(740058147, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326, 1996060114); + int b3 = (946058001); + uint3x4 r3 = uint3x4(3360030720, 4207017984, 1441398784, 3029598208, 4289593344, 2718695424, 3680632832, 1110573056, 1163132928, 173408256, 1445724160, 3953393664); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_right_shift() + { + uint3x4 a0 = uint3x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045); + int b0 = (1266801540); + uint3x4 r0 = uint3x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440); + TestUtils.AreEqual(a0 >> b0, r0); + + uint3x4 a1 = uint3x4(701927980, 569504877, 185593382, 1102123711, 334005460, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762); + int b1 = (917785020); + uint3x4 r1 = uint3x4(2, 2, 0, 4, 1, 6, 1, 5, 6, 2, 4, 1); + TestUtils.AreEqual(a1 >> b1, r1); + + uint3x4 a2 = uint3x4(763607760, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381); + int b2 = (348013684); + uint3x4 r2 = uint3x4(728, 1495, 738, 1513, 572, 28, 1793, 335, 1110, 405, 177, 1048); + TestUtils.AreEqual(a2 >> b2, r2); + + uint3x4 a3 = uint3x4(1234295294, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981, 1435331003); + int b3 = (1028666766); + uint3x4 r3 = uint3x4(75335, 46488, 76590, 55139, 72040, 11168, 58514, 65650, 86028, 96236, 42779, 87605); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_not() + { + uint3x4 a0 = uint3x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024); + uint3x4 r0 = uint3x4(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439, 3822001804, 3523255869, 3667386335, 2233443271); + TestUtils.AreEqual(~a0, r0); + + uint3x4 a1 = uint3x4(753208488, 1303022493, 664744603, 1289372466, 1635981125, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321); + uint3x4 r1 = uint3x4(3541758807, 2991944802, 3630222692, 3005594829, 2658986170, 2343948699, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974); + TestUtils.AreEqual(~a1, r1); + + uint3x4 a2 = uint3x4(1282546942, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829); + uint3x4 r2 = uint3x4(3012420353, 2470142485, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021, 3599787443, 2528029256, 3397043669, 2478776831, 2932060466); + TestUtils.AreEqual(~a2, r2); + + uint3x4 a3 = uint3x4(1227946838, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010, 722020848); + uint3x4 r3 = uint3x4(3067020457, 4105358017, 3338525487, 2171478485, 2701953044, 4275744234, 2572859341, 2658091601, 2380869903, 2912422268, 3009690285, 3572946447); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x4.gen.cs.meta new file mode 100644 index 0000000..be725d5 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4c3a82cd7a932a4a97b7432498a1d53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4.gen.cs new file mode 100644 index 0000000..7b5587d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4.gen.cs @@ -0,0 +1,1353 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint4 + { + [TestCompiler] + public static void uint4_zero() + { + TestUtils.AreEqual(uint4.zero.x, 0u); + TestUtils.AreEqual(uint4.zero.y, 0u); + TestUtils.AreEqual(uint4.zero.z, 0u); + TestUtils.AreEqual(uint4.zero.w, 0u); + } + + [TestCompiler] + public static void uint4_constructor() + { + uint4 a = new uint4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void uint4_scalar_constructor() + { + uint4 a = new uint4(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + TestUtils.AreEqual(a.z, 17u); + TestUtils.AreEqual(a.w, 17u); + } + + [TestCompiler] + public static void uint4_static_constructor() + { + uint4 a = uint4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void uint4_static_scalar_constructor() + { + uint4 a = uint4(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + TestUtils.AreEqual(a.z, 17u); + TestUtils.AreEqual(a.w, 17u); + } + + [TestCompiler] + public static void uint4_operator_equal_wide_wide() + { + uint4 a0 = uint4(790229414, 970783976, 1428432738, 1578747135); + uint4 b0 = uint4(612337669, 1214209108, 2120643427, 295461214); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4 a1 = uint4(1733797753, 2001507228, 1446876437, 1777406370); + uint4 b1 = uint4(1510890331, 1893316566, 921816149, 1834958575); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4 a2 = uint4(1426387268, 1809275021, 1843770816, 1172185222); + uint4 b2 = uint4(1482011863, 2062852792, 226398742, 770290735); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4 a3 = uint4(1469608940, 869874758, 458603090, 581282460); + uint4 b3 = uint4(36812057, 543224481, 1565350150, 1909926604); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4_operator_equal_wide_scalar() + { + uint4 a0 = uint4(1211464300, 1921862607, 508076684, 1249127920); + uint b0 = (746972502); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4 a1 = uint4(1394594555, 1733655277, 1884008277, 1682018538); + uint b1 = (746862310); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4 a2 = uint4(795585660, 927605411, 672785749, 1465584610); + uint b2 = (936027116); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4 a3 = uint4(585324157, 969511077, 442746747, 1772925698); + uint b3 = (404448210); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint4 b0 = uint4(233855098, 924242519, 1402948791, 601381975); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (2120518068); + uint4 b1 = uint4(629187703, 1971977031, 47183124, 1061805787); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1009011238); + uint4 b2 = uint4(312511148, 1460673064, 737210539, 1737844479); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1892405453); + uint4 b3 = uint4(2133024000, 455818693, 2003197687, 1276241219); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4_operator_not_equal_wide_wide() + { + uint4 a0 = uint4(1660932106, 982847023, 97046264, 1739517447); + uint4 b0 = uint4(107139049, 75478496, 2055495054, 358586687); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4 a1 = uint4(1253499180, 1830584069, 1841470429, 1397841646); + uint4 b1 = uint4(942338347, 111564990, 113811950, 948912488); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4 a2 = uint4(1770890135, 1906548631, 169082967, 2099271786); + uint4 b2 = uint4(1080084121, 1400504872, 1032134499, 1061123400); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4 a3 = uint4(1909317609, 46519139, 1433204003, 931492669); + uint4 b3 = uint4(221862069, 858950046, 989094643, 2023070999); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4_operator_not_equal_wide_scalar() + { + uint4 a0 = uint4(747758183, 1033001286, 1439973882, 2138928797); + uint b0 = (248693828); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4 a1 = uint4(1197845089, 950170763, 238704450, 2105962247); + uint b1 = (1432672459); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4 a2 = uint4(727205263, 276313906, 2126300423, 791998981); + uint b2 = (1640688041); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4 a3 = uint4(2035077187, 1412347883, 1622176923, 768370497); + uint b3 = (1171827730); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint4 b0 = uint4(2037494727, 1989050616, 48833929, 1897435904); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (514354517); + uint4 b1 = uint4(1783749164, 364694471, 754315072, 124108032); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (1512967900); + uint4 b2 = uint4(1178825850, 1854793298, 50286949, 2100802631); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1640811853); + uint4 b3 = uint4(82110247, 472172806, 266984506, 2003668365); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_wide_wide() + { + uint4 a0 = uint4(1182186063, 415538999, 1667335818, 1566618442); + uint4 b0 = uint4(524633529, 1032195686, 760723389, 1505751409); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint4 a1 = uint4(1166180837, 639095188, 1080836365, 771119973); + uint4 b1 = uint4(431962172, 1287906509, 1560084663, 1450178202); + bool4 r1 = bool4(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4 a2 = uint4(928263233, 789225474, 665243110, 1003542034); + uint4 b2 = uint4(2066166337, 1107069023, 1640077524, 2103263105); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4 a3 = uint4(1032480172, 1961336172, 923379558, 21210619); + uint4 b3 = uint4(684229139, 1234033624, 1278743281, 1953079347); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_wide_scalar() + { + uint4 a0 = uint4(608447185, 818840405, 869219329, 2080125385); + uint b0 = (1491216667); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint4 a1 = uint4(1214500548, 1667165786, 1615392341, 840091491); + uint b1 = (1361741203); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4 a2 = uint4(469591900, 315321650, 930950514, 1100560246); + uint b2 = (1247103789); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4 a3 = uint4(933855388, 1127696709, 1286331950, 380753337); + uint b3 = (908563901); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint4 b0 = uint4(282703327, 14370648, 1862117300, 1304793311); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (826073259); + uint4 b1 = uint4(988910157, 445132446, 1139670255, 111349251); + bool4 r1 = bool4(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1102440676); + uint4 b2 = uint4(112183144, 1594415311, 1890019295, 2098715503); + bool4 r2 = bool4(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (608933527); + uint4 b3 = uint4(183989010, 1596056507, 1027318999, 146281093); + bool4 r3 = bool4(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_wide_wide() + { + uint4 a0 = uint4(592884447, 2133928932, 918957182, 1284069471); + uint4 b0 = uint4(138737040, 192863971, 1700841444, 1044631301); + bool4 r0 = bool4(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint4 a1 = uint4(194584707, 739120780, 241654068, 1340158550); + uint4 b1 = uint4(1391589821, 730837695, 253553987, 2078872742); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint4 a2 = uint4(2099542537, 1182623667, 1399607274, 789301637); + uint4 b2 = uint4(910845808, 976047676, 202633078, 1223618940); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4 a3 = uint4(180400925, 594688333, 1877031463, 1360073500); + uint4 b3 = uint4(641600530, 1830470354, 1570701388, 1104256103); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_wide_scalar() + { + uint4 a0 = uint4(1097138316, 211763648, 1883002501, 56406996); + uint b0 = (438688675); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint4 a1 = uint4(43662641, 1437755186, 1219010035, 2125058448); + uint b1 = (1923456111); + bool4 r1 = bool4(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4 a2 = uint4(304028799, 48044515, 711945018, 1035679270); + uint b2 = (893125636); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint4 a3 = uint4(577943770, 1016617211, 2063134811, 1577403353); + uint b3 = (572743717); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint4 b0 = uint4(599356784, 185671342, 1932327391, 2025591013); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1257191721); + uint4 b1 = uint4(1312388500, 1443698859, 779217735, 691047512); + bool4 r1 = bool4(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (741776730); + uint4 b2 = uint4(732565983, 668302204, 1556466996, 858599525); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (1896917159); + uint4 b3 = uint4(701542098, 1052151621, 1023307544, 1435392907); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_equal_wide_wide() + { + uint4 a0 = uint4(1577248162, 2043073061, 1688380407, 176431985); + uint4 b0 = uint4(903445031, 2108974565, 210822256, 1281704747); + bool4 r0 = bool4(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4 a1 = uint4(223299035, 1502802140, 1691709825, 386789394); + uint4 b1 = uint4(453681718, 66138830, 1229799377, 1620922595); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4 a2 = uint4(117182003, 1665770435, 1958490731, 420032601); + uint4 b2 = uint4(1715833766, 1366430432, 13102000, 46919981); + bool4 r2 = bool4(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4 a3 = uint4(1251092689, 2011681765, 749743684, 183784440); + uint4 b3 = uint4(486470891, 1709514236, 2145785285, 854254454); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_equal_wide_scalar() + { + uint4 a0 = uint4(1722165358, 1219858357, 860410743, 411099660); + uint b0 = (1688048545); + bool4 r0 = bool4(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4 a1 = uint4(348104022, 212084836, 58924407, 1459242706); + uint b1 = (1963256951); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4 a2 = uint4(1745758438, 262559763, 690091301, 1806172431); + uint b2 = (532949158); + bool4 r2 = bool4(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4 a3 = uint4(2091514001, 1617221948, 2017733017, 804204255); + uint b3 = (1857173043); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint4 b0 = uint4(1181030049, 1787703989, 1729760948, 1816537388); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1359786460); + uint4 b1 = uint4(874999193, 1678863148, 1711365839, 762067160); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (11953554); + uint4 b2 = uint4(1131583906, 1175393186, 1293698493, 48893340); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (66196247); + uint4 b3 = uint4(1958607116, 1576473309, 861890786, 478252419); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_equal_wide_wide() + { + uint4 a0 = uint4(263000030, 744235661, 1893760267, 237248); + uint4 b0 = uint4(1395535146, 1178373944, 1237373760, 1364855321); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4 a1 = uint4(1062370984, 1676977687, 816766880, 1089431546); + uint4 b1 = uint4(600811864, 362060472, 290870624, 1839067862); + bool4 r1 = bool4(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4 a2 = uint4(1394493730, 1176473380, 1193988637, 1703862455); + uint4 b2 = uint4(396958580, 1336888643, 1019684398, 1697684196); + bool4 r2 = bool4(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4 a3 = uint4(1806186947, 1253571980, 589397635, 1951842887); + uint4 b3 = uint4(1227300220, 2044269675, 1898323839, 874509380); + bool4 r3 = bool4(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_equal_wide_scalar() + { + uint4 a0 = uint4(2112791350, 1043657935, 101764761, 1529909067); + uint b0 = (1470533736); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4 a1 = uint4(556026890, 1186600258, 815093894, 609211196); + uint b1 = (281734132); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4 a2 = uint4(1604309397, 244604867, 1419295004, 471843809); + uint b2 = (829548642); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4 a3 = uint4(1819986195, 1646290021, 196833647, 1596738181); + uint b3 = (1460027917); + bool4 r3 = bool4(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint4 b0 = uint4(1503244746, 861711266, 817773856, 925984572); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (571221723); + uint4 b1 = uint4(683686810, 118252990, 1653952090, 1240253990); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1947039008); + uint4 b2 = uint4(1869136019, 152012637, 1214546726, 917376832); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (303549425); + uint4 b3 = uint4(2111728811, 945321577, 173706579, 625318949); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_add_wide_wide() + { + uint4 a0 = uint4(2049228671, 1658660009, 491719392, 937013355); + uint4 b0 = uint4(2088751567, 645762023, 306868786, 4360271); + uint4 r0 = uint4(4137980238, 2304422032, 798588178, 941373626); + TestUtils.AreEqual(a0 + b0, r0); + + uint4 a1 = uint4(81108663, 1063894558, 86954702, 843159721); + uint4 b1 = uint4(506047997, 2094559874, 1634712736, 1601474440); + uint4 r1 = uint4(587156660, 3158454432, 1721667438, 2444634161); + TestUtils.AreEqual(a1 + b1, r1); + + uint4 a2 = uint4(698977704, 192867135, 1683407172, 137301303); + uint4 b2 = uint4(1586485231, 908746788, 1812370320, 1247342357); + uint4 r2 = uint4(2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a2 + b2, r2); + + uint4 a3 = uint4(2103582820, 526139155, 447937230, 2127411006); + uint4 b3 = uint4(2043773873, 223363428, 175115707, 985928617); + uint4 r3 = uint4(4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4_operator_add_wide_scalar() + { + uint4 a0 = uint4(2038218457, 134923711, 875689667, 1338884463); + uint b0 = (2124409227); + uint4 r0 = uint4(4162627684, 2259332938, 3000098894, 3463293690); + TestUtils.AreEqual(a0 + b0, r0); + + uint4 a1 = uint4(997710928, 1067888129, 70433301, 2003021861); + uint b1 = (340490871); + uint4 r1 = uint4(1338201799, 1408379000, 410924172, 2343512732); + TestUtils.AreEqual(a1 + b1, r1); + + uint4 a2 = uint4(1635971971, 85446202, 1068152966, 1239387100); + uint b2 = (1160398286); + uint4 r2 = uint4(2796370257, 1245844488, 2228551252, 2399785386); + TestUtils.AreEqual(a2 + b2, r2); + + uint4 a3 = uint4(1497676888, 1095438654, 756559204, 1818718931); + uint b3 = (1727477485); + uint4 r3 = uint4(3225154373, 2822916139, 2484036689, 3546196416); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint4 b0 = uint4(519908870, 851424292, 328314822, 135622204); + uint4 r0 = uint4(911000948, 1242516370, 719406900, 526714282); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (740923360); + uint4 b1 = uint4(655394201, 1451896269, 1781697072, 996031825); + uint4 r1 = uint4(1396317561, 2192819629, 2522620432, 1736955185); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1557774949); + uint4 b2 = uint4(779774940, 1111541302, 783046445, 1130163944); + uint4 r2 = uint4(2337549889, 2669316251, 2340821394, 2687938893); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (288279584); + uint4 b3 = uint4(1397683861, 1636583489, 673263339, 1469300874); + uint4 r3 = uint4(1685963445, 1924863073, 961542923, 1757580458); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4_operator_sub_wide_wide() + { + uint4 a0 = uint4(1353441118, 797269833, 659988112, 56022121); + uint4 b0 = uint4(1332656812, 1827794007, 972557431, 2078233689); + uint4 r0 = uint4(20784306, 3264443122, 3982397977, 2272755728); + TestUtils.AreEqual(a0 - b0, r0); + + uint4 a1 = uint4(365847472, 2062899435, 1380988474, 799885138); + uint4 b1 = uint4(1508184327, 1372307701, 810327977, 936799885); + uint4 r1 = uint4(3152630441, 690591734, 570660497, 4158052549); + TestUtils.AreEqual(a1 - b1, r1); + + uint4 a2 = uint4(1306058185, 579775276, 1239163824, 344591081); + uint4 b2 = uint4(71562303, 1418723328, 1971342989, 1226053395); + uint4 r2 = uint4(1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a2 - b2, r2); + + uint4 a3 = uint4(86359575, 1049709943, 721529513, 1767221271); + uint4 b3 = uint4(136565478, 1979903295, 600719425, 837912956); + uint4 r3 = uint4(4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4_operator_sub_wide_scalar() + { + uint4 a0 = uint4(1176369558, 1934521195, 309452150, 1417634074); + uint b0 = (462232403); + uint4 r0 = uint4(714137155, 1472288792, 4142187043, 955401671); + TestUtils.AreEqual(a0 - b0, r0); + + uint4 a1 = uint4(108910717, 1502312334, 1451794815, 281174200); + uint b1 = (1306356714); + uint4 r1 = uint4(3097521299, 195955620, 145438101, 3269784782); + TestUtils.AreEqual(a1 - b1, r1); + + uint4 a2 = uint4(87530840, 2041593336, 557239990, 1119051448); + uint b2 = (1913724431); + uint4 r2 = uint4(2468773705, 127868905, 2938482855, 3500294313); + TestUtils.AreEqual(a2 - b2, r2); + + uint4 a3 = uint4(1590376732, 816382635, 815920639, 1829033117); + uint b3 = (819090189); + uint4 r3 = uint4(771286543, 4292259742, 4291797746, 1009942928); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint4 b0 = uint4(2022393810, 1612688515, 496689713, 887037586); + uint4 r0 = uint4(3964107891, 78845890, 1194844692, 804496819); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (2097630964); + uint4 b1 = uint4(374934538, 939035482, 935242277, 1789300421); + uint4 r1 = uint4(1722696426, 1158595482, 1162388687, 308330543); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (264712893); + uint4 b2 = uint4(1231856067, 1818112748, 1428436109, 1258745460); + uint4 r2 = uint4(3327824122, 2741567441, 3131244080, 3300934729); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1077380396); + uint4 b3 = uint4(1330722719, 518111829, 967128529, 344666254); + uint4 r3 = uint4(4041624973, 559268567, 110251867, 732714142); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mul_wide_wide() + { + uint4 a0 = uint4(245827027, 208934650, 1019478917, 568231809); + uint4 b0 = uint4(759663997, 350129201, 477450108, 1635735015); + uint4 r0 = uint4(3662155527, 1402281434, 332447596, 2361989735); + TestUtils.AreEqual(a0 * b0, r0); + + uint4 a1 = uint4(877289039, 1585782440, 2111178729, 1186019069); + uint4 b1 = uint4(388710278, 757722665, 1509388321, 1841703980); + uint4 r1 = uint4(2624048730, 1455036648, 2128344329, 3700879228); + TestUtils.AreEqual(a1 * b1, r1); + + uint4 a2 = uint4(571481445, 1570087048, 629447153, 619383734); + uint4 b2 = uint4(1826369331, 1524322467, 1605207974, 428419155); + uint4 r2 = uint4(2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a2 * b2, r2); + + uint4 a3 = uint4(2055121568, 700402816, 263414349, 187830569); + uint4 b3 = uint4(1460605791, 1968043860, 771161742, 2037340417); + uint4 r3 = uint4(990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mul_wide_scalar() + { + uint4 a0 = uint4(1762033447, 465343930, 1570757881, 1326409563); + uint b0 = (1476837906); + uint4 r0 = uint4(2981789374, 1326807828, 2156411778, 4018813542); + TestUtils.AreEqual(a0 * b0, r0); + + uint4 a1 = uint4(1824319147, 72749215, 154616909, 975743632); + uint b1 = (1356578909); + uint4 r1 = uint4(4058582047, 130042307, 1244434425, 2313287248); + TestUtils.AreEqual(a1 * b1, r1); + + uint4 a2 = uint4(573770299, 971327747, 1818877398, 1324050764); + uint b2 = (1958912969); + uint4 r2 = uint4(3595344211, 583613531, 2609540870, 377032876); + TestUtils.AreEqual(a2 * b2, r2); + + uint4 a3 = uint4(660611671, 391009467, 1186856590, 890343818); + uint b3 = (1279757657); + uint4 r3 = uint4(4252425023, 1120105475, 4272141662, 1972017914); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint4 b0 = uint4(1764461774, 657072478, 1459784358, 1610646683); + uint4 r0 = uint4(3344568648, 4192918280, 1260585960, 1158730452); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1632058826); + uint4 b1 = uint4(868441654, 1408757883, 335917146, 2105124483); + uint4 r1 = uint4(4237636764, 2735607822, 712546564, 3489634910); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1178393968); + uint4 b2 = uint4(1963904348, 1409533767, 243286231, 1336308795); + uint4 r2 = uint4(1196573760, 592673296, 209320208, 3942500560); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (517963367); + uint4 b3 = uint4(1733623488, 459880225, 994616533, 1420531535); + uint4 r3 = uint4(3520397120, 3023465543, 652617651, 2505294537); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4_operator_div_wide_wide() + { + uint4 a0 = uint4(1590198532, 507812502, 126627032, 1058247011); + uint4 b0 = uint4(1434703236, 911965201, 390415521, 128746927); + uint4 r0 = uint4(1, 0, 0, 8); + TestUtils.AreEqual(a0 / b0, r0); + + uint4 a1 = uint4(427387861, 290676154, 1829594484, 1127868739); + uint4 b1 = uint4(525835375, 816946613, 878264647, 146789678); + uint4 r1 = uint4(0, 0, 2, 7); + TestUtils.AreEqual(a1 / b1, r1); + + uint4 a2 = uint4(499016351, 1341209632, 134906097, 785470242); + uint4 b2 = uint4(2089524057, 254213018, 1916850021, 1737806518); + uint4 r2 = uint4(0, 5, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint4 a3 = uint4(788249865, 1099825433, 1552968283, 1822367139); + uint4 b3 = uint4(1906634983, 437754923, 825037958, 902508708); + uint4 r3 = uint4(0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4_operator_div_wide_scalar() + { + uint4 a0 = uint4(560951562, 1218680769, 375341724, 1613542090); + uint b0 = (947861580); + uint4 r0 = uint4(0, 1, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint4 a1 = uint4(1919409166, 1349573078, 524526253, 341995568); + uint b1 = (1397425408); + uint4 r1 = uint4(1, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4 a2 = uint4(495895326, 1676971657, 2131487088, 2105094094); + uint b2 = (1515313790); + uint4 r2 = uint4(0, 1, 1, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint4 a3 = uint4(1017891310, 1646044372, 1447236569, 107215658); + uint b3 = (542666029); + uint4 r3 = uint4(1, 3, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint4 b0 = uint4(187325733, 1594107378, 2016183849, 1589343709); + uint4 r0 = uint4(6, 0, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (388768753); + uint4 b1 = uint4(1417077283, 1773486938, 1154044032, 81831373); + uint4 r1 = uint4(0, 0, 0, 4); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1476877645); + uint4 b2 = uint4(653688843, 45756703, 631027637, 396671391); + uint4 r2 = uint4(2, 32, 2, 3); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (784365696); + uint4 b3 = uint4(1250594097, 1818363859, 1653451772, 270557729); + uint4 r3 = uint4(0, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mod_wide_wide() + { + uint4 a0 = uint4(146150818, 1846543305, 1071447756, 308965362); + uint4 b0 = uint4(983050390, 771341152, 942375212, 367361754); + uint4 r0 = uint4(146150818, 303861001, 129072544, 308965362); + TestUtils.AreEqual(a0 % b0, r0); + + uint4 a1 = uint4(659881575, 1002365460, 861198439, 1510617532); + uint4 b1 = uint4(749500619, 750718852, 2095151755, 88438806); + uint4 r1 = uint4(659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a1 % b1, r1); + + uint4 a2 = uint4(778525078, 1458458044, 101987897, 1249565173); + uint4 b2 = uint4(769227442, 647214624, 1026513788, 1544950956); + uint4 r2 = uint4(9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a2 % b2, r2); + + uint4 a3 = uint4(938026607, 1692541775, 1518877124, 1806965510); + uint4 b3 = uint4(160166322, 1099108075, 1158422232, 1798905209); + uint4 r3 = uint4(137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mod_wide_scalar() + { + uint4 a0 = uint4(164800505, 1062177828, 1898749675, 1701653318); + uint b0 = (883951171); + uint4 r0 = uint4(164800505, 178226657, 130847333, 817702147); + TestUtils.AreEqual(a0 % b0, r0); + + uint4 a1 = uint4(820393245, 128329633, 1464010899, 896587769); + uint b1 = (19002208); + uint4 r1 = uint4(3298301, 14316385, 840883, 3483993); + TestUtils.AreEqual(a1 % b1, r1); + + uint4 a2 = uint4(405208598, 959236935, 712321026, 172564850); + uint b2 = (1982762194); + uint4 r2 = uint4(405208598, 959236935, 712321026, 172564850); + TestUtils.AreEqual(a2 % b2, r2); + + uint4 a3 = uint4(1540068445, 1607489717, 165478511, 647846716); + uint b3 = (1085897743); + uint4 r3 = uint4(454170702, 521591974, 165478511, 647846716); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint4 b0 = uint4(740000543, 1556450291, 1104736385, 437976569); + uint4 r0 = uint4(242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1911837205); + uint4 b1 = uint4(1507212038, 1906405167, 247693265, 293460573); + uint4 r1 = uint4(404625167, 5432038, 177984350, 151073767); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1495295166); + uint4 b2 = uint4(873323603, 530681233, 1298102643, 2057984657); + uint4 r2 = uint4(621971563, 433932700, 197192523, 1495295166); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1000742091); + uint4 b3 = uint4(1461372131, 1859742342, 797184687, 821888842); + uint4 r3 = uint4(1000742091, 1000742091, 203557404, 178853249); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4_operator_plus() + { + uint4 a0 = uint4(1643476803, 907898539, 379615839, 1140483021); + uint4 r0 = uint4(1643476803, 907898539, 379615839, 1140483021); + TestUtils.AreEqual(+a0, r0); + + uint4 a1 = uint4(1735287433, 1472881565, 339091479, 401565897); + uint4 r1 = uint4(1735287433, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a1, r1); + + uint4 a2 = uint4(1287765427, 174532915, 1864850812, 1566098441); + uint4 r2 = uint4(1287765427, 174532915, 1864850812, 1566098441); + TestUtils.AreEqual(+a2, r2); + + uint4 a3 = uint4(1145639744, 2049663954, 1723005749, 409076474); + uint4 r3 = uint4(1145639744, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint4_operator_neg() + { + uint4 a0 = uint4(1955022112, 662160019, 370300775, 2141283773); + uint4 r0 = uint4(2339945184, 3632807277, 3924666521, 2153683523); + TestUtils.AreEqual(-a0, r0); + + uint4 a1 = uint4(1004505619, 33894270, 505708349, 1115028238); + uint4 r1 = uint4(3290461677, 4261073026, 3789258947, 3179939058); + TestUtils.AreEqual(-a1, r1); + + uint4 a2 = uint4(1636274969, 1542206286, 213087293, 243937487); + uint4 r2 = uint4(2658692327, 2752761010, 4081880003, 4051029809); + TestUtils.AreEqual(-a2, r2); + + uint4 a3 = uint4(341522275, 574159094, 1687250035, 2057919693); + uint4 r3 = uint4(3953445021, 3720808202, 2607717261, 2237047603); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint4_operator_prefix_inc() + { + uint4 a0 = uint4(864455342, 2035793213, 1275443862, 971919915); + uint4 r0 = uint4(864455343, 2035793214, 1275443863, 971919916); + TestUtils.AreEqual(++a0, r0); + + uint4 a1 = uint4(411610189, 395072276, 115573442, 913293639); + uint4 r1 = uint4(411610190, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a1, r1); + + uint4 a2 = uint4(432884105, 1385544935, 1835605516, 831396561); + uint4 r2 = uint4(432884106, 1385544936, 1835605517, 831396562); + TestUtils.AreEqual(++a2, r2); + + uint4 a3 = uint4(388229350, 1786514683, 993189311, 752093909); + uint4 r3 = uint4(388229351, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint4_operator_postfix_inc() + { + uint4 a0 = uint4(1751003569, 2063707595, 1500486291, 969189211); + uint4 r0 = uint4(1751003569, 2063707595, 1500486291, 969189211); + TestUtils.AreEqual(a0++, r0); + + uint4 a1 = uint4(1007848192, 1643023524, 1190630527, 1396179607); + uint4 r1 = uint4(1007848192, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a1++, r1); + + uint4 a2 = uint4(708474528, 1524860667, 1408994706, 375284401); + uint4 r2 = uint4(708474528, 1524860667, 1408994706, 375284401); + TestUtils.AreEqual(a2++, r2); + + uint4 a3 = uint4(1580130369, 717006530, 506142468, 732199129); + uint4 r3 = uint4(1580130369, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint4_operator_prefix_dec() + { + uint4 a0 = uint4(200904609, 871077500, 968578728, 638967721); + uint4 r0 = uint4(200904608, 871077499, 968578727, 638967720); + TestUtils.AreEqual(--a0, r0); + + uint4 a1 = uint4(1995396216, 1782514098, 1589827826, 1434377580); + uint4 r1 = uint4(1995396215, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a1, r1); + + uint4 a2 = uint4(596759698, 1758478358, 1914114460, 71237375); + uint4 r2 = uint4(596759697, 1758478357, 1914114459, 71237374); + TestUtils.AreEqual(--a2, r2); + + uint4 a3 = uint4(389120307, 1310293956, 356565557, 18299409); + uint4 r3 = uint4(389120306, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint4_operator_postfix_dec() + { + uint4 a0 = uint4(283970262, 1109329936, 1073216143, 649439137); + uint4 r0 = uint4(283970262, 1109329936, 1073216143, 649439137); + TestUtils.AreEqual(a0--, r0); + + uint4 a1 = uint4(1932646215, 484207852, 524156737, 691209285); + uint4 r1 = uint4(1932646215, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a1--, r1); + + uint4 a2 = uint4(2017728859, 377162390, 526366486, 1504625034); + uint4 r2 = uint4(2017728859, 377162390, 526366486, 1504625034); + TestUtils.AreEqual(a2--, r2); + + uint4 a3 = uint4(590919177, 1867810045, 2095777993, 670715645); + uint4 r3 = uint4(590919177, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_and_wide_wide() + { + uint4 a0 = uint4(779935043, 1097962163, 1939593304, 800599247); + uint4 b0 = uint4(307705143, 1710882162, 866836769, 532490608); + uint4 r0 = uint4(39064835, 1097961522, 864731136, 263727168); + TestUtils.AreEqual(a0 & b0, r0); + + uint4 a1 = uint4(952140918, 782792558, 1608557706, 396446406); + uint4 b1 = uint4(679371720, 1794035877, 1439832202, 519529812); + uint4 r1 = uint4(675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a1 & b1, r1); + + uint4 a2 = uint4(2039894114, 1286974642, 442394124, 1759739564); + uint4 b2 = uint4(23633139, 1209152681, 646737179, 1255867027); + uint4 r2 = uint4(16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a2 & b2, r2); + + uint4 a3 = uint4(233435438, 665207770, 1942050241, 1022352952); + uint4 b3 = uint4(1900854122, 413173763, 1409138251, 2087190272); + uint4 r3 = uint4(21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_and_wide_scalar() + { + uint4 a0 = uint4(443615469, 490057985, 2042441263, 1524760558); + uint b0 = (93423598); + uint4 r0 = uint4(1114348, 85033216, 26281518, 8488942); + TestUtils.AreEqual(a0 & b0, r0); + + uint4 a1 = uint4(1405175110, 1941875181, 1236735839, 1365509729); + uint b1 = (510212004); + uint4 r1 = uint4(306251012, 304619940, 136386308, 274728480); + TestUtils.AreEqual(a1 & b1, r1); + + uint4 a2 = uint4(428270198, 650270920, 1249238550, 814629680); + uint b2 = (607982857); + uint4 r2 = uint4(262144, 603983880, 3478528, 537657600); + TestUtils.AreEqual(a2 & b2, r2); + + uint4 a3 = uint4(1862276471, 861733033, 1408932942, 957693145); + uint b3 = (143502472); + uint4 r3 = uint4(134218752, 852104, 8948744, 134556808); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint4 b0 = uint4(420346723, 562416448, 1393127318, 1560699552); + uint4 r0 = uint4(547170, 18752, 1074284806, 1140867104); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (851218057); + uint4 b1 = uint4(703880958, 1159378889, 2031211279, 1089518981); + uint4 r1 = uint4(548671112, 1607305, 806388233, 11570305); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (270607307); + uint4 b2 = uint4(1349288930, 520199596, 1763483957, 1248975349); + uint4 r2 = uint4(270533570, 268501384, 8449, 2163137); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (236938635); + uint4 b3 = uint4(185023291, 1085233038, 1845693112, 946052961); + uint4 r3 = uint4(168239371, 1000842, 235077768, 134415617); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_or_wide_wide() + { + uint4 a0 = uint4(1731159103, 659068416, 382702471, 1821032196); + uint4 b0 = uint4(1583847161, 692672727, 1161585489, 1756207130); + uint4 r0 = uint4(2138044159, 793370327, 1476391895, 1823457054); + TestUtils.AreEqual(a0 | b0, r0); + + uint4 a1 = uint4(1565773438, 1004000514, 948501377, 600951835); + uint4 b1 = uint4(1321374429, 1287357212, 2075767170, 1273513430); + uint4 r1 = uint4(1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a1 | b1, r1); + + uint4 a2 = uint4(669346222, 396691477, 2108560248, 2117522137); + uint4 b2 = uint4(1610830169, 1316929125, 511625048, 573925879); + uint4 r2 = uint4(1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a2 | b2, r2); + + uint4 a3 = uint4(330307355, 818676817, 1774459567, 1117506257); + uint4 b3 = uint4(1502255628, 1841676448, 1682928938, 1115131952); + uint4 r3 = uint4(1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_or_wide_scalar() + { + uint4 a0 = uint4(961259683, 471103264, 1733389229, 1591585258); + uint b0 = (1666102508); + uint4 r0 = uint4(2068823279, 2136930284, 1734344685, 2145369582); + TestUtils.AreEqual(a0 | b0, r0); + + uint4 a1 = uint4(386953869, 1048929715, 1814263250, 860336789); + uint b1 = (1148351449); + uint4 r1 = uint4(1467118557, 2130147323, 1819506651, 2004349917); + TestUtils.AreEqual(a1 | b1, r1); + + uint4 a2 = uint4(1637162093, 774029856, 879300408, 1179087439); + uint b2 = (1227888278); + uint4 r2 = uint4(1773477631, 1865602742, 2105089982, 1333229279); + TestUtils.AreEqual(a2 | b2, r2); + + uint4 a3 = uint4(797240690, 46921989, 1980838747, 284225881); + uint b3 = (1977614655); + uint4 r3 = uint4(2145709439, 2011953471, 2012296063, 1978724735); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint4 b0 = uint4(1212928242, 1614462616, 936937728, 764766995); + uint4 r0 = uint4(1213978111, 1752940445, 2145094925, 1842867999); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (306352095); + uint4 b1 = uint4(574719481, 1283571271, 2109131012, 979469710); + uint4 r1 = uint4(843288575, 1589886943, 2146881503, 979603423); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1348323481); + uint4 b2 = uint4(1407542578, 697517649, 1059093741, 627815046); + uint4 r2 = uint4(1409150395, 2044710617, 2138963197, 1971321503); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (418822515); + uint4 b3 = uint4(83214352, 424663473, 447949225, 527022375); + uint4 r3 = uint4(486013299, 436206067, 452442619, 536852855); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_xor_wide_wide() + { + uint4 a0 = uint4(1556324760, 207002929, 1843444873, 1632079131); + uint4 b0 = uint4(1054997548, 1523759632, 251164872, 110472397); + uint4 r0 = uint4(1646419380, 1451501345, 1662567489, 1741824470); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4 a1 = uint4(1460334334, 1607815585, 220623650, 38668553); + uint4 b1 = uint4(384031112, 1109163205, 535118981, 179106262); + uint4 r1 = uint4(1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4 a2 = uint4(47193340, 643663548, 1371932564, 94957188); + uint4 b2 = uint4(1523031711, 1713313372, 1294118730, 520360641); + uint4 r2 = uint4(1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4 a3 = uint4(700973621, 370621508, 2087573076, 351476570); + uint4 b3 = uint4(1040688781, 1020757245, 1143954843, 1281933464); + uint4 r3 = uint4(399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_xor_wide_scalar() + { + uint4 a0 = uint4(2124666952, 177397845, 574879617, 1937385541); + uint b0 = (493665894); + uint4 r0 = uint4(1674536494, 402546227, 1060063719, 1846973987); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4 a1 = uint4(1136545648, 535061373, 289301586, 1305234431); + uint b1 = (213863690); + uint4 r1 = uint4(1325466234, 324742775, 495003992, 1098057461); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4 a2 = uint4(353786540, 1267729267, 125659640, 1315625690); + uint b2 = (1308626970); + uint4 r2 = uint4(1528187574, 93328233, 1232959970, 6998720); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4 a3 = uint4(1730088797, 375757978, 491079274, 191750702); + uint b3 = (116862046); + uint4 r3 = uint4(1642603267, 278048964, 464677428, 228249200); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint4 b0 = uint4(1077599928, 884741329, 212164516, 1585020328); + uint4 r0 = uint4(217506340, 2020616269, 1080648504, 313868596); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (152985454); + uint4 b1 = uint4(1775851275, 1416249064, 1309317737, 1773918217); + uint4 r1 = uint4(1623656549, 1567908230, 1192543495, 1621460839); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1509843030); + uint4 b2 = uint4(1206045972, 1154916424, 1947871003, 1774252400); + uint4 r2 = uint4(505195842, 489209886, 769935181, 809406758); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1946113778); + uint4 b3 = uint4(1079717492, 290620937, 1382343363, 939045099); + uint4 r3 = uint4(866416774, 1655558395, 563852337, 1141368345); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4_operator_left_shift() + { + uint4 a0 = uint4(197771193, 622182602, 1283988958, 1327917304); + int b0 = (1321149625); + uint4 r0 = uint4(1912602624, 2483027968, 3154116608, 4026531840); + TestUtils.AreEqual(a0 << b0, r0); + + uint4 a1 = uint4(473415985, 870301196, 2058433484, 1200694230); + int b1 = (432425717); + uint4 r1 = uint4(639631360, 3246391296, 2038431744, 2059403264); + TestUtils.AreEqual(a1 << b1, r1); + + uint4 a2 = uint4(1531607705, 1008296534, 1447702302, 1079614371); + int b2 = (1360008038); + uint4 r2 = uint4(3533612608, 106468736, 2458634112, 375843008); + TestUtils.AreEqual(a2 << b2, r2); + + uint4 a3 = uint4(35667343, 2045594989, 2077023268, 592678686); + int b3 = (1664454606); + uint4 r3 = uint4(258195456, 1398489088, 923336704, 3821502464); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint4_operator_right_shift() + { + uint4 a0 = uint4(548167301, 1161338299, 1617625829, 1860731847); + int b0 = (1266801540); + uint4 r0 = uint4(34260456, 72583643, 101101614, 116295740); + TestUtils.AreEqual(a0 >> b0, r0); + + uint4 a1 = uint4(713958715, 770466193, 1265099998, 572763124); + int b1 = (196552656); + uint4 r1 = uint4(10894, 11756, 19303, 8739); + TestUtils.AreEqual(a1 >> b1, r1); + + uint4 a2 = uint4(506619530, 2031319045, 701927980, 917785020); + int b2 = (426807581); + uint4 r2 = uint4(0, 3, 1, 1); + TestUtils.AreEqual(a2 >> b2, r2); + + uint4 a3 = uint4(569504877, 1102123711, 334005460, 1624751550); + int b3 = (185593382); + uint4 r3 = uint4(8898513, 17220682, 5218835, 25386742); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_not() + { + uint4 a0 = uint4(1403358969, 831360921, 2088190243, 976721016); + uint4 r0 = uint4(2891608326, 3463606374, 2206777052, 3318246279); + TestUtils.AreEqual(~a0, r0); + + uint4 a1 = uint4(878283189, 1935567517, 1420884856, 472965491); + uint4 r1 = uint4(3416684106, 2359399778, 2874082439, 3822001804); + TestUtils.AreEqual(~a1, r1); + + uint4 a2 = uint4(771711426, 2061524024, 753208488, 2097179283); + uint4 r2 = uint4(3523255869, 2233443271, 3541758807, 2197788012); + TestUtils.AreEqual(~a2, r2); + + uint4 a3 = uint4(1303022493, 1289372466, 1635981125, 1951018596); + uint4 r3 = uint4(2991944802, 3005594829, 2658986170, 2343948699); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void uint4_shuffle_result_1() + { + uint4 a = uint4(0, 1, 2, 3); + uint4 b = uint4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW), (7)); + } + + [TestCompiler] + public static void uint4_shuffle_result_2() + { + uint4 a = uint4(0, 1, 2, 3); + uint4 b = uint4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), uint2(5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX), uint2(6, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint2(1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftW), uint2(7, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftZ), uint2(7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), uint2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW), uint2(5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), uint2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightW), uint2(6, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ), uint2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), uint2(6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), uint2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), uint2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightY), uint2(7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), uint2(4, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW), uint2(1, 3)); + } + + [TestCompiler] + public static void uint4_shuffle_result_3() + { + uint4 a = uint4(0, 1, 2, 3); + uint4 b = uint4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightY), uint3(2, 7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.LeftW), uint3(6, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightX), uint3(2, 7, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), uint3(5, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), uint3(7, 6, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightX), uint3(3, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightW), uint3(3, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.RightZ), uint3(6, 5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint3(5, 4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightW, ShuffleComponent.LeftX), uint3(7, 7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(6, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightW), uint3(6, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightY), uint3(3, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint3(6, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightW), uint3(5, 1, 7)); + } + + [TestCompiler] + public static void uint4_shuffle_result_4() + { + uint4 a = uint4(0, 1, 2, 3); + uint4 b = uint4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ), uint4(1, 3, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightZ), uint4(5, 3, 6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.RightW, ShuffleComponent.LeftZ), uint4(6, 6, 7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ), uint4(4, 5, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), uint4(6, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightW), uint4(4, 5, 5, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightW, ShuffleComponent.LeftX, ShuffleComponent.RightW), uint4(1, 7, 0, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftX), uint4(5, 0, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightW, ShuffleComponent.LeftW, ShuffleComponent.LeftY), uint4(4, 7, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint4(5, 4, 1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint4(0, 2, 6, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightW, ShuffleComponent.RightW), uint4(2, 5, 7, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ, ShuffleComponent.RightX), uint4(3, 4, 2, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), uint4(4, 0, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(6, 4, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint4(3, 7, 1, 5)); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4.gen.cs.meta new file mode 100644 index 0000000..b1ef89f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f91c46b1912b5d04d8e4e1ddb7377874 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x2.gen.cs new file mode 100644 index 0000000..c1358ac --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x2.gen.cs @@ -0,0 +1,1229 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint4x2 + { + [TestCompiler] + public static void uint4x2_zero() + { + TestUtils.AreEqual(uint4x2.zero.c0.x, 0u); + TestUtils.AreEqual(uint4x2.zero.c0.y, 0u); + TestUtils.AreEqual(uint4x2.zero.c0.z, 0u); + TestUtils.AreEqual(uint4x2.zero.c0.w, 0u); + TestUtils.AreEqual(uint4x2.zero.c1.x, 0u); + TestUtils.AreEqual(uint4x2.zero.c1.y, 0u); + TestUtils.AreEqual(uint4x2.zero.c1.z, 0u); + TestUtils.AreEqual(uint4x2.zero.c1.w, 0u); + } + + [TestCompiler] + public static void uint4x2_operator_equal_wide_wide() + { + uint4x2 a0 = uint4x2(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370); + uint4x2 b0 = uint4x2(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x2 a1 = uint4x2(1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + uint4x2 b1 = uint4x2(1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x2 a2 = uint4x2(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint4x2 b2 = uint4x2(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x2 a3 = uint4x2(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + uint4x2 b3 = uint4x2(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_equal_wide_scalar() + { + uint4x2 a0 = uint4x2(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277); + uint b0 = (746972502); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x2 a1 = uint4x2(1682018538, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077); + uint b1 = (795585660); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x2 a2 = uint4x2(442746747, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678); + uint b2 = (1772925698); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x2 a3 = uint4x2(1305479811, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832); + uint b3 = (255635293); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint4x2 b0 = uint4x2(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1061805787); + uint4x2 b1 = uint4x2(1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (2003197687); + uint4x2 b2 = uint4x2(1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (367814403); + uint4x2 b3 = uint4x2(1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_not_equal_wide_wide() + { + uint4x2 a0 = uint4x2(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646); + uint4x2 b0 = uint4x2(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x2 a1 = uint4x2(1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + uint4x2 b1 = uint4x2(1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x2 a2 = uint4x2(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint4x2 b2 = uint4x2(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x2 a3 = uint4x2(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + uint4x2 b3 = uint4x2(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_not_equal_wide_scalar() + { + uint4x2 a0 = uint4x2(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450); + uint b0 = (248693828); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x2 a1 = uint4x2(2105962247, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883); + uint b1 = (727205263); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x2 a2 = uint4x2(1622176923, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685); + uint b2 = (768370497); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x2 a3 = uint4x2(904014575, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907); + uint b3 = (384643370); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint4x2 b0 = uint4x2(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (124108032); + uint4x2 b1 = uint4x2(1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (266984506); + uint4x2 b2 = uint4x2(2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (572038024); + uint4x2 b3 = uint4x2(1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_wide_wide() + { + uint4x2 a0 = uint4x2(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973); + uint4x2 b0 = uint4x2(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202); + bool4x2 r0 = bool4x2(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x2 a1 = uint4x2(928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + uint4x2 b1 = uint4x2(2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x2 a2 = uint4x2(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint4x2 b2 = uint4x2(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool4x2 r2 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x2 a3 = uint4x2(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + uint4x2 b3 = uint4x2(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool4x2 r3 = bool4x2(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_wide_scalar() + { + uint4x2 a0 = uint4x2(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341); + uint b0 = (1491216667); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x2 a1 = uint4x2(840091491, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709); + uint b1 = (469591900); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x2 a2 = uint4x2(1286331950, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110); + uint b2 = (380753337); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x2 a3 = uint4x2(867559111, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996); + uint b3 = (1703747625); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint4x2 b0 = uint4x2(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (111349251); + uint4x2 b1 = uint4x2(1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1027318999); + uint4x2 b2 = uint4x2(146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400); + bool4x2 r2 = bool4x2(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (1329939911); + uint4x2 b3 = uint4x2(1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_wide_wide() + { + uint4x2 a0 = uint4x2(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550); + uint4x2 b0 = uint4x2(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742); + bool4x2 r0 = bool4x2(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x2 a1 = uint4x2(2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + uint4x2 b1 = uint4x2(910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool4x2 r1 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x2 a2 = uint4x2(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint4x2 b2 = uint4x2(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x2 a3 = uint4x2(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + uint4x2 b3 = uint4x2(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_wide_scalar() + { + uint4x2 a0 = uint4x2(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035); + uint b0 = (438688675); + bool4x2 r0 = bool4x2(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x2 a1 = uint4x2(2125058448, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211); + uint b1 = (304028799); + bool4x2 r1 = bool4x2(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x2 a2 = uint4x2(2063134811, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419); + uint b2 = (1577403353); + bool4x2 r2 = bool4x2(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x2 a3 = uint4x2(1058332184, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708); + uint b3 = (524569092); + bool4x2 r3 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint4x2 b0 = uint4x2(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (691047512); + uint4x2 b1 = uint4x2(741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1023307544); + uint4x2 b2 = uint4x2(1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900); + bool4x2 r2 = bool4x2(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (315569296); + uint4x2 b3 = uint4x2(292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844); + bool4x2 r3 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_equal_wide_wide() + { + uint4x2 a0 = uint4x2(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394); + uint4x2 b0 = uint4x2(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595); + bool4x2 r0 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x2 a1 = uint4x2(117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + uint4x2 b1 = uint4x2(1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool4x2 r1 = bool4x2(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x2 a2 = uint4x2(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint4x2 b2 = uint4x2(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool4x2 r2 = bool4x2(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x2 a3 = uint4x2(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + uint4x2 b3 = uint4x2(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_equal_wide_scalar() + { + uint4x2 a0 = uint4x2(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407); + uint b0 = (1688048545); + bool4x2 r0 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x2 a1 = uint4x2(1459242706, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948); + uint b1 = (1745758438); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x2 a2 = uint4x2(2017733017, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750); + uint b2 = (804204255); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x2 a3 = uint4x2(1258115260, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122); + uint b3 = (20607406); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint4x2 b0 = uint4x2(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (762067160); + uint4x2 b1 = uint4x2(11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309); + bool4x2 r1 = bool4x2(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (861890786); + uint4x2 b2 = uint4x2(478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850); + bool4x2 r2 = bool4x2(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (830430286); + uint4x2 b3 = uint4x2(145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788); + bool4x2 r3 = bool4x2(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_equal_wide_wide() + { + uint4x2 a0 = uint4x2(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546); + uint4x2 b0 = uint4x2(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862); + bool4x2 r0 = bool4x2(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x2 a1 = uint4x2(1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + uint4x2 b1 = uint4x2(396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool4x2 r1 = bool4x2(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x2 a2 = uint4x2(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint4x2 b2 = uint4x2(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool4x2 r2 = bool4x2(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x2 a3 = uint4x2(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + uint4x2 b3 = uint4x2(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool4x2 r3 = bool4x2(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_equal_wide_scalar() + { + uint4x2 a0 = uint4x2(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894); + uint b0 = (1470533736); + bool4x2 r0 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x2 a1 = uint4x2(609211196, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021); + uint b1 = (1604309397); + bool4x2 r1 = bool4x2(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x2 a2 = uint4x2(196833647, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607); + uint b2 = (1596738181); + bool4x2 r2 = bool4x2(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x2 a3 = uint4x2(1223010129, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090); + uint b3 = (379014762); + bool4x2 r3 = bool4x2(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint4x2 b0 = uint4x2(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1240253990); + uint4x2 b1 = uint4x2(1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577); + bool4x2 r1 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (173706579); + uint4x2 b2 = uint4x2(625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (233894308); + uint4x2 b3 = uint4x2(479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835); + bool4x2 r3 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_add_wide_wide() + { + uint4x2 a0 = uint4x2(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721); + uint4x2 b0 = uint4x2(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440); + uint4x2 r0 = uint4x2(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x2 a1 = uint4x2(698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + uint4x2 b1 = uint4x2(1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + uint4x2 r1 = uint4x2(2285462935, 1101613923, 3495777492, 1384643660, 4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x2 a2 = uint4x2(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint4x2 b2 = uint4x2(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint4x2 r2 = uint4x2(2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x2 a3 = uint4x2(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + uint4x2 b3 = uint4x2(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + uint4x2 r3 = uint4x2(3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_add_wide_scalar() + { + uint4x2 a0 = uint4x2(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301); + uint b0 = (2124409227); + uint4x2 r0 = uint4x2(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x2 a1 = uint4x2(2003021861, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654); + uint b1 = (1635971971); + uint4x2 r1 = uint4x2(3638993832, 2796370257, 1721418173, 2704124937, 2875359071, 3133648859, 3363449456, 2731410625); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x2 a2 = uint4x2(756559204, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260); + uint b2 = (1818718931); + uint4x2 r2 = uint4x2(2575278135, 2477642483, 3429237852, 3404474329, 2511562231, 2887312400, 3523495164, 2396501191); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x2 a3 = uint4x2(736972565, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516); + uint b3 = (711894571); + uint4x2 r3 = uint4x2(1448867136, 1276152010, 2763630854, 2284732268, 2339901116, 2567594834, 1368643353, 984669087); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint4x2 b0 = uint4x2(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072); + uint4x2 r0 = uint4x2(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (996031825); + uint4x2 b1 = uint4x2(1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489); + uint4x2 r1 = uint4x2(2553806774, 1775806765, 2107573127, 1779078270, 2126195769, 1284311409, 2393715686, 2632615314); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (673263339); + uint4x2 b2 = uint4x2(1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839); + uint4x2 r2 = uint4x2(2142564213, 688119304, 1789900338, 2162126639, 2274254225, 863914640, 1980723107, 1593349178); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (2082229835); + uint4x2 b3 = uint4x2(1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222); + uint4x2 r3 = uint4x2(4074635409, 3296154293, 2588071287, 3063650997, 3570567534, 3196056475, 3888376343, 3924021057); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_sub_wide_wide() + { + uint4x2 a0 = uint4x2(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138); + uint4x2 b0 = uint4x2(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885); + uint4x2 r0 = uint4x2(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x2 a1 = uint4x2(1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + uint4x2 b1 = uint4x2(71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + uint4x2 r1 = uint4x2(1234495882, 3456019244, 3562788131, 3413504982, 4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x2 a2 = uint4x2(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint4x2 b2 = uint4x2(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint4x2 r2 = uint4x2(3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x2 a3 = uint4x2(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + uint4x2 b3 = uint4x2(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + uint4x2 r3 = uint4x2(4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_sub_wide_scalar() + { + uint4x2 a0 = uint4x2(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815); + uint b0 = (462232403); + uint4x2 r0 = uint4x2(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x2 a1 = uint4x2(281174200, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635); + uint b1 = (87530840); + uint4x2 r1 = uint4x2(193643360, 1826193591, 1954062496, 469709150, 1031520608, 1502845892, 731559349, 728851795); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x2 a2 = uint4x2(815920639, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794); + uint b2 = (1829033117); + uint4x2 r2 = uint4x2(3281854818, 4258736111, 3579374728, 3884872155, 3743191368, 263746281, 3108170921, 4071184973); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x2 a3 = uint4x2(819644478, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500); + uint b3 = (1468003019); + uint4x2 r3 = uint4x2(3646608755, 2955267463, 3380458534, 3844091248, 531741763, 549269739, 349988745, 4107949777); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint4x2 b0 = uint4x2(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277); + uint4x2 r0 = uint4x2(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (1789300421); + uint4x2 b1 = uint4x2(264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829); + uint4x2 r1 = uint4x2(1524587528, 557444354, 4266154969, 360864312, 530554961, 711920025, 458577702, 1271188592); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (967128529); + uint4x2 b2 = uint4x2(344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709); + uint4x2 r2 = uint4x2(622462275, 4179827907, 59261833, 3445210702, 506787961, 4974031, 410015068, 3560879116); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1980098777); + uint4x2 b3 = uint4x2(730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041); + uint4x2 r3 = uint4x2(1250038225, 535700950, 1126528221, 1841262345, 966908349, 1262009247, 1473341387, 763650736); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mul_wide_wide() + { + uint4x2 a0 = uint4x2(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069); + uint4x2 b0 = uint4x2(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980); + uint4x2 r0 = uint4x2(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x2 a1 = uint4x2(571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + uint4x2 b1 = uint4x2(1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + uint4x2 r1 = uint4x2(2640799263, 2093463192, 3087460678, 3161406466, 990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x2 a2 = uint4x2(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint4x2 b2 = uint4x2(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint4x2 r2 = uint4x2(649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x2 a3 = uint4x2(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + uint4x2 b3 = uint4x2(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + uint4x2 r3 = uint4x2(1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mul_wide_scalar() + { + uint4x2 a0 = uint4x2(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909); + uint b0 = (1476837906); + uint4x2 r0 = uint4x2(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x2 a1 = uint4x2(975743632, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467); + uint b1 = (573770299); + uint4x2 r1 = uint4x2(414773040, 3595344211, 1045098929, 3165813842, 1954692228, 970215437, 1522404739, 631100697); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x2 a2 = uint4x2(1186856590, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703); + uint b2 = (890343818); + uint4x2 r2 = uint4x2(218605196, 908725324, 3489887282, 2766521704, 1365477062, 1262261996, 2040090952, 691203142); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x2 a3 = uint4x2(1613845584, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051); + uint b3 = (76318055); + uint4x2 r3 = uint4x2(2959506480, 1256424448, 3749667707, 628661398, 357366566, 753276674, 2132219401, 3469671949); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint4x2 b0 = uint4x2(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146); + uint4x2 r0 = uint4x2(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (2105124483); + uint4x2 b1 = uint4x2(1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225); + uint4x2 r1 = uint4x2(3266048080, 2084093460, 1286996821, 910923781, 1886305329, 3255007413, 644799552, 1815059427); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (994616533); + uint4x2 b2 = uint4x2(1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330); + uint4x2 r2 = uint4x2(585859259, 2021158292, 1046891801, 2353145761, 3556190869, 2579715257, 4134395107, 1259643370); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (1186460236); + uint4x2 b3 = uint4x2(657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873); + uint4x2 r3 = uint4x2(3393334220, 3415667152, 1278776548, 1761940324, 3619679884, 2049744268, 3919669496, 2350571308); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_div_wide_wide() + { + uint4x2 a0 = uint4x2(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739); + uint4x2 b0 = uint4x2(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678); + uint4x2 r0 = uint4x2(1, 0, 0, 8, 0, 0, 2, 7); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x2 a1 = uint4x2(499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + uint4x2 b1 = uint4x2(2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + uint4x2 r1 = uint4x2(0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x2 a2 = uint4x2(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint4x2 b2 = uint4x2(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint4x2 r2 = uint4x2(1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x2 a3 = uint4x2(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + uint4x2 b3 = uint4x2(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + uint4x2 r3 = uint4x2(2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_div_wide_scalar() + { + uint4x2 a0 = uint4x2(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253); + uint b0 = (947861580); + uint4x2 r0 = uint4x2(0, 1, 0, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x2 a1 = uint4x2(341995568, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372); + uint b1 = (495895326); + uint4x2 r1 = uint4x2(0, 3, 3, 4, 4, 2, 1, 3); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x2 a2 = uint4x2(1447236569, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924); + uint b2 = (107215658); + uint4x2 r2 = uint4x2(13, 0, 8, 6, 11, 13, 16, 17); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x2 a3 = uint4x2(1244966864, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348); + uint b3 = (1200843642); + uint4x2 r3 = uint4x2(1, 0, 1, 1, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint4x2 b0 = uint4x2(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032); + uint4x2 r0 = uint4x2(6, 0, 0, 0, 2, 0, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (81831373); + uint4x2 b1 = uint4x2(1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859); + uint4x2 r1 = uint4x2(0, 0, 1, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1653451772); + uint4x2 b2 = uint4x2(270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890); + uint4x2 r2 = uint4x2(6, 33, 0, 1, 1, 0, 2, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (351914083); + uint4x2 b3 = uint4x2(131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708); + uint4x2 r3 = uint4x2(2, 0, 0, 0, 1, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mod_wide_wide() + { + uint4x2 a0 = uint4x2(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532); + uint4x2 b0 = uint4x2(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806); + uint4x2 r0 = uint4x2(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x2 a1 = uint4x2(778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + uint4x2 b1 = uint4x2(769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + uint4x2 r1 = uint4x2(9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x2 a2 = uint4x2(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint4x2 b2 = uint4x2(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint4x2 r2 = uint4x2(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x2 a3 = uint4x2(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + uint4x2 b3 = uint4x2(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + uint4x2 r3 = uint4x2(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mod_wide_scalar() + { + uint4x2 a0 = uint4x2(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899); + uint b0 = (883951171); + uint4x2 r0 = uint4x2(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x2 a1 = uint4x2(896587769, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717); + uint b1 = (405208598); + uint4x2 r1 = uint4x2(86170573, 361927802, 148819739, 307112428, 172564850, 324442651, 275480547, 391863923); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x2 a2 = uint4x2(165478511, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313); + uint b2 = (647846716); + uint4x2 r2 = uint4x2(165478511, 267861283, 307136969, 280344567, 437088090, 488509689, 144280764, 377501313); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x2 a3 = uint4x2(1778384846, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942); + uint b3 = (1216011754); + uint4x2 r3 = uint4x2(562373092, 812183417, 1153802502, 426660116, 708698988, 665297470, 352079071, 834971188); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint4x2 b0 = uint4x2(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265); + uint4x2 r0 = uint4x2(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (293460573); + uint4x2 b1 = uint4x2(1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342); + uint4x2 r1 = uint4x2(293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (797184687); + uint4x2 b2 = uint4x2(821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318); + uint4x2 r2 = uint4x2(797184687, 797184687, 797184687, 797184687, 182024723, 797184687, 1919391, 797184687); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (164578061); + uint4x2 b3 = uint4x2(730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733); + uint4x2 r3 = uint4x2(164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_plus() + { + uint4x2 a0 = uint4x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + uint4x2 r0 = uint4x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + TestUtils.AreEqual(+a0, r0); + + uint4x2 a1 = uint4x2(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + uint4x2 r1 = uint4x2(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + TestUtils.AreEqual(+a1, r1); + + uint4x2 a2 = uint4x2(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + uint4x2 r2 = uint4x2(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + TestUtils.AreEqual(+a2, r2); + + uint4x2 a3 = uint4x2(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + uint4x2 r3 = uint4x2(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_neg() + { + uint4x2 a0 = uint4x2(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349); + uint4x2 r0 = uint4x2(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947); + TestUtils.AreEqual(-a0, r0); + + uint4x2 a1 = uint4x2(1115028238, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094); + uint4x2 r1 = uint4x2(3179939058, 3599972203, 2752761010, 4081880003, 4051029809, 3953445021, 3453882054, 3720808202); + TestUtils.AreEqual(-a1, r1); + + uint4x2 a2 = uint4x2(1687250035, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928); + uint4x2 r2 = uint4x2(2607717261, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432, 2854192368); + TestUtils.AreEqual(-a2, r2); + + uint4x2 a3 = uint4x2(1485596454, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098); + uint4x2 r3 = uint4x2(2809370842, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012, 2340793982, 2585110198); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_prefix_inc() + { + uint4x2 a0 = uint4x2(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442); + uint4x2 r0 = uint4x2(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443); + TestUtils.AreEqual(++a0, r0); + + uint4x2 a1 = uint4x2(913293639, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683); + uint4x2 r1 = uint4x2(913293640, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684); + TestUtils.AreEqual(++a1, r1); + + uint4x2 a2 = uint4x2(993189311, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865); + uint4x2 r2 = uint4x2(993189312, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866); + TestUtils.AreEqual(++a2, r2); + + uint4x2 a3 = uint4x2(519296647, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208); + uint4x2 r3 = uint4x2(519296648, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_postfix_inc() + { + uint4x2 a0 = uint4x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + uint4x2 r0 = uint4x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + TestUtils.AreEqual(a0++, r0); + + uint4x2 a1 = uint4x2(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + uint4x2 r1 = uint4x2(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + TestUtils.AreEqual(a1++, r1); + + uint4x2 a2 = uint4x2(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + uint4x2 r2 = uint4x2(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + TestUtils.AreEqual(a2++, r2); + + uint4x2 a3 = uint4x2(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + uint4x2 r3 = uint4x2(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint4x2_operator_prefix_dec() + { + uint4x2 a0 = uint4x2(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826); + uint4x2 r0 = uint4x2(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825); + TestUtils.AreEqual(--a0, r0); + + uint4x2 a1 = uint4x2(1434377580, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956); + uint4x2 r1 = uint4x2(1434377579, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955); + TestUtils.AreEqual(--a1, r1); + + uint4x2 a2 = uint4x2(356565557, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829); + uint4x2 r2 = uint4x2(356565556, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828); + TestUtils.AreEqual(--a2, r2); + + uint4x2 a3 = uint4x2(1454322707, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343); + uint4x2 r3 = uint4x2(1454322706, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_postfix_dec() + { + uint4x2 a0 = uint4x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + uint4x2 r0 = uint4x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + TestUtils.AreEqual(a0--, r0); + + uint4x2 a1 = uint4x2(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + uint4x2 r1 = uint4x2(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + TestUtils.AreEqual(a1--, r1); + + uint4x2 a2 = uint4x2(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + uint4x2 r2 = uint4x2(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + TestUtils.AreEqual(a2--, r2); + + uint4x2 a3 = uint4x2(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + uint4x2 r3 = uint4x2(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_and_wide_wide() + { + uint4x2 a0 = uint4x2(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406); + uint4x2 b0 = uint4x2(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812); + uint4x2 r0 = uint4x2(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x2 a1 = uint4x2(2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + uint4x2 b1 = uint4x2(23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + uint4x2 r1 = uint4x2(16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x2 a2 = uint4x2(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint4x2 b2 = uint4x2(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint4x2 r2 = uint4x2(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x2 a3 = uint4x2(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + uint4x2 b3 = uint4x2(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + uint4x2 r3 = uint4x2(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_and_wide_scalar() + { + uint4x2 a0 = uint4x2(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839); + uint b0 = (93423598); + uint4x2 r0 = uint4x2(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x2 a1 = uint4x2(1365509729, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033); + uint b1 = (428270198); + uint4x2 r1 = uint4x2(285475424, 262144, 8536128, 134529558, 277234224, 150995062, 142909440, 285474848); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x2 a2 = uint4x2(1408932942, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926); + uint b2 = (957693145); + uint4x2 r2 = uint4x2(286268488, 420556880, 18167000, 286270481, 420753408, 134551616, 152314057, 420547656); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x2 a3 = uint4x2(1817145060, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525); + uint b3 = (1466722981); + uint4x2 r3 = uint4x2(1145858724, 1145069572, 273443365, 101460005, 1093403136, 524420, 335806629, 1142948357); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint4x2 b0 = uint4x2(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279); + uint4x2 r0 = uint4x2(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1089518981); + uint4x2 b1 = uint4x2(270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038); + uint4x2 r1 = uint4x2(2105729, 1080066432, 40324, 1074831621, 1081121157, 1058177, 14593, 1084233092); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1845693112); + uint4x2 b2 = uint4x2(946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417); + uint4x2 r2 = uint4x2(671287840, 1141047992, 1744964224, 33751056, 1744964256, 1845559864, 1140852752, 1208158384); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1214109404); + uint4x2 b3 = uint4x2(2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506); + uint4x2 r3 = uint4x2(16988, 1208799884, 1074321052, 1209303624, 1115840, 1213727936, 1610312, 1078218760); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_or_wide_wide() + { + uint4x2 a0 = uint4x2(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835); + uint4x2 b0 = uint4x2(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430); + uint4x2 r0 = uint4x2(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x2 a1 = uint4x2(669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + uint4x2 b1 = uint4x2(1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + uint4x2 r1 = uint4x2(1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x2 a2 = uint4x2(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint4x2 b2 = uint4x2(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint4x2 r2 = uint4x2(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x2 a3 = uint4x2(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + uint4x2 b3 = uint4x2(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + uint4x2 r3 = uint4x2(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_or_wide_scalar() + { + uint4x2 a0 = uint4x2(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250); + uint b0 = (1666102508); + uint4x2 r0 = uint4x2(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x2 a1 = uint4x2(860336789, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989); + uint b1 = (1637162093); + uint4x2 r1 = uint4x2(1943518973, 1773477631, 1874321005, 1979522941, 1742175855, 1872100735, 1978998143, 1675623789); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x2 a2 = uint4x2(1980838747, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359); + uint b2 = (284225881); + uint4x2 r2 = uint4x2(1995567963, 334885881, 317847551, 1408563035, 1895366623, 536016891, 2029779967, 2063332319); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x2 a3 = uint4x2(1511253082, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895); + uint b3 = (1775629833); + uint4x2 r3 = uint4x2(2077750875, 1843265467, 1775761279, 2111176313, 2046817999, 2113404623, 1778251405, 2077753039); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint4x2 b0 = uint4x2(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012); + uint4x2 r0 = uint4x2(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (979469710); + uint4x2 b1 = uint4x2(1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473); + uint4x2 r1 = uint4x2(2055064991, 2078664126, 1005832159, 1063386607, 1064023950, 989314559, 1056294302, 997187007); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (447949225); + uint4x2 b2 = uint4x2(527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150); + uint4x2 r2 = uint4x2(536590767, 2126457261, 447999469, 1526184941, 2062773753, 1593519101, 1589357545, 1526197231); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (298563808); + uint4x2 b3 = uint4x2(2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556); + uint4x2 r3 = uint4x2(2078276845, 872414207, 938213110, 1945092072, 1375468774, 838844392, 1004273386, 836763636); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_xor_wide_wide() + { + uint4x2 a0 = uint4x2(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553); + uint4x2 b0 = uint4x2(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262); + uint4x2 r0 = uint4x2(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x2 a1 = uint4x2(47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + uint4x2 b1 = uint4x2(1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + uint4x2 r1 = uint4x2(1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x2 a2 = uint4x2(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint4x2 b2 = uint4x2(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint4x2 r2 = uint4x2(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x2 a3 = uint4x2(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + uint4x2 b3 = uint4x2(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + uint4x2 r3 = uint4x2(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_xor_wide_scalar() + { + uint4x2 a0 = uint4x2(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586); + uint b0 = (493665894); + uint4x2 r0 = uint4x2(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x2 a1 = uint4x2(1305234431, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978); + uint b1 = (353786540); + uint4x2 r1 = uint4x2(1490686291, 1528187574, 1585863135, 309015380, 1534886006, 1913214449, 333543154, 57919030); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x2 a2 = uint4x2(491079274, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736); + uint b2 = (191750702); + uint4x2 r2 = uint4x2(371762244, 4897915, 852093491, 732592657, 763363694, 190966742, 1397197090, 1867453430); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x2 a3 = uint4x2(447453839, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291); + uint b3 = (890841598); + uint4x2 r3 = uint4x2(800240497, 610664066, 711808497, 714187902, 1735978412, 1929239075, 171965729, 427463573); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint4x2 b0 = uint4x2(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737); + uint4x2 r0 = uint4x2(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1773918217); + uint4x2 b1 = uint4x2(1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937); + uint4x2 r1 = uint4x2(809875551, 777590045, 762148929, 497155858, 8071545, 440700667, 702609021, 2028559872); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1382343363); + uint4x2 b2 = uint4x2(939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481); + uint4x2 r2 = uint4x2(1704743464, 476745462, 1598742512, 1722301941, 1981778335, 1509285046, 19333242, 1884605034); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1813817520); + uint4x2 b3 = uint4x2(86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759); + uint4x2 r3 = uint4x2(1765145501, 465338881, 961174309, 1508358725, 916626445, 1734574159, 1183306712, 2052237431); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_left_shift() + { + uint4x2 a0 = uint4x2(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484); + int b0 = (1321149625); + uint4x2 r0 = uint4x2(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832); + TestUtils.AreEqual(a0 << b0, r0); + + uint4x2 a1 = uint4x2(1200694230, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989); + int b1 = (1531607705); + uint4x2 r1 = uint4x2(2885681152, 3422552064, 2885681152, 1006632960, 1174405120, 503316480, 2617245696, 3657433088); + TestUtils.AreEqual(a1 << b1, r1); + + uint4x2 a2 = uint4x2(2077023268, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278); + int b2 = (592678686); + uint4x2 r2 = uint4x2(0, 3221225472, 3221225472, 3221225472, 1073741824, 1073741824, 1073741824, 2147483648); + TestUtils.AreEqual(a2 << b2, r2); + + uint4x2 a3 = uint4x2(221147365, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688); + int b3 = (2084190583); + uint4x2 r3 = uint4x2(1920991232, 2952790016, 3690987520, 4160749568, 3489660928, 3984588800, 109051904, 1207959552); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_right_shift() + { + uint4x2 a0 = uint4x2(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998); + int b0 = (1266801540); + uint4x2 r0 = uint4x2(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749); + TestUtils.AreEqual(a0 >> b0, r0); + + uint4x2 a1 = uint4x2(572763124, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711); + int b1 = (506619530); + uint4x2 r1 = uint4x2(559338, 416804, 1983710, 685476, 896274, 556157, 181243, 1076292); + TestUtils.AreEqual(a1 >> b1, r1); + + uint4x2 a2 = uint4x2(334005460, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760); + int b2 = (1624751550); + uint4x2 r2 = uint4x2(0, 0, 1, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a2 >> b2, r2); + + uint4x2 a3 = uint4x2(348013684, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476); + int b3 = (1568185874); + uint4x2 r3 = uint4x2(1327, 2953, 6054, 2289, 112, 7175, 1343, 4442); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_not() + { + uint4x2 a0 = uint4x2(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856); + uint4x2 r0 = uint4x2(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439); + TestUtils.AreEqual(~a0, r0); + + uint4x2 a1 = uint4x2(472965491, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466); + uint4x2 r1 = uint4x2(3822001804, 3667386335, 2233443271, 3541758807, 2197788012, 2991944802, 3630222692, 3005594829); + TestUtils.AreEqual(~a1, r1); + + uint4x2 a2 = uint4x2(1635981125, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942); + uint4x2 r2 = uint4x2(2658986170, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974, 3012420353); + TestUtils.AreEqual(~a2, r2); + + uint4x2 a3 = uint4x2(1562433528, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039); + uint4x2 r3 = uint4x2(2732533767, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021, 3599787443, 2528029256); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x2.gen.cs.meta new file mode 100644 index 0000000..89848b5 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89ef12b5bac48bb47b957005fa49bd89 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x3.gen.cs new file mode 100644 index 0000000..2db3b30 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x3.gen.cs @@ -0,0 +1,1233 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint4x3 + { + [TestCompiler] + public static void uint4x3_zero() + { + TestUtils.AreEqual(uint4x3.zero.c0.x, 0u); + TestUtils.AreEqual(uint4x3.zero.c0.y, 0u); + TestUtils.AreEqual(uint4x3.zero.c0.z, 0u); + TestUtils.AreEqual(uint4x3.zero.c0.w, 0u); + TestUtils.AreEqual(uint4x3.zero.c1.x, 0u); + TestUtils.AreEqual(uint4x3.zero.c1.y, 0u); + TestUtils.AreEqual(uint4x3.zero.c1.z, 0u); + TestUtils.AreEqual(uint4x3.zero.c1.w, 0u); + TestUtils.AreEqual(uint4x3.zero.c2.x, 0u); + TestUtils.AreEqual(uint4x3.zero.c2.y, 0u); + TestUtils.AreEqual(uint4x3.zero.c2.z, 0u); + TestUtils.AreEqual(uint4x3.zero.c2.w, 0u); + } + + [TestCompiler] + public static void uint4x3_operator_equal_wide_wide() + { + uint4x3 a0 = uint4x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + uint4x3 b0 = uint4x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x3 a1 = uint4x3(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint4x3 b1 = uint4x3(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x3 a2 = uint4x3(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + uint4x3 b2 = uint4x3(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x3 a3 = uint4x3(346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + uint4x3 b3 = uint4x3(1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_equal_wide_scalar() + { + uint4x3 a0 = uint4x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411); + uint b0 = (746972502); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x3 a1 = uint4x3(672785749, 585324157, 404448210, 969511077, 442746747, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005); + uint b1 = (1465584610); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x3 a2 = uint4x3(211986678, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291); + uint b2 = (1305479811); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x3 a3 = uint4x3(872759249, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886, 20195989); + uint b3 = (811880239); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint4x3 b0 = uint4x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (737210539); + uint4x3 b1 = uint4x3(1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (597498209); + uint4x3 b2 = uint4x3(367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1576985758); + uint4x3 b3 = uint4x3(1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036, 2074160001); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_not_equal_wide_wide() + { + uint4x3 a0 = uint4x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + uint4x3 b0 = uint4x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x3 a1 = uint4x3(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint4x3 b1 = uint4x3(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x3 a2 = uint4x3(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + uint4x3 b2 = uint4x3(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x3 a3 = uint4x3(1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + uint4x3 b3 = uint4x3(1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_not_equal_wide_scalar() + { + uint4x3 a0 = uint4x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906); + uint b0 = (248693828); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x3 a1 = uint4x3(2126300423, 2035077187, 1171827730, 1412347883, 1622176923, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766); + uint b1 = (791998981); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x3 a2 = uint4x3(30493685, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113); + uint b2 = (904014575); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x3 a3 = uint4x3(765258490, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942, 780105497); + uint b3 = (668154629); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint4x3 b0 = uint4x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (50286949); + uint4x3 b1 = uint4x3(2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (510966350); + uint4x3 b2 = uint4x3(572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (358894860); + uint4x3 b3 = uint4x3(1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167, 1002934795); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_wide_wide() + { + uint4x3 a0 = uint4x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + uint4x3 b0 = uint4x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool4x3 r0 = bool4x3(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x3 a1 = uint4x3(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint4x3 b1 = uint4x3(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool4x3 r1 = bool4x3(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x3 a2 = uint4x3(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + uint4x3 b2 = uint4x3(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool4x3 r2 = bool4x3(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x3 a3 = uint4x3(1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + uint4x3 b3 = uint4x3(1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool4x3 r3 = bool4x3(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_wide_scalar() + { + uint4x3 a0 = uint4x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650); + uint b0 = (1491216667); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x3 a1 = uint4x3(930950514, 933855388, 908563901, 1127696709, 1286331950, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027); + uint b1 = (1100560246); + bool4x3 r1 = bool4x3(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x3 a2 = uint4x3(371987110, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606); + uint b2 = (867559111); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x3 a3 = uint4x3(1891059504, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493, 212954934); + uint b3 = (1217893177); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint4x3 b0 = uint4x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1890019295); + uint4x3 b1 = uint4x3(2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659); + bool4x3 r1 = bool4x3(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (810406400); + uint4x3 b2 = uint4x3(1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916); + bool4x3 r2 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (168788814); + uint4x3 b3 = uint4x3(670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033, 685700324); + bool4x3 r3 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_wide_wide() + { + uint4x3 a0 = uint4x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + uint4x3 b0 = uint4x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool4x3 r0 = bool4x3(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x3 a1 = uint4x3(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint4x3 b1 = uint4x3(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x3 a2 = uint4x3(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + uint4x3 b2 = uint4x3(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x3 a3 = uint4x3(194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + uint4x3 b3 = uint4x3(1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_wide_scalar() + { + uint4x3 a0 = uint4x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515); + uint b0 = (438688675); + bool4x3 r0 = bool4x3(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x3 a1 = uint4x3(711945018, 577943770, 572743717, 1016617211, 2063134811, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424); + uint b1 = (1035679270); + bool4x3 r1 = bool4x3(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x3 a2 = uint4x3(1045140419, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732); + uint b2 = (1058332184); + bool4x3 r2 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x3 a3 = uint4x3(1284938191, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269, 1930086291); + uint b3 = (1452639553); + bool4x3 r3 = bool4x3(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint4x3 b0 = uint4x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1556466996); + uint4x3 b1 = uint4x3(858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1713088900); + uint4x3 b2 = uint4x3(315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (267985383); + uint4x3 b3 = uint4x3(126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217, 1480829811); + bool4x3 r3 = bool4x3(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_equal_wide_wide() + { + uint4x3 a0 = uint4x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + uint4x3 b0 = uint4x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool4x3 r0 = bool4x3(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x3 a1 = uint4x3(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint4x3 b1 = uint4x3(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool4x3 r1 = bool4x3(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x3 a2 = uint4x3(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + uint4x3 b2 = uint4x3(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool4x3 r2 = bool4x3(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x3 a3 = uint4x3(1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + uint4x3 b3 = uint4x3(1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_equal_wide_scalar() + { + uint4x3 a0 = uint4x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763); + uint b0 = (1688048545); + bool4x3 r0 = bool4x3(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x3 a1 = uint4x3(690091301, 2091514001, 1857173043, 1617221948, 2017733017, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519); + uint b1 = (1806172431); + bool4x3 r1 = bool4x3(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x3 a2 = uint4x3(1917813750, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244); + uint b2 = (1258115260); + bool4x3 r2 = bool4x3(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x3 a3 = uint4x3(426908235, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266, 1483727269); + uint b3 = (1818566980); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint4x3 b0 = uint4x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1293698493); + uint4x3 b1 = uint4x3(48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (601413850); + uint4x3 b2 = uint4x3(830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260); + bool4x3 r2 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (733876180); + uint4x3 b3 = uint4x3(1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410, 1987696011); + bool4x3 r3 = bool4x3(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_equal_wide_wide() + { + uint4x3 a0 = uint4x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + uint4x3 b0 = uint4x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool4x3 r0 = bool4x3(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x3 a1 = uint4x3(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint4x3 b1 = uint4x3(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool4x3 r1 = bool4x3(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x3 a2 = uint4x3(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + uint4x3 b2 = uint4x3(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool4x3 r2 = bool4x3(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x3 a3 = uint4x3(584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + uint4x3 b3 = uint4x3(2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_equal_wide_scalar() + { + uint4x3 a0 = uint4x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867); + uint b0 = (1470533736); + bool4x3 r0 = bool4x3(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x3 a1 = uint4x3(1419295004, 1819986195, 1460027917, 1646290021, 196833647, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862); + uint b1 = (471843809); + bool4x3 r1 = bool4x3(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x3 a2 = uint4x3(1449142607, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895); + uint b2 = (1223010129); + bool4x3 r2 = bool4x3(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x3 a3 = uint4x3(192092521, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700, 702382564); + uint b3 = (909358617); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint4x3 b0 = uint4x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1214546726); + uint4x3 b1 = uint4x3(917376832, 303549425, 2111728811, 945321577, 173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189); + bool4x3 r1 = bool4x3(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1336522452); + uint4x3 b2 = uint4x3(233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513); + bool4x3 r2 = bool4x3(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (474197678); + uint4x3 b3 = uint4x3(1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168, 1274079907); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_add_wide_wide() + { + uint4x3 a0 = uint4x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + uint4x3 b0 = uint4x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + uint4x3 r0 = uint4x3(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x3 a1 = uint4x3(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint4x3 b1 = uint4x3(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint4x3 r1 = uint4x3(4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x3 a2 = uint4x3(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + uint4x3 b2 = uint4x3(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + uint4x3 r2 = uint4x3(3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291, 604086579, 2150755997, 3626413591, 2674116169); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x3 a3 = uint4x3(728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + uint4x3 b3 = uint4x3(1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + uint4x3 r3 = uint4x3(2461211795, 1450246522, 2444787499, 1669976746, 3356749404, 1917402232, 1548618217, 2863380484, 3471071068, 2013864506, 348877644, 2242427741); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_add_wide_scalar() + { + uint4x3 a0 = uint4x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202); + uint b0 = (2124409227); + uint4x3 r0 = uint4x3(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528, 4127431088, 3760381198, 3284807513, 2209855429); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x3 a1 = uint4x3(1068152966, 1497676888, 1727477485, 1095438654, 756559204, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233); + uint b1 = (1239387100); + uint4x3 r1 = uint4x3(2307540066, 2737063988, 2966864585, 2334825754, 1995946304, 3058106031, 1898310652, 2849906021, 2825142498, 1932230400, 2307980569, 2944163333); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x3 a2 = uint4x3(577782260, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190); + uint b2 = (736972565); + uint4x3 r2 = uint4x3(1314754825, 1448867136, 1301230004, 2788708848, 2309810262, 2364979110, 2592672828, 1393721347, 1009747081, 2654105764, 1565295538, 2853782755); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x3 a3 = uint4x3(2092767444, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914, 1340503111); + uint b3 = (973587865); + uint4x3 r3 = uint4x3(3066355309, 2210519138, 1477852314, 1767880439, 2491646546, 2578224189, 1328461282, 1658835762, 1201369005, 1294770382, 2184163779, 2314090976); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint4x3 b0 = uint4x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302); + uint4x3 r0 = uint4x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150, 1387123903, 1948867027, 1170867018, 1502633380); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (783046445); + uint4x3 b1 = uint4x3(1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768); + uint4x3 r1 = uint4x3(1913210389, 1071326029, 2180730306, 2419629934, 1456309784, 2252347319, 797902410, 1899683444, 2271909745, 2384037331, 973697746, 2090506213); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (920085839); + uint4x3 b2 = uint4x3(2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886); + uint4x3 r2 = uint4x3(3002315674, 2912491413, 2134010297, 1425927291, 1901507001, 2408423538, 2033912479, 2726232347, 2761877061, 1126696690, 1447057792, 2156445725); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1459523189); + uint4x3 b3 = uint4x3(965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031, 1275565021); + uint4x3 r3 = uint4x3(2425263820, 1542365988, 2757926390, 3265332961, 3438387380, 1874526575, 3365827337, 2182393386, 2203771985, 3136746748, 1762899220, 2735088210); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_sub_wide_wide() + { + uint4x3 a0 = uint4x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + uint4x3 b0 = uint4x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + uint4x3 r0 = uint4x3(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x3 a1 = uint4x3(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint4x3 b1 = uint4x3(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint4x3 r1 = uint4x3(4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x3 a2 = uint4x3(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + uint4x3 b2 = uint4x3(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + uint4x3 r2 = uint4x3(4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x3 a3 = uint4x3(741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + uint4x3 b3 = uint4x3(1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + uint4x3 r3 = uint4x3(3949049757, 1650323877, 979082147, 182559134, 4158572232, 1442113917, 8339009, 1379854326, 3702505823, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_sub_wide_scalar() + { + uint4x3 a0 = uint4x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336); + uint b0 = (462232403); + uint4x3 r0 = uint4x3(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412, 4113909093, 3920265733, 1451492028, 1579360933); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x3 a1 = uint4x3(557239990, 1590376732, 819090189, 816382635, 815920639, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742); + uint b1 = (1119051448); + uint4x3 r1 = uint4x3(3733155838, 471325284, 3995006037, 3992298483, 3991836487, 709981669, 673750484, 4289356397, 299886528, 158205741, 973727950, 3818152590); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x3 a2 = uint4x3(1605250794, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204); + uint b2 = (819644478); + uint4x3 r2 = uint4x3(785606316, 648358541, 3603626004, 4028817075, 197482493, 1180100304, 1197628280, 998347286, 461341022, 4152297673, 818388135, 130116726); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x3 a3 = uint4x3(1835969317, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965, 941598524); + uint b3 = (919015590); + uint4x3 r3 = uint4x3(916953727, 57931720, 385231016, 537764618, 635007122, 4145756071, 1138816097, 4134088285, 4046384961, 3979183117, 754253375, 22582934); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint4x3 b0 = uint4x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748); + uint4x3 r0 = uint4x3(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128, 4197201280, 1426821512, 459678338, 4168388953); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (1428436109); + uint4x3 b1 = uint4x3(1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461); + uint4x3 r1 = uint4x3(169690649, 351055713, 97713390, 910324280, 461307580, 1083769855, 346168191, 520569413, 3906518282, 968095541, 466281611, 871322648); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1701216709); + uint4x3 b2 = uint4x3(1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026); + uint4x3 r2 = uint4x3(4016085228, 971156157, 256818882, 847646153, 1562380277, 688026281, 983127179, 1194459319, 484768668, 764903962, 3998897550, 4026201979); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (902880656); + uint4x3 b3 = uint4x3(1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072, 2066839749); + uint4x3 r3 = uint4x3(4036627255, 3755383227, 279919891, 171911747, 288056815, 3308068932, 4279525600, 768950736, 689757548, 3362397492, 381812584, 3131008203); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mul_wide_wide() + { + uint4x3 a0 = uint4x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + uint4x3 b0 = uint4x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + uint4x3 r0 = uint4x3(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x3 a1 = uint4x3(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint4x3 b1 = uint4x3(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint4x3 r1 = uint4x3(990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x3 a2 = uint4x3(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + uint4x3 b2 = uint4x3(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + uint4x3 r2 = uint4x3(1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354, 48406862, 2297104000, 4019846068, 2811510105); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x3 a3 = uint4x3(892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + uint4x3 b3 = uint4x3(142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + uint4x3 r3 = uint4x3(293009766, 3677102970, 1179445736, 3813187164, 2708838392, 1397450915, 487571412, 3889286542, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mul_wide_scalar() + { + uint4x3 a0 = uint4x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747); + uint b0 = (1476837906); + uint4x3 r0 = uint4x3(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778, 1736252960, 2595843622, 2760103458, 2441439286); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x3 a1 = uint4x3(1818877398, 660611671, 1279757657, 391009467, 1186856590, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300); + uint b1 = (1324050764); + uint4x3 r1 = uint4x3(1927061896, 645718228, 3706353516, 3450526340, 3727282216, 2610351864, 3202713768, 133057916, 2712818352, 3265005844, 4046133608, 100822256); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x3 a2 = uint4x3(1192501703, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648); + uint b2 = (1613845584); + uint4x3 r2 = uint4x3(3900103216, 2959506480, 692371456, 973833232, 1630959136, 2616598816, 4103626336, 1516495024, 2027781488, 471196848, 2169531488, 1043640960); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x3 a3 = uint4x3(227492421, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790, 396984449); + uint b3 = (217698851); + uint4x3 r3 = uint4x3(269461871, 1120555251, 1293383984, 1838219542, 3023271884, 1677010101, 1900394426, 512258290, 4056397088, 3786096410, 1697920914, 1359963043); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint4x3 b0 = uint4x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767); + uint4x3 r0 = uint4x3(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328, 1623617844, 2603413056, 3464455056, 3011267876); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (243286231); + uint4x3 b1 = uint4x3(1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639); + uint4x3 r1 = uint4x3(3646578061, 2731337857, 3893490496, 2980416695, 62369507, 4218409817, 2881159196, 3966864259, 2038656731, 2224055319, 2818606435, 2745388689); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1323243330); + uint4x3 b2 = uint4x3(1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263); + uint4x3 r2 = uint4x3(4200942488, 50866050, 1979584376, 2165828294, 2084048518, 3664351394, 1987582754, 2187955092, 3020934930, 1909741994, 2131645412, 527678350); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (2022856151); + uint4x3 b3 = uint4x3(1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370, 890235481); + uint4x3 r3 = uint4x3(2359761627, 3607975719, 2368172860, 3241673466, 3640972603, 2445305544, 1198448575, 3108682444, 2733658999, 2364617365, 3384645854, 938433983); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_div_wide_wide() + { + uint4x3 a0 = uint4x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + uint4x3 b0 = uint4x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + uint4x3 r0 = uint4x3(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x3 a1 = uint4x3(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint4x3 b1 = uint4x3(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint4x3 r1 = uint4x3(0, 2, 1, 2, 1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x3 a2 = uint4x3(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + uint4x3 b2 = uint4x3(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + uint4x3 r2 = uint4x3(2, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x3 a3 = uint4x3(991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + uint4x3 b3 = uint4x3(554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + uint4x3 r3 = uint4x3(1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_div_wide_scalar() + { + uint4x3 a0 = uint4x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657); + uint b0 = (947861580); + uint4x3 r0 = uint4x3(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x3 a1 = uint4x3(2131487088, 1017891310, 542666029, 1646044372, 1447236569, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885); + uint b1 = (2105094094); + uint4x3 r1 = uint4x3(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x3 a2 = uint4x3(1919705924, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918); + uint b2 = (1244966864); + uint4x3 r2 = uint4x3(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x3 a3 = uint4x3(1515555001, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647, 1222061694); + uint b3 = (614923813); + uint4x3 r3 = uint4x3(2, 1, 3, 3, 3, 1, 3, 0, 0, 2, 3, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint4x3 b0 = uint4x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703); + uint4x3 r0 = uint4x3(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (631027637); + uint4x3 b1 = uint4x3(396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043); + uint4x3 r1 = uint4x3(1, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1054404890); + uint4x3 b2 = uint4x3(351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534); + uint4x3 r2 = uint4x3(2, 7, 0, 2, 0, 4, 0, 0, 0, 23, 0, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (126616016); + uint4x3 b3 = uint4x3(1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719, 638134699); + uint4x3 r3 = uint4x3(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mod_wide_wide() + { + uint4x3 a0 = uint4x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + uint4x3 b0 = uint4x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + uint4x3 r0 = uint4x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x3 a1 = uint4x3(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint4x3 b1 = uint4x3(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint4x3 r1 = uint4x3(137194997, 593433700, 360454892, 8060301, 7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x3 a2 = uint4x3(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + uint4x3 b2 = uint4x3(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + uint4x3 r2 = uint4x3(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x3 a3 = uint4x3(1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + uint4x3 b3 = uint4x3(244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + uint4x3 r3 = uint4x3(166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mod_wide_scalar() + { + uint4x3 a0 = uint4x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935); + uint b0 = (883951171); + uint4x3 r0 = uint4x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x3 a1 = uint4x3(712321026, 1540068445, 1085897743, 1607489717, 165478511, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912); + uint b1 = (172564850); + uint4x3 r1 = uint4x3(22061626, 159549645, 50508643, 54406067, 165478511, 130152166, 52883749, 49746751, 65367033, 49545706, 143379989, 17042712); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x3 a2 = uint4x3(377501313, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372); + uint b2 = (1778384846); + uint4x3 r2 = uint4x3(377501313, 1216011754, 812183417, 1153802502, 1642671870, 146325896, 665297470, 1568090825, 272598096, 435886407, 453990946, 1731665372); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x3 a3 = uint4x3(586777590, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411, 1524342239); + uint b3 = (1475597526); + uint4x3 r3 = uint4x3(586777590, 110051989, 1414579860, 416067455, 1262495021, 1400758118, 53934482, 430295164, 1386414018, 654749032, 666621411, 48744713); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint4x3 b0 = uint4x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233); + uint4x3 r0 = uint4x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1298102643); + uint4x3 b1 = uint4x3(2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738); + uint4x3 r1 = uint4x3(1298102643, 297360552, 1298102643, 1298102643, 500917956, 476213801, 214909646, 457987657, 1298102643, 67782715, 1298102643, 1739061); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (2122220318); + uint4x3 b2 = uint4x3(164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894); + uint4x3 r2 = uint4x3(147283586, 662044080, 677274179, 816428281, 1011391307, 376773156, 120051662, 644373900, 76505386, 479992776, 159909553, 50931378); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1342085447); + uint4x3 b3 = uint4x3(448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751, 1648646354); + uint4x3 r3 = uint4x3(445362875, 3415371, 636619696, 588996674, 195741437, 241524871, 267605306, 1342085447, 1342085447, 1342085447, 243643696, 1342085447); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_plus() + { + uint4x3 a0 = uint4x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + uint4x3 r0 = uint4x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + TestUtils.AreEqual(+a0, r0); + + uint4x3 a1 = uint4x3(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + uint4x3 r1 = uint4x3(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + TestUtils.AreEqual(+a1, r1); + + uint4x3 a2 = uint4x3(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + uint4x3 r2 = uint4x3(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + TestUtils.AreEqual(+a2, r2); + + uint4x3 a3 = uint4x3(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + uint4x3 r3 = uint4x3(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_neg() + { + uint4x3 a0 = uint4x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286); + uint4x3 r0 = uint4x3(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947, 3179939058, 2658692327, 3599972203, 2752761010); + TestUtils.AreEqual(-a0, r0); + + uint4x3 a1 = uint4x3(213087293, 341522275, 841085242, 574159094, 1687250035, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864); + uint4x3 r1 = uint4x3(4081880003, 3953445021, 3453882054, 3720808202, 2607717261, 2237047603, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432); + TestUtils.AreEqual(-a1, r1); + + uint4x3 a2 = uint4x3(1440774928, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868); + uint4x3 r2 = uint4x3(2854192368, 3863301205, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012, 2340793982, 2585110198, 2458456246, 2632160843, 3788822428); + TestUtils.AreEqual(-a2, r2); + + uint4x3 a3 = uint4x3(650922971, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551, 1768435578); + uint4x3 r3 = uint4x3(3644044325, 3020970047, 2820522109, 2441140349, 2599393523, 3565514784, 3949897936, 3719099760, 3700848258, 3093126687, 2952094745, 2526531718); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_prefix_inc() + { + uint4x3 a0 = uint4x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935); + uint4x3 r0 = uint4x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936); + TestUtils.AreEqual(++a0, r0); + + uint4x3 a1 = uint4x3(1835605516, 388229350, 696475402, 1786514683, 993189311, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489); + uint4x3 r1 = uint4x3(1835605517, 388229351, 696475403, 1786514684, 993189312, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490); + TestUtils.AreEqual(++a1, r1); + + uint4x3 a2 = uint4x3(504806865, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111); + uint4x3 r2 = uint4x3(504806866, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112); + TestUtils.AreEqual(++a2, r2); + + uint4x3 a3 = uint4x3(1414867743, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802, 413165245); + uint4x3 r3 = uint4x3(1414867744, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803, 413165246); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_postfix_inc() + { + uint4x3 a0 = uint4x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + uint4x3 r0 = uint4x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + TestUtils.AreEqual(a0++, r0); + + uint4x3 a1 = uint4x3(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + uint4x3 r1 = uint4x3(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + TestUtils.AreEqual(a1++, r1); + + uint4x3 a2 = uint4x3(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + uint4x3 r2 = uint4x3(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + TestUtils.AreEqual(a2++, r2); + + uint4x3 a3 = uint4x3(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + uint4x3 r3 = uint4x3(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint4x3_operator_prefix_dec() + { + uint4x3 a0 = uint4x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358); + uint4x3 r0 = uint4x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357); + TestUtils.AreEqual(--a0, r0); + + uint4x3 a1 = uint4x3(1914114460, 389120307, 1022184392, 1310293956, 356565557, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297); + uint4x3 r1 = uint4x3(1914114459, 389120306, 1022184391, 1310293955, 356565556, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296); + TestUtils.AreEqual(--a1, r1); + + uint4x3 a2 = uint4x3(220897829, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380); + uint4x3 r2 = uint4x3(220897828, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379); + TestUtils.AreEqual(--a2, r2); + + uint4x3 a3 = uint4x3(2083512379, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317, 767990877); + uint4x3 r3 = uint4x3(2083512378, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316, 767990876); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_postfix_dec() + { + uint4x3 a0 = uint4x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + uint4x3 r0 = uint4x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + TestUtils.AreEqual(a0--, r0); + + uint4x3 a1 = uint4x3(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + uint4x3 r1 = uint4x3(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + TestUtils.AreEqual(a1--, r1); + + uint4x3 a2 = uint4x3(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + uint4x3 r2 = uint4x3(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + TestUtils.AreEqual(a2--, r2); + + uint4x3 a3 = uint4x3(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + uint4x3 r3 = uint4x3(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_and_wide_wide() + { + uint4x3 a0 = uint4x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + uint4x3 b0 = uint4x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + uint4x3 r0 = uint4x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x3 a1 = uint4x3(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint4x3 b1 = uint4x3(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint4x3 r1 = uint4x3(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x3 a2 = uint4x3(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + uint4x3 b2 = uint4x3(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + uint4x3 r2 = uint4x3(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x3 a3 = uint4x3(1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + uint4x3 b3 = uint4x3(1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + uint4x3 r3 = uint4x3(706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_and_wide_scalar() + { + uint4x3 a0 = uint4x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920); + uint b0 = (93423598); + uint4x3 r0 = uint4x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x3 a1 = uint4x3(1249238550, 1862276471, 143502472, 861733033, 1408932942, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025); + uint b1 = (814629680); + uint4x3 r1 = uint4x3(279056, 536871216, 9175040, 806092832, 277479424, 805568528, 268452112, 9175824, 268567088, 268697600, 934144, 8650784); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x3 a2 = uint4x3(462670926, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061); + uint b2 = (1817145060); + uint4x3 r2 = uint4x3(134433860, 1145858724, 1816224836, 542076516, 739126372, 1611530816, 537593028, 604439716, 1140983364, 672014980, 1745571424, 1208165380); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x3 a3 = uint4x3(398141788, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172, 1826788967); + uint b3 = (156911041); + uint4x3 r3 = uint4x3(18481472, 17843457, 5783937, 156763393, 22151233, 138937729, 152585345, 4867329, 21643264, 132544, 4719616, 138544193); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint4x3 b0 = uint4x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596); + uint4x3 r0 = uint4x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1763483957); + uint4x3 b1 = uint4x3(1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366); + uint4x3 r1 = uint4x3(1209041205, 136061185, 151265585, 1074528516, 1744830512, 671121697, 1092091952, 1761607941, 18391060, 1761615904, 1763221553, 1091051540); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1233066417); + uint4x3 b2 = uint4x3(1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007); + uint4x3 r2 = uint4x3(1214058640, 2230321, 1210847617, 1074401680, 1211367456, 1116577, 1232603553, 3674113, 1078202400, 136118672, 1098518961, 4128897); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1808619374); + uint4x3 b3 = uint4x3(1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681, 1980296380); + uint4x3 r3 = uint4x3(1246058336, 1644778764, 12650346, 1640318254, 1216610624, 587220044, 1644695918, 33834028, 734795298, 671961678, 1241777216, 1644708908); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_or_wide_wide() + { + uint4x3 a0 = uint4x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + uint4x3 b0 = uint4x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + uint4x3 r0 = uint4x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x3 a1 = uint4x3(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint4x3 b1 = uint4x3(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint4x3 r1 = uint4x3(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x3 a2 = uint4x3(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + uint4x3 b2 = uint4x3(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + uint4x3 r2 = uint4x3(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x3 a3 = uint4x3(470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + uint4x3 b3 = uint4x3(1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + uint4x3 r3 = uint4x3(1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_or_wide_scalar() + { + uint4x3 a0 = uint4x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856); + uint b0 = (1666102508); + uint4x3 r0 = uint4x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x3 a1 = uint4x3(879300408, 797240690, 1977614655, 46921989, 1980838747, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070); + uint b1 = (1179087439); + uint4x3 r1 = uint4x3(1987018623, 1875378047, 2011657087, 1188035407, 1985442655, 1459090271, 1205302255, 1459058687, 1465382751, 1995407311, 1599567599, 2122316799); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x3 a2 = uint4x3(2055963359, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200); + uint b2 = (1511253082); + uint4x3 r2 = uint4x3(2057037535, 2077750875, 1579155451, 2069362559, 1590951034, 1534850271, 1593306847, 2050745566, 1519910623, 2117597023, 1604316378, 1600120154); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x3 a3 = uint4x3(1353013374, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643, 142082352); + uint b3 = (1349149982); + uint4x3 r3 = uint4x3(1357872510, 1895528286, 1374318015, 2012964638, 1550483390, 1602123263, 1483666815, 1920624063, 1458464191, 2012116286, 1424685023, 1484416318); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint4x3 b0 = uint4x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649); + uint4x3 r0 = uint4x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1059093741); + uint4x3 b1 = uint4x3(627815046, 418822515, 83214352, 424663473, 447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329); + uint4x3 r1 = uint4x3(1064042223, 1073151487, 1073085693, 1064304125, 1068727789, 1063910895, 2133818605, 1060240621, 2145910509, 2138209533, 2146074365, 2142830317); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1088734150); + uint4x3 b2 = uint4x3(298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598); + uint4x3 r2 = uint4x3(1374682086, 2063067087, 1660812255, 1743570934, 1945042926, 1089859558, 1911943150, 2079645678, 1627375606, 1307434967, 1341444039, 1526649806); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (1098359242); + uint4x3 b3 = uint4x3(997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616, 1326199854); + uint4x3 r3 = uint4x3(2071978954, 1098885598, 2071455727, 1702356954, 1098381823, 1568651246, 2046802926, 1509946863, 2038414794, 1644161007, 1308081658, 1333769710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_xor_wide_wide() + { + uint4x3 a0 = uint4x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + uint4x3 b0 = uint4x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + uint4x3 r0 = uint4x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x3 a1 = uint4x3(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint4x3 b1 = uint4x3(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint4x3 r1 = uint4x3(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x3 a2 = uint4x3(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + uint4x3 b2 = uint4x3(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + uint4x3 r2 = uint4x3(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x3 a3 = uint4x3(1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + uint4x3 b3 = uint4x3(1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + uint4x3 r3 = uint4x3(632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_xor_wide_scalar() + { + uint4x3 a0 = uint4x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267); + uint b0 = (493665894); + uint4x3 r0 = uint4x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x3 a1 = uint4x3(125659640, 1730088797, 116862046, 375757978, 491079274, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924); + uint b1 = (1315625690); + uint4x3 r1 = uint4x3(1226289954, 695588231, 1218311812, 1477396032, 1395629232, 1158101236, 1162708111, 2010043079, 1856848613, 1753692570, 1315361570, 373338582); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x3 a2 = uint4x3(1680011736, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239); + uint b2 = (447453839); + uint4x3 r2 = uint4x3(2122935127, 800240497, 198659571, 98559616, 86185743, 1221222109, 1565485394, 630017616, 919085284, 427397619, 1988160398, 446789440); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x3 a3 = uint4x3(476052372, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185, 1771744425); + uint b3 = (92561487); + uint4x3 r3 = uint4x3(433822683, 2133436125, 133297725, 1274987888, 2020970994, 180462097, 52620731, 1114759625, 2024733453, 2005017615, 912470822, 1813957862); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint4x3 b0 = uint4x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424); + uint4x3 r0 = uint4x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1947871003); + uint4x3 b1 = uint4x3(1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881); + uint4x3 r1 = uint4x3(500881003, 132477417, 876677487, 1699258642, 645842392, 1138923504, 974408494, 2033457704, 1087830061, 1348553799, 2139822446, 660194722); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (573581481); + uint4x3 b2 = uint4x3(1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615); + uint4x3 r2 = uint4x3(1311539225, 655981444, 1435501080, 2003229500, 399194716, 2022579220, 693043286, 145445825, 880683118, 787181808, 2146955403, 205673470); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (711527976); + uint4x3 b3 = uint4x3(710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645, 896851285); + uint4x3 r3 = uint4x3(3284335, 658000982, 154339351, 2085169939, 946304861, 44451568, 2115414221, 2137251591, 317021346, 552683235, 1575100285, 522048381); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_left_shift() + { + uint4x3 a0 = uint4x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534); + int b0 = (1321149625); + uint4x3 r0 = uint4x3(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832, 2885681152, 838860800, 3422552064, 2885681152); + TestUtils.AreEqual(a0 << b0, r0); + + uint4x3 a1 = uint4x3(1447702302, 35667343, 1664454606, 2045594989, 2077023268, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181); + int b1 = (1079614371); + uint4x3 r1 = uint4x3(2991683824, 285338744, 430734960, 3479858024, 3731284256, 446462192, 2382043288, 897198008, 703071480, 298127560, 3687382248, 3583706856); + TestUtils.AreEqual(a1 << b1, r1); + + uint4x3 a2 = uint4x3(263886278, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192); + int b2 = (221147365); + uint4x3 r2 = uint4x3(4149393600, 2269589216, 3094178816, 2284910336, 2519121408, 3273503744, 1296563040, 2556772768, 1884213760, 3366896320, 160790208, 31956480); + TestUtils.AreEqual(a2 << b2, r2); + + uint4x3 a3 = uint4x3(740058147, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326, 1996060114); + int b3 = (946058001); + uint4x3 r3 = uint4x3(3360030720, 4207017984, 1441398784, 3029598208, 4289593344, 2718695424, 3680632832, 1110573056, 1163132928, 173408256, 1445724160, 3953393664); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_right_shift() + { + uint4x3 a0 = uint4x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045); + int b0 = (1266801540); + uint4x3 r0 = uint4x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440); + TestUtils.AreEqual(a0 >> b0, r0); + + uint4x3 a1 = uint4x3(701927980, 569504877, 185593382, 1102123711, 334005460, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762); + int b1 = (917785020); + uint4x3 r1 = uint4x3(2, 2, 0, 4, 1, 6, 1, 5, 6, 2, 4, 1); + TestUtils.AreEqual(a1 >> b1, r1); + + uint4x3 a2 = uint4x3(763607760, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381); + int b2 = (348013684); + uint4x3 r2 = uint4x3(728, 1495, 738, 1513, 572, 28, 1793, 335, 1110, 405, 177, 1048); + TestUtils.AreEqual(a2 >> b2, r2); + + uint4x3 a3 = uint4x3(1234295294, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981, 1435331003); + int b3 = (1028666766); + uint4x3 r3 = uint4x3(75335, 46488, 76590, 55139, 72040, 11168, 58514, 65650, 86028, 96236, 42779, 87605); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_not() + { + uint4x3 a0 = uint4x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024); + uint4x3 r0 = uint4x3(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439, 3822001804, 3523255869, 3667386335, 2233443271); + TestUtils.AreEqual(~a0, r0); + + uint4x3 a1 = uint4x3(753208488, 1303022493, 664744603, 1289372466, 1635981125, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321); + uint4x3 r1 = uint4x3(3541758807, 2991944802, 3630222692, 3005594829, 2658986170, 2343948699, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974); + TestUtils.AreEqual(~a1, r1); + + uint4x3 a2 = uint4x3(1282546942, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829); + uint4x3 r2 = uint4x3(3012420353, 2470142485, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021, 3599787443, 2528029256, 3397043669, 2478776831, 2932060466); + TestUtils.AreEqual(~a2, r2); + + uint4x3 a3 = uint4x3(1227946838, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010, 722020848); + uint4x3 r3 = uint4x3(3067020457, 4105358017, 3338525487, 2171478485, 2701953044, 4275744234, 2572859341, 2658091601, 2380869903, 2912422268, 3009690285, 3572946447); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x3.gen.cs.meta new file mode 100644 index 0000000..4c46c92 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2459d4a10dea40e469cb5f05b3fa80c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x4.gen.cs new file mode 100644 index 0000000..13b2773 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x4.gen.cs @@ -0,0 +1,1258 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint4x4 + { + [TestCompiler] + public static void uint4x4_zero() + { + TestUtils.AreEqual(uint4x4.zero.c0.x, 0u); + TestUtils.AreEqual(uint4x4.zero.c0.y, 0u); + TestUtils.AreEqual(uint4x4.zero.c0.z, 0u); + TestUtils.AreEqual(uint4x4.zero.c0.w, 0u); + TestUtils.AreEqual(uint4x4.zero.c1.x, 0u); + TestUtils.AreEqual(uint4x4.zero.c1.y, 0u); + TestUtils.AreEqual(uint4x4.zero.c1.z, 0u); + TestUtils.AreEqual(uint4x4.zero.c1.w, 0u); + TestUtils.AreEqual(uint4x4.zero.c2.x, 0u); + TestUtils.AreEqual(uint4x4.zero.c2.y, 0u); + TestUtils.AreEqual(uint4x4.zero.c2.z, 0u); + TestUtils.AreEqual(uint4x4.zero.c2.w, 0u); + TestUtils.AreEqual(uint4x4.zero.c3.x, 0u); + TestUtils.AreEqual(uint4x4.zero.c3.y, 0u); + TestUtils.AreEqual(uint4x4.zero.c3.z, 0u); + TestUtils.AreEqual(uint4x4.zero.c3.w, 0u); + } + + [TestCompiler] + public static void uint4x4_identity() + { + TestUtils.AreEqual(uint4x4.identity.c0.x, 1u); + TestUtils.AreEqual(uint4x4.identity.c0.y, 0u); + TestUtils.AreEqual(uint4x4.identity.c0.z, 0u); + TestUtils.AreEqual(uint4x4.identity.c0.w, 0u); + TestUtils.AreEqual(uint4x4.identity.c1.x, 0u); + TestUtils.AreEqual(uint4x4.identity.c1.y, 1u); + TestUtils.AreEqual(uint4x4.identity.c1.z, 0u); + TestUtils.AreEqual(uint4x4.identity.c1.w, 0u); + TestUtils.AreEqual(uint4x4.identity.c2.x, 0u); + TestUtils.AreEqual(uint4x4.identity.c2.y, 0u); + TestUtils.AreEqual(uint4x4.identity.c2.z, 1u); + TestUtils.AreEqual(uint4x4.identity.c2.w, 0u); + TestUtils.AreEqual(uint4x4.identity.c3.x, 0u); + TestUtils.AreEqual(uint4x4.identity.c3.y, 0u); + TestUtils.AreEqual(uint4x4.identity.c3.z, 0u); + TestUtils.AreEqual(uint4x4.identity.c3.w, 1u); + } + + [TestCompiler] + public static void uint4x4_operator_equal_wide_wide() + { + uint4x4 a0 = uint4x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + uint4x4 b0 = uint4x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x4 a1 = uint4x4(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509, 1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + uint4x4 b1 = uint4x4(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580, 708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x4 a2 = uint4x4(929607871, 2092475304, 1940221590, 196567546, 346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + uint4x4 b2 = uint4x4(91580624, 1974459648, 2074899534, 164782857, 1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x4 a3 = uint4x4(1006521329, 850817587, 270689979, 182908990, 512098264, 1555870818, 1824899010, 913664406, 38410741, 1365981133, 1517827659, 698699317, 522637780, 2135467596, 1812545145, 795262261); + uint4x4 b3 = uint4x4(407784873, 516627611, 184196508, 1098113599, 1930819007, 693573550, 780517021, 48392683, 638156511, 356540844, 86920844, 103170762, 1952606997, 1374974056, 906153405, 602525178); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_equal_wide_scalar() + { + uint4x4 a0 = uint4x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210); + uint b0 = (746972502); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x4 a1 = uint4x4(969511077, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678, 1305479811, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966); + uint b1 = (442746747); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x4 a2 = uint4x4(1684122010, 172230876, 496695881, 955604291, 872759249, 811880239, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886); + uint b2 = (1962874832); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x4 a3 = uint4x4(20195989, 1256964339, 165389004, 759951440, 321496427, 551284899, 2058550111, 2146975562, 1182607877, 1588866146, 1478019984, 733564558, 1504896105, 284238873, 1641065069, 259620445); + uint b3 = (550465422); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint4x4 b0 = uint4x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (455818693); + uint4x4 b1 = uint4x4(2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1395605233); + uint4x4 b2 = uint4x4(1191785903, 1156248212, 338891967, 61410415, 1576985758, 1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (2074160001); + uint4x4 b3 = uint4x4(211145132, 1330427155, 231737739, 590220146, 622950505, 2048231874, 682985774, 865101790, 1523019859, 261373300, 132547968, 1971091157, 982104573, 1456888767, 1700538931, 1590557254); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_not_equal_wide_wide() + { + uint4x4 a0 = uint4x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + uint4x4 b0 = uint4x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x4 a1 = uint4x4(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890, 922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + uint4x4 b1 = uint4x4(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634, 1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x4 a2 = uint4x4(10845678, 1588544505, 709736932, 1892341087, 1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + uint4x4 b2 = uint4x4(1954996717, 572153302, 865957902, 1083128726, 1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x4 a3 = uint4x4(1370971537, 526135879, 1693615335, 1040142702, 51869182, 636351650, 1137389277, 742650911, 1652337799, 128512016, 943930500, 1281758501, 1506504768, 1142416208, 489425068, 709011851); + uint4x4 b3 = uint4x4(881583266, 836740859, 2050520235, 56355243, 923319881, 2093941797, 1966851287, 740544328, 1686486765, 1564852763, 1583872597, 1319685687, 1082069798, 1934459521, 610009662, 2003062130); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_not_equal_wide_scalar() + { + uint4x4 a0 = uint4x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730); + uint b0 = (248693828); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x4 a1 = uint4x4(1412347883, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685, 904014575, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847); + uint b1 = (1622176923); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x4 a2 = uint4x4(1555396158, 1739138988, 1916670251, 1516209113, 765258490, 668154629, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942); + uint b2 = (913218907); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x4 a3 = uint4x4(780105497, 1311007738, 2079744789, 1086529117, 898347399, 1597839770, 1711183709, 2048684031, 1167351404, 528657884, 565527393, 227149840, 89869060, 1358928288, 44374114, 2059875706); + uint b3 = (1302143939); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint4x4 b0 = uint4x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (472172806); + uint4x4 b1 = uint4x4(266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (676012224); + uint4x4 b2 = uint4x4(627370253, 1715733805, 699755913, 1875151666, 358894860, 1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1002934795); + uint4x4 b3 = uint4x4(1859322106, 1990390938, 1674000894, 1035504906, 1681354617, 2079296301, 1396396873, 2128571831, 3388167, 1211711140, 575696152, 1534939377, 496306248, 908210564, 131274243, 543089960); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_wide_wide() + { + uint4x4 a0 = uint4x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + uint4x4 b0 = uint4x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool4x4 r0 = bool4x4(false, true, false, false, false, true, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x4 a1 = uint4x4(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162, 1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + uint4x4 b1 = uint4x4(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133, 271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool4x4 r1 = bool4x4(true, true, true, true, false, false, true, true, false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x4 a2 = uint4x4(410751553, 198134393, 1999935258, 671192178, 1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + uint4x4 b2 = uint4x4(833499488, 1999487070, 836063897, 1987309319, 1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool4x4 r2 = bool4x4(true, true, false, true, false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x4 a3 = uint4x4(1772570968, 339779528, 1817654169, 126606875, 1748258817, 1840719780, 603645478, 1888655831, 63356146, 79832055, 736652918, 653392827, 423681122, 1242116477, 422099316, 898587272); + uint4x4 b3 = uint4x4(1951703613, 873360222, 2076434739, 802037827, 57389233, 1812417589, 13678411, 1415564189, 983023904, 1112076825, 2078443288, 1990790258, 482361677, 1981894392, 351965695, 585483077); + bool4x4 r3 = bool4x4(true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_wide_scalar() + { + uint4x4 a0 = uint4x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901); + uint b0 = (1491216667); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, false, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x4 a1 = uint4x4(1127696709, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110, 867559111, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092); + uint b1 = (1286331950); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x4 a2 = uint4x4(118750042, 452204442, 1645191336, 1829152606, 1891059504, 1217893177, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493); + uint b2 = (1829327996); + bool4x4 r2 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x4 a3 = uint4x4(212954934, 1031281872, 1389987778, 928043903, 434566816, 1386588061, 180174416, 119231358, 842513438, 494182092, 2110901808, 2064339655, 798375285, 225918038, 2119961960, 1851740205); + uint b3 = (519181838); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, true, true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint4x4 b0 = uint4x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1596056507); + uint4x4 b1 = uint4x4(1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1984930954); + uint4x4 b2 = uint4x4(743544838, 1473400608, 1300775973, 1351720916, 168788814, 670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (685700324); + uint4x4 b3 = uint4x4(697607066, 378454814, 1198070277, 1821642406, 1324129275, 905046836, 1897627028, 1715796299, 15666859, 1806453893, 1315963488, 545979816, 1486981760, 511543521, 1872978447, 303832107); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_wide_wide() + { + uint4x4 a0 = uint4x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + uint4x4 b0 = uint4x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool4x4 r0 = bool4x4(true, true, false, true, false, true, false, false, true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x4 a1 = uint4x4(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622, 1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + uint4x4 b1 = uint4x4(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265, 335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool4x4 r1 = bool4x4(false, false, false, false, false, true, true, true, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x4 a2 = uint4x4(31516321, 1786538920, 1854361210, 1730650972, 194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + uint4x4 b2 = uint4x4(1782348324, 550490783, 599992449, 550520692, 1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool4x4 r2 = bool4x4(false, true, true, true, false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x4 a3 = uint4x4(475547465, 876276892, 916067531, 1712032702, 752041926, 899534759, 948020518, 1553126337, 1209858994, 1210234744, 1065677570, 2063434729, 1808415708, 1536857930, 1356745398, 1161445540); + uint4x4 b3 = uint4x4(594141080, 1888303265, 1023987839, 695072711, 164764812, 1404792693, 1068554108, 1615410626, 387184925, 1930375043, 1920744920, 1913267890, 12598306, 1697936155, 145255547, 1903607817); + bool4x4 r3 = bool4x4(false, false, false, true, true, false, false, false, true, false, false, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_wide_scalar() + { + uint4x4 a0 = uint4x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717); + uint b0 = (438688675); + bool4x4 r0 = bool4x4(true, false, true, false, false, true, true, true, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x4 a1 = uint4x4(1016617211, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419, 1058332184, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358); + uint b1 = (2063134811); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x4 a2 = uint4x4(614746280, 1683117650, 1451781409, 61102732, 1284938191, 1452639553, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269); + uint b2 = (1000986708); + bool4x4 r2 = bool4x4(false, true, true, false, true, true, true, false, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x4 a3 = uint4x4(1930086291, 2112194236, 1797322269, 1781660503, 1442606402, 208047803, 1193639690, 1939917219, 1146005869, 865123927, 913186094, 35693052, 1017084356, 91189073, 369398582, 2082818804); + uint b3 = (108635332); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint4x4 b0 = uint4x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1052151621); + uint4x4 b1 = uint4x4(1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (2063431853); + uint4x4 b2 = uint4x4(2079035844, 849337819, 1769234051, 358948261, 267985383, 126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217); + bool4x4 r2 = bool4x4(false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (1480829811); + uint4x4 b3 = uint4x4(1903710461, 402220631, 266619022, 1724999252, 2113910076, 945951388, 1448605169, 1162548302, 1691586468, 996819204, 1151046248, 1924073034, 1910741238, 633631666, 307560646, 722552263); + bool4x4 r3 = bool4x4(false, true, true, false, false, true, true, true, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_equal_wide_wide() + { + uint4x4 a0 = uint4x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + uint4x4 b0 = uint4x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool4x4 r0 = bool4x4(false, true, false, true, true, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x4 a1 = uint4x4(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884, 912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + uint4x4 b1 = uint4x4(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017, 620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool4x4 r1 = bool4x4(true, false, true, false, true, false, true, false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x4 a2 = uint4x4(269897278, 1062947703, 1743454202, 2048964070, 1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + uint4x4 b2 = uint4x4(648547686, 418431167, 1724009726, 401891826, 1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool4x4 r2 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x4 a3 = uint4x4(442205781, 1050725689, 995151913, 926131462, 719271722, 1981390876, 659121091, 797556380, 1656192110, 66093862, 1964540799, 71894133, 1413886687, 1028466491, 1397158841, 1544483525); + uint4x4 b3 = uint4x4(1168998468, 1205894972, 1079707717, 1335643913, 1590790195, 155622033, 898990095, 1384002796, 1664888803, 1004528037, 402969524, 1299806519, 1194091234, 1673771542, 178191331, 98165007); + bool4x4 r3 = bool4x4(true, true, true, true, true, false, true, true, true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_equal_wide_scalar() + { + uint4x4 a0 = uint4x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043); + uint b0 = (1688048545); + bool4x4 r0 = bool4x4(false, true, true, true, true, false, true, true, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x4 a1 = uint4x4(1617221948, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750, 1258115260, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606); + uint b1 = (2017733017); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x4 a2 = uint4x4(626254356, 1021674613, 127839058, 1974631244, 426908235, 1818566980, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266); + uint b2 = (1162369122); + bool4x4 r2 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x4 a3 = uint4x4(1483727269, 1823599046, 1379007149, 1836699751, 777126023, 1288116795, 834230828, 172303141, 577773919, 705141691, 191477430, 868528232, 499782260, 146328981, 1401289768, 858105804); + uint b3 = (2045244870); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint4x4 b0 = uint4x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1576473309); + uint4x4 b1 = uint4x4(861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850, 830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (1556906486); + uint4x4 b2 = uint4x4(205552788, 620963188, 1156705971, 1121867260, 733876180, 1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410); + bool4x4 r2 = bool4x4(false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (1987696011); + uint4x4 b3 = uint4x4(1079808067, 363499438, 1873483674, 2031411422, 1979820112, 1682214687, 1470726710, 1285823822, 758372610, 44568907, 1533310851, 14070795, 1758870243, 68371537, 1482970849, 1750868121); + bool4x4 r3 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_equal_wide_wide() + { + uint4x4 a0 = uint4x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + uint4x4 b0 = uint4x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool4x4 r0 = bool4x4(false, false, true, false, true, true, true, false, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x4 a1 = uint4x4(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474, 605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + uint4x4 b1 = uint4x4(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253, 2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool4x4 r1 = bool4x4(false, false, false, true, false, true, false, true, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x4 a2 = uint4x4(796452624, 1710612922, 1629927787, 1094198224, 584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + uint4x4 b2 = uint4x4(802468307, 1090745055, 1968071275, 1935027815, 2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool4x4 r2 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x4 a3 = uint4x4(1030060516, 615638735, 1677201099, 325128466, 930989694, 165845388, 1887735446, 1905061476, 644732756, 1450709301, 811708233, 1120546613, 1966081819, 1710484814, 390900048, 1847748897); + uint4x4 b3 = uint4x4(222415803, 345913533, 920804419, 784455413, 1919795492, 2125545957, 957291149, 1547385242, 953814071, 685286053, 63764322, 1742849383, 1781391465, 64816935, 1543363698, 1439322689); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, true, true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_equal_wide_scalar() + { + uint4x4 a0 = uint4x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917); + uint b0 = (1470533736); + bool4x4 r0 = bool4x4(true, false, false, true, false, false, false, false, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x4 a1 = uint4x4(1646290021, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607, 1223010129, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027); + uint b1 = (196833647); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x4 a2 = uint4x4(1138747386, 917503963, 353608194, 1526792895, 192092521, 909358617, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700); + uint b2 = (1491562090); + bool4x4 r2 = bool4x4(false, false, false, true, false, false, false, true, false, false, false, true, true, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x4 a3 = uint4x4(702382564, 1013770865, 1420374964, 341399575, 2033070823, 672716789, 1809028740, 2070046852, 1254367930, 1206207650, 807585496, 1243142372, 350377587, 214724394, 216954982, 201992840); + uint b3 = (2086058548); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint4x4 b0 = uint4x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, false, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (945321577); + uint4x4 b1 = uint4x4(173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (337378780); + uint4x4 b2 = uint4x4(273010835, 1898553615, 1111540136, 717385513, 474197678, 1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, false, false, true, false, false, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (1274079907); + uint4x4 b3 = uint4x4(1834102381, 22983902, 1733648920, 2089437749, 476445313, 1296111196, 422851096, 1857250030, 1382182918, 449792502, 1785823601, 668960891, 1067260705, 1973471752, 1403490846, 1510985557); + bool4x4 r3 = bool4x4(false, true, false, false, true, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_add_wide_wide() + { + uint4x4 a0 = uint4x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + uint4x4 b0 = uint4x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + uint4x4 r0 = uint4x4(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660, 4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x4 a1 = uint4x4(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366, 941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + uint4x4 b1 = uint4x4(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905, 2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + uint4x4 r1 = uint4x4(2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271, 3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x4 a2 = uint4x4(526120638, 423980484, 1867227242, 603782684, 728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + uint4x4 b2 = uint4x4(77965941, 1726775513, 1759186349, 2070333485, 1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + uint4x4 r2 = uint4x4(604086579, 2150755997, 3626413591, 2674116169, 2461211795, 1450246522, 2444787499, 1669976746, 3356749404, 1917402232, 1548618217, 2863380484, 3471071068, 2013864506, 348877644, 2242427741); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x4 a3 = uint4x4(1603943169, 858711604, 278076564, 983811310, 1503210133, 1265840052, 1220817560, 839507207, 142866678, 1356231306, 1432159402, 637785903, 1032109021, 2081298882, 331695947, 1983868469); + uint4x4 b3 = uint4x4(361542573, 900925442, 1077800500, 1330170201, 984058816, 207503339, 339145243, 1051497556, 1435620725, 2105629028, 1215478628, 393193121, 901424214, 189116452, 17408580, 466230809); + uint4x4 r3 = uint4x4(1965485742, 1759637046, 1355877064, 2313981511, 2487268949, 1473343391, 1559962803, 1891004763, 1578487403, 3461860334, 2647638030, 1030979024, 1933533235, 2270415334, 349104527, 2450099278); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_add_wide_scalar() + { + uint4x4 a0 = uint4x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485); + uint b0 = (2124409227); + uint4x4 r0 = uint4x4(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528, 4127431088, 3760381198, 3284807513, 2209855429, 3192562193, 3363796327, 3622086115, 3851886712); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x4 a1 = uint4x4(1095438654, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260, 736972565, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263); + uint b1 = (756559204); + uint4x4 r1 = uint4x4(1851997858, 2575278135, 1415482756, 2367078125, 2342314602, 1449402504, 1825152673, 2461335437, 1334341464, 1493531769, 1468453775, 1320816643, 2808295487, 2329396901, 2384565749, 2612259467); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x4 a2 = uint4x4(656748782, 1917133199, 828322973, 2116810190, 2092767444, 973587865, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914); + uint b2 = (272774516); + uint4x4 r2 = uint4x4(929523298, 2189907715, 1101097489, 2389584706, 2365541960, 1246362381, 1509705789, 777038965, 1067067090, 1790833197, 1877410840, 627647933, 958022413, 500555656, 593957033, 1483350430); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x4 a3 = uint4x4(1340503111, 1979965576, 1988286575, 427699536, 538653829, 1589564058, 1954579845, 1781591877, 419928668, 1751001953, 355993558, 1653659509, 2098769225, 63134274, 1679875388, 377229586); + uint b3 = (838567468); + uint4x4 r3 = uint4x4(2179070579, 2818533044, 2826854043, 1266267004, 1377221297, 2428131526, 2793147313, 2620159345, 1258496136, 2589569421, 1194561026, 2492226977, 2937336693, 901701742, 2518442856, 1215797054); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint4x4 b0 = uint4x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861); + uint4x4 r0 = uint4x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150, 1387123903, 1948867027, 1170867018, 1502633380, 1174138523, 1521256022, 679371662, 1788775939); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (1636583489); + uint4x4 b1 = uint4x4(673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640); + uint4x4 r1 = uint4x4(2309846828, 3105884363, 1651439454, 2753220488, 3125446789, 3237574375, 1827234790, 2944043257, 2556669328, 3718813324, 3628989063, 2850507947, 2142424941, 2618004651, 3124921188, 2750410129); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1806146508); + uint4x4 b2 = uint4x4(1841791222, 206610851, 526971953, 1236359886, 1459523189, 965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031); + uint4x4 r2 = uint4x4(3647937730, 2012757359, 2333118461, 3042506394, 3265669697, 2771887139, 1888989307, 3104549709, 3611956280, 3785010699, 2221149894, 3712450656, 2529016705, 2550395304, 3483370067, 2109522539); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1275565021); + uint4x4 b3 = uint4x4(1518386617, 233426699, 1128986758, 1421938726, 1178529217, 1397917053, 137663521, 975646083, 1968321168, 720648013, 1606974342, 567772614, 490190373, 576353787, 1438920888, 2145198309); + uint4x4 r3 = uint4x4(2793951638, 1508991720, 2404551779, 2697503747, 2454094238, 2673482074, 1413228542, 2251211104, 3243886189, 1996213034, 2882539363, 1843337635, 1765755394, 1851918808, 2714485909, 3420763330); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_sub_wide_wide() + { + uint4x4 a0 = uint4x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + uint4x4 b0 = uint4x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + uint4x4 r0 = uint4x4(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982, 4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x4 a1 = uint4x4(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454, 425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + uint4x4 b1 = uint4x4(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855, 609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + uint4x4 r1 = uint4x4(3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895, 4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x4 a2 = uint4x4(1888446703, 1364654917, 265135366, 760501098, 741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + uint4x4 b2 = uint4x4(1224986479, 748933681, 88793450, 401362529, 1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + uint4x4 r2 = uint4x4(663460224, 615721236, 176341916, 359138569, 3949049757, 1650323877, 979082147, 182559134, 4158572232, 1442113917, 8339009, 1379854326, 3702505823, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x4 a3 = uint4x4(1541023885, 1644155041, 1885220021, 956814489, 1996571272, 313052858, 1686326525, 1591026645, 404689020, 832057610, 817031413, 1191376096, 1515565534, 178300672, 365767493, 1238101305); + uint4x4 b3 = uint4x4(120176164, 834539498, 1843750420, 337055138, 1625604945, 41302648, 1719986021, 2028592747, 609982501, 95087400, 1244763386, 1175550114, 887604651, 1249524531, 155418749, 1934403979); + uint4x4 r3 = uint4x4(1420847721, 809615543, 41469601, 619759351, 370966327, 271750210, 4261307800, 3857401194, 4089673815, 736970210, 3867235323, 15825982, 627960883, 3223743437, 210348744, 3598664622); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_sub_wide_scalar() + { + uint4x4 a0 = uint4x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189); + uint b0 = (462232403); + uint4x4 r0 = uint4x4(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412, 4113909093, 3920265733, 1451492028, 1579360933, 95007587, 656819045, 1128144329, 356857786); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x4 a1 = uint4x4(816382635, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794, 819644478, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758); + uint b1 = (815920639); + uint4x4 r1 = uint4x4(461996, 1013112478, 976881293, 297519910, 603017337, 461336550, 1276858759, 4121283399, 789330155, 3723839, 652082380, 3607349843, 4032540914, 201206332, 1183824143, 1201352119); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x4 a2 = uint4x4(1817991764, 676974855, 1638032613, 949761204, 1835969317, 919015590, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965); + uint b2 = (1280985500); + uint4x4 r2 = uint4x4(537006264, 3690956651, 357047113, 3963743000, 554983817, 3932997386, 3990929106, 23261106, 175794708, 273037212, 3783786161, 776846187, 3772118375, 3684415051, 3617213207, 392283465); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x4 a3 = uint4x4(941598524, 1394256067, 1267352835, 62929009, 1190778074, 657264006, 364156399, 775397332, 651143570, 486712236, 34309315, 1323491629, 1875163590, 1217887516, 2061463296, 24320578); + uint b3 = (2122131631); + uint4x4 r3 = uint4x4(3114434189, 3567091732, 3440188500, 2235764674, 3363613739, 2830099671, 2536992064, 2948232997, 2823979235, 2659547901, 2207144980, 3496327294, 4047999255, 3390723181, 4234298961, 2197156243); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint4x4 b0 = uint4x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719); + uint4x4 r0 = uint4x4(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128, 4197201280, 1426821512, 459678338, 4168388953, 263098296, 432788945, 614154009, 360811686); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (518111829); + uint4x4 b1 = uint4x4(967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530); + uint4x4 r1 = uint4x4(3845950596, 173445575, 3730811207, 3905212429, 2996194002, 57771261, 3850924627, 4255965664, 3111862416, 2832980348, 4083018573, 3368681298, 3959508569, 379275397, 3799888697, 4094989595); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (506757390); + uint4x4 b2 = uint4x4(1216448041, 936312747, 1997286455, 1969982026, 902880656, 1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072); + uint4x4 r2 = uint4x4(3585276645, 3865411939, 2804438231, 2831742660, 3898844030, 3640503989, 3359259961, 4178763921, 4070755777, 4186900845, 2911945666, 3883402334, 372827470, 293634282, 2966274226, 4280656614); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (2066839749); + uint4x4 b3 = uint4x4(1982717309, 1580139939, 136826185, 783667709, 205508687, 1152347947, 1682018862, 329924125, 396414255, 542319408, 208974930, 1638328097, 935729865, 125876461, 218665639, 1100023218); + uint4x4 r3 = uint4x4(84122440, 486699810, 1930013564, 1283172040, 1861331062, 914491802, 384820887, 1736915624, 1670425494, 1524520341, 1857864819, 428511652, 1131109884, 1940963288, 1848174110, 966816531); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mul_wide_wide() + { + uint4x4 a0 = uint4x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + uint4x4 b0 = uint4x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + uint4x4 r0 = uint4x4(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466, 990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x4 a1 = uint4x4(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234, 899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + uint4x4 b1 = uint4x4(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952, 675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + uint4x4 r1 = uint4x4(649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720, 1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x4 a2 = uint4x4(200879709, 857149632, 962693646, 988118613, 892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + uint4x4 b2 = uint4x4(1695925670, 1788874462, 534570710, 1110638325, 142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + uint4x4 r2 = uint4x4(48406862, 2297104000, 4019846068, 2811510105, 293009766, 3677102970, 1179445736, 3813187164, 2708838392, 1397450915, 487571412, 3889286542, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x4 a3 = uint4x4(1867348319, 464239430, 1513968722, 1879508953, 1835178747, 106255610, 791954119, 1098780631, 1336308698, 613897216, 1826550194, 1100684236, 67588307, 1388845400, 23402614, 2092286485); + uint4x4 b3 = uint4x4(1809758608, 288286688, 726755419, 364868101, 655080356, 266071904, 385013390, 186015668, 758488066, 1918847075, 1784720030, 1012303363, 135157062, 1204101671, 2062532388, 1665984668); + uint4x4 r3 = uint4x4(2376854640, 2027161408, 1912621350, 4186491197, 2728396, 1647526848, 418210914, 1845357612, 1544011700, 3794107392, 2497273820, 468065124, 2338334898, 412191848, 2980149912, 1944145100); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mul_wide_scalar() + { + uint4x4 a0 = uint4x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657); + uint b0 = (1476837906); + uint4x4 r0 = uint4x4(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778, 1736252960, 2595843622, 2760103458, 2441439286, 2626798860, 2317418328, 1423071262, 2117820994); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x4 a1 = uint4x4(391009467, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703, 1613845584, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062); + uint b1 = (1186856590); + uint4x4 r1 = uint4x4(1435732410, 218605196, 1896985092, 2520103494, 4169532920, 3544103394, 3210322148, 2141566616, 3231264354, 1813259360, 2572759330, 2432698368, 714733494, 209765036, 1993704396, 95853188); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x4 a2 = uint4x4(987919119, 1325430351, 948943118, 1743760648, 227492421, 217698851, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790); + uint b2 = (1659987051); + uint4x4 r2 = uint4x4(548860741, 3519500037, 1518981338, 88896088, 1840817879, 997425313, 3200571067, 1277937072, 1861085478, 3612765932, 98332333, 3544396586, 3205554594, 2751221792, 438848394, 2319607618); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x4 a3 = uint4x4(396984449, 352046491, 1513331645, 1155106274, 138823406, 923862962, 131310587, 938688263, 631817444, 1890216972, 2143914807, 30238797, 5224899, 1350553408, 2127554014, 1666837332); + uint b3 = (474729765); + uint4x4 r3 = uint4x4(3912359845, 3698513511, 2844449617, 349983658, 1219417702, 1371907770, 443527751, 447592195, 903547124, 3098229180, 2847484403, 3116678177, 2741501999, 3006215232, 1864957718, 2131576612); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint4x4 b0 = uint4x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488); + uint4x4 r0 = uint4x4(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328, 1623617844, 2603413056, 3464455056, 3011267876, 3666887396, 1294445652, 1610098852, 3603911936); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (459880225); + uint4x4 b1 = uint4x4(994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281); + uint4x4 r1 = uint4x4(1378091637, 738687535, 3468449220, 3949757141, 316193853, 2121309665, 4072325109, 1750778551, 2563976578, 133205964, 1859727169, 388250044, 3682973667, 2802145731, 3778894801, 1074594065); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (2138825098); + uint4x4 b2 = uint4x4(1273008873, 1788343477, 1994364082, 597340263, 2022856151, 1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370); + uint4x4 r2 = uint4x4(1965095578, 1643380370, 1438423540, 15376006, 2208382182, 1819612578, 2939756906, 3283451240, 2728325340, 3233842146, 4167677104, 1377278202, 2222375624, 3926573898, 572695294, 2733759028); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (890235481); + uint4x4 b3 = uint4x4(1880345584, 1882904983, 267128787, 1569254022, 1779318576, 1645728412, 819681361, 666095044, 308815496, 1829465065, 751656026, 1207837213, 1073832960, 169923853, 808603307, 363334486); + uint4x4 r3 = uint4x4(2992326256, 3526536063, 3957677659, 651297942, 2290472880, 2213466172, 1824177705, 3390288164, 56997192, 3913448961, 1427464010, 1396399637, 1642316800, 3035296645, 3228215155, 2580712678); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_div_wide_wide() + { + uint4x4 a0 = uint4x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + uint4x4 b0 = uint4x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + uint4x4 r0 = uint4x4(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x4 a1 = uint4x4(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343, 1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + uint4x4 b1 = uint4x4(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844, 616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + uint4x4 r1 = uint4x4(1, 39, 0, 1, 1, 1, 1, 0, 2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x4 a2 = uint4x4(850951883, 1942618200, 1088675276, 1648515976, 991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + uint4x4 b2 = uint4x4(1535651093, 932740870, 1078416711, 725172174, 554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + uint4x4 r2 = uint4x4(0, 2, 1, 2, 1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x4 a3 = uint4x4(308887330, 7606985, 1626977876, 1895907215, 1115090617, 1043375525, 168865453, 1056135390, 1080260308, 780473703, 1917865869, 1741288184, 497930923, 668217348, 1678197677, 1075043333); + uint4x4 b3 = uint4x4(1549803350, 364926102, 1386892120, 656711993, 91320418, 1458063222, 1529573616, 722321620, 757577900, 1175347146, 1933900601, 1063907544, 97856937, 972434416, 1920248258, 261846189); + uint4x4 r3 = uint4x4(0, 0, 1, 2, 12, 0, 0, 1, 1, 0, 0, 1, 5, 0, 0, 4); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_div_wide_scalar() + { + uint4x4 a0 = uint4x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029); + uint b0 = (947861580); + uint4x4 r0 = uint4x4(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1, 2, 2, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x4 a1 = uint4x4(1646044372, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156); + uint b1 = (1447236569); + uint4x4 r1 = uint4x4(1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x4 a2 = uint4x4(1725332114, 1383839785, 2136282541, 159847918, 1515555001, 614923813, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647); + uint b2 = (1949103348); + uint4x4 r2 = uint4x4(0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x4 a3 = uint4x4(1222061694, 1966139194, 1303421248, 1811535294, 240471953, 2116688995, 1035856383, 2022133852, 2147186889, 152458544, 148729436, 318083619, 980911803, 817677917, 398058007, 747046501); + uint b3 = (579280546); + uint4x4 r3 = uint4x4(2, 3, 2, 3, 0, 3, 1, 3, 3, 0, 0, 0, 1, 1, 0, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint4x4 b0 = uint4x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097); + uint4x4 r0 = uint4x4(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25, 1, 2, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1818363859); + uint4x4 b1 = uint4x4(1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309); + uint4x4 r1 = uint4x4(1, 6, 37, 1, 1, 1, 0, 2, 1, 5, 13, 1, 4, 1, 7, 1); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (2114509003); + uint4x4 b2 = uint4x4(1266146708, 45105265, 2092444751, 407744534, 126616016, 1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719); + uint4x4 r2 = uint4x4(1, 46, 1, 5, 16, 1, 4, 5, 1, 2, 1, 11, 3, 2, 3, 3); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (638134699); + uint4x4 b3 = uint4x4(297472499, 1196796276, 815483831, 1511819303, 906952957, 613050421, 60483276, 883893666, 1481847510, 1065163200, 1641516292, 1980940753, 1862370918, 2048575092, 396483978, 610486041); + uint4x4 r3 = uint4x4(2, 0, 0, 0, 0, 1, 10, 0, 0, 0, 0, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mod_wide_wide() + { + uint4x4 a0 = uint4x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + uint4x4 b0 = uint4x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + uint4x4 r0 = uint4x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x4 a1 = uint4x4(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189, 1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + uint4x4 b1 = uint4x4(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748, 798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + uint4x4 r1 = uint4x4(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189, 604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x4 a2 = uint4x4(1090018756, 1573062648, 1100694500, 863521889, 1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + uint4x4 b2 = uint4x4(1350943898, 696511738, 1182727748, 1843845940, 244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + uint4x4 r2 = uint4x4(1090018756, 180039172, 1100694500, 863521889, 166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x4 a3 = uint4x4(1759996408, 1386598712, 251325313, 122732248, 2082099427, 1080998866, 686623511, 693281682, 302610170, 1380134301, 1661197566, 481331690, 1193753109, 166363462, 588323181, 594997700); + uint4x4 b3 = uint4x4(951215450, 195024879, 2079991098, 220236959, 294448639, 1396793894, 141031566, 960537512, 719675899, 928202057, 275228822, 1510254672, 1481505055, 1373357922, 1940197321, 286975465); + uint4x4 r3 = uint4x4(808780958, 21424559, 251325313, 122732248, 20958954, 1080998866, 122497247, 693281682, 302610170, 451932244, 9824634, 481331690, 1193753109, 166363462, 588323181, 21046770); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mod_wide_scalar() + { + uint4x4 a0 = uint4x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743); + uint b0 = (883951171); + uint4x4 r0 = uint4x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764, 712321026, 172564850, 656117274, 201946572); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x4 a1 = uint4x4(1607489717, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313, 1778384846, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470); + uint b1 = (165478511); + uint4x4 r1 = uint4x4(118183118, 151411183, 88315444, 113523802, 100798728, 92063740, 157552667, 102078780, 46544291, 123599736, 57662177, 150269373, 160931436, 153365271, 104447121, 3383426); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x4 a2 = uint4x4(1568090825, 435886407, 453990946, 1731665372, 586777590, 1475597526, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411); + uint b2 = (2050982942); + uint4x4 r2 = uint4x4(1568090825, 435886407, 453990946, 1731665372, 586777590, 1475597526, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 79363616, 666621411); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x4 a3 = uint4x4(1524342239, 1547690684, 857915601, 709453751, 2103243535, 2124726669, 1410239986, 1761316053, 442891932, 388101009, 1059801526, 651827482, 1890268914, 910020375, 58051452, 293939465); + uint b3 = (1490592900); + uint4x4 r3 = uint4x4(33749339, 57097784, 857915601, 709453751, 612650635, 634133769, 1410239986, 270723153, 442891932, 388101009, 1059801526, 651827482, 399676014, 910020375, 58051452, 293939465); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint4x4 b0 = uint4x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131); + uint4x4 r0 = uint4x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1859742342); + uint4x4 b1 = uint4x4(797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388); + uint4x4 r1 = uint4x4(265372968, 215964658, 776549345, 179512370, 1859742342, 14262450, 374167220, 1418334, 1859742342, 49383671, 399566104, 414796203, 553950305, 748913331, 114295180, 24421074); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1477846418); + uint4x4 b2 = uint4x4(511428733, 1642227542, 1962310765, 207128894, 1342085447, 448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751); + uint4x4 r2 = uint4x4(454988952, 1477846418, 1477846418, 27944160, 135760971, 132762560, 139176342, 66914916, 724757645, 331502408, 102145698, 403366277, 1477846418, 1477846418, 1477846418, 379404667); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1648646354); + uint4x4 b3 = uint4x4(1730303822, 859376331, 889118656, 1549752450, 992618236, 941290327, 1766644910, 435947831, 1937100534, 1342633977, 1176317048, 950230773, 1135152183, 384466155, 600022, 363833845); + uint4x4 r3 = uint4x4(1648646354, 789270023, 759527698, 98893904, 656028118, 707356027, 1648646354, 340802861, 1648646354, 306012377, 472329306, 698415581, 513494171, 110781734, 385920, 193310974); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_plus() + { + uint4x4 a0 = uint4x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926); + uint4x4 r0 = uint4x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926); + TestUtils.AreEqual(+a0, r0); + + uint4x4 a1 = uint4x4(2049663954, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393); + uint4x4 r1 = uint4x4(2049663954, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393); + TestUtils.AreEqual(+a1, r1); + + uint4x4 a2 = uint4x4(829347661, 381670450, 277507230, 361395485, 1012749225, 1204186973, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986); + uint4x4 r2 = uint4x4(829347661, 381670450, 277507230, 361395485, 1012749225, 1204186973, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986); + TestUtils.AreEqual(+a2, r2); + + uint4x4 a3 = uint4x4(1257555634, 578585280, 1087392044, 2084329354, 300198860, 1247120404, 1325809345, 1057524082, 1426592020, 167918579, 1552986194, 813448514, 2048383407, 647476365, 13335381, 1985958169); + uint4x4 r3 = uint4x4(1257555634, 578585280, 1087392044, 2084329354, 300198860, 1247120404, 1325809345, 1057524082, 1426592020, 167918579, 1552986194, 813448514, 2048383407, 647476365, 13335381, 1985958169); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_neg() + { + uint4x4 a0 = uint4x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242); + uint4x4 r0 = uint4x4(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947, 3179939058, 2658692327, 3599972203, 2752761010, 4081880003, 4051029809, 3953445021, 3453882054); + TestUtils.AreEqual(-a0, r0); + + uint4x4 a1 = uint4x4(574159094, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284); + uint4x4 r1 = uint4x4(3720808202, 2237047603, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432, 2854192368, 2809370842, 3863301205, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012); + TestUtils.AreEqual(-a1, r1); + + uint4x4 a2 = uint4x4(1954173314, 1836511050, 1662806453, 506144868, 650922971, 1755382554, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551); + uint4x4 r2 = uint4x4(2340793982, 2458456246, 2632160843, 3788822428, 3644044325, 2539584742, 3020970047, 2820522109, 2441140349, 2599393523, 3565514784, 3949897936, 3719099760, 3700848258, 3093126687, 2952094745); + TestUtils.AreEqual(-a2, r2); + + uint4x4 a3 = uint4x4(1768435578, 23008237, 1410502890, 695213039, 1342131852, 1619073746, 469828650, 20553909, 1711214338, 690040786, 1749711826, 1265590278, 1516859887, 1317159343, 1722518934, 803074002); + uint4x4 r3 = uint4x4(2526531718, 4271959059, 2884464406, 3599754257, 2952835444, 2675893550, 3825138646, 4274413387, 2583752958, 3604926510, 2545255470, 3029377018, 2778107409, 2977807953, 2572448362, 3491893294); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_prefix_inc() + { + uint4x4 a0 = uint4x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402); + uint4x4 r0 = uint4x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403); + TestUtils.AreEqual(++a0, r0); + + uint4x4 a1 = uint4x4(1786514683, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865, 519296647, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661); + uint4x4 r1 = uint4x4(1786514684, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866, 519296648, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662); + TestUtils.AreEqual(++a1, r1); + + uint4x4 a2 = uint4x4(65514038, 1321109497, 1366348660, 1777734111, 1414867743, 536776365, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802); + uint4x4 r2 = uint4x4(65514039, 1321109498, 1366348661, 1777734112, 1414867744, 536776366, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803); + TestUtils.AreEqual(++a2, r2); + + uint4x4 a3 = uint4x4(413165245, 1206806909, 2069192976, 1613073974, 1342402025, 330167396, 665917965, 799320426, 2054286971, 2074397725, 113129500, 721162954, 2136093351, 173315234, 2006582934, 265026274); + uint4x4 r3 = uint4x4(413165246, 1206806910, 2069192977, 1613073975, 1342402026, 330167397, 665917966, 799320427, 2054286972, 2074397726, 113129501, 721162955, 2136093352, 173315235, 2006582935, 265026275); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_postfix_inc() + { + uint4x4 a0 = uint4x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778); + uint4x4 r0 = uint4x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778); + TestUtils.AreEqual(a0++, r0); + + uint4x4 a1 = uint4x4(717006530, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403); + uint4x4 r1 = uint4x4(717006530, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403); + TestUtils.AreEqual(a1++, r1); + + uint4x4 a2 = uint4x4(1919960927, 2010345998, 1047836590, 586887730, 1209169651, 1051531454, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320); + uint4x4 r2 = uint4x4(1919960927, 2010345998, 1047836590, 586887730, 1209169651, 1051531454, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320); + TestUtils.AreEqual(a2++, r2); + + uint4x4 a3 = uint4x4(1995020676, 183815949, 1207670946, 1620827725, 1809811548, 1643094131, 280506984, 382615051, 650280741, 560631765, 1840722506, 63273626, 1294940978, 724310154, 1901579798, 697321264); + uint4x4 r3 = uint4x4(1995020676, 183815949, 1207670946, 1620827725, 1809811548, 1643094131, 280506984, 382615051, 650280741, 560631765, 1840722506, 63273626, 1294940978, 724310154, 1901579798, 697321264); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint4x4_operator_prefix_dec() + { + uint4x4 a0 = uint4x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392); + uint4x4 r0 = uint4x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391); + TestUtils.AreEqual(--a0, r0); + + uint4x4 a1 = uint4x4(1310293956, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829, 1454322707, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100); + uint4x4 r1 = uint4x4(1310293955, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828, 1454322706, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099); + TestUtils.AreEqual(--a1, r1); + + uint4x4 a2 = uint4x4(157482354, 1797304434, 1083672612, 929765380, 2083512379, 2045544045, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317); + uint4x4 r2 = uint4x4(157482353, 1797304433, 1083672611, 929765379, 2083512378, 2045544044, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316); + TestUtils.AreEqual(--a2, r2); + + uint4x4 a3 = uint4x4(767990877, 366067423, 99249400, 1549382038, 1105868582, 1977762759, 1646465385, 1067223071, 1774498387, 1128527977, 1104488553, 1575600100, 1141283662, 1678956750, 449874904, 748975258); + uint4x4 r3 = uint4x4(767990876, 366067422, 99249399, 1549382037, 1105868581, 1977762758, 1646465384, 1067223070, 1774498386, 1128527976, 1104488552, 1575600099, 1141283661, 1678956749, 449874903, 748975257); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_postfix_dec() + { + uint4x4 a0 = uint4x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868); + uint4x4 r0 = uint4x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868); + TestUtils.AreEqual(a0--, r0); + + uint4x4 a1 = uint4x4(1867810045, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911); + uint4x4 r1 = uint4x4(1867810045, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911); + TestUtils.AreEqual(a1--, r1); + + uint4x4 a2 = uint4x4(416440036, 1444496274, 296146626, 1209855130, 2016700604, 838640502, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298); + uint4x4 r2 = uint4x4(416440036, 1444496274, 296146626, 1209855130, 2016700604, 838640502, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298); + TestUtils.AreEqual(a2--, r2); + + uint4x4 a3 = uint4x4(569144612, 509007463, 860240975, 41334109, 10321636, 1940079495, 43143738, 1044950720, 63756334, 1595004937, 699747920, 348534360, 509361827, 1352179420, 271823835, 1889179126); + uint4x4 r3 = uint4x4(569144612, 509007463, 860240975, 41334109, 10321636, 1940079495, 43143738, 1044950720, 63756334, 1595004937, 699747920, 348534360, 509361827, 1352179420, 271823835, 1889179126); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_and_wide_wide() + { + uint4x4 a0 = uint4x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + uint4x4 b0 = uint4x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + uint4x4 r0 = uint4x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x4 a1 = uint4x4(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372, 181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + uint4x4 b1 = uint4x4(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586, 1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + uint4x4 r1 = uint4x4(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976, 177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x4 a2 = uint4x4(1804502415, 1733695477, 1110712857, 113012430, 1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + uint4x4 b2 = uint4x4(843085933, 1045118223, 41867329, 1397669260, 1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + uint4x4 r2 = uint4x4(570425357, 641864965, 36962305, 34352268, 706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x4 a3 = uint4x4(17366276, 1245846423, 1075177576, 1023499729, 1742176891, 1288325524, 2092131182, 1444013434, 210707066, 627341079, 155789028, 411695477, 2144207930, 1007799200, 382737478, 85407483); + uint4x4 b3 = uint4x4(267066435, 781393024, 1444337796, 139669978, 880161801, 1604286495, 839016626, 1986058500, 1905400692, 1670633815, 651063094, 967343492, 336245810, 914791376, 1696073831, 2103810347); + uint4x4 r3 = uint4x4(17308672, 167909504, 1075103744, 134287824, 609615881, 1284130836, 805462050, 1442889984, 8520304, 553668887, 4728356, 411597060, 336200754, 872450944, 68159558, 84217899); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_and_wide_scalar() + { + uint4x4 a0 = uint4x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472); + uint b0 = (93423598); + uint4x4 r0 = uint4x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672, 1148422, 8389408, 83887462, 8488072); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x4 a1 = uint4x4(861733033, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926, 1817145060, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772); + uint b1 = (1408932942); + uint4x4 r1 = uint4x4(324534280, 286268488, 1366298692, 1102615626, 322044930, 1397755908, 6985796, 1137737800, 328371278, 1078594628, 1399326724, 1078989902, 281676870, 34212932, 1093304384, 9081924); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x4 a2 = uint4x4(872875431, 708719245, 1764446048, 1527981061, 398141788, 156911041, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172); + uint b2 = (1143080525); + uint4x4 r2 = uint4x4(67240965, 2228749, 1075971648, 1073873925, 69337164, 132161, 1537, 1140850701, 2098701, 69337665, 1140852237, 1073743369, 2229257, 1075970572, 2229320, 69207556); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x4 a3 = uint4x4(1826788967, 3292432, 225233484, 1488146706, 1918853562, 1038188796, 1833784555, 252534533, 942504184, 840550591, 475152200, 1566941712, 546609146, 1803072768, 1125028552, 104252148); + uint b3 = (150752148); + uint4x4 r3 = uint4x4(148898308, 3148048, 141314564, 145768720, 6046096, 148897940, 139214976, 135023364, 137119888, 1591444, 139463424, 140771856, 9700240, 142082304, 787072, 3424916); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint4x4 b0 = uint4x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291); + uint4x4 r0 = uint4x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300, 1075314980, 1076910436, 68698370, 6434); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1085233038); + uint4x4 b1 = uint4x4(1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851); + uint4x4 r1 = uint4x4(1073939080, 2299648, 1082868362, 1082278790, 741382, 1082283648, 1082720778, 1082675206, 1076826496, 1074615948, 2245132, 1076646798, 1074419596, 1084490250, 8456066, 1076364674); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (372814411); + uint4x4 b2 = uint4x4(1623486506, 211665304, 1668985777, 348112007, 1808619374, 1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681); + uint4x4 r2 = uint4x4(12298, 68714504, 37270017, 339247107, 34083402, 304099905, 36212744, 337683019, 1048587, 338698304, 304128072, 369659979, 34643976, 372814339, 70791754, 35659841); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1980296380); + uint4x4 b3 = uint4x4(1295368015, 859181113, 1741688223, 1249250718, 363989837, 939740255, 1668271386, 121498186, 1765635287, 1637255201, 1157123404, 216326016, 1525016040, 1131192672, 433812479, 797544392); + uint4x4 r3 = uint4x4(1140894732, 838860856, 1711279260, 1107299484, 335546380, 805325852, 1644743704, 101246984, 1611162772, 1610647584, 1141394444, 67161216, 1375790248, 1107861536, 268984508, 638094472); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_or_wide_wide() + { + uint4x4 a0 = uint4x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + uint4x4 b0 = uint4x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + uint4x4 r0 = uint4x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x4 a1 = uint4x4(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074, 543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + uint4x4 b1 = uint4x4(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841, 108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + uint4x4 r1 = uint4x4(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171, 645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x4 a2 = uint4x4(203868172, 32846030, 1057901177, 1537975433, 470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + uint4x4 b2 = uint4x4(2036352209, 1554561114, 1332339254, 480739851, 1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + uint4x4 r2 = uint4x4(2103889117, 1576909022, 2138040959, 1605346955, 1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x4 a3 = uint4x4(237797826, 356229491, 1054697631, 2025966311, 718324935, 1223426852, 2042482036, 683169667, 1994321453, 240702936, 828468284, 1009506608, 708733945, 449892073, 1530051697, 654498852); + uint4x4 b3 = uint4x4(92416160, 446752586, 1307950607, 1358449730, 181367548, 432421751, 695223657, 56384197, 1119601678, 460615696, 463588364, 780415466, 1378457042, 1259569239, 1887579973, 358353719); + uint4x4 r3 = uint4x4(263104994, 532408187, 2147352223, 2029637351, 719320831, 1508785015, 2046676349, 737959879, 1996484143, 528283096, 1004661820, 1051720186, 2051014651, 1540607743, 2075311989, 928964407); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_or_wide_scalar() + { + uint4x4 a0 = uint4x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655); + uint b0 = (1666102508); + uint4x4 r0 = uint4x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148, 2003812348, 1733293807, 1875836414, 2012132863); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x4 a1 = uint4x4(46921989, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359, 1511253082, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015); + uint b1 = (1980838747); + uint4x4 r1 = uint4x4(1994128223, 1995567963, 2010461179, 1991325695, 1997911899, 1991868383, 2131982331, 2122054655, 2124133343, 2115237723, 2144728923, 1981677563, 2136438655, 1993456507, 2138829791, 2130181087); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x4 a2 = uint4x4(539526284, 1815369493, 529427586, 358352200, 1353013374, 1349149982, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643); + uint b2 = (310877895); + uint4x4 r2 = uint4x4(850370255, 2125979607, 529530567, 400531407, 1386733311, 1391460319, 1927257823, 1404034799, 935313103, 518496247, 534241023, 451395303, 1928855535, 1452277503, 2012217327, 1452269263); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x4 a3 = uint4x4(142082352, 1052987078, 1551897284, 647667876, 272240018, 728496025, 1212085507, 1717689835, 478474157, 1784582014, 1420783529, 671512087, 1240546077, 215180285, 1874077134, 288085841); + uint b3 = (1760023655); + uint4x4 r3 = uint4x4(1761596791, 2129125095, 2095568615, 1862268135, 2030034423, 1810888703, 1761604967, 1860689391, 2095579119, 1795153791, 2096103407, 1760032375, 1777860479, 1828190207, 1878521327, 2045761399); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint4x4 b0 = uint4x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352); + uint4x4 r0 = uint4x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813, 2138308077, 1836824463, 1492630911, 1291306269); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (424663473); + uint4x4 b1 = uint4x4(447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560); + uint4x4 r1 = uint4x4(469760441, 527432119, 2102393277, 461364733, 1540357117, 2038431217, 1609563133, 1608506353, 1508891639, 433060337, 2069888509, 1006631935, 1064296439, 2079326201, 1501560311, 964689913); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (990961386); + uint4x4 b2 = uint4x4(547309556, 1307122961, 263229121, 1518227598, 1098359242, 997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616); + uint4x4 r2 = uint4x4(1000333310, 2147082235, 1068556011, 2071912174, 2071461866, 997981930, 2065628926, 997326575, 1060233210, 2064900095, 2136670190, 2073878254, 1004142575, 997850858, 2075778799, 2144722938); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (1326199854); + uint4x4 b3 = uint4x4(1949398395, 2027606165, 1750615303, 908181664, 2105810564, 2009616838, 1492018691, 1325195313, 1365101592, 276155673, 1378507257, 1526287781, 322486040, 1550813488, 326334540, 2015237736); + uint4x4 r3 = uint4x4(2134734207, 2145318079, 1868330287, 2133718190, 2139897518, 2144105966, 1609463343, 1341977663, 1599994942, 1602092351, 1596882431, 1610448303, 1597816638, 1601158462, 1602190446, 2132686446); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_xor_wide_wide() + { + uint4x4 a0 = uint4x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + uint4x4 b0 = uint4x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + uint4x4 r0 = uint4x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x4 a1 = uint4x4(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405, 1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + uint4x4 b1 = uint4x4(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483, 1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + uint4x4 r1 = uint4x4(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070, 981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x4 a2 = uint4x4(32554542, 1915830925, 2001025156, 2012451132, 1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + uint4x4 b2 = uint4x4(325882121, 45335181, 1859278043, 1002624300, 1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + uint4x4 r2 = uint4x4(312225575, 1887600640, 429354079, 1278297104, 632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x4 a3 = uint4x4(1730482516, 1488638921, 801348246, 1768559974, 1475767978, 1617893197, 689768843, 640586983, 426041408, 1811169716, 1563089576, 1411870628, 1004729442, 1173825171, 344960599, 633357624); + uint4x4 b3 = uint4x4(1356120192, 933877640, 2003767224, 113246892, 1236821680, 256717233, 1832711379, 238792988, 691507914, 1132023339, 1571029002, 227661589, 1609435614, 1581653714, 1384954643, 1432072515); + uint4x4 r3 = uint4x4(938594772, 1863517249, 1487705390, 1873418186, 508430362, 1864509180, 1143078232, 672474619, 810775178, 680333215, 9362082, 1505147057, 1678572988, 464599105, 1174607172, 1889268859); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_xor_wide_scalar() + { + uint4x4 a0 = uint4x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046); + uint b0 = (493665894); + uint4x4 r0 = uint4x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053, 437376926, 1392927932, 2054402363, 463180344); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x4 a1 = uint4x4(375757978, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736, 447453839, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973); + uint b1 = (491079274); + uint4x4 r1 = uint4x4(186702576, 371762244, 375527487, 618745463, 1031986773, 1000908074, 491343762, 1164914022, 2036840370, 133094629, 677146516, 205099286, 36780645, 47041514, 1327792696, 1520547255); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x4 a2 = uint4x4(1059509471, 64097148, 1814786305, 716239, 476052372, 92561487, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185); + uint b2 = (744733291); + uint4x4 r2 = uint4x4(323317428, 800174359, 1078512490, 745101220, 809255423, 703060516, 1456372985, 773205017, 1645813588, 1368542166, 589723701, 717567903, 1805007853, 1363747113, 1583742507, 528804098); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x4 a3 = uint4x4(1771744425, 1026064492, 275465401, 1157615659, 2091197990, 1671757076, 574090633, 458210617, 1604017559, 1913893498, 1791703422, 2143390933, 777506800, 1972227371, 2073971655, 61542294); + uint b3 = (75727457); + uint4x4 r3 = uint4x4(1830366920, 967508493, 350799576, 1081889354, 2015798343, 1730641781, 649359336, 533479256, 1528356854, 1989160987, 1850260255, 2067926708, 718556561, 1896763210, 2132658598, 120098295); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint4x4 b0 = uint4x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492); + uint4x4 r0 = uint4x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812, 953555847, 621596140, 1060334190, 211227368); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (290620937); + uint4x4 b1 = uint4x4(1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943); + uint4x4 r1 = uint4x4(1127638218, 648689378, 1599924796, 477936442, 631134527, 891940181, 449034364, 1108436144, 862105248, 2102275769, 343659812, 1727179960, 1141142940, 615093500, 1273803444, 439201526); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (714832744); + uint4x4 b2 = uint4x4(374210759, 215701593, 1573378082, 779254615, 711527976, 710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645); + uint4x4 r2 = uint4x4(1020623791, 641737521, 2002559818, 82378815, 15889728, 12609583, 667564310, 163675479, 2092654163, 949289501, 39072688, 2128928141, 2140252743, 303507938, 537080739, 1561356861); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (896851285); + uint4x4 b3 = uint4x4(1187420887, 536338211, 874727301, 1067319145, 191758210, 272673141, 18096431, 188062447, 1726887620, 2109517402, 1329654715, 1449815991, 342156404, 604196193, 1831114838, 962033481); + uint4x4 r3 = uint4x4(1941063554, 713228918, 22518480, 183050812, 1041834711, 624194592, 878771322, 1044465594, 1402661777, 1221096207, 2050242286, 1662956258, 554711329, 293048372, 1481655555, 203663900); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_left_shift() + { + uint4x4 a0 = uint4x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606); + int b0 = (1321149625); + uint4x4 r0 = uint4x4(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832, 2885681152, 838860800, 3422552064, 2885681152, 1006632960, 1174405120, 503316480, 2617245696); + TestUtils.AreEqual(a0 << b0, r0); + + uint4x4 a1 = uint4x4(2045594989, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278, 221147365, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875); + int b1 = (2077023268); + uint4x4 r1 = uint4x4(2664748752, 892924384, 469119280, 1794396016, 1406142960, 596255120, 3079797200, 2872446416, 4222180448, 3538357840, 3282278256, 3694573056, 1142455168, 3407044352, 1636751872, 648281520); + TestUtils.AreEqual(a1 << b1, r1); + + uint4x4 a2 = uint4x4(1824729613, 1581610518, 407677878, 1208958192, 740058147, 946058001, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326); + int b2 = (1535276688); + uint4x4 r2 = uint4x4(705495040, 1981153280, 2880831488, 1022361600, 1680015360, 3004235776, 2103508992, 2868183040, 1514799104, 2144796672, 1359347712, 1840316416, 2702770176, 2729050112, 2234187776, 2870345728); + TestUtils.AreEqual(a2 << b2, r2); + + uint4x4 a3 = uint4x4(1996060114, 542942787, 65869628, 622492353, 159523866, 584916657, 286195265, 1953695770, 209529707, 211278352, 933594260, 1827522668, 1129290782, 1050231977, 183969222, 1773085306); + int b3 = (927390277); + uint4x4 r3 = uint4x4(3744381504, 194300000, 2107828096, 2739886112, 809796416, 1537463840, 568313888, 2388722496, 2409983328, 2465939968, 4105212544, 2646150528, 1777566656, 3542652192, 1592047808, 904154944); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_right_shift() + { + uint4x4 a0 = uint4x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382); + int b0 = (1266801540); + uint4x4 r0 = uint4x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440, 43870498, 57361563, 35594054, 11599586); + TestUtils.AreEqual(a0 >> b0, r0); + + uint4x4 a1 = uint4x4(1102123711, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760, 348013684, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389); + int b1 = (334005460); + uint4x4 r1 = uint4x4(1051, 1549, 267, 1524, 1755, 702, 1219, 389, 728, 331, 1495, 738, 1513, 572, 28, 1793); + TestUtils.AreEqual(a1 >> b1, r1); + + uint4x4 a2 = uint4x4(352174824, 425441430, 186542511, 1099859381, 1234295294, 1028666766, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981); + int b2 = (1164508476); + uint4x4 r2 = uint4x4(1, 1, 0, 4, 4, 3, 2, 4, 3, 4, 0, 3, 4, 5, 5, 2); + TestUtils.AreEqual(a2 >> b2, r2); + + uint4x4 a3 = uint4x4(1435331003, 1447204571, 494777716, 1097030937, 1573721009, 424949150, 338466956, 1451909085, 2097834602, 1996022619, 1349763966, 490973311, 1133192771, 2054033380, 397231107, 150337656); + int b3 = (1759616654); + uint4x4 r3 = uint4x4(87605, 88330, 30198, 66957, 96052, 25936, 20658, 88617, 128041, 121827, 82383, 29966, 69164, 125368, 24245, 9175); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_not() + { + uint4x4 a0 = uint4x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603); + uint4x4 r0 = uint4x4(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439, 3822001804, 3523255869, 3667386335, 2233443271, 3541758807, 2197788012, 2991944802, 3630222692); + TestUtils.AreEqual(~a0, r0); + + uint4x4 a1 = uint4x4(1289372466, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942, 1562433528, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274); + uint4x4 r1 = uint4x4(3005594829, 2343948699, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974, 3012420353, 2732533767, 2470142485, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021); + TestUtils.AreEqual(~a1, r1); + + uint4x4 a2 = uint4x4(695179852, 897923626, 1816190464, 1362906829, 1227946838, 700158434, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010); + uint4x4 r2 = uint4x4(3599787443, 3397043669, 2478776831, 2932060466, 3067020457, 3594808861, 4105358017, 3338525487, 2171478485, 2701953044, 4275744234, 2572859341, 2658091601, 2380869903, 2912422268, 3009690285); + TestUtils.AreEqual(~a2, r2); + + uint4x4 a3 = uint4x4(722020848, 183545104, 2006881282, 685422512, 70717710, 1636059183, 1218560768, 1078350342, 1743219894, 894044458, 110742707, 1831797788, 2111543080, 858442193, 907645851, 1672993750); + uint4x4 r3 = uint4x4(3572946447, 4111422191, 2288086013, 3609544783, 4224249585, 2658908112, 3076406527, 3216616953, 2551747401, 3400922837, 4184224588, 2463169507, 2183424215, 3436525102, 3387321444, 2621973545); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x4.gen.cs.meta new file mode 100644 index 0000000..8c8d1fa --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUint4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c652e046dd97fc4aadae764262652ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUtils.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUtils.cs new file mode 100644 index 0000000..addf5db --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUtils.cs @@ -0,0 +1,707 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; + +namespace Unity.Mathematics.Tests +{ + class TestUtils + { + + public static void AreEqual(bool a, bool b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(int a, int b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(uint a, uint b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(long a, long b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(ulong a, ulong b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(float a, float b, float delta = 0.0f) + { + Assert.AreEqual(a, b, delta); + } + + public static void AreEqual(float a, float b, int maxUlp, bool signedZeroEqual) + { + if (signedZeroEqual && a == b) + return; + + if(isfinite(a) && isfinite(b)) + { + int ia = asint(a); + int ib = asint(b); + if ((ia ^ ib) < 0) + Assert.AreEqual(true, false); + int ulps = abs(ia - ib); + Assert.AreEqual(true, ulps <= maxUlp); + } + else + { + if (a != b && (!isnan(a) || !isnan(b))) + Assert.AreEqual(true, false); + } + } + + public static void AreEqual(double a, double b, double delta = 0.0) + { + Assert.AreEqual(a, b, delta); + } + + public static void AreEqual(double a, double b, int maxUlp, bool signedZeroEqual) + { + if (signedZeroEqual && a == b) + return; + + if (isfinite(a) && isfinite(b)) + { + long la = aslong(a); + long lb = aslong(b); + if ((la ^ lb) < 0) + Assert.AreEqual(true, false); + long ulps = abs(la - lb); + Assert.AreEqual(true, ulps <= maxUlp); + } + else + { + if (a != b && (!isnan(a) || !isnan(b))) + Assert.AreEqual(true, false); + } + } + + + // bool + public static void AreEqual(bool2 a, bool2 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + } + + public static void AreEqual(bool3 a, bool3 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + } + + public static void AreEqual(bool4 a, bool4 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + AreEqual(a.w, b.w); + } + + + public static void AreEqual(bool2x2 a, bool2x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(bool3x2 a, bool3x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(bool4x2 a, bool4x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + + public static void AreEqual(bool2x3 a, bool2x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(bool3x3 a, bool3x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(bool4x3 a, bool4x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + + public static void AreEqual(bool2x4 a, bool2x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(bool3x4 a, bool3x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(bool4x4 a, bool4x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + // int + public static void AreEqual(int2 a, int2 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + } + + public static void AreEqual(int3 a, int3 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + } + + public static void AreEqual(int4 a, int4 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + AreEqual(a.w, b.w); + } + + + public static void AreEqual(int2x2 a, int2x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(int3x2 a, int3x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(int4x2 a, int4x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + + public static void AreEqual(int2x3 a, int2x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(int3x3 a, int3x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(int4x3 a, int4x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + + + public static void AreEqual(int2x4 a, int2x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(int3x4 a, int3x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(int4x4 a, int4x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + + // uint + public static void AreEqual(uint2 a, uint2 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + } + + public static void AreEqual(uint3 a, uint3 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + } + + public static void AreEqual(uint4 a, uint4 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + AreEqual(a.w, b.w); + } + + + public static void AreEqual(uint2x2 a, uint2x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(uint3x2 a, uint3x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(uint4x2 a, uint4x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + + public static void AreEqual(uint2x3 a, uint2x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(uint3x3 a, uint3x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(uint4x3 a, uint4x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + + public static void AreEqual(uint2x4 a, uint2x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(uint3x4 a, uint3x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(uint4x4 a, uint4x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + // float + public static void AreEqual(float2 a, float2 b, float delta = 0.0f) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + } + + public static void AreEqual(float2 a, float2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float3 a, float3 b, float delta = 0.0f) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + AreEqual(a.z, b.z, delta); + } + + public static void AreEqual(float3 a, float3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + AreEqual(a.z, b.z, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float4 a, float4 b, float delta = 0.0f) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + AreEqual(a.z, b.z, delta); + AreEqual(a.w, b.w, delta); + } + + public static void AreEqual(float4 a, float4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + AreEqual(a.z, b.z, maxUlp, signedZeroEqual); + AreEqual(a.w, b.w, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(float2x2 a, float2x2 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(float2x2 a, float2x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float3x2 a, float3x2 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(float3x2 a, float3x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float4x2 a, float4x2 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(float4x2 a, float4x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(float2x3 a, float2x3 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(float2x3 a, float2x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float3x3 a, float3x3 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(float3x3 a, float3x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float4x3 a, float4x3 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(float4x3 a, float4x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(float2x4 a, float2x4 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(float2x4 a, float2x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float3x4 a, float3x4 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(float3x4 a, float3x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float4x4 a, float4x4 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(float4x4 a, float4x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + // double + public static void AreEqual(double2 a, double2 b, double delta = 0.0) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + } + + public static void AreEqual(double2 a, double2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double3 a, double3 b, double delta = 0.0) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + AreEqual(a.z, b.z, delta); + } + + public static void AreEqual(double3 a, double3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + AreEqual(a.z, b.z, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double4 a, double4 b, double delta = 0.0) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + AreEqual(a.z, b.z, delta); + AreEqual(a.w, b.w, delta); + } + + public static void AreEqual(double4 a, double4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + AreEqual(a.z, b.z, maxUlp, signedZeroEqual); + AreEqual(a.w, b.w, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(double2x2 a, double2x2 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(double2x2 a, double2x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double3x2 a, double3x2 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(double3x2 a, double3x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double4x2 a, double4x2 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(double4x2 a, double4x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double2x3 a, double2x3 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(double2x3 a, double2x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double3x3 a, double3x3 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(double3x3 a, double3x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double4x3 a, double4x3 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(double4x3 a, double4x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(double2x4 a, double2x4 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(double2x4 a, double2x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double3x4 a, double3x4 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(double3x4 a, double3x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double4x4 a, double4x4 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(double4x4 a, double4x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(quaternion a, quaternion b, float delta = 0.0f) + { + AreEqual(a.value, b.value, delta); + } + + public static void AreEqual(RigidTransform a, RigidTransform b, float delta = 0.0f) + { + AreEqual(a.rot, b.rot, delta); + AreEqual(a.pos, b.pos, delta); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUtils.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUtils.cs.meta new file mode 100644 index 0000000..5629e13 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/Shared/TestUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cff1594319560b44ba925eb76a273c80 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestMath2.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestMath2.cs new file mode 100644 index 0000000..e5867b6 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestMath2.cs @@ -0,0 +1,63 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public partial class TestMath + { + [TestCompiler] + public unsafe void hash_blob() + { + byte[] testData = { + 0x0d, 0x26, 0x1c, 0xeb, 0x56, 0x3a, 0x9c, 0x18, 0x93, 0xb6, + 0xc1, 0x99, 0x5e, 0x04, 0x92, 0x4f, 0x6e, 0xb7, 0x42, 0x53, + 0x23, 0xcf, 0xe3, 0xbf, 0x16, 0x64, 0x79, 0x08, 0xc1, 0x01, + 0x43, 0x89, 0x73, 0x8f, 0x76, 0x22, 0x0c, 0xee, 0x9b, 0x80, + 0x31, 0x83, 0xce, 0x33, 0x8b, 0xc7, 0x3f, 0x94, 0x33 + }; + + uint[] resultsWithZeroSeed = + { + 0x02cc5d05, 0x376a5b3f, 0x8ae13198, 0xf5b14d72, 0xcc7ddc84, + 0x763e5905, 0x58759392, 0x6bccbd00, 0x7d0f80c8, 0xef01ae48, + 0xe40aa3ad, 0x805e04ad, 0xf98a471c, 0xdd960ac1, 0x76a71750, + 0xd35e2baa, 0x0219f7da, 0xd5bd1fbd, 0x5f28c87e, 0xfe6f7995, + 0x69a43ac5, 0xec1a1a15, 0x7ae9f103, 0x8d04a688, 0xce3b35be, + 0x6b3f040c, 0xd5ea2e8c, 0x6989e79c, 0x8772f1fb, 0x0d7b7bf6, + 0x0796214b, 0x98ea65c4, 0x3884dd82, 0x59632484, 0x91c92822, + 0x72d28404, 0x167061b0, 0x32adc2ef, 0xbac3e672, 0xd39936b7, + 0x94e2c154, 0x8b4ff46c, 0x68976fd4, 0x04bee59a, 0x2ed62c69, + 0xabee69fd, 0xda11e266, 0xcebd9d38, 0x28eea5fd, 0x0210d6ee + }; + + + uint[] resultsWith_0xeb69cf40_seed = + { + 0x12c3b280, 0x9bc1f68d, 0x2f900b51, 0xdb77e20e, 0xf6e8f561, + 0x3f3f72f6, 0x15f9700f, 0x28beb671, 0xceece5e1, 0x7a9b5c81, + 0x62a84642, 0xf75666af, 0x8939f8ca, 0x6b84792b, 0x527ee836, + 0xa0782090, 0xce6b9926, 0xa608c73b, 0xa08ee6a3, 0xab77a6b2, + 0x4e174e68, 0x596f10d5, 0xa14c4d85, 0x509ab88d, 0xd14698a4, + 0xbaad2308, 0xbd04c3df, 0x5715fed1, 0x5cf23a74, 0xd4e844f9, + 0x166dcfba, 0xe3495e37, 0x1b18b2b3, 0x2e8c2aab, 0x40993321, + 0x4b84998a, 0xd062937d, 0x1b2c9f7b, 0x8a613ed3, 0x70d71291, + 0x1af38ea4, 0x460cb7e9, 0xf806e3a9, 0xec9b6b2e, 0x9972a843, + 0x1ff06d2a, 0xe8c5007b, 0x37d8fc40, 0x0dc4f639, 0x36edff4f + }; + fixed (byte* p = testData) + { + for (int i = 0; i < 50; ++i) + { + TestUtils.AreEqual(resultsWithZeroSeed[i], hash(p, i, 0)); + } + + for (int i = 0; i < 50; ++i) + { + TestUtils.AreEqual(resultsWith_0xeb69cf40_seed[i], hash(p, i, 0xeb69cf40)); + } + } + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestMath2.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestMath2.cs.meta new file mode 100644 index 0000000..d2cf65d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestMath2.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0783b280ba38504faba05db473c408b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestRandom.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestRandom.cs new file mode 100644 index 0000000..0a8acd0 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestRandom.cs @@ -0,0 +1,1186 @@ +using NUnit.Framework; +using System; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + class TestRandom + { + // Kolmogorov–Smirnov test on lambda assuming the ideal distribution is uniform [0, 1] + private static void ks_test(Func func, int num_buckets = 256) + { + const int N = 8192; + var histogram = new int[num_buckets]; + + for (int i = 0; i < N; i++) + { + double x = func(); + Assert.GreaterOrEqual(x, 0.0); + Assert.LessOrEqual(x, 1.0); + int bucket = min((int)(x * num_buckets), num_buckets - 1); + + histogram[bucket]++; + } + + double largest_delta = 0.0f; + int accum = 0; + for (int i = 0; i < histogram.Length; i++) + { + accum += histogram[i]; + double current = accum / (double)N; + double target = (double)(i + 1) / histogram.Length; + largest_delta = math.max(largest_delta, math.abs(current - target)); + } + double d = 1.62762 / math.sqrt((double)N); // significance: 0.01 + Assert.Less(largest_delta, d); + } + + private static void ks_test(Func func) + { + ks_test(() => func().x); + ks_test(() => func().y); + } + + // Pearson's product-moment coefficient + private static void r_test(Func func) + { + const int N = 4096; + + double2 sum = 0.0; + var values = new double2[N]; + for(int i = 0; i < N; i++) + { + values[i] = func(); + sum += values[i]; + } + + double2 avg = sum / N; + double var_a = 0.0; + double var_b = 0.0; + double cov = 0.0; + for (int i = 0; i < N; i++) + { + double2 delta = values[i] - avg; + var_a += delta.x * delta.x; + var_b += delta.y * delta.y; + cov += delta.x * delta.y; + } + + double r = cov / sqrt(var_a * var_b); + Assert.Less(abs(r), 0.05); + } + + private static float range_check01(float x) + { + Assert.GreaterOrEqual(x, 0.0f); + Assert.Less(x, 1.0f); + return x; + } + + private static double range_check01(double x) + { + Assert.GreaterOrEqual(x, 0.0); + Assert.Less(x, 1.0); + return x; + } + + private static int range_check(int x, int min, int max) + { + Assert.GreaterOrEqual(x, min); + Assert.Less(x, max); + return x; + } + + private static uint range_check(uint x, uint min, uint max) + { + Assert.GreaterOrEqual(x, min); + Assert.Less(x, max); + return x; + } + + private static float range_check(float x, float min, float max) + { + Assert.GreaterOrEqual(x, min); + Assert.Less(x, max); + return x; + } + + private static double range_check(double x, double min, double max) + { + Assert.GreaterOrEqual(x, min); + Assert.Less(x, max); + return x; + } + + + [TestCompiler] + public static void bool_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => rnd.NextBool() ? 0.75 : 0.25), 2); + } + + [TestCompiler] + public static void bool2_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => rnd.NextBool2().x ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool2().y ? 0.75 : 0.25), 2); + } + + [TestCompiler] + public static void bool2_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool2().xy))); + } + + [TestCompiler] + public static void bool3_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => rnd.NextBool3().x ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool3().y ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool3().z ? 0.75 : 0.25), 2); + } + + [TestCompiler] + public static void bool3_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool3().xy))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool3().xz))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool3().yz))); + } + + [TestCompiler] + public static void bool4_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => rnd.NextBool4().x ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool4().y ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool4().z ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool4().w ? 0.75 : 0.25), 2); + } + + [TestCompiler] + public static void bool4_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().xy))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().xz))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().xw))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().yz))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().yw))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().zw))); + } + + [TestCompiler] + public static void int_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextInt() & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => (((uint)rnd.NextInt() >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + int max = 17; + ks_test((() => (range_check(rnd.NextInt(max), 0, max) + 0.5) / max), max); + } + + [TestCompiler] + public static void int_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int max = 2147483647; + ks_test((() => (range_check(rnd.NextInt(max), 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void int_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + int min = -7; + int max = 17; + int range = max - min; + ks_test((() => (range_check(rnd.NextInt(min, max), min, max) + 0.5 - min) / range), range); + } + + [TestCompiler] + public static void int_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int min = -2147483648; + int max = 2147483647; + long range = (long)max - (long)min; + ks_test((() => (range_check(rnd.NextInt(min, max), min, max) + 0.5 - min) / range), 256); + } + + [TestCompiler] + public static void int2_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextInt2().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt2().y & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int2_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => (((uint)rnd.NextInt2().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt2().y >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int2_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + int max = 2147483647; + ks_test((() => (range_check(rnd.NextInt2(max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextInt2(max).y, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void int2_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + int2 min = int2(-7, 3); + int2 max = int2(17, 14); + int2 range = max - min; + ks_test((() => (range_check(rnd.NextInt2(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), range.x); + ks_test((() => (range_check(rnd.NextInt2(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), range.y); + } + + [TestCompiler] + public static void int2_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int min = -2147483648; + int max = 2147483647; + long range = (long)max - (long)min; + ks_test((() => (range_check(rnd.NextInt2(min, max).x, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt2(min, max).y, min, max) + 0.5 - min) / range), 256); + } + + [TestCompiler] + public static void int2_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextInt2().xy & 255)); + } + + [TestCompiler] + public static void int2_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => ((uint2)rnd.NextInt2().xy >> 24)); + } + + [TestCompiler] + public static void int3_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextInt3().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt3().y & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt3().z & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int3_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => (((uint)rnd.NextInt3().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt3().y >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt3().z >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int3_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + int3 max = int3(13, 17, 19); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).x, 0, max.x) + 0.5) / max.x), max.x); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).y, 0, max.y) + 0.5) / max.y), max.y); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).z, 0, max.z) + 0.5) / max.z), max.z); + } + + [TestCompiler] + public static void int3_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int max = 2147483647; + ks_test((() => ((uint)range_check(rnd.NextInt3(max).x, 0, max) + 0.5) / max), 256); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).y, 0, max) + 0.5) / max), 256); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).z, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void int3_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + int3 min = int3(-7, 3, -10); + int3 max = int3(17, 14, -3); + int3 range = max - min; + ks_test((() => (range_check(rnd.NextInt3(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), range.x); + ks_test((() => (range_check(rnd.NextInt3(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), range.y); + ks_test((() => (range_check(rnd.NextInt3(min, max).z, min.z, max.z) + 0.5 - min.z) / range.z), range.z); + } + + [TestCompiler] + public static void int3_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int min = -2147483648; + int max = 2147483647; + long range = (long)max - (long)min; + ks_test((() => (range_check(rnd.NextInt3(min, max).x, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt3(min, max).y, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt3(min, max).z, min, max) + 0.5 - min) / range), 256); + } + + [TestCompiler] + public static void int3_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextInt3().xy & 255)); + r_test(() => (rnd.NextInt3().xz & 255)); + r_test(() => (rnd.NextInt3().yz & 255)); + } + + [TestCompiler] + public static void int3_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => ((uint2)rnd.NextInt3().xy >> 24)); + r_test(() => ((uint2)rnd.NextInt3().xz >> 24)); + r_test(() => ((uint2)rnd.NextInt3().yz >> 24)); + } + + [TestCompiler] + public static void int4_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextInt4().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt4().y & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt4().z & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt4().w & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int4_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => (((uint)rnd.NextInt4().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt4().y >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt4().z >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt4().w >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int4_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + int4 max = int4(13, 17, 19, 23); + ks_test((() => (range_check(rnd.NextInt4(max).x, 0, max.x) + 0.5) / max.x), max.x); + ks_test((() => (range_check(rnd.NextInt4(max).y, 0, max.y) + 0.5) / max.y), max.y); + ks_test((() => (range_check(rnd.NextInt4(max).z, 0, max.z) + 0.5) / max.z), max.z); + ks_test((() => (range_check(rnd.NextInt4(max).w, 0, max.w) + 0.5) / max.w), max.w); + } + + [TestCompiler] + public static void int4_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int max = 2147483647; + ks_test((() => (range_check(rnd.NextInt4(max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextInt4(max).y, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextInt4(max).z, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextInt4(max).w, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void int4_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + int4 min = int4(-7, 3, -10, 1); + int4 max = int4(17, 14, -3, 111); + int4 range = max - min; + ks_test((() => (range_check(rnd.NextInt4(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), range.x); + ks_test((() => (range_check(rnd.NextInt4(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), range.y); + ks_test((() => (range_check(rnd.NextInt4(min, max).z, min.z, max.z) + 0.5 - min.z) / range.z), range.z); + ks_test((() => (range_check(rnd.NextInt4(min, max).w, min.w, max.w) + 0.5 - min.w) / range.w), range.w); + } + + [TestCompiler] + public static void int4_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int min = -2147483648; + int max = 2147483647; + long range = (long)max - (long)min; + ks_test((() => (range_check(rnd.NextInt4(min, max).x, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt4(min, max).y, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt4(min, max).z, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt4(min, max).w, min, max) + 0.5 - min) / range), 256); + } + + [TestCompiler] + public static void int4_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt4().xy & 255)); + r_test(() => (rnd.NextUInt4().xz & 255)); + r_test(() => (rnd.NextUInt4().xw & 255)); + r_test(() => (rnd.NextUInt4().yz & 255)); + r_test(() => (rnd.NextUInt4().yw & 255)); + r_test(() => (rnd.NextUInt4().zw & 255)); + } + + [TestCompiler] + public static void int4_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => ((uint2)rnd.NextUInt4().xy >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().xz >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().xw >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().yz >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().yw >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().zw >> 24)); + } + + + [TestCompiler] + public static void uint_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt() & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt() >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + uint max = 17; + ks_test((() => (rnd.NextUInt(max) + 0.5) / max), (int)max); + } + + [TestCompiler] + public static void uint_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (rnd.NextUInt(max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + uint min = 3; + uint max = 17; + uint range = max - min; + ks_test((() => (range_check(rnd.NextUInt(min, max), min, max) + 0.5 - min) / range), (int)range); + } + + [TestCompiler] + public static void uint_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (range_check(rnd.NextUInt(0, max), 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint2_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt2().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt2().y & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint2_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt2().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt2().y >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint2_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + uint2 max = uint2(13, 17); + ks_test((() => (rnd.NextUInt2(max).x + 0.5) / max.x), (int)max.x); + ks_test((() => (rnd.NextUInt2(max).y + 0.5) / max.y), (int)max.y); + } + + [TestCompiler] + public static void uint2_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (rnd.NextUInt2(max).x + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt2(max).y + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint2_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + uint2 min = uint2(3, 101); + uint2 max = uint2(17, 117); + uint2 range = max - min; + ks_test((() => (range_check(rnd.NextUInt2(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), (int)range.x); + ks_test((() => (range_check(rnd.NextUInt2(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), (int)range.y); + } + + [TestCompiler] + public static void uint2_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (range_check(rnd.NextUInt2(0, max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt2(0, max).y, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint2_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt2().xy & 255)); + } + + [TestCompiler] + public static void uint2_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt2().xy >> 24)); + } + + [TestCompiler] + public static void uint3_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt3().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt3().y & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt3().z & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint3_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt3().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt3().y >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt3().z >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint3_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + uint3 max = uint3(13, 17, 19); + ks_test((() => (rnd.NextUInt3(max).x + 0.5) / max.x), (int)max.x); + ks_test((() => (rnd.NextUInt3(max).y + 0.5) / max.y), (int)max.y); + ks_test((() => (rnd.NextUInt3(max).z + 0.5) / max.z), (int)max.z); + } + + [TestCompiler] + public static void uint3_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (rnd.NextUInt3(max).x + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt3(max).y + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt3(max).z + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint3_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + uint3 min = uint3(3, 101, 0xFFFFFFF0); + uint3 max = uint3(17, 117, 0xFFFFFFFF); + uint3 range = max - min; + ks_test((() => (range_check(rnd.NextUInt3(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), (int)range.x); + ks_test((() => (range_check(rnd.NextUInt3(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), (int)range.y); + ks_test((() => (range_check(rnd.NextUInt3(min, max).z, min.z, max.z) + 0.5 - min.z) / range.z), (int)range.z); + } + + [TestCompiler] + public static void uint3_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (range_check(rnd.NextUInt3(0, max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt3(0, max).y, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt3(0, max).z, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint3_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt3().xy & 255)); + r_test(() => (rnd.NextUInt3().xz & 255)); + r_test(() => (rnd.NextUInt3().yz & 255)); + } + + [TestCompiler] + public static void uint3_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt3().xy >> 24)); + r_test(() => (rnd.NextUInt3().xz >> 24)); + r_test(() => (rnd.NextUInt3().yz >> 24)); + } + + [TestCompiler] + public static void uint4_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt4().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().y & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().z & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().w & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint4_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt4().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().y >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().z >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().w >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint4_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + uint4 max = uint4(13, 17, 19, 23); + ks_test((() => (rnd.NextUInt4(max).x + 0.5) / max.x), (int)max.x); + ks_test((() => (rnd.NextUInt4(max).y + 0.5) / max.y), (int)max.y); + ks_test((() => (rnd.NextUInt4(max).z + 0.5) / max.z), (int)max.z); + ks_test((() => (rnd.NextUInt4(max).w + 0.5) / max.w), (int)max.w); + } + + [TestCompiler] + public static void uint4_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (rnd.NextUInt4(max).x + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt4(max).y + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt4(max).z + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt4(max).w + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint4_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + uint4 min = uint4(3, 101, 0xFFFFFFF0, 100); + uint4 max = uint4(17, 117, 0xFFFFFFFF, 1000); + uint4 range = max - min; + ks_test((() => (range_check(rnd.NextUInt4(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), (int)range.x); + ks_test((() => (range_check(rnd.NextUInt4(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), (int)range.y); + ks_test((() => (range_check(rnd.NextUInt4(min, max).z, min.z, max.z) + 0.5 - min.z) / range.z), (int)range.z); + ks_test((() => (range_check(rnd.NextUInt4(min, max).w, min.w, max.w) + 0.5 - min.w) / range.w), (int)range.w); + } + + [TestCompiler] + public static void uint4_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (range_check(rnd.NextUInt4(0, max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt4(0, max).y, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt4(0, max).z, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt4(0, max).w, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint4_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt4().xy & 255)); + r_test(() => (rnd.NextUInt4().xz & 255)); + r_test(() => (rnd.NextUInt4().xw & 255)); + r_test(() => (rnd.NextUInt4().yz & 255)); + r_test(() => (rnd.NextUInt4().yw & 255)); + r_test(() => (rnd.NextUInt4().zw & 255)); + } + + [TestCompiler] + public static void uint4_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt4().xy >> 24)); + r_test(() => (rnd.NextUInt4().xz >> 24)); + r_test(() => (rnd.NextUInt4().xw >> 24)); + r_test(() => (rnd.NextUInt4().yz >> 24)); + r_test(() => (rnd.NextUInt4().yw >> 24)); + r_test(() => (rnd.NextUInt4().zw >> 24)); + } + + [TestCompiler] + public static void float_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextFloat()))); + } + + [TestCompiler] + public static void float_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextFloat() * 65536.0f))); + } + + [TestCompiler] + public static void float_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + float max = 16.4f; + ks_test((() => range_check(rnd.NextFloat(max), 0.0f, max) / max)); + } + + [TestCompiler] + public static void float_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + float min = -3.1f; + float max = 16.4f; + float range = max - min; + ks_test((() => (range_check(rnd.NextFloat(min, max), min, max) -min) / range)); + } + + [TestCompiler] + public static void float2_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextFloat2().x))); + ks_test((() => range_check01(rnd.NextFloat2().y))); + } + + [TestCompiler] + public static void float2_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextFloat2().x * 65536.0f))); + ks_test((() => frac(rnd.NextFloat2().y * 65536.0f))); + } + + [TestCompiler] + public static void float2_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + float2 max = float2(16.4f, 1001.33333333f); + ks_test((() => range_check(rnd.NextFloat2(max).x, 0.0f, max.x) / max.x)); + ks_test((() => range_check(rnd.NextFloat2(max).y, 0.0f, max.y) / max.y)); + } + + [TestCompiler] + public static void float2_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + float2 min = float2(-3.1f, 17.1f); + float2 max = float2(16.4f, 1001.33333333f); + float2 range = max - min; + ks_test((() => (range_check(rnd.NextFloat2(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextFloat2(min, max).y, min.y, max.y) - min.y) / range.y)); + } + + [TestCompiler] + public static void float2_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextFloat2())); + } + + [TestCompiler] + public static void float3_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextFloat3().x))); + ks_test((() => range_check01(rnd.NextFloat3().y))); + ks_test((() => range_check01(rnd.NextFloat3().z))); + } + + [TestCompiler] + public static void float3_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextFloat3().x * 65536.0f))); + ks_test((() => frac(rnd.NextFloat3().y * 65536.0f))); + ks_test((() => frac(rnd.NextFloat3().z * 65536.0f))); + } + + [TestCompiler] + public static void float3_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + float3 max = float3(16.4f, 1001.33333333f, 3.121f); + ks_test((() => range_check(rnd.NextFloat3(max).x, 0.0f, max.x) / max.x)); + ks_test((() => range_check(rnd.NextFloat3(max).y, 0.0f, max.y) / max.y)); + ks_test((() => range_check(rnd.NextFloat3(max).z, 0.0f, max.z) / max.z)); + } + + [TestCompiler] + public static void float3_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + float3 min = float3(-3.1f, 17.1f, -0.3f); + float3 max = float3(16.4f, 1001.33333333f, 3.121f); + float3 range = max - min; + ks_test((() => (range_check(rnd.NextFloat3(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextFloat3(min, max).y, min.y, max.y) - min.y) / range.y)); + ks_test((() => (range_check(rnd.NextFloat3(min, max).z, min.z, max.z) - min.z) / range.z)); + } + + [TestCompiler] + public static void float3_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextFloat3().xy)); + r_test((() => rnd.NextFloat3().xz)); + r_test((() => rnd.NextFloat3().yz)); + } + + [TestCompiler] + public static void float4_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextFloat4().x))); + ks_test((() => range_check01(rnd.NextFloat4().y))); + ks_test((() => range_check01(rnd.NextFloat4().z))); + ks_test((() => range_check01(rnd.NextFloat4().w))); + } + + [TestCompiler] + public static void float4_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextFloat4().x * 65536.0f))); + ks_test((() => frac(rnd.NextFloat4().y * 65536.0f))); + ks_test((() => frac(rnd.NextFloat4().z * 65536.0f))); + ks_test((() => frac(rnd.NextFloat4().w * 65536.0f))); + } + + [TestCompiler] + public static void float4_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + float4 max = float4(16.4f, 1001.33333333f, 3.121f, 1.3232e23f); + ks_test((() => range_check(rnd.NextFloat4(max).x, 0.0f, max.x) / max.x)); + ks_test((() => range_check(rnd.NextFloat4(max).y, 0.0f, max.y) / max.y)); + ks_test((() => range_check(rnd.NextFloat4(max).z, 0.0f, max.z) / max.z)); + ks_test((() => range_check(rnd.NextFloat4(max).w, 0.0f, max.w) / max.w)); + } + + [TestCompiler] + public static void float4_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + float4 min = float4(-3.1f, 17.1f, -0.3f, -22.6f); + float4 max = float4(16.4f, 1001.33333333f, 3.121f, 1.3232e23f); + float4 range = max - min; + ks_test((() => (range_check(rnd.NextFloat4(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextFloat4(min, max).y, min.y, max.y) - min.y) / range.y)); + ks_test((() => (range_check(rnd.NextFloat4(min, max).z, min.z, max.z) - min.z) / range.z)); + ks_test((() => (range_check(rnd.NextFloat4(min, max).w, min.w, max.w) - min.w) / range.w)); + } + + [TestCompiler] + public static void float4_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextFloat4().xy)); + r_test((() => rnd.NextFloat4().xz)); + r_test((() => rnd.NextFloat4().xw)); + r_test((() => rnd.NextFloat4().yz)); + r_test((() => rnd.NextFloat4().yw)); + r_test((() => rnd.NextFloat4().zw)); + } + + [TestCompiler] + public static void double_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextDouble()))); + } + + [TestCompiler] + public static void double_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextDouble() * 35184372088832.0))); + } + + [TestCompiler] + public static void double_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + double max = 16.4; + ks_test((() => range_check(rnd.NextDouble(max), 0.0, max) / max)); + } + + [TestCompiler] + public static void double_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + double min = -3.1; + double max = 16.4; + double range = max - min; + ks_test((() => (range_check(rnd.NextDouble(min, max), min, max) - min) / range)); + } + + [TestCompiler] + public static void double2_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextDouble2().x))); + ks_test((() => range_check01(rnd.NextDouble2().y))); + } + + [TestCompiler] + public static void double2_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextDouble2().x * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble2().y * 35184372088832.0))); + } + + [TestCompiler] + public static void double2_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + double2 max = double2(16.4, 1001.33333333); + ks_test((() => range_check(rnd.NextDouble2(max).x, 0.0, max.x) / max.x)); + ks_test((() => range_check(rnd.NextDouble2(max).y, 0.0, max.y) / max.y)); + } + + [TestCompiler] + public static void double2_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + double2 min = double2(-3.1, 17.1); + double2 max = double2(16.4, 1001.33333333); + double2 range = max - min; + ks_test((() => (range_check(rnd.NextDouble2(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextDouble2(min, max).y, min.y, max.y) - min.y) / range.y)); + } + + [TestCompiler] + public static void double2_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextDouble2())); + } + + [TestCompiler] + public static void double3_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextDouble3().x))); + ks_test((() => range_check01(rnd.NextDouble3().y))); + ks_test((() => range_check01(rnd.NextDouble3().z))); + } + + [TestCompiler] + public static void double3_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextDouble3().x * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble3().y * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble3().z * 35184372088832.0))); + } + + [TestCompiler] + public static void double3_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + double3 max = double3(16.4, 1001.33333333, 3.121); + ks_test((() => range_check(rnd.NextDouble3(max).x, 0.0, max.x) / max.x)); + ks_test((() => range_check(rnd.NextDouble3(max).y, 0.0, max.y) / max.y)); + ks_test((() => range_check(rnd.NextDouble3(max).z, 0.0, max.z) / max.z)); + } + + [TestCompiler] + public static void double3_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + double3 min = double3(-3.1, 17.1, -0.3); + double3 max = double3(16.4, 1001.33333333, 3.121); + double3 range = max - min; + ks_test((() => (range_check(rnd.NextDouble3(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextDouble3(min, max).y, min.y, max.y) - min.y) / range.y)); + ks_test((() => (range_check(rnd.NextDouble3(min, max).z, min.z, max.z) - min.z) / range.z)); + } + + + [TestCompiler] + public static void double3_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextDouble3().xy)); + r_test((() => rnd.NextDouble3().xz)); + r_test((() => rnd.NextDouble3().yz)); + } + + [TestCompiler] + public static void double4_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextDouble4().x))); + ks_test((() => range_check01(rnd.NextDouble4().y))); + ks_test((() => range_check01(rnd.NextDouble4().z))); + ks_test((() => range_check01(rnd.NextDouble4().w))); + } + + [TestCompiler] + public static void double4_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextDouble4().x * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble4().y * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble4().z * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble4().w * 35184372088832.0))); + } + + [TestCompiler] + public static void double4_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + double4 max = double4(16.4f, 1001.33333333f, 3.121f, 1.3232e23f); + ks_test((() => range_check(rnd.NextDouble4(max).x, 0.0, max.x) / max.x)); + ks_test((() => range_check(rnd.NextDouble4(max).y, 0.0, max.y) / max.y)); + ks_test((() => range_check(rnd.NextDouble4(max).z, 0.0, max.z) / max.z)); + ks_test((() => range_check(rnd.NextDouble4(max).w, 0.0, max.w) / max.w)); + } + + [TestCompiler] + public static void double4_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + double4 min = double4(-3.1, 17.1, -0.3, -22.6); + double4 max = double4(16.4, 1001.33333333, 3.121, 1.3232e23); + double4 range = max - min; + ks_test((() => (range_check(rnd.NextDouble4(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextDouble4(min, max).y, min.y, max.y) - min.y) / range.y)); + ks_test((() => (range_check(rnd.NextDouble4(min, max).z, min.z, max.z) - min.z) / range.z)); + ks_test((() => (range_check(rnd.NextDouble4(min, max).w, min.w, max.w) - min.w) / range.w)); + } + + [TestCompiler] + public static void double4_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextDouble4().xy)); + r_test((() => rnd.NextDouble4().xz)); + r_test((() => rnd.NextDouble4().xw)); + r_test((() => rnd.NextDouble4().yz)); + r_test((() => rnd.NextDouble4().yw)); + r_test((() => rnd.NextDouble4().zw)); + } + + [TestCompiler] + public static void float2_direction() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => { + float2 dir = rnd.NextFloat2Direction(); + TestUtils.AreEqual(1.0f, length(dir), 0.001f); + return atan2(dir.x, dir.y) / (2.0f * PI) + 0.5f; + }); + } + + [TestCompiler] + public static void double2_direction() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => { + double2 dir = rnd.NextFloat2Direction(); + TestUtils.AreEqual(1.0, length(dir), 0.000001); + return atan2(dir.y, dir.x) / (2.0 * PI_DBL) + 0.5; + }); + } + + + [TestCompiler] + public static void float3_direction() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => + { + float3 dir = rnd.NextFloat3Direction(); + float r = length(dir); + TestUtils.AreEqual(1.0f, r, 0.001f); + + float phi = atan2(dir.y, dir.x) / (2.0f * PI) + 0.5f; + float z = saturate(dir.z / r * 0.5f + 0.5f); + return double2(phi, z); + }); + } + + [TestCompiler] + public static void double3_direction() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => + { + double3 dir = rnd.NextDouble3Direction(); + double r = length(dir); + TestUtils.AreEqual(1.0, r, 0.00001); + + double phi = atan2(dir.y, dir.x) / (2.0 * PI_DBL) + 0.5; + double z = saturate(dir.z / r * 0.5 + 0.5); + return double2(phi, z); + }); + } + + [TestCompiler] + public static void quaternion_rotation() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => + { + quaternion q = rnd.NextQuaternionRotation(); + TestUtils.AreEqual(1.0, dot(q, q), 0.00001f); + Assert.GreaterOrEqual(q.value.w, 0.0f); + float3 p = float3(1.0f, 2.0f, 3.0f); + + float3 qp = mul(q, p); + + TestUtils.AreEqual(length(p), length(qp), 0.0001f); + float r = length(qp); + + double phi = atan2(qp.y, qp.x) / (2.0 * PI_DBL) + 0.5; + double z = saturate(qp.z / r * 0.5 + 0.5); + return double2(phi, z); + }); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestRandom.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestRandom.cs.meta new file mode 100644 index 0000000..6578db1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Tests/TestRandom.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec2e0d8c659a52a45b0bd4f7a3d3981a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Unity.Mathematics.Tests.asmdef b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Unity.Mathematics.Tests.asmdef new file mode 100644 index 0000000..6b374c8 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Unity.Mathematics.Tests.asmdef @@ -0,0 +1,13 @@ +{ + "name": "Unity.Mathematics.Tests", + "optionalUnityReferences": [ + "TestAssemblies" + ], + "references": [ + "Unity.Mathematics" + ], + "includePlatforms": [ + "Editor" + ], + "allowUnsafeCode": true +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Unity.Mathematics.Tests.asmdef.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Unity.Mathematics.Tests.asmdef.meta new file mode 100644 index 0000000..a21fff1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Tests/Unity.Mathematics.Tests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 904d80dccad704a3f95e42bd0ad5d960 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor.meta new file mode 100644 index 0000000..5e615a0 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed3cf288b647446a1a4040049eb363d7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/MatrixDrawer.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/MatrixDrawer.cs new file mode 100644 index 0000000..3f31a0c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/MatrixDrawer.cs @@ -0,0 +1,139 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using UnityEditor; +using UnityEngine; + +namespace Unity.Mathematics.Editor +{ + [CustomPropertyDrawer(typeof(bool2x2)), CustomPropertyDrawer(typeof(bool2x3)), CustomPropertyDrawer(typeof(bool2x4))] + [CustomPropertyDrawer(typeof(bool3x2)), CustomPropertyDrawer(typeof(bool3x3)), CustomPropertyDrawer(typeof(bool3x4))] + [CustomPropertyDrawer(typeof(bool4x2)), CustomPropertyDrawer(typeof(bool4x3)), CustomPropertyDrawer(typeof(bool4x4))] + [CustomPropertyDrawer(typeof(double2x2)), CustomPropertyDrawer(typeof(double2x3)), CustomPropertyDrawer(typeof(double2x4))] + [CustomPropertyDrawer(typeof(double3x2)), CustomPropertyDrawer(typeof(double3x3)), CustomPropertyDrawer(typeof(double3x4))] + [CustomPropertyDrawer(typeof(double4x2)), CustomPropertyDrawer(typeof(double4x3)), CustomPropertyDrawer(typeof(double4x4))] + [CustomPropertyDrawer(typeof(float2x2)), CustomPropertyDrawer(typeof(float2x3)), CustomPropertyDrawer(typeof(float2x4))] + [CustomPropertyDrawer(typeof(float3x2)), CustomPropertyDrawer(typeof(float3x3)), CustomPropertyDrawer(typeof(float3x4))] + [CustomPropertyDrawer(typeof(float4x2)), CustomPropertyDrawer(typeof(float4x3)), CustomPropertyDrawer(typeof(float4x4))] + [CustomPropertyDrawer(typeof(int2x2)), CustomPropertyDrawer(typeof(int2x3)), CustomPropertyDrawer(typeof(int2x4))] + [CustomPropertyDrawer(typeof(int3x2)), CustomPropertyDrawer(typeof(int3x3)), CustomPropertyDrawer(typeof(int3x4))] + [CustomPropertyDrawer(typeof(int4x2)), CustomPropertyDrawer(typeof(int4x3)), CustomPropertyDrawer(typeof(int4x4))] + [CustomPropertyDrawer(typeof(uint2x2)), CustomPropertyDrawer(typeof(uint2x3)), CustomPropertyDrawer(typeof(uint2x4))] + [CustomPropertyDrawer(typeof(uint3x2)), CustomPropertyDrawer(typeof(uint3x3)), CustomPropertyDrawer(typeof(uint3x4))] + [CustomPropertyDrawer(typeof(uint4x2)), CustomPropertyDrawer(typeof(uint4x3)), CustomPropertyDrawer(typeof(uint4x4))] + class MatrixDrawer : PropertyDrawer + { + public override bool CanCacheInspectorGUI(SerializedProperty property) + { + return false; + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + if (!property.isExpanded) + return EditorGUIUtility.singleLineHeight; + var rows = 1 + property.type[property.type.Length - 3] - '0'; + return rows * EditorGUIUtility.singleLineHeight + (rows - 1) * EditorGUIUtility.standardVerticalSpacing; + } + + static ReadOnlyCollection k_ColPropertyPaths = + new ReadOnlyCollection(new[] { "c0", "c1", "c2", "c3" }); + static ReadOnlyCollection k_RowPropertyPaths = + new ReadOnlyCollection(new[] { "x", "y", "z", "w" }); + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + position.height = EditorGUIUtility.singleLineHeight; + EditorGUI.PropertyField(position, property, label, false); + + if (Event.current.type == EventType.ContextClick && position.Contains(Event.current.mousePosition)) + { + DoUtilityMenu(property); + Event.current.Use(); + } + + if (!property.isExpanded) + return; + + var rows = property.type[property.type.Length - 3] - '0'; + var cols = property.type[property.type.Length - 1] - '0'; + + ++EditorGUI.indentLevel; + position = EditorGUI.IndentedRect(position); + --EditorGUI.indentLevel; + + var elementType = property.FindPropertyRelative("c0.x").propertyType; + for (var row = 0; row < rows; ++row) + { + position.y += position.height + EditorGUIUtility.standardVerticalSpacing; + var elementRect = new Rect(position) + { + width = elementType == SerializedPropertyType.Boolean + ? EditorGUIUtility.singleLineHeight + : (position.width - (cols - 1) * EditorGUIUtility.standardVerticalSpacing) / cols + }; + for (var col = 0; col < cols; ++col) + { + EditorGUI.PropertyField( + elementRect, + property.FindPropertyRelative($"{k_ColPropertyPaths[col]}.{k_RowPropertyPaths[row]}"), + GUIContent.none + ); + elementRect.x += elementRect.width + EditorGUIUtility.standardVerticalSpacing; + } + } + } + + Dictionary> k_UtilityValueSetters = + new Dictionary> + { + { SerializedPropertyType.Boolean, (property, b) => property.boolValue = b }, + { SerializedPropertyType.Float, (property, b) => property.floatValue = b ? 1f : 0f }, + { SerializedPropertyType.Integer, (property, b) => property.intValue = b ? 1 : 0 } + }; + + void DoUtilityMenu(SerializedProperty property) + { + var rows = property.type[property.type.Length - 3] - '0'; + var cols = property.type[property.type.Length - 1] - '0'; + var elementType = property.FindPropertyRelative("c0.x").propertyType; + var setValue = k_UtilityValueSetters[elementType]; + var menu = new GenericMenu(); + property = property.Copy(); + menu.AddItem( + EditorGUIUtility.TrTextContent("Set to Zero"), + false, + () => + { + property.serializedObject.Update();; + for (var row = 0; row < rows; ++row) + for (var col = 0; col < cols; ++col) + setValue( + property.FindPropertyRelative($"{k_ColPropertyPaths[col]}.{k_RowPropertyPaths[row]}"), + false + ); + property.serializedObject.ApplyModifiedProperties(); + } + ); + if (rows == cols) + { + menu.AddItem( + EditorGUIUtility.TrTextContent("Reset to Identity"), + false, + () => + { + property.serializedObject.Update(); + for (var row = 0; row < rows; ++row) + for (var col = 0; col < cols; ++col) + setValue( + property.FindPropertyRelative($"{k_ColPropertyPaths[col]}.{k_RowPropertyPaths[row]}"), + row == col + ); + property.serializedObject.ApplyModifiedProperties(); + } + ); + } + menu.ShowAsContext(); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/MatrixDrawer.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/MatrixDrawer.cs.meta new file mode 100644 index 0000000..7daf3ac --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/MatrixDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 407410bec194a4cfe929933685bb80a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PostNormalizedVectorDrawer.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PostNormalizedVectorDrawer.cs new file mode 100644 index 0000000..d4189ed --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PostNormalizedVectorDrawer.cs @@ -0,0 +1,202 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityObject = UnityEngine.Object; + +namespace Unity.Mathematics.Editor +{ + [CustomPropertyDrawer(typeof(PostNormalizeAttribute))] + class PostNormalizedVectorDrawer : PrimitiveVectorDrawer + { + static class Content + { + public static readonly string tooltip = + L10n.Tr("Values you enter will be post-normalized. You will see the normalized result if you change selection and view the values again."); + } + + class VectorPropertyGUIData + { + const int k_MaxElements = 4; + + public readonly bool Valid; + + // parent property + readonly SerializedProperty m_VectorProperty; + // relative paths of element child properties + readonly IReadOnlyList m_ElementPaths; + // the number of element child properties + readonly int m_NumElements; + // per child property; value is null if there are multiple different values + readonly double?[] m_PreNormalizedValues; + // per target; used to revert actual values for each object after displaying pre-normalized values + readonly Dictionary m_PostNormalizedValues = new Dictionary(); + + public VectorPropertyGUIData(SerializedProperty property) + { + m_VectorProperty = property; + var parentPath = m_VectorProperty.propertyPath; + var i = 0; + var elementPaths = new List(k_MaxElements); + var iterator = m_VectorProperty.Copy(); + while (iterator.Next(true) && iterator.propertyPath.StartsWith(parentPath)) + { + if (i >= k_MaxElements || iterator.propertyType != SerializedPropertyType.Float) + return; + elementPaths.Add(iterator.propertyPath.Substring(parentPath.Length + 1)); + i++; + } + + Valid = true; + m_NumElements = elementPaths.Count; + m_ElementPaths = elementPaths; + m_PreNormalizedValues = elementPaths.Select(p => (double?)null).ToArray(); + + UpdatePreNormalizedValues(); + UpdatePostNormalizedValues(); + } + + void UpdatePostNormalizedValues() + { + m_PostNormalizedValues.Clear(); + foreach (var target in m_VectorProperty.serializedObject.targetObjects) + { + var postNormalizedValue = new double4(); + var parentProperty = new SerializedObject(target).FindProperty(m_VectorProperty.propertyPath); + for (var i = 0; i < m_NumElements; ++i) + postNormalizedValue[i] = parentProperty.FindPropertyRelative(m_ElementPaths[i]).doubleValue; + m_PostNormalizedValues[parentProperty] = postNormalizedValue; + } + } + + public void UpdatePreNormalizedValues() + { + for (var i = 0; i < m_NumElements; ++i) + { + var p = m_VectorProperty.FindPropertyRelative(m_ElementPaths[i]); + m_PreNormalizedValues[i] = p.hasMultipleDifferentValues ? (double?)null : p.doubleValue; + } + } + + public void ApplyPreNormalizedValues() + { + m_VectorProperty.serializedObject.ApplyModifiedProperties(); + for (var i = 0; i < m_NumElements; ++i) + { + if (m_PreNormalizedValues[i] != null) + m_VectorProperty.FindPropertyRelative(m_ElementPaths[i]).doubleValue = m_PreNormalizedValues[i].Value; + } + } + + public void UnapplyPreNormalizedValues() + { + foreach (var target in m_PostNormalizedValues) + { + target.Key.serializedObject.Update(); + for (var i = 0; i < m_NumElements; ++i) + { + target.Key.FindPropertyRelative(m_ElementPaths[i]).doubleValue = target.Value[i]; + target.Key.serializedObject.ApplyModifiedProperties(); + } + } + m_VectorProperty.serializedObject.Update(); + } + + public void PostNormalize(Func normalize) + { + m_VectorProperty.serializedObject.ApplyModifiedProperties(); + foreach (var target in m_PostNormalizedValues) + { + target.Key.serializedObject.Update(); + var postNormalizedValue = new double4(); + for (var i = 0; i < m_NumElements; ++i) + postNormalizedValue[i] = target.Key.FindPropertyRelative(m_ElementPaths[i]).doubleValue; + postNormalizedValue = normalize(normalize(postNormalizedValue)); + for (var i = 0; i < m_NumElements; ++i) + target.Key.FindPropertyRelative(m_ElementPaths[i]).doubleValue = postNormalizedValue[i]; + target.Key.serializedObject.ApplyModifiedProperties(); + } + UpdatePostNormalizedValues(); + m_VectorProperty.serializedObject.Update(); + } + + public void RebuildIfDirty() + { + foreach (var target in m_PostNormalizedValues) + { + target.Key.serializedObject.Update(); + for (var i = 0; i < m_NumElements; ++i) + { + var serialized = target.Key.FindPropertyRelative(m_ElementPaths[i]).doubleValue; + if (target.Value[i] != serialized) + { + UpdatePreNormalizedValues(); + UpdatePostNormalizedValues(); + return; + } + } + } + } + } + + Dictionary m_GUIDataPerPropertyPath = new Dictionary(); + + protected virtual SerializedProperty GetVectorProperty(SerializedProperty property) + { + return property; + } + + protected virtual double4 Normalize(double4 value) + { + return math.normalizesafe(value); + } + + VectorPropertyGUIData GetGUIData(SerializedProperty property) + { + VectorPropertyGUIData guiData; + if (!m_GUIDataPerPropertyPath.TryGetValue(property.propertyPath, out guiData)) + { + guiData = new VectorPropertyGUIData(GetVectorProperty(property)); + m_GUIDataPerPropertyPath[property.propertyPath] = guiData; + } + return guiData; + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return GetGUIData(property).Valid ? base.GetPropertyHeight(property, label) : EditorGUIUtility.singleLineHeight; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + var guiData = GetGUIData(property); + if (!guiData.Valid) + { + EditorGUI.HelpBox( + EditorGUI.PrefixLabel(position, label), + L10n.Tr($"{typeof(PostNormalizeAttribute).Name} only works with decimal vector types."), + MessageType.None + ); + return; + } + + if (string.IsNullOrEmpty(label.tooltip)) + label.tooltip = Content.tooltip; + + guiData.RebuildIfDirty(); + guiData.ApplyPreNormalizedValues(); + EditorGUI.BeginChangeCheck(); + base.OnGUI(position, property, label); + if (EditorGUI.EndChangeCheck()) + { + guiData.UpdatePreNormalizedValues(); + guiData.PostNormalize(Normalize); + } + else + { + guiData.UnapplyPreNormalizedValues(); + } + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PostNormalizedVectorDrawer.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PostNormalizedVectorDrawer.cs.meta new file mode 100644 index 0000000..0e7fc53 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PostNormalizedVectorDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c060766caf7a405bb18fa4ba02780ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs new file mode 100644 index 0000000..57b1b89 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs @@ -0,0 +1,77 @@ +using System; +using UnityEditor; +using UnityEngine; + +namespace Unity.Mathematics.Editor +{ + [CustomPropertyDrawer(typeof(bool2)), CustomPropertyDrawer(typeof(bool3)), CustomPropertyDrawer(typeof(bool4))] + [CustomPropertyDrawer(typeof(double2)), CustomPropertyDrawer(typeof(double3)), CustomPropertyDrawer(typeof(double4))] + [CustomPropertyDrawer(typeof(float2)), CustomPropertyDrawer(typeof(float3)), CustomPropertyDrawer(typeof(float4))] + [CustomPropertyDrawer(typeof(int2)), CustomPropertyDrawer(typeof(int3)), CustomPropertyDrawer(typeof(int4))] + [CustomPropertyDrawer(typeof(uint2)), CustomPropertyDrawer(typeof(uint3)), CustomPropertyDrawer(typeof(uint4))] + [CustomPropertyDrawer(typeof(DoNotNormalizeAttribute))] + class PrimitiveVectorDrawer : PropertyDrawer + { + static class Content + { + public static readonly string doNotNormalizeCompatibility = L10n.Tr( + $"{typeof(DoNotNormalizeAttribute).Name} only works with {typeof(quaternion)} and primitive vector types." + ); + public static readonly string doNotNormalizeTooltip = + L10n.Tr("This value is not normalized, which may produce unexpected results."); + + public static readonly GUIContent[] labels2 = { new GUIContent("X"), new GUIContent("Y") }; + public static readonly GUIContent[] labels3 = { new GUIContent("X"), new GUIContent("Y"), new GUIContent("Z") }; + public static readonly GUIContent[] labels4 = { new GUIContent("X"), new GUIContent("Y"), new GUIContent("Z"), new GUIContent("W") }; + } + + public override bool CanCacheInspectorGUI(SerializedProperty property) + { + return false; + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + var height = EditorGUIUtility.singleLineHeight; + if (!EditorGUIUtility.wideMode) + height += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + return height; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + var subLabels = Content.labels4; + var startIter = "x"; + switch (property.type[property.type.Length - 1]) + { + case '2': + subLabels = Content.labels2; + break; + case '3': + subLabels = Content.labels3; + break; + case '4': + subLabels = Content.labels4; + break; + default: + { + if (property.type == nameof(quaternion)) + startIter = "value.x"; + else if (attribute is DoNotNormalizeAttribute) + { + EditorGUI.HelpBox(EditorGUI.PrefixLabel(position, label), Content.doNotNormalizeCompatibility, MessageType.None); + return; + } + break; + } + } + + if (attribute is DoNotNormalizeAttribute && string.IsNullOrEmpty(label.tooltip)) + label.tooltip = Content.doNotNormalizeTooltip; + + EditorGUI.BeginProperty(position, label, property); + EditorGUI.MultiPropertyField(position, subLabels, property.FindPropertyRelative(startIter), label); + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs.meta new file mode 100644 index 0000000..6bd3581 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ae914da3592740a58dd603fcb28b594 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/QuaternionDrawer.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/QuaternionDrawer.cs new file mode 100644 index 0000000..c8bb9a3 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/QuaternionDrawer.cs @@ -0,0 +1,18 @@ +using UnityEditor; + +namespace Unity.Mathematics.Editor +{ + [CustomPropertyDrawer(typeof(quaternion))] + class QuaternionDrawer : PostNormalizedVectorDrawer + { + protected override SerializedProperty GetVectorProperty(SerializedProperty property) + { + return property.FindPropertyRelative("value"); + } + + protected override double4 Normalize(double4 value) + { + return math.normalizesafe(new quaternion((float4)value)).value; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/QuaternionDrawer.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/QuaternionDrawer.cs.meta new file mode 100644 index 0000000..270314d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/QuaternionDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b78c76192c2e742779541501cfe4ca76 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/Unity.Mathematics.Editor.asmdef b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/Unity.Mathematics.Editor.asmdef new file mode 100644 index 0000000..35c38c2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/Unity.Mathematics.Editor.asmdef @@ -0,0 +1,12 @@ +{ + "name": "Unity.Mathematics.Editor", + "references": [ + "Unity.Mathematics" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": true +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/Unity.Mathematics.Editor.asmdef.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/Unity.Mathematics.Editor.asmdef.meta new file mode 100644 index 0000000..fac2dd4 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.Editor/Unity.Mathematics.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 329b4ccd385744985bf3f83cfd77dfe7 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.meta new file mode 100644 index 0000000..ee61441 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b3be5912975a74cc0b42e9039d91daf1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise.meta new file mode 100644 index 0000000..ed25611 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: abc6c021d7cd541b3956a3969c8c3ccb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/LICENSE b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/LICENSE new file mode 100644 index 0000000..fe03f28 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/LICENSE @@ -0,0 +1,20 @@ +Copyright (C) 2011 by Ashima Arts (Simplex noise) +Copyright (C) 2011-2016 by Stefan Gustavson (Classic noise and others) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/LICENSE.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/LICENSE.meta new file mode 100644 index 0000000..fc1c3a7 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e8895079ca68e498482a3075d7e34508 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/README b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/README new file mode 100644 index 0000000..68f441f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/README @@ -0,0 +1,16 @@ +These files contain noise functions that are compatible with all +current versions of GLSL (1.20 and up), and all you need to use them +is provided in the source file. There is no external data, and no +setup procedure. Just cut and paste and call the function. + +GLSL has a very rudimentary linker, so some helper functions are +included in several of the files with the same name. If you want to +use more than one of these functions in the same shader, you may run +into problems with redefinition of the functions mod289() and permute(). +If that happens, just delete any superfluous definitions. + +----- + +Source: https://github.com/ashima/webgl-noise +Changes: + - 10 April 2018, Unity Technologies, Ported to HPC# diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/README.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/README.meta new file mode 100644 index 0000000..16c0ea9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/README.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 16687ba1ea1804a9fb7cb7c2410eab23 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2D.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2D.cs new file mode 100644 index 0000000..564d414 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2D.cs @@ -0,0 +1,58 @@ +// Cellular noise ("Worley noise") in 2D in GLSL. +// Copyright (c) Stefan Gustavson 2011-04-19. All rights reserved. +// This code is released under the conditions of the MIT license. +// See LICENSE file for details. +// https://github.com/stegu/webgl-noise + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + // Cellular noise, returning F1 and F2 in a float2. + // Standard 3x3 search window for good F1 and F2 values + public static float2 cellular(float2 P) + { + const float K = 0.142857142857f; // 1/7 + const float Ko = 0.428571428571f; // 3/7 + const float jitter = 1.0f; // Less gives more regular pattern + + float2 Pi = mod289(floor(P)); + float2 Pf = frac(P); + float3 oi = float3(-1.0f, 0.0f, 1.0f); + float3 of = float3(-0.5f, 0.5f, 1.5f); + float3 px = permute(Pi.x + oi); + float3 p = permute(px.x + Pi.y + oi); // p11, p12, p13 + float3 ox = frac(p * K) - Ko; + float3 oy = mod7(floor(p * K)) * K - Ko; + float3 dx = Pf.x + 0.5f + jitter * ox; + float3 dy = Pf.y - of + jitter * oy; + float3 d1 = dx * dx + dy * dy; // d11, d12 and d13, squared + p = permute(px.y + Pi.y + oi); // p21, p22, p23 + ox = frac(p * K) - Ko; + oy = mod7(floor(p * K)) * K - Ko; + dx = Pf.x - 0.5f + jitter * ox; + dy = Pf.y - of + jitter * oy; + float3 d2 = dx * dx + dy * dy; // d21, d22 and d23, squared + p = permute(px.z + Pi.y + oi); // p31, p32, p33 + ox = frac(p * K) - Ko; + oy = mod7(floor(p * K)) * K - Ko; + dx = Pf.x - 1.5f + jitter * ox; + dy = Pf.y - of + jitter * oy; + float3 d3 = dx * dx + dy * dy; // d31, d32 and d33, squared + // Sort out the two smallest distances (F1, F2) + float3 d1a = min(d1, d2); + d2 = max(d1, d2); // Swap to keep candidates for F2 + d2 = min(d2, d3); // neither F1 nor F2 are now in d3 + d1 = min(d1a, d2); // F1 is now in d1 + d2 = max(d1a, d2); // Swap to keep candidates for F2 + d1.xy = (d1.x < d1.y) ? d1.xy : d1.yx; // Swap if smaller + d1.xz = (d1.x < d1.z) ? d1.xz : d1.zx; // F1 is in d1.x + d1.yz = min(d1.yz, d2.yz); // F2 is now not in d2.yz + d1.y = min(d1.y, d1.z); // nor in d1.z + d1.y = min(d1.y, d2.x); // F2 is in d1.y, we're done. + return sqrt(d1.xy); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2D.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2D.cs.meta new file mode 100644 index 0000000..49ded9e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7bc458fcf5f30484da36c2a11ca0c50a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2.cs new file mode 100644 index 0000000..84d98b9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2.cs @@ -0,0 +1,46 @@ +// Cellular noise ("Worley noise") in 2D in GLSL. +// Copyright (c) Stefan Gustavson 2011-04-19. All rights reserved. +// This code is released under the conditions of the MIT license. +// See LICENSE file for details. +// https://github.com/stegu/webgl-noise + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + // Cellular noise, returning F1 and F2 in a float2. + // Speeded up by umath.sing 2x2 search window instead of 3x3, + // at the expense of some strong pattern artifacts. + // F2 is often wrong and has sharp discontinuities. + // If you need a smooth F2, use the slower 3x3 version. + // F1 is sometimes wrong, too, but OK for most purposes. + public static float2 cellular2x2(float2 P) + { + const float K = 0.142857142857f; // 1/7 + const float K2 = 0.0714285714285f; // K/2 + const float jitter = 0.8f; // jitter 1.0 makes F1 wrong more often + + float2 Pi = mod289(floor(P)); + float2 Pf = frac(P); + float4 Pfx = Pf.x + float4(-0.5f, -1.5f, -0.5f, -1.5f); + float4 Pfy = Pf.y + float4(-0.5f, -0.5f, -1.5f, -1.5f); + float4 p = permute(Pi.x + float4(0.0f, 1.0f, 0.0f, 1.0f)); + p = permute(p + Pi.y + float4(0.0f, 0.0f, 1.0f, 1.0f)); + float4 ox = mod7(p) * K + K2; + float4 oy = mod7(floor(p * K)) * K + K2; + float4 dx = Pfx + jitter * ox; + float4 dy = Pfy + jitter * oy; + float4 d = dx * dx + dy * dy; // d11, d12, d21 and d22, squared + // Sort out the two smallest distances + // Do it right and find both F1 and F2 + d.xy = (d.x < d.y) ? d.xy : d.yx; // Swap if smaller + d.xz = (d.x < d.z) ? d.xz : d.zx; + d.xw = (d.x < d.w) ? d.xw : d.wx; + d.y = min(d.y, d.z); + d.y = min(d.y, d.w); + return sqrt(d.xy); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2.cs.meta new file mode 100644 index 0000000..e00c387 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb26f7539fea841ac9538c01e2c20bc4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2x2.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2x2.cs new file mode 100644 index 0000000..fd1c4f8 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2x2.cs @@ -0,0 +1,65 @@ +// Cellular noise ("Worley noise") in 3D in GLSL. +// Copyright (c) Stefan Gustavson 2011-04-19. All rights reserved. +// This code is released under the conditions of the MIT license. +// See LICENSE file for details. +// https://github.com/stegu/webgl-noise + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + // Cellular noise, returning F1 and F2 in a float2. + // Speeded up by umath.sing 2x2x2 search window instead of 3x3x3, + // at the expense of some pattern artifacts. + // F2 is often wrong and has sharp discontinuities. + // If you need a good F2, use the slower 3x3x3 version. + public static float2 cellular2x2x2(float3 P) + { + const float K = 0.142857142857f; // 1/7 + const float Ko = 0.428571428571f; // 1/2-K/2 + const float K2 = 0.020408163265306f; // 1/(7*7) + const float Kz = 0.166666666667f; // 1/6 + const float Kzo = 0.416666666667f; // 1/2-1/6*2 + const float jitter = 0.8f; // smaller jitter gives less errors in F2 + + float3 Pi = mod289(floor(P)); + float3 Pf = frac(P); + float4 Pfx = Pf.x + float4(0.0f, -1.0f, 0.0f, -1.0f); + float4 Pfy = Pf.y + float4(0.0f, 0.0f, -1.0f, -1.0f); + float4 p = permute(Pi.x + float4(0.0f, 1.0f, 0.0f, 1.0f)); + p = permute(p + Pi.y + float4(0.0f, 0.0f, 1.0f, 1.0f)); + float4 p1 = permute(p + Pi.z); // z+0 + float4 p2 = permute(p + Pi.z + float4(1.0f,1.0f,1.0f,1.0f)); // z+1 + float4 ox1 = frac(p1 * K) - Ko; + float4 oy1 = mod7(floor(p1 * K)) * K - Ko; + float4 oz1 = floor(p1 * K2) * Kz - Kzo; // p1 < 289 guaranteed + float4 ox2 = frac(p2 * K) - Ko; + float4 oy2 = mod7(floor(p2 * K)) * K - Ko; + float4 oz2 = floor(p2 * K2) * Kz - Kzo; + float4 dx1 = Pfx + jitter * ox1; + float4 dy1 = Pfy + jitter * oy1; + float4 dz1 = Pf.z + jitter * oz1; + float4 dx2 = Pfx + jitter * ox2; + float4 dy2 = Pfy + jitter * oy2; + float4 dz2 = Pf.z - 1.0f + jitter * oz2; + float4 d1 = dx1 * dx1 + dy1 * dy1 + dz1 * dz1; // z+0 + float4 d2 = dx2 * dx2 + dy2 * dy2 + dz2 * dz2; // z+1 + + // Sort out the two smallest distances (F1, F2) + + // Do it right and sort out both F1 and F2 + float4 d = min(d1,d2); // F1 is now in d + d2 = max(d1,d2); // Make sure we keep all candidates for F2 + d.xy = (d.x < d.y) ? d.xy : d.yx; // Swap smallest to d.x + d.xz = (d.x < d.z) ? d.xz : d.zx; + d.xw = (d.x < d.w) ? d.xw : d.wx; // F1 is now in d.x + d.yzw = min(d.yzw, d2.yzw); // F2 now not in d2.yzw + d.y = min(d.y, d.z); // nor in d.z + d.y = min(d.y, d.w); // nor in d.w + d.y = min(d.y, d2.x); // F2 is now in d.y + return sqrt(d.xy); // F1 and F2 + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2x2.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2x2.cs.meta new file mode 100644 index 0000000..dd1f77b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular2x2x2.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d0dbb238670f4580aa39c5272c2911c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular3D.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular3D.cs new file mode 100644 index 0000000..2440001 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular3D.cs @@ -0,0 +1,169 @@ +// Cellular noise ("Worley noise") in 3D in GLSL. +// Copyright (c) Stefan Gustavson 2011-04-19. All rights reserved. +// This code is released under the conditions of the MIT license. +// See LICENSE file for details. +// https://github.com/stegu/webgl-noise + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + // Cellular noise, returning F1 and F2 in a float2. + // 3x3x3 search region for good F2 everywhere, but a lot + // slower than the 2x2x2 version. + // The code below is a bit scary even to its author, + // but it has at least half decent performance on a + // math.modern GPU. In any case, it beats any software + // implementation of Worley noise hands down. + + public static float2 cellular(float3 P) + { + const float K = 0.142857142857f; // 1/7 + const float Ko = 0.428571428571f; // 1/2-K/2 + const float K2 = 0.020408163265306f; // 1/(7*7) + const float Kz = 0.166666666667f; // 1/6 + const float Kzo = 0.416666666667f; // 1/2-1/6*2 + const float jitter = 1.0f; // smaller jitter gives more regular pattern + + float3 Pi = mod289(floor(P)); + float3 Pf = frac(P) - 0.5f; + + float3 Pfx = Pf.x + float3(1.0f, 0.0f, -1.0f); + float3 Pfy = Pf.y + float3(1.0f, 0.0f, -1.0f); + float3 Pfz = Pf.z + float3(1.0f, 0.0f, -1.0f); + + float3 p = permute(Pi.x + float3(-1.0f, 0.0f, 1.0f)); + float3 p1 = permute(p + Pi.y - 1.0f); + float3 p2 = permute(p + Pi.y); + float3 p3 = permute(p + Pi.y + 1.0f); + + float3 p11 = permute(p1 + Pi.z - 1.0f); + float3 p12 = permute(p1 + Pi.z); + float3 p13 = permute(p1 + Pi.z + 1.0f); + + float3 p21 = permute(p2 + Pi.z - 1.0f); + float3 p22 = permute(p2 + Pi.z); + float3 p23 = permute(p2 + Pi.z + 1.0f); + + float3 p31 = permute(p3 + Pi.z - 1.0f); + float3 p32 = permute(p3 + Pi.z); + float3 p33 = permute(p3 + Pi.z + 1.0f); + + float3 ox11 = frac(p11 * K) - Ko; + float3 oy11 = mod7(floor(p11 * K)) * K - Ko; + float3 oz11 = floor(p11 * K2) * Kz - Kzo; // p11 < 289 guaranteed + + float3 ox12 = frac(p12 * K) - Ko; + float3 oy12 = mod7(floor(p12 * K)) * K - Ko; + float3 oz12 = floor(p12 * K2) * Kz - Kzo; + + float3 ox13 = frac(p13 * K) - Ko; + float3 oy13 = mod7(floor(p13 * K)) * K - Ko; + float3 oz13 = floor(p13 * K2) * Kz - Kzo; + + float3 ox21 = frac(p21 * K) - Ko; + float3 oy21 = mod7(floor(p21 * K)) * K - Ko; + float3 oz21 = floor(p21 * K2) * Kz - Kzo; + + float3 ox22 = frac(p22 * K) - Ko; + float3 oy22 = mod7(floor(p22 * K)) * K - Ko; + float3 oz22 = floor(p22 * K2) * Kz - Kzo; + + float3 ox23 = frac(p23 * K) - Ko; + float3 oy23 = mod7(floor(p23 * K)) * K - Ko; + float3 oz23 = floor(p23 * K2) * Kz - Kzo; + + float3 ox31 = frac(p31 * K) - Ko; + float3 oy31 = mod7(floor(p31 * K)) * K - Ko; + float3 oz31 = floor(p31 * K2) * Kz - Kzo; + + float3 ox32 = frac(p32 * K) - Ko; + float3 oy32 = mod7(floor(p32 * K)) * K - Ko; + float3 oz32 = floor(p32 * K2) * Kz - Kzo; + + float3 ox33 = frac(p33 * K) - Ko; + float3 oy33 = mod7(floor(p33 * K)) * K - Ko; + float3 oz33 = floor(p33 * K2) * Kz - Kzo; + + float3 dx11 = Pfx + jitter * ox11; + float3 dy11 = Pfy.x + jitter * oy11; + float3 dz11 = Pfz.x + jitter * oz11; + + float3 dx12 = Pfx + jitter * ox12; + float3 dy12 = Pfy.x + jitter * oy12; + float3 dz12 = Pfz.y + jitter * oz12; + + float3 dx13 = Pfx + jitter * ox13; + float3 dy13 = Pfy.x + jitter * oy13; + float3 dz13 = Pfz.z + jitter * oz13; + + float3 dx21 = Pfx + jitter * ox21; + float3 dy21 = Pfy.y + jitter * oy21; + float3 dz21 = Pfz.x + jitter * oz21; + + float3 dx22 = Pfx + jitter * ox22; + float3 dy22 = Pfy.y + jitter * oy22; + float3 dz22 = Pfz.y + jitter * oz22; + + float3 dx23 = Pfx + jitter * ox23; + float3 dy23 = Pfy.y + jitter * oy23; + float3 dz23 = Pfz.z + jitter * oz23; + + float3 dx31 = Pfx + jitter * ox31; + float3 dy31 = Pfy.z + jitter * oy31; + float3 dz31 = Pfz.x + jitter * oz31; + + float3 dx32 = Pfx + jitter * ox32; + float3 dy32 = Pfy.z + jitter * oy32; + float3 dz32 = Pfz.y + jitter * oz32; + + float3 dx33 = Pfx + jitter * ox33; + float3 dy33 = Pfy.z + jitter * oy33; + float3 dz33 = Pfz.z + jitter * oz33; + + float3 d11 = dx11 * dx11 + dy11 * dy11 + dz11 * dz11; + float3 d12 = dx12 * dx12 + dy12 * dy12 + dz12 * dz12; + float3 d13 = dx13 * dx13 + dy13 * dy13 + dz13 * dz13; + float3 d21 = dx21 * dx21 + dy21 * dy21 + dz21 * dz21; + float3 d22 = dx22 * dx22 + dy22 * dy22 + dz22 * dz22; + float3 d23 = dx23 * dx23 + dy23 * dy23 + dz23 * dz23; + float3 d31 = dx31 * dx31 + dy31 * dy31 + dz31 * dz31; + float3 d32 = dx32 * dx32 + dy32 * dy32 + dz32 * dz32; + float3 d33 = dx33 * dx33 + dy33 * dy33 + dz33 * dz33; + + // Sort out the two smallest distances (F1, F2) + // Do it right and sort out both F1 and F2 + float3 d1a = min(d11, d12); + d12 = max(d11, d12); + d11 = min(d1a, d13); // Smallest now not in d12 or d13 + d13 = max(d1a, d13); + d12 = min(d12, d13); // 2nd smallest now not in d13 + float3 d2a = min(d21, d22); + d22 = max(d21, d22); + d21 = min(d2a, d23); // Smallest now not in d22 or d23 + d23 = max(d2a, d23); + d22 = min(d22, d23); // 2nd smallest now not in d23 + float3 d3a = min(d31, d32); + d32 = max(d31, d32); + d31 = min(d3a, d33); // Smallest now not in d32 or d33 + d33 = max(d3a, d33); + d32 = min(d32, d33); // 2nd smallest now not in d33 + float3 da = min(d11, d21); + d21 = max(d11, d21); + d11 = min(da, d31); // Smallest now in d11 + d31 = max(da, d31); // 2nd smallest now not in d31 + d11.xy = (d11.x < d11.y) ? d11.xy : d11.yx; + d11.xz = (d11.x < d11.z) ? d11.xz : d11.zx; // d11.x now smallest + d12 = min(d12, d21); // 2nd smallest now not in d21 + d12 = min(d12, d22); // nor in d22 + d12 = min(d12, d31); // nor in d31 + d12 = min(d12, d32); // nor in d32 + d11.yz = min(d11.yz, d12.xy); // nor in d12.yz + d11.y = min(d11.y, d12.z); // Only two more to go + d11.y = min(d11.y, d11.z); // Done! (Phew!) + return sqrt(d11.xy); // F1, F2 + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular3D.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular3D.cs.meta new file mode 100644 index 0000000..5192d11 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/cellular3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6cea5378726344e72bf53fa723c6c3fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise2D.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise2D.cs new file mode 100644 index 0000000..fa4712a --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise2D.cs @@ -0,0 +1,102 @@ +// +// GLSL textureless classic 2D noise "cnoise", +// with an RSL-style periodic variant "pnoise". +// Author: Stefan Gustavson (stefan.gustavson@liu.se) +// Version: 2011-08-22 +// +// Many thanks to Ian McEwan of Ashima Arts for the +// ideas for permutation and gradient selection. +// +// Copyright (c) 2011 Stefan Gustavson. All rights reserved. +// Distributed under the MIT license. See LICENSE file. +// https://github.com/stegu/webgl-noise +// + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + // Classic Perlin noise + public static float cnoise(float2 P) + { + float4 Pi = floor(P.xyxy) + float4(0.0f, 0.0f, 1.0f, 1.0f); + float4 Pf = frac(P.xyxy) - float4(0.0f, 0.0f, 1.0f, 1.0f); + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + + float4 i = permute(permute(ix) + iy); + + float4 gx = frac(i * (1.0f / 41.0f)) * 2.0f - 1.0f; + float4 gy = abs(gx) - 0.5f; + float4 tx = floor(gx + 0.5f); + gx = gx - tx; + + float2 g00 = float2(gx.x, gy.x); + float2 g10 = float2(gx.y, gy.y); + float2 g01 = float2(gx.z, gy.z); + float2 g11 = float2(gx.w, gy.w); + + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3f * n_xy; + } + + // Classic Perlin noise, periodic variant + public static float pnoise(float2 P, float2 rep) + { + float4 Pi = floor(P.xyxy) + float4(0.0f, 0.0f, 1.0f, 1.0f); + float4 Pf = frac(P.xyxy) - float4(0.0f, 0.0f, 1.0f, 1.0f); + Pi = fmod(Pi, rep.xyxy); // To create noise with explicit period + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + + float4 i = permute(permute(ix) + iy); + + float4 gx = frac(i * (1.0f / 41.0f)) * 2.0f - 1.0f; + float4 gy = abs(gx) - 0.5f; + float4 tx = floor(gx + 0.5f); + gx = gx - tx; + + float2 g00 = float2(gx.x, gy.x); + float2 g10 = float2(gx.y, gy.y); + float2 g01 = float2(gx.z, gy.z); + float2 g11 = float2(gx.w, gy.w); + + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3f * n_xy; + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise2D.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise2D.cs.meta new file mode 100644 index 0000000..2e5c630 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cdfa008cc8af3440983f8c7beef680b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise3D.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise3D.cs new file mode 100644 index 0000000..9015e6b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise3D.cs @@ -0,0 +1,161 @@ +// +// GLSL textureless classic 3D noise "cnoise", +// with an RSL-style periodic variant "pnoise". +// Author: Stefan Gustavson (stefan.gustavson@liu.se) +// Version: 2011-10-11 +// +// Many thanks to Ian McEwan of Ashima Arts for the +// ideas for permutation and gradient selection. +// +// Copyright (c) 2011 Stefan Gustavson. All rights reserved. +// Distributed under the MIT license. See LICENSE file. +// https://github.com/stegu/webgl-noise +// + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + // Classic Perlin noise + public static float cnoise(float3 P) + { + float3 Pi0 = floor(P); // Integer part for indexing + float3 Pi1 = Pi0 + float3(1.0f); // Integer part + 1 + Pi0 = mod289(Pi0); + Pi1 = mod289(Pi1); + float3 Pf0 = frac(P); // Fractional part for interpolation + float3 Pf1 = Pf0 - float3(1.0f); // Fractional part - 1.0 + float4 ix = float4(Pi0.x, Pi1.x, Pi0.x, Pi1.x); + float4 iy = float4(Pi0.yy, Pi1.yy); + float4 iz0 = Pi0.zzzz; + float4 iz1 = Pi1.zzzz; + + float4 ixy = permute(permute(ix) + iy); + float4 ixy0 = permute(ixy + iz0); + float4 ixy1 = permute(ixy + iz1); + + float4 gx0 = ixy0 * (1.0f / 7.0f); + float4 gy0 = frac(floor(gx0) * (1.0f / 7.0f)) - 0.5f; + gx0 = frac(gx0); + float4 gz0 = float4(0.5f) - abs(gx0) - abs(gy0); + float4 sz0 = step(gz0, float4(0.0f)); + gx0 -= sz0 * (step(0.0f, gx0) - 0.5f); + gy0 -= sz0 * (step(0.0f, gy0) - 0.5f); + + float4 gx1 = ixy1 * (1.0f / 7.0f); + float4 gy1 = frac(floor(gx1) * (1.0f / 7.0f)) - 0.5f; + gx1 = frac(gx1); + float4 gz1 = float4(0.5f) - abs(gx1) - abs(gy1); + float4 sz1 = step(gz1, float4(0.0f)); + gx1 -= sz1 * (step(0.0f, gx1) - 0.5f); + gy1 -= sz1 * (step(0.0f, gy1) - 0.5f); + + float3 g000 = float3(gx0.x, gy0.x, gz0.x); + float3 g100 = float3(gx0.y, gy0.y, gz0.y); + float3 g010 = float3(gx0.z, gy0.z, gz0.z); + float3 g110 = float3(gx0.w, gy0.w, gz0.w); + float3 g001 = float3(gx1.x, gy1.x, gz1.x); + float3 g101 = float3(gx1.y, gy1.y, gz1.y); + float3 g011 = float3(gx1.z, gy1.z, gz1.z); + float3 g111 = float3(gx1.w, gy1.w, gz1.w); + + float4 norm0 = taylorInvSqrt(float4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110))); + g000 *= norm0.x; + g010 *= norm0.y; + g100 *= norm0.z; + g110 *= norm0.w; + float4 norm1 = taylorInvSqrt(float4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111))); + g001 *= norm1.x; + g011 *= norm1.y; + g101 *= norm1.z; + g111 *= norm1.w; + + float n000 = dot(g000, Pf0); + float n100 = dot(g100, float3(Pf1.x, Pf0.yz)); + float n010 = dot(g010, float3(Pf0.x, Pf1.y, Pf0.z)); + float n110 = dot(g110, float3(Pf1.xy, Pf0.z)); + float n001 = dot(g001, float3(Pf0.xy, Pf1.z)); + float n101 = dot(g101, float3(Pf1.x, Pf0.y, Pf1.z)); + float n011 = dot(g011, float3(Pf0.x, Pf1.yz)); + float n111 = dot(g111, Pf1); + + float3 fade_xyz = fade(Pf0); + float4 n_z = lerp(float4(n000, n100, n010, n110), float4(n001, n101, n011, n111), fade_xyz.z); + float2 n_yz = lerp(n_z.xy, n_z.zw, fade_xyz.y); + float n_xyz = lerp(n_yz.x, n_yz.y, fade_xyz.x); + return 2.2f * n_xyz; + } + + // Classic Perlin noise, periodic variant + public static float pnoise(float3 P, float3 rep) + { + float3 Pi0 = fmod(floor(P), rep); // Integer part, math.modulo period + float3 Pi1 = fmod(Pi0 + float3(1.0f), rep); // Integer part + 1, math.mod period + Pi0 = mod289(Pi0); + Pi1 = mod289(Pi1); + float3 Pf0 = frac(P); // Fractional part for interpolation + float3 Pf1 = Pf0 - float3(1.0f); // Fractional part - 1.0 + float4 ix = float4(Pi0.x, Pi1.x, Pi0.x, Pi1.x); + float4 iy = float4(Pi0.yy, Pi1.yy); + float4 iz0 = Pi0.zzzz; + float4 iz1 = Pi1.zzzz; + + float4 ixy = permute(permute(ix) + iy); + float4 ixy0 = permute(ixy + iz0); + float4 ixy1 = permute(ixy + iz1); + + float4 gx0 = ixy0 * (1.0f / 7.0f); + float4 gy0 = frac(floor(gx0) * (1.0f / 7.0f)) - 0.5f; + gx0 = frac(gx0); + float4 gz0 = float4(0.5f) - abs(gx0) - abs(gy0); + float4 sz0 = step(gz0, float4(0.0f)); + gx0 -= sz0 * (step(0.0f, gx0) - 0.5f); + gy0 -= sz0 * (step(0.0f, gy0) - 0.5f); + + float4 gx1 = ixy1 * (1.0f / 7.0f); + float4 gy1 = frac(floor(gx1) * (1.0f / 7.0f)) - 0.5f; + gx1 = frac(gx1); + float4 gz1 = float4(0.5f) - abs(gx1) - abs(gy1); + float4 sz1 = step(gz1, float4(0.0f)); + gx1 -= sz1 * (step(0.0f, gx1) - 0.5f); + gy1 -= sz1 * (step(0.0f, gy1) - 0.5f); + + float3 g000 = float3(gx0.x, gy0.x, gz0.x); + float3 g100 = float3(gx0.y, gy0.y, gz0.y); + float3 g010 = float3(gx0.z, gy0.z, gz0.z); + float3 g110 = float3(gx0.w, gy0.w, gz0.w); + float3 g001 = float3(gx1.x, gy1.x, gz1.x); + float3 g101 = float3(gx1.y, gy1.y, gz1.y); + float3 g011 = float3(gx1.z, gy1.z, gz1.z); + float3 g111 = float3(gx1.w, gy1.w, gz1.w); + + float4 norm0 = taylorInvSqrt(float4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110))); + g000 *= norm0.x; + g010 *= norm0.y; + g100 *= norm0.z; + g110 *= norm0.w; + float4 norm1 = taylorInvSqrt(float4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111))); + g001 *= norm1.x; + g011 *= norm1.y; + g101 *= norm1.z; + g111 *= norm1.w; + + float n000 = dot(g000, Pf0); + float n100 = dot(g100, float3(Pf1.x, Pf0.yz)); + float n010 = dot(g010, float3(Pf0.x, Pf1.y, Pf0.z)); + float n110 = dot(g110, float3(Pf1.xy, Pf0.z)); + float n001 = dot(g001, float3(Pf0.xy, Pf1.z)); + float n101 = dot(g101, float3(Pf1.x, Pf0.y, Pf1.z)); + float n011 = dot(g011, float3(Pf0.x, Pf1.yz)); + float n111 = dot(g111, Pf1); + + float3 fade_xyz = fade(Pf0); + float4 n_z = lerp(float4(n000, n100, n010, n110), float4(n001, n101, n011, n111), fade_xyz.z); + float2 n_yz = lerp(n_z.xy, n_z.zw, fade_xyz.y); + float n_xyz = lerp(n_yz.x, n_yz.y, fade_xyz.x); + return 2.2f * n_xyz; + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise3D.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise3D.cs.meta new file mode 100644 index 0000000..88def9a --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ab5efd242473d4ce9b3d98450681549c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise4D.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise4D.cs new file mode 100644 index 0000000..57a9116 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise4D.cs @@ -0,0 +1,291 @@ +// +// GLSL textureless classic 4D noise "cnoise", +// with an RSL-style periodic variant "pnoise". +// Author: Stefan Gustavson (stefan.gustavson@liu.se) +// Version: 2011-08-22 +// +// Many thanks to Ian McEwan of Ashima Arts for the +// ideas for permutation and gradient selection. +// +// Copyright (c) 2011 Stefan Gustavson. All rights reserved. +// Distributed under the MIT license. See LICENSE file. +// https://github.com/stegu/webgl-noise +// + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + // Classic Perlin noise + public static float cnoise(float4 P) + { + float4 Pi0 = floor(P); // Integer part for indexing + float4 Pi1 = Pi0 + 1.0f; // Integer part + 1 + Pi0 = mod289(Pi0); + Pi1 = mod289(Pi1); + float4 Pf0 = frac(P); // Fractional part for interpolation + float4 Pf1 = Pf0 - 1.0f; // Fractional part - 1.0 + float4 ix = float4(Pi0.x, Pi1.x, Pi0.x, Pi1.x); + float4 iy = float4(Pi0.yy, Pi1.yy); + float4 iz0 = float4(Pi0.zzzz); + float4 iz1 = float4(Pi1.zzzz); + float4 iw0 = float4(Pi0.wwww); + float4 iw1 = float4(Pi1.wwww); + + float4 ixy = permute(permute(ix) + iy); + float4 ixy0 = permute(ixy + iz0); + float4 ixy1 = permute(ixy + iz1); + float4 ixy00 = permute(ixy0 + iw0); + float4 ixy01 = permute(ixy0 + iw1); + float4 ixy10 = permute(ixy1 + iw0); + float4 ixy11 = permute(ixy1 + iw1); + + float4 gx00 = ixy00 * (1.0f / 7.0f); + float4 gy00 = floor(gx00) * (1.0f / 7.0f); + float4 gz00 = floor(gy00) * (1.0f / 6.0f); + gx00 = frac(gx00) - 0.5f; + gy00 = frac(gy00) - 0.5f; + gz00 = frac(gz00) - 0.5f; + float4 gw00 = float4(0.75f) - abs(gx00) - abs(gy00) - abs(gz00); + float4 sw00 = step(gw00, float4(0.0f)); + gx00 -= sw00 * (step(0.0f, gx00) - 0.5f); + gy00 -= sw00 * (step(0.0f, gy00) - 0.5f); + + float4 gx01 = ixy01 * (1.0f / 7.0f); + float4 gy01 = floor(gx01) * (1.0f / 7.0f); + float4 gz01 = floor(gy01) * (1.0f / 6.0f); + gx01 = frac(gx01) - 0.5f; + gy01 = frac(gy01) - 0.5f; + gz01 = frac(gz01) - 0.5f; + float4 gw01 = float4(0.75f) - abs(gx01) - abs(gy01) - abs(gz01); + float4 sw01 = step(gw01, float4(0.0f)); + gx01 -= sw01 * (step(0.0f, gx01) - 0.5f); + gy01 -= sw01 * (step(0.0f, gy01) - 0.5f); + + float4 gx10 = ixy10 * (1.0f / 7.0f); + float4 gy10 = floor(gx10) * (1.0f / 7.0f); + float4 gz10 = floor(gy10) * (1.0f / 6.0f); + gx10 = frac(gx10) - 0.5f; + gy10 = frac(gy10) - 0.5f; + gz10 = frac(gz10) - 0.5f; + float4 gw10 = float4(0.75f) - abs(gx10) - abs(gy10) - abs(gz10); + float4 sw10 = step(gw10, float4(0.0f)); + gx10 -= sw10 * (step(0.0f, gx10) - 0.5f); + gy10 -= sw10 * (step(0.0f, gy10) - 0.5f); + + float4 gx11 = ixy11 * (1.0f / 7.0f); + float4 gy11 = floor(gx11) * (1.0f / 7.0f); + float4 gz11 = floor(gy11) * (1.0f / 6.0f); + gx11 = frac(gx11) - 0.5f; + gy11 = frac(gy11) - 0.5f; + gz11 = frac(gz11) - 0.5f; + float4 gw11 = float4(0.75f) - abs(gx11) - abs(gy11) - abs(gz11); + float4 sw11 = step(gw11, float4(0.0f)); + gx11 -= sw11 * (step(0.0f, gx11) - 0.5f); + gy11 -= sw11 * (step(0.0f, gy11) - 0.5f); + + float4 g0000 = float4(gx00.x, gy00.x, gz00.x, gw00.x); + float4 g1000 = float4(gx00.y, gy00.y, gz00.y, gw00.y); + float4 g0100 = float4(gx00.z, gy00.z, gz00.z, gw00.z); + float4 g1100 = float4(gx00.w, gy00.w, gz00.w, gw00.w); + float4 g0010 = float4(gx10.x, gy10.x, gz10.x, gw10.x); + float4 g1010 = float4(gx10.y, gy10.y, gz10.y, gw10.y); + float4 g0110 = float4(gx10.z, gy10.z, gz10.z, gw10.z); + float4 g1110 = float4(gx10.w, gy10.w, gz10.w, gw10.w); + float4 g0001 = float4(gx01.x, gy01.x, gz01.x, gw01.x); + float4 g1001 = float4(gx01.y, gy01.y, gz01.y, gw01.y); + float4 g0101 = float4(gx01.z, gy01.z, gz01.z, gw01.z); + float4 g1101 = float4(gx01.w, gy01.w, gz01.w, gw01.w); + float4 g0011 = float4(gx11.x, gy11.x, gz11.x, gw11.x); + float4 g1011 = float4(gx11.y, gy11.y, gz11.y, gw11.y); + float4 g0111 = float4(gx11.z, gy11.z, gz11.z, gw11.z); + float4 g1111 = float4(gx11.w, gy11.w, gz11.w, gw11.w); + + float4 norm00 = taylorInvSqrt(float4(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100))); + g0000 *= norm00.x; + g0100 *= norm00.y; + g1000 *= norm00.z; + g1100 *= norm00.w; + + float4 norm01 = taylorInvSqrt(float4(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101))); + g0001 *= norm01.x; + g0101 *= norm01.y; + g1001 *= norm01.z; + g1101 *= norm01.w; + + float4 norm10 = taylorInvSqrt(float4(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110))); + g0010 *= norm10.x; + g0110 *= norm10.y; + g1010 *= norm10.z; + g1110 *= norm10.w; + + float4 norm11 = taylorInvSqrt(float4(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111))); + g0011 *= norm11.x; + g0111 *= norm11.y; + g1011 *= norm11.z; + g1111 *= norm11.w; + + float n0000 = dot(g0000, Pf0); + float n1000 = dot(g1000, float4(Pf1.x, Pf0.yzw)); + float n0100 = dot(g0100, float4(Pf0.x, Pf1.y, Pf0.zw)); + float n1100 = dot(g1100, float4(Pf1.xy, Pf0.zw)); + float n0010 = dot(g0010, float4(Pf0.xy, Pf1.z, Pf0.w)); + float n1010 = dot(g1010, float4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)); + float n0110 = dot(g0110, float4(Pf0.x, Pf1.yz, Pf0.w)); + float n1110 = dot(g1110, float4(Pf1.xyz, Pf0.w)); + float n0001 = dot(g0001, float4(Pf0.xyz, Pf1.w)); + float n1001 = dot(g1001, float4(Pf1.x, Pf0.yz, Pf1.w)); + float n0101 = dot(g0101, float4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)); + float n1101 = dot(g1101, float4(Pf1.xy, Pf0.z, Pf1.w)); + float n0011 = dot(g0011, float4(Pf0.xy, Pf1.zw)); + float n1011 = dot(g1011, float4(Pf1.x, Pf0.y, Pf1.zw)); + float n0111 = dot(g0111, float4(Pf0.x, Pf1.yzw)); + float n1111 = dot(g1111, Pf1); + + float4 fade_xyzw = fade(Pf0); + float4 n_0w = lerp(float4(n0000, n1000, n0100, n1100), float4(n0001, n1001, n0101, n1101), fade_xyzw.w); + float4 n_1w = lerp(float4(n0010, n1010, n0110, n1110), float4(n0011, n1011, n0111, n1111), fade_xyzw.w); + float4 n_zw = lerp(n_0w, n_1w, fade_xyzw.z); + float2 n_yzw = lerp(n_zw.xy, n_zw.zw, fade_xyzw.y); + float n_xyzw = lerp(n_yzw.x, n_yzw.y, fade_xyzw.x); + return 2.2f * n_xyzw; + } + + // Classic Perlin noise, periodic version + public static float pnoise(float4 P, float4 rep) + { + float4 Pi0 = fmod(floor(P), rep); // Integer part math.modulo rep + float4 Pi1 = fmod(Pi0 + 1.0f, rep); // Integer part + 1 math.mod rep + Pi0 = mod289(Pi0); + Pi1 = mod289(Pi1); + float4 Pf0 = frac(P); // Fractional part for interpolation + float4 Pf1 = Pf0 - 1.0f; // Fractional part - 1.0 + float4 ix = float4(Pi0.x, Pi1.x, Pi0.x, Pi1.x); + float4 iy = float4(Pi0.yy, Pi1.yy); + float4 iz0 = float4(Pi0.zzzz); + float4 iz1 = float4(Pi1.zzzz); + float4 iw0 = float4(Pi0.wwww); + float4 iw1 = float4(Pi1.wwww); + + float4 ixy = permute(permute(ix) + iy); + float4 ixy0 = permute(ixy + iz0); + float4 ixy1 = permute(ixy + iz1); + float4 ixy00 = permute(ixy0 + iw0); + float4 ixy01 = permute(ixy0 + iw1); + float4 ixy10 = permute(ixy1 + iw0); + float4 ixy11 = permute(ixy1 + iw1); + + float4 gx00 = ixy00 * (1.0f / 7.0f); + float4 gy00 = floor(gx00) * (1.0f / 7.0f); + float4 gz00 = floor(gy00) * (1.0f / 6.0f); + gx00 = frac(gx00) - 0.5f; + gy00 = frac(gy00) - 0.5f; + gz00 = frac(gz00) - 0.5f; + float4 gw00 = float4(0.75f) - abs(gx00) - abs(gy00) - abs(gz00); + float4 sw00 = step(gw00, float4(0.0f)); + gx00 -= sw00 * (step(0.0f, gx00) - 0.5f); + gy00 -= sw00 * (step(0.0f, gy00) - 0.5f); + + float4 gx01 = ixy01 * (1.0f / 7.0f); + float4 gy01 = floor(gx01) * (1.0f / 7.0f); + float4 gz01 = floor(gy01) * (1.0f / 6.0f); + gx01 = frac(gx01) - 0.5f; + gy01 = frac(gy01) - 0.5f; + gz01 = frac(gz01) - 0.5f; + float4 gw01 = float4(0.75f) - abs(gx01) - abs(gy01) - abs(gz01); + float4 sw01 = step(gw01, float4(0.0f)); + gx01 -= sw01 * (step(0.0f, gx01) - 0.5f); + gy01 -= sw01 * (step(0.0f, gy01) - 0.5f); + + float4 gx10 = ixy10 * (1.0f / 7.0f); + float4 gy10 = floor(gx10) * (1.0f / 7.0f); + float4 gz10 = floor(gy10) * (1.0f / 6.0f); + gx10 = frac(gx10) - 0.5f; + gy10 = frac(gy10) - 0.5f; + gz10 = frac(gz10) - 0.5f; + float4 gw10 = float4(0.75f) - abs(gx10) - abs(gy10) - abs(gz10); + float4 sw10 = step(gw10, float4(0.0f)); + gx10 -= sw10 * (step(0.0f, gx10) - 0.5f); + gy10 -= sw10 * (step(0.0f, gy10) - 0.5f); + + float4 gx11 = ixy11 * (1.0f / 7.0f); + float4 gy11 = floor(gx11) * (1.0f / 7.0f); + float4 gz11 = floor(gy11) * (1.0f / 6.0f); + gx11 = frac(gx11) - 0.5f; + gy11 = frac(gy11) - 0.5f; + gz11 = frac(gz11) - 0.5f; + float4 gw11 = float4(0.75f) - abs(gx11) - abs(gy11) - abs(gz11); + float4 sw11 = step(gw11, float4(0.0f)); + gx11 -= sw11 * (step(0.0f, gx11) - 0.5f); + gy11 -= sw11 * (step(0.0f, gy11) - 0.5f); + + float4 g0000 = float4(gx00.x, gy00.x, gz00.x, gw00.x); + float4 g1000 = float4(gx00.y, gy00.y, gz00.y, gw00.y); + float4 g0100 = float4(gx00.z, gy00.z, gz00.z, gw00.z); + float4 g1100 = float4(gx00.w, gy00.w, gz00.w, gw00.w); + float4 g0010 = float4(gx10.x, gy10.x, gz10.x, gw10.x); + float4 g1010 = float4(gx10.y, gy10.y, gz10.y, gw10.y); + float4 g0110 = float4(gx10.z, gy10.z, gz10.z, gw10.z); + float4 g1110 = float4(gx10.w, gy10.w, gz10.w, gw10.w); + float4 g0001 = float4(gx01.x, gy01.x, gz01.x, gw01.x); + float4 g1001 = float4(gx01.y, gy01.y, gz01.y, gw01.y); + float4 g0101 = float4(gx01.z, gy01.z, gz01.z, gw01.z); + float4 g1101 = float4(gx01.w, gy01.w, gz01.w, gw01.w); + float4 g0011 = float4(gx11.x, gy11.x, gz11.x, gw11.x); + float4 g1011 = float4(gx11.y, gy11.y, gz11.y, gw11.y); + float4 g0111 = float4(gx11.z, gy11.z, gz11.z, gw11.z); + float4 g1111 = float4(gx11.w, gy11.w, gz11.w, gw11.w); + + float4 norm00 = taylorInvSqrt(float4(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100))); + g0000 *= norm00.x; + g0100 *= norm00.y; + g1000 *= norm00.z; + g1100 *= norm00.w; + + float4 norm01 = taylorInvSqrt(float4(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101))); + g0001 *= norm01.x; + g0101 *= norm01.y; + g1001 *= norm01.z; + g1101 *= norm01.w; + + float4 norm10 = taylorInvSqrt(float4(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110))); + g0010 *= norm10.x; + g0110 *= norm10.y; + g1010 *= norm10.z; + g1110 *= norm10.w; + + float4 norm11 = taylorInvSqrt(float4(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111))); + g0011 *= norm11.x; + g0111 *= norm11.y; + g1011 *= norm11.z; + g1111 *= norm11.w; + + float n0000 = dot(g0000, Pf0); + float n1000 = dot(g1000, float4(Pf1.x, Pf0.yzw)); + float n0100 = dot(g0100, float4(Pf0.x, Pf1.y, Pf0.zw)); + float n1100 = dot(g1100, float4(Pf1.xy, Pf0.zw)); + float n0010 = dot(g0010, float4(Pf0.xy, Pf1.z, Pf0.w)); + float n1010 = dot(g1010, float4(Pf1.x, Pf0.y, Pf1.z, Pf0.w)); + float n0110 = dot(g0110, float4(Pf0.x, Pf1.yz, Pf0.w)); + float n1110 = dot(g1110, float4(Pf1.xyz, Pf0.w)); + float n0001 = dot(g0001, float4(Pf0.xyz, Pf1.w)); + float n1001 = dot(g1001, float4(Pf1.x, Pf0.yz, Pf1.w)); + float n0101 = dot(g0101, float4(Pf0.x, Pf1.y, Pf0.z, Pf1.w)); + float n1101 = dot(g1101, float4(Pf1.xy, Pf0.z, Pf1.w)); + float n0011 = dot(g0011, float4(Pf0.xy, Pf1.zw)); + float n1011 = dot(g1011, float4(Pf1.x, Pf0.y, Pf1.zw)); + float n0111 = dot(g0111, float4(Pf0.x, Pf1.yzw)); + float n1111 = dot(g1111, Pf1); + + float4 fade_xyzw = fade(Pf0); + float4 n_0w = lerp(float4(n0000, n1000, n0100, n1100), float4(n0001, n1001, n0101, n1101), fade_xyzw.w); + float4 n_1w = lerp(float4(n0010, n1010, n0110, n1110), float4(n0011, n1011, n0111, n1111), fade_xyzw.w); + float4 n_zw = lerp(n_0w, n_1w, fade_xyzw.z); + float2 n_yzw = lerp(n_zw.xy, n_zw.zw, fade_xyzw.y); + float n_xyzw = lerp(n_yzw.x, n_yzw.y, fade_xyzw.x); + return 2.2f * n_xyzw; + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise4D.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise4D.cs.meta new file mode 100644 index 0000000..eb9a75f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/classicnoise4D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 283464e0e530a4cdfbf4fae82efed3e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/common.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/common.cs new file mode 100644 index 0000000..de8007d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/common.cs @@ -0,0 +1,50 @@ +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + // Modulo 289 without a division (only multiplications) + static float mod289(float x) { return x - floor(x * (1.0f / 289.0f)) * 289.0f; } + static float2 mod289(float2 x) { return x - floor(x * (1.0f / 289.0f)) * 289.0f; } + static float3 mod289(float3 x) { return x - floor(x * (1.0f / 289.0f)) * 289.0f; } + static float4 mod289(float4 x) { return x - floor(x * (1.0f / 289.0f)) * 289.0f; } + + // Modulo 7 without a division + static float3 mod7(float3 x) { return x - floor(x * (1.0f / 7.0f)) * 7.0f; } + static float4 mod7(float4 x) { return x - floor(x * (1.0f / 7.0f)) * 7.0f; } + + // Permutation polynomial: (34x^2 + x) math.mod 289 + static float permute(float x) { return mod289((34.0f * x + 1.0f) * x); } + static float3 permute(float3 x) { return mod289((34.0f * x + 1.0f) * x); } + static float4 permute(float4 x) { return mod289((34.0f * x + 1.0f) * x); } + + static float taylorInvSqrt(float r) { return 1.79284291400159f - 0.85373472095314f * r; } + static float4 taylorInvSqrt(float4 r) { return 1.79284291400159f - 0.85373472095314f * r; } + + static float2 fade(float2 t) { return t*t*t*(t*(t*6.0f-15.0f)+10.0f); } + static float3 fade(float3 t) { return t*t*t*(t*(t*6.0f-15.0f)+10.0f); } + static float4 fade(float4 t) { return t*t*t*(t*(t*6.0f-15.0f)+10.0f); } + + static float4 grad4(float j, float4 ip) + { + float4 ones = float4(1.0f, 1.0f, 1.0f, -1.0f); + float3 pxyz = floor(frac(float3(j) * ip.xyz) * 7.0f) * ip.z - 1.0f; + float pw = 1.5f - dot(abs(pxyz), ones.xyz); + float4 p = float4(pxyz, pw); + float4 s = float4(p < 0.0f); + p.xyz = p.xyz + (s.xyz*2.0f - 1.0f) * s.www; + return p; + } + + // Hashed 2-D gradients with an extra rotation. + // (The constant 0.0243902439 is 1/41) + static float2 rgrad2(float2 p, float rot) + { + // For more isotropic gradients, math.sin/math.cos can be used instead. + float u = permute(permute(p.x) + p.y) * 0.0243902439f + rot; // Rotate by shift + u = frac(u) * 6.28318530718f; // 2*pi + return float2(cos(u), sin(u)); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/common.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/common.cs.meta new file mode 100644 index 0000000..5daa24b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/common.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e99a8e417be944dfaad14c2d60f8450d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise2D.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise2D.cs new file mode 100644 index 0000000..a40a1b3 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise2D.cs @@ -0,0 +1,68 @@ +// +// Description : Array and textureless GLSL 2D simplex noise function. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : stegu +// Lastmath.mod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// https://github.com/stegu/webgl-noise +// + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + public static float snoise(float2 v) + { + float4 C = float4(0.211324865405187f, // (3.0-math.sqrt(3.0))/6.0 + 0.366025403784439f, // 0.5*(math.sqrt(3.0)-1.0) + -0.577350269189626f, // -1.0 + 2.0 * C.x + 0.024390243902439f); // 1.0 / 41.0 + // First corner + float2 i = floor(v + dot(v, C.yy)); + float2 x0 = v - i + dot(i, C.xx); + + // Other corners + float2 i1; + //i1.x = math.step( x0.y, x0.x ); // x0.x > x0.y ? 1.0 : 0.0 + //i1.y = 1.0 - i1.x; + i1 = (x0.x > x0.y) ? float2(1.0f, 0.0f) : float2(0.0f, 1.0f); + // x0 = x0 - 0.0 + 0.0 * C.xx ; + // x1 = x0 - i1 + 1.0 * C.xx ; + // x2 = x0 - 1.0 + 2.0 * C.xx ; + float4 x12 = x0.xyxy + C.xxzz; + x12.xy -= i1; + + // Permutations + i = mod289(i); // Avoid truncation effects in permutation + float3 p = permute(permute(i.y + float3(0.0f, i1.y, 1.0f)) + i.x + float3(0.0f, i1.x, 1.0f)); + + float3 m = max(0.5f - float3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), 0.0f); + m = m * m; + m = m * m; + + // Gradients: 41 points uniformly over a line, mapped onto a diamond. + // The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287) + + float3 x = 2.0f * frac(p * C.www) - 1.0f; + float3 h = abs(x) - 0.5f; + float3 ox = floor(x + 0.5f); + float3 a0 = x - ox; + + // Normalise gradients implicitly by scaling m + // Approximation of: m *= inversemath.sqrt( a0*a0 + h*h ); + m *= 1.79284291400159f - 0.85373472095314f * (a0 * a0 + h * h); + + // Compute final noise value at P + + float gx = a0.x * x0.x + h.x * x0.y; + float2 gyz = a0.yz * x12.xz + h.yz * x12.yw; + float3 g = float3(gx,gyz); + + return 130.0f * dot(m, g); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise2D.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise2D.cs.meta new file mode 100644 index 0000000..3d96fd6 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a44cd1da263fb47c2a45958442e14af6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3D.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3D.cs new file mode 100644 index 0000000..8c0086c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3D.cs @@ -0,0 +1,93 @@ +// +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : stegu +// Lastmath.mod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// https://github.com/stegu/webgl-noise +// + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + public static float snoise(float3 v) + { + float2 C = float2(1.0f / 6.0f, 1.0f / 3.0f); + float4 D = float4(0.0f, 0.5f, 1.0f, 2.0f); + + // First corner + float3 i = floor(v + dot(v, C.yyy)); + float3 x0 = v - i + dot(i, C.xxx); + + // Other corners + float3 g = step(x0.yzx, x0.xyz); + float3 l = 1.0f - g; + float3 i1 = min(g.xyz, l.zxy); + float3 i2 = max(g.xyz, l.zxy); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + float3 x1 = x0 - i1 + C.xxx; + float3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y + float3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + + // Permutations + i = mod289(i); + float4 p = permute(permute(permute( + i.z + float4(0.0f, i1.z, i2.z, 1.0f)) + + i.y + float4(0.0f, i1.y, i2.y, 1.0f)) + + i.x + float4(0.0f, i1.x, i2.x, 1.0f)); + + // Gradients: 7x7 points over a square, mapped onto an octahedron. + // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857f; // 1.0/7.0 + float3 ns = n_ * D.wyz - D.xzx; + + float4 j = p - 49.0f * floor(p * ns.z * ns.z); // math.mod(p,7*7) + + float4 x_ = floor(j * ns.z); + float4 y_ = floor(j - 7.0f * x_); // math.mod(j,N) + + float4 x = x_ * ns.x + ns.yyyy; + float4 y = y_ * ns.x + ns.yyyy; + float4 h = 1.0f - abs(x) - abs(y); + + float4 b0 = float4(x.xy, y.xy); + float4 b1 = float4(x.zw, y.zw); + + //float4 s0 = float4(math.lessThan(b0,0.0))*2.0 - 1.0; + //float4 s1 = float4(math.lessThan(b1,0.0))*2.0 - 1.0; + float4 s0 = floor(b0) * 2.0f + 1.0f; + float4 s1 = floor(b1) * 2.0f + 1.0f; + float4 sh = -step(h, float4(0.0f)); + + float4 a0 = b0.xzyw + s0.xzyw * sh.xxyy; + float4 a1 = b1.xzyw + s1.xzyw * sh.zzww; + + float3 p0 = float3(a0.xy, h.x); + float3 p1 = float3(a0.zw, h.y); + float3 p2 = float3(a1.xy, h.z); + float3 p3 = float3(a1.zw, h.w); + + //Normalise gradients + float4 norm = taylorInvSqrt(float4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + // Mix final noise value + float4 m = max(0.6f - float4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0f); + m = m * m; + return 42.0f * dot(m * m, float4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3))); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3D.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3D.cs.meta new file mode 100644 index 0000000..8b3322c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 466846e8fd30645168912f2824cedb87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3Dgrad.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3Dgrad.cs new file mode 100644 index 0000000..da02438 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3Dgrad.cs @@ -0,0 +1,102 @@ +// +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : stegu +// Lastmath.mod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// https://github.com/stegu/webgl-noise +// + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + public static float snoise(float3 v, out float3 gradient) + { + float2 C = float2(1.0f / 6.0f, 1.0f / 3.0f); + float4 D = float4(0.0f, 0.5f, 1.0f, 2.0f); + + // First corner + float3 i = floor(v + dot(v, C.yyy)); + float3 x0 = v - i + dot(i, C.xxx); + + // Other corners + float3 g = step(x0.yzx, x0.xyz); + float3 l = 1.0f - g; + float3 i1 = min(g.xyz, l.zxy); + float3 i2 = max(g.xyz, l.zxy); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + float3 x1 = x0 - i1 + C.xxx; + float3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y + float3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + + // Permutations + i = mod289(i); + float4 p = permute(permute(permute( + i.z + float4(0.0f, i1.z, i2.z, 1.0f)) + + i.y + float4(0.0f, i1.y, i2.y, 1.0f)) + + i.x + float4(0.0f, i1.x, i2.x, 1.0f)); + + // Gradients: 7x7 points over a square, mapped onto an octahedron. + // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857f; // 1.0/7.0 + float3 ns = n_ * D.wyz - D.xzx; + + float4 j = p - 49.0f * floor(p * ns.z * ns.z); // math.mod(p,7*7) + + float4 x_ = floor(j * ns.z); + float4 y_ = floor(j - 7.0f * x_); // math.mod(j,N) + + float4 x = x_ * ns.x + ns.yyyy; + float4 y = y_ * ns.x + ns.yyyy; + float4 h = 1.0f - abs(x) - abs(y); + + float4 b0 = float4(x.xy, y.xy); + float4 b1 = float4(x.zw, y.zw); + + //float4 s0 = float4(math.lessThan(b0,0.0))*2.0 - 1.0; + //float4 s1 = float4(math.lessThan(b1,0.0))*2.0 - 1.0; + float4 s0 = floor(b0) * 2.0f + 1.0f; + float4 s1 = floor(b1) * 2.0f + 1.0f; + float4 sh = -step(h, float4(0.0f)); + + float4 a0 = b0.xzyw + s0.xzyw * sh.xxyy; + float4 a1 = b1.xzyw + s1.xzyw * sh.zzww; + + float3 p0 = float3(a0.xy, h.x); + float3 p1 = float3(a0.zw, h.y); + float3 p2 = float3(a1.xy, h.z); + float3 p3 = float3(a1.zw, h.w); + + //Normalise gradients + float4 norm = taylorInvSqrt(float4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + // Mix final noise value + float4 m = max(0.6f - float4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0f); + float4 m2 = m * m; + float4 m4 = m2 * m2; + float4 pdotx = float4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)); + + // Determath.mine noise gradient + float4 temp = m2 * m * pdotx; + gradient = -8.0f * (temp.x * x0 + temp.y * x1 + temp.z * x2 + temp.w * x3); + gradient += m4.x * p0 + m4.y * p1 + m4.z * p2 + m4.w * p3; + gradient *= 42.0f; + + return 42.0f * dot(m4, pdotx); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3Dgrad.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3Dgrad.cs.meta new file mode 100644 index 0000000..1bed9df --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise3Dgrad.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6849bb8369e5b4b2eb95e435578ff960 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise4D.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise4D.cs new file mode 100644 index 0000000..4dab382 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise4D.cs @@ -0,0 +1,99 @@ +// +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : stegu +// Lastmath.mod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// https://github.com/stegu/webgl-noise +// + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + public static float snoise(float4 v) + { + // (math.sqrt(5) - 1)/4 = F4, used once below + const float F4 = 0.309016994374947451f; + float4 C = float4( 0.138196601125011f, // (5 - math.sqrt(5))/20 G4 + 0.276393202250021f, // 2 * G4 + 0.414589803375032f, // 3 * G4 + -0.447213595499958f); // -1 + 4 * G4 + + // First corner + float4 i = floor(v + dot(v, float4(F4)) ); + float4 x0 = v - i + dot(i, C.xxxx); + + // Other corners + + // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI) + float4 i0 = float4(0.0f); + float3 isX = step( x0.yzw, x0.xxx ); + float3 isYZ = step( x0.zww, x0.yyz ); + // i0.x = math.dot( isX, float3( 1.0 ) ); + i0.x = isX.x + isX.y + isX.z; + i0.yzw = 1.0f - isX; + // i0.y += math.dot( isYZ.xy, float2( 1.0 ) ); + i0.y += isYZ.x + isYZ.y; + i0.zw += 1.0f - isYZ.xy; + i0.z += isYZ.z; + i0.w += 1.0f - isYZ.z; + + // i0 now contains the unique values 0,1,2,3 in each channel + float4 i3 = clamp( i0, 0.0f, 1.0f ); + float4 i2 = clamp( i0-1.0f, 0.0f, 1.0f ); + float4 i1 = clamp( i0-2.0f, 0.0f, 1.0f ); + + // x0 = x0 - 0.0 + 0.0 * C.xxxx + // x1 = x0 - i1 + 1.0 * C.xxxx + // x2 = x0 - i2 + 2.0 * C.xxxx + // x3 = x0 - i3 + 3.0 * C.xxxx + // x4 = x0 - 1.0 + 4.0 * C.xxxx + float4 x1 = x0 - i1 + C.xxxx; + float4 x2 = x0 - i2 + C.yyyy; + float4 x3 = x0 - i3 + C.zzzz; + float4 x4 = x0 + C.wwww; + + // Permutations + i = mod289(i); + float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x); + float4 j1 = permute( permute( permute( permute ( + i.w + float4(i1.w, i2.w, i3.w, 1.0f )) + + i.z + float4(i1.z, i2.z, i3.z, 1.0f )) + + i.y + float4(i1.y, i2.y, i3.y, 1.0f )) + + i.x + float4(i1.x, i2.x, i3.x, 1.0f )); + + // Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope + // 7*7*6 = 294, which is close to the ring size 17*17 = 289. + float4 ip = float4(1.0f/294.0f, 1.0f/49.0f, 1.0f/7.0f, 0.0f) ; + + float4 p0 = grad4(j0, ip); + float4 p1 = grad4(j1.x, ip); + float4 p2 = grad4(j1.y, ip); + float4 p3 = grad4(j1.z, ip); + float4 p4 = grad4(j1.w, ip); + + // Normalise gradients + float4 norm = taylorInvSqrt(float4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + p4 *= taylorInvSqrt(dot(p4,p4)); + + // Mix contributions from the five corners + float3 m0 = max(0.6f - float3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0f); + float2 m1 = max(0.6f - float2(dot(x3,x3), dot(x4,x4) ), 0.0f); + m0 = m0 * m0; + m1 = m1 * m1; + return 49.0f * ( dot(m0*m0, float3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 ))) + + dot(m1*m1, float2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ; + + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise4D.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise4D.cs.meta new file mode 100644 index 0000000..c4bef2c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/noise4D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0d0317cc486b452580ad028220b03bf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/psrdnoise2D.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/psrdnoise2D.cs new file mode 100644 index 0000000..0dc8e43 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/psrdnoise2D.cs @@ -0,0 +1,439 @@ +// +// float3 psrdnoise(float2 pos, float2 per, float rot) +// float3 psrdnoise(float2 pos, float2 per) +// float psrnoise(float2 pos, float2 per, float rot) +// float psrnoise(float2 pos, float2 per) +// float3 srdnoise(float2 pos, float rot) +// float3 srdnoise(float2 pos) +// float srnoise(float2 pos, float rot) +// float srnoise(float2 pos) +// +// Periodic (tiling) 2-D simplex noise (hexagonal lattice gradient noise) +// with rotating gradients and analytic derivatives. +// Variants also without the derivative (no "d" in the name), without +// the tiling property (no "p" in the name) and without the rotating +// gradients (no "r" in the name). +// +// This is (yet) another variation on simplex noise. It's similar to the +// version presented by Ken Perlin, but the grid is axis-aligned and +// slightly stretched in the y direction to permit rectangular tiling. +// +// The noise can be made to tile seamlessly to any integer period in x and +// any even integer period in y. Odd periods may be specified for y, but +// then the actual tiling period will be twice that number. +// +// The rotating gradients give the appearance of a swirling motion, and can +// serve a similar purpose for animation as motion along z in 3-D noise. +// The rotating gradients in conjunction with the analytic derivatives +// can make "flow noise" effects as presented by Perlin and Neyret. +// +// float3 {p}s{r}dnoise(float2 pos {, float2 per} {, float rot}) +// "pos" is the input (x,y) coordinate +// "per" is the x and y period, where per.x is a positive integer +// and per.y is a positive even integer +// "rot" is the angle to rotate the gradients (any float value, +// where 0.0 is no rotation and 1.0 is one full turn) +// The first component of the 3-element return vector is the noise value. +// The second and third components are the x and y partial derivatives. +// +// float {p}s{r}noise(float2 pos {, float2 per} {, float rot}) +// "pos" is the input (x,y) coordinate +// "per" is the x and y period, where per.x is a positive integer +// and per.y is a positive even integer +// "rot" is the angle to rotate the gradients (any float value, +// where 0.0 is no rotation and 1.0 is one full turn) +// The return value is the noise value. +// Partial derivatives are not computed, making these functions faster. +// +// Author: Stefan Gustavson (stefan.gustavson@gmail.com) +// Version 2016-05-10. +// +// Many thanks to Ian McEwan of Ashima Arts for the +// idea of umath.sing a permutation polynomial. +// +// Copyright (c) 2016 Stefan Gustavson. All rights reserved. +// Distributed under the MIT license. See LICENSE file. +// https://github.com/stegu/webgl-noise +// + +// +// TODO: One-pixel wide artefacts used to occur due to precision issues with +// the gradient indexing. This is specific to this variant of noise, because +// one axis of the simplex grid is perfectly aligned with the input x axis. +// The errors were rare, and they are now very unlikely to ever be visible +// after a quick fix was introduced: a small offset is added to the y coordinate. +// A proper fix would involve umath.sing round() instead of math.floor() in selected +// places, but the quick fix works fine. +// (If you run into problems with this, please let me know.) +// + +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public static partial class noise + { + // + // 2-D tiling simplex noise with rotating gradients and analytical derivative. + // The first component of the 3-element return vector is the noise value, + // and the second and third components are the x and y partial derivatives. + // + public static float3 psrdnoise(float2 pos, float2 per, float rot) + { + // Hack: offset y slightly to hide some rare artifacts + pos.y += 0.01f; + // Skew to hexagonal grid + float2 uv = float2(pos.x + pos.y * 0.5f, pos.y); + + float2 i0 = floor(uv); + float2 f0 = frac(uv); + // Traversal order + float2 i1 = (f0.x > f0.y) ? float2(1.0f, 0.0f) : float2(0.0f, 1.0f); + + // Unskewed grid points in (x,y) space + float2 p0 = float2(i0.x - i0.y * 0.5f, i0.y); + float2 p1 = float2(p0.x + i1.x - i1.y * 0.5f, p0.y + i1.y); + float2 p2 = float2(p0.x + 0.5f, p0.y + 1.0f); + + // Vectors in unskewed (x,y) coordinates from + // each of the simplex corners to the evaluation point + float2 d0 = pos - p0; + float2 d1 = pos - p1; + float2 d2 = pos - p2; + + // Wrap p0, p1 and p2 to the desired period before gradient hashing: + // wrap points in (x,y), map to (u,v) + float3 xw = fmod(float3(p0.x, p1.x, p2.x), per.x); + float3 yw = fmod(float3(p0.y, p1.y, p2.y), per.y); + float3 iuw = xw + 0.5f * yw; + float3 ivw = yw; + + // Create gradients from indices + float2 g0 = rgrad2(float2(iuw.x, ivw.x), rot); + float2 g1 = rgrad2(float2(iuw.y, ivw.y), rot); + float2 g2 = rgrad2(float2(iuw.z, ivw.z), rot); + + // Gradients math.dot vectors to corresponding corners + // (The derivatives of this are simply the gradients) + float3 w = float3(dot(g0, d0), dot(g1, d1), dot(g2, d2)); + + // Radial weights from corners + // 0.8 is the square of 2/math.sqrt(5), the distance from + // a grid point to the nearest simplex boundary + float3 t = 0.8f - float3(dot(d0, d0), dot(d1, d1), dot(d2, d2)); + + // Partial derivatives for analytical gradient computation + float3 dtdx = -2.0f * float3(d0.x, d1.x, d2.x); + float3 dtdy = -2.0f * float3(d0.y, d1.y, d2.y); + + // Set influence of each surflet to zero outside radius math.sqrt(0.8) + if (t.x < 0.0f) + { + dtdx.x = 0.0f; + dtdy.x = 0.0f; + t.x = 0.0f; + } + if (t.y < 0.0f) + { + dtdx.y = 0.0f; + dtdy.y = 0.0f; + t.y = 0.0f; + } + if (t.z < 0.0f) + { + dtdx.z = 0.0f; + dtdy.z = 0.0f; + t.z = 0.0f; + } + + // Fourth power of t (and third power for derivative) + float3 t2 = t * t; + float3 t4 = t2 * t2; + float3 t3 = t2 * t; + + // Final noise value is: + // sum of ((radial weights) times (gradient math.dot vector from corner)) + float n = dot(t4, w); + + // Final analytical derivative (gradient of a sum of scalar products) + float2 dt0 = float2(dtdx.x, dtdy.x) * 4.0f * t3.x; + float2 dn0 = t4.x * g0 + dt0 * w.x; + float2 dt1 = float2(dtdx.y, dtdy.y) * 4.0f * t3.y; + float2 dn1 = t4.y * g1 + dt1 * w.y; + float2 dt2 = float2(dtdx.z, dtdy.z) * 4.0f * t3.z; + float2 dn2 = t4.z * g2 + dt2 * w.z; + + return 11.0f * float3(n, dn0 + dn1 + dn2); + } + + // + // 2-D tiling simplex noise with fixed gradients + // and analytical derivative. + // This function is implemented as a wrapper to "psrdnoise", + // at the math.minimal math.cost of three extra additions. + // + public static float3 psrdnoise(float2 pos, float2 per) + { + return psrdnoise(pos, per, 0.0f); + } + + // + // 2-D tiling simplex noise with rotating gradients, + // but without the analytical derivative. + // + public static float psrnoise(float2 pos, float2 per, float rot) + { + // Offset y slightly to hide some rare artifacts + pos.y += 0.001f; + // Skew to hexagonal grid + float2 uv = float2(pos.x + pos.y * 0.5f, pos.y); + + float2 i0 = floor(uv); + float2 f0 = frac(uv); + // Traversal order + float2 i1 = (f0.x > f0.y) ? float2(1.0f, 0.0f) : float2(0.0f, 1.0f); + + // Unskewed grid points in (x,y) space + float2 p0 = float2(i0.x - i0.y * 0.5f, i0.y); + float2 p1 = float2(p0.x + i1.x - i1.y * 0.5f, p0.y + i1.y); + float2 p2 = float2(p0.x + 0.5f, p0.y + 1.0f); + + // Vectors in unskewed (x,y) coordinates from + // each of the simplex corners to the evaluation point + float2 d0 = pos - p0; + float2 d1 = pos - p1; + float2 d2 = pos - p2; + + // Wrap p0, p1 and p2 to the desired period before gradient hashing: + // wrap points in (x,y), map to (u,v) + float3 xw = fmod(float3(p0.x, p1.x, p2.x), per.x); + float3 yw = fmod(float3(p0.y, p1.y, p2.y), per.y); + float3 iuw = xw + 0.5f * yw; + float3 ivw = yw; + + // Create gradients from indices + float2 g0 = rgrad2(float2(iuw.x, ivw.x), rot); + float2 g1 = rgrad2(float2(iuw.y, ivw.y), rot); + float2 g2 = rgrad2(float2(iuw.z, ivw.z), rot); + + // Gradients math.dot vectors to corresponding corners + // (The derivatives of this are simply the gradients) + float3 w = float3(dot(g0, d0), dot(g1, d1), dot(g2, d2)); + + // Radial weights from corners + // 0.8 is the square of 2/math.sqrt(5), the distance from + // a grid point to the nearest simplex boundary + float3 t = 0.8f - float3(dot(d0, d0), dot(d1, d1), dot(d2, d2)); + + // Set influence of each surflet to zero outside radius math.sqrt(0.8) + t = max(t, 0.0f); + + // Fourth power of t + float3 t2 = t * t; + float3 t4 = t2 * t2; + + // Final noise value is: + // sum of ((radial weights) times (gradient math.dot vector from corner)) + float n = dot(t4, w); + + // Rescale to cover the range [-1,1] reasonably well + return 11.0f * n; + } + + // + // 2-D tiling simplex noise with fixed gradients, + // without the analytical derivative. + // This function is implemented as a wrapper to "psrnoise", + // at the math.minimal math.cost of three extra additions. + // + public static float psrnoise(float2 pos, float2 per) + { + return psrnoise(pos, per, 0.0f); + } + + // + // 2-D non-tiling simplex noise with rotating gradients and analytical derivative. + // The first component of the 3-element return vector is the noise value, + // and the second and third components are the x and y partial derivatives. + // + public static float3 srdnoise(float2 pos, float rot) + { + // Offset y slightly to hide some rare artifacts + pos.y += 0.001f; + // Skew to hexagonal grid + float2 uv = float2(pos.x + pos.y * 0.5f, pos.y); + + float2 i0 = floor(uv); + float2 f0 = frac(uv); + // Traversal order + float2 i1 = (f0.x > f0.y) ? float2(1.0f, 0.0f) : float2(0.0f, 1.0f); + + // Unskewed grid points in (x,y) space + float2 p0 = float2(i0.x - i0.y * 0.5f, i0.y); + float2 p1 = float2(p0.x + i1.x - i1.y * 0.5f, p0.y + i1.y); + float2 p2 = float2(p0.x + 0.5f, p0.y + 1.0f); + + // Vectors in unskewed (x,y) coordinates from + // each of the simplex corners to the evaluation point + float2 d0 = pos - p0; + float2 d1 = pos - p1; + float2 d2 = pos - p2; + + float3 x = float3(p0.x, p1.x, p2.x); + float3 y = float3(p0.y, p1.y, p2.y); + float3 iuw = x + 0.5f * y; + float3 ivw = y; + + // Avoid precision issues in permutation + iuw = mod289(iuw); + ivw = mod289(ivw); + + // Create gradients from indices + float2 g0 = rgrad2(float2(iuw.x, ivw.x), rot); + float2 g1 = rgrad2(float2(iuw.y, ivw.y), rot); + float2 g2 = rgrad2(float2(iuw.z, ivw.z), rot); + + // Gradients math.dot vectors to corresponding corners + // (The derivatives of this are simply the gradients) + float3 w = float3(dot(g0, d0), dot(g1, d1), dot(g2, d2)); + + // Radial weights from corners + // 0.8 is the square of 2/math.sqrt(5), the distance from + // a grid point to the nearest simplex boundary + float3 t = 0.8f - float3(dot(d0, d0), dot(d1, d1), dot(d2, d2)); + + // Partial derivatives for analytical gradient computation + float3 dtdx = -2.0f * float3(d0.x, d1.x, d2.x); + float3 dtdy = -2.0f * float3(d0.y, d1.y, d2.y); + + // Set influence of each surflet to zero outside radius math.sqrt(0.8) + if (t.x < 0.0f) + { + dtdx.x = 0.0f; + dtdy.x = 0.0f; + t.x = 0.0f; + } + if (t.y < 0.0f) + { + dtdx.y = 0.0f; + dtdy.y = 0.0f; + t.y = 0.0f; + } + if (t.z < 0.0f) + { + dtdx.z = 0.0f; + dtdy.z = 0.0f; + t.z = 0.0f; + } + + // Fourth power of t (and third power for derivative) + float3 t2 = t * t; + float3 t4 = t2 * t2; + float3 t3 = t2 * t; + + // Final noise value is: + // sum of ((radial weights) times (gradient math.dot vector from corner)) + float n = dot(t4, w); + + // Final analytical derivative (gradient of a sum of scalar products) + float2 dt0 = float2(dtdx.x, dtdy.x) * 4.0f * t3.x; + float2 dn0 = t4.x * g0 + dt0 * w.x; + float2 dt1 = float2(dtdx.y, dtdy.y) * 4.0f * t3.y; + float2 dn1 = t4.y * g1 + dt1 * w.y; + float2 dt2 = float2(dtdx.z, dtdy.z) * 4.0f * t3.z; + float2 dn2 = t4.z * g2 + dt2 * w.z; + + return 11.0f * float3(n, dn0 + dn1 + dn2); + } + + // + // 2-D non-tiling simplex noise with fixed gradients and analytical derivative. + // This function is implemented as a wrapper to "srdnoise", + // at the math.minimal math.cost of three extra additions. + // + public static float3 srdnoise(float2 pos) + { + return srdnoise(pos, 0.0f); + } + + // + // 2-D non-tiling simplex noise with rotating gradients, + // without the analytical derivative. + // + public static float srnoise(float2 pos, float rot) + { + // Offset y slightly to hide some rare artifacts + pos.y += 0.001f; + // Skew to hexagonal grid + float2 uv = float2(pos.x + pos.y * 0.5f, pos.y); + + float2 i0 = floor(uv); + float2 f0 = frac(uv); + // Traversal order + float2 i1 = (f0.x > f0.y) ? float2(1.0f, 0.0f) : float2(0.0f, 1.0f); + + // Unskewed grid points in (x,y) space + float2 p0 = float2(i0.x - i0.y * 0.5f, i0.y); + float2 p1 = float2(p0.x + i1.x - i1.y * 0.5f, p0.y + i1.y); + float2 p2 = float2(p0.x + 0.5f, p0.y + 1.0f); + + // Vectors in unskewed (x,y) coordinates from + // each of the simplex corners to the evaluation point + float2 d0 = pos - p0; + float2 d1 = pos - p1; + float2 d2 = pos - p2; + + float3 x = float3(p0.x, p1.x, p2.x); + float3 y = float3(p0.y, p1.y, p2.y); + float3 iuw = x + 0.5f * y; + float3 ivw = y; + + // Avoid precision issues in permutation + iuw = mod289(iuw); + ivw = mod289(ivw); + + // Create gradients from indices + float2 g0 = rgrad2(float2(iuw.x, ivw.x), rot); + float2 g1 = rgrad2(float2(iuw.y, ivw.y), rot); + float2 g2 = rgrad2(float2(iuw.z, ivw.z), rot); + + // Gradients math.dot vectors to corresponding corners + // (The derivatives of this are simply the gradients) + float3 w = float3(dot(g0, d0), dot(g1, d1), dot(g2, d2)); + + // Radial weights from corners + // 0.8 is the square of 2/math.sqrt(5), the distance from + // a grid point to the nearest simplex boundary + float3 t = 0.8f - float3(dot(d0, d0), dot(d1, d1), dot(d2, d2)); + + // Set influence of each surflet to zero outside radius math.sqrt(0.8) + t = max(t, 0.0f); + + // Fourth power of t + float3 t2 = t * t; + float3 t4 = t2 * t2; + + // Final noise value is: + // sum of ((radial weights) times (gradient math.dot vector from corner)) + float n = dot(t4, w); + + // Rescale to cover the range [-1,1] reasonably well + return 11.0f * n; + } + + // + // 2-D non-tiling simplex noise with fixed gradients, + // without the analytical derivative. + // This function is implemented as a wrapper to "srnoise", + // at the math.minimal math.cost of three extra additions. + // Note: if this kind of noise is all you want, there are faster + // GLSL implementations of non-tiling simplex noise out there. + // This one is included mainly for completeness and compatibility + // with the other functions in the file. + // + public static float srnoise(float2 pos) + { + return srnoise(pos, 0.0f); + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/psrdnoise2D.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/psrdnoise2D.cs.meta new file mode 100644 index 0000000..8a59a01 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Noise/psrdnoise2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bf609f94feab4ac5af33f75a100630c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/PropertyAttributes.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/PropertyAttributes.cs new file mode 100644 index 0000000..195be0e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/PropertyAttributes.cs @@ -0,0 +1,6 @@ +namespace Unity.Mathematics +{ + public class PostNormalizeAttribute : UnityEngine.PropertyAttribute {} + + public class DoNotNormalizeAttribute : UnityEngine.PropertyAttribute {} +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/PropertyAttributes.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/PropertyAttributes.cs.meta new file mode 100644 index 0000000..934c057 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/PropertyAttributes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61cbbdd02bb00406b94029228cb3b73b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Unity.Mathematics.asmdef b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Unity.Mathematics.asmdef new file mode 100644 index 0000000..bb58105 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Unity.Mathematics.asmdef @@ -0,0 +1,4 @@ +{ + "name": "Unity.Mathematics", + "allowUnsafeCode": true +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Unity.Mathematics.asmdef.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Unity.Mathematics.asmdef.meta new file mode 100644 index 0000000..6193fbb --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/Unity.Mathematics.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d8b63aba1907145bea998dd612889d6b +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2.gen.cs new file mode 100644 index 0000000..168f3d9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2.gen.cs @@ -0,0 +1,501 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(bool2.DebuggerProxy))] + [System.Serializable] + public partial struct bool2 : System.IEquatable + { + [MarshalAs(UnmanagedType.U1)] + public bool x; + [MarshalAs(UnmanagedType.U1)] + public bool y; + + + /// Constructs a bool2 vector from two bool values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2(bool x, bool y) + { + this.x = x; + this.y = y; + } + + /// Constructs a bool2 vector from a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2(bool2 xy) + { + this.x = xy.x; + this.y = xy.y; + } + + /// Constructs a bool2 vector from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2(bool v) + { + this.x = v; + this.y = v; + } + + + /// Implicitly converts a single bool value to a bool2 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool2(bool v) { return new bool2(v); } + + + /// Returns the result of a componentwise equality operation on two bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x == rhs.x, lhs.y == rhs.y); } + + /// Returns the result of a componentwise equality operation on a bool2 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (bool2 lhs, bool rhs) { return new bool2 (lhs.x == rhs, lhs.y == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (bool lhs, bool2 rhs) { return new bool2 (lhs == rhs.x, lhs == rhs.y); } + + + /// Returns the result of a componentwise not equal operation on two bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x != rhs.x, lhs.y != rhs.y); } + + /// Returns the result of a componentwise not equal operation on a bool2 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (bool2 lhs, bool rhs) { return new bool2 (lhs.x != rhs, lhs.y != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (bool lhs, bool2 rhs) { return new bool2 (lhs != rhs.x, lhs != rhs.y); } + + + /// Returns the result of a componentwise not operation on a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator ! (bool2 val) { return new bool2 (!val.x, !val.y); } + + + /// Returns the result of a componentwise bitwise and operation on two bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator & (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x & rhs.x, lhs.y & rhs.y); } + + /// Returns the result of a componentwise bitwise and operation on a bool2 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator & (bool2 lhs, bool rhs) { return new bool2 (lhs.x & rhs, lhs.y & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator & (bool lhs, bool2 rhs) { return new bool2 (lhs & rhs.x, lhs & rhs.y); } + + + /// Returns the result of a componentwise bitwise or operation on two bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator | (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x | rhs.x, lhs.y | rhs.y); } + + /// Returns the result of a componentwise bitwise or operation on a bool2 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator | (bool2 lhs, bool rhs) { return new bool2 (lhs.x | rhs, lhs.y | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator | (bool lhs, bool2 rhs) { return new bool2 (lhs | rhs.x, lhs | rhs.y); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator ^ (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x ^ rhs.x, lhs.y ^ rhs.y); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool2 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator ^ (bool2 lhs, bool rhs) { return new bool2 (lhs.x ^ rhs, lhs.y ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator ^ (bool lhs, bool2 rhs) { return new bool2 (lhs ^ rhs.x, lhs ^ rhs.y); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(y, y); } + } + + + + /// Returns the bool element at a specified index. + unsafe public bool this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (bool2* array = &this) { return ((bool*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (bool* array = &x) { array[index] = value; } + } + } + + /// Returns true if the bool2 is equal to a given bool2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool2 rhs) { return x == rhs.x && y == rhs.y; } + + /// Returns true if the bool2 is equal to a given bool2, false otherwise. + public override bool Equals(object o) { return Equals((bool2)o); } + + + /// Returns a hash code for the bool2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool2({0}, {1})", x, y); + } + + internal sealed class DebuggerProxy + { + public bool x; + public bool y; + public DebuggerProxy(bool2 v) + { + x = v.x; + y = v.y; + } + } + + } + + public static partial class math + { + /// Returns a bool2 vector constructed from two bool values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 bool2(bool x, bool y) { return new bool2(x, y); } + + /// Returns a bool2 vector constructed from a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 bool2(bool2 xy) { return new bool2(xy); } + + /// Returns a bool2 vector constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 bool2(bool v) { return new bool2(v); } + + /// Returns a uint hash code of a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool2 v) + { + return csum(select(uint2(0x90A285BBu, 0x5D19E1D5u), uint2(0xFAAF07DDu, 0x625C45BDu), v)); + } + + /// + /// Returns a uint2 vector hash code of a bool2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(bool2 v) + { + return (select(uint2(0xC9F27FCBu, 0x6D2523B1u), uint2(0x6E2BF6A9u, 0xCC74B3B7u), v)); + } + + /// Returns the result of specified shuffling of the components from two bool2 vectors into a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool shuffle(bool2 a, bool2 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two bool2 vectors into a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 shuffle(bool2 a, bool2 b, ShuffleComponent x, ShuffleComponent y) + { + return bool2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two bool2 vectors into a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 shuffle(bool2 a, bool2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return bool3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two bool2 vectors into a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 shuffle(bool2 a, bool2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return bool4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static bool select_shuffle_component(bool2 a, bool2 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2.gen.cs.meta new file mode 100644 index 0000000..26b1858 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0790199222baf67419fdf802d76f93f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x2.gen.cs new file mode 100644 index 0000000..0bb5bd4 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x2.gen.cs @@ -0,0 +1,209 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct bool2x2 : System.IEquatable + { + public bool2 c0; + public bool2 c1; + + + /// Constructs a bool2x2 matrix from two bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2x2(bool2 c0, bool2 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a bool2x2 matrix from 4 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2x2(bool m00, bool m01, + bool m10, bool m11) + { + this.c0 = new bool2(m00, m10); + this.c1 = new bool2(m01, m11); + } + + /// Constructs a bool2x2 matrix from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2x2(bool v) + { + this.c0 = v; + this.c1 = v; + } + + + /// Implicitly converts a single bool value to a bool2x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool2x2(bool v) { return new bool2x2(v); } + + + /// Returns the result of a componentwise equality operation on two bool2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a bool2x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two bool2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a bool2x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + /// Returns the result of a componentwise not operation on a bool2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator ! (bool2x2 val) { return new bool2x2 (!val.c0, !val.c1); } + + + /// Returns the result of a componentwise bitwise and operation on two bool2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator & (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); } + + /// Returns the result of a componentwise bitwise and operation on a bool2x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator & (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 & rhs, lhs.c1 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator & (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs & rhs.c0, lhs & rhs.c1); } + + + /// Returns the result of a componentwise bitwise or operation on two bool2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator | (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); } + + /// Returns the result of a componentwise bitwise or operation on a bool2x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator | (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 | rhs, lhs.c1 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator | (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs | rhs.c0, lhs | rhs.c1); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator ^ (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool2x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator ^ (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator ^ (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); } + + + + /// Returns the bool2 element at a specified index. + unsafe public ref bool2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (bool2x2* array = &this) { return ref ((bool2*)array)[index]; } + } + } + + /// Returns true if the bool2x2 is equal to a given bool2x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool2x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the bool2x2 is equal to a given bool2x2, false otherwise. + public override bool Equals(object o) { return Equals((bool2x2)o); } + + + /// Returns a hash code for the bool2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool2x2({0}, {1}, {2}, {3})", c0.x, c1.x, c0.y, c1.y); + } + + } + + public static partial class math + { + /// Returns a bool2x2 matrix constructed from two bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 bool2x2(bool2 c0, bool2 c1) { return new bool2x2(c0, c1); } + + /// Returns a bool2x2 matrix constructed from from 4 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 bool2x2(bool m00, bool m01, + bool m10, bool m11) + { + return new bool2x2(m00, m01, + m10, m11); + } + + /// Returns a bool2x2 matrix constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 bool2x2(bool v) { return new bool2x2(v); } + + /// Return the bool2x2 transpose of a bool2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 transpose(bool2x2 v) + { + return bool2x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y); + } + + /// Returns a uint hash code of a bool2x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool2x2 v) + { + return csum(select(uint2(0x7AF32C49u, 0xAE131389u), uint2(0x5D1B165Bu, 0x87096CD7u), v.c0) + + select(uint2(0x4C7F6DD1u, 0x4822A3E9u), uint2(0xAAC3C25Du, 0xD21D0945u), v.c1)); + } + + /// + /// Returns a uint2 vector hash code of a bool2x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(bool2x2 v) + { + return (select(uint2(0x88FCAB2Du, 0x614DA60Du), uint2(0x5BA2C50Bu, 0x8C455ACBu), v.c0) + + select(uint2(0xCD266C89u, 0xF1852A33u), uint2(0x77E35E77u, 0x863E3729u), v.c1)); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x2.gen.cs.meta new file mode 100644 index 0000000..27058f1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 466955346f18d45f1811f3683f9cf707 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x3.gen.cs new file mode 100644 index 0000000..2204913 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x3.gen.cs @@ -0,0 +1,216 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct bool2x3 : System.IEquatable + { + public bool2 c0; + public bool2 c1; + public bool2 c2; + + + /// Constructs a bool2x3 matrix from three bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2x3(bool2 c0, bool2 c1, bool2 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a bool2x3 matrix from 6 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2x3(bool m00, bool m01, bool m02, + bool m10, bool m11, bool m12) + { + this.c0 = new bool2(m00, m10); + this.c1 = new bool2(m01, m11); + this.c2 = new bool2(m02, m12); + } + + /// Constructs a bool2x3 matrix from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2x3(bool v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + + /// Implicitly converts a single bool value to a bool2x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool2x3(bool v) { return new bool2x3(v); } + + + /// Returns the result of a componentwise equality operation on two bool2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (bool2x3 lhs, bool2x3 rhs) { return new bool2x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a bool2x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two bool2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (bool2x3 lhs, bool2x3 rhs) { return new bool2x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a bool2x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + /// Returns the result of a componentwise not operation on a bool2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator ! (bool2x3 val) { return new bool2x3 (!val.c0, !val.c1, !val.c2); } + + + /// Returns the result of a componentwise bitwise and operation on two bool2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator & (bool2x3 lhs, bool2x3 rhs) { return new bool2x3 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2); } + + /// Returns the result of a componentwise bitwise and operation on a bool2x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator & (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator & (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); } + + + /// Returns the result of a componentwise bitwise or operation on two bool2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator | (bool2x3 lhs, bool2x3 rhs) { return new bool2x3 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2); } + + /// Returns the result of a componentwise bitwise or operation on a bool2x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator | (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator | (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator ^ (bool2x3 lhs, bool2x3 rhs) { return new bool2x3 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool2x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator ^ (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator ^ (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); } + + + + /// Returns the bool2 element at a specified index. + unsafe public ref bool2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (bool2x3* array = &this) { return ref ((bool2*)array)[index]; } + } + } + + /// Returns true if the bool2x3 is equal to a given bool2x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool2x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the bool2x3 is equal to a given bool2x3, false otherwise. + public override bool Equals(object o) { return Equals((bool2x3)o); } + + + /// Returns a hash code for the bool2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool2x3({0}, {1}, {2}, {3}, {4}, {5})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y); + } + + } + + public static partial class math + { + /// Returns a bool2x3 matrix constructed from three bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 bool2x3(bool2 c0, bool2 c1, bool2 c2) { return new bool2x3(c0, c1, c2); } + + /// Returns a bool2x3 matrix constructed from from 6 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 bool2x3(bool m00, bool m01, bool m02, + bool m10, bool m11, bool m12) + { + return new bool2x3(m00, m01, m02, + m10, m11, m12); + } + + /// Returns a bool2x3 matrix constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 bool2x3(bool v) { return new bool2x3(v); } + + /// Return the bool3x2 transpose of a bool2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 transpose(bool2x3 v) + { + return bool3x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y); + } + + /// Returns a uint hash code of a bool2x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool2x3 v) + { + return csum(select(uint2(0x7BE39F3Bu, 0xFAB9913Fu), uint2(0xB4501269u, 0xE04B89FDu), v.c0) + + select(uint2(0xDB3DE101u, 0x7B6D1B4Bu), uint2(0x58399E77u, 0x5EAC29C9u), v.c1) + + select(uint2(0xFC6014F9u, 0x6BF6693Fu), uint2(0x9D1B1D9Bu, 0xF842F5C1u), v.c2)); + } + + /// + /// Returns a uint2 vector hash code of a bool2x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(bool2x3 v) + { + return (select(uint2(0xA47EC335u, 0xA477DF57u), uint2(0xC4B1493Fu, 0xBA0966D3u), v.c0) + + select(uint2(0xAFBEE253u, 0x5B419C01u), uint2(0x515D90F5u, 0xEC9F68F3u), v.c1) + + select(uint2(0xF9EA92D5u, 0xC2FAFCB9u), uint2(0x616E9CA1u, 0xC5C5394Bu), v.c2)); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x3.gen.cs.meta new file mode 100644 index 0000000..4180af5 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2da7f6798be134406a5cc96b770b5e70 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x4.gen.cs new file mode 100644 index 0000000..875d877 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x4.gen.cs @@ -0,0 +1,223 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct bool2x4 : System.IEquatable + { + public bool2 c0; + public bool2 c1; + public bool2 c2; + public bool2 c3; + + + /// Constructs a bool2x4 matrix from four bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2x4(bool2 c0, bool2 c1, bool2 c2, bool2 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a bool2x4 matrix from 8 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2x4(bool m00, bool m01, bool m02, bool m03, + bool m10, bool m11, bool m12, bool m13) + { + this.c0 = new bool2(m00, m10); + this.c1 = new bool2(m01, m11); + this.c2 = new bool2(m02, m12); + this.c3 = new bool2(m03, m13); + } + + /// Constructs a bool2x4 matrix from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2x4(bool v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + + /// Implicitly converts a single bool value to a bool2x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool2x4(bool v) { return new bool2x4(v); } + + + /// Returns the result of a componentwise equality operation on two bool2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (bool2x4 lhs, bool2x4 rhs) { return new bool2x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a bool2x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (bool2x4 lhs, bool rhs) { return new bool2x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (bool lhs, bool2x4 rhs) { return new bool2x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two bool2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (bool2x4 lhs, bool2x4 rhs) { return new bool2x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a bool2x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (bool2x4 lhs, bool rhs) { return new bool2x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (bool lhs, bool2x4 rhs) { return new bool2x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + /// Returns the result of a componentwise not operation on a bool2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator ! (bool2x4 val) { return new bool2x4 (!val.c0, !val.c1, !val.c2, !val.c3); } + + + /// Returns the result of a componentwise bitwise and operation on two bool2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator & (bool2x4 lhs, bool2x4 rhs) { return new bool2x4 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2, lhs.c3 & rhs.c3); } + + /// Returns the result of a componentwise bitwise and operation on a bool2x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator & (bool2x4 lhs, bool rhs) { return new bool2x4 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs, lhs.c3 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator & (bool lhs, bool2x4 rhs) { return new bool2x4 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2, lhs & rhs.c3); } + + + /// Returns the result of a componentwise bitwise or operation on two bool2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator | (bool2x4 lhs, bool2x4 rhs) { return new bool2x4 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2, lhs.c3 | rhs.c3); } + + /// Returns the result of a componentwise bitwise or operation on a bool2x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator | (bool2x4 lhs, bool rhs) { return new bool2x4 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs, lhs.c3 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator | (bool lhs, bool2x4 rhs) { return new bool2x4 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2, lhs | rhs.c3); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator ^ (bool2x4 lhs, bool2x4 rhs) { return new bool2x4 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2, lhs.c3 ^ rhs.c3); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool2x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator ^ (bool2x4 lhs, bool rhs) { return new bool2x4 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs, lhs.c3 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator ^ (bool lhs, bool2x4 rhs) { return new bool2x4 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2, lhs ^ rhs.c3); } + + + + /// Returns the bool2 element at a specified index. + unsafe public ref bool2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (bool2x4* array = &this) { return ref ((bool2*)array)[index]; } + } + } + + /// Returns true if the bool2x4 is equal to a given bool2x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool2x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the bool2x4 is equal to a given bool2x4, false otherwise. + public override bool Equals(object o) { return Equals((bool2x4)o); } + + + /// Returns a hash code for the bool2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool2x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y); + } + + } + + public static partial class math + { + /// Returns a bool2x4 matrix constructed from four bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 bool2x4(bool2 c0, bool2 c1, bool2 c2, bool2 c3) { return new bool2x4(c0, c1, c2, c3); } + + /// Returns a bool2x4 matrix constructed from from 8 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 bool2x4(bool m00, bool m01, bool m02, bool m03, + bool m10, bool m11, bool m12, bool m13) + { + return new bool2x4(m00, m01, m02, m03, + m10, m11, m12, m13); + } + + /// Returns a bool2x4 matrix constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 bool2x4(bool v) { return new bool2x4(v); } + + /// Return the bool4x2 transpose of a bool2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 transpose(bool2x4 v) + { + return bool4x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y, + v.c3.x, v.c3.y); + } + + /// Returns a uint hash code of a bool2x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool2x4 v) + { + return csum(select(uint2(0x45A22087u, 0xFC104C3Bu), uint2(0x5FFF6B19u, 0x5E6CBF3Bu), v.c0) + + select(uint2(0xB546F2A5u, 0xBBCF63E7u), uint2(0xC53F4755u, 0x6985C229u), v.c1) + + select(uint2(0xE133B0B3u, 0xC3E0A3B9u), uint2(0xFE31134Fu, 0x712A34D7u), v.c2) + + select(uint2(0x9D77A59Bu, 0x4942CA39u), uint2(0xB40EC62Du, 0x565ED63Fu), v.c3)); + } + + /// + /// Returns a uint2 vector hash code of a bool2x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(bool2x4 v) + { + return (select(uint2(0x93C30C2Bu, 0xDCAF0351u), uint2(0x6E050B01u, 0x750FDBF5u), v.c0) + + select(uint2(0x7F3DD499u, 0x52EAAEBBu), uint2(0x4599C793u, 0x83B5E729u), v.c1) + + select(uint2(0xC267163Fu, 0x67BC9149u), uint2(0xAD7C5EC1u, 0x822A7D6Du), v.c2) + + select(uint2(0xB492BF15u, 0xD37220E3u), uint2(0x7AA2C2BDu, 0xE16BC89Du), v.c3)); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x4.gen.cs.meta new file mode 100644 index 0000000..011e8d3 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3638df1ef4a049fb957126fc52d1a20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3.gen.cs new file mode 100644 index 0000000..595e9eb --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3.gen.cs @@ -0,0 +1,1270 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(bool3.DebuggerProxy))] + [System.Serializable] + public partial struct bool3 : System.IEquatable + { + [MarshalAs(UnmanagedType.U1)] + public bool x; + [MarshalAs(UnmanagedType.U1)] + public bool y; + [MarshalAs(UnmanagedType.U1)] + public bool z; + + + /// Constructs a bool3 vector from three bool values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3(bool x, bool y, bool z) + { + this.x = x; + this.y = y; + this.z = z; + } + + /// Constructs a bool3 vector from a bool value and a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3(bool x, bool2 yz) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + } + + /// Constructs a bool3 vector from a bool2 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3(bool2 xy, bool z) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + } + + /// Constructs a bool3 vector from a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3(bool3 xyz) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + } + + /// Constructs a bool3 vector from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3(bool v) + { + this.x = v; + this.y = v; + this.z = v; + } + + + /// Implicitly converts a single bool value to a bool3 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool3(bool v) { return new bool3(v); } + + + /// Returns the result of a componentwise equality operation on two bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (bool3 lhs, bool3 rhs) { return new bool3 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z); } + + /// Returns the result of a componentwise equality operation on a bool3 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (bool3 lhs, bool rhs) { return new bool3 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (bool lhs, bool3 rhs) { return new bool3 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z); } + + + /// Returns the result of a componentwise not equal operation on two bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (bool3 lhs, bool3 rhs) { return new bool3 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z); } + + /// Returns the result of a componentwise not equal operation on a bool3 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (bool3 lhs, bool rhs) { return new bool3 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (bool lhs, bool3 rhs) { return new bool3 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z); } + + + /// Returns the result of a componentwise not operation on a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator ! (bool3 val) { return new bool3 (!val.x, !val.y, !val.z); } + + + /// Returns the result of a componentwise bitwise and operation on two bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator & (bool3 lhs, bool3 rhs) { return new bool3 (lhs.x & rhs.x, lhs.y & rhs.y, lhs.z & rhs.z); } + + /// Returns the result of a componentwise bitwise and operation on a bool3 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator & (bool3 lhs, bool rhs) { return new bool3 (lhs.x & rhs, lhs.y & rhs, lhs.z & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator & (bool lhs, bool3 rhs) { return new bool3 (lhs & rhs.x, lhs & rhs.y, lhs & rhs.z); } + + + /// Returns the result of a componentwise bitwise or operation on two bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator | (bool3 lhs, bool3 rhs) { return new bool3 (lhs.x | rhs.x, lhs.y | rhs.y, lhs.z | rhs.z); } + + /// Returns the result of a componentwise bitwise or operation on a bool3 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator | (bool3 lhs, bool rhs) { return new bool3 (lhs.x | rhs, lhs.y | rhs, lhs.z | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator | (bool lhs, bool3 rhs) { return new bool3 (lhs | rhs.x, lhs | rhs.y, lhs | rhs.z); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator ^ (bool3 lhs, bool3 rhs) { return new bool3 (lhs.x ^ rhs.x, lhs.y ^ rhs.y, lhs.z ^ rhs.z); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool3 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator ^ (bool3 lhs, bool rhs) { return new bool3 (lhs.x ^ rhs, lhs.y ^ rhs, lhs.z ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator ^ (bool lhs, bool3 rhs) { return new bool3 (lhs ^ rhs.x, lhs ^ rhs.y, lhs ^ rhs.z); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(z, z); } + } + + + + /// Returns the bool element at a specified index. + unsafe public bool this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (bool3* array = &this) { return ((bool*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (bool* array = &x) { array[index] = value; } + } + } + + /// Returns true if the bool3 is equal to a given bool3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool3 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z; } + + /// Returns true if the bool3 is equal to a given bool3, false otherwise. + public override bool Equals(object o) { return Equals((bool3)o); } + + + /// Returns a hash code for the bool3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool3({0}, {1}, {2})", x, y, z); + } + + internal sealed class DebuggerProxy + { + public bool x; + public bool y; + public bool z; + public DebuggerProxy(bool3 v) + { + x = v.x; + y = v.y; + z = v.z; + } + } + + } + + public static partial class math + { + /// Returns a bool3 vector constructed from three bool values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 bool3(bool x, bool y, bool z) { return new bool3(x, y, z); } + + /// Returns a bool3 vector constructed from a bool value and a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 bool3(bool x, bool2 yz) { return new bool3(x, yz); } + + /// Returns a bool3 vector constructed from a bool2 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 bool3(bool2 xy, bool z) { return new bool3(xy, z); } + + /// Returns a bool3 vector constructed from a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 bool3(bool3 xyz) { return new bool3(xyz); } + + /// Returns a bool3 vector constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 bool3(bool v) { return new bool3(v); } + + /// Returns a uint hash code of a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool3 v) + { + return csum(select(uint3(0xA1E92D39u, 0x4583C801u, 0x9536A0F5u), uint3(0xAF816615u, 0x9AF8D62Du, 0xE3600729u), v)); + } + + /// + /// Returns a uint3 vector hash code of a bool3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(bool3 v) + { + return (select(uint3(0x5F17300Du, 0x670D6809u, 0x7AF32C49u), uint3(0xAE131389u, 0x5D1B165Bu, 0x87096CD7u), v)); + } + + /// Returns the result of specified shuffling of the components from two bool3 vectors into a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool shuffle(bool3 a, bool3 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two bool3 vectors into a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 shuffle(bool3 a, bool3 b, ShuffleComponent x, ShuffleComponent y) + { + return bool2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two bool3 vectors into a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 shuffle(bool3 a, bool3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return bool3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two bool3 vectors into a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 shuffle(bool3 a, bool3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return bool4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static bool select_shuffle_component(bool3 a, bool3 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3.gen.cs.meta new file mode 100644 index 0000000..8789724 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75aefc1758f9fbc41af3579fdd45aa62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x2.gen.cs new file mode 100644 index 0000000..001d151 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x2.gen.cs @@ -0,0 +1,212 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct bool3x2 : System.IEquatable + { + public bool3 c0; + public bool3 c1; + + + /// Constructs a bool3x2 matrix from two bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3x2(bool3 c0, bool3 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a bool3x2 matrix from 6 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3x2(bool m00, bool m01, + bool m10, bool m11, + bool m20, bool m21) + { + this.c0 = new bool3(m00, m10, m20); + this.c1 = new bool3(m01, m11, m21); + } + + /// Constructs a bool3x2 matrix from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3x2(bool v) + { + this.c0 = v; + this.c1 = v; + } + + + /// Implicitly converts a single bool value to a bool3x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool3x2(bool v) { return new bool3x2(v); } + + + /// Returns the result of a componentwise equality operation on two bool3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a bool3x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two bool3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a bool3x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + /// Returns the result of a componentwise not operation on a bool3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator ! (bool3x2 val) { return new bool3x2 (!val.c0, !val.c1); } + + + /// Returns the result of a componentwise bitwise and operation on two bool3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator & (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); } + + /// Returns the result of a componentwise bitwise and operation on a bool3x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator & (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 & rhs, lhs.c1 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator & (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs & rhs.c0, lhs & rhs.c1); } + + + /// Returns the result of a componentwise bitwise or operation on two bool3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator | (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); } + + /// Returns the result of a componentwise bitwise or operation on a bool3x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator | (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 | rhs, lhs.c1 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator | (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs | rhs.c0, lhs | rhs.c1); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator ^ (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool3x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator ^ (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator ^ (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); } + + + + /// Returns the bool3 element at a specified index. + unsafe public ref bool3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (bool3x2* array = &this) { return ref ((bool3*)array)[index]; } + } + } + + /// Returns true if the bool3x2 is equal to a given bool3x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool3x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the bool3x2 is equal to a given bool3x2, false otherwise. + public override bool Equals(object o) { return Equals((bool3x2)o); } + + + /// Returns a hash code for the bool3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool3x2({0}, {1}, {2}, {3}, {4}, {5})", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z); + } + + } + + public static partial class math + { + /// Returns a bool3x2 matrix constructed from two bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 bool3x2(bool3 c0, bool3 c1) { return new bool3x2(c0, c1); } + + /// Returns a bool3x2 matrix constructed from from 6 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 bool3x2(bool m00, bool m01, + bool m10, bool m11, + bool m20, bool m21) + { + return new bool3x2(m00, m01, + m10, m11, + m20, m21); + } + + /// Returns a bool3x2 matrix constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 bool3x2(bool v) { return new bool3x2(v); } + + /// Return the bool2x3 transpose of a bool3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 transpose(bool3x2 v) + { + return bool2x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z); + } + + /// Returns a uint hash code of a bool3x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool3x2 v) + { + return csum(select(uint3(0x9C9F0823u, 0x5A9CA13Bu, 0xAFCDD5EFu), uint3(0xA88D187Du, 0xCF6EBA1Du, 0x9D88E5A1u), v.c0) + + select(uint3(0xEADF0775u, 0x747A9D7Bu, 0x4111F799u), uint3(0xB5F05AF1u, 0xFD80290Bu, 0x8B65ADB7u), v.c1)); + } + + /// + /// Returns a uint3 vector hash code of a bool3x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(bool3x2 v) + { + return (select(uint3(0xDFF4F563u, 0x7069770Du, 0xD1224537u), uint3(0xE99ED6F3u, 0x48125549u, 0xEEE2123Bu), v.c0) + + select(uint3(0xE3AD9FE5u, 0xCE1CF8BFu, 0x7BE39F3Bu), uint3(0xFAB9913Fu, 0xB4501269u, 0xE04B89FDu), v.c1)); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x2.gen.cs.meta new file mode 100644 index 0000000..f653062 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 21b83123b388e4dcb80da9576a60ebd2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x3.gen.cs new file mode 100644 index 0000000..dbfef97 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x3.gen.cs @@ -0,0 +1,219 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct bool3x3 : System.IEquatable + { + public bool3 c0; + public bool3 c1; + public bool3 c2; + + + /// Constructs a bool3x3 matrix from three bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3x3(bool3 c0, bool3 c1, bool3 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a bool3x3 matrix from 9 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3x3(bool m00, bool m01, bool m02, + bool m10, bool m11, bool m12, + bool m20, bool m21, bool m22) + { + this.c0 = new bool3(m00, m10, m20); + this.c1 = new bool3(m01, m11, m21); + this.c2 = new bool3(m02, m12, m22); + } + + /// Constructs a bool3x3 matrix from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3x3(bool v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + + /// Implicitly converts a single bool value to a bool3x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool3x3(bool v) { return new bool3x3(v); } + + + /// Returns the result of a componentwise equality operation on two bool3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (bool3x3 lhs, bool3x3 rhs) { return new bool3x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a bool3x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two bool3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (bool3x3 lhs, bool3x3 rhs) { return new bool3x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a bool3x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + /// Returns the result of a componentwise not operation on a bool3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator ! (bool3x3 val) { return new bool3x3 (!val.c0, !val.c1, !val.c2); } + + + /// Returns the result of a componentwise bitwise and operation on two bool3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator & (bool3x3 lhs, bool3x3 rhs) { return new bool3x3 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2); } + + /// Returns the result of a componentwise bitwise and operation on a bool3x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator & (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator & (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); } + + + /// Returns the result of a componentwise bitwise or operation on two bool3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator | (bool3x3 lhs, bool3x3 rhs) { return new bool3x3 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2); } + + /// Returns the result of a componentwise bitwise or operation on a bool3x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator | (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator | (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator ^ (bool3x3 lhs, bool3x3 rhs) { return new bool3x3 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool3x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator ^ (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator ^ (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); } + + + + /// Returns the bool3 element at a specified index. + unsafe public ref bool3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (bool3x3* array = &this) { return ref ((bool3*)array)[index]; } + } + } + + /// Returns true if the bool3x3 is equal to a given bool3x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool3x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the bool3x3 is equal to a given bool3x3, false otherwise. + public override bool Equals(object o) { return Equals((bool3x3)o); } + + + /// Returns a hash code for the bool3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool3x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z); + } + + } + + public static partial class math + { + /// Returns a bool3x3 matrix constructed from three bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 bool3x3(bool3 c0, bool3 c1, bool3 c2) { return new bool3x3(c0, c1, c2); } + + /// Returns a bool3x3 matrix constructed from from 9 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 bool3x3(bool m00, bool m01, bool m02, + bool m10, bool m11, bool m12, + bool m20, bool m21, bool m22) + { + return new bool3x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22); + } + + /// Returns a bool3x3 matrix constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 bool3x3(bool v) { return new bool3x3(v); } + + /// Return the bool3x3 transpose of a bool3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 transpose(bool3x3 v) + { + return bool3x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z); + } + + /// Returns a uint hash code of a bool3x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool3x3 v) + { + return csum(select(uint3(0xE7579997u, 0xEF7D56C7u, 0x66F38F0Bu), uint3(0x624256A3u, 0x5292ADE1u, 0xD2E590E5u), v.c0) + + select(uint3(0xF25BE857u, 0x9BC17CE7u, 0xC8B86851u), uint3(0x64095221u, 0xADF428FFu, 0xA3977109u), v.c1) + + select(uint3(0x745ED837u, 0x9CDC88F5u, 0xFA62D721u), uint3(0x7E4DB1CFu, 0x68EEE0F5u, 0xBC3B0A59u), v.c2)); + } + + /// + /// Returns a uint3 vector hash code of a bool3x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(bool3x3 v) + { + return (select(uint3(0x816EFB5Du, 0xA24E82B7u, 0x45A22087u), uint3(0xFC104C3Bu, 0x5FFF6B19u, 0x5E6CBF3Bu), v.c0) + + select(uint3(0xB546F2A5u, 0xBBCF63E7u, 0xC53F4755u), uint3(0x6985C229u, 0xE133B0B3u, 0xC3E0A3B9u), v.c1) + + select(uint3(0xFE31134Fu, 0x712A34D7u, 0x9D77A59Bu), uint3(0x4942CA39u, 0xB40EC62Du, 0x565ED63Fu), v.c2)); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x3.gen.cs.meta new file mode 100644 index 0000000..b9ae856 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3b4b734e76c94d5099484b5b6c5b029 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x4.gen.cs new file mode 100644 index 0000000..57f4aaa --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x4.gen.cs @@ -0,0 +1,226 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct bool3x4 : System.IEquatable + { + public bool3 c0; + public bool3 c1; + public bool3 c2; + public bool3 c3; + + + /// Constructs a bool3x4 matrix from four bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3x4(bool3 c0, bool3 c1, bool3 c2, bool3 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a bool3x4 matrix from 12 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3x4(bool m00, bool m01, bool m02, bool m03, + bool m10, bool m11, bool m12, bool m13, + bool m20, bool m21, bool m22, bool m23) + { + this.c0 = new bool3(m00, m10, m20); + this.c1 = new bool3(m01, m11, m21); + this.c2 = new bool3(m02, m12, m22); + this.c3 = new bool3(m03, m13, m23); + } + + /// Constructs a bool3x4 matrix from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3x4(bool v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + + /// Implicitly converts a single bool value to a bool3x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool3x4(bool v) { return new bool3x4(v); } + + + /// Returns the result of a componentwise equality operation on two bool3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (bool3x4 lhs, bool3x4 rhs) { return new bool3x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a bool3x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (bool3x4 lhs, bool rhs) { return new bool3x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (bool lhs, bool3x4 rhs) { return new bool3x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two bool3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (bool3x4 lhs, bool3x4 rhs) { return new bool3x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a bool3x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (bool3x4 lhs, bool rhs) { return new bool3x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (bool lhs, bool3x4 rhs) { return new bool3x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + /// Returns the result of a componentwise not operation on a bool3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator ! (bool3x4 val) { return new bool3x4 (!val.c0, !val.c1, !val.c2, !val.c3); } + + + /// Returns the result of a componentwise bitwise and operation on two bool3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator & (bool3x4 lhs, bool3x4 rhs) { return new bool3x4 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2, lhs.c3 & rhs.c3); } + + /// Returns the result of a componentwise bitwise and operation on a bool3x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator & (bool3x4 lhs, bool rhs) { return new bool3x4 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs, lhs.c3 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator & (bool lhs, bool3x4 rhs) { return new bool3x4 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2, lhs & rhs.c3); } + + + /// Returns the result of a componentwise bitwise or operation on two bool3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator | (bool3x4 lhs, bool3x4 rhs) { return new bool3x4 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2, lhs.c3 | rhs.c3); } + + /// Returns the result of a componentwise bitwise or operation on a bool3x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator | (bool3x4 lhs, bool rhs) { return new bool3x4 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs, lhs.c3 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator | (bool lhs, bool3x4 rhs) { return new bool3x4 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2, lhs | rhs.c3); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator ^ (bool3x4 lhs, bool3x4 rhs) { return new bool3x4 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2, lhs.c3 ^ rhs.c3); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool3x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator ^ (bool3x4 lhs, bool rhs) { return new bool3x4 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs, lhs.c3 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator ^ (bool lhs, bool3x4 rhs) { return new bool3x4 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2, lhs ^ rhs.c3); } + + + + /// Returns the bool3 element at a specified index. + unsafe public ref bool3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (bool3x4* array = &this) { return ref ((bool3*)array)[index]; } + } + } + + /// Returns true if the bool3x4 is equal to a given bool3x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool3x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the bool3x4 is equal to a given bool3x4, false otherwise. + public override bool Equals(object o) { return Equals((bool3x4)o); } + + + /// Returns a hash code for the bool3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool3x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z); + } + + } + + public static partial class math + { + /// Returns a bool3x4 matrix constructed from four bool3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 bool3x4(bool3 c0, bool3 c1, bool3 c2, bool3 c3) { return new bool3x4(c0, c1, c2, c3); } + + /// Returns a bool3x4 matrix constructed from from 12 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 bool3x4(bool m00, bool m01, bool m02, bool m03, + bool m10, bool m11, bool m12, bool m13, + bool m20, bool m21, bool m22, bool m23) + { + return new bool3x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23); + } + + /// Returns a bool3x4 matrix constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 bool3x4(bool v) { return new bool3x4(v); } + + /// Return the bool4x3 transpose of a bool3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 transpose(bool3x4 v) + { + return bool4x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z, + v.c3.x, v.c3.y, v.c3.z); + } + + /// Returns a uint hash code of a bool3x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool3x4 v) + { + return csum(select(uint3(0x83B58237u, 0x833E3E29u, 0xA9D919BFu), uint3(0xC3EC1D97u, 0xB8B208C7u, 0x5D3ED947u), v.c0) + + select(uint3(0x4473BBB1u, 0xCBA11D5Fu, 0x685835CFu), uint3(0xC3D32AE1u, 0xB966942Fu, 0xFE9856B3u), v.c1) + + select(uint3(0xFA3A3285u, 0xAD55999Du, 0xDCDD5341u), uint3(0x94DDD769u, 0xA1E92D39u, 0x4583C801u), v.c2) + + select(uint3(0x9536A0F5u, 0xAF816615u, 0x9AF8D62Du), uint3(0xE3600729u, 0x5F17300Du, 0x670D6809u), v.c3)); + } + + /// + /// Returns a uint3 vector hash code of a bool3x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(bool3x4 v) + { + return (select(uint3(0x7AF32C49u, 0xAE131389u, 0x5D1B165Bu), uint3(0x87096CD7u, 0x4C7F6DD1u, 0x4822A3E9u), v.c0) + + select(uint3(0xAAC3C25Du, 0xD21D0945u, 0x88FCAB2Du), uint3(0x614DA60Du, 0x5BA2C50Bu, 0x8C455ACBu), v.c1) + + select(uint3(0xCD266C89u, 0xF1852A33u, 0x77E35E77u), uint3(0x863E3729u, 0xE191B035u, 0x68586FAFu), v.c2) + + select(uint3(0xD4DFF6D3u, 0xCB634F4Du, 0x9B13B92Du), uint3(0x4ABF0813u, 0x86068063u, 0xD75513F9u), v.c3)); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x4.gen.cs.meta new file mode 100644 index 0000000..e70cf5b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82510cd108c8a4a7ebe40f0cec12d18c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4.gen.cs new file mode 100644 index 0000000..5f50fcd --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4.gen.cs @@ -0,0 +1,3187 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(bool4.DebuggerProxy))] + [System.Serializable] + public partial struct bool4 : System.IEquatable + { + [MarshalAs(UnmanagedType.U1)] + public bool x; + [MarshalAs(UnmanagedType.U1)] + public bool y; + [MarshalAs(UnmanagedType.U1)] + public bool z; + [MarshalAs(UnmanagedType.U1)] + public bool w; + + + /// Constructs a bool4 vector from four bool values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4(bool x, bool y, bool z, bool w) + { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + /// Constructs a bool4 vector from two bool values and a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4(bool x, bool y, bool2 zw) + { + this.x = x; + this.y = y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a bool4 vector from a bool value, a bool2 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4(bool x, bool2 yz, bool w) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + this.w = w; + } + + /// Constructs a bool4 vector from a bool value and a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4(bool x, bool3 yzw) + { + this.x = x; + this.y = yzw.x; + this.z = yzw.y; + this.w = yzw.z; + } + + /// Constructs a bool4 vector from a bool2 vector and two bool values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4(bool2 xy, bool z, bool w) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + this.w = w; + } + + /// Constructs a bool4 vector from two bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4(bool2 xy, bool2 zw) + { + this.x = xy.x; + this.y = xy.y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a bool4 vector from a bool3 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4(bool3 xyz, bool w) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + this.w = w; + } + + /// Constructs a bool4 vector from a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4(bool4 xyzw) + { + this.x = xyzw.x; + this.y = xyzw.y; + this.z = xyzw.z; + this.w = xyzw.w; + } + + /// Constructs a bool4 vector from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4(bool v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + + /// Implicitly converts a single bool value to a bool4 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool4(bool v) { return new bool4(v); } + + + /// Returns the result of a componentwise equality operation on two bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (bool4 lhs, bool4 rhs) { return new bool4 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z, lhs.w == rhs.w); } + + /// Returns the result of a componentwise equality operation on a bool4 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (bool4 lhs, bool rhs) { return new bool4 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs, lhs.w == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (bool lhs, bool4 rhs) { return new bool4 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z, lhs == rhs.w); } + + + /// Returns the result of a componentwise not equal operation on two bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (bool4 lhs, bool4 rhs) { return new bool4 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z, lhs.w != rhs.w); } + + /// Returns the result of a componentwise not equal operation on a bool4 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (bool4 lhs, bool rhs) { return new bool4 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs, lhs.w != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (bool lhs, bool4 rhs) { return new bool4 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z, lhs != rhs.w); } + + + /// Returns the result of a componentwise not operation on a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator ! (bool4 val) { return new bool4 (!val.x, !val.y, !val.z, !val.w); } + + + /// Returns the result of a componentwise bitwise and operation on two bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator & (bool4 lhs, bool4 rhs) { return new bool4 (lhs.x & rhs.x, lhs.y & rhs.y, lhs.z & rhs.z, lhs.w & rhs.w); } + + /// Returns the result of a componentwise bitwise and operation on a bool4 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator & (bool4 lhs, bool rhs) { return new bool4 (lhs.x & rhs, lhs.y & rhs, lhs.z & rhs, lhs.w & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator & (bool lhs, bool4 rhs) { return new bool4 (lhs & rhs.x, lhs & rhs.y, lhs & rhs.z, lhs & rhs.w); } + + + /// Returns the result of a componentwise bitwise or operation on two bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator | (bool4 lhs, bool4 rhs) { return new bool4 (lhs.x | rhs.x, lhs.y | rhs.y, lhs.z | rhs.z, lhs.w | rhs.w); } + + /// Returns the result of a componentwise bitwise or operation on a bool4 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator | (bool4 lhs, bool rhs) { return new bool4 (lhs.x | rhs, lhs.y | rhs, lhs.z | rhs, lhs.w | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator | (bool lhs, bool4 rhs) { return new bool4 (lhs | rhs.x, lhs | rhs.y, lhs | rhs.z, lhs | rhs.w); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator ^ (bool4 lhs, bool4 rhs) { return new bool4 (lhs.x ^ rhs.x, lhs.y ^ rhs.y, lhs.z ^ rhs.z, lhs.w ^ rhs.w); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool4 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator ^ (bool4 lhs, bool rhs) { return new bool4 (lhs.x ^ rhs, lhs.y ^ rhs, lhs.z ^ rhs, lhs.w ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator ^ (bool lhs, bool4 rhs) { return new bool4 (lhs ^ rhs.x, lhs ^ rhs.y, lhs ^ rhs.z, lhs ^ rhs.w); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 xwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(x, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 yzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 ywww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(y, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 zwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(z, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool4 wwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool4(w, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 xww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 ywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 ywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 ywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 yww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 zww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 wwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool3 www + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool3(w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 xw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 yw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 zw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 wx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 wy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 wz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public bool2 ww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new bool2(w, w); } + } + + + + /// Returns the bool element at a specified index. + unsafe public bool this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (bool4* array = &this) { return ((bool*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (bool* array = &x) { array[index] = value; } + } + } + + /// Returns true if the bool4 is equal to a given bool4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool4 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z && w == rhs.w; } + + /// Returns true if the bool4 is equal to a given bool4, false otherwise. + public override bool Equals(object o) { return Equals((bool4)o); } + + + /// Returns a hash code for the bool4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool4({0}, {1}, {2}, {3})", x, y, z, w); + } + + internal sealed class DebuggerProxy + { + public bool x; + public bool y; + public bool z; + public bool w; + public DebuggerProxy(bool4 v) + { + x = v.x; + y = v.y; + z = v.z; + w = v.w; + } + } + + } + + public static partial class math + { + /// Returns a bool4 vector constructed from four bool values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 bool4(bool x, bool y, bool z, bool w) { return new bool4(x, y, z, w); } + + /// Returns a bool4 vector constructed from two bool values and a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 bool4(bool x, bool y, bool2 zw) { return new bool4(x, y, zw); } + + /// Returns a bool4 vector constructed from a bool value, a bool2 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 bool4(bool x, bool2 yz, bool w) { return new bool4(x, yz, w); } + + /// Returns a bool4 vector constructed from a bool value and a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 bool4(bool x, bool3 yzw) { return new bool4(x, yzw); } + + /// Returns a bool4 vector constructed from a bool2 vector and two bool values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 bool4(bool2 xy, bool z, bool w) { return new bool4(xy, z, w); } + + /// Returns a bool4 vector constructed from two bool2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 bool4(bool2 xy, bool2 zw) { return new bool4(xy, zw); } + + /// Returns a bool4 vector constructed from a bool3 vector and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 bool4(bool3 xyz, bool w) { return new bool4(xyz, w); } + + /// Returns a bool4 vector constructed from a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 bool4(bool4 xyzw) { return new bool4(xyzw); } + + /// Returns a bool4 vector constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 bool4(bool v) { return new bool4(v); } + + /// Returns a uint hash code of a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool4 v) + { + return csum(select(uint4(0x5FFF6B19u, 0x5E6CBF3Bu, 0xB546F2A5u, 0xBBCF63E7u), uint4(0xC53F4755u, 0x6985C229u, 0xE133B0B3u, 0xC3E0A3B9u), v)); + } + + /// + /// Returns a uint4 vector hash code of a bool4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(bool4 v) + { + return (select(uint4(0xFE31134Fu, 0x712A34D7u, 0x9D77A59Bu, 0x4942CA39u), uint4(0xB40EC62Du, 0x565ED63Fu, 0x93C30C2Bu, 0xDCAF0351u), v)); + } + + /// Returns the result of specified shuffling of the components from two bool4 vectors into a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool shuffle(bool4 a, bool4 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two bool4 vectors into a bool2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 shuffle(bool4 a, bool4 b, ShuffleComponent x, ShuffleComponent y) + { + return bool2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two bool4 vectors into a bool3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 shuffle(bool4 a, bool4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return bool3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two bool4 vectors into a bool4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 shuffle(bool4 a, bool4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return bool4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static bool select_shuffle_component(bool4 a, bool4 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.LeftW: + return a.w; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + case ShuffleComponent.RightW: + return b.w; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4.gen.cs.meta new file mode 100644 index 0000000..3a495e7 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64216725f837f8345b407a998b4970b3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x2.gen.cs new file mode 100644 index 0000000..022af85 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x2.gen.cs @@ -0,0 +1,215 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct bool4x2 : System.IEquatable + { + public bool4 c0; + public bool4 c1; + + + /// Constructs a bool4x2 matrix from two bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4x2(bool4 c0, bool4 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a bool4x2 matrix from 8 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4x2(bool m00, bool m01, + bool m10, bool m11, + bool m20, bool m21, + bool m30, bool m31) + { + this.c0 = new bool4(m00, m10, m20, m30); + this.c1 = new bool4(m01, m11, m21, m31); + } + + /// Constructs a bool4x2 matrix from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4x2(bool v) + { + this.c0 = v; + this.c1 = v; + } + + + /// Implicitly converts a single bool value to a bool4x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool4x2(bool v) { return new bool4x2(v); } + + + /// Returns the result of a componentwise equality operation on two bool4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a bool4x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two bool4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a bool4x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + /// Returns the result of a componentwise not operation on a bool4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator ! (bool4x2 val) { return new bool4x2 (!val.c0, !val.c1); } + + + /// Returns the result of a componentwise bitwise and operation on two bool4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator & (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); } + + /// Returns the result of a componentwise bitwise and operation on a bool4x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator & (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 & rhs, lhs.c1 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator & (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs & rhs.c0, lhs & rhs.c1); } + + + /// Returns the result of a componentwise bitwise or operation on two bool4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator | (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); } + + /// Returns the result of a componentwise bitwise or operation on a bool4x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator | (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 | rhs, lhs.c1 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator | (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs | rhs.c0, lhs | rhs.c1); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator ^ (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool4x2 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator ^ (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator ^ (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); } + + + + /// Returns the bool4 element at a specified index. + unsafe public ref bool4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (bool4x2* array = &this) { return ref ((bool4*)array)[index]; } + } + } + + /// Returns true if the bool4x2 is equal to a given bool4x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool4x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the bool4x2 is equal to a given bool4x2, false otherwise. + public override bool Equals(object o) { return Equals((bool4x2)o); } + + + /// Returns a hash code for the bool4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool4x2({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z, c0.w, c1.w); + } + + } + + public static partial class math + { + /// Returns a bool4x2 matrix constructed from two bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 bool4x2(bool4 c0, bool4 c1) { return new bool4x2(c0, c1); } + + /// Returns a bool4x2 matrix constructed from from 8 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 bool4x2(bool m00, bool m01, + bool m10, bool m11, + bool m20, bool m21, + bool m30, bool m31) + { + return new bool4x2(m00, m01, + m10, m11, + m20, m21, + m30, m31); + } + + /// Returns a bool4x2 matrix constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 bool4x2(bool v) { return new bool4x2(v); } + + /// Return the bool2x4 transpose of a bool4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 transpose(bool4x2 v) + { + return bool2x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w); + } + + /// Returns a uint hash code of a bool4x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool4x2 v) + { + return csum(select(uint4(0xD19764C7u, 0xB5D0BF63u, 0xF9102C5Fu, 0x9881FB9Fu), uint4(0x56A1530Du, 0x804B722Du, 0x738E50E5u, 0x4FC93C25u), v.c0) + + select(uint4(0xCD0445A5u, 0xD2B90D9Bu, 0xD35C9B2Du, 0xA10D9E27u), uint4(0x568DAAA9u, 0x7530254Fu, 0x9F090439u, 0x5E9F85C9u), v.c1)); + } + + /// + /// Returns a uint4 vector hash code of a bool4x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(bool4x2 v) + { + return (select(uint4(0x8C4CA03Fu, 0xB8D969EDu, 0xAC5DB57Bu, 0xA91A02EDu), uint4(0xB3C49313u, 0xF43A9ABBu, 0x84E7E01Bu, 0x8E055BE5u), v.c0) + + select(uint4(0x6E624EB7u, 0x7383ED49u, 0xDD49C23Bu, 0xEBD0D005u), uint4(0x91475DF7u, 0x55E84827u, 0x90A285BBu, 0x5D19E1D5u), v.c1)); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x2.gen.cs.meta new file mode 100644 index 0000000..5203470 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d34b6dd47888145b8870e017d6c84d4e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x3.gen.cs new file mode 100644 index 0000000..742d43a --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x3.gen.cs @@ -0,0 +1,222 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct bool4x3 : System.IEquatable + { + public bool4 c0; + public bool4 c1; + public bool4 c2; + + + /// Constructs a bool4x3 matrix from three bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4x3(bool4 c0, bool4 c1, bool4 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a bool4x3 matrix from 12 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4x3(bool m00, bool m01, bool m02, + bool m10, bool m11, bool m12, + bool m20, bool m21, bool m22, + bool m30, bool m31, bool m32) + { + this.c0 = new bool4(m00, m10, m20, m30); + this.c1 = new bool4(m01, m11, m21, m31); + this.c2 = new bool4(m02, m12, m22, m32); + } + + /// Constructs a bool4x3 matrix from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4x3(bool v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + + /// Implicitly converts a single bool value to a bool4x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool4x3(bool v) { return new bool4x3(v); } + + + /// Returns the result of a componentwise equality operation on two bool4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (bool4x3 lhs, bool4x3 rhs) { return new bool4x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a bool4x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two bool4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (bool4x3 lhs, bool4x3 rhs) { return new bool4x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a bool4x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + /// Returns the result of a componentwise not operation on a bool4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator ! (bool4x3 val) { return new bool4x3 (!val.c0, !val.c1, !val.c2); } + + + /// Returns the result of a componentwise bitwise and operation on two bool4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator & (bool4x3 lhs, bool4x3 rhs) { return new bool4x3 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2); } + + /// Returns the result of a componentwise bitwise and operation on a bool4x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator & (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator & (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); } + + + /// Returns the result of a componentwise bitwise or operation on two bool4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator | (bool4x3 lhs, bool4x3 rhs) { return new bool4x3 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2); } + + /// Returns the result of a componentwise bitwise or operation on a bool4x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator | (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator | (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator ^ (bool4x3 lhs, bool4x3 rhs) { return new bool4x3 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool4x3 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator ^ (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator ^ (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); } + + + + /// Returns the bool4 element at a specified index. + unsafe public ref bool4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (bool4x3* array = &this) { return ref ((bool4*)array)[index]; } + } + } + + /// Returns true if the bool4x3 is equal to a given bool4x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool4x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the bool4x3 is equal to a given bool4x3, false otherwise. + public override bool Equals(object o) { return Equals((bool4x3)o); } + + + /// Returns a hash code for the bool4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool4x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z, c0.w, c1.w, c2.w); + } + + } + + public static partial class math + { + /// Returns a bool4x3 matrix constructed from three bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 bool4x3(bool4 c0, bool4 c1, bool4 c2) { return new bool4x3(c0, c1, c2); } + + /// Returns a bool4x3 matrix constructed from from 12 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 bool4x3(bool m00, bool m01, bool m02, + bool m10, bool m11, bool m12, + bool m20, bool m21, bool m22, + bool m30, bool m31, bool m32) + { + return new bool4x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22, + m30, m31, m32); + } + + /// Returns a bool4x3 matrix constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 bool4x3(bool v) { return new bool4x3(v); } + + /// Return the bool3x4 transpose of a bool4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 transpose(bool4x3 v) + { + return bool3x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w); + } + + /// Returns a uint hash code of a bool4x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool4x3 v) + { + return csum(select(uint4(0xEADF0775u, 0x747A9D7Bu, 0x4111F799u, 0xB5F05AF1u), uint4(0xFD80290Bu, 0x8B65ADB7u, 0xDFF4F563u, 0x7069770Du), v.c0) + + select(uint4(0xD1224537u, 0xE99ED6F3u, 0x48125549u, 0xEEE2123Bu), uint4(0xE3AD9FE5u, 0xCE1CF8BFu, 0x7BE39F3Bu, 0xFAB9913Fu), v.c1) + + select(uint4(0xB4501269u, 0xE04B89FDu, 0xDB3DE101u, 0x7B6D1B4Bu), uint4(0x58399E77u, 0x5EAC29C9u, 0xFC6014F9u, 0x6BF6693Fu), v.c2)); + } + + /// + /// Returns a uint4 vector hash code of a bool4x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(bool4x3 v) + { + return (select(uint4(0x9D1B1D9Bu, 0xF842F5C1u, 0xA47EC335u, 0xA477DF57u), uint4(0xC4B1493Fu, 0xBA0966D3u, 0xAFBEE253u, 0x5B419C01u), v.c0) + + select(uint4(0x515D90F5u, 0xEC9F68F3u, 0xF9EA92D5u, 0xC2FAFCB9u), uint4(0x616E9CA1u, 0xC5C5394Bu, 0xCAE78587u, 0x7A1541C9u), v.c1) + + select(uint4(0xF83BD927u, 0x6A243BCBu, 0x509B84C9u, 0x91D13847u), uint4(0x52F7230Fu, 0xCF286E83u, 0xE121E6ADu, 0xC9CA1249u), v.c2)); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x3.gen.cs.meta new file mode 100644 index 0000000..4351f47 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3e9b9173355b4d25aad23fb08782200 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x4.gen.cs new file mode 100644 index 0000000..a4e236a --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x4.gen.cs @@ -0,0 +1,229 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct bool4x4 : System.IEquatable + { + public bool4 c0; + public bool4 c1; + public bool4 c2; + public bool4 c3; + + + /// Constructs a bool4x4 matrix from four bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4x4(bool4 c0, bool4 c1, bool4 c2, bool4 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a bool4x4 matrix from 16 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4x4(bool m00, bool m01, bool m02, bool m03, + bool m10, bool m11, bool m12, bool m13, + bool m20, bool m21, bool m22, bool m23, + bool m30, bool m31, bool m32, bool m33) + { + this.c0 = new bool4(m00, m10, m20, m30); + this.c1 = new bool4(m01, m11, m21, m31); + this.c2 = new bool4(m02, m12, m22, m32); + this.c3 = new bool4(m03, m13, m23, m33); + } + + /// Constructs a bool4x4 matrix from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4x4(bool v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + + /// Implicitly converts a single bool value to a bool4x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator bool4x4(bool v) { return new bool4x4(v); } + + + /// Returns the result of a componentwise equality operation on two bool4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (bool4x4 lhs, bool4x4 rhs) { return new bool4x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a bool4x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (bool4x4 lhs, bool rhs) { return new bool4x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a bool value and a bool4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (bool lhs, bool4x4 rhs) { return new bool4x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two bool4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (bool4x4 lhs, bool4x4 rhs) { return new bool4x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a bool4x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (bool4x4 lhs, bool rhs) { return new bool4x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a bool value and a bool4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (bool lhs, bool4x4 rhs) { return new bool4x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + /// Returns the result of a componentwise not operation on a bool4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator ! (bool4x4 val) { return new bool4x4 (!val.c0, !val.c1, !val.c2, !val.c3); } + + + /// Returns the result of a componentwise bitwise and operation on two bool4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator & (bool4x4 lhs, bool4x4 rhs) { return new bool4x4 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2, lhs.c3 & rhs.c3); } + + /// Returns the result of a componentwise bitwise and operation on a bool4x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator & (bool4x4 lhs, bool rhs) { return new bool4x4 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs, lhs.c3 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a bool value and a bool4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator & (bool lhs, bool4x4 rhs) { return new bool4x4 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2, lhs & rhs.c3); } + + + /// Returns the result of a componentwise bitwise or operation on two bool4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator | (bool4x4 lhs, bool4x4 rhs) { return new bool4x4 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2, lhs.c3 | rhs.c3); } + + /// Returns the result of a componentwise bitwise or operation on a bool4x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator | (bool4x4 lhs, bool rhs) { return new bool4x4 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs, lhs.c3 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a bool value and a bool4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator | (bool lhs, bool4x4 rhs) { return new bool4x4 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2, lhs | rhs.c3); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two bool4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator ^ (bool4x4 lhs, bool4x4 rhs) { return new bool4x4 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2, lhs.c3 ^ rhs.c3); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool4x4 matrix and a bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator ^ (bool4x4 lhs, bool rhs) { return new bool4x4 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs, lhs.c3 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator ^ (bool lhs, bool4x4 rhs) { return new bool4x4 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2, lhs ^ rhs.c3); } + + + + /// Returns the bool4 element at a specified index. + unsafe public ref bool4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (bool4x4* array = &this) { return ref ((bool4*)array)[index]; } + } + } + + /// Returns true if the bool4x4 is equal to a given bool4x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(bool4x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the bool4x4 is equal to a given bool4x4, false otherwise. + public override bool Equals(object o) { return Equals((bool4x4)o); } + + + /// Returns a hash code for the bool4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the bool4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("bool4x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z, c0.w, c1.w, c2.w, c3.w); + } + + } + + public static partial class math + { + /// Returns a bool4x4 matrix constructed from four bool4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 bool4x4(bool4 c0, bool4 c1, bool4 c2, bool4 c3) { return new bool4x4(c0, c1, c2, c3); } + + /// Returns a bool4x4 matrix constructed from from 16 bool values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 bool4x4(bool m00, bool m01, bool m02, bool m03, + bool m10, bool m11, bool m12, bool m13, + bool m20, bool m21, bool m22, bool m23, + bool m30, bool m31, bool m32, bool m33) + { + return new bool4x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23, + m30, m31, m32, m33); + } + + /// Returns a bool4x4 matrix constructed from a single bool value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 bool4x4(bool v) { return new bool4x4(v); } + + /// Return the bool4x4 transpose of a bool4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 transpose(bool4x4 v) + { + return bool4x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w, + v.c3.x, v.c3.y, v.c3.z, v.c3.w); + } + + /// Returns a uint hash code of a bool4x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(bool4x4 v) + { + return csum(select(uint4(0xD19764C7u, 0xB5D0BF63u, 0xF9102C5Fu, 0x9881FB9Fu), uint4(0x56A1530Du, 0x804B722Du, 0x738E50E5u, 0x4FC93C25u), v.c0) + + select(uint4(0xCD0445A5u, 0xD2B90D9Bu, 0xD35C9B2Du, 0xA10D9E27u), uint4(0x568DAAA9u, 0x7530254Fu, 0x9F090439u, 0x5E9F85C9u), v.c1) + + select(uint4(0x8C4CA03Fu, 0xB8D969EDu, 0xAC5DB57Bu, 0xA91A02EDu), uint4(0xB3C49313u, 0xF43A9ABBu, 0x84E7E01Bu, 0x8E055BE5u), v.c2) + + select(uint4(0x6E624EB7u, 0x7383ED49u, 0xDD49C23Bu, 0xEBD0D005u), uint4(0x91475DF7u, 0x55E84827u, 0x90A285BBu, 0x5D19E1D5u), v.c3)); + } + + /// + /// Returns a uint4 vector hash code of a bool4x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(bool4x4 v) + { + return (select(uint4(0xFAAF07DDu, 0x625C45BDu, 0xC9F27FCBu, 0x6D2523B1u), uint4(0x6E2BF6A9u, 0xCC74B3B7u, 0x83B58237u, 0x833E3E29u), v.c0) + + select(uint4(0xA9D919BFu, 0xC3EC1D97u, 0xB8B208C7u, 0x5D3ED947u), uint4(0x4473BBB1u, 0xCBA11D5Fu, 0x685835CFu, 0xC3D32AE1u), v.c1) + + select(uint4(0xB966942Fu, 0xFE9856B3u, 0xFA3A3285u, 0xAD55999Du), uint4(0xDCDD5341u, 0x94DDD769u, 0xA1E92D39u, 0x4583C801u), v.c2) + + select(uint4(0x9536A0F5u, 0xAF816615u, 0x9AF8D62Du, 0xE3600729u), uint4(0x5F17300Du, 0x670D6809u, 0x7AF32C49u, 0xAE131389u), v.c3)); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x4.gen.cs.meta new file mode 100644 index 0000000..bee4ddf --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/bool4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec21b45eb93de4c05962f95aee69aee6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2.gen.cs new file mode 100644 index 0000000..3247cf8 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2.gen.cs @@ -0,0 +1,760 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(double2.DebuggerProxy))] + [System.Serializable] + public partial struct double2 : System.IEquatable, IFormattable + { + public double x; + public double y; + + /// double2 zero value. + public static readonly double2 zero; + + /// Constructs a double2 vector from two double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(double x, double y) + { + this.x = x; + this.y = y; + } + + /// Constructs a double2 vector from a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(double2 xy) + { + this.x = xy.x; + this.y = xy.y; + } + + /// Constructs a double2 vector from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(double v) + { + this.x = v; + this.y = v; + } + + /// Constructs a double2 vector from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(bool v) + { + this.x = v ? 1.0 : 0.0; + this.y = v ? 1.0 : 0.0; + } + + /// Constructs a double2 vector from a bool2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(bool2 v) + { + this.x = v.x ? 1.0 : 0.0; + this.y = v.y ? 1.0 : 0.0; + } + + /// Constructs a double2 vector from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(int v) + { + this.x = v; + this.y = v; + } + + /// Constructs a double2 vector from a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(int2 v) + { + this.x = v.x; + this.y = v.y; + } + + /// Constructs a double2 vector from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(uint v) + { + this.x = v; + this.y = v; + } + + /// Constructs a double2 vector from a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(uint2 v) + { + this.x = v.x; + this.y = v.y; + } + + /// Constructs a double2 vector from a single half value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(half v) + { + this.x = v; + this.y = v; + } + + /// Constructs a double2 vector from a half2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(half2 v) + { + this.x = v.x; + this.y = v.y; + } + + /// Constructs a double2 vector from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(float v) + { + this.x = v; + this.y = v; + } + + /// Constructs a double2 vector from a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2(float2 v) + { + this.x = v.x; + this.y = v.y; + } + + + /// Implicitly converts a single double value to a double2 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2(double v) { return new double2(v); } + + /// Explicitly converts a single bool value to a double2 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double2(bool v) { return new double2(v); } + + /// Explicitly converts a bool2 vector to a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double2(bool2 v) { return new double2(v); } + + /// Implicitly converts a single int value to a double2 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2(int v) { return new double2(v); } + + /// Implicitly converts a int2 vector to a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2(int2 v) { return new double2(v); } + + /// Implicitly converts a single uint value to a double2 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2(uint v) { return new double2(v); } + + /// Implicitly converts a uint2 vector to a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2(uint2 v) { return new double2(v); } + + /// Implicitly converts a single half value to a double2 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2(half v) { return new double2(v); } + + /// Implicitly converts a half2 vector to a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2(half2 v) { return new double2(v); } + + /// Implicitly converts a single float value to a double2 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2(float v) { return new double2(v); } + + /// Implicitly converts a float2 vector to a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2(float2 v) { return new double2(v); } + + + /// Returns the result of a componentwise multiplication operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator * (double2 lhs, double2 rhs) { return new double2 (lhs.x * rhs.x, lhs.y * rhs.y); } + + /// Returns the result of a componentwise multiplication operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator * (double2 lhs, double rhs) { return new double2 (lhs.x * rhs, lhs.y * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator * (double lhs, double2 rhs) { return new double2 (lhs * rhs.x, lhs * rhs.y); } + + + /// Returns the result of a componentwise addition operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator + (double2 lhs, double2 rhs) { return new double2 (lhs.x + rhs.x, lhs.y + rhs.y); } + + /// Returns the result of a componentwise addition operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator + (double2 lhs, double rhs) { return new double2 (lhs.x + rhs, lhs.y + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator + (double lhs, double2 rhs) { return new double2 (lhs + rhs.x, lhs + rhs.y); } + + + /// Returns the result of a componentwise subtraction operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator - (double2 lhs, double2 rhs) { return new double2 (lhs.x - rhs.x, lhs.y - rhs.y); } + + /// Returns the result of a componentwise subtraction operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator - (double2 lhs, double rhs) { return new double2 (lhs.x - rhs, lhs.y - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator - (double lhs, double2 rhs) { return new double2 (lhs - rhs.x, lhs - rhs.y); } + + + /// Returns the result of a componentwise division operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator / (double2 lhs, double2 rhs) { return new double2 (lhs.x / rhs.x, lhs.y / rhs.y); } + + /// Returns the result of a componentwise division operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator / (double2 lhs, double rhs) { return new double2 (lhs.x / rhs, lhs.y / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator / (double lhs, double2 rhs) { return new double2 (lhs / rhs.x, lhs / rhs.y); } + + + /// Returns the result of a componentwise modulus operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator % (double2 lhs, double2 rhs) { return new double2 (lhs.x % rhs.x, lhs.y % rhs.y); } + + /// Returns the result of a componentwise modulus operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator % (double2 lhs, double rhs) { return new double2 (lhs.x % rhs, lhs.y % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator % (double lhs, double2 rhs) { return new double2 (lhs % rhs.x, lhs % rhs.y); } + + + /// Returns the result of a componentwise increment operation on a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator ++ (double2 val) { return new double2 (++val.x, ++val.y); } + + + /// Returns the result of a componentwise decrement operation on a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator -- (double2 val) { return new double2 (--val.x, --val.y); } + + + /// Returns the result of a componentwise less than operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (double2 lhs, double2 rhs) { return new bool2 (lhs.x < rhs.x, lhs.y < rhs.y); } + + /// Returns the result of a componentwise less than operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (double2 lhs, double rhs) { return new bool2 (lhs.x < rhs, lhs.y < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (double lhs, double2 rhs) { return new bool2 (lhs < rhs.x, lhs < rhs.y); } + + + /// Returns the result of a componentwise less or equal operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (double2 lhs, double2 rhs) { return new bool2 (lhs.x <= rhs.x, lhs.y <= rhs.y); } + + /// Returns the result of a componentwise less or equal operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (double2 lhs, double rhs) { return new bool2 (lhs.x <= rhs, lhs.y <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (double lhs, double2 rhs) { return new bool2 (lhs <= rhs.x, lhs <= rhs.y); } + + + /// Returns the result of a componentwise greater than operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (double2 lhs, double2 rhs) { return new bool2 (lhs.x > rhs.x, lhs.y > rhs.y); } + + /// Returns the result of a componentwise greater than operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (double2 lhs, double rhs) { return new bool2 (lhs.x > rhs, lhs.y > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (double lhs, double2 rhs) { return new bool2 (lhs > rhs.x, lhs > rhs.y); } + + + /// Returns the result of a componentwise greater or equal operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (double2 lhs, double2 rhs) { return new bool2 (lhs.x >= rhs.x, lhs.y >= rhs.y); } + + /// Returns the result of a componentwise greater or equal operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (double2 lhs, double rhs) { return new bool2 (lhs.x >= rhs, lhs.y >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (double lhs, double2 rhs) { return new bool2 (lhs >= rhs.x, lhs >= rhs.y); } + + + /// Returns the result of a componentwise unary minus operation on a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator - (double2 val) { return new double2 (-val.x, -val.y); } + + + /// Returns the result of a componentwise unary plus operation on a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 operator + (double2 val) { return new double2 (+val.x, +val.y); } + + + /// Returns the result of a componentwise equality operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (double2 lhs, double2 rhs) { return new bool2 (lhs.x == rhs.x, lhs.y == rhs.y); } + + /// Returns the result of a componentwise equality operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (double2 lhs, double rhs) { return new bool2 (lhs.x == rhs, lhs.y == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (double lhs, double2 rhs) { return new bool2 (lhs == rhs.x, lhs == rhs.y); } + + + /// Returns the result of a componentwise not equal operation on two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (double2 lhs, double2 rhs) { return new bool2 (lhs.x != rhs.x, lhs.y != rhs.y); } + + /// Returns the result of a componentwise not equal operation on a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (double2 lhs, double rhs) { return new bool2 (lhs.x != rhs, lhs.y != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (double lhs, double2 rhs) { return new bool2 (lhs != rhs.x, lhs != rhs.y); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(y, y); } + } + + + + /// Returns the double element at a specified index. + unsafe public double this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (double2* array = &this) { return ((double*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (double* array = &x) { array[index] = value; } + } + } + + /// Returns true if the double2 is equal to a given double2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double2 rhs) { return x == rhs.x && y == rhs.y; } + + /// Returns true if the double2 is equal to a given double2, false otherwise. + public override bool Equals(object o) { return Equals((double2)o); } + + + /// Returns a hash code for the double2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double2({0}, {1})", x, y); + } + + /// Returns a string representation of the double2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double2({0}, {1})", x.ToString(format, formatProvider), y.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public double x; + public double y; + public DebuggerProxy(double2 v) + { + x = v.x; + y = v.y; + } + } + + } + + public static partial class math + { + /// Returns a double2 vector constructed from two double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(double x, double y) { return new double2(x, y); } + + /// Returns a double2 vector constructed from a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(double2 xy) { return new double2(xy); } + + /// Returns a double2 vector constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(double v) { return new double2(v); } + + /// Returns a double2 vector constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(bool v) { return new double2(v); } + + /// Return a double2 vector constructed from a bool2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(bool2 v) { return new double2(v); } + + /// Returns a double2 vector constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(int v) { return new double2(v); } + + /// Return a double2 vector constructed from a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(int2 v) { return new double2(v); } + + /// Returns a double2 vector constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(uint v) { return new double2(v); } + + /// Return a double2 vector constructed from a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(uint2 v) { return new double2(v); } + + /// Returns a double2 vector constructed from a single half value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(half v) { return new double2(v); } + + /// Return a double2 vector constructed from a half2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(half2 v) { return new double2(v); } + + /// Returns a double2 vector constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(float v) { return new double2(v); } + + /// Return a double2 vector constructed from a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 double2(float2 v) { return new double2(v); } + + /// Returns a uint hash code of a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double2 v) + { + return csum(fold_to_uint(v) * uint2(0x9536A0F5u, 0xAF816615u)) + 0x9AF8D62Du; + } + + /// + /// Returns a uint2 vector hash code of a double2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(double2 v) + { + return (fold_to_uint(v) * uint2(0xE3600729u, 0x5F17300Du)) + 0x670D6809u; + } + + /// Returns the result of specified shuffling of the components from two double2 vectors into a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double shuffle(double2 a, double2 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two double2 vectors into a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 shuffle(double2 a, double2 b, ShuffleComponent x, ShuffleComponent y) + { + return double2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two double2 vectors into a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 shuffle(double2 a, double2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return double3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two double2 vectors into a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 shuffle(double2 a, double2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return double4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static double select_shuffle_component(double2 a, double2 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2.gen.cs.meta new file mode 100644 index 0000000..df2c3ce --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8df28422e0a0640c1896e8de330e2640 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x2.gen.cs new file mode 100644 index 0000000..4a404c5 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x2.gen.cs @@ -0,0 +1,468 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct double2x2 : System.IEquatable, IFormattable + { + public double2 c0; + public double2 c1; + + /// double2x2 identity transform. + public static readonly double2x2 identity = new double2x2(1.0, 0.0, 0.0, 1.0); + + /// double2x2 zero value. + public static readonly double2x2 zero; + + /// Constructs a double2x2 matrix from two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(double2 c0, double2 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a double2x2 matrix from 4 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(double m00, double m01, + double m10, double m11) + { + this.c0 = new double2(m00, m10); + this.c1 = new double2(m01, m11); + } + + /// Constructs a double2x2 matrix from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(double v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double2x2 matrix from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(bool v) + { + this.c0 = math.select(new double2(0.0), new double2(1.0), v); + this.c1 = math.select(new double2(0.0), new double2(1.0), v); + } + + /// Constructs a double2x2 matrix from a bool2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(bool2x2 v) + { + this.c0 = math.select(new double2(0.0), new double2(1.0), v.c0); + this.c1 = math.select(new double2(0.0), new double2(1.0), v.c1); + } + + /// Constructs a double2x2 matrix from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(int v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double2x2 matrix from a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(int2x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a double2x2 matrix from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(uint v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double2x2 matrix from a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(uint2x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a double2x2 matrix from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(float v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double2x2 matrix from a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x2(float2x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + + /// Implicitly converts a single double value to a double2x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x2(double v) { return new double2x2(v); } + + /// Explicitly converts a single bool value to a double2x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double2x2(bool v) { return new double2x2(v); } + + /// Explicitly converts a bool2x2 matrix to a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double2x2(bool2x2 v) { return new double2x2(v); } + + /// Implicitly converts a single int value to a double2x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x2(int v) { return new double2x2(v); } + + /// Implicitly converts a int2x2 matrix to a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x2(int2x2 v) { return new double2x2(v); } + + /// Implicitly converts a single uint value to a double2x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x2(uint v) { return new double2x2(v); } + + /// Implicitly converts a uint2x2 matrix to a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x2(uint2x2 v) { return new double2x2(v); } + + /// Implicitly converts a single float value to a double2x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x2(float v) { return new double2x2(v); } + + /// Implicitly converts a float2x2 matrix to a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x2(float2x2 v) { return new double2x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator * (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator * (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator * (double lhs, double2x2 rhs) { return new double2x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator + (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator + (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator + (double lhs, double2x2 rhs) { return new double2x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator - (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator - (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator - (double lhs, double2x2 rhs) { return new double2x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator / (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator / (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator / (double lhs, double2x2 rhs) { return new double2x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator % (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator % (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator % (double lhs, double2x2 rhs) { return new double2x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator ++ (double2x2 val) { return new double2x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator -- (double2x2 val) { return new double2x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (double lhs, double2x2 rhs) { return new bool2x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (double lhs, double2x2 rhs) { return new bool2x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (double lhs, double2x2 rhs) { return new bool2x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (double lhs, double2x2 rhs) { return new bool2x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator - (double2x2 val) { return new double2x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 operator + (double2x2 val) { return new double2x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise equality operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (double lhs, double2x2 rhs) { return new bool2x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two double2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a double2x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (double lhs, double2x2 rhs) { return new bool2x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + + /// Returns the double2 element at a specified index. + unsafe public ref double2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (double2x2* array = &this) { return ref ((double2*)array)[index]; } + } + } + + /// Returns true if the double2x2 is equal to a given double2x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double2x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the double2x2 is equal to a given double2x2, false otherwise. + public override bool Equals(object o) { return Equals((double2x2)o); } + + + /// Returns a hash code for the double2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double2x2({0}, {1}, {2}, {3})", c0.x, c1.x, c0.y, c1.y); + } + + /// Returns a string representation of the double2x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double2x2({0}, {1}, {2}, {3})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a double2x2 matrix constructed from two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(double2 c0, double2 c1) { return new double2x2(c0, c1); } + + /// Returns a double2x2 matrix constructed from from 4 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(double m00, double m01, + double m10, double m11) + { + return new double2x2(m00, m01, + m10, m11); + } + + /// Returns a double2x2 matrix constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(double v) { return new double2x2(v); } + + /// Returns a double2x2 matrix constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(bool v) { return new double2x2(v); } + + /// Return a double2x2 matrix constructed from a bool2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(bool2x2 v) { return new double2x2(v); } + + /// Returns a double2x2 matrix constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(int v) { return new double2x2(v); } + + /// Return a double2x2 matrix constructed from a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(int2x2 v) { return new double2x2(v); } + + /// Returns a double2x2 matrix constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(uint v) { return new double2x2(v); } + + /// Return a double2x2 matrix constructed from a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(uint2x2 v) { return new double2x2(v); } + + /// Returns a double2x2 matrix constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(float v) { return new double2x2(v); } + + /// Return a double2x2 matrix constructed from a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 double2x2(float2x2 v) { return new double2x2(v); } + + /// Return the double2x2 transpose of a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 transpose(double2x2 v) + { + return double2x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y); + } + + /// Returns the double2x2 full inverse of a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 inverse(double2x2 m) + { + double a = m.c0.x; + double b = m.c1.x; + double c = m.c0.y; + double d = m.c1.y; + + double det = a * d - b * c; + + return double2x2(d, -b, -c, a) * (1.0 / det); + } + + /// Returns the determinant of a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double determinant(double2x2 m) + { + double a = m.c0.x; + double b = m.c1.x; + double c = m.c0.y; + double d = m.c1.y; + + return a * d - b * c; + } + + /// Returns a uint hash code of a double2x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double2x2 v) + { + return csum(fold_to_uint(v.c0) * uint2(0xFD80290Bu, 0x8B65ADB7u) + + fold_to_uint(v.c1) * uint2(0xDFF4F563u, 0x7069770Du)) + 0xD1224537u; + } + + /// + /// Returns a uint2 vector hash code of a double2x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(double2x2 v) + { + return (fold_to_uint(v.c0) * uint2(0xE99ED6F3u, 0x48125549u) + + fold_to_uint(v.c1) * uint2(0xEEE2123Bu, 0xE3AD9FE5u)) + 0xCE1CF8BFu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x2.gen.cs.meta new file mode 100644 index 0000000..c8bf01b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3faab235f9f6845bbbd1d94d1376d896 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x3.gen.cs new file mode 100644 index 0000000..d0f77ef --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x3.gen.cs @@ -0,0 +1,454 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct double2x3 : System.IEquatable, IFormattable + { + public double2 c0; + public double2 c1; + public double2 c2; + + /// double2x3 zero value. + public static readonly double2x3 zero; + + /// Constructs a double2x3 matrix from three double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(double2 c0, double2 c1, double2 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a double2x3 matrix from 6 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(double m00, double m01, double m02, + double m10, double m11, double m12) + { + this.c0 = new double2(m00, m10); + this.c1 = new double2(m01, m11); + this.c2 = new double2(m02, m12); + } + + /// Constructs a double2x3 matrix from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(double v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double2x3 matrix from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(bool v) + { + this.c0 = math.select(new double2(0.0), new double2(1.0), v); + this.c1 = math.select(new double2(0.0), new double2(1.0), v); + this.c2 = math.select(new double2(0.0), new double2(1.0), v); + } + + /// Constructs a double2x3 matrix from a bool2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(bool2x3 v) + { + this.c0 = math.select(new double2(0.0), new double2(1.0), v.c0); + this.c1 = math.select(new double2(0.0), new double2(1.0), v.c1); + this.c2 = math.select(new double2(0.0), new double2(1.0), v.c2); + } + + /// Constructs a double2x3 matrix from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double2x3 matrix from a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(int2x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a double2x3 matrix from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double2x3 matrix from a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(uint2x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a double2x3 matrix from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double2x3 matrix from a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x3(float2x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + + /// Implicitly converts a single double value to a double2x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x3(double v) { return new double2x3(v); } + + /// Explicitly converts a single bool value to a double2x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double2x3(bool v) { return new double2x3(v); } + + /// Explicitly converts a bool2x3 matrix to a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double2x3(bool2x3 v) { return new double2x3(v); } + + /// Implicitly converts a single int value to a double2x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x3(int v) { return new double2x3(v); } + + /// Implicitly converts a int2x3 matrix to a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x3(int2x3 v) { return new double2x3(v); } + + /// Implicitly converts a single uint value to a double2x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x3(uint v) { return new double2x3(v); } + + /// Implicitly converts a uint2x3 matrix to a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x3(uint2x3 v) { return new double2x3(v); } + + /// Implicitly converts a single float value to a double2x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x3(float v) { return new double2x3(v); } + + /// Implicitly converts a float2x3 matrix to a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x3(float2x3 v) { return new double2x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator * (double2x3 lhs, double2x3 rhs) { return new double2x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator * (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator * (double lhs, double2x3 rhs) { return new double2x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator + (double2x3 lhs, double2x3 rhs) { return new double2x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator + (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator + (double lhs, double2x3 rhs) { return new double2x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator - (double2x3 lhs, double2x3 rhs) { return new double2x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator - (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator - (double lhs, double2x3 rhs) { return new double2x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator / (double2x3 lhs, double2x3 rhs) { return new double2x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator / (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator / (double lhs, double2x3 rhs) { return new double2x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator % (double2x3 lhs, double2x3 rhs) { return new double2x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator % (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator % (double lhs, double2x3 rhs) { return new double2x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator ++ (double2x3 val) { return new double2x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator -- (double2x3 val) { return new double2x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (double2x3 lhs, double2x3 rhs) { return new bool2x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (double lhs, double2x3 rhs) { return new bool2x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (double2x3 lhs, double2x3 rhs) { return new bool2x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (double lhs, double2x3 rhs) { return new bool2x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (double2x3 lhs, double2x3 rhs) { return new bool2x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (double lhs, double2x3 rhs) { return new bool2x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (double2x3 lhs, double2x3 rhs) { return new bool2x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (double lhs, double2x3 rhs) { return new bool2x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator - (double2x3 val) { return new double2x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 operator + (double2x3 val) { return new double2x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise equality operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (double2x3 lhs, double2x3 rhs) { return new bool2x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (double lhs, double2x3 rhs) { return new bool2x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two double2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (double2x3 lhs, double2x3 rhs) { return new bool2x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a double2x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (double lhs, double2x3 rhs) { return new bool2x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + + /// Returns the double2 element at a specified index. + unsafe public ref double2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (double2x3* array = &this) { return ref ((double2*)array)[index]; } + } + } + + /// Returns true if the double2x3 is equal to a given double2x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double2x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the double2x3 is equal to a given double2x3, false otherwise. + public override bool Equals(object o) { return Equals((double2x3)o); } + + + /// Returns a hash code for the double2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double2x3({0}, {1}, {2}, {3}, {4}, {5})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y); + } + + /// Returns a string representation of the double2x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double2x3({0}, {1}, {2}, {3}, {4}, {5})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a double2x3 matrix constructed from three double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(double2 c0, double2 c1, double2 c2) { return new double2x3(c0, c1, c2); } + + /// Returns a double2x3 matrix constructed from from 6 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(double m00, double m01, double m02, + double m10, double m11, double m12) + { + return new double2x3(m00, m01, m02, + m10, m11, m12); + } + + /// Returns a double2x3 matrix constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(double v) { return new double2x3(v); } + + /// Returns a double2x3 matrix constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(bool v) { return new double2x3(v); } + + /// Return a double2x3 matrix constructed from a bool2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(bool2x3 v) { return new double2x3(v); } + + /// Returns a double2x3 matrix constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(int v) { return new double2x3(v); } + + /// Return a double2x3 matrix constructed from a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(int2x3 v) { return new double2x3(v); } + + /// Returns a double2x3 matrix constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(uint v) { return new double2x3(v); } + + /// Return a double2x3 matrix constructed from a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(uint2x3 v) { return new double2x3(v); } + + /// Returns a double2x3 matrix constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(float v) { return new double2x3(v); } + + /// Return a double2x3 matrix constructed from a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 double2x3(float2x3 v) { return new double2x3(v); } + + /// Return the double3x2 transpose of a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 transpose(double2x3 v) + { + return double3x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y); + } + + /// Returns a uint hash code of a double2x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double2x3 v) + { + return csum(fold_to_uint(v.c0) * uint2(0xF25BE857u, 0x9BC17CE7u) + + fold_to_uint(v.c1) * uint2(0xC8B86851u, 0x64095221u) + + fold_to_uint(v.c2) * uint2(0xADF428FFu, 0xA3977109u)) + 0x745ED837u; + } + + /// + /// Returns a uint2 vector hash code of a double2x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(double2x3 v) + { + return (fold_to_uint(v.c0) * uint2(0x9CDC88F5u, 0xFA62D721u) + + fold_to_uint(v.c1) * uint2(0x7E4DB1CFu, 0x68EEE0F5u) + + fold_to_uint(v.c2) * uint2(0xBC3B0A59u, 0x816EFB5Du)) + 0xA24E82B7u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x3.gen.cs.meta new file mode 100644 index 0000000..e6617d1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c05b76c6656d48b1a5a25086c9277c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x4.gen.cs new file mode 100644 index 0000000..045315e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x4.gen.cs @@ -0,0 +1,469 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct double2x4 : System.IEquatable, IFormattable + { + public double2 c0; + public double2 c1; + public double2 c2; + public double2 c3; + + /// double2x4 zero value. + public static readonly double2x4 zero; + + /// Constructs a double2x4 matrix from four double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(double2 c0, double2 c1, double2 c2, double2 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a double2x4 matrix from 8 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(double m00, double m01, double m02, double m03, + double m10, double m11, double m12, double m13) + { + this.c0 = new double2(m00, m10); + this.c1 = new double2(m01, m11); + this.c2 = new double2(m02, m12); + this.c3 = new double2(m03, m13); + } + + /// Constructs a double2x4 matrix from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(double v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double2x4 matrix from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(bool v) + { + this.c0 = math.select(new double2(0.0), new double2(1.0), v); + this.c1 = math.select(new double2(0.0), new double2(1.0), v); + this.c2 = math.select(new double2(0.0), new double2(1.0), v); + this.c3 = math.select(new double2(0.0), new double2(1.0), v); + } + + /// Constructs a double2x4 matrix from a bool2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(bool2x4 v) + { + this.c0 = math.select(new double2(0.0), new double2(1.0), v.c0); + this.c1 = math.select(new double2(0.0), new double2(1.0), v.c1); + this.c2 = math.select(new double2(0.0), new double2(1.0), v.c2); + this.c3 = math.select(new double2(0.0), new double2(1.0), v.c3); + } + + /// Constructs a double2x4 matrix from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double2x4 matrix from a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(int2x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a double2x4 matrix from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double2x4 matrix from a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(uint2x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a double2x4 matrix from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double2x4 matrix from a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2x4(float2x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + + /// Implicitly converts a single double value to a double2x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x4(double v) { return new double2x4(v); } + + /// Explicitly converts a single bool value to a double2x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double2x4(bool v) { return new double2x4(v); } + + /// Explicitly converts a bool2x4 matrix to a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double2x4(bool2x4 v) { return new double2x4(v); } + + /// Implicitly converts a single int value to a double2x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x4(int v) { return new double2x4(v); } + + /// Implicitly converts a int2x4 matrix to a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x4(int2x4 v) { return new double2x4(v); } + + /// Implicitly converts a single uint value to a double2x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x4(uint v) { return new double2x4(v); } + + /// Implicitly converts a uint2x4 matrix to a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x4(uint2x4 v) { return new double2x4(v); } + + /// Implicitly converts a single float value to a double2x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x4(float v) { return new double2x4(v); } + + /// Implicitly converts a float2x4 matrix to a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double2x4(float2x4 v) { return new double2x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator * (double2x4 lhs, double2x4 rhs) { return new double2x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator * (double2x4 lhs, double rhs) { return new double2x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator * (double lhs, double2x4 rhs) { return new double2x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator + (double2x4 lhs, double2x4 rhs) { return new double2x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator + (double2x4 lhs, double rhs) { return new double2x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator + (double lhs, double2x4 rhs) { return new double2x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator - (double2x4 lhs, double2x4 rhs) { return new double2x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator - (double2x4 lhs, double rhs) { return new double2x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator - (double lhs, double2x4 rhs) { return new double2x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator / (double2x4 lhs, double2x4 rhs) { return new double2x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator / (double2x4 lhs, double rhs) { return new double2x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator / (double lhs, double2x4 rhs) { return new double2x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator % (double2x4 lhs, double2x4 rhs) { return new double2x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator % (double2x4 lhs, double rhs) { return new double2x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator % (double lhs, double2x4 rhs) { return new double2x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator ++ (double2x4 val) { return new double2x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator -- (double2x4 val) { return new double2x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (double2x4 lhs, double2x4 rhs) { return new bool2x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (double2x4 lhs, double rhs) { return new bool2x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (double lhs, double2x4 rhs) { return new bool2x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (double2x4 lhs, double2x4 rhs) { return new bool2x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (double2x4 lhs, double rhs) { return new bool2x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (double lhs, double2x4 rhs) { return new bool2x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (double2x4 lhs, double2x4 rhs) { return new bool2x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (double2x4 lhs, double rhs) { return new bool2x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (double lhs, double2x4 rhs) { return new bool2x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (double2x4 lhs, double2x4 rhs) { return new bool2x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (double2x4 lhs, double rhs) { return new bool2x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (double lhs, double2x4 rhs) { return new bool2x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator - (double2x4 val) { return new double2x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 operator + (double2x4 val) { return new double2x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise equality operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (double2x4 lhs, double2x4 rhs) { return new bool2x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (double2x4 lhs, double rhs) { return new bool2x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (double lhs, double2x4 rhs) { return new bool2x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two double2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (double2x4 lhs, double2x4 rhs) { return new bool2x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a double2x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (double2x4 lhs, double rhs) { return new bool2x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (double lhs, double2x4 rhs) { return new bool2x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + + /// Returns the double2 element at a specified index. + unsafe public ref double2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (double2x4* array = &this) { return ref ((double2*)array)[index]; } + } + } + + /// Returns true if the double2x4 is equal to a given double2x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double2x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the double2x4 is equal to a given double2x4, false otherwise. + public override bool Equals(object o) { return Equals((double2x4)o); } + + + /// Returns a hash code for the double2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double2x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y); + } + + /// Returns a string representation of the double2x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double2x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a double2x4 matrix constructed from four double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(double2 c0, double2 c1, double2 c2, double2 c3) { return new double2x4(c0, c1, c2, c3); } + + /// Returns a double2x4 matrix constructed from from 8 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(double m00, double m01, double m02, double m03, + double m10, double m11, double m12, double m13) + { + return new double2x4(m00, m01, m02, m03, + m10, m11, m12, m13); + } + + /// Returns a double2x4 matrix constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(double v) { return new double2x4(v); } + + /// Returns a double2x4 matrix constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(bool v) { return new double2x4(v); } + + /// Return a double2x4 matrix constructed from a bool2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(bool2x4 v) { return new double2x4(v); } + + /// Returns a double2x4 matrix constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(int v) { return new double2x4(v); } + + /// Return a double2x4 matrix constructed from a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(int2x4 v) { return new double2x4(v); } + + /// Returns a double2x4 matrix constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(uint v) { return new double2x4(v); } + + /// Return a double2x4 matrix constructed from a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(uint2x4 v) { return new double2x4(v); } + + /// Returns a double2x4 matrix constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(float v) { return new double2x4(v); } + + /// Return a double2x4 matrix constructed from a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 double2x4(float2x4 v) { return new double2x4(v); } + + /// Return the double4x2 transpose of a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 transpose(double2x4 v) + { + return double4x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y, + v.c3.x, v.c3.y); + } + + /// Returns a uint hash code of a double2x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double2x4 v) + { + return csum(fold_to_uint(v.c0) * uint2(0x91475DF7u, 0x55E84827u) + + fold_to_uint(v.c1) * uint2(0x90A285BBu, 0x5D19E1D5u) + + fold_to_uint(v.c2) * uint2(0xFAAF07DDu, 0x625C45BDu) + + fold_to_uint(v.c3) * uint2(0xC9F27FCBu, 0x6D2523B1u)) + 0x6E2BF6A9u; + } + + /// + /// Returns a uint2 vector hash code of a double2x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(double2x4 v) + { + return (fold_to_uint(v.c0) * uint2(0xCC74B3B7u, 0x83B58237u) + + fold_to_uint(v.c1) * uint2(0x833E3E29u, 0xA9D919BFu) + + fold_to_uint(v.c2) * uint2(0xC3EC1D97u, 0xB8B208C7u) + + fold_to_uint(v.c3) * uint2(0x5D3ED947u, 0x4473BBB1u)) + 0xCBA11D5Fu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x4.gen.cs.meta new file mode 100644 index 0000000..835f943 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3e21dd148ae3e4bf98a4042d4756c4db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3.gen.cs new file mode 100644 index 0000000..7e97c9f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3.gen.cs @@ -0,0 +1,1538 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(double3.DebuggerProxy))] + [System.Serializable] + public partial struct double3 : System.IEquatable, IFormattable + { + public double x; + public double y; + public double z; + + /// double3 zero value. + public static readonly double3 zero; + + /// Constructs a double3 vector from three double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(double x, double y, double z) + { + this.x = x; + this.y = y; + this.z = z; + } + + /// Constructs a double3 vector from a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(double x, double2 yz) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + } + + /// Constructs a double3 vector from a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(double2 xy, double z) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + } + + /// Constructs a double3 vector from a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(double3 xyz) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + } + + /// Constructs a double3 vector from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(double v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a double3 vector from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(bool v) + { + this.x = v ? 1.0 : 0.0; + this.y = v ? 1.0 : 0.0; + this.z = v ? 1.0 : 0.0; + } + + /// Constructs a double3 vector from a bool3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(bool3 v) + { + this.x = v.x ? 1.0 : 0.0; + this.y = v.y ? 1.0 : 0.0; + this.z = v.z ? 1.0 : 0.0; + } + + /// Constructs a double3 vector from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(int v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a double3 vector from a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(int3 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + } + + /// Constructs a double3 vector from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(uint v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a double3 vector from a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(uint3 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + } + + /// Constructs a double3 vector from a single half value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(half v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a double3 vector from a half3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(half3 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + } + + /// Constructs a double3 vector from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(float v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a double3 vector from a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3(float3 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + } + + + /// Implicitly converts a single double value to a double3 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3(double v) { return new double3(v); } + + /// Explicitly converts a single bool value to a double3 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double3(bool v) { return new double3(v); } + + /// Explicitly converts a bool3 vector to a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double3(bool3 v) { return new double3(v); } + + /// Implicitly converts a single int value to a double3 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3(int v) { return new double3(v); } + + /// Implicitly converts a int3 vector to a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3(int3 v) { return new double3(v); } + + /// Implicitly converts a single uint value to a double3 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3(uint v) { return new double3(v); } + + /// Implicitly converts a uint3 vector to a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3(uint3 v) { return new double3(v); } + + /// Implicitly converts a single half value to a double3 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3(half v) { return new double3(v); } + + /// Implicitly converts a half3 vector to a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3(half3 v) { return new double3(v); } + + /// Implicitly converts a single float value to a double3 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3(float v) { return new double3(v); } + + /// Implicitly converts a float3 vector to a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3(float3 v) { return new double3(v); } + + + /// Returns the result of a componentwise multiplication operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator * (double3 lhs, double3 rhs) { return new double3 (lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z); } + + /// Returns the result of a componentwise multiplication operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator * (double3 lhs, double rhs) { return new double3 (lhs.x * rhs, lhs.y * rhs, lhs.z * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator * (double lhs, double3 rhs) { return new double3 (lhs * rhs.x, lhs * rhs.y, lhs * rhs.z); } + + + /// Returns the result of a componentwise addition operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator + (double3 lhs, double3 rhs) { return new double3 (lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z); } + + /// Returns the result of a componentwise addition operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator + (double3 lhs, double rhs) { return new double3 (lhs.x + rhs, lhs.y + rhs, lhs.z + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator + (double lhs, double3 rhs) { return new double3 (lhs + rhs.x, lhs + rhs.y, lhs + rhs.z); } + + + /// Returns the result of a componentwise subtraction operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator - (double3 lhs, double3 rhs) { return new double3 (lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z); } + + /// Returns the result of a componentwise subtraction operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator - (double3 lhs, double rhs) { return new double3 (lhs.x - rhs, lhs.y - rhs, lhs.z - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator - (double lhs, double3 rhs) { return new double3 (lhs - rhs.x, lhs - rhs.y, lhs - rhs.z); } + + + /// Returns the result of a componentwise division operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator / (double3 lhs, double3 rhs) { return new double3 (lhs.x / rhs.x, lhs.y / rhs.y, lhs.z / rhs.z); } + + /// Returns the result of a componentwise division operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator / (double3 lhs, double rhs) { return new double3 (lhs.x / rhs, lhs.y / rhs, lhs.z / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator / (double lhs, double3 rhs) { return new double3 (lhs / rhs.x, lhs / rhs.y, lhs / rhs.z); } + + + /// Returns the result of a componentwise modulus operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator % (double3 lhs, double3 rhs) { return new double3 (lhs.x % rhs.x, lhs.y % rhs.y, lhs.z % rhs.z); } + + /// Returns the result of a componentwise modulus operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator % (double3 lhs, double rhs) { return new double3 (lhs.x % rhs, lhs.y % rhs, lhs.z % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator % (double lhs, double3 rhs) { return new double3 (lhs % rhs.x, lhs % rhs.y, lhs % rhs.z); } + + + /// Returns the result of a componentwise increment operation on a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator ++ (double3 val) { return new double3 (++val.x, ++val.y, ++val.z); } + + + /// Returns the result of a componentwise decrement operation on a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator -- (double3 val) { return new double3 (--val.x, --val.y, --val.z); } + + + /// Returns the result of a componentwise less than operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (double3 lhs, double3 rhs) { return new bool3 (lhs.x < rhs.x, lhs.y < rhs.y, lhs.z < rhs.z); } + + /// Returns the result of a componentwise less than operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (double3 lhs, double rhs) { return new bool3 (lhs.x < rhs, lhs.y < rhs, lhs.z < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (double lhs, double3 rhs) { return new bool3 (lhs < rhs.x, lhs < rhs.y, lhs < rhs.z); } + + + /// Returns the result of a componentwise less or equal operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (double3 lhs, double3 rhs) { return new bool3 (lhs.x <= rhs.x, lhs.y <= rhs.y, lhs.z <= rhs.z); } + + /// Returns the result of a componentwise less or equal operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (double3 lhs, double rhs) { return new bool3 (lhs.x <= rhs, lhs.y <= rhs, lhs.z <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (double lhs, double3 rhs) { return new bool3 (lhs <= rhs.x, lhs <= rhs.y, lhs <= rhs.z); } + + + /// Returns the result of a componentwise greater than operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (double3 lhs, double3 rhs) { return new bool3 (lhs.x > rhs.x, lhs.y > rhs.y, lhs.z > rhs.z); } + + /// Returns the result of a componentwise greater than operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (double3 lhs, double rhs) { return new bool3 (lhs.x > rhs, lhs.y > rhs, lhs.z > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (double lhs, double3 rhs) { return new bool3 (lhs > rhs.x, lhs > rhs.y, lhs > rhs.z); } + + + /// Returns the result of a componentwise greater or equal operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (double3 lhs, double3 rhs) { return new bool3 (lhs.x >= rhs.x, lhs.y >= rhs.y, lhs.z >= rhs.z); } + + /// Returns the result of a componentwise greater or equal operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (double3 lhs, double rhs) { return new bool3 (lhs.x >= rhs, lhs.y >= rhs, lhs.z >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (double lhs, double3 rhs) { return new bool3 (lhs >= rhs.x, lhs >= rhs.y, lhs >= rhs.z); } + + + /// Returns the result of a componentwise unary minus operation on a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator - (double3 val) { return new double3 (-val.x, -val.y, -val.z); } + + + /// Returns the result of a componentwise unary plus operation on a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 operator + (double3 val) { return new double3 (+val.x, +val.y, +val.z); } + + + /// Returns the result of a componentwise equality operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (double3 lhs, double3 rhs) { return new bool3 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z); } + + /// Returns the result of a componentwise equality operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (double3 lhs, double rhs) { return new bool3 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (double lhs, double3 rhs) { return new bool3 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z); } + + + /// Returns the result of a componentwise not equal operation on two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (double3 lhs, double3 rhs) { return new bool3 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z); } + + /// Returns the result of a componentwise not equal operation on a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (double3 lhs, double rhs) { return new bool3 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (double lhs, double3 rhs) { return new bool3 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(z, z); } + } + + + + /// Returns the double element at a specified index. + unsafe public double this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (double3* array = &this) { return ((double*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (double* array = &x) { array[index] = value; } + } + } + + /// Returns true if the double3 is equal to a given double3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double3 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z; } + + /// Returns true if the double3 is equal to a given double3, false otherwise. + public override bool Equals(object o) { return Equals((double3)o); } + + + /// Returns a hash code for the double3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double3({0}, {1}, {2})", x, y, z); + } + + /// Returns a string representation of the double3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double3({0}, {1}, {2})", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public double x; + public double y; + public double z; + public DebuggerProxy(double3 v) + { + x = v.x; + y = v.y; + z = v.z; + } + } + + } + + public static partial class math + { + /// Returns a double3 vector constructed from three double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(double x, double y, double z) { return new double3(x, y, z); } + + /// Returns a double3 vector constructed from a double value and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(double x, double2 yz) { return new double3(x, yz); } + + /// Returns a double3 vector constructed from a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(double2 xy, double z) { return new double3(xy, z); } + + /// Returns a double3 vector constructed from a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(double3 xyz) { return new double3(xyz); } + + /// Returns a double3 vector constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(double v) { return new double3(v); } + + /// Returns a double3 vector constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(bool v) { return new double3(v); } + + /// Return a double3 vector constructed from a bool3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(bool3 v) { return new double3(v); } + + /// Returns a double3 vector constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(int v) { return new double3(v); } + + /// Return a double3 vector constructed from a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(int3 v) { return new double3(v); } + + /// Returns a double3 vector constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(uint v) { return new double3(v); } + + /// Return a double3 vector constructed from a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(uint3 v) { return new double3(v); } + + /// Returns a double3 vector constructed from a single half value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(half v) { return new double3(v); } + + /// Return a double3 vector constructed from a half3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(half3 v) { return new double3(v); } + + /// Returns a double3 vector constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(float v) { return new double3(v); } + + /// Return a double3 vector constructed from a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 double3(float3 v) { return new double3(v); } + + /// Returns a uint hash code of a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double3 v) + { + return csum(fold_to_uint(v) * uint3(0xAF0F3103u, 0xE4A056C7u, 0x841D8225u)) + 0xC9393C7Du; + } + + /// + /// Returns a uint3 vector hash code of a double3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(double3 v) + { + return (fold_to_uint(v) * uint3(0xD42EAFA3u, 0xD9AFD06Du, 0x97A65421u)) + 0x7809205Fu; + } + + /// Returns the result of specified shuffling of the components from two double3 vectors into a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double shuffle(double3 a, double3 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two double3 vectors into a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 shuffle(double3 a, double3 b, ShuffleComponent x, ShuffleComponent y) + { + return double2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two double3 vectors into a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 shuffle(double3 a, double3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return double3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two double3 vectors into a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 shuffle(double3 a, double3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return double4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static double select_shuffle_component(double3 a, double3 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3.gen.cs.meta new file mode 100644 index 0000000..f4476c9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8532598f495324d779593b36c90c7f7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x2.gen.cs new file mode 100644 index 0000000..6fac171 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x2.gen.cs @@ -0,0 +1,442 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct double3x2 : System.IEquatable, IFormattable + { + public double3 c0; + public double3 c1; + + /// double3x2 zero value. + public static readonly double3x2 zero; + + /// Constructs a double3x2 matrix from two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(double3 c0, double3 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a double3x2 matrix from 6 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(double m00, double m01, + double m10, double m11, + double m20, double m21) + { + this.c0 = new double3(m00, m10, m20); + this.c1 = new double3(m01, m11, m21); + } + + /// Constructs a double3x2 matrix from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(double v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double3x2 matrix from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(bool v) + { + this.c0 = math.select(new double3(0.0), new double3(1.0), v); + this.c1 = math.select(new double3(0.0), new double3(1.0), v); + } + + /// Constructs a double3x2 matrix from a bool3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(bool3x2 v) + { + this.c0 = math.select(new double3(0.0), new double3(1.0), v.c0); + this.c1 = math.select(new double3(0.0), new double3(1.0), v.c1); + } + + /// Constructs a double3x2 matrix from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(int v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double3x2 matrix from a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(int3x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a double3x2 matrix from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(uint v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double3x2 matrix from a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(uint3x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a double3x2 matrix from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(float v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double3x2 matrix from a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x2(float3x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + + /// Implicitly converts a single double value to a double3x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x2(double v) { return new double3x2(v); } + + /// Explicitly converts a single bool value to a double3x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double3x2(bool v) { return new double3x2(v); } + + /// Explicitly converts a bool3x2 matrix to a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double3x2(bool3x2 v) { return new double3x2(v); } + + /// Implicitly converts a single int value to a double3x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x2(int v) { return new double3x2(v); } + + /// Implicitly converts a int3x2 matrix to a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x2(int3x2 v) { return new double3x2(v); } + + /// Implicitly converts a single uint value to a double3x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x2(uint v) { return new double3x2(v); } + + /// Implicitly converts a uint3x2 matrix to a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x2(uint3x2 v) { return new double3x2(v); } + + /// Implicitly converts a single float value to a double3x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x2(float v) { return new double3x2(v); } + + /// Implicitly converts a float3x2 matrix to a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x2(float3x2 v) { return new double3x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator * (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator * (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator * (double lhs, double3x2 rhs) { return new double3x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator + (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator + (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator + (double lhs, double3x2 rhs) { return new double3x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator - (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator - (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator - (double lhs, double3x2 rhs) { return new double3x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator / (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator / (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator / (double lhs, double3x2 rhs) { return new double3x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator % (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator % (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator % (double lhs, double3x2 rhs) { return new double3x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator ++ (double3x2 val) { return new double3x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator -- (double3x2 val) { return new double3x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (double lhs, double3x2 rhs) { return new bool3x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (double lhs, double3x2 rhs) { return new bool3x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (double lhs, double3x2 rhs) { return new bool3x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (double lhs, double3x2 rhs) { return new bool3x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator - (double3x2 val) { return new double3x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 operator + (double3x2 val) { return new double3x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise equality operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (double lhs, double3x2 rhs) { return new bool3x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two double3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a double3x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (double lhs, double3x2 rhs) { return new bool3x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + + /// Returns the double3 element at a specified index. + unsafe public ref double3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (double3x2* array = &this) { return ref ((double3*)array)[index]; } + } + } + + /// Returns true if the double3x2 is equal to a given double3x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double3x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the double3x2 is equal to a given double3x2, false otherwise. + public override bool Equals(object o) { return Equals((double3x2)o); } + + + /// Returns a hash code for the double3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double3x2({0}, {1}, {2}, {3}, {4}, {5})", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z); + } + + /// Returns a string representation of the double3x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double3x2({0}, {1}, {2}, {3}, {4}, {5})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a double3x2 matrix constructed from two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(double3 c0, double3 c1) { return new double3x2(c0, c1); } + + /// Returns a double3x2 matrix constructed from from 6 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(double m00, double m01, + double m10, double m11, + double m20, double m21) + { + return new double3x2(m00, m01, + m10, m11, + m20, m21); + } + + /// Returns a double3x2 matrix constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(double v) { return new double3x2(v); } + + /// Returns a double3x2 matrix constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(bool v) { return new double3x2(v); } + + /// Return a double3x2 matrix constructed from a bool3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(bool3x2 v) { return new double3x2(v); } + + /// Returns a double3x2 matrix constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(int v) { return new double3x2(v); } + + /// Return a double3x2 matrix constructed from a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(int3x2 v) { return new double3x2(v); } + + /// Returns a double3x2 matrix constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(uint v) { return new double3x2(v); } + + /// Return a double3x2 matrix constructed from a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(uint3x2 v) { return new double3x2(v); } + + /// Returns a double3x2 matrix constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(float v) { return new double3x2(v); } + + /// Return a double3x2 matrix constructed from a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 double3x2(float3x2 v) { return new double3x2(v); } + + /// Return the double2x3 transpose of a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 transpose(double3x2 v) + { + return double2x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z); + } + + /// Returns a uint hash code of a double3x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double3x2 v) + { + return csum(fold_to_uint(v.c0) * uint3(0xEE390C97u, 0x9C8A2F05u, 0x4DDC6509u) + + fold_to_uint(v.c1) * uint3(0x7CF083CBu, 0x5C4D6CEDu, 0xF9137117u)) + 0xE857DCE1u; + } + + /// + /// Returns a uint3 vector hash code of a double3x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(double3x2 v) + { + return (fold_to_uint(v.c0) * uint3(0xF62213C5u, 0x9CDAA959u, 0xAA269ABFu) + + fold_to_uint(v.c1) * uint3(0xD54BA36Fu, 0xFD0847B9u, 0x8189A683u)) + 0xB139D651u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x2.gen.cs.meta new file mode 100644 index 0000000..628f16d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dbb081701c605492aa7bca8b0dcd80d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x3.gen.cs new file mode 100644 index 0000000..0169108 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x3.gen.cs @@ -0,0 +1,494 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct double3x3 : System.IEquatable, IFormattable + { + public double3 c0; + public double3 c1; + public double3 c2; + + /// double3x3 identity transform. + public static readonly double3x3 identity = new double3x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0); + + /// double3x3 zero value. + public static readonly double3x3 zero; + + /// Constructs a double3x3 matrix from three double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(double3 c0, double3 c1, double3 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a double3x3 matrix from 9 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(double m00, double m01, double m02, + double m10, double m11, double m12, + double m20, double m21, double m22) + { + this.c0 = new double3(m00, m10, m20); + this.c1 = new double3(m01, m11, m21); + this.c2 = new double3(m02, m12, m22); + } + + /// Constructs a double3x3 matrix from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(double v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double3x3 matrix from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(bool v) + { + this.c0 = math.select(new double3(0.0), new double3(1.0), v); + this.c1 = math.select(new double3(0.0), new double3(1.0), v); + this.c2 = math.select(new double3(0.0), new double3(1.0), v); + } + + /// Constructs a double3x3 matrix from a bool3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(bool3x3 v) + { + this.c0 = math.select(new double3(0.0), new double3(1.0), v.c0); + this.c1 = math.select(new double3(0.0), new double3(1.0), v.c1); + this.c2 = math.select(new double3(0.0), new double3(1.0), v.c2); + } + + /// Constructs a double3x3 matrix from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double3x3 matrix from a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(int3x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a double3x3 matrix from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double3x3 matrix from a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(uint3x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a double3x3 matrix from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double3x3 matrix from a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x3(float3x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + + /// Implicitly converts a single double value to a double3x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x3(double v) { return new double3x3(v); } + + /// Explicitly converts a single bool value to a double3x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double3x3(bool v) { return new double3x3(v); } + + /// Explicitly converts a bool3x3 matrix to a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double3x3(bool3x3 v) { return new double3x3(v); } + + /// Implicitly converts a single int value to a double3x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x3(int v) { return new double3x3(v); } + + /// Implicitly converts a int3x3 matrix to a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x3(int3x3 v) { return new double3x3(v); } + + /// Implicitly converts a single uint value to a double3x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x3(uint v) { return new double3x3(v); } + + /// Implicitly converts a uint3x3 matrix to a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x3(uint3x3 v) { return new double3x3(v); } + + /// Implicitly converts a single float value to a double3x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x3(float v) { return new double3x3(v); } + + /// Implicitly converts a float3x3 matrix to a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x3(float3x3 v) { return new double3x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator * (double3x3 lhs, double3x3 rhs) { return new double3x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator * (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator * (double lhs, double3x3 rhs) { return new double3x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator + (double3x3 lhs, double3x3 rhs) { return new double3x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator + (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator + (double lhs, double3x3 rhs) { return new double3x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator - (double3x3 lhs, double3x3 rhs) { return new double3x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator - (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator - (double lhs, double3x3 rhs) { return new double3x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator / (double3x3 lhs, double3x3 rhs) { return new double3x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator / (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator / (double lhs, double3x3 rhs) { return new double3x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator % (double3x3 lhs, double3x3 rhs) { return new double3x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator % (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator % (double lhs, double3x3 rhs) { return new double3x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator ++ (double3x3 val) { return new double3x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator -- (double3x3 val) { return new double3x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (double3x3 lhs, double3x3 rhs) { return new bool3x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (double lhs, double3x3 rhs) { return new bool3x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (double3x3 lhs, double3x3 rhs) { return new bool3x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (double lhs, double3x3 rhs) { return new bool3x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (double3x3 lhs, double3x3 rhs) { return new bool3x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (double lhs, double3x3 rhs) { return new bool3x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (double3x3 lhs, double3x3 rhs) { return new bool3x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (double lhs, double3x3 rhs) { return new bool3x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator - (double3x3 val) { return new double3x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 operator + (double3x3 val) { return new double3x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise equality operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (double3x3 lhs, double3x3 rhs) { return new bool3x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (double lhs, double3x3 rhs) { return new bool3x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two double3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (double3x3 lhs, double3x3 rhs) { return new bool3x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a double3x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (double lhs, double3x3 rhs) { return new bool3x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + + /// Returns the double3 element at a specified index. + unsafe public ref double3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (double3x3* array = &this) { return ref ((double3*)array)[index]; } + } + } + + /// Returns true if the double3x3 is equal to a given double3x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double3x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the double3x3 is equal to a given double3x3, false otherwise. + public override bool Equals(object o) { return Equals((double3x3)o); } + + + /// Returns a hash code for the double3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double3x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z); + } + + /// Returns a string representation of the double3x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double3x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a double3x3 matrix constructed from three double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(double3 c0, double3 c1, double3 c2) { return new double3x3(c0, c1, c2); } + + /// Returns a double3x3 matrix constructed from from 9 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(double m00, double m01, double m02, + double m10, double m11, double m12, + double m20, double m21, double m22) + { + return new double3x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22); + } + + /// Returns a double3x3 matrix constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(double v) { return new double3x3(v); } + + /// Returns a double3x3 matrix constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(bool v) { return new double3x3(v); } + + /// Return a double3x3 matrix constructed from a bool3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(bool3x3 v) { return new double3x3(v); } + + /// Returns a double3x3 matrix constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(int v) { return new double3x3(v); } + + /// Return a double3x3 matrix constructed from a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(int3x3 v) { return new double3x3(v); } + + /// Returns a double3x3 matrix constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(uint v) { return new double3x3(v); } + + /// Return a double3x3 matrix constructed from a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(uint3x3 v) { return new double3x3(v); } + + /// Returns a double3x3 matrix constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(float v) { return new double3x3(v); } + + /// Return a double3x3 matrix constructed from a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 double3x3(float3x3 v) { return new double3x3(v); } + + /// Return the double3x3 transpose of a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 transpose(double3x3 v) + { + return double3x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z); + } + + /// Returns the double3x3 full inverse of a double3x3 matrix. + public static double3x3 inverse(double3x3 m) + { + double3 c0 = m.c0; + double3 c1 = m.c1; + double3 c2 = m.c2; + + double3 t0 = double3(c1.x, c2.x, c0.x); + double3 t1 = double3(c1.y, c2.y, c0.y); + double3 t2 = double3(c1.z, c2.z, c0.z); + + double3 m0 = t1 * t2.yzx - t1.yzx * t2; + double3 m1 = t0.yzx * t2 - t0 * t2.yzx; + double3 m2 = t0 * t1.yzx - t0.yzx * t1; + + double rcpDet = 1.0 / csum(t0.zxy * m0); + return double3x3(m0, m1, m2) * rcpDet; + } + + /// Returns the determinant of a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double determinant(double3x3 m) + { + double3 c0 = m.c0; + double3 c1 = m.c1; + double3 c2 = m.c2; + + double m00 = c1.y * c2.z - c1.z * c2.y; + double m01 = c0.y * c2.z - c0.z * c2.y; + double m02 = c0.y * c1.z - c0.z * c1.y; + + return c0.x * m00 - c1.x * m01 + c2.x * m02; + } + + /// Returns a uint hash code of a double3x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double3x3 v) + { + return csum(fold_to_uint(v.c0) * uint3(0xAC5DB57Bu, 0xA91A02EDu, 0xB3C49313u) + + fold_to_uint(v.c1) * uint3(0xF43A9ABBu, 0x84E7E01Bu, 0x8E055BE5u) + + fold_to_uint(v.c2) * uint3(0x6E624EB7u, 0x7383ED49u, 0xDD49C23Bu)) + 0xEBD0D005u; + } + + /// + /// Returns a uint3 vector hash code of a double3x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(double3x3 v) + { + return (fold_to_uint(v.c0) * uint3(0x91475DF7u, 0x55E84827u, 0x90A285BBu) + + fold_to_uint(v.c1) * uint3(0x5D19E1D5u, 0xFAAF07DDu, 0x625C45BDu) + + fold_to_uint(v.c2) * uint3(0xC9F27FCBu, 0x6D2523B1u, 0x6E2BF6A9u)) + 0xCC74B3B7u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x3.gen.cs.meta new file mode 100644 index 0000000..6822374 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1e8e688d7f354f92a78d4d78697150d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x4.gen.cs new file mode 100644 index 0000000..b6b6d07 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x4.gen.cs @@ -0,0 +1,489 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct double3x4 : System.IEquatable, IFormattable + { + public double3 c0; + public double3 c1; + public double3 c2; + public double3 c3; + + /// double3x4 zero value. + public static readonly double3x4 zero; + + /// Constructs a double3x4 matrix from four double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(double3 c0, double3 c1, double3 c2, double3 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a double3x4 matrix from 12 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(double m00, double m01, double m02, double m03, + double m10, double m11, double m12, double m13, + double m20, double m21, double m22, double m23) + { + this.c0 = new double3(m00, m10, m20); + this.c1 = new double3(m01, m11, m21); + this.c2 = new double3(m02, m12, m22); + this.c3 = new double3(m03, m13, m23); + } + + /// Constructs a double3x4 matrix from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(double v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double3x4 matrix from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(bool v) + { + this.c0 = math.select(new double3(0.0), new double3(1.0), v); + this.c1 = math.select(new double3(0.0), new double3(1.0), v); + this.c2 = math.select(new double3(0.0), new double3(1.0), v); + this.c3 = math.select(new double3(0.0), new double3(1.0), v); + } + + /// Constructs a double3x4 matrix from a bool3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(bool3x4 v) + { + this.c0 = math.select(new double3(0.0), new double3(1.0), v.c0); + this.c1 = math.select(new double3(0.0), new double3(1.0), v.c1); + this.c2 = math.select(new double3(0.0), new double3(1.0), v.c2); + this.c3 = math.select(new double3(0.0), new double3(1.0), v.c3); + } + + /// Constructs a double3x4 matrix from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double3x4 matrix from a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(int3x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a double3x4 matrix from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double3x4 matrix from a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(uint3x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a double3x4 matrix from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double3x4 matrix from a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3x4(float3x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + + /// Implicitly converts a single double value to a double3x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x4(double v) { return new double3x4(v); } + + /// Explicitly converts a single bool value to a double3x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double3x4(bool v) { return new double3x4(v); } + + /// Explicitly converts a bool3x4 matrix to a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double3x4(bool3x4 v) { return new double3x4(v); } + + /// Implicitly converts a single int value to a double3x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x4(int v) { return new double3x4(v); } + + /// Implicitly converts a int3x4 matrix to a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x4(int3x4 v) { return new double3x4(v); } + + /// Implicitly converts a single uint value to a double3x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x4(uint v) { return new double3x4(v); } + + /// Implicitly converts a uint3x4 matrix to a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x4(uint3x4 v) { return new double3x4(v); } + + /// Implicitly converts a single float value to a double3x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x4(float v) { return new double3x4(v); } + + /// Implicitly converts a float3x4 matrix to a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double3x4(float3x4 v) { return new double3x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator * (double3x4 lhs, double3x4 rhs) { return new double3x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator * (double3x4 lhs, double rhs) { return new double3x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator * (double lhs, double3x4 rhs) { return new double3x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator + (double3x4 lhs, double3x4 rhs) { return new double3x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator + (double3x4 lhs, double rhs) { return new double3x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator + (double lhs, double3x4 rhs) { return new double3x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator - (double3x4 lhs, double3x4 rhs) { return new double3x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator - (double3x4 lhs, double rhs) { return new double3x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator - (double lhs, double3x4 rhs) { return new double3x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator / (double3x4 lhs, double3x4 rhs) { return new double3x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator / (double3x4 lhs, double rhs) { return new double3x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator / (double lhs, double3x4 rhs) { return new double3x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator % (double3x4 lhs, double3x4 rhs) { return new double3x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator % (double3x4 lhs, double rhs) { return new double3x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator % (double lhs, double3x4 rhs) { return new double3x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator ++ (double3x4 val) { return new double3x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator -- (double3x4 val) { return new double3x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (double3x4 lhs, double3x4 rhs) { return new bool3x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (double3x4 lhs, double rhs) { return new bool3x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (double lhs, double3x4 rhs) { return new bool3x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (double3x4 lhs, double3x4 rhs) { return new bool3x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (double3x4 lhs, double rhs) { return new bool3x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (double lhs, double3x4 rhs) { return new bool3x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (double3x4 lhs, double3x4 rhs) { return new bool3x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (double3x4 lhs, double rhs) { return new bool3x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (double lhs, double3x4 rhs) { return new bool3x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (double3x4 lhs, double3x4 rhs) { return new bool3x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (double3x4 lhs, double rhs) { return new bool3x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (double lhs, double3x4 rhs) { return new bool3x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator - (double3x4 val) { return new double3x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 operator + (double3x4 val) { return new double3x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise equality operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (double3x4 lhs, double3x4 rhs) { return new bool3x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (double3x4 lhs, double rhs) { return new bool3x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (double lhs, double3x4 rhs) { return new bool3x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two double3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (double3x4 lhs, double3x4 rhs) { return new bool3x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a double3x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (double3x4 lhs, double rhs) { return new bool3x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (double lhs, double3x4 rhs) { return new bool3x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + + /// Returns the double3 element at a specified index. + unsafe public ref double3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (double3x4* array = &this) { return ref ((double3*)array)[index]; } + } + } + + /// Returns true if the double3x4 is equal to a given double3x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double3x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the double3x4 is equal to a given double3x4, false otherwise. + public override bool Equals(object o) { return Equals((double3x4)o); } + + + /// Returns a hash code for the double3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double3x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z); + } + + /// Returns a string representation of the double3x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double3x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c3.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a double3x4 matrix constructed from four double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(double3 c0, double3 c1, double3 c2, double3 c3) { return new double3x4(c0, c1, c2, c3); } + + /// Returns a double3x4 matrix constructed from from 12 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(double m00, double m01, double m02, double m03, + double m10, double m11, double m12, double m13, + double m20, double m21, double m22, double m23) + { + return new double3x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23); + } + + /// Returns a double3x4 matrix constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(double v) { return new double3x4(v); } + + /// Returns a double3x4 matrix constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(bool v) { return new double3x4(v); } + + /// Return a double3x4 matrix constructed from a bool3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(bool3x4 v) { return new double3x4(v); } + + /// Returns a double3x4 matrix constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(int v) { return new double3x4(v); } + + /// Return a double3x4 matrix constructed from a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(int3x4 v) { return new double3x4(v); } + + /// Returns a double3x4 matrix constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(uint v) { return new double3x4(v); } + + /// Return a double3x4 matrix constructed from a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(uint3x4 v) { return new double3x4(v); } + + /// Returns a double3x4 matrix constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(float v) { return new double3x4(v); } + + /// Return a double3x4 matrix constructed from a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 double3x4(float3x4 v) { return new double3x4(v); } + + /// Return the double4x3 transpose of a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 transpose(double3x4 v) + { + return double4x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z, + v.c3.x, v.c3.y, v.c3.z); + } + + // Fast matrix inverse for rigid transforms (Orthonormal basis and translation) + public static double3x4 fastinverse(double3x4 m) + { + double3 c0 = m.c0; + double3 c1 = m.c1; + double3 c2 = m.c2; + double3 pos = m.c3; + + double3 r0 = double3(c0.x, c1.x, c2.x); + double3 r1 = double3(c0.y, c1.y, c2.y); + double3 r2 = double3(c0.z, c1.z, c2.z); + + pos = -(r0 * pos.x + r1 * pos.y + r2 * pos.z); + + return double3x4(r0, r1, r2, pos); + } + + /// Returns a uint hash code of a double3x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double3x4 v) + { + return csum(fold_to_uint(v.c0) * uint3(0xEE390C97u, 0x9C8A2F05u, 0x4DDC6509u) + + fold_to_uint(v.c1) * uint3(0x7CF083CBu, 0x5C4D6CEDu, 0xF9137117u) + + fold_to_uint(v.c2) * uint3(0xE857DCE1u, 0xF62213C5u, 0x9CDAA959u) + + fold_to_uint(v.c3) * uint3(0xAA269ABFu, 0xD54BA36Fu, 0xFD0847B9u)) + 0x8189A683u; + } + + /// + /// Returns a uint3 vector hash code of a double3x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(double3x4 v) + { + return (fold_to_uint(v.c0) * uint3(0xB139D651u, 0xE7579997u, 0xEF7D56C7u) + + fold_to_uint(v.c1) * uint3(0x66F38F0Bu, 0x624256A3u, 0x5292ADE1u) + + fold_to_uint(v.c2) * uint3(0xD2E590E5u, 0xF25BE857u, 0x9BC17CE7u) + + fold_to_uint(v.c3) * uint3(0xC8B86851u, 0x64095221u, 0xADF428FFu)) + 0xA3977109u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x4.gen.cs.meta new file mode 100644 index 0000000..3224031 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 419ac95b4026548c39e12d2aa34922d6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4.gen.cs new file mode 100644 index 0000000..ef25ed9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4.gen.cs @@ -0,0 +1,3464 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(double4.DebuggerProxy))] + [System.Serializable] + public partial struct double4 : System.IEquatable, IFormattable + { + public double x; + public double y; + public double z; + public double w; + + /// double4 zero value. + public static readonly double4 zero; + + /// Constructs a double4 vector from four double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(double x, double y, double z, double w) + { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + /// Constructs a double4 vector from two double values and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(double x, double y, double2 zw) + { + this.x = x; + this.y = y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a double4 vector from a double value, a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(double x, double2 yz, double w) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + this.w = w; + } + + /// Constructs a double4 vector from a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(double x, double3 yzw) + { + this.x = x; + this.y = yzw.x; + this.z = yzw.y; + this.w = yzw.z; + } + + /// Constructs a double4 vector from a double2 vector and two double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(double2 xy, double z, double w) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + this.w = w; + } + + /// Constructs a double4 vector from two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(double2 xy, double2 zw) + { + this.x = xy.x; + this.y = xy.y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a double4 vector from a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(double3 xyz, double w) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + this.w = w; + } + + /// Constructs a double4 vector from a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(double4 xyzw) + { + this.x = xyzw.x; + this.y = xyzw.y; + this.z = xyzw.z; + this.w = xyzw.w; + } + + /// Constructs a double4 vector from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(double v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a double4 vector from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(bool v) + { + this.x = v ? 1.0 : 0.0; + this.y = v ? 1.0 : 0.0; + this.z = v ? 1.0 : 0.0; + this.w = v ? 1.0 : 0.0; + } + + /// Constructs a double4 vector from a bool4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(bool4 v) + { + this.x = v.x ? 1.0 : 0.0; + this.y = v.y ? 1.0 : 0.0; + this.z = v.z ? 1.0 : 0.0; + this.w = v.w ? 1.0 : 0.0; + } + + /// Constructs a double4 vector from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(int v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a double4 vector from a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(int4 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w; + } + + /// Constructs a double4 vector from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(uint v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a double4 vector from a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(uint4 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w; + } + + /// Constructs a double4 vector from a single half value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(half v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a double4 vector from a half4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(half4 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w; + } + + /// Constructs a double4 vector from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(float v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a double4 vector from a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4(float4 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w; + } + + + /// Implicitly converts a single double value to a double4 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4(double v) { return new double4(v); } + + /// Explicitly converts a single bool value to a double4 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double4(bool v) { return new double4(v); } + + /// Explicitly converts a bool4 vector to a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double4(bool4 v) { return new double4(v); } + + /// Implicitly converts a single int value to a double4 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4(int v) { return new double4(v); } + + /// Implicitly converts a int4 vector to a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4(int4 v) { return new double4(v); } + + /// Implicitly converts a single uint value to a double4 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4(uint v) { return new double4(v); } + + /// Implicitly converts a uint4 vector to a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4(uint4 v) { return new double4(v); } + + /// Implicitly converts a single half value to a double4 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4(half v) { return new double4(v); } + + /// Implicitly converts a half4 vector to a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4(half4 v) { return new double4(v); } + + /// Implicitly converts a single float value to a double4 vector by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4(float v) { return new double4(v); } + + /// Implicitly converts a float4 vector to a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4(float4 v) { return new double4(v); } + + + /// Returns the result of a componentwise multiplication operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator * (double4 lhs, double4 rhs) { return new double4 (lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z, lhs.w * rhs.w); } + + /// Returns the result of a componentwise multiplication operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator * (double4 lhs, double rhs) { return new double4 (lhs.x * rhs, lhs.y * rhs, lhs.z * rhs, lhs.w * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator * (double lhs, double4 rhs) { return new double4 (lhs * rhs.x, lhs * rhs.y, lhs * rhs.z, lhs * rhs.w); } + + + /// Returns the result of a componentwise addition operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator + (double4 lhs, double4 rhs) { return new double4 (lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z, lhs.w + rhs.w); } + + /// Returns the result of a componentwise addition operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator + (double4 lhs, double rhs) { return new double4 (lhs.x + rhs, lhs.y + rhs, lhs.z + rhs, lhs.w + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator + (double lhs, double4 rhs) { return new double4 (lhs + rhs.x, lhs + rhs.y, lhs + rhs.z, lhs + rhs.w); } + + + /// Returns the result of a componentwise subtraction operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator - (double4 lhs, double4 rhs) { return new double4 (lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z, lhs.w - rhs.w); } + + /// Returns the result of a componentwise subtraction operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator - (double4 lhs, double rhs) { return new double4 (lhs.x - rhs, lhs.y - rhs, lhs.z - rhs, lhs.w - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator - (double lhs, double4 rhs) { return new double4 (lhs - rhs.x, lhs - rhs.y, lhs - rhs.z, lhs - rhs.w); } + + + /// Returns the result of a componentwise division operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator / (double4 lhs, double4 rhs) { return new double4 (lhs.x / rhs.x, lhs.y / rhs.y, lhs.z / rhs.z, lhs.w / rhs.w); } + + /// Returns the result of a componentwise division operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator / (double4 lhs, double rhs) { return new double4 (lhs.x / rhs, lhs.y / rhs, lhs.z / rhs, lhs.w / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator / (double lhs, double4 rhs) { return new double4 (lhs / rhs.x, lhs / rhs.y, lhs / rhs.z, lhs / rhs.w); } + + + /// Returns the result of a componentwise modulus operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator % (double4 lhs, double4 rhs) { return new double4 (lhs.x % rhs.x, lhs.y % rhs.y, lhs.z % rhs.z, lhs.w % rhs.w); } + + /// Returns the result of a componentwise modulus operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator % (double4 lhs, double rhs) { return new double4 (lhs.x % rhs, lhs.y % rhs, lhs.z % rhs, lhs.w % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator % (double lhs, double4 rhs) { return new double4 (lhs % rhs.x, lhs % rhs.y, lhs % rhs.z, lhs % rhs.w); } + + + /// Returns the result of a componentwise increment operation on a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator ++ (double4 val) { return new double4 (++val.x, ++val.y, ++val.z, ++val.w); } + + + /// Returns the result of a componentwise decrement operation on a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator -- (double4 val) { return new double4 (--val.x, --val.y, --val.z, --val.w); } + + + /// Returns the result of a componentwise less than operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (double4 lhs, double4 rhs) { return new bool4 (lhs.x < rhs.x, lhs.y < rhs.y, lhs.z < rhs.z, lhs.w < rhs.w); } + + /// Returns the result of a componentwise less than operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (double4 lhs, double rhs) { return new bool4 (lhs.x < rhs, lhs.y < rhs, lhs.z < rhs, lhs.w < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (double lhs, double4 rhs) { return new bool4 (lhs < rhs.x, lhs < rhs.y, lhs < rhs.z, lhs < rhs.w); } + + + /// Returns the result of a componentwise less or equal operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (double4 lhs, double4 rhs) { return new bool4 (lhs.x <= rhs.x, lhs.y <= rhs.y, lhs.z <= rhs.z, lhs.w <= rhs.w); } + + /// Returns the result of a componentwise less or equal operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (double4 lhs, double rhs) { return new bool4 (lhs.x <= rhs, lhs.y <= rhs, lhs.z <= rhs, lhs.w <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (double lhs, double4 rhs) { return new bool4 (lhs <= rhs.x, lhs <= rhs.y, lhs <= rhs.z, lhs <= rhs.w); } + + + /// Returns the result of a componentwise greater than operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (double4 lhs, double4 rhs) { return new bool4 (lhs.x > rhs.x, lhs.y > rhs.y, lhs.z > rhs.z, lhs.w > rhs.w); } + + /// Returns the result of a componentwise greater than operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (double4 lhs, double rhs) { return new bool4 (lhs.x > rhs, lhs.y > rhs, lhs.z > rhs, lhs.w > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (double lhs, double4 rhs) { return new bool4 (lhs > rhs.x, lhs > rhs.y, lhs > rhs.z, lhs > rhs.w); } + + + /// Returns the result of a componentwise greater or equal operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (double4 lhs, double4 rhs) { return new bool4 (lhs.x >= rhs.x, lhs.y >= rhs.y, lhs.z >= rhs.z, lhs.w >= rhs.w); } + + /// Returns the result of a componentwise greater or equal operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (double4 lhs, double rhs) { return new bool4 (lhs.x >= rhs, lhs.y >= rhs, lhs.z >= rhs, lhs.w >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (double lhs, double4 rhs) { return new bool4 (lhs >= rhs.x, lhs >= rhs.y, lhs >= rhs.z, lhs >= rhs.w); } + + + /// Returns the result of a componentwise unary minus operation on a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator - (double4 val) { return new double4 (-val.x, -val.y, -val.z, -val.w); } + + + /// Returns the result of a componentwise unary plus operation on a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 operator + (double4 val) { return new double4 (+val.x, +val.y, +val.z, +val.w); } + + + /// Returns the result of a componentwise equality operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (double4 lhs, double4 rhs) { return new bool4 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z, lhs.w == rhs.w); } + + /// Returns the result of a componentwise equality operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (double4 lhs, double rhs) { return new bool4 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs, lhs.w == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (double lhs, double4 rhs) { return new bool4 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z, lhs == rhs.w); } + + + /// Returns the result of a componentwise not equal operation on two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (double4 lhs, double4 rhs) { return new bool4 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z, lhs.w != rhs.w); } + + /// Returns the result of a componentwise not equal operation on a double4 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (double4 lhs, double rhs) { return new bool4 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs, lhs.w != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (double lhs, double4 rhs) { return new bool4 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z, lhs != rhs.w); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 xwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(x, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 yzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 ywww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(y, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 zwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(z, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double4 wwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double4(w, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 xww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 ywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 ywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 ywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 yww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 zww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 wwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double3 www + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double3(w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 xw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 yw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 zw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 wx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 wy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 wz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public double2 ww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new double2(w, w); } + } + + + + /// Returns the double element at a specified index. + unsafe public double this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (double4* array = &this) { return ((double*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (double* array = &x) { array[index] = value; } + } + } + + /// Returns true if the double4 is equal to a given double4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double4 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z && w == rhs.w; } + + /// Returns true if the double4 is equal to a given double4, false otherwise. + public override bool Equals(object o) { return Equals((double4)o); } + + + /// Returns a hash code for the double4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double4({0}, {1}, {2}, {3})", x, y, z, w); + } + + /// Returns a string representation of the double4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double4({0}, {1}, {2}, {3})", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider), w.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public double x; + public double y; + public double z; + public double w; + public DebuggerProxy(double4 v) + { + x = v.x; + y = v.y; + z = v.z; + w = v.w; + } + } + + } + + public static partial class math + { + /// Returns a double4 vector constructed from four double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(double x, double y, double z, double w) { return new double4(x, y, z, w); } + + /// Returns a double4 vector constructed from two double values and a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(double x, double y, double2 zw) { return new double4(x, y, zw); } + + /// Returns a double4 vector constructed from a double value, a double2 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(double x, double2 yz, double w) { return new double4(x, yz, w); } + + /// Returns a double4 vector constructed from a double value and a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(double x, double3 yzw) { return new double4(x, yzw); } + + /// Returns a double4 vector constructed from a double2 vector and two double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(double2 xy, double z, double w) { return new double4(xy, z, w); } + + /// Returns a double4 vector constructed from two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(double2 xy, double2 zw) { return new double4(xy, zw); } + + /// Returns a double4 vector constructed from a double3 vector and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(double3 xyz, double w) { return new double4(xyz, w); } + + /// Returns a double4 vector constructed from a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(double4 xyzw) { return new double4(xyzw); } + + /// Returns a double4 vector constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(double v) { return new double4(v); } + + /// Returns a double4 vector constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(bool v) { return new double4(v); } + + /// Return a double4 vector constructed from a bool4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(bool4 v) { return new double4(v); } + + /// Returns a double4 vector constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(int v) { return new double4(v); } + + /// Return a double4 vector constructed from a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(int4 v) { return new double4(v); } + + /// Returns a double4 vector constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(uint v) { return new double4(v); } + + /// Return a double4 vector constructed from a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(uint4 v) { return new double4(v); } + + /// Returns a double4 vector constructed from a single half value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(half v) { return new double4(v); } + + /// Return a double4 vector constructed from a half4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(half4 v) { return new double4(v); } + + /// Returns a double4 vector constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(float v) { return new double4(v); } + + /// Return a double4 vector constructed from a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 double4(float4 v) { return new double4(v); } + + /// Returns a uint hash code of a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double4 v) + { + return csum(fold_to_uint(v) * uint4(0x9F1C739Bu, 0x4B1BD187u, 0x9DF50593u, 0xF18EEB85u)) + 0x9E19BFC3u; + } + + /// + /// Returns a uint4 vector hash code of a double4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(double4 v) + { + return (fold_to_uint(v) * uint4(0x8196B06Fu, 0xD24EFA19u, 0x7D8048BBu, 0x713BD06Fu)) + 0x753AD6ADu; + } + + /// Returns the result of specified shuffling of the components from two double4 vectors into a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double shuffle(double4 a, double4 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two double4 vectors into a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 shuffle(double4 a, double4 b, ShuffleComponent x, ShuffleComponent y) + { + return double2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two double4 vectors into a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 shuffle(double4 a, double4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return double3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two double4 vectors into a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 shuffle(double4 a, double4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return double4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static double select_shuffle_component(double4 a, double4 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.LeftW: + return a.w; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + case ShuffleComponent.RightW: + return b.w; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4.gen.cs.meta new file mode 100644 index 0000000..457f797 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d041bf430fc14f4787b6f89d3326147 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x2.gen.cs new file mode 100644 index 0000000..0ba6e50 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x2.gen.cs @@ -0,0 +1,445 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct double4x2 : System.IEquatable, IFormattable + { + public double4 c0; + public double4 c1; + + /// double4x2 zero value. + public static readonly double4x2 zero; + + /// Constructs a double4x2 matrix from two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(double4 c0, double4 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a double4x2 matrix from 8 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(double m00, double m01, + double m10, double m11, + double m20, double m21, + double m30, double m31) + { + this.c0 = new double4(m00, m10, m20, m30); + this.c1 = new double4(m01, m11, m21, m31); + } + + /// Constructs a double4x2 matrix from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(double v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double4x2 matrix from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(bool v) + { + this.c0 = math.select(new double4(0.0), new double4(1.0), v); + this.c1 = math.select(new double4(0.0), new double4(1.0), v); + } + + /// Constructs a double4x2 matrix from a bool4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(bool4x2 v) + { + this.c0 = math.select(new double4(0.0), new double4(1.0), v.c0); + this.c1 = math.select(new double4(0.0), new double4(1.0), v.c1); + } + + /// Constructs a double4x2 matrix from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(int v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double4x2 matrix from a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(int4x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a double4x2 matrix from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(uint v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double4x2 matrix from a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(uint4x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a double4x2 matrix from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(float v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a double4x2 matrix from a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x2(float4x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + + /// Implicitly converts a single double value to a double4x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x2(double v) { return new double4x2(v); } + + /// Explicitly converts a single bool value to a double4x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double4x2(bool v) { return new double4x2(v); } + + /// Explicitly converts a bool4x2 matrix to a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double4x2(bool4x2 v) { return new double4x2(v); } + + /// Implicitly converts a single int value to a double4x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x2(int v) { return new double4x2(v); } + + /// Implicitly converts a int4x2 matrix to a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x2(int4x2 v) { return new double4x2(v); } + + /// Implicitly converts a single uint value to a double4x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x2(uint v) { return new double4x2(v); } + + /// Implicitly converts a uint4x2 matrix to a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x2(uint4x2 v) { return new double4x2(v); } + + /// Implicitly converts a single float value to a double4x2 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x2(float v) { return new double4x2(v); } + + /// Implicitly converts a float4x2 matrix to a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x2(float4x2 v) { return new double4x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator * (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator * (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator * (double lhs, double4x2 rhs) { return new double4x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator + (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator + (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator + (double lhs, double4x2 rhs) { return new double4x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator - (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator - (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator - (double lhs, double4x2 rhs) { return new double4x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator / (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator / (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator / (double lhs, double4x2 rhs) { return new double4x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator % (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator % (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator % (double lhs, double4x2 rhs) { return new double4x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator ++ (double4x2 val) { return new double4x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator -- (double4x2 val) { return new double4x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (double lhs, double4x2 rhs) { return new bool4x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (double lhs, double4x2 rhs) { return new bool4x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (double lhs, double4x2 rhs) { return new bool4x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (double lhs, double4x2 rhs) { return new bool4x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator - (double4x2 val) { return new double4x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 operator + (double4x2 val) { return new double4x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise equality operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (double lhs, double4x2 rhs) { return new bool4x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two double4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a double4x2 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (double lhs, double4x2 rhs) { return new bool4x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + + /// Returns the double4 element at a specified index. + unsafe public ref double4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (double4x2* array = &this) { return ref ((double4*)array)[index]; } + } + } + + /// Returns true if the double4x2 is equal to a given double4x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double4x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the double4x2 is equal to a given double4x2, false otherwise. + public override bool Equals(object o) { return Equals((double4x2)o); } + + + /// Returns a hash code for the double4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double4x2({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z, c0.w, c1.w); + } + + /// Returns a string representation of the double4x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double4x2({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a double4x2 matrix constructed from two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(double4 c0, double4 c1) { return new double4x2(c0, c1); } + + /// Returns a double4x2 matrix constructed from from 8 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(double m00, double m01, + double m10, double m11, + double m20, double m21, + double m30, double m31) + { + return new double4x2(m00, m01, + m10, m11, + m20, m21, + m30, m31); + } + + /// Returns a double4x2 matrix constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(double v) { return new double4x2(v); } + + /// Returns a double4x2 matrix constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(bool v) { return new double4x2(v); } + + /// Return a double4x2 matrix constructed from a bool4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(bool4x2 v) { return new double4x2(v); } + + /// Returns a double4x2 matrix constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(int v) { return new double4x2(v); } + + /// Return a double4x2 matrix constructed from a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(int4x2 v) { return new double4x2(v); } + + /// Returns a double4x2 matrix constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(uint v) { return new double4x2(v); } + + /// Return a double4x2 matrix constructed from a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(uint4x2 v) { return new double4x2(v); } + + /// Returns a double4x2 matrix constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(float v) { return new double4x2(v); } + + /// Return a double4x2 matrix constructed from a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 double4x2(float4x2 v) { return new double4x2(v); } + + /// Return the double2x4 transpose of a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 transpose(double4x2 v) + { + return double2x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w); + } + + /// Returns a uint hash code of a double4x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double4x2 v) + { + return csum(fold_to_uint(v.c0) * uint4(0x5AB3E8CDu, 0x676E8407u, 0xB36DE767u, 0x6FCA387Du) + + fold_to_uint(v.c1) * uint4(0xAF0F3103u, 0xE4A056C7u, 0x841D8225u, 0xC9393C7Du)) + 0xD42EAFA3u; + } + + /// + /// Returns a uint4 vector hash code of a double4x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(double4x2 v) + { + return (fold_to_uint(v.c0) * uint4(0xD9AFD06Du, 0x97A65421u, 0x7809205Fu, 0x9C9F0823u) + + fold_to_uint(v.c1) * uint4(0x5A9CA13Bu, 0xAFCDD5EFu, 0xA88D187Du, 0xCF6EBA1Du)) + 0x9D88E5A1u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x2.gen.cs.meta new file mode 100644 index 0000000..debb415 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2780651a7c8e8413da73612cb720fbac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x3.gen.cs new file mode 100644 index 0000000..b7afb45 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x3.gen.cs @@ -0,0 +1,460 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct double4x3 : System.IEquatable, IFormattable + { + public double4 c0; + public double4 c1; + public double4 c2; + + /// double4x3 zero value. + public static readonly double4x3 zero; + + /// Constructs a double4x3 matrix from three double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(double4 c0, double4 c1, double4 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a double4x3 matrix from 12 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(double m00, double m01, double m02, + double m10, double m11, double m12, + double m20, double m21, double m22, + double m30, double m31, double m32) + { + this.c0 = new double4(m00, m10, m20, m30); + this.c1 = new double4(m01, m11, m21, m31); + this.c2 = new double4(m02, m12, m22, m32); + } + + /// Constructs a double4x3 matrix from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(double v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double4x3 matrix from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(bool v) + { + this.c0 = math.select(new double4(0.0), new double4(1.0), v); + this.c1 = math.select(new double4(0.0), new double4(1.0), v); + this.c2 = math.select(new double4(0.0), new double4(1.0), v); + } + + /// Constructs a double4x3 matrix from a bool4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(bool4x3 v) + { + this.c0 = math.select(new double4(0.0), new double4(1.0), v.c0); + this.c1 = math.select(new double4(0.0), new double4(1.0), v.c1); + this.c2 = math.select(new double4(0.0), new double4(1.0), v.c2); + } + + /// Constructs a double4x3 matrix from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double4x3 matrix from a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(int4x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a double4x3 matrix from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double4x3 matrix from a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(uint4x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a double4x3 matrix from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a double4x3 matrix from a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x3(float4x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + + /// Implicitly converts a single double value to a double4x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x3(double v) { return new double4x3(v); } + + /// Explicitly converts a single bool value to a double4x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double4x3(bool v) { return new double4x3(v); } + + /// Explicitly converts a bool4x3 matrix to a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double4x3(bool4x3 v) { return new double4x3(v); } + + /// Implicitly converts a single int value to a double4x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x3(int v) { return new double4x3(v); } + + /// Implicitly converts a int4x3 matrix to a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x3(int4x3 v) { return new double4x3(v); } + + /// Implicitly converts a single uint value to a double4x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x3(uint v) { return new double4x3(v); } + + /// Implicitly converts a uint4x3 matrix to a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x3(uint4x3 v) { return new double4x3(v); } + + /// Implicitly converts a single float value to a double4x3 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x3(float v) { return new double4x3(v); } + + /// Implicitly converts a float4x3 matrix to a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x3(float4x3 v) { return new double4x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator * (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator * (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator * (double lhs, double4x3 rhs) { return new double4x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator + (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator + (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator + (double lhs, double4x3 rhs) { return new double4x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator - (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator - (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator - (double lhs, double4x3 rhs) { return new double4x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator / (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator / (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator / (double lhs, double4x3 rhs) { return new double4x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator % (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator % (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator % (double lhs, double4x3 rhs) { return new double4x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator ++ (double4x3 val) { return new double4x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator -- (double4x3 val) { return new double4x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (double lhs, double4x3 rhs) { return new bool4x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (double lhs, double4x3 rhs) { return new bool4x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (double lhs, double4x3 rhs) { return new bool4x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (double lhs, double4x3 rhs) { return new bool4x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator - (double4x3 val) { return new double4x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 operator + (double4x3 val) { return new double4x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise equality operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (double lhs, double4x3 rhs) { return new bool4x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two double4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a double4x3 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (double lhs, double4x3 rhs) { return new bool4x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + + /// Returns the double4 element at a specified index. + unsafe public ref double4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (double4x3* array = &this) { return ref ((double4*)array)[index]; } + } + } + + /// Returns true if the double4x3 is equal to a given double4x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double4x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the double4x3 is equal to a given double4x3, false otherwise. + public override bool Equals(object o) { return Equals((double4x3)o); } + + + /// Returns a hash code for the double4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double4x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z, c0.w, c1.w, c2.w); + } + + /// Returns a string representation of the double4x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double4x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a double4x3 matrix constructed from three double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(double4 c0, double4 c1, double4 c2) { return new double4x3(c0, c1, c2); } + + /// Returns a double4x3 matrix constructed from from 12 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(double m00, double m01, double m02, + double m10, double m11, double m12, + double m20, double m21, double m22, + double m30, double m31, double m32) + { + return new double4x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22, + m30, m31, m32); + } + + /// Returns a double4x3 matrix constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(double v) { return new double4x3(v); } + + /// Returns a double4x3 matrix constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(bool v) { return new double4x3(v); } + + /// Return a double4x3 matrix constructed from a bool4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(bool4x3 v) { return new double4x3(v); } + + /// Returns a double4x3 matrix constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(int v) { return new double4x3(v); } + + /// Return a double4x3 matrix constructed from a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(int4x3 v) { return new double4x3(v); } + + /// Returns a double4x3 matrix constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(uint v) { return new double4x3(v); } + + /// Return a double4x3 matrix constructed from a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(uint4x3 v) { return new double4x3(v); } + + /// Returns a double4x3 matrix constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(float v) { return new double4x3(v); } + + /// Return a double4x3 matrix constructed from a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 double4x3(float4x3 v) { return new double4x3(v); } + + /// Return the double3x4 transpose of a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 transpose(double4x3 v) + { + return double3x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w); + } + + /// Returns a uint hash code of a double4x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double4x3 v) + { + return csum(fold_to_uint(v.c0) * uint4(0x7AA07CD3u, 0xAF642BA9u, 0xA8F2213Bu, 0x9F3FDC37u) + + fold_to_uint(v.c1) * uint4(0xAC60D0C3u, 0x9263662Fu, 0xE69626FFu, 0xBD010EEBu) + + fold_to_uint(v.c2) * uint4(0x9CEDE1D1u, 0x43BE0B51u, 0xAF836EE1u, 0xB130C137u)) + 0x54834775u; + } + + /// + /// Returns a uint4 vector hash code of a double4x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(double4x3 v) + { + return (fold_to_uint(v.c0) * uint4(0x7C022221u, 0xA2D00EDFu, 0xA8977779u, 0x9F1C739Bu) + + fold_to_uint(v.c1) * uint4(0x4B1BD187u, 0x9DF50593u, 0xF18EEB85u, 0x9E19BFC3u) + + fold_to_uint(v.c2) * uint4(0x8196B06Fu, 0xD24EFA19u, 0x7D8048BBu, 0x713BD06Fu)) + 0x753AD6ADu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x3.gen.cs.meta new file mode 100644 index 0000000..eab57e5 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 673ff09d67f254e00a538d7bbb41618e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x4.gen.cs new file mode 100644 index 0000000..b4a0851 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x4.gen.cs @@ -0,0 +1,596 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct double4x4 : System.IEquatable, IFormattable + { + public double4 c0; + public double4 c1; + public double4 c2; + public double4 c3; + + /// double4x4 identity transform. + public static readonly double4x4 identity = new double4x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); + + /// double4x4 zero value. + public static readonly double4x4 zero; + + /// Constructs a double4x4 matrix from four double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(double4 c0, double4 c1, double4 c2, double4 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a double4x4 matrix from 16 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(double m00, double m01, double m02, double m03, + double m10, double m11, double m12, double m13, + double m20, double m21, double m22, double m23, + double m30, double m31, double m32, double m33) + { + this.c0 = new double4(m00, m10, m20, m30); + this.c1 = new double4(m01, m11, m21, m31); + this.c2 = new double4(m02, m12, m22, m32); + this.c3 = new double4(m03, m13, m23, m33); + } + + /// Constructs a double4x4 matrix from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(double v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double4x4 matrix from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(bool v) + { + this.c0 = math.select(new double4(0.0), new double4(1.0), v); + this.c1 = math.select(new double4(0.0), new double4(1.0), v); + this.c2 = math.select(new double4(0.0), new double4(1.0), v); + this.c3 = math.select(new double4(0.0), new double4(1.0), v); + } + + /// Constructs a double4x4 matrix from a bool4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(bool4x4 v) + { + this.c0 = math.select(new double4(0.0), new double4(1.0), v.c0); + this.c1 = math.select(new double4(0.0), new double4(1.0), v.c1); + this.c2 = math.select(new double4(0.0), new double4(1.0), v.c2); + this.c3 = math.select(new double4(0.0), new double4(1.0), v.c3); + } + + /// Constructs a double4x4 matrix from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double4x4 matrix from a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(int4x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a double4x4 matrix from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double4x4 matrix from a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(uint4x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a double4x4 matrix from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a double4x4 matrix from a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4x4(float4x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + + /// Implicitly converts a single double value to a double4x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x4(double v) { return new double4x4(v); } + + /// Explicitly converts a single bool value to a double4x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double4x4(bool v) { return new double4x4(v); } + + /// Explicitly converts a bool4x4 matrix to a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator double4x4(bool4x4 v) { return new double4x4(v); } + + /// Implicitly converts a single int value to a double4x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x4(int v) { return new double4x4(v); } + + /// Implicitly converts a int4x4 matrix to a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x4(int4x4 v) { return new double4x4(v); } + + /// Implicitly converts a single uint value to a double4x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x4(uint v) { return new double4x4(v); } + + /// Implicitly converts a uint4x4 matrix to a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x4(uint4x4 v) { return new double4x4(v); } + + /// Implicitly converts a single float value to a double4x4 matrix by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x4(float v) { return new double4x4(v); } + + /// Implicitly converts a float4x4 matrix to a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double4x4(float4x4 v) { return new double4x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator * (double4x4 lhs, double4x4 rhs) { return new double4x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator * (double4x4 lhs, double rhs) { return new double4x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator * (double lhs, double4x4 rhs) { return new double4x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator + (double4x4 lhs, double4x4 rhs) { return new double4x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator + (double4x4 lhs, double rhs) { return new double4x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator + (double lhs, double4x4 rhs) { return new double4x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator - (double4x4 lhs, double4x4 rhs) { return new double4x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator - (double4x4 lhs, double rhs) { return new double4x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator - (double lhs, double4x4 rhs) { return new double4x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator / (double4x4 lhs, double4x4 rhs) { return new double4x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator / (double4x4 lhs, double rhs) { return new double4x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator / (double lhs, double4x4 rhs) { return new double4x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator % (double4x4 lhs, double4x4 rhs) { return new double4x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator % (double4x4 lhs, double rhs) { return new double4x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator % (double lhs, double4x4 rhs) { return new double4x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator ++ (double4x4 val) { return new double4x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator -- (double4x4 val) { return new double4x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (double4x4 lhs, double4x4 rhs) { return new bool4x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (double4x4 lhs, double rhs) { return new bool4x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (double lhs, double4x4 rhs) { return new bool4x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (double4x4 lhs, double4x4 rhs) { return new bool4x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (double4x4 lhs, double rhs) { return new bool4x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (double lhs, double4x4 rhs) { return new bool4x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (double4x4 lhs, double4x4 rhs) { return new bool4x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (double4x4 lhs, double rhs) { return new bool4x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (double lhs, double4x4 rhs) { return new bool4x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (double4x4 lhs, double4x4 rhs) { return new bool4x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (double4x4 lhs, double rhs) { return new bool4x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (double lhs, double4x4 rhs) { return new bool4x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator - (double4x4 val) { return new double4x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 operator + (double4x4 val) { return new double4x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise equality operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (double4x4 lhs, double4x4 rhs) { return new bool4x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (double4x4 lhs, double rhs) { return new bool4x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (double lhs, double4x4 rhs) { return new bool4x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two double4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (double4x4 lhs, double4x4 rhs) { return new bool4x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a double4x4 matrix and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (double4x4 lhs, double rhs) { return new bool4x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a double value and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (double lhs, double4x4 rhs) { return new bool4x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + + /// Returns the double4 element at a specified index. + unsafe public ref double4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (double4x4* array = &this) { return ref ((double4*)array)[index]; } + } + } + + /// Returns true if the double4x4 is equal to a given double4x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(double4x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the double4x4 is equal to a given double4x4, false otherwise. + public override bool Equals(object o) { return Equals((double4x4)o); } + + + /// Returns a hash code for the double4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the double4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("double4x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z, c0.w, c1.w, c2.w, c3.w); + } + + /// Returns a string representation of the double4x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("double4x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c3.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider), c3.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a double4x4 matrix constructed from four double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(double4 c0, double4 c1, double4 c2, double4 c3) { return new double4x4(c0, c1, c2, c3); } + + /// Returns a double4x4 matrix constructed from from 16 double values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(double m00, double m01, double m02, double m03, + double m10, double m11, double m12, double m13, + double m20, double m21, double m22, double m23, + double m30, double m31, double m32, double m33) + { + return new double4x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23, + m30, m31, m32, m33); + } + + /// Returns a double4x4 matrix constructed from a single double value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(double v) { return new double4x4(v); } + + /// Returns a double4x4 matrix constructed from a single bool value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(bool v) { return new double4x4(v); } + + /// Return a double4x4 matrix constructed from a bool4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(bool4x4 v) { return new double4x4(v); } + + /// Returns a double4x4 matrix constructed from a single int value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(int v) { return new double4x4(v); } + + /// Return a double4x4 matrix constructed from a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(int4x4 v) { return new double4x4(v); } + + /// Returns a double4x4 matrix constructed from a single uint value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(uint v) { return new double4x4(v); } + + /// Return a double4x4 matrix constructed from a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(uint4x4 v) { return new double4x4(v); } + + /// Returns a double4x4 matrix constructed from a single float value by converting it to double and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(float v) { return new double4x4(v); } + + /// Return a double4x4 matrix constructed from a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 double4x4(float4x4 v) { return new double4x4(v); } + + /// Return the result of rotating a double3 vector by a double4x4 matrix + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 rotate(double4x4 a, double3 b) + { + return (a.c0 * b.x + a.c1 * b.y + a.c2 * b.z).xyz; + } + + /// Return the result of transforming a double3 point by a double4x4 matrix + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 transform(double4x4 a, double3 b) + { + return (a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3).xyz; + } + + /// Return the double4x4 transpose of a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 transpose(double4x4 v) + { + return double4x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w, + v.c3.x, v.c3.y, v.c3.z, v.c3.w); + } + + /// Returns the double4x4 full inverse of a double4x4 matrix. + public static double4x4 inverse(double4x4 m) + { + double4 c0 = m.c0; + double4 c1 = m.c1; + double4 c2 = m.c2; + double4 c3 = m.c3; + + double4 r0y_r1y_r0x_r1x = movelh(c1, c0); + double4 r0z_r1z_r0w_r1w = movelh(c2, c3); + double4 r2y_r3y_r2x_r3x = movehl(c0, c1); + double4 r2z_r3z_r2w_r3w = movehl(c3, c2); + + double4 r1y_r2y_r1x_r2x = shuffle(c1, c0, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightZ); + double4 r1z_r2z_r1w_r2w = shuffle(c2, c3, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightZ); + double4 r3y_r0y_r3x_r0x = shuffle(c1, c0, ShuffleComponent.LeftW, ShuffleComponent.LeftX, ShuffleComponent.RightW, ShuffleComponent.RightX); + double4 r3z_r0z_r3w_r0w = shuffle(c2, c3, ShuffleComponent.LeftW, ShuffleComponent.LeftX, ShuffleComponent.RightW, ShuffleComponent.RightX); + + double4 r0_wzyx = shuffle(r0z_r1z_r0w_r1w, r0y_r1y_r0x_r1x, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.RightX, ShuffleComponent.RightZ); + double4 r1_wzyx = shuffle(r0z_r1z_r0w_r1w, r0y_r1y_r0x_r1x, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightW); + double4 r2_wzyx = shuffle(r2z_r3z_r2w_r3w, r2y_r3y_r2x_r3x, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.RightX, ShuffleComponent.RightZ); + double4 r3_wzyx = shuffle(r2z_r3z_r2w_r3w, r2y_r3y_r2x_r3x, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightW); + double4 r0_xyzw = shuffle(r0y_r1y_r0x_r1x, r0z_r1z_r0w_r1w, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.RightX, ShuffleComponent.RightZ); + + // Calculate remaining inner term pairs. inner terms have zw=-xy, so we only have to calculate xy and can pack two pairs per vector. + double4 inner12_23 = r1y_r2y_r1x_r2x * r2z_r3z_r2w_r3w - r1z_r2z_r1w_r2w * r2y_r3y_r2x_r3x; + double4 inner02_13 = r0y_r1y_r0x_r1x * r2z_r3z_r2w_r3w - r0z_r1z_r0w_r1w * r2y_r3y_r2x_r3x; + double4 inner30_01 = r3z_r0z_r3w_r0w * r0y_r1y_r0x_r1x - r3y_r0y_r3x_r0x * r0z_r1z_r0w_r1w; + + // Expand inner terms back to 4 components. zw signs still need to be flipped + double4 inner12 = shuffle(inner12_23, inner12_23, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX); + double4 inner23 = shuffle(inner12_23, inner12_23, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.RightY); + + double4 inner02 = shuffle(inner02_13, inner02_13, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX); + double4 inner13 = shuffle(inner02_13, inner02_13, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.RightY); + + // Calculate minors + double4 minors0 = r3_wzyx * inner12 - r2_wzyx * inner13 + r1_wzyx * inner23; + + double4 denom = r0_xyzw * minors0; + + // Horizontal sum of denominator. Free sign flip of z and w compensates for missing flip in inner terms. + denom = denom + shuffle(denom, denom, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightW, ShuffleComponent.RightZ); // x+y x+y z+w z+w + denom = denom - shuffle(denom, denom, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightX); // x+y-z-w x+y-z-w z+w-x-y z+w-x-y + + double4 rcp_denom_ppnn = double4(1.0) / denom; + double4x4 res; + res.c0 = minors0 * rcp_denom_ppnn; + + double4 inner30 = shuffle(inner30_01, inner30_01, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX); + double4 inner01 = shuffle(inner30_01, inner30_01, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.RightY); + + double4 minors1 = r2_wzyx * inner30 - r0_wzyx * inner23 - r3_wzyx * inner02; + res.c1 = minors1 * rcp_denom_ppnn; + + double4 minors2 = r0_wzyx * inner13 - r1_wzyx * inner30 - r3_wzyx * inner01; + res.c2 = minors2 * rcp_denom_ppnn; + + double4 minors3 = r1_wzyx * inner02 - r0_wzyx * inner12 + r2_wzyx * inner01; + res.c3 = minors3 * rcp_denom_ppnn; + return res; + } + + // Fast matrix inverse for rigid transforms (Orthonormal basis and translation) + public static double4x4 fastinverse(double4x4 m) + { + double4 c0 = m.c0; + double4 c1 = m.c1; + double4 c2 = m.c2; + double4 pos = m.c3; + + double4 zero = double4(0); + + double4 t0 = unpacklo(c0, c2); + double4 t1 = unpacklo(c1, zero); + double4 t2 = unpackhi(c0, c2); + double4 t3 = unpackhi(c1, zero); + + double4 r0 = unpacklo(t0, t1); + double4 r1 = unpackhi(t0, t1); + double4 r2 = unpacklo(t2, t3); + + pos = -(r0 * pos.x + r1 * pos.y + r2 * pos.z); + pos.w = 1.0f; + + return double4x4(r0, r1, r2, pos); + } + + /// Returns the determinant of a double4x4 matrix. + public static double determinant(double4x4 m) + { + double4 c0 = m.c0; + double4 c1 = m.c1; + double4 c2 = m.c2; + double4 c3 = m.c3; + + double m00 = c1.y * (c2.z * c3.w - c2.w * c3.z) - c2.y * (c1.z * c3.w - c1.w * c3.z) + c3.y * (c1.z * c2.w - c1.w * c2.z); + double m01 = c0.y * (c2.z * c3.w - c2.w * c3.z) - c2.y * (c0.z * c3.w - c0.w * c3.z) + c3.y * (c0.z * c2.w - c0.w * c2.z); + double m02 = c0.y * (c1.z * c3.w - c1.w * c3.z) - c1.y * (c0.z * c3.w - c0.w * c3.z) + c3.y * (c0.z * c1.w - c0.w * c1.z); + double m03 = c0.y * (c1.z * c2.w - c1.w * c2.z) - c1.y * (c0.z * c2.w - c0.w * c2.z) + c2.y * (c0.z * c1.w - c0.w * c1.z); + + return c0.x * m00 - c1.x * m01 + c2.x * m02 - c3.x * m03; + } + + /// Returns a uint hash code of a double4x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(double4x4 v) + { + return csum(fold_to_uint(v.c0) * uint4(0x4DDC6509u, 0x7CF083CBu, 0x5C4D6CEDu, 0xF9137117u) + + fold_to_uint(v.c1) * uint4(0xE857DCE1u, 0xF62213C5u, 0x9CDAA959u, 0xAA269ABFu) + + fold_to_uint(v.c2) * uint4(0xD54BA36Fu, 0xFD0847B9u, 0x8189A683u, 0xB139D651u) + + fold_to_uint(v.c3) * uint4(0xE7579997u, 0xEF7D56C7u, 0x66F38F0Bu, 0x624256A3u)) + 0x5292ADE1u; + } + + /// + /// Returns a uint4 vector hash code of a double4x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(double4x4 v) + { + return (fold_to_uint(v.c0) * uint4(0xD2E590E5u, 0xF25BE857u, 0x9BC17CE7u, 0xC8B86851u) + + fold_to_uint(v.c1) * uint4(0x64095221u, 0xADF428FFu, 0xA3977109u, 0x745ED837u) + + fold_to_uint(v.c2) * uint4(0x9CDC88F5u, 0xFA62D721u, 0x7E4DB1CFu, 0x68EEE0F5u) + + fold_to_uint(v.c3) * uint4(0xBC3B0A59u, 0x816EFB5Du, 0xA24E82B7u, 0x45A22087u)) + 0xFC104C3Bu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x4.gen.cs.meta new file mode 100644 index 0000000..025b7a1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/double4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e000b5ccaea0345d8b4686220f3307ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2.gen.cs new file mode 100644 index 0000000..4326c26 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2.gen.cs @@ -0,0 +1,760 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(float2.DebuggerProxy))] + [System.Serializable] + public partial struct float2 : System.IEquatable, IFormattable + { + public float x; + public float y; + + /// float2 zero value. + public static readonly float2 zero; + + /// Constructs a float2 vector from two float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(float x, float y) + { + this.x = x; + this.y = y; + } + + /// Constructs a float2 vector from a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(float2 xy) + { + this.x = xy.x; + this.y = xy.y; + } + + /// Constructs a float2 vector from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(float v) + { + this.x = v; + this.y = v; + } + + /// Constructs a float2 vector from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(bool v) + { + this.x = v ? 1.0f : 0.0f; + this.y = v ? 1.0f : 0.0f; + } + + /// Constructs a float2 vector from a bool2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(bool2 v) + { + this.x = v.x ? 1.0f : 0.0f; + this.y = v.y ? 1.0f : 0.0f; + } + + /// Constructs a float2 vector from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(int v) + { + this.x = v; + this.y = v; + } + + /// Constructs a float2 vector from a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(int2 v) + { + this.x = v.x; + this.y = v.y; + } + + /// Constructs a float2 vector from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(uint v) + { + this.x = v; + this.y = v; + } + + /// Constructs a float2 vector from a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(uint2 v) + { + this.x = v.x; + this.y = v.y; + } + + /// Constructs a float2 vector from a single half value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(half v) + { + this.x = v; + this.y = v; + } + + /// Constructs a float2 vector from a half2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(half2 v) + { + this.x = v.x; + this.y = v.y; + } + + /// Constructs a float2 vector from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(double v) + { + this.x = (float)v; + this.y = (float)v; + } + + /// Constructs a float2 vector from a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2(double2 v) + { + this.x = (float)v.x; + this.y = (float)v.y; + } + + + /// Implicitly converts a single float value to a float2 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2(float v) { return new float2(v); } + + /// Explicitly converts a single bool value to a float2 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2(bool v) { return new float2(v); } + + /// Explicitly converts a bool2 vector to a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2(bool2 v) { return new float2(v); } + + /// Implicitly converts a single int value to a float2 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2(int v) { return new float2(v); } + + /// Implicitly converts a int2 vector to a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2(int2 v) { return new float2(v); } + + /// Implicitly converts a single uint value to a float2 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2(uint v) { return new float2(v); } + + /// Implicitly converts a uint2 vector to a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2(uint2 v) { return new float2(v); } + + /// Implicitly converts a single half value to a float2 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2(half v) { return new float2(v); } + + /// Implicitly converts a half2 vector to a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2(half2 v) { return new float2(v); } + + /// Explicitly converts a single double value to a float2 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2(double v) { return new float2(v); } + + /// Explicitly converts a double2 vector to a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2(double2 v) { return new float2(v); } + + + /// Returns the result of a componentwise multiplication operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator * (float2 lhs, float2 rhs) { return new float2 (lhs.x * rhs.x, lhs.y * rhs.y); } + + /// Returns the result of a componentwise multiplication operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator * (float2 lhs, float rhs) { return new float2 (lhs.x * rhs, lhs.y * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator * (float lhs, float2 rhs) { return new float2 (lhs * rhs.x, lhs * rhs.y); } + + + /// Returns the result of a componentwise addition operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator + (float2 lhs, float2 rhs) { return new float2 (lhs.x + rhs.x, lhs.y + rhs.y); } + + /// Returns the result of a componentwise addition operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator + (float2 lhs, float rhs) { return new float2 (lhs.x + rhs, lhs.y + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator + (float lhs, float2 rhs) { return new float2 (lhs + rhs.x, lhs + rhs.y); } + + + /// Returns the result of a componentwise subtraction operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator - (float2 lhs, float2 rhs) { return new float2 (lhs.x - rhs.x, lhs.y - rhs.y); } + + /// Returns the result of a componentwise subtraction operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator - (float2 lhs, float rhs) { return new float2 (lhs.x - rhs, lhs.y - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator - (float lhs, float2 rhs) { return new float2 (lhs - rhs.x, lhs - rhs.y); } + + + /// Returns the result of a componentwise division operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator / (float2 lhs, float2 rhs) { return new float2 (lhs.x / rhs.x, lhs.y / rhs.y); } + + /// Returns the result of a componentwise division operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator / (float2 lhs, float rhs) { return new float2 (lhs.x / rhs, lhs.y / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator / (float lhs, float2 rhs) { return new float2 (lhs / rhs.x, lhs / rhs.y); } + + + /// Returns the result of a componentwise modulus operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator % (float2 lhs, float2 rhs) { return new float2 (lhs.x % rhs.x, lhs.y % rhs.y); } + + /// Returns the result of a componentwise modulus operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator % (float2 lhs, float rhs) { return new float2 (lhs.x % rhs, lhs.y % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator % (float lhs, float2 rhs) { return new float2 (lhs % rhs.x, lhs % rhs.y); } + + + /// Returns the result of a componentwise increment operation on a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator ++ (float2 val) { return new float2 (++val.x, ++val.y); } + + + /// Returns the result of a componentwise decrement operation on a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator -- (float2 val) { return new float2 (--val.x, --val.y); } + + + /// Returns the result of a componentwise less than operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (float2 lhs, float2 rhs) { return new bool2 (lhs.x < rhs.x, lhs.y < rhs.y); } + + /// Returns the result of a componentwise less than operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (float2 lhs, float rhs) { return new bool2 (lhs.x < rhs, lhs.y < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (float lhs, float2 rhs) { return new bool2 (lhs < rhs.x, lhs < rhs.y); } + + + /// Returns the result of a componentwise less or equal operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (float2 lhs, float2 rhs) { return new bool2 (lhs.x <= rhs.x, lhs.y <= rhs.y); } + + /// Returns the result of a componentwise less or equal operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (float2 lhs, float rhs) { return new bool2 (lhs.x <= rhs, lhs.y <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (float lhs, float2 rhs) { return new bool2 (lhs <= rhs.x, lhs <= rhs.y); } + + + /// Returns the result of a componentwise greater than operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (float2 lhs, float2 rhs) { return new bool2 (lhs.x > rhs.x, lhs.y > rhs.y); } + + /// Returns the result of a componentwise greater than operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (float2 lhs, float rhs) { return new bool2 (lhs.x > rhs, lhs.y > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (float lhs, float2 rhs) { return new bool2 (lhs > rhs.x, lhs > rhs.y); } + + + /// Returns the result of a componentwise greater or equal operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (float2 lhs, float2 rhs) { return new bool2 (lhs.x >= rhs.x, lhs.y >= rhs.y); } + + /// Returns the result of a componentwise greater or equal operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (float2 lhs, float rhs) { return new bool2 (lhs.x >= rhs, lhs.y >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (float lhs, float2 rhs) { return new bool2 (lhs >= rhs.x, lhs >= rhs.y); } + + + /// Returns the result of a componentwise unary minus operation on a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator - (float2 val) { return new float2 (-val.x, -val.y); } + + + /// Returns the result of a componentwise unary plus operation on a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 operator + (float2 val) { return new float2 (+val.x, +val.y); } + + + /// Returns the result of a componentwise equality operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (float2 lhs, float2 rhs) { return new bool2 (lhs.x == rhs.x, lhs.y == rhs.y); } + + /// Returns the result of a componentwise equality operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (float2 lhs, float rhs) { return new bool2 (lhs.x == rhs, lhs.y == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (float lhs, float2 rhs) { return new bool2 (lhs == rhs.x, lhs == rhs.y); } + + + /// Returns the result of a componentwise not equal operation on two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (float2 lhs, float2 rhs) { return new bool2 (lhs.x != rhs.x, lhs.y != rhs.y); } + + /// Returns the result of a componentwise not equal operation on a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (float2 lhs, float rhs) { return new bool2 (lhs.x != rhs, lhs.y != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (float lhs, float2 rhs) { return new bool2 (lhs != rhs.x, lhs != rhs.y); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(y, y); } + } + + + + /// Returns the float element at a specified index. + unsafe public float this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (float2* array = &this) { return ((float*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (float* array = &x) { array[index] = value; } + } + } + + /// Returns true if the float2 is equal to a given float2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float2 rhs) { return x == rhs.x && y == rhs.y; } + + /// Returns true if the float2 is equal to a given float2, false otherwise. + public override bool Equals(object o) { return Equals((float2)o); } + + + /// Returns a hash code for the float2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float2({0}f, {1}f)", x, y); + } + + /// Returns a string representation of the float2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float2({0}f, {1}f)", x.ToString(format, formatProvider), y.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public float x; + public float y; + public DebuggerProxy(float2 v) + { + x = v.x; + y = v.y; + } + } + + } + + public static partial class math + { + /// Returns a float2 vector constructed from two float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(float x, float y) { return new float2(x, y); } + + /// Returns a float2 vector constructed from a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(float2 xy) { return new float2(xy); } + + /// Returns a float2 vector constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(float v) { return new float2(v); } + + /// Returns a float2 vector constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(bool v) { return new float2(v); } + + /// Return a float2 vector constructed from a bool2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(bool2 v) { return new float2(v); } + + /// Returns a float2 vector constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(int v) { return new float2(v); } + + /// Return a float2 vector constructed from a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(int2 v) { return new float2(v); } + + /// Returns a float2 vector constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(uint v) { return new float2(v); } + + /// Return a float2 vector constructed from a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(uint2 v) { return new float2(v); } + + /// Returns a float2 vector constructed from a single half value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(half v) { return new float2(v); } + + /// Return a float2 vector constructed from a half2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(half2 v) { return new float2(v); } + + /// Returns a float2 vector constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(double v) { return new float2(v); } + + /// Return a float2 vector constructed from a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 float2(double2 v) { return new float2(v); } + + /// Returns a uint hash code of a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float2 v) + { + return csum(asuint(v) * uint2(0xFA3A3285u, 0xAD55999Du)) + 0xDCDD5341u; + } + + /// + /// Returns a uint2 vector hash code of a float2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(float2 v) + { + return (asuint(v) * uint2(0x94DDD769u, 0xA1E92D39u)) + 0x4583C801u; + } + + /// Returns the result of specified shuffling of the components from two float2 vectors into a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float shuffle(float2 a, float2 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two float2 vectors into a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 shuffle(float2 a, float2 b, ShuffleComponent x, ShuffleComponent y) + { + return float2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two float2 vectors into a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 shuffle(float2 a, float2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return float3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two float2 vectors into a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 shuffle(float2 a, float2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return float4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static float select_shuffle_component(float2 a, float2 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2.gen.cs.meta new file mode 100644 index 0000000..8badfce --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4319f4482dc5b5b44a7f99c8725ef211 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x2.gen.cs new file mode 100644 index 0000000..d0a42b2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x2.gen.cs @@ -0,0 +1,468 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct float2x2 : System.IEquatable, IFormattable + { + public float2 c0; + public float2 c1; + + /// float2x2 identity transform. + public static readonly float2x2 identity = new float2x2(1.0f, 0.0f, 0.0f, 1.0f); + + /// float2x2 zero value. + public static readonly float2x2 zero; + + /// Constructs a float2x2 matrix from two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(float2 c0, float2 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a float2x2 matrix from 4 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(float m00, float m01, + float m10, float m11) + { + this.c0 = new float2(m00, m10); + this.c1 = new float2(m01, m11); + } + + /// Constructs a float2x2 matrix from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(float v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a float2x2 matrix from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(bool v) + { + this.c0 = math.select(new float2(0.0f), new float2(1.0f), v); + this.c1 = math.select(new float2(0.0f), new float2(1.0f), v); + } + + /// Constructs a float2x2 matrix from a bool2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(bool2x2 v) + { + this.c0 = math.select(new float2(0.0f), new float2(1.0f), v.c0); + this.c1 = math.select(new float2(0.0f), new float2(1.0f), v.c1); + } + + /// Constructs a float2x2 matrix from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(int v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a float2x2 matrix from a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(int2x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a float2x2 matrix from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(uint v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a float2x2 matrix from a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(uint2x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a float2x2 matrix from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(double v) + { + this.c0 = (float2)v; + this.c1 = (float2)v; + } + + /// Constructs a float2x2 matrix from a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x2(double2x2 v) + { + this.c0 = (float2)v.c0; + this.c1 = (float2)v.c1; + } + + + /// Implicitly converts a single float value to a float2x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x2(float v) { return new float2x2(v); } + + /// Explicitly converts a single bool value to a float2x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x2(bool v) { return new float2x2(v); } + + /// Explicitly converts a bool2x2 matrix to a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x2(bool2x2 v) { return new float2x2(v); } + + /// Implicitly converts a single int value to a float2x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x2(int v) { return new float2x2(v); } + + /// Implicitly converts a int2x2 matrix to a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x2(int2x2 v) { return new float2x2(v); } + + /// Implicitly converts a single uint value to a float2x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x2(uint v) { return new float2x2(v); } + + /// Implicitly converts a uint2x2 matrix to a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x2(uint2x2 v) { return new float2x2(v); } + + /// Explicitly converts a single double value to a float2x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x2(double v) { return new float2x2(v); } + + /// Explicitly converts a double2x2 matrix to a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x2(double2x2 v) { return new float2x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator * (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator * (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator * (float lhs, float2x2 rhs) { return new float2x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator + (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator + (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator + (float lhs, float2x2 rhs) { return new float2x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator - (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator - (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator - (float lhs, float2x2 rhs) { return new float2x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator / (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator / (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator / (float lhs, float2x2 rhs) { return new float2x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator % (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator % (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator % (float lhs, float2x2 rhs) { return new float2x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator ++ (float2x2 val) { return new float2x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator -- (float2x2 val) { return new float2x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (float lhs, float2x2 rhs) { return new bool2x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (float lhs, float2x2 rhs) { return new bool2x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (float lhs, float2x2 rhs) { return new bool2x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (float lhs, float2x2 rhs) { return new bool2x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator - (float2x2 val) { return new float2x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 operator + (float2x2 val) { return new float2x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise equality operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (float lhs, float2x2 rhs) { return new bool2x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two float2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a float2x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (float lhs, float2x2 rhs) { return new bool2x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + + /// Returns the float2 element at a specified index. + unsafe public ref float2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (float2x2* array = &this) { return ref ((float2*)array)[index]; } + } + } + + /// Returns true if the float2x2 is equal to a given float2x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float2x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the float2x2 is equal to a given float2x2, false otherwise. + public override bool Equals(object o) { return Equals((float2x2)o); } + + + /// Returns a hash code for the float2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float2x2({0}f, {1}f, {2}f, {3}f)", c0.x, c1.x, c0.y, c1.y); + } + + /// Returns a string representation of the float2x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float2x2({0}f, {1}f, {2}f, {3}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a float2x2 matrix constructed from two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(float2 c0, float2 c1) { return new float2x2(c0, c1); } + + /// Returns a float2x2 matrix constructed from from 4 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(float m00, float m01, + float m10, float m11) + { + return new float2x2(m00, m01, + m10, m11); + } + + /// Returns a float2x2 matrix constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(float v) { return new float2x2(v); } + + /// Returns a float2x2 matrix constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(bool v) { return new float2x2(v); } + + /// Return a float2x2 matrix constructed from a bool2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(bool2x2 v) { return new float2x2(v); } + + /// Returns a float2x2 matrix constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(int v) { return new float2x2(v); } + + /// Return a float2x2 matrix constructed from a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(int2x2 v) { return new float2x2(v); } + + /// Returns a float2x2 matrix constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(uint v) { return new float2x2(v); } + + /// Return a float2x2 matrix constructed from a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(uint2x2 v) { return new float2x2(v); } + + /// Returns a float2x2 matrix constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(double v) { return new float2x2(v); } + + /// Return a float2x2 matrix constructed from a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 float2x2(double2x2 v) { return new float2x2(v); } + + /// Return the float2x2 transpose of a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 transpose(float2x2 v) + { + return float2x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y); + } + + /// Returns the float2x2 full inverse of a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 inverse(float2x2 m) + { + float a = m.c0.x; + float b = m.c1.x; + float c = m.c0.y; + float d = m.c1.y; + + float det = a * d - b * c; + + return float2x2(d, -b, -c, a) * (1.0f / det); + } + + /// Returns the determinant of a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float determinant(float2x2 m) + { + float a = m.c0.x; + float b = m.c1.x; + float c = m.c0.y; + float d = m.c1.y; + + return a * d - b * c; + } + + /// Returns a uint hash code of a float2x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float2x2 v) + { + return csum(asuint(v.c0) * uint2(0x9C9F0823u, 0x5A9CA13Bu) + + asuint(v.c1) * uint2(0xAFCDD5EFu, 0xA88D187Du)) + 0xCF6EBA1Du; + } + + /// + /// Returns a uint2 vector hash code of a float2x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(float2x2 v) + { + return (asuint(v.c0) * uint2(0x9D88E5A1u, 0xEADF0775u) + + asuint(v.c1) * uint2(0x747A9D7Bu, 0x4111F799u)) + 0xB5F05AF1u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x2.gen.cs.meta new file mode 100644 index 0000000..f0671d4 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93080f7a13fd743e3aaaac6fee9f12b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x3.gen.cs new file mode 100644 index 0000000..54d4bc9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x3.gen.cs @@ -0,0 +1,454 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct float2x3 : System.IEquatable, IFormattable + { + public float2 c0; + public float2 c1; + public float2 c2; + + /// float2x3 zero value. + public static readonly float2x3 zero; + + /// Constructs a float2x3 matrix from three float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(float2 c0, float2 c1, float2 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a float2x3 matrix from 6 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(float m00, float m01, float m02, + float m10, float m11, float m12) + { + this.c0 = new float2(m00, m10); + this.c1 = new float2(m01, m11); + this.c2 = new float2(m02, m12); + } + + /// Constructs a float2x3 matrix from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a float2x3 matrix from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(bool v) + { + this.c0 = math.select(new float2(0.0f), new float2(1.0f), v); + this.c1 = math.select(new float2(0.0f), new float2(1.0f), v); + this.c2 = math.select(new float2(0.0f), new float2(1.0f), v); + } + + /// Constructs a float2x3 matrix from a bool2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(bool2x3 v) + { + this.c0 = math.select(new float2(0.0f), new float2(1.0f), v.c0); + this.c1 = math.select(new float2(0.0f), new float2(1.0f), v.c1); + this.c2 = math.select(new float2(0.0f), new float2(1.0f), v.c2); + } + + /// Constructs a float2x3 matrix from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a float2x3 matrix from a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(int2x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a float2x3 matrix from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a float2x3 matrix from a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(uint2x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a float2x3 matrix from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(double v) + { + this.c0 = (float2)v; + this.c1 = (float2)v; + this.c2 = (float2)v; + } + + /// Constructs a float2x3 matrix from a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x3(double2x3 v) + { + this.c0 = (float2)v.c0; + this.c1 = (float2)v.c1; + this.c2 = (float2)v.c2; + } + + + /// Implicitly converts a single float value to a float2x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x3(float v) { return new float2x3(v); } + + /// Explicitly converts a single bool value to a float2x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x3(bool v) { return new float2x3(v); } + + /// Explicitly converts a bool2x3 matrix to a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x3(bool2x3 v) { return new float2x3(v); } + + /// Implicitly converts a single int value to a float2x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x3(int v) { return new float2x3(v); } + + /// Implicitly converts a int2x3 matrix to a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x3(int2x3 v) { return new float2x3(v); } + + /// Implicitly converts a single uint value to a float2x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x3(uint v) { return new float2x3(v); } + + /// Implicitly converts a uint2x3 matrix to a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x3(uint2x3 v) { return new float2x3(v); } + + /// Explicitly converts a single double value to a float2x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x3(double v) { return new float2x3(v); } + + /// Explicitly converts a double2x3 matrix to a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x3(double2x3 v) { return new float2x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator * (float2x3 lhs, float2x3 rhs) { return new float2x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator * (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator * (float lhs, float2x3 rhs) { return new float2x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator + (float2x3 lhs, float2x3 rhs) { return new float2x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator + (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator + (float lhs, float2x3 rhs) { return new float2x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator - (float2x3 lhs, float2x3 rhs) { return new float2x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator - (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator - (float lhs, float2x3 rhs) { return new float2x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator / (float2x3 lhs, float2x3 rhs) { return new float2x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator / (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator / (float lhs, float2x3 rhs) { return new float2x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator % (float2x3 lhs, float2x3 rhs) { return new float2x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator % (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator % (float lhs, float2x3 rhs) { return new float2x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator ++ (float2x3 val) { return new float2x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator -- (float2x3 val) { return new float2x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (float2x3 lhs, float2x3 rhs) { return new bool2x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (float lhs, float2x3 rhs) { return new bool2x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (float2x3 lhs, float2x3 rhs) { return new bool2x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (float lhs, float2x3 rhs) { return new bool2x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (float2x3 lhs, float2x3 rhs) { return new bool2x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (float lhs, float2x3 rhs) { return new bool2x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (float2x3 lhs, float2x3 rhs) { return new bool2x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (float lhs, float2x3 rhs) { return new bool2x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator - (float2x3 val) { return new float2x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 operator + (float2x3 val) { return new float2x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise equality operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (float2x3 lhs, float2x3 rhs) { return new bool2x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (float lhs, float2x3 rhs) { return new bool2x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two float2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (float2x3 lhs, float2x3 rhs) { return new bool2x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a float2x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (float lhs, float2x3 rhs) { return new bool2x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + + /// Returns the float2 element at a specified index. + unsafe public ref float2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (float2x3* array = &this) { return ref ((float2*)array)[index]; } + } + } + + /// Returns true if the float2x3 is equal to a given float2x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float2x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the float2x3 is equal to a given float2x3, false otherwise. + public override bool Equals(object o) { return Equals((float2x3)o); } + + + /// Returns a hash code for the float2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float2x3({0}f, {1}f, {2}f, {3}f, {4}f, {5}f)", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y); + } + + /// Returns a string representation of the float2x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float2x3({0}f, {1}f, {2}f, {3}f, {4}f, {5}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a float2x3 matrix constructed from three float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(float2 c0, float2 c1, float2 c2) { return new float2x3(c0, c1, c2); } + + /// Returns a float2x3 matrix constructed from from 6 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(float m00, float m01, float m02, + float m10, float m11, float m12) + { + return new float2x3(m00, m01, m02, + m10, m11, m12); + } + + /// Returns a float2x3 matrix constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(float v) { return new float2x3(v); } + + /// Returns a float2x3 matrix constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(bool v) { return new float2x3(v); } + + /// Return a float2x3 matrix constructed from a bool2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(bool2x3 v) { return new float2x3(v); } + + /// Returns a float2x3 matrix constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(int v) { return new float2x3(v); } + + /// Return a float2x3 matrix constructed from a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(int2x3 v) { return new float2x3(v); } + + /// Returns a float2x3 matrix constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(uint v) { return new float2x3(v); } + + /// Return a float2x3 matrix constructed from a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(uint2x3 v) { return new float2x3(v); } + + /// Returns a float2x3 matrix constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(double v) { return new float2x3(v); } + + /// Return a float2x3 matrix constructed from a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 float2x3(double2x3 v) { return new float2x3(v); } + + /// Return the float3x2 transpose of a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 transpose(float2x3 v) + { + return float3x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y); + } + + /// Returns a uint hash code of a float2x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float2x3 v) + { + return csum(asuint(v.c0) * uint2(0xE857DCE1u, 0xF62213C5u) + + asuint(v.c1) * uint2(0x9CDAA959u, 0xAA269ABFu) + + asuint(v.c2) * uint2(0xD54BA36Fu, 0xFD0847B9u)) + 0x8189A683u; + } + + /// + /// Returns a uint2 vector hash code of a float2x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(float2x3 v) + { + return (asuint(v.c0) * uint2(0xB139D651u, 0xE7579997u) + + asuint(v.c1) * uint2(0xEF7D56C7u, 0x66F38F0Bu) + + asuint(v.c2) * uint2(0x624256A3u, 0x5292ADE1u)) + 0xD2E590E5u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x3.gen.cs.meta new file mode 100644 index 0000000..509bdb8 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6047b8d8f85d4465b798320ea146853 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x4.gen.cs new file mode 100644 index 0000000..5e66889 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x4.gen.cs @@ -0,0 +1,469 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct float2x4 : System.IEquatable, IFormattable + { + public float2 c0; + public float2 c1; + public float2 c2; + public float2 c3; + + /// float2x4 zero value. + public static readonly float2x4 zero; + + /// Constructs a float2x4 matrix from four float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(float2 c0, float2 c1, float2 c2, float2 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a float2x4 matrix from 8 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(float m00, float m01, float m02, float m03, + float m10, float m11, float m12, float m13) + { + this.c0 = new float2(m00, m10); + this.c1 = new float2(m01, m11); + this.c2 = new float2(m02, m12); + this.c3 = new float2(m03, m13); + } + + /// Constructs a float2x4 matrix from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a float2x4 matrix from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(bool v) + { + this.c0 = math.select(new float2(0.0f), new float2(1.0f), v); + this.c1 = math.select(new float2(0.0f), new float2(1.0f), v); + this.c2 = math.select(new float2(0.0f), new float2(1.0f), v); + this.c3 = math.select(new float2(0.0f), new float2(1.0f), v); + } + + /// Constructs a float2x4 matrix from a bool2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(bool2x4 v) + { + this.c0 = math.select(new float2(0.0f), new float2(1.0f), v.c0); + this.c1 = math.select(new float2(0.0f), new float2(1.0f), v.c1); + this.c2 = math.select(new float2(0.0f), new float2(1.0f), v.c2); + this.c3 = math.select(new float2(0.0f), new float2(1.0f), v.c3); + } + + /// Constructs a float2x4 matrix from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a float2x4 matrix from a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(int2x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a float2x4 matrix from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a float2x4 matrix from a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(uint2x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a float2x4 matrix from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(double v) + { + this.c0 = (float2)v; + this.c1 = (float2)v; + this.c2 = (float2)v; + this.c3 = (float2)v; + } + + /// Constructs a float2x4 matrix from a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2x4(double2x4 v) + { + this.c0 = (float2)v.c0; + this.c1 = (float2)v.c1; + this.c2 = (float2)v.c2; + this.c3 = (float2)v.c3; + } + + + /// Implicitly converts a single float value to a float2x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x4(float v) { return new float2x4(v); } + + /// Explicitly converts a single bool value to a float2x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x4(bool v) { return new float2x4(v); } + + /// Explicitly converts a bool2x4 matrix to a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x4(bool2x4 v) { return new float2x4(v); } + + /// Implicitly converts a single int value to a float2x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x4(int v) { return new float2x4(v); } + + /// Implicitly converts a int2x4 matrix to a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x4(int2x4 v) { return new float2x4(v); } + + /// Implicitly converts a single uint value to a float2x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x4(uint v) { return new float2x4(v); } + + /// Implicitly converts a uint2x4 matrix to a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float2x4(uint2x4 v) { return new float2x4(v); } + + /// Explicitly converts a single double value to a float2x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x4(double v) { return new float2x4(v); } + + /// Explicitly converts a double2x4 matrix to a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float2x4(double2x4 v) { return new float2x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator * (float2x4 lhs, float2x4 rhs) { return new float2x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator * (float2x4 lhs, float rhs) { return new float2x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator * (float lhs, float2x4 rhs) { return new float2x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator + (float2x4 lhs, float2x4 rhs) { return new float2x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator + (float2x4 lhs, float rhs) { return new float2x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator + (float lhs, float2x4 rhs) { return new float2x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator - (float2x4 lhs, float2x4 rhs) { return new float2x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator - (float2x4 lhs, float rhs) { return new float2x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator - (float lhs, float2x4 rhs) { return new float2x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator / (float2x4 lhs, float2x4 rhs) { return new float2x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator / (float2x4 lhs, float rhs) { return new float2x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator / (float lhs, float2x4 rhs) { return new float2x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator % (float2x4 lhs, float2x4 rhs) { return new float2x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator % (float2x4 lhs, float rhs) { return new float2x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator % (float lhs, float2x4 rhs) { return new float2x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator ++ (float2x4 val) { return new float2x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator -- (float2x4 val) { return new float2x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (float2x4 lhs, float2x4 rhs) { return new bool2x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (float2x4 lhs, float rhs) { return new bool2x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (float lhs, float2x4 rhs) { return new bool2x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (float2x4 lhs, float2x4 rhs) { return new bool2x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (float2x4 lhs, float rhs) { return new bool2x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (float lhs, float2x4 rhs) { return new bool2x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (float2x4 lhs, float2x4 rhs) { return new bool2x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (float2x4 lhs, float rhs) { return new bool2x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (float lhs, float2x4 rhs) { return new bool2x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (float2x4 lhs, float2x4 rhs) { return new bool2x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (float2x4 lhs, float rhs) { return new bool2x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (float lhs, float2x4 rhs) { return new bool2x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator - (float2x4 val) { return new float2x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 operator + (float2x4 val) { return new float2x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise equality operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (float2x4 lhs, float2x4 rhs) { return new bool2x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (float2x4 lhs, float rhs) { return new bool2x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (float lhs, float2x4 rhs) { return new bool2x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two float2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (float2x4 lhs, float2x4 rhs) { return new bool2x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a float2x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (float2x4 lhs, float rhs) { return new bool2x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (float lhs, float2x4 rhs) { return new bool2x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + + /// Returns the float2 element at a specified index. + unsafe public ref float2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (float2x4* array = &this) { return ref ((float2*)array)[index]; } + } + } + + /// Returns true if the float2x4 is equal to a given float2x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float2x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the float2x4 is equal to a given float2x4, false otherwise. + public override bool Equals(object o) { return Equals((float2x4)o); } + + + /// Returns a hash code for the float2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float2x4({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f)", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y); + } + + /// Returns a string representation of the float2x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float2x4({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a float2x4 matrix constructed from four float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(float2 c0, float2 c1, float2 c2, float2 c3) { return new float2x4(c0, c1, c2, c3); } + + /// Returns a float2x4 matrix constructed from from 8 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(float m00, float m01, float m02, float m03, + float m10, float m11, float m12, float m13) + { + return new float2x4(m00, m01, m02, m03, + m10, m11, m12, m13); + } + + /// Returns a float2x4 matrix constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(float v) { return new float2x4(v); } + + /// Returns a float2x4 matrix constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(bool v) { return new float2x4(v); } + + /// Return a float2x4 matrix constructed from a bool2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(bool2x4 v) { return new float2x4(v); } + + /// Returns a float2x4 matrix constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(int v) { return new float2x4(v); } + + /// Return a float2x4 matrix constructed from a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(int2x4 v) { return new float2x4(v); } + + /// Returns a float2x4 matrix constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(uint v) { return new float2x4(v); } + + /// Return a float2x4 matrix constructed from a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(uint2x4 v) { return new float2x4(v); } + + /// Returns a float2x4 matrix constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(double v) { return new float2x4(v); } + + /// Return a float2x4 matrix constructed from a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 float2x4(double2x4 v) { return new float2x4(v); } + + /// Return the float4x2 transpose of a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 transpose(float2x4 v) + { + return float4x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y, + v.c3.x, v.c3.y); + } + + /// Returns a uint hash code of a float2x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float2x4 v) + { + return csum(asuint(v.c0) * uint2(0xD35C9B2Du, 0xA10D9E27u) + + asuint(v.c1) * uint2(0x568DAAA9u, 0x7530254Fu) + + asuint(v.c2) * uint2(0x9F090439u, 0x5E9F85C9u) + + asuint(v.c3) * uint2(0x8C4CA03Fu, 0xB8D969EDu)) + 0xAC5DB57Bu; + } + + /// + /// Returns a uint2 vector hash code of a float2x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(float2x4 v) + { + return (asuint(v.c0) * uint2(0xA91A02EDu, 0xB3C49313u) + + asuint(v.c1) * uint2(0xF43A9ABBu, 0x84E7E01Bu) + + asuint(v.c2) * uint2(0x8E055BE5u, 0x6E624EB7u) + + asuint(v.c3) * uint2(0x7383ED49u, 0xDD49C23Bu)) + 0xEBD0D005u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x4.gen.cs.meta new file mode 100644 index 0000000..4579c69 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70c2d51ac2a824bdb88b239c4fa6122c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3.gen.cs new file mode 100644 index 0000000..b03206b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3.gen.cs @@ -0,0 +1,1538 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(float3.DebuggerProxy))] + [System.Serializable] + public partial struct float3 : System.IEquatable, IFormattable + { + public float x; + public float y; + public float z; + + /// float3 zero value. + public static readonly float3 zero; + + /// Constructs a float3 vector from three float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(float x, float y, float z) + { + this.x = x; + this.y = y; + this.z = z; + } + + /// Constructs a float3 vector from a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(float x, float2 yz) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + } + + /// Constructs a float3 vector from a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(float2 xy, float z) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + } + + /// Constructs a float3 vector from a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(float3 xyz) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + } + + /// Constructs a float3 vector from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(float v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a float3 vector from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(bool v) + { + this.x = v ? 1.0f : 0.0f; + this.y = v ? 1.0f : 0.0f; + this.z = v ? 1.0f : 0.0f; + } + + /// Constructs a float3 vector from a bool3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(bool3 v) + { + this.x = v.x ? 1.0f : 0.0f; + this.y = v.y ? 1.0f : 0.0f; + this.z = v.z ? 1.0f : 0.0f; + } + + /// Constructs a float3 vector from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(int v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a float3 vector from a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(int3 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + } + + /// Constructs a float3 vector from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(uint v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a float3 vector from a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(uint3 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + } + + /// Constructs a float3 vector from a single half value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(half v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a float3 vector from a half3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(half3 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + } + + /// Constructs a float3 vector from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(double v) + { + this.x = (float)v; + this.y = (float)v; + this.z = (float)v; + } + + /// Constructs a float3 vector from a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3(double3 v) + { + this.x = (float)v.x; + this.y = (float)v.y; + this.z = (float)v.z; + } + + + /// Implicitly converts a single float value to a float3 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3(float v) { return new float3(v); } + + /// Explicitly converts a single bool value to a float3 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3(bool v) { return new float3(v); } + + /// Explicitly converts a bool3 vector to a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3(bool3 v) { return new float3(v); } + + /// Implicitly converts a single int value to a float3 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3(int v) { return new float3(v); } + + /// Implicitly converts a int3 vector to a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3(int3 v) { return new float3(v); } + + /// Implicitly converts a single uint value to a float3 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3(uint v) { return new float3(v); } + + /// Implicitly converts a uint3 vector to a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3(uint3 v) { return new float3(v); } + + /// Implicitly converts a single half value to a float3 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3(half v) { return new float3(v); } + + /// Implicitly converts a half3 vector to a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3(half3 v) { return new float3(v); } + + /// Explicitly converts a single double value to a float3 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3(double v) { return new float3(v); } + + /// Explicitly converts a double3 vector to a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3(double3 v) { return new float3(v); } + + + /// Returns the result of a componentwise multiplication operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator * (float3 lhs, float3 rhs) { return new float3 (lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z); } + + /// Returns the result of a componentwise multiplication operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator * (float3 lhs, float rhs) { return new float3 (lhs.x * rhs, lhs.y * rhs, lhs.z * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator * (float lhs, float3 rhs) { return new float3 (lhs * rhs.x, lhs * rhs.y, lhs * rhs.z); } + + + /// Returns the result of a componentwise addition operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator + (float3 lhs, float3 rhs) { return new float3 (lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z); } + + /// Returns the result of a componentwise addition operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator + (float3 lhs, float rhs) { return new float3 (lhs.x + rhs, lhs.y + rhs, lhs.z + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator + (float lhs, float3 rhs) { return new float3 (lhs + rhs.x, lhs + rhs.y, lhs + rhs.z); } + + + /// Returns the result of a componentwise subtraction operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator - (float3 lhs, float3 rhs) { return new float3 (lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z); } + + /// Returns the result of a componentwise subtraction operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator - (float3 lhs, float rhs) { return new float3 (lhs.x - rhs, lhs.y - rhs, lhs.z - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator - (float lhs, float3 rhs) { return new float3 (lhs - rhs.x, lhs - rhs.y, lhs - rhs.z); } + + + /// Returns the result of a componentwise division operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator / (float3 lhs, float3 rhs) { return new float3 (lhs.x / rhs.x, lhs.y / rhs.y, lhs.z / rhs.z); } + + /// Returns the result of a componentwise division operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator / (float3 lhs, float rhs) { return new float3 (lhs.x / rhs, lhs.y / rhs, lhs.z / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator / (float lhs, float3 rhs) { return new float3 (lhs / rhs.x, lhs / rhs.y, lhs / rhs.z); } + + + /// Returns the result of a componentwise modulus operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator % (float3 lhs, float3 rhs) { return new float3 (lhs.x % rhs.x, lhs.y % rhs.y, lhs.z % rhs.z); } + + /// Returns the result of a componentwise modulus operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator % (float3 lhs, float rhs) { return new float3 (lhs.x % rhs, lhs.y % rhs, lhs.z % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator % (float lhs, float3 rhs) { return new float3 (lhs % rhs.x, lhs % rhs.y, lhs % rhs.z); } + + + /// Returns the result of a componentwise increment operation on a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator ++ (float3 val) { return new float3 (++val.x, ++val.y, ++val.z); } + + + /// Returns the result of a componentwise decrement operation on a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator -- (float3 val) { return new float3 (--val.x, --val.y, --val.z); } + + + /// Returns the result of a componentwise less than operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (float3 lhs, float3 rhs) { return new bool3 (lhs.x < rhs.x, lhs.y < rhs.y, lhs.z < rhs.z); } + + /// Returns the result of a componentwise less than operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (float3 lhs, float rhs) { return new bool3 (lhs.x < rhs, lhs.y < rhs, lhs.z < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (float lhs, float3 rhs) { return new bool3 (lhs < rhs.x, lhs < rhs.y, lhs < rhs.z); } + + + /// Returns the result of a componentwise less or equal operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (float3 lhs, float3 rhs) { return new bool3 (lhs.x <= rhs.x, lhs.y <= rhs.y, lhs.z <= rhs.z); } + + /// Returns the result of a componentwise less or equal operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (float3 lhs, float rhs) { return new bool3 (lhs.x <= rhs, lhs.y <= rhs, lhs.z <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (float lhs, float3 rhs) { return new bool3 (lhs <= rhs.x, lhs <= rhs.y, lhs <= rhs.z); } + + + /// Returns the result of a componentwise greater than operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (float3 lhs, float3 rhs) { return new bool3 (lhs.x > rhs.x, lhs.y > rhs.y, lhs.z > rhs.z); } + + /// Returns the result of a componentwise greater than operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (float3 lhs, float rhs) { return new bool3 (lhs.x > rhs, lhs.y > rhs, lhs.z > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (float lhs, float3 rhs) { return new bool3 (lhs > rhs.x, lhs > rhs.y, lhs > rhs.z); } + + + /// Returns the result of a componentwise greater or equal operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (float3 lhs, float3 rhs) { return new bool3 (lhs.x >= rhs.x, lhs.y >= rhs.y, lhs.z >= rhs.z); } + + /// Returns the result of a componentwise greater or equal operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (float3 lhs, float rhs) { return new bool3 (lhs.x >= rhs, lhs.y >= rhs, lhs.z >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (float lhs, float3 rhs) { return new bool3 (lhs >= rhs.x, lhs >= rhs.y, lhs >= rhs.z); } + + + /// Returns the result of a componentwise unary minus operation on a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator - (float3 val) { return new float3 (-val.x, -val.y, -val.z); } + + + /// Returns the result of a componentwise unary plus operation on a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 operator + (float3 val) { return new float3 (+val.x, +val.y, +val.z); } + + + /// Returns the result of a componentwise equality operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (float3 lhs, float3 rhs) { return new bool3 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z); } + + /// Returns the result of a componentwise equality operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (float3 lhs, float rhs) { return new bool3 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (float lhs, float3 rhs) { return new bool3 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z); } + + + /// Returns the result of a componentwise not equal operation on two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (float3 lhs, float3 rhs) { return new bool3 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z); } + + /// Returns the result of a componentwise not equal operation on a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (float3 lhs, float rhs) { return new bool3 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (float lhs, float3 rhs) { return new bool3 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(z, z); } + } + + + + /// Returns the float element at a specified index. + unsafe public float this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (float3* array = &this) { return ((float*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (float* array = &x) { array[index] = value; } + } + } + + /// Returns true if the float3 is equal to a given float3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float3 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z; } + + /// Returns true if the float3 is equal to a given float3, false otherwise. + public override bool Equals(object o) { return Equals((float3)o); } + + + /// Returns a hash code for the float3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float3({0}f, {1}f, {2}f)", x, y, z); + } + + /// Returns a string representation of the float3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float3({0}f, {1}f, {2}f)", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public float x; + public float y; + public float z; + public DebuggerProxy(float3 v) + { + x = v.x; + y = v.y; + z = v.z; + } + } + + } + + public static partial class math + { + /// Returns a float3 vector constructed from three float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(float x, float y, float z) { return new float3(x, y, z); } + + /// Returns a float3 vector constructed from a float value and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(float x, float2 yz) { return new float3(x, yz); } + + /// Returns a float3 vector constructed from a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(float2 xy, float z) { return new float3(xy, z); } + + /// Returns a float3 vector constructed from a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(float3 xyz) { return new float3(xyz); } + + /// Returns a float3 vector constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(float v) { return new float3(v); } + + /// Returns a float3 vector constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(bool v) { return new float3(v); } + + /// Return a float3 vector constructed from a bool3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(bool3 v) { return new float3(v); } + + /// Returns a float3 vector constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(int v) { return new float3(v); } + + /// Return a float3 vector constructed from a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(int3 v) { return new float3(v); } + + /// Returns a float3 vector constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(uint v) { return new float3(v); } + + /// Return a float3 vector constructed from a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(uint3 v) { return new float3(v); } + + /// Returns a float3 vector constructed from a single half value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(half v) { return new float3(v); } + + /// Return a float3 vector constructed from a half3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(half3 v) { return new float3(v); } + + /// Returns a float3 vector constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(double v) { return new float3(v); } + + /// Return a float3 vector constructed from a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 float3(double3 v) { return new float3(v); } + + /// Returns a uint hash code of a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float3 v) + { + return csum(asuint(v) * uint3(0x9B13B92Du, 0x4ABF0813u, 0x86068063u)) + 0xD75513F9u; + } + + /// + /// Returns a uint3 vector hash code of a float3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(float3 v) + { + return (asuint(v) * uint3(0x5AB3E8CDu, 0x676E8407u, 0xB36DE767u)) + 0x6FCA387Du; + } + + /// Returns the result of specified shuffling of the components from two float3 vectors into a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float shuffle(float3 a, float3 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two float3 vectors into a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 shuffle(float3 a, float3 b, ShuffleComponent x, ShuffleComponent y) + { + return float2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two float3 vectors into a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 shuffle(float3 a, float3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return float3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two float3 vectors into a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 shuffle(float3 a, float3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return float4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static float select_shuffle_component(float3 a, float3 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3.gen.cs.meta new file mode 100644 index 0000000..40c6c75 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e8e5da9e769595428f8f1f51e642dd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x2.gen.cs new file mode 100644 index 0000000..793efb9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x2.gen.cs @@ -0,0 +1,442 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct float3x2 : System.IEquatable, IFormattable + { + public float3 c0; + public float3 c1; + + /// float3x2 zero value. + public static readonly float3x2 zero; + + /// Constructs a float3x2 matrix from two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(float3 c0, float3 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a float3x2 matrix from 6 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(float m00, float m01, + float m10, float m11, + float m20, float m21) + { + this.c0 = new float3(m00, m10, m20); + this.c1 = new float3(m01, m11, m21); + } + + /// Constructs a float3x2 matrix from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(float v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a float3x2 matrix from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(bool v) + { + this.c0 = math.select(new float3(0.0f), new float3(1.0f), v); + this.c1 = math.select(new float3(0.0f), new float3(1.0f), v); + } + + /// Constructs a float3x2 matrix from a bool3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(bool3x2 v) + { + this.c0 = math.select(new float3(0.0f), new float3(1.0f), v.c0); + this.c1 = math.select(new float3(0.0f), new float3(1.0f), v.c1); + } + + /// Constructs a float3x2 matrix from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(int v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a float3x2 matrix from a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(int3x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a float3x2 matrix from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(uint v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a float3x2 matrix from a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(uint3x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a float3x2 matrix from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(double v) + { + this.c0 = (float3)v; + this.c1 = (float3)v; + } + + /// Constructs a float3x2 matrix from a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x2(double3x2 v) + { + this.c0 = (float3)v.c0; + this.c1 = (float3)v.c1; + } + + + /// Implicitly converts a single float value to a float3x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x2(float v) { return new float3x2(v); } + + /// Explicitly converts a single bool value to a float3x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x2(bool v) { return new float3x2(v); } + + /// Explicitly converts a bool3x2 matrix to a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x2(bool3x2 v) { return new float3x2(v); } + + /// Implicitly converts a single int value to a float3x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x2(int v) { return new float3x2(v); } + + /// Implicitly converts a int3x2 matrix to a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x2(int3x2 v) { return new float3x2(v); } + + /// Implicitly converts a single uint value to a float3x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x2(uint v) { return new float3x2(v); } + + /// Implicitly converts a uint3x2 matrix to a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x2(uint3x2 v) { return new float3x2(v); } + + /// Explicitly converts a single double value to a float3x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x2(double v) { return new float3x2(v); } + + /// Explicitly converts a double3x2 matrix to a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x2(double3x2 v) { return new float3x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator * (float3x2 lhs, float3x2 rhs) { return new float3x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator * (float3x2 lhs, float rhs) { return new float3x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator * (float lhs, float3x2 rhs) { return new float3x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator + (float3x2 lhs, float3x2 rhs) { return new float3x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator + (float3x2 lhs, float rhs) { return new float3x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator + (float lhs, float3x2 rhs) { return new float3x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator - (float3x2 lhs, float3x2 rhs) { return new float3x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator - (float3x2 lhs, float rhs) { return new float3x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator - (float lhs, float3x2 rhs) { return new float3x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator / (float3x2 lhs, float3x2 rhs) { return new float3x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator / (float3x2 lhs, float rhs) { return new float3x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator / (float lhs, float3x2 rhs) { return new float3x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator % (float3x2 lhs, float3x2 rhs) { return new float3x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator % (float3x2 lhs, float rhs) { return new float3x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator % (float lhs, float3x2 rhs) { return new float3x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator ++ (float3x2 val) { return new float3x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator -- (float3x2 val) { return new float3x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (float3x2 lhs, float3x2 rhs) { return new bool3x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (float3x2 lhs, float rhs) { return new bool3x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (float lhs, float3x2 rhs) { return new bool3x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (float3x2 lhs, float3x2 rhs) { return new bool3x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (float3x2 lhs, float rhs) { return new bool3x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (float lhs, float3x2 rhs) { return new bool3x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (float3x2 lhs, float3x2 rhs) { return new bool3x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (float3x2 lhs, float rhs) { return new bool3x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (float lhs, float3x2 rhs) { return new bool3x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (float3x2 lhs, float3x2 rhs) { return new bool3x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (float3x2 lhs, float rhs) { return new bool3x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (float lhs, float3x2 rhs) { return new bool3x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator - (float3x2 val) { return new float3x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 operator + (float3x2 val) { return new float3x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise equality operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (float3x2 lhs, float3x2 rhs) { return new bool3x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (float3x2 lhs, float rhs) { return new bool3x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (float lhs, float3x2 rhs) { return new bool3x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two float3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (float3x2 lhs, float3x2 rhs) { return new bool3x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a float3x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (float3x2 lhs, float rhs) { return new bool3x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (float lhs, float3x2 rhs) { return new bool3x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + + /// Returns the float3 element at a specified index. + unsafe public ref float3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (float3x2* array = &this) { return ref ((float3*)array)[index]; } + } + } + + /// Returns true if the float3x2 is equal to a given float3x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float3x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the float3x2 is equal to a given float3x2, false otherwise. + public override bool Equals(object o) { return Equals((float3x2)o); } + + + /// Returns a hash code for the float3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float3x2({0}f, {1}f, {2}f, {3}f, {4}f, {5}f)", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z); + } + + /// Returns a string representation of the float3x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float3x2({0}f, {1}f, {2}f, {3}f, {4}f, {5}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a float3x2 matrix constructed from two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(float3 c0, float3 c1) { return new float3x2(c0, c1); } + + /// Returns a float3x2 matrix constructed from from 6 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(float m00, float m01, + float m10, float m11, + float m20, float m21) + { + return new float3x2(m00, m01, + m10, m11, + m20, m21); + } + + /// Returns a float3x2 matrix constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(float v) { return new float3x2(v); } + + /// Returns a float3x2 matrix constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(bool v) { return new float3x2(v); } + + /// Return a float3x2 matrix constructed from a bool3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(bool3x2 v) { return new float3x2(v); } + + /// Returns a float3x2 matrix constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(int v) { return new float3x2(v); } + + /// Return a float3x2 matrix constructed from a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(int3x2 v) { return new float3x2(v); } + + /// Returns a float3x2 matrix constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(uint v) { return new float3x2(v); } + + /// Return a float3x2 matrix constructed from a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(uint3x2 v) { return new float3x2(v); } + + /// Returns a float3x2 matrix constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(double v) { return new float3x2(v); } + + /// Return a float3x2 matrix constructed from a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 float3x2(double3x2 v) { return new float3x2(v); } + + /// Return the float2x3 transpose of a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 transpose(float3x2 v) + { + return float2x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z); + } + + /// Returns a uint hash code of a float3x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float3x2 v) + { + return csum(asuint(v.c0) * uint3(0xE121E6ADu, 0xC9CA1249u, 0x69B60C81u) + + asuint(v.c1) * uint3(0xE0EB6C25u, 0xF648BEABu, 0x6BDB2B07u)) + 0xEF63C699u; + } + + /// + /// Returns a uint3 vector hash code of a float3x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(float3x2 v) + { + return (asuint(v.c0) * uint3(0x9001903Fu, 0xA895B9CDu, 0x9D23B201u) + + asuint(v.c1) * uint3(0x4B01D3E1u, 0x7461CA0Du, 0x79725379u)) + 0xD6258E5Bu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x2.gen.cs.meta new file mode 100644 index 0000000..84208ff --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d20ff0b41ab5f4071b3d6ec3442fb2f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x3.gen.cs new file mode 100644 index 0000000..ba247e0 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x3.gen.cs @@ -0,0 +1,494 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct float3x3 : System.IEquatable, IFormattable + { + public float3 c0; + public float3 c1; + public float3 c2; + + /// float3x3 identity transform. + public static readonly float3x3 identity = new float3x3(1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f); + + /// float3x3 zero value. + public static readonly float3x3 zero; + + /// Constructs a float3x3 matrix from three float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(float3 c0, float3 c1, float3 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a float3x3 matrix from 9 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(float m00, float m01, float m02, + float m10, float m11, float m12, + float m20, float m21, float m22) + { + this.c0 = new float3(m00, m10, m20); + this.c1 = new float3(m01, m11, m21); + this.c2 = new float3(m02, m12, m22); + } + + /// Constructs a float3x3 matrix from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a float3x3 matrix from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(bool v) + { + this.c0 = math.select(new float3(0.0f), new float3(1.0f), v); + this.c1 = math.select(new float3(0.0f), new float3(1.0f), v); + this.c2 = math.select(new float3(0.0f), new float3(1.0f), v); + } + + /// Constructs a float3x3 matrix from a bool3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(bool3x3 v) + { + this.c0 = math.select(new float3(0.0f), new float3(1.0f), v.c0); + this.c1 = math.select(new float3(0.0f), new float3(1.0f), v.c1); + this.c2 = math.select(new float3(0.0f), new float3(1.0f), v.c2); + } + + /// Constructs a float3x3 matrix from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a float3x3 matrix from a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(int3x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a float3x3 matrix from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a float3x3 matrix from a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(uint3x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a float3x3 matrix from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(double v) + { + this.c0 = (float3)v; + this.c1 = (float3)v; + this.c2 = (float3)v; + } + + /// Constructs a float3x3 matrix from a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x3(double3x3 v) + { + this.c0 = (float3)v.c0; + this.c1 = (float3)v.c1; + this.c2 = (float3)v.c2; + } + + + /// Implicitly converts a single float value to a float3x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x3(float v) { return new float3x3(v); } + + /// Explicitly converts a single bool value to a float3x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x3(bool v) { return new float3x3(v); } + + /// Explicitly converts a bool3x3 matrix to a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x3(bool3x3 v) { return new float3x3(v); } + + /// Implicitly converts a single int value to a float3x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x3(int v) { return new float3x3(v); } + + /// Implicitly converts a int3x3 matrix to a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x3(int3x3 v) { return new float3x3(v); } + + /// Implicitly converts a single uint value to a float3x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x3(uint v) { return new float3x3(v); } + + /// Implicitly converts a uint3x3 matrix to a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x3(uint3x3 v) { return new float3x3(v); } + + /// Explicitly converts a single double value to a float3x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x3(double v) { return new float3x3(v); } + + /// Explicitly converts a double3x3 matrix to a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x3(double3x3 v) { return new float3x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator * (float3x3 lhs, float3x3 rhs) { return new float3x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator * (float3x3 lhs, float rhs) { return new float3x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator * (float lhs, float3x3 rhs) { return new float3x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator + (float3x3 lhs, float3x3 rhs) { return new float3x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator + (float3x3 lhs, float rhs) { return new float3x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator + (float lhs, float3x3 rhs) { return new float3x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator - (float3x3 lhs, float3x3 rhs) { return new float3x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator - (float3x3 lhs, float rhs) { return new float3x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator - (float lhs, float3x3 rhs) { return new float3x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator / (float3x3 lhs, float3x3 rhs) { return new float3x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator / (float3x3 lhs, float rhs) { return new float3x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator / (float lhs, float3x3 rhs) { return new float3x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator % (float3x3 lhs, float3x3 rhs) { return new float3x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator % (float3x3 lhs, float rhs) { return new float3x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator % (float lhs, float3x3 rhs) { return new float3x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator ++ (float3x3 val) { return new float3x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator -- (float3x3 val) { return new float3x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (float3x3 lhs, float3x3 rhs) { return new bool3x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (float3x3 lhs, float rhs) { return new bool3x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (float lhs, float3x3 rhs) { return new bool3x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (float3x3 lhs, float3x3 rhs) { return new bool3x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (float3x3 lhs, float rhs) { return new bool3x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (float lhs, float3x3 rhs) { return new bool3x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (float3x3 lhs, float3x3 rhs) { return new bool3x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (float3x3 lhs, float rhs) { return new bool3x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (float lhs, float3x3 rhs) { return new bool3x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (float3x3 lhs, float3x3 rhs) { return new bool3x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (float3x3 lhs, float rhs) { return new bool3x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (float lhs, float3x3 rhs) { return new bool3x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator - (float3x3 val) { return new float3x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 operator + (float3x3 val) { return new float3x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise equality operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (float3x3 lhs, float3x3 rhs) { return new bool3x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (float3x3 lhs, float rhs) { return new bool3x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (float lhs, float3x3 rhs) { return new bool3x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two float3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (float3x3 lhs, float3x3 rhs) { return new bool3x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a float3x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (float3x3 lhs, float rhs) { return new bool3x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (float lhs, float3x3 rhs) { return new bool3x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + + /// Returns the float3 element at a specified index. + unsafe public ref float3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (float3x3* array = &this) { return ref ((float3*)array)[index]; } + } + } + + /// Returns true if the float3x3 is equal to a given float3x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float3x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the float3x3 is equal to a given float3x3, false otherwise. + public override bool Equals(object o) { return Equals((float3x3)o); } + + + /// Returns a hash code for the float3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float3x3({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f)", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z); + } + + /// Returns a string representation of the float3x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float3x3({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a float3x3 matrix constructed from three float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(float3 c0, float3 c1, float3 c2) { return new float3x3(c0, c1, c2); } + + /// Returns a float3x3 matrix constructed from from 9 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(float m00, float m01, float m02, + float m10, float m11, float m12, + float m20, float m21, float m22) + { + return new float3x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22); + } + + /// Returns a float3x3 matrix constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(float v) { return new float3x3(v); } + + /// Returns a float3x3 matrix constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(bool v) { return new float3x3(v); } + + /// Return a float3x3 matrix constructed from a bool3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(bool3x3 v) { return new float3x3(v); } + + /// Returns a float3x3 matrix constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(int v) { return new float3x3(v); } + + /// Return a float3x3 matrix constructed from a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(int3x3 v) { return new float3x3(v); } + + /// Returns a float3x3 matrix constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(uint v) { return new float3x3(v); } + + /// Return a float3x3 matrix constructed from a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(uint3x3 v) { return new float3x3(v); } + + /// Returns a float3x3 matrix constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(double v) { return new float3x3(v); } + + /// Return a float3x3 matrix constructed from a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 float3x3(double3x3 v) { return new float3x3(v); } + + /// Return the float3x3 transpose of a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 transpose(float3x3 v) + { + return float3x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z); + } + + /// Returns the float3x3 full inverse of a float3x3 matrix. + public static float3x3 inverse(float3x3 m) + { + float3 c0 = m.c0; + float3 c1 = m.c1; + float3 c2 = m.c2; + + float3 t0 = float3(c1.x, c2.x, c0.x); + float3 t1 = float3(c1.y, c2.y, c0.y); + float3 t2 = float3(c1.z, c2.z, c0.z); + + float3 m0 = t1 * t2.yzx - t1.yzx * t2; + float3 m1 = t0.yzx * t2 - t0 * t2.yzx; + float3 m2 = t0 * t1.yzx - t0.yzx * t1; + + float rcpDet = 1.0f / csum(t0.zxy * m0); + return float3x3(m0, m1, m2) * rcpDet; + } + + /// Returns the determinant of a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float determinant(float3x3 m) + { + float3 c0 = m.c0; + float3 c1 = m.c1; + float3 c2 = m.c2; + + float m00 = c1.y * c2.z - c1.z * c2.y; + float m01 = c0.y * c2.z - c0.z * c2.y; + float m02 = c0.y * c1.z - c0.z * c1.y; + + return c0.x * m00 - c1.x * m01 + c2.x * m02; + } + + /// Returns a uint hash code of a float3x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float3x3 v) + { + return csum(asuint(v.c0) * uint3(0x713BD06Fu, 0x753AD6ADu, 0xD19764C7u) + + asuint(v.c1) * uint3(0xB5D0BF63u, 0xF9102C5Fu, 0x9881FB9Fu) + + asuint(v.c2) * uint3(0x56A1530Du, 0x804B722Du, 0x738E50E5u)) + 0x4FC93C25u; + } + + /// + /// Returns a uint3 vector hash code of a float3x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(float3x3 v) + { + return (asuint(v.c0) * uint3(0xCD0445A5u, 0xD2B90D9Bu, 0xD35C9B2Du) + + asuint(v.c1) * uint3(0xA10D9E27u, 0x568DAAA9u, 0x7530254Fu) + + asuint(v.c2) * uint3(0x9F090439u, 0x5E9F85C9u, 0x8C4CA03Fu)) + 0xB8D969EDu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x3.gen.cs.meta new file mode 100644 index 0000000..2f24832 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ad77e7310a1e44499f09a51a558bb01 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x4.gen.cs new file mode 100644 index 0000000..6071263 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x4.gen.cs @@ -0,0 +1,489 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct float3x4 : System.IEquatable, IFormattable + { + public float3 c0; + public float3 c1; + public float3 c2; + public float3 c3; + + /// float3x4 zero value. + public static readonly float3x4 zero; + + /// Constructs a float3x4 matrix from four float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(float3 c0, float3 c1, float3 c2, float3 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a float3x4 matrix from 12 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(float m00, float m01, float m02, float m03, + float m10, float m11, float m12, float m13, + float m20, float m21, float m22, float m23) + { + this.c0 = new float3(m00, m10, m20); + this.c1 = new float3(m01, m11, m21); + this.c2 = new float3(m02, m12, m22); + this.c3 = new float3(m03, m13, m23); + } + + /// Constructs a float3x4 matrix from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a float3x4 matrix from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(bool v) + { + this.c0 = math.select(new float3(0.0f), new float3(1.0f), v); + this.c1 = math.select(new float3(0.0f), new float3(1.0f), v); + this.c2 = math.select(new float3(0.0f), new float3(1.0f), v); + this.c3 = math.select(new float3(0.0f), new float3(1.0f), v); + } + + /// Constructs a float3x4 matrix from a bool3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(bool3x4 v) + { + this.c0 = math.select(new float3(0.0f), new float3(1.0f), v.c0); + this.c1 = math.select(new float3(0.0f), new float3(1.0f), v.c1); + this.c2 = math.select(new float3(0.0f), new float3(1.0f), v.c2); + this.c3 = math.select(new float3(0.0f), new float3(1.0f), v.c3); + } + + /// Constructs a float3x4 matrix from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a float3x4 matrix from a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(int3x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a float3x4 matrix from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a float3x4 matrix from a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(uint3x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a float3x4 matrix from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(double v) + { + this.c0 = (float3)v; + this.c1 = (float3)v; + this.c2 = (float3)v; + this.c3 = (float3)v; + } + + /// Constructs a float3x4 matrix from a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3x4(double3x4 v) + { + this.c0 = (float3)v.c0; + this.c1 = (float3)v.c1; + this.c2 = (float3)v.c2; + this.c3 = (float3)v.c3; + } + + + /// Implicitly converts a single float value to a float3x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x4(float v) { return new float3x4(v); } + + /// Explicitly converts a single bool value to a float3x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x4(bool v) { return new float3x4(v); } + + /// Explicitly converts a bool3x4 matrix to a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x4(bool3x4 v) { return new float3x4(v); } + + /// Implicitly converts a single int value to a float3x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x4(int v) { return new float3x4(v); } + + /// Implicitly converts a int3x4 matrix to a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x4(int3x4 v) { return new float3x4(v); } + + /// Implicitly converts a single uint value to a float3x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x4(uint v) { return new float3x4(v); } + + /// Implicitly converts a uint3x4 matrix to a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float3x4(uint3x4 v) { return new float3x4(v); } + + /// Explicitly converts a single double value to a float3x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x4(double v) { return new float3x4(v); } + + /// Explicitly converts a double3x4 matrix to a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float3x4(double3x4 v) { return new float3x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator * (float3x4 lhs, float3x4 rhs) { return new float3x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator * (float3x4 lhs, float rhs) { return new float3x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator * (float lhs, float3x4 rhs) { return new float3x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator + (float3x4 lhs, float3x4 rhs) { return new float3x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator + (float3x4 lhs, float rhs) { return new float3x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator + (float lhs, float3x4 rhs) { return new float3x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator - (float3x4 lhs, float3x4 rhs) { return new float3x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator - (float3x4 lhs, float rhs) { return new float3x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator - (float lhs, float3x4 rhs) { return new float3x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator / (float3x4 lhs, float3x4 rhs) { return new float3x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator / (float3x4 lhs, float rhs) { return new float3x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator / (float lhs, float3x4 rhs) { return new float3x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator % (float3x4 lhs, float3x4 rhs) { return new float3x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator % (float3x4 lhs, float rhs) { return new float3x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator % (float lhs, float3x4 rhs) { return new float3x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator ++ (float3x4 val) { return new float3x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator -- (float3x4 val) { return new float3x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (float3x4 lhs, float3x4 rhs) { return new bool3x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (float3x4 lhs, float rhs) { return new bool3x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (float lhs, float3x4 rhs) { return new bool3x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (float3x4 lhs, float3x4 rhs) { return new bool3x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (float3x4 lhs, float rhs) { return new bool3x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (float lhs, float3x4 rhs) { return new bool3x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (float3x4 lhs, float3x4 rhs) { return new bool3x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (float3x4 lhs, float rhs) { return new bool3x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (float lhs, float3x4 rhs) { return new bool3x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (float3x4 lhs, float3x4 rhs) { return new bool3x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (float3x4 lhs, float rhs) { return new bool3x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (float lhs, float3x4 rhs) { return new bool3x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator - (float3x4 val) { return new float3x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 operator + (float3x4 val) { return new float3x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise equality operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (float3x4 lhs, float3x4 rhs) { return new bool3x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (float3x4 lhs, float rhs) { return new bool3x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (float lhs, float3x4 rhs) { return new bool3x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two float3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (float3x4 lhs, float3x4 rhs) { return new bool3x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a float3x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (float3x4 lhs, float rhs) { return new bool3x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (float lhs, float3x4 rhs) { return new bool3x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + + /// Returns the float3 element at a specified index. + unsafe public ref float3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (float3x4* array = &this) { return ref ((float3*)array)[index]; } + } + } + + /// Returns true if the float3x4 is equal to a given float3x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float3x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the float3x4 is equal to a given float3x4, false otherwise. + public override bool Equals(object o) { return Equals((float3x4)o); } + + + /// Returns a hash code for the float3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float3x4({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f)", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z); + } + + /// Returns a string representation of the float3x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float3x4({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c3.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a float3x4 matrix constructed from four float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(float3 c0, float3 c1, float3 c2, float3 c3) { return new float3x4(c0, c1, c2, c3); } + + /// Returns a float3x4 matrix constructed from from 12 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(float m00, float m01, float m02, float m03, + float m10, float m11, float m12, float m13, + float m20, float m21, float m22, float m23) + { + return new float3x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23); + } + + /// Returns a float3x4 matrix constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(float v) { return new float3x4(v); } + + /// Returns a float3x4 matrix constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(bool v) { return new float3x4(v); } + + /// Return a float3x4 matrix constructed from a bool3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(bool3x4 v) { return new float3x4(v); } + + /// Returns a float3x4 matrix constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(int v) { return new float3x4(v); } + + /// Return a float3x4 matrix constructed from a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(int3x4 v) { return new float3x4(v); } + + /// Returns a float3x4 matrix constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(uint v) { return new float3x4(v); } + + /// Return a float3x4 matrix constructed from a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(uint3x4 v) { return new float3x4(v); } + + /// Returns a float3x4 matrix constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(double v) { return new float3x4(v); } + + /// Return a float3x4 matrix constructed from a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 float3x4(double3x4 v) { return new float3x4(v); } + + /// Return the float4x3 transpose of a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 transpose(float3x4 v) + { + return float4x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z, + v.c3.x, v.c3.y, v.c3.z); + } + + // Fast matrix inverse for rigid transforms (Orthonormal basis and translation) + public static float3x4 fastinverse(float3x4 m) + { + float3 c0 = m.c0; + float3 c1 = m.c1; + float3 c2 = m.c2; + float3 pos = m.c3; + + float3 r0 = float3(c0.x, c1.x, c2.x); + float3 r1 = float3(c0.y, c1.y, c2.y); + float3 r2 = float3(c0.z, c1.z, c2.z); + + pos = -(r0 * pos.x + r1 * pos.y + r2 * pos.z); + + return float3x4(r0, r1, r2, pos); + } + + /// Returns a uint hash code of a float3x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float3x4 v) + { + return csum(asuint(v.c0) * uint3(0xF9EA92D5u, 0xC2FAFCB9u, 0x616E9CA1u) + + asuint(v.c1) * uint3(0xC5C5394Bu, 0xCAE78587u, 0x7A1541C9u) + + asuint(v.c2) * uint3(0xF83BD927u, 0x6A243BCBu, 0x509B84C9u) + + asuint(v.c3) * uint3(0x91D13847u, 0x52F7230Fu, 0xCF286E83u)) + 0xE121E6ADu; + } + + /// + /// Returns a uint3 vector hash code of a float3x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(float3x4 v) + { + return (asuint(v.c0) * uint3(0xC9CA1249u, 0x69B60C81u, 0xE0EB6C25u) + + asuint(v.c1) * uint3(0xF648BEABu, 0x6BDB2B07u, 0xEF63C699u) + + asuint(v.c2) * uint3(0x9001903Fu, 0xA895B9CDu, 0x9D23B201u) + + asuint(v.c3) * uint3(0x4B01D3E1u, 0x7461CA0Du, 0x79725379u)) + 0xD6258E5Bu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x4.gen.cs.meta new file mode 100644 index 0000000..2d90f40 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e85ad7d883b9468da066c1ad9de70d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4.gen.cs new file mode 100644 index 0000000..e691908 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4.gen.cs @@ -0,0 +1,3464 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(float4.DebuggerProxy))] + [System.Serializable] + public partial struct float4 : System.IEquatable, IFormattable + { + public float x; + public float y; + public float z; + public float w; + + /// float4 zero value. + public static readonly float4 zero; + + /// Constructs a float4 vector from four float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(float x, float y, float z, float w) + { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + /// Constructs a float4 vector from two float values and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(float x, float y, float2 zw) + { + this.x = x; + this.y = y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a float4 vector from a float value, a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(float x, float2 yz, float w) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + this.w = w; + } + + /// Constructs a float4 vector from a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(float x, float3 yzw) + { + this.x = x; + this.y = yzw.x; + this.z = yzw.y; + this.w = yzw.z; + } + + /// Constructs a float4 vector from a float2 vector and two float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(float2 xy, float z, float w) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + this.w = w; + } + + /// Constructs a float4 vector from two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(float2 xy, float2 zw) + { + this.x = xy.x; + this.y = xy.y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a float4 vector from a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(float3 xyz, float w) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + this.w = w; + } + + /// Constructs a float4 vector from a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(float4 xyzw) + { + this.x = xyzw.x; + this.y = xyzw.y; + this.z = xyzw.z; + this.w = xyzw.w; + } + + /// Constructs a float4 vector from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(float v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a float4 vector from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(bool v) + { + this.x = v ? 1.0f : 0.0f; + this.y = v ? 1.0f : 0.0f; + this.z = v ? 1.0f : 0.0f; + this.w = v ? 1.0f : 0.0f; + } + + /// Constructs a float4 vector from a bool4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(bool4 v) + { + this.x = v.x ? 1.0f : 0.0f; + this.y = v.y ? 1.0f : 0.0f; + this.z = v.z ? 1.0f : 0.0f; + this.w = v.w ? 1.0f : 0.0f; + } + + /// Constructs a float4 vector from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(int v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a float4 vector from a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(int4 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w; + } + + /// Constructs a float4 vector from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(uint v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a float4 vector from a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(uint4 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w; + } + + /// Constructs a float4 vector from a single half value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(half v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a float4 vector from a half4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(half4 v) + { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w; + } + + /// Constructs a float4 vector from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(double v) + { + this.x = (float)v; + this.y = (float)v; + this.z = (float)v; + this.w = (float)v; + } + + /// Constructs a float4 vector from a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4(double4 v) + { + this.x = (float)v.x; + this.y = (float)v.y; + this.z = (float)v.z; + this.w = (float)v.w; + } + + + /// Implicitly converts a single float value to a float4 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4(float v) { return new float4(v); } + + /// Explicitly converts a single bool value to a float4 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4(bool v) { return new float4(v); } + + /// Explicitly converts a bool4 vector to a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4(bool4 v) { return new float4(v); } + + /// Implicitly converts a single int value to a float4 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4(int v) { return new float4(v); } + + /// Implicitly converts a int4 vector to a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4(int4 v) { return new float4(v); } + + /// Implicitly converts a single uint value to a float4 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4(uint v) { return new float4(v); } + + /// Implicitly converts a uint4 vector to a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4(uint4 v) { return new float4(v); } + + /// Implicitly converts a single half value to a float4 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4(half v) { return new float4(v); } + + /// Implicitly converts a half4 vector to a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4(half4 v) { return new float4(v); } + + /// Explicitly converts a single double value to a float4 vector by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4(double v) { return new float4(v); } + + /// Explicitly converts a double4 vector to a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4(double4 v) { return new float4(v); } + + + /// Returns the result of a componentwise multiplication operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator * (float4 lhs, float4 rhs) { return new float4 (lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z, lhs.w * rhs.w); } + + /// Returns the result of a componentwise multiplication operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator * (float4 lhs, float rhs) { return new float4 (lhs.x * rhs, lhs.y * rhs, lhs.z * rhs, lhs.w * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator * (float lhs, float4 rhs) { return new float4 (lhs * rhs.x, lhs * rhs.y, lhs * rhs.z, lhs * rhs.w); } + + + /// Returns the result of a componentwise addition operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator + (float4 lhs, float4 rhs) { return new float4 (lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z, lhs.w + rhs.w); } + + /// Returns the result of a componentwise addition operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator + (float4 lhs, float rhs) { return new float4 (lhs.x + rhs, lhs.y + rhs, lhs.z + rhs, lhs.w + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator + (float lhs, float4 rhs) { return new float4 (lhs + rhs.x, lhs + rhs.y, lhs + rhs.z, lhs + rhs.w); } + + + /// Returns the result of a componentwise subtraction operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator - (float4 lhs, float4 rhs) { return new float4 (lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z, lhs.w - rhs.w); } + + /// Returns the result of a componentwise subtraction operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator - (float4 lhs, float rhs) { return new float4 (lhs.x - rhs, lhs.y - rhs, lhs.z - rhs, lhs.w - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator - (float lhs, float4 rhs) { return new float4 (lhs - rhs.x, lhs - rhs.y, lhs - rhs.z, lhs - rhs.w); } + + + /// Returns the result of a componentwise division operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator / (float4 lhs, float4 rhs) { return new float4 (lhs.x / rhs.x, lhs.y / rhs.y, lhs.z / rhs.z, lhs.w / rhs.w); } + + /// Returns the result of a componentwise division operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator / (float4 lhs, float rhs) { return new float4 (lhs.x / rhs, lhs.y / rhs, lhs.z / rhs, lhs.w / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator / (float lhs, float4 rhs) { return new float4 (lhs / rhs.x, lhs / rhs.y, lhs / rhs.z, lhs / rhs.w); } + + + /// Returns the result of a componentwise modulus operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator % (float4 lhs, float4 rhs) { return new float4 (lhs.x % rhs.x, lhs.y % rhs.y, lhs.z % rhs.z, lhs.w % rhs.w); } + + /// Returns the result of a componentwise modulus operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator % (float4 lhs, float rhs) { return new float4 (lhs.x % rhs, lhs.y % rhs, lhs.z % rhs, lhs.w % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator % (float lhs, float4 rhs) { return new float4 (lhs % rhs.x, lhs % rhs.y, lhs % rhs.z, lhs % rhs.w); } + + + /// Returns the result of a componentwise increment operation on a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator ++ (float4 val) { return new float4 (++val.x, ++val.y, ++val.z, ++val.w); } + + + /// Returns the result of a componentwise decrement operation on a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator -- (float4 val) { return new float4 (--val.x, --val.y, --val.z, --val.w); } + + + /// Returns the result of a componentwise less than operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (float4 lhs, float4 rhs) { return new bool4 (lhs.x < rhs.x, lhs.y < rhs.y, lhs.z < rhs.z, lhs.w < rhs.w); } + + /// Returns the result of a componentwise less than operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (float4 lhs, float rhs) { return new bool4 (lhs.x < rhs, lhs.y < rhs, lhs.z < rhs, lhs.w < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (float lhs, float4 rhs) { return new bool4 (lhs < rhs.x, lhs < rhs.y, lhs < rhs.z, lhs < rhs.w); } + + + /// Returns the result of a componentwise less or equal operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (float4 lhs, float4 rhs) { return new bool4 (lhs.x <= rhs.x, lhs.y <= rhs.y, lhs.z <= rhs.z, lhs.w <= rhs.w); } + + /// Returns the result of a componentwise less or equal operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (float4 lhs, float rhs) { return new bool4 (lhs.x <= rhs, lhs.y <= rhs, lhs.z <= rhs, lhs.w <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (float lhs, float4 rhs) { return new bool4 (lhs <= rhs.x, lhs <= rhs.y, lhs <= rhs.z, lhs <= rhs.w); } + + + /// Returns the result of a componentwise greater than operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (float4 lhs, float4 rhs) { return new bool4 (lhs.x > rhs.x, lhs.y > rhs.y, lhs.z > rhs.z, lhs.w > rhs.w); } + + /// Returns the result of a componentwise greater than operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (float4 lhs, float rhs) { return new bool4 (lhs.x > rhs, lhs.y > rhs, lhs.z > rhs, lhs.w > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (float lhs, float4 rhs) { return new bool4 (lhs > rhs.x, lhs > rhs.y, lhs > rhs.z, lhs > rhs.w); } + + + /// Returns the result of a componentwise greater or equal operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (float4 lhs, float4 rhs) { return new bool4 (lhs.x >= rhs.x, lhs.y >= rhs.y, lhs.z >= rhs.z, lhs.w >= rhs.w); } + + /// Returns the result of a componentwise greater or equal operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (float4 lhs, float rhs) { return new bool4 (lhs.x >= rhs, lhs.y >= rhs, lhs.z >= rhs, lhs.w >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (float lhs, float4 rhs) { return new bool4 (lhs >= rhs.x, lhs >= rhs.y, lhs >= rhs.z, lhs >= rhs.w); } + + + /// Returns the result of a componentwise unary minus operation on a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator - (float4 val) { return new float4 (-val.x, -val.y, -val.z, -val.w); } + + + /// Returns the result of a componentwise unary plus operation on a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 operator + (float4 val) { return new float4 (+val.x, +val.y, +val.z, +val.w); } + + + /// Returns the result of a componentwise equality operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (float4 lhs, float4 rhs) { return new bool4 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z, lhs.w == rhs.w); } + + /// Returns the result of a componentwise equality operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (float4 lhs, float rhs) { return new bool4 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs, lhs.w == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (float lhs, float4 rhs) { return new bool4 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z, lhs == rhs.w); } + + + /// Returns the result of a componentwise not equal operation on two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (float4 lhs, float4 rhs) { return new bool4 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z, lhs.w != rhs.w); } + + /// Returns the result of a componentwise not equal operation on a float4 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (float4 lhs, float rhs) { return new bool4 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs, lhs.w != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (float lhs, float4 rhs) { return new bool4 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z, lhs != rhs.w); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 xwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(x, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 yzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 ywww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(y, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 zwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(z, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float4 wwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float4(w, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 xww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 ywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 ywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 ywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 yww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 zww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 wwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float3 www + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float3(w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 xw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 yw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 zw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 wx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 wy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 wz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public float2 ww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new float2(w, w); } + } + + + + /// Returns the float element at a specified index. + unsafe public float this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (float4* array = &this) { return ((float*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (float* array = &x) { array[index] = value; } + } + } + + /// Returns true if the float4 is equal to a given float4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float4 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z && w == rhs.w; } + + /// Returns true if the float4 is equal to a given float4, false otherwise. + public override bool Equals(object o) { return Equals((float4)o); } + + + /// Returns a hash code for the float4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float4({0}f, {1}f, {2}f, {3}f)", x, y, z, w); + } + + /// Returns a string representation of the float4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float4({0}f, {1}f, {2}f, {3}f)", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider), w.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public float x; + public float y; + public float z; + public float w; + public DebuggerProxy(float4 v) + { + x = v.x; + y = v.y; + z = v.z; + w = v.w; + } + } + + } + + public static partial class math + { + /// Returns a float4 vector constructed from four float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(float x, float y, float z, float w) { return new float4(x, y, z, w); } + + /// Returns a float4 vector constructed from two float values and a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(float x, float y, float2 zw) { return new float4(x, y, zw); } + + /// Returns a float4 vector constructed from a float value, a float2 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(float x, float2 yz, float w) { return new float4(x, yz, w); } + + /// Returns a float4 vector constructed from a float value and a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(float x, float3 yzw) { return new float4(x, yzw); } + + /// Returns a float4 vector constructed from a float2 vector and two float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(float2 xy, float z, float w) { return new float4(xy, z, w); } + + /// Returns a float4 vector constructed from two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(float2 xy, float2 zw) { return new float4(xy, zw); } + + /// Returns a float4 vector constructed from a float3 vector and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(float3 xyz, float w) { return new float4(xyz, w); } + + /// Returns a float4 vector constructed from a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(float4 xyzw) { return new float4(xyzw); } + + /// Returns a float4 vector constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(float v) { return new float4(v); } + + /// Returns a float4 vector constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(bool v) { return new float4(v); } + + /// Return a float4 vector constructed from a bool4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(bool4 v) { return new float4(v); } + + /// Returns a float4 vector constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(int v) { return new float4(v); } + + /// Return a float4 vector constructed from a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(int4 v) { return new float4(v); } + + /// Returns a float4 vector constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(uint v) { return new float4(v); } + + /// Return a float4 vector constructed from a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(uint4 v) { return new float4(v); } + + /// Returns a float4 vector constructed from a single half value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(half v) { return new float4(v); } + + /// Return a float4 vector constructed from a half4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(half4 v) { return new float4(v); } + + /// Returns a float4 vector constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(double v) { return new float4(v); } + + /// Return a float4 vector constructed from a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 float4(double4 v) { return new float4(v); } + + /// Returns a uint hash code of a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float4 v) + { + return csum(asuint(v) * uint4(0xE69626FFu, 0xBD010EEBu, 0x9CEDE1D1u, 0x43BE0B51u)) + 0xAF836EE1u; + } + + /// + /// Returns a uint4 vector hash code of a float4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(float4 v) + { + return (asuint(v) * uint4(0xB130C137u, 0x54834775u, 0x7C022221u, 0xA2D00EDFu)) + 0xA8977779u; + } + + /// Returns the result of specified shuffling of the components from two float4 vectors into a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float shuffle(float4 a, float4 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two float4 vectors into a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 shuffle(float4 a, float4 b, ShuffleComponent x, ShuffleComponent y) + { + return float2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two float4 vectors into a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 shuffle(float4 a, float4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return float3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two float4 vectors into a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 shuffle(float4 a, float4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return float4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static float select_shuffle_component(float4 a, float4 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.LeftW: + return a.w; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + case ShuffleComponent.RightW: + return b.w; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4.gen.cs.meta new file mode 100644 index 0000000..acec411 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c9ea498ec5f4a443830f78ebf231f3e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x2.gen.cs new file mode 100644 index 0000000..9ffa504 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x2.gen.cs @@ -0,0 +1,445 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct float4x2 : System.IEquatable, IFormattable + { + public float4 c0; + public float4 c1; + + /// float4x2 zero value. + public static readonly float4x2 zero; + + /// Constructs a float4x2 matrix from two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(float4 c0, float4 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a float4x2 matrix from 8 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(float m00, float m01, + float m10, float m11, + float m20, float m21, + float m30, float m31) + { + this.c0 = new float4(m00, m10, m20, m30); + this.c1 = new float4(m01, m11, m21, m31); + } + + /// Constructs a float4x2 matrix from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(float v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a float4x2 matrix from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(bool v) + { + this.c0 = math.select(new float4(0.0f), new float4(1.0f), v); + this.c1 = math.select(new float4(0.0f), new float4(1.0f), v); + } + + /// Constructs a float4x2 matrix from a bool4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(bool4x2 v) + { + this.c0 = math.select(new float4(0.0f), new float4(1.0f), v.c0); + this.c1 = math.select(new float4(0.0f), new float4(1.0f), v.c1); + } + + /// Constructs a float4x2 matrix from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(int v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a float4x2 matrix from a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(int4x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a float4x2 matrix from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(uint v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a float4x2 matrix from a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(uint4x2 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + } + + /// Constructs a float4x2 matrix from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(double v) + { + this.c0 = (float4)v; + this.c1 = (float4)v; + } + + /// Constructs a float4x2 matrix from a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x2(double4x2 v) + { + this.c0 = (float4)v.c0; + this.c1 = (float4)v.c1; + } + + + /// Implicitly converts a single float value to a float4x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x2(float v) { return new float4x2(v); } + + /// Explicitly converts a single bool value to a float4x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x2(bool v) { return new float4x2(v); } + + /// Explicitly converts a bool4x2 matrix to a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x2(bool4x2 v) { return new float4x2(v); } + + /// Implicitly converts a single int value to a float4x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x2(int v) { return new float4x2(v); } + + /// Implicitly converts a int4x2 matrix to a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x2(int4x2 v) { return new float4x2(v); } + + /// Implicitly converts a single uint value to a float4x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x2(uint v) { return new float4x2(v); } + + /// Implicitly converts a uint4x2 matrix to a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x2(uint4x2 v) { return new float4x2(v); } + + /// Explicitly converts a single double value to a float4x2 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x2(double v) { return new float4x2(v); } + + /// Explicitly converts a double4x2 matrix to a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x2(double4x2 v) { return new float4x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator * (float4x2 lhs, float4x2 rhs) { return new float4x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator * (float4x2 lhs, float rhs) { return new float4x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator * (float lhs, float4x2 rhs) { return new float4x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator + (float4x2 lhs, float4x2 rhs) { return new float4x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator + (float4x2 lhs, float rhs) { return new float4x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator + (float lhs, float4x2 rhs) { return new float4x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator - (float4x2 lhs, float4x2 rhs) { return new float4x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator - (float4x2 lhs, float rhs) { return new float4x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator - (float lhs, float4x2 rhs) { return new float4x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator / (float4x2 lhs, float4x2 rhs) { return new float4x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator / (float4x2 lhs, float rhs) { return new float4x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator / (float lhs, float4x2 rhs) { return new float4x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator % (float4x2 lhs, float4x2 rhs) { return new float4x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator % (float4x2 lhs, float rhs) { return new float4x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator % (float lhs, float4x2 rhs) { return new float4x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator ++ (float4x2 val) { return new float4x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator -- (float4x2 val) { return new float4x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (float4x2 lhs, float4x2 rhs) { return new bool4x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (float4x2 lhs, float rhs) { return new bool4x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (float lhs, float4x2 rhs) { return new bool4x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (float4x2 lhs, float4x2 rhs) { return new bool4x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (float4x2 lhs, float rhs) { return new bool4x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (float lhs, float4x2 rhs) { return new bool4x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (float4x2 lhs, float4x2 rhs) { return new bool4x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (float4x2 lhs, float rhs) { return new bool4x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (float lhs, float4x2 rhs) { return new bool4x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (float4x2 lhs, float4x2 rhs) { return new bool4x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (float4x2 lhs, float rhs) { return new bool4x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (float lhs, float4x2 rhs) { return new bool4x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator - (float4x2 val) { return new float4x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 operator + (float4x2 val) { return new float4x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise equality operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (float4x2 lhs, float4x2 rhs) { return new bool4x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (float4x2 lhs, float rhs) { return new bool4x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (float lhs, float4x2 rhs) { return new bool4x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two float4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (float4x2 lhs, float4x2 rhs) { return new bool4x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a float4x2 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (float4x2 lhs, float rhs) { return new bool4x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (float lhs, float4x2 rhs) { return new bool4x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + + /// Returns the float4 element at a specified index. + unsafe public ref float4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (float4x2* array = &this) { return ref ((float4*)array)[index]; } + } + } + + /// Returns true if the float4x2 is equal to a given float4x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float4x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the float4x2 is equal to a given float4x2, false otherwise. + public override bool Equals(object o) { return Equals((float4x2)o); } + + + /// Returns a hash code for the float4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float4x2({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f)", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z, c0.w, c1.w); + } + + /// Returns a string representation of the float4x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float4x2({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a float4x2 matrix constructed from two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(float4 c0, float4 c1) { return new float4x2(c0, c1); } + + /// Returns a float4x2 matrix constructed from from 8 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(float m00, float m01, + float m10, float m11, + float m20, float m21, + float m30, float m31) + { + return new float4x2(m00, m01, + m10, m11, + m20, m21, + m30, m31); + } + + /// Returns a float4x2 matrix constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(float v) { return new float4x2(v); } + + /// Returns a float4x2 matrix constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(bool v) { return new float4x2(v); } + + /// Return a float4x2 matrix constructed from a bool4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(bool4x2 v) { return new float4x2(v); } + + /// Returns a float4x2 matrix constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(int v) { return new float4x2(v); } + + /// Return a float4x2 matrix constructed from a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(int4x2 v) { return new float4x2(v); } + + /// Returns a float4x2 matrix constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(uint v) { return new float4x2(v); } + + /// Return a float4x2 matrix constructed from a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(uint4x2 v) { return new float4x2(v); } + + /// Returns a float4x2 matrix constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(double v) { return new float4x2(v); } + + /// Return a float4x2 matrix constructed from a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 float4x2(double4x2 v) { return new float4x2(v); } + + /// Return the float2x4 transpose of a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 transpose(float4x2 v) + { + return float2x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w); + } + + /// Returns a uint hash code of a float4x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float4x2 v) + { + return csum(asuint(v.c0) * uint4(0xAAC3C25Du, 0xD21D0945u, 0x88FCAB2Du, 0x614DA60Du) + + asuint(v.c1) * uint4(0x5BA2C50Bu, 0x8C455ACBu, 0xCD266C89u, 0xF1852A33u)) + 0x77E35E77u; + } + + /// + /// Returns a uint4 vector hash code of a float4x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(float4x2 v) + { + return (asuint(v.c0) * uint4(0x863E3729u, 0xE191B035u, 0x68586FAFu, 0xD4DFF6D3u) + + asuint(v.c1) * uint4(0xCB634F4Du, 0x9B13B92Du, 0x4ABF0813u, 0x86068063u)) + 0xD75513F9u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x2.gen.cs.meta new file mode 100644 index 0000000..c65dacf --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a2cb705f8c4d45e8ba95502e037109b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x3.gen.cs new file mode 100644 index 0000000..b938c93 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x3.gen.cs @@ -0,0 +1,460 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct float4x3 : System.IEquatable, IFormattable + { + public float4 c0; + public float4 c1; + public float4 c2; + + /// float4x3 zero value. + public static readonly float4x3 zero; + + /// Constructs a float4x3 matrix from three float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(float4 c0, float4 c1, float4 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a float4x3 matrix from 12 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(float m00, float m01, float m02, + float m10, float m11, float m12, + float m20, float m21, float m22, + float m30, float m31, float m32) + { + this.c0 = new float4(m00, m10, m20, m30); + this.c1 = new float4(m01, m11, m21, m31); + this.c2 = new float4(m02, m12, m22, m32); + } + + /// Constructs a float4x3 matrix from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a float4x3 matrix from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(bool v) + { + this.c0 = math.select(new float4(0.0f), new float4(1.0f), v); + this.c1 = math.select(new float4(0.0f), new float4(1.0f), v); + this.c2 = math.select(new float4(0.0f), new float4(1.0f), v); + } + + /// Constructs a float4x3 matrix from a bool4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(bool4x3 v) + { + this.c0 = math.select(new float4(0.0f), new float4(1.0f), v.c0); + this.c1 = math.select(new float4(0.0f), new float4(1.0f), v.c1); + this.c2 = math.select(new float4(0.0f), new float4(1.0f), v.c2); + } + + /// Constructs a float4x3 matrix from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a float4x3 matrix from a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(int4x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a float4x3 matrix from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a float4x3 matrix from a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(uint4x3 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + } + + /// Constructs a float4x3 matrix from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(double v) + { + this.c0 = (float4)v; + this.c1 = (float4)v; + this.c2 = (float4)v; + } + + /// Constructs a float4x3 matrix from a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x3(double4x3 v) + { + this.c0 = (float4)v.c0; + this.c1 = (float4)v.c1; + this.c2 = (float4)v.c2; + } + + + /// Implicitly converts a single float value to a float4x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x3(float v) { return new float4x3(v); } + + /// Explicitly converts a single bool value to a float4x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x3(bool v) { return new float4x3(v); } + + /// Explicitly converts a bool4x3 matrix to a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x3(bool4x3 v) { return new float4x3(v); } + + /// Implicitly converts a single int value to a float4x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x3(int v) { return new float4x3(v); } + + /// Implicitly converts a int4x3 matrix to a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x3(int4x3 v) { return new float4x3(v); } + + /// Implicitly converts a single uint value to a float4x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x3(uint v) { return new float4x3(v); } + + /// Implicitly converts a uint4x3 matrix to a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x3(uint4x3 v) { return new float4x3(v); } + + /// Explicitly converts a single double value to a float4x3 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x3(double v) { return new float4x3(v); } + + /// Explicitly converts a double4x3 matrix to a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x3(double4x3 v) { return new float4x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator * (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator * (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator * (float lhs, float4x3 rhs) { return new float4x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator + (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator + (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator + (float lhs, float4x3 rhs) { return new float4x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator - (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator - (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator - (float lhs, float4x3 rhs) { return new float4x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator / (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator / (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator / (float lhs, float4x3 rhs) { return new float4x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator % (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator % (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator % (float lhs, float4x3 rhs) { return new float4x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator ++ (float4x3 val) { return new float4x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator -- (float4x3 val) { return new float4x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (float lhs, float4x3 rhs) { return new bool4x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (float lhs, float4x3 rhs) { return new bool4x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (float lhs, float4x3 rhs) { return new bool4x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (float lhs, float4x3 rhs) { return new bool4x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator - (float4x3 val) { return new float4x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 operator + (float4x3 val) { return new float4x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise equality operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (float lhs, float4x3 rhs) { return new bool4x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two float4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a float4x3 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (float lhs, float4x3 rhs) { return new bool4x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + + /// Returns the float4 element at a specified index. + unsafe public ref float4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (float4x3* array = &this) { return ref ((float4*)array)[index]; } + } + } + + /// Returns true if the float4x3 is equal to a given float4x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float4x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the float4x3 is equal to a given float4x3, false otherwise. + public override bool Equals(object o) { return Equals((float4x3)o); } + + + /// Returns a hash code for the float4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float4x3({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f)", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z, c0.w, c1.w, c2.w); + } + + /// Returns a string representation of the float4x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float4x3({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a float4x3 matrix constructed from three float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(float4 c0, float4 c1, float4 c2) { return new float4x3(c0, c1, c2); } + + /// Returns a float4x3 matrix constructed from from 12 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(float m00, float m01, float m02, + float m10, float m11, float m12, + float m20, float m21, float m22, + float m30, float m31, float m32) + { + return new float4x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22, + m30, m31, m32); + } + + /// Returns a float4x3 matrix constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(float v) { return new float4x3(v); } + + /// Returns a float4x3 matrix constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(bool v) { return new float4x3(v); } + + /// Return a float4x3 matrix constructed from a bool4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(bool4x3 v) { return new float4x3(v); } + + /// Returns a float4x3 matrix constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(int v) { return new float4x3(v); } + + /// Return a float4x3 matrix constructed from a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(int4x3 v) { return new float4x3(v); } + + /// Returns a float4x3 matrix constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(uint v) { return new float4x3(v); } + + /// Return a float4x3 matrix constructed from a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(uint4x3 v) { return new float4x3(v); } + + /// Returns a float4x3 matrix constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(double v) { return new float4x3(v); } + + /// Return a float4x3 matrix constructed from a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 float4x3(double4x3 v) { return new float4x3(v); } + + /// Return the float3x4 transpose of a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 transpose(float4x3 v) + { + return float3x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w); + } + + /// Returns a uint hash code of a float4x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float4x3 v) + { + return csum(asuint(v.c0) * uint4(0xC53F4755u, 0x6985C229u, 0xE133B0B3u, 0xC3E0A3B9u) + + asuint(v.c1) * uint4(0xFE31134Fu, 0x712A34D7u, 0x9D77A59Bu, 0x4942CA39u) + + asuint(v.c2) * uint4(0xB40EC62Du, 0x565ED63Fu, 0x93C30C2Bu, 0xDCAF0351u)) + 0x6E050B01u; + } + + /// + /// Returns a uint4 vector hash code of a float4x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(float4x3 v) + { + return (asuint(v.c0) * uint4(0x750FDBF5u, 0x7F3DD499u, 0x52EAAEBBu, 0x4599C793u) + + asuint(v.c1) * uint4(0x83B5E729u, 0xC267163Fu, 0x67BC9149u, 0xAD7C5EC1u) + + asuint(v.c2) * uint4(0x822A7D6Du, 0xB492BF15u, 0xD37220E3u, 0x7AA2C2BDu)) + 0xE16BC89Du; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x3.gen.cs.meta new file mode 100644 index 0000000..5e79be8 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8e17e5c41b0344afa5389019db2eb9f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x4.gen.cs new file mode 100644 index 0000000..3cf507e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x4.gen.cs @@ -0,0 +1,596 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct float4x4 : System.IEquatable, IFormattable + { + public float4 c0; + public float4 c1; + public float4 c2; + public float4 c3; + + /// float4x4 identity transform. + public static readonly float4x4 identity = new float4x4(1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f); + + /// float4x4 zero value. + public static readonly float4x4 zero; + + /// Constructs a float4x4 matrix from four float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(float4 c0, float4 c1, float4 c2, float4 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a float4x4 matrix from 16 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(float m00, float m01, float m02, float m03, + float m10, float m11, float m12, float m13, + float m20, float m21, float m22, float m23, + float m30, float m31, float m32, float m33) + { + this.c0 = new float4(m00, m10, m20, m30); + this.c1 = new float4(m01, m11, m21, m31); + this.c2 = new float4(m02, m12, m22, m32); + this.c3 = new float4(m03, m13, m23, m33); + } + + /// Constructs a float4x4 matrix from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(float v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a float4x4 matrix from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(bool v) + { + this.c0 = math.select(new float4(0.0f), new float4(1.0f), v); + this.c1 = math.select(new float4(0.0f), new float4(1.0f), v); + this.c2 = math.select(new float4(0.0f), new float4(1.0f), v); + this.c3 = math.select(new float4(0.0f), new float4(1.0f), v); + } + + /// Constructs a float4x4 matrix from a bool4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(bool4x4 v) + { + this.c0 = math.select(new float4(0.0f), new float4(1.0f), v.c0); + this.c1 = math.select(new float4(0.0f), new float4(1.0f), v.c1); + this.c2 = math.select(new float4(0.0f), new float4(1.0f), v.c2); + this.c3 = math.select(new float4(0.0f), new float4(1.0f), v.c3); + } + + /// Constructs a float4x4 matrix from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a float4x4 matrix from a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(int4x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a float4x4 matrix from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a float4x4 matrix from a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(uint4x4 v) + { + this.c0 = v.c0; + this.c1 = v.c1; + this.c2 = v.c2; + this.c3 = v.c3; + } + + /// Constructs a float4x4 matrix from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(double v) + { + this.c0 = (float4)v; + this.c1 = (float4)v; + this.c2 = (float4)v; + this.c3 = (float4)v; + } + + /// Constructs a float4x4 matrix from a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4x4(double4x4 v) + { + this.c0 = (float4)v.c0; + this.c1 = (float4)v.c1; + this.c2 = (float4)v.c2; + this.c3 = (float4)v.c3; + } + + + /// Implicitly converts a single float value to a float4x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x4(float v) { return new float4x4(v); } + + /// Explicitly converts a single bool value to a float4x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x4(bool v) { return new float4x4(v); } + + /// Explicitly converts a bool4x4 matrix to a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x4(bool4x4 v) { return new float4x4(v); } + + /// Implicitly converts a single int value to a float4x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x4(int v) { return new float4x4(v); } + + /// Implicitly converts a int4x4 matrix to a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x4(int4x4 v) { return new float4x4(v); } + + /// Implicitly converts a single uint value to a float4x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x4(uint v) { return new float4x4(v); } + + /// Implicitly converts a uint4x4 matrix to a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float4x4(uint4x4 v) { return new float4x4(v); } + + /// Explicitly converts a single double value to a float4x4 matrix by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x4(double v) { return new float4x4(v); } + + /// Explicitly converts a double4x4 matrix to a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator float4x4(double4x4 v) { return new float4x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator * (float4x4 lhs, float4x4 rhs) { return new float4x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator * (float4x4 lhs, float rhs) { return new float4x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator * (float lhs, float4x4 rhs) { return new float4x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator + (float4x4 lhs, float4x4 rhs) { return new float4x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator + (float4x4 lhs, float rhs) { return new float4x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator + (float lhs, float4x4 rhs) { return new float4x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator - (float4x4 lhs, float4x4 rhs) { return new float4x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator - (float4x4 lhs, float rhs) { return new float4x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator - (float lhs, float4x4 rhs) { return new float4x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator / (float4x4 lhs, float4x4 rhs) { return new float4x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator / (float4x4 lhs, float rhs) { return new float4x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator / (float lhs, float4x4 rhs) { return new float4x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator % (float4x4 lhs, float4x4 rhs) { return new float4x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator % (float4x4 lhs, float rhs) { return new float4x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator % (float lhs, float4x4 rhs) { return new float4x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator ++ (float4x4 val) { return new float4x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator -- (float4x4 val) { return new float4x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (float4x4 lhs, float4x4 rhs) { return new bool4x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (float4x4 lhs, float rhs) { return new bool4x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (float lhs, float4x4 rhs) { return new bool4x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (float4x4 lhs, float4x4 rhs) { return new bool4x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (float4x4 lhs, float rhs) { return new bool4x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (float lhs, float4x4 rhs) { return new bool4x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (float4x4 lhs, float4x4 rhs) { return new bool4x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (float4x4 lhs, float rhs) { return new bool4x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (float lhs, float4x4 rhs) { return new bool4x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (float4x4 lhs, float4x4 rhs) { return new bool4x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (float4x4 lhs, float rhs) { return new bool4x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (float lhs, float4x4 rhs) { return new bool4x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator - (float4x4 val) { return new float4x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 operator + (float4x4 val) { return new float4x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise equality operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (float4x4 lhs, float4x4 rhs) { return new bool4x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (float4x4 lhs, float rhs) { return new bool4x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (float lhs, float4x4 rhs) { return new bool4x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two float4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (float4x4 lhs, float4x4 rhs) { return new bool4x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a float4x4 matrix and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (float4x4 lhs, float rhs) { return new bool4x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a float value and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (float lhs, float4x4 rhs) { return new bool4x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + + /// Returns the float4 element at a specified index. + unsafe public ref float4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (float4x4* array = &this) { return ref ((float4*)array)[index]; } + } + } + + /// Returns true if the float4x4 is equal to a given float4x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(float4x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the float4x4 is equal to a given float4x4, false otherwise. + public override bool Equals(object o) { return Equals((float4x4)o); } + + + /// Returns a hash code for the float4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the float4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("float4x4({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f, {12}f, {13}f, {14}f, {15}f)", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z, c0.w, c1.w, c2.w, c3.w); + } + + /// Returns a string representation of the float4x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float4x4({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f, {12}f, {13}f, {14}f, {15}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c3.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider), c3.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a float4x4 matrix constructed from four float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(float4 c0, float4 c1, float4 c2, float4 c3) { return new float4x4(c0, c1, c2, c3); } + + /// Returns a float4x4 matrix constructed from from 16 float values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(float m00, float m01, float m02, float m03, + float m10, float m11, float m12, float m13, + float m20, float m21, float m22, float m23, + float m30, float m31, float m32, float m33) + { + return new float4x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23, + m30, m31, m32, m33); + } + + /// Returns a float4x4 matrix constructed from a single float value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(float v) { return new float4x4(v); } + + /// Returns a float4x4 matrix constructed from a single bool value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(bool v) { return new float4x4(v); } + + /// Return a float4x4 matrix constructed from a bool4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(bool4x4 v) { return new float4x4(v); } + + /// Returns a float4x4 matrix constructed from a single int value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(int v) { return new float4x4(v); } + + /// Return a float4x4 matrix constructed from a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(int4x4 v) { return new float4x4(v); } + + /// Returns a float4x4 matrix constructed from a single uint value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(uint v) { return new float4x4(v); } + + /// Return a float4x4 matrix constructed from a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(uint4x4 v) { return new float4x4(v); } + + /// Returns a float4x4 matrix constructed from a single double value by converting it to float and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(double v) { return new float4x4(v); } + + /// Return a float4x4 matrix constructed from a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 float4x4(double4x4 v) { return new float4x4(v); } + + /// Return the result of rotating a float3 vector by a float4x4 matrix + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 rotate(float4x4 a, float3 b) + { + return (a.c0 * b.x + a.c1 * b.y + a.c2 * b.z).xyz; + } + + /// Return the result of transforming a float3 point by a float4x4 matrix + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 transform(float4x4 a, float3 b) + { + return (a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3).xyz; + } + + /// Return the float4x4 transpose of a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 transpose(float4x4 v) + { + return float4x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w, + v.c3.x, v.c3.y, v.c3.z, v.c3.w); + } + + /// Returns the float4x4 full inverse of a float4x4 matrix. + public static float4x4 inverse(float4x4 m) + { + float4 c0 = m.c0; + float4 c1 = m.c1; + float4 c2 = m.c2; + float4 c3 = m.c3; + + float4 r0y_r1y_r0x_r1x = movelh(c1, c0); + float4 r0z_r1z_r0w_r1w = movelh(c2, c3); + float4 r2y_r3y_r2x_r3x = movehl(c0, c1); + float4 r2z_r3z_r2w_r3w = movehl(c3, c2); + + float4 r1y_r2y_r1x_r2x = shuffle(c1, c0, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightZ); + float4 r1z_r2z_r1w_r2w = shuffle(c2, c3, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightZ); + float4 r3y_r0y_r3x_r0x = shuffle(c1, c0, ShuffleComponent.LeftW, ShuffleComponent.LeftX, ShuffleComponent.RightW, ShuffleComponent.RightX); + float4 r3z_r0z_r3w_r0w = shuffle(c2, c3, ShuffleComponent.LeftW, ShuffleComponent.LeftX, ShuffleComponent.RightW, ShuffleComponent.RightX); + + float4 r0_wzyx = shuffle(r0z_r1z_r0w_r1w, r0y_r1y_r0x_r1x, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.RightX, ShuffleComponent.RightZ); + float4 r1_wzyx = shuffle(r0z_r1z_r0w_r1w, r0y_r1y_r0x_r1x, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightW); + float4 r2_wzyx = shuffle(r2z_r3z_r2w_r3w, r2y_r3y_r2x_r3x, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.RightX, ShuffleComponent.RightZ); + float4 r3_wzyx = shuffle(r2z_r3z_r2w_r3w, r2y_r3y_r2x_r3x, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightW); + float4 r0_xyzw = shuffle(r0y_r1y_r0x_r1x, r0z_r1z_r0w_r1w, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.RightX, ShuffleComponent.RightZ); + + // Calculate remaining inner term pairs. inner terms have zw=-xy, so we only have to calculate xy and can pack two pairs per vector. + float4 inner12_23 = r1y_r2y_r1x_r2x * r2z_r3z_r2w_r3w - r1z_r2z_r1w_r2w * r2y_r3y_r2x_r3x; + float4 inner02_13 = r0y_r1y_r0x_r1x * r2z_r3z_r2w_r3w - r0z_r1z_r0w_r1w * r2y_r3y_r2x_r3x; + float4 inner30_01 = r3z_r0z_r3w_r0w * r0y_r1y_r0x_r1x - r3y_r0y_r3x_r0x * r0z_r1z_r0w_r1w; + + // Expand inner terms back to 4 components. zw signs still need to be flipped + float4 inner12 = shuffle(inner12_23, inner12_23, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX); + float4 inner23 = shuffle(inner12_23, inner12_23, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.RightY); + + float4 inner02 = shuffle(inner02_13, inner02_13, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX); + float4 inner13 = shuffle(inner02_13, inner02_13, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.RightY); + + // Calculate minors + float4 minors0 = r3_wzyx * inner12 - r2_wzyx * inner13 + r1_wzyx * inner23; + + float4 denom = r0_xyzw * minors0; + + // Horizontal sum of denominator. Free sign flip of z and w compensates for missing flip in inner terms. + denom = denom + shuffle(denom, denom, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightW, ShuffleComponent.RightZ); // x+y x+y z+w z+w + denom = denom - shuffle(denom, denom, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightX); // x+y-z-w x+y-z-w z+w-x-y z+w-x-y + + float4 rcp_denom_ppnn = float4(1.0f) / denom; + float4x4 res; + res.c0 = minors0 * rcp_denom_ppnn; + + float4 inner30 = shuffle(inner30_01, inner30_01, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX); + float4 inner01 = shuffle(inner30_01, inner30_01, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.RightY); + + float4 minors1 = r2_wzyx * inner30 - r0_wzyx * inner23 - r3_wzyx * inner02; + res.c1 = minors1 * rcp_denom_ppnn; + + float4 minors2 = r0_wzyx * inner13 - r1_wzyx * inner30 - r3_wzyx * inner01; + res.c2 = minors2 * rcp_denom_ppnn; + + float4 minors3 = r1_wzyx * inner02 - r0_wzyx * inner12 + r2_wzyx * inner01; + res.c3 = minors3 * rcp_denom_ppnn; + return res; + } + + // Fast matrix inverse for rigid transforms (Orthonormal basis and translation) + public static float4x4 fastinverse(float4x4 m) + { + float4 c0 = m.c0; + float4 c1 = m.c1; + float4 c2 = m.c2; + float4 pos = m.c3; + + float4 zero = float4(0); + + float4 t0 = unpacklo(c0, c2); + float4 t1 = unpacklo(c1, zero); + float4 t2 = unpackhi(c0, c2); + float4 t3 = unpackhi(c1, zero); + + float4 r0 = unpacklo(t0, t1); + float4 r1 = unpackhi(t0, t1); + float4 r2 = unpacklo(t2, t3); + + pos = -(r0 * pos.x + r1 * pos.y + r2 * pos.z); + pos.w = 1.0f; + + return float4x4(r0, r1, r2, pos); + } + + /// Returns the determinant of a float4x4 matrix. + public static float determinant(float4x4 m) + { + float4 c0 = m.c0; + float4 c1 = m.c1; + float4 c2 = m.c2; + float4 c3 = m.c3; + + float m00 = c1.y * (c2.z * c3.w - c2.w * c3.z) - c2.y * (c1.z * c3.w - c1.w * c3.z) + c3.y * (c1.z * c2.w - c1.w * c2.z); + float m01 = c0.y * (c2.z * c3.w - c2.w * c3.z) - c2.y * (c0.z * c3.w - c0.w * c3.z) + c3.y * (c0.z * c2.w - c0.w * c2.z); + float m02 = c0.y * (c1.z * c3.w - c1.w * c3.z) - c1.y * (c0.z * c3.w - c0.w * c3.z) + c3.y * (c0.z * c1.w - c0.w * c1.z); + float m03 = c0.y * (c1.z * c2.w - c1.w * c2.z) - c1.y * (c0.z * c2.w - c0.w * c2.z) + c2.y * (c0.z * c1.w - c0.w * c1.z); + + return c0.x * m00 - c1.x * m01 + c2.x * m02 - c3.x * m03; + } + + /// Returns a uint hash code of a float4x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(float4x4 v) + { + return csum(asuint(v.c0) * uint4(0xC4B1493Fu, 0xBA0966D3u, 0xAFBEE253u, 0x5B419C01u) + + asuint(v.c1) * uint4(0x515D90F5u, 0xEC9F68F3u, 0xF9EA92D5u, 0xC2FAFCB9u) + + asuint(v.c2) * uint4(0x616E9CA1u, 0xC5C5394Bu, 0xCAE78587u, 0x7A1541C9u) + + asuint(v.c3) * uint4(0xF83BD927u, 0x6A243BCBu, 0x509B84C9u, 0x91D13847u)) + 0x52F7230Fu; + } + + /// + /// Returns a uint4 vector hash code of a float4x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(float4x4 v) + { + return (asuint(v.c0) * uint4(0xCF286E83u, 0xE121E6ADu, 0xC9CA1249u, 0x69B60C81u) + + asuint(v.c1) * uint4(0xE0EB6C25u, 0xF648BEABu, 0x6BDB2B07u, 0xEF63C699u) + + asuint(v.c2) * uint4(0x9001903Fu, 0xA895B9CDu, 0x9D23B201u, 0x4B01D3E1u) + + asuint(v.c3) * uint4(0x7461CA0Du, 0x79725379u, 0xD6258E5Bu, 0xEE390C97u)) + 0x9C8A2F05u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x4.gen.cs.meta new file mode 100644 index 0000000..0b3cfdc --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/float4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 53454a4b51c974a438994628ac5767e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half.cs new file mode 100644 index 0000000..7f28b00 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half.cs @@ -0,0 +1,110 @@ +using System; +using System.Runtime.CompilerServices; + +namespace Unity.Mathematics +{ + public struct half : System.IEquatable, IFormattable + { + public ushort value; + + /// half zero value. + public static readonly half zero = new half(); + + public static float MaxValue { get { return 65504.0f; } } + public static float MinValue { get { return -65504.0f; } } + + /// Constructs a half value from a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half(half x) + { + value = x.value; + } + + /// Constructs a half value from a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half(float v) + { + value = (ushort)math.f32tof16(v); + } + + /// Constructs a half value from a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half(double v) + { + value = (ushort)math.f32tof16((float)v); + } + + /// Explicitly converts a float value to a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half(float v) { return new half(v); } + + /// Explicitly converts a double value to a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half(double v) { return new half(v); } + + /// Implicitly converts a half value to a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator float(half d) { return math.f16tof32(d.value); } + + /// Implicitly converts a half value to a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator double(half d) { return math.f16tof32(d.value); } + + + /// Returns whether two half values are equal. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator ==(half lhs, half rhs) { return lhs.value == rhs.value; } + + /// Returns whether two half values are different. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator !=(half lhs, half rhs) { return lhs.value != rhs.value; } + + + /// Returns true if the half is equal to a given half, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(half rhs) { return value == rhs.value; } + + /// Returns true if the half is equal to a given half, false otherwise. + public override bool Equals(object o) { return Equals((half)o); } + + /// Returns a hash code for the half. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)value; } + + /// Returns a string representation of the half. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return math.f16tof32(value).ToString(); + } + + /// Returns a string representation of the half using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return math.f16tof32(value).ToString(format, formatProvider); + } + } + + public static partial class math + { + /// Returns a half value constructed from a half values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half half(half x) { return new half(x); } + + /// Returns a half value constructed from a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half half(float v) { return new half(v); } + + /// Returns a half value constructed from a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half half(double v) { return new half(v); } + + /// Returns a uint hash code of a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(half v) + { + return v.value * 0x745ED837u + 0x816EFB5Du; + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half.cs.meta new file mode 100644 index 0000000..ab9dc0d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a513f9316035e1649a644c2e9f69c12a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half2.gen.cs new file mode 100644 index 0000000..6976df5 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half2.gen.cs @@ -0,0 +1,471 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(half2.DebuggerProxy))] + public partial struct half2 : System.IEquatable, IFormattable + { + public half x; + public half y; + + /// half2 zero value. + public static readonly half2 zero; + + /// Constructs a half2 vector from two half values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half2(half x, half y) + { + this.x = x; + this.y = y; + } + + /// Constructs a half2 vector from a half2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half2(half2 xy) + { + this.x = xy.x; + this.y = xy.y; + } + + /// Constructs a half2 vector from a single half value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half2(half v) + { + this.x = v; + this.y = v; + } + + /// Constructs a half2 vector from a single float value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half2(float v) + { + this.x = (half)v; + this.y = (half)v; + } + + /// Constructs a half2 vector from a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half2(float2 v) + { + this.x = (half)v.x; + this.y = (half)v.y; + } + + /// Constructs a half2 vector from a single double value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half2(double v) + { + this.x = (half)v; + this.y = (half)v; + } + + /// Constructs a half2 vector from a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half2(double2 v) + { + this.x = (half)v.x; + this.y = (half)v.y; + } + + + /// Implicitly converts a single half value to a half2 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator half2(half v) { return new half2(v); } + + /// Explicitly converts a single float value to a half2 vector by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half2(float v) { return new half2(v); } + + /// Explicitly converts a float2 vector to a half2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half2(float2 v) { return new half2(v); } + + /// Explicitly converts a single double value to a half2 vector by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half2(double v) { return new half2(v); } + + /// Explicitly converts a double2 vector to a half2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half2(double2 v) { return new half2(v); } + + + /// Returns the result of a componentwise equality operation on two half2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (half2 lhs, half2 rhs) { return new bool2 (lhs.x == rhs.x, lhs.y == rhs.y); } + + /// Returns the result of a componentwise equality operation on a half2 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (half2 lhs, half rhs) { return new bool2 (lhs.x == rhs, lhs.y == rhs); } + + /// Returns the result of a componentwise equality operation on a half value and a half2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (half lhs, half2 rhs) { return new bool2 (lhs == rhs.x, lhs == rhs.y); } + + + /// Returns the result of a componentwise not equal operation on two half2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (half2 lhs, half2 rhs) { return new bool2 (lhs.x != rhs.x, lhs.y != rhs.y); } + + /// Returns the result of a componentwise not equal operation on a half2 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (half2 lhs, half rhs) { return new bool2 (lhs.x != rhs, lhs.y != rhs); } + + /// Returns the result of a componentwise not equal operation on a half value and a half2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (half lhs, half2 rhs) { return new bool2 (lhs != rhs.x, lhs != rhs.y); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(y, y); } + } + + + + /// Returns the half element at a specified index. + unsafe public half this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (half2* array = &this) { return ((half*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (half* array = &x) { array[index] = value; } + } + } + + /// Returns true if the half2 is equal to a given half2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(half2 rhs) { return x == rhs.x && y == rhs.y; } + + /// Returns true if the half2 is equal to a given half2, false otherwise. + public override bool Equals(object o) { return Equals((half2)o); } + + + /// Returns a hash code for the half2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the half2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("half2({0}, {1})", x, y); + } + + /// Returns a string representation of the half2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("half2({0}, {1})", x.ToString(format, formatProvider), y.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public half x; + public half y; + public DebuggerProxy(half2 v) + { + x = v.x; + y = v.y; + } + } + + } + + public static partial class math + { + /// Returns a half2 vector constructed from two half values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half2 half2(half x, half y) { return new half2(x, y); } + + /// Returns a half2 vector constructed from a half2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half2 half2(half2 xy) { return new half2(xy); } + + /// Returns a half2 vector constructed from a single half value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half2 half2(half v) { return new half2(v); } + + /// Returns a half2 vector constructed from a single float value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half2 half2(float v) { return new half2(v); } + + /// Return a half2 vector constructed from a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half2 half2(float2 v) { return new half2(v); } + + /// Returns a half2 vector constructed from a single double value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half2 half2(double v) { return new half2(v); } + + /// Return a half2 vector constructed from a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half2 half2(double2 v) { return new half2(v); } + + /// Returns a uint hash code of a half2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(half2 v) + { + return csum(uint2(v.x.value, v.y.value) * uint2(0x6E624EB7u, 0x7383ED49u)) + 0xDD49C23Bu; + } + + /// + /// Returns a uint2 vector hash code of a half2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(half2 v) + { + return (uint2(v.x.value, v.y.value) * uint2(0xEBD0D005u, 0x91475DF7u)) + 0x55E84827u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half2.gen.cs.meta new file mode 100644 index 0000000..e9af8dd --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79785f1f327add947b5448161b8ddc4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half3.gen.cs new file mode 100644 index 0000000..4cbba35 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half3.gen.cs @@ -0,0 +1,1239 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(half3.DebuggerProxy))] + public partial struct half3 : System.IEquatable, IFormattable + { + public half x; + public half y; + public half z; + + /// half3 zero value. + public static readonly half3 zero; + + /// Constructs a half3 vector from three half values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half3(half x, half y, half z) + { + this.x = x; + this.y = y; + this.z = z; + } + + /// Constructs a half3 vector from a half value and a half2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half3(half x, half2 yz) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + } + + /// Constructs a half3 vector from a half2 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half3(half2 xy, half z) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + } + + /// Constructs a half3 vector from a half3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half3(half3 xyz) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + } + + /// Constructs a half3 vector from a single half value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half3(half v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a half3 vector from a single float value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half3(float v) + { + this.x = (half)v; + this.y = (half)v; + this.z = (half)v; + } + + /// Constructs a half3 vector from a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half3(float3 v) + { + this.x = (half)v.x; + this.y = (half)v.y; + this.z = (half)v.z; + } + + /// Constructs a half3 vector from a single double value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half3(double v) + { + this.x = (half)v; + this.y = (half)v; + this.z = (half)v; + } + + /// Constructs a half3 vector from a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half3(double3 v) + { + this.x = (half)v.x; + this.y = (half)v.y; + this.z = (half)v.z; + } + + + /// Implicitly converts a single half value to a half3 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator half3(half v) { return new half3(v); } + + /// Explicitly converts a single float value to a half3 vector by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half3(float v) { return new half3(v); } + + /// Explicitly converts a float3 vector to a half3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half3(float3 v) { return new half3(v); } + + /// Explicitly converts a single double value to a half3 vector by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half3(double v) { return new half3(v); } + + /// Explicitly converts a double3 vector to a half3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half3(double3 v) { return new half3(v); } + + + /// Returns the result of a componentwise equality operation on two half3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (half3 lhs, half3 rhs) { return new bool3 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z); } + + /// Returns the result of a componentwise equality operation on a half3 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (half3 lhs, half rhs) { return new bool3 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs); } + + /// Returns the result of a componentwise equality operation on a half value and a half3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (half lhs, half3 rhs) { return new bool3 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z); } + + + /// Returns the result of a componentwise not equal operation on two half3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (half3 lhs, half3 rhs) { return new bool3 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z); } + + /// Returns the result of a componentwise not equal operation on a half3 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (half3 lhs, half rhs) { return new bool3 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs); } + + /// Returns the result of a componentwise not equal operation on a half value and a half3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (half lhs, half3 rhs) { return new bool3 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(z, z); } + } + + + + /// Returns the half element at a specified index. + unsafe public half this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (half3* array = &this) { return ((half*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (half* array = &x) { array[index] = value; } + } + } + + /// Returns true if the half3 is equal to a given half3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(half3 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z; } + + /// Returns true if the half3 is equal to a given half3, false otherwise. + public override bool Equals(object o) { return Equals((half3)o); } + + + /// Returns a hash code for the half3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the half3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("half3({0}, {1}, {2})", x, y, z); + } + + /// Returns a string representation of the half3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("half3({0}, {1}, {2})", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public half x; + public half y; + public half z; + public DebuggerProxy(half3 v) + { + x = v.x; + y = v.y; + z = v.z; + } + } + + } + + public static partial class math + { + /// Returns a half3 vector constructed from three half values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half3 half3(half x, half y, half z) { return new half3(x, y, z); } + + /// Returns a half3 vector constructed from a half value and a half2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half3 half3(half x, half2 yz) { return new half3(x, yz); } + + /// Returns a half3 vector constructed from a half2 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half3 half3(half2 xy, half z) { return new half3(xy, z); } + + /// Returns a half3 vector constructed from a half3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half3 half3(half3 xyz) { return new half3(xyz); } + + /// Returns a half3 vector constructed from a single half value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half3 half3(half v) { return new half3(v); } + + /// Returns a half3 vector constructed from a single float value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half3 half3(float v) { return new half3(v); } + + /// Return a half3 vector constructed from a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half3 half3(float3 v) { return new half3(v); } + + /// Returns a half3 vector constructed from a single double value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half3 half3(double v) { return new half3(v); } + + /// Return a half3 vector constructed from a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half3 half3(double3 v) { return new half3(v); } + + /// Returns a uint hash code of a half3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(half3 v) + { + return csum(uint3(v.x.value, v.y.value, v.z.value) * uint3(0x685835CFu, 0xC3D32AE1u, 0xB966942Fu)) + 0xFE9856B3u; + } + + /// + /// Returns a uint3 vector hash code of a half3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(half3 v) + { + return (uint3(v.x.value, v.y.value, v.z.value) * uint3(0xFA3A3285u, 0xAD55999Du, 0xDCDD5341u)) + 0x94DDD769u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half3.gen.cs.meta new file mode 100644 index 0000000..22fa764 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d271113f4074d29479af6b04f032a53e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half4.gen.cs new file mode 100644 index 0000000..69a0d4d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half4.gen.cs @@ -0,0 +1,3155 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(half4.DebuggerProxy))] + public partial struct half4 : System.IEquatable, IFormattable + { + public half x; + public half y; + public half z; + public half w; + + /// half4 zero value. + public static readonly half4 zero; + + /// Constructs a half4 vector from four half values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(half x, half y, half z, half w) + { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + /// Constructs a half4 vector from two half values and a half2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(half x, half y, half2 zw) + { + this.x = x; + this.y = y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a half4 vector from a half value, a half2 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(half x, half2 yz, half w) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + this.w = w; + } + + /// Constructs a half4 vector from a half value and a half3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(half x, half3 yzw) + { + this.x = x; + this.y = yzw.x; + this.z = yzw.y; + this.w = yzw.z; + } + + /// Constructs a half4 vector from a half2 vector and two half values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(half2 xy, half z, half w) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + this.w = w; + } + + /// Constructs a half4 vector from two half2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(half2 xy, half2 zw) + { + this.x = xy.x; + this.y = xy.y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a half4 vector from a half3 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(half3 xyz, half w) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + this.w = w; + } + + /// Constructs a half4 vector from a half4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(half4 xyzw) + { + this.x = xyzw.x; + this.y = xyzw.y; + this.z = xyzw.z; + this.w = xyzw.w; + } + + /// Constructs a half4 vector from a single half value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(half v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a half4 vector from a single float value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(float v) + { + this.x = (half)v; + this.y = (half)v; + this.z = (half)v; + this.w = (half)v; + } + + /// Constructs a half4 vector from a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(float4 v) + { + this.x = (half)v.x; + this.y = (half)v.y; + this.z = (half)v.z; + this.w = (half)v.w; + } + + /// Constructs a half4 vector from a single double value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(double v) + { + this.x = (half)v; + this.y = (half)v; + this.z = (half)v; + this.w = (half)v; + } + + /// Constructs a half4 vector from a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public half4(double4 v) + { + this.x = (half)v.x; + this.y = (half)v.y; + this.z = (half)v.z; + this.w = (half)v.w; + } + + + /// Implicitly converts a single half value to a half4 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator half4(half v) { return new half4(v); } + + /// Explicitly converts a single float value to a half4 vector by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half4(float v) { return new half4(v); } + + /// Explicitly converts a float4 vector to a half4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half4(float4 v) { return new half4(v); } + + /// Explicitly converts a single double value to a half4 vector by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half4(double v) { return new half4(v); } + + /// Explicitly converts a double4 vector to a half4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator half4(double4 v) { return new half4(v); } + + + /// Returns the result of a componentwise equality operation on two half4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (half4 lhs, half4 rhs) { return new bool4 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z, lhs.w == rhs.w); } + + /// Returns the result of a componentwise equality operation on a half4 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (half4 lhs, half rhs) { return new bool4 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs, lhs.w == rhs); } + + /// Returns the result of a componentwise equality operation on a half value and a half4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (half lhs, half4 rhs) { return new bool4 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z, lhs == rhs.w); } + + + /// Returns the result of a componentwise not equal operation on two half4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (half4 lhs, half4 rhs) { return new bool4 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z, lhs.w != rhs.w); } + + /// Returns the result of a componentwise not equal operation on a half4 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (half4 lhs, half rhs) { return new bool4 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs, lhs.w != rhs); } + + /// Returns the result of a componentwise not equal operation on a half value and a half4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (half lhs, half4 rhs) { return new bool4 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z, lhs != rhs.w); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 xwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(x, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 yzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 ywww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(y, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 zwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(z, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half4 wwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half4(w, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 xww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 ywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 ywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 ywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 yww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 zww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 wwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half3 www + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half3(w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 xw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 yw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 zw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 wx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 wy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 wz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public half2 ww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new half2(w, w); } + } + + + + /// Returns the half element at a specified index. + unsafe public half this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (half4* array = &this) { return ((half*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (half* array = &x) { array[index] = value; } + } + } + + /// Returns true if the half4 is equal to a given half4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(half4 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z && w == rhs.w; } + + /// Returns true if the half4 is equal to a given half4, false otherwise. + public override bool Equals(object o) { return Equals((half4)o); } + + + /// Returns a hash code for the half4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the half4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("half4({0}, {1}, {2}, {3})", x, y, z, w); + } + + /// Returns a string representation of the half4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("half4({0}, {1}, {2}, {3})", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider), w.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public half x; + public half y; + public half z; + public half w; + public DebuggerProxy(half4 v) + { + x = v.x; + y = v.y; + z = v.z; + w = v.w; + } + } + + } + + public static partial class math + { + /// Returns a half4 vector constructed from four half values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(half x, half y, half z, half w) { return new half4(x, y, z, w); } + + /// Returns a half4 vector constructed from two half values and a half2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(half x, half y, half2 zw) { return new half4(x, y, zw); } + + /// Returns a half4 vector constructed from a half value, a half2 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(half x, half2 yz, half w) { return new half4(x, yz, w); } + + /// Returns a half4 vector constructed from a half value and a half3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(half x, half3 yzw) { return new half4(x, yzw); } + + /// Returns a half4 vector constructed from a half2 vector and two half values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(half2 xy, half z, half w) { return new half4(xy, z, w); } + + /// Returns a half4 vector constructed from two half2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(half2 xy, half2 zw) { return new half4(xy, zw); } + + /// Returns a half4 vector constructed from a half3 vector and a half value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(half3 xyz, half w) { return new half4(xyz, w); } + + /// Returns a half4 vector constructed from a half4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(half4 xyzw) { return new half4(xyzw); } + + /// Returns a half4 vector constructed from a single half value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(half v) { return new half4(v); } + + /// Returns a half4 vector constructed from a single float value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(float v) { return new half4(v); } + + /// Return a half4 vector constructed from a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(float4 v) { return new half4(v); } + + /// Returns a half4 vector constructed from a single double value by converting it to half and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(double v) { return new half4(v); } + + /// Return a half4 vector constructed from a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static half4 half4(double4 v) { return new half4(v); } + + /// Returns a uint hash code of a half4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(half4 v) + { + return csum(uint4(v.x.value, v.y.value, v.z.value, v.w.value) * uint4(0x745ED837u, 0x9CDC88F5u, 0xFA62D721u, 0x7E4DB1CFu)) + 0x68EEE0F5u; + } + + /// + /// Returns a uint4 vector hash code of a half4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(half4 v) + { + return (uint4(v.x.value, v.y.value, v.z.value, v.w.value) * uint4(0xBC3B0A59u, 0x816EFB5Du, 0xA24E82B7u, 0x45A22087u)) + 0xFC104C3Bu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half4.gen.cs.meta new file mode 100644 index 0000000..81168fb --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/half4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a48ec2283f8d80e4b8d21c071400d3da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2.gen.cs new file mode 100644 index 0000000..6757c2e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2.gen.cs @@ -0,0 +1,780 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(int2.DebuggerProxy))] + [System.Serializable] + public partial struct int2 : System.IEquatable, IFormattable + { + public int x; + public int y; + + /// int2 zero value. + public static readonly int2 zero; + + /// Constructs a int2 vector from two int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(int x, int y) + { + this.x = x; + this.y = y; + } + + /// Constructs a int2 vector from an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(int2 xy) + { + this.x = xy.x; + this.y = xy.y; + } + + /// Constructs a int2 vector from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(int v) + { + this.x = v; + this.y = v; + } + + /// Constructs a int2 vector from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(bool v) + { + this.x = v ? 1 : 0; + this.y = v ? 1 : 0; + } + + /// Constructs a int2 vector from a bool2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(bool2 v) + { + this.x = v.x ? 1 : 0; + this.y = v.y ? 1 : 0; + } + + /// Constructs a int2 vector from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(uint v) + { + this.x = (int)v; + this.y = (int)v; + } + + /// Constructs a int2 vector from a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(uint2 v) + { + this.x = (int)v.x; + this.y = (int)v.y; + } + + /// Constructs a int2 vector from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(float v) + { + this.x = (int)v; + this.y = (int)v; + } + + /// Constructs a int2 vector from a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(float2 v) + { + this.x = (int)v.x; + this.y = (int)v.y; + } + + /// Constructs a int2 vector from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(double v) + { + this.x = (int)v; + this.y = (int)v; + } + + /// Constructs a int2 vector from a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2(double2 v) + { + this.x = (int)v.x; + this.y = (int)v.y; + } + + + /// Implicitly converts a single int value to a int2 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int2(int v) { return new int2(v); } + + /// Explicitly converts a single bool value to a int2 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2(bool v) { return new int2(v); } + + /// Explicitly converts a bool2 vector to a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2(bool2 v) { return new int2(v); } + + /// Explicitly converts a single uint value to a int2 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2(uint v) { return new int2(v); } + + /// Explicitly converts a uint2 vector to a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2(uint2 v) { return new int2(v); } + + /// Explicitly converts a single float value to a int2 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2(float v) { return new int2(v); } + + /// Explicitly converts a float2 vector to a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2(float2 v) { return new int2(v); } + + /// Explicitly converts a single double value to a int2 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2(double v) { return new int2(v); } + + /// Explicitly converts a double2 vector to a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2(double2 v) { return new int2(v); } + + + /// Returns the result of a componentwise multiplication operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator * (int2 lhs, int2 rhs) { return new int2 (lhs.x * rhs.x, lhs.y * rhs.y); } + + /// Returns the result of a componentwise multiplication operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator * (int2 lhs, int rhs) { return new int2 (lhs.x * rhs, lhs.y * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator * (int lhs, int2 rhs) { return new int2 (lhs * rhs.x, lhs * rhs.y); } + + + /// Returns the result of a componentwise addition operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator + (int2 lhs, int2 rhs) { return new int2 (lhs.x + rhs.x, lhs.y + rhs.y); } + + /// Returns the result of a componentwise addition operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator + (int2 lhs, int rhs) { return new int2 (lhs.x + rhs, lhs.y + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator + (int lhs, int2 rhs) { return new int2 (lhs + rhs.x, lhs + rhs.y); } + + + /// Returns the result of a componentwise subtraction operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator - (int2 lhs, int2 rhs) { return new int2 (lhs.x - rhs.x, lhs.y - rhs.y); } + + /// Returns the result of a componentwise subtraction operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator - (int2 lhs, int rhs) { return new int2 (lhs.x - rhs, lhs.y - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator - (int lhs, int2 rhs) { return new int2 (lhs - rhs.x, lhs - rhs.y); } + + + /// Returns the result of a componentwise division operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator / (int2 lhs, int2 rhs) { return new int2 (lhs.x / rhs.x, lhs.y / rhs.y); } + + /// Returns the result of a componentwise division operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator / (int2 lhs, int rhs) { return new int2 (lhs.x / rhs, lhs.y / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator / (int lhs, int2 rhs) { return new int2 (lhs / rhs.x, lhs / rhs.y); } + + + /// Returns the result of a componentwise modulus operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator % (int2 lhs, int2 rhs) { return new int2 (lhs.x % rhs.x, lhs.y % rhs.y); } + + /// Returns the result of a componentwise modulus operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator % (int2 lhs, int rhs) { return new int2 (lhs.x % rhs, lhs.y % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator % (int lhs, int2 rhs) { return new int2 (lhs % rhs.x, lhs % rhs.y); } + + + /// Returns the result of a componentwise increment operation on an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator ++ (int2 val) { return new int2 (++val.x, ++val.y); } + + + /// Returns the result of a componentwise decrement operation on an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator -- (int2 val) { return new int2 (--val.x, --val.y); } + + + /// Returns the result of a componentwise less than operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (int2 lhs, int2 rhs) { return new bool2 (lhs.x < rhs.x, lhs.y < rhs.y); } + + /// Returns the result of a componentwise less than operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (int2 lhs, int rhs) { return new bool2 (lhs.x < rhs, lhs.y < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (int lhs, int2 rhs) { return new bool2 (lhs < rhs.x, lhs < rhs.y); } + + + /// Returns the result of a componentwise less or equal operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (int2 lhs, int2 rhs) { return new bool2 (lhs.x <= rhs.x, lhs.y <= rhs.y); } + + /// Returns the result of a componentwise less or equal operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (int2 lhs, int rhs) { return new bool2 (lhs.x <= rhs, lhs.y <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (int lhs, int2 rhs) { return new bool2 (lhs <= rhs.x, lhs <= rhs.y); } + + + /// Returns the result of a componentwise greater than operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (int2 lhs, int2 rhs) { return new bool2 (lhs.x > rhs.x, lhs.y > rhs.y); } + + /// Returns the result of a componentwise greater than operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (int2 lhs, int rhs) { return new bool2 (lhs.x > rhs, lhs.y > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (int lhs, int2 rhs) { return new bool2 (lhs > rhs.x, lhs > rhs.y); } + + + /// Returns the result of a componentwise greater or equal operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (int2 lhs, int2 rhs) { return new bool2 (lhs.x >= rhs.x, lhs.y >= rhs.y); } + + /// Returns the result of a componentwise greater or equal operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (int2 lhs, int rhs) { return new bool2 (lhs.x >= rhs, lhs.y >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (int lhs, int2 rhs) { return new bool2 (lhs >= rhs.x, lhs >= rhs.y); } + + + /// Returns the result of a componentwise unary minus operation on an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator - (int2 val) { return new int2 (-val.x, -val.y); } + + + /// Returns the result of a componentwise unary plus operation on an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator + (int2 val) { return new int2 (+val.x, +val.y); } + + + /// Returns the result of a componentwise left shift operation on an int2 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator << (int2 x, int n) { return new int2 (x.x << n, x.y << n); } + + /// Returns the result of a componentwise right shift operation on an int2 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator >> (int2 x, int n) { return new int2 (x.x >> n, x.y >> n); } + + /// Returns the result of a componentwise equality operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (int2 lhs, int2 rhs) { return new bool2 (lhs.x == rhs.x, lhs.y == rhs.y); } + + /// Returns the result of a componentwise equality operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (int2 lhs, int rhs) { return new bool2 (lhs.x == rhs, lhs.y == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (int lhs, int2 rhs) { return new bool2 (lhs == rhs.x, lhs == rhs.y); } + + + /// Returns the result of a componentwise not equal operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (int2 lhs, int2 rhs) { return new bool2 (lhs.x != rhs.x, lhs.y != rhs.y); } + + /// Returns the result of a componentwise not equal operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (int2 lhs, int rhs) { return new bool2 (lhs.x != rhs, lhs.y != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (int lhs, int2 rhs) { return new bool2 (lhs != rhs.x, lhs != rhs.y); } + + + /// Returns the result of a componentwise bitwise not operation on an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator ~ (int2 val) { return new int2 (~val.x, ~val.y); } + + + /// Returns the result of a componentwise bitwise and operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator & (int2 lhs, int2 rhs) { return new int2 (lhs.x & rhs.x, lhs.y & rhs.y); } + + /// Returns the result of a componentwise bitwise and operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator & (int2 lhs, int rhs) { return new int2 (lhs.x & rhs, lhs.y & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator & (int lhs, int2 rhs) { return new int2 (lhs & rhs.x, lhs & rhs.y); } + + + /// Returns the result of a componentwise bitwise or operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator | (int2 lhs, int2 rhs) { return new int2 (lhs.x | rhs.x, lhs.y | rhs.y); } + + /// Returns the result of a componentwise bitwise or operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator | (int2 lhs, int rhs) { return new int2 (lhs.x | rhs, lhs.y | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator | (int lhs, int2 rhs) { return new int2 (lhs | rhs.x, lhs | rhs.y); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator ^ (int2 lhs, int2 rhs) { return new int2 (lhs.x ^ rhs.x, lhs.y ^ rhs.y); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator ^ (int2 lhs, int rhs) { return new int2 (lhs.x ^ rhs, lhs.y ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 operator ^ (int lhs, int2 rhs) { return new int2 (lhs ^ rhs.x, lhs ^ rhs.y); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(y, y); } + } + + + + /// Returns the int element at a specified index. + unsafe public int this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (int2* array = &this) { return ((int*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (int* array = &x) { array[index] = value; } + } + } + + /// Returns true if the int2 is equal to a given int2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int2 rhs) { return x == rhs.x && y == rhs.y; } + + /// Returns true if the int2 is equal to a given int2, false otherwise. + public override bool Equals(object o) { return Equals((int2)o); } + + + /// Returns a hash code for the int2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int2({0}, {1})", x, y); + } + + /// Returns a string representation of the int2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int2({0}, {1})", x.ToString(format, formatProvider), y.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public int x; + public int y; + public DebuggerProxy(int2 v) + { + x = v.x; + y = v.y; + } + } + + } + + public static partial class math + { + /// Returns a int2 vector constructed from two int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(int x, int y) { return new int2(x, y); } + + /// Returns a int2 vector constructed from an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(int2 xy) { return new int2(xy); } + + /// Returns a int2 vector constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(int v) { return new int2(v); } + + /// Returns a int2 vector constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(bool v) { return new int2(v); } + + /// Return a int2 vector constructed from a bool2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(bool2 v) { return new int2(v); } + + /// Returns a int2 vector constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(uint v) { return new int2(v); } + + /// Return a int2 vector constructed from a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(uint2 v) { return new int2(v); } + + /// Returns a int2 vector constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(float v) { return new int2(v); } + + /// Return a int2 vector constructed from a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(float2 v) { return new int2(v); } + + /// Returns a int2 vector constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(double v) { return new int2(v); } + + /// Return a int2 vector constructed from a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 int2(double2 v) { return new int2(v); } + + /// Returns a uint hash code of a int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int2 v) + { + return csum(asuint(v) * uint2(0x83B58237u, 0x833E3E29u)) + 0xA9D919BFu; + } + + /// + /// Returns a uint2 vector hash code of a int2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(int2 v) + { + return (asuint(v) * uint2(0xC3EC1D97u, 0xB8B208C7u)) + 0x5D3ED947u; + } + + /// Returns the result of specified shuffling of the components from two int2 vectors into an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int shuffle(int2 a, int2 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two int2 vectors into an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 shuffle(int2 a, int2 b, ShuffleComponent x, ShuffleComponent y) + { + return int2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two int2 vectors into an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 shuffle(int2 a, int2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return int3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two int2 vectors into an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 shuffle(int2 a, int2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return int4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static int select_shuffle_component(int2 a, int2 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2.gen.cs.meta new file mode 100644 index 0000000..304b19c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 29938ef4dca90ce47ae640695d8b1c9f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x2.gen.cs new file mode 100644 index 0000000..8eb2671 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x2.gen.cs @@ -0,0 +1,506 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct int2x2 : System.IEquatable, IFormattable + { + public int2 c0; + public int2 c1; + + /// int2x2 identity transform. + public static readonly int2x2 identity = new int2x2(1, 0, 0, 1); + + /// int2x2 zero value. + public static readonly int2x2 zero; + + /// Constructs a int2x2 matrix from two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(int2 c0, int2 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a int2x2 matrix from 4 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(int m00, int m01, + int m10, int m11) + { + this.c0 = new int2(m00, m10); + this.c1 = new int2(m01, m11); + } + + /// Constructs a int2x2 matrix from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(int v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a int2x2 matrix from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(bool v) + { + this.c0 = math.select(new int2(0), new int2(1), v); + this.c1 = math.select(new int2(0), new int2(1), v); + } + + /// Constructs a int2x2 matrix from a bool2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(bool2x2 v) + { + this.c0 = math.select(new int2(0), new int2(1), v.c0); + this.c1 = math.select(new int2(0), new int2(1), v.c1); + } + + /// Constructs a int2x2 matrix from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(uint v) + { + this.c0 = (int2)v; + this.c1 = (int2)v; + } + + /// Constructs a int2x2 matrix from a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(uint2x2 v) + { + this.c0 = (int2)v.c0; + this.c1 = (int2)v.c1; + } + + /// Constructs a int2x2 matrix from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(float v) + { + this.c0 = (int2)v; + this.c1 = (int2)v; + } + + /// Constructs a int2x2 matrix from a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(float2x2 v) + { + this.c0 = (int2)v.c0; + this.c1 = (int2)v.c1; + } + + /// Constructs a int2x2 matrix from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(double v) + { + this.c0 = (int2)v; + this.c1 = (int2)v; + } + + /// Constructs a int2x2 matrix from a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x2(double2x2 v) + { + this.c0 = (int2)v.c0; + this.c1 = (int2)v.c1; + } + + + /// Implicitly converts a single int value to a int2x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int2x2(int v) { return new int2x2(v); } + + /// Explicitly converts a single bool value to a int2x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x2(bool v) { return new int2x2(v); } + + /// Explicitly converts a bool2x2 matrix to a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x2(bool2x2 v) { return new int2x2(v); } + + /// Explicitly converts a single uint value to a int2x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x2(uint v) { return new int2x2(v); } + + /// Explicitly converts a uint2x2 matrix to a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x2(uint2x2 v) { return new int2x2(v); } + + /// Explicitly converts a single float value to a int2x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x2(float v) { return new int2x2(v); } + + /// Explicitly converts a float2x2 matrix to a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x2(float2x2 v) { return new int2x2(v); } + + /// Explicitly converts a single double value to a int2x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x2(double v) { return new int2x2(v); } + + /// Explicitly converts a double2x2 matrix to a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x2(double2x2 v) { return new int2x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator * (int2x2 lhs, int2x2 rhs) { return new int2x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator * (int2x2 lhs, int rhs) { return new int2x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator * (int lhs, int2x2 rhs) { return new int2x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator + (int2x2 lhs, int2x2 rhs) { return new int2x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator + (int2x2 lhs, int rhs) { return new int2x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator + (int lhs, int2x2 rhs) { return new int2x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator - (int2x2 lhs, int2x2 rhs) { return new int2x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator - (int2x2 lhs, int rhs) { return new int2x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator - (int lhs, int2x2 rhs) { return new int2x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator / (int2x2 lhs, int2x2 rhs) { return new int2x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator / (int2x2 lhs, int rhs) { return new int2x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator / (int lhs, int2x2 rhs) { return new int2x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator % (int2x2 lhs, int2x2 rhs) { return new int2x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator % (int2x2 lhs, int rhs) { return new int2x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator % (int lhs, int2x2 rhs) { return new int2x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator ++ (int2x2 val) { return new int2x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator -- (int2x2 val) { return new int2x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (int2x2 lhs, int2x2 rhs) { return new bool2x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (int2x2 lhs, int rhs) { return new bool2x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (int lhs, int2x2 rhs) { return new bool2x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (int2x2 lhs, int2x2 rhs) { return new bool2x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (int2x2 lhs, int rhs) { return new bool2x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (int lhs, int2x2 rhs) { return new bool2x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (int2x2 lhs, int2x2 rhs) { return new bool2x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (int2x2 lhs, int rhs) { return new bool2x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (int lhs, int2x2 rhs) { return new bool2x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (int2x2 lhs, int2x2 rhs) { return new bool2x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (int2x2 lhs, int rhs) { return new bool2x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (int lhs, int2x2 rhs) { return new bool2x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator - (int2x2 val) { return new int2x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator + (int2x2 val) { return new int2x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise left shift operation on an int2x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator << (int2x2 x, int n) { return new int2x2 (x.c0 << n, x.c1 << n); } + + /// Returns the result of a componentwise right shift operation on an int2x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator >> (int2x2 x, int n) { return new int2x2 (x.c0 >> n, x.c1 >> n); } + + /// Returns the result of a componentwise equality operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (int2x2 lhs, int2x2 rhs) { return new bool2x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (int2x2 lhs, int rhs) { return new bool2x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (int lhs, int2x2 rhs) { return new bool2x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (int2x2 lhs, int2x2 rhs) { return new bool2x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (int2x2 lhs, int rhs) { return new bool2x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (int lhs, int2x2 rhs) { return new bool2x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + /// Returns the result of a componentwise bitwise not operation on an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator ~ (int2x2 val) { return new int2x2 (~val.c0, ~val.c1); } + + + /// Returns the result of a componentwise bitwise and operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator & (int2x2 lhs, int2x2 rhs) { return new int2x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); } + + /// Returns the result of a componentwise bitwise and operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator & (int2x2 lhs, int rhs) { return new int2x2 (lhs.c0 & rhs, lhs.c1 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator & (int lhs, int2x2 rhs) { return new int2x2 (lhs & rhs.c0, lhs & rhs.c1); } + + + /// Returns the result of a componentwise bitwise or operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator | (int2x2 lhs, int2x2 rhs) { return new int2x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); } + + /// Returns the result of a componentwise bitwise or operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator | (int2x2 lhs, int rhs) { return new int2x2 (lhs.c0 | rhs, lhs.c1 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator | (int lhs, int2x2 rhs) { return new int2x2 (lhs | rhs.c0, lhs | rhs.c1); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator ^ (int2x2 lhs, int2x2 rhs) { return new int2x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int2x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator ^ (int2x2 lhs, int rhs) { return new int2x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 operator ^ (int lhs, int2x2 rhs) { return new int2x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); } + + + + /// Returns the int2 element at a specified index. + unsafe public ref int2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (int2x2* array = &this) { return ref ((int2*)array)[index]; } + } + } + + /// Returns true if the int2x2 is equal to a given int2x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int2x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the int2x2 is equal to a given int2x2, false otherwise. + public override bool Equals(object o) { return Equals((int2x2)o); } + + + /// Returns a hash code for the int2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int2x2({0}, {1}, {2}, {3})", c0.x, c1.x, c0.y, c1.y); + } + + /// Returns a string representation of the int2x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int2x2({0}, {1}, {2}, {3})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a int2x2 matrix constructed from two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(int2 c0, int2 c1) { return new int2x2(c0, c1); } + + /// Returns a int2x2 matrix constructed from from 4 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(int m00, int m01, + int m10, int m11) + { + return new int2x2(m00, m01, + m10, m11); + } + + /// Returns a int2x2 matrix constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(int v) { return new int2x2(v); } + + /// Returns a int2x2 matrix constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(bool v) { return new int2x2(v); } + + /// Return a int2x2 matrix constructed from a bool2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(bool2x2 v) { return new int2x2(v); } + + /// Returns a int2x2 matrix constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(uint v) { return new int2x2(v); } + + /// Return a int2x2 matrix constructed from a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(uint2x2 v) { return new int2x2(v); } + + /// Returns a int2x2 matrix constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(float v) { return new int2x2(v); } + + /// Return a int2x2 matrix constructed from a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(float2x2 v) { return new int2x2(v); } + + /// Returns a int2x2 matrix constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(double v) { return new int2x2(v); } + + /// Return a int2x2 matrix constructed from a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 int2x2(double2x2 v) { return new int2x2(v); } + + /// Return the int2x2 transpose of a int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 transpose(int2x2 v) + { + return int2x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y); + } + + /// Returns the determinant of a int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int determinant(int2x2 m) + { + int a = m.c0.x; + int b = m.c1.x; + int c = m.c0.y; + int d = m.c1.y; + + return a * d - b * c; + } + + /// Returns a uint hash code of a int2x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int2x2 v) + { + return csum(asuint(v.c0) * uint2(0xE191B035u, 0x68586FAFu) + + asuint(v.c1) * uint2(0xD4DFF6D3u, 0xCB634F4Du)) + 0x9B13B92Du; + } + + /// + /// Returns a uint2 vector hash code of a int2x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(int2x2 v) + { + return (asuint(v.c0) * uint2(0x4ABF0813u, 0x86068063u) + + asuint(v.c1) * uint2(0xD75513F9u, 0x5AB3E8CDu)) + 0x676E8407u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x2.gen.cs.meta new file mode 100644 index 0000000..a9650df --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ee90f66ec9324008b40d056f2a6fd46 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x3.gen.cs new file mode 100644 index 0000000..500a949 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x3.gen.cs @@ -0,0 +1,506 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct int2x3 : System.IEquatable, IFormattable + { + public int2 c0; + public int2 c1; + public int2 c2; + + /// int2x3 zero value. + public static readonly int2x3 zero; + + /// Constructs a int2x3 matrix from three int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(int2 c0, int2 c1, int2 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a int2x3 matrix from 6 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(int m00, int m01, int m02, + int m10, int m11, int m12) + { + this.c0 = new int2(m00, m10); + this.c1 = new int2(m01, m11); + this.c2 = new int2(m02, m12); + } + + /// Constructs a int2x3 matrix from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a int2x3 matrix from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(bool v) + { + this.c0 = math.select(new int2(0), new int2(1), v); + this.c1 = math.select(new int2(0), new int2(1), v); + this.c2 = math.select(new int2(0), new int2(1), v); + } + + /// Constructs a int2x3 matrix from a bool2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(bool2x3 v) + { + this.c0 = math.select(new int2(0), new int2(1), v.c0); + this.c1 = math.select(new int2(0), new int2(1), v.c1); + this.c2 = math.select(new int2(0), new int2(1), v.c2); + } + + /// Constructs a int2x3 matrix from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(uint v) + { + this.c0 = (int2)v; + this.c1 = (int2)v; + this.c2 = (int2)v; + } + + /// Constructs a int2x3 matrix from a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(uint2x3 v) + { + this.c0 = (int2)v.c0; + this.c1 = (int2)v.c1; + this.c2 = (int2)v.c2; + } + + /// Constructs a int2x3 matrix from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(float v) + { + this.c0 = (int2)v; + this.c1 = (int2)v; + this.c2 = (int2)v; + } + + /// Constructs a int2x3 matrix from a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(float2x3 v) + { + this.c0 = (int2)v.c0; + this.c1 = (int2)v.c1; + this.c2 = (int2)v.c2; + } + + /// Constructs a int2x3 matrix from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(double v) + { + this.c0 = (int2)v; + this.c1 = (int2)v; + this.c2 = (int2)v; + } + + /// Constructs a int2x3 matrix from a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x3(double2x3 v) + { + this.c0 = (int2)v.c0; + this.c1 = (int2)v.c1; + this.c2 = (int2)v.c2; + } + + + /// Implicitly converts a single int value to a int2x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int2x3(int v) { return new int2x3(v); } + + /// Explicitly converts a single bool value to a int2x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x3(bool v) { return new int2x3(v); } + + /// Explicitly converts a bool2x3 matrix to a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x3(bool2x3 v) { return new int2x3(v); } + + /// Explicitly converts a single uint value to a int2x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x3(uint v) { return new int2x3(v); } + + /// Explicitly converts a uint2x3 matrix to a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x3(uint2x3 v) { return new int2x3(v); } + + /// Explicitly converts a single float value to a int2x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x3(float v) { return new int2x3(v); } + + /// Explicitly converts a float2x3 matrix to a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x3(float2x3 v) { return new int2x3(v); } + + /// Explicitly converts a single double value to a int2x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x3(double v) { return new int2x3(v); } + + /// Explicitly converts a double2x3 matrix to a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x3(double2x3 v) { return new int2x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator * (int2x3 lhs, int2x3 rhs) { return new int2x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator * (int2x3 lhs, int rhs) { return new int2x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator * (int lhs, int2x3 rhs) { return new int2x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator + (int2x3 lhs, int2x3 rhs) { return new int2x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator + (int2x3 lhs, int rhs) { return new int2x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator + (int lhs, int2x3 rhs) { return new int2x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator - (int2x3 lhs, int2x3 rhs) { return new int2x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator - (int2x3 lhs, int rhs) { return new int2x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator - (int lhs, int2x3 rhs) { return new int2x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator / (int2x3 lhs, int2x3 rhs) { return new int2x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator / (int2x3 lhs, int rhs) { return new int2x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator / (int lhs, int2x3 rhs) { return new int2x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator % (int2x3 lhs, int2x3 rhs) { return new int2x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator % (int2x3 lhs, int rhs) { return new int2x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator % (int lhs, int2x3 rhs) { return new int2x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator ++ (int2x3 val) { return new int2x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator -- (int2x3 val) { return new int2x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (int2x3 lhs, int2x3 rhs) { return new bool2x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (int2x3 lhs, int rhs) { return new bool2x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (int lhs, int2x3 rhs) { return new bool2x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (int2x3 lhs, int2x3 rhs) { return new bool2x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (int2x3 lhs, int rhs) { return new bool2x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (int lhs, int2x3 rhs) { return new bool2x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (int2x3 lhs, int2x3 rhs) { return new bool2x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (int2x3 lhs, int rhs) { return new bool2x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (int lhs, int2x3 rhs) { return new bool2x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (int2x3 lhs, int2x3 rhs) { return new bool2x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (int2x3 lhs, int rhs) { return new bool2x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (int lhs, int2x3 rhs) { return new bool2x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator - (int2x3 val) { return new int2x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator + (int2x3 val) { return new int2x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise left shift operation on an int2x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator << (int2x3 x, int n) { return new int2x3 (x.c0 << n, x.c1 << n, x.c2 << n); } + + /// Returns the result of a componentwise right shift operation on an int2x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator >> (int2x3 x, int n) { return new int2x3 (x.c0 >> n, x.c1 >> n, x.c2 >> n); } + + /// Returns the result of a componentwise equality operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (int2x3 lhs, int2x3 rhs) { return new bool2x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (int2x3 lhs, int rhs) { return new bool2x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (int lhs, int2x3 rhs) { return new bool2x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (int2x3 lhs, int2x3 rhs) { return new bool2x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (int2x3 lhs, int rhs) { return new bool2x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (int lhs, int2x3 rhs) { return new bool2x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + /// Returns the result of a componentwise bitwise not operation on an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator ~ (int2x3 val) { return new int2x3 (~val.c0, ~val.c1, ~val.c2); } + + + /// Returns the result of a componentwise bitwise and operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator & (int2x3 lhs, int2x3 rhs) { return new int2x3 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2); } + + /// Returns the result of a componentwise bitwise and operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator & (int2x3 lhs, int rhs) { return new int2x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator & (int lhs, int2x3 rhs) { return new int2x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); } + + + /// Returns the result of a componentwise bitwise or operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator | (int2x3 lhs, int2x3 rhs) { return new int2x3 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2); } + + /// Returns the result of a componentwise bitwise or operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator | (int2x3 lhs, int rhs) { return new int2x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator | (int lhs, int2x3 rhs) { return new int2x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator ^ (int2x3 lhs, int2x3 rhs) { return new int2x3 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int2x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator ^ (int2x3 lhs, int rhs) { return new int2x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 operator ^ (int lhs, int2x3 rhs) { return new int2x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); } + + + + /// Returns the int2 element at a specified index. + unsafe public ref int2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (int2x3* array = &this) { return ref ((int2*)array)[index]; } + } + } + + /// Returns true if the int2x3 is equal to a given int2x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int2x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the int2x3 is equal to a given int2x3, false otherwise. + public override bool Equals(object o) { return Equals((int2x3)o); } + + + /// Returns a hash code for the int2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int2x3({0}, {1}, {2}, {3}, {4}, {5})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y); + } + + /// Returns a string representation of the int2x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int2x3({0}, {1}, {2}, {3}, {4}, {5})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a int2x3 matrix constructed from three int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(int2 c0, int2 c1, int2 c2) { return new int2x3(c0, c1, c2); } + + /// Returns a int2x3 matrix constructed from from 6 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(int m00, int m01, int m02, + int m10, int m11, int m12) + { + return new int2x3(m00, m01, m02, + m10, m11, m12); + } + + /// Returns a int2x3 matrix constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(int v) { return new int2x3(v); } + + /// Returns a int2x3 matrix constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(bool v) { return new int2x3(v); } + + /// Return a int2x3 matrix constructed from a bool2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(bool2x3 v) { return new int2x3(v); } + + /// Returns a int2x3 matrix constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(uint v) { return new int2x3(v); } + + /// Return a int2x3 matrix constructed from a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(uint2x3 v) { return new int2x3(v); } + + /// Returns a int2x3 matrix constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(float v) { return new int2x3(v); } + + /// Return a int2x3 matrix constructed from a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(float2x3 v) { return new int2x3(v); } + + /// Returns a int2x3 matrix constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(double v) { return new int2x3(v); } + + /// Return a int2x3 matrix constructed from a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 int2x3(double2x3 v) { return new int2x3(v); } + + /// Return the int3x2 transpose of a int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 transpose(int2x3 v) + { + return int3x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y); + } + + /// Returns a uint hash code of a int2x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int2x3 v) + { + return csum(asuint(v.c0) * uint2(0xCAE78587u, 0x7A1541C9u) + + asuint(v.c1) * uint2(0xF83BD927u, 0x6A243BCBu) + + asuint(v.c2) * uint2(0x509B84C9u, 0x91D13847u)) + 0x52F7230Fu; + } + + /// + /// Returns a uint2 vector hash code of a int2x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(int2x3 v) + { + return (asuint(v.c0) * uint2(0xCF286E83u, 0xE121E6ADu) + + asuint(v.c1) * uint2(0xC9CA1249u, 0x69B60C81u) + + asuint(v.c2) * uint2(0xE0EB6C25u, 0xF648BEABu)) + 0x6BDB2B07u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x3.gen.cs.meta new file mode 100644 index 0000000..e1ae9c2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 34b460e6ab4e94f68b249b11a8f71131 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x4.gen.cs new file mode 100644 index 0000000..3bab0cd --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x4.gen.cs @@ -0,0 +1,521 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct int2x4 : System.IEquatable, IFormattable + { + public int2 c0; + public int2 c1; + public int2 c2; + public int2 c3; + + /// int2x4 zero value. + public static readonly int2x4 zero; + + /// Constructs a int2x4 matrix from four int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(int2 c0, int2 c1, int2 c2, int2 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a int2x4 matrix from 8 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(int m00, int m01, int m02, int m03, + int m10, int m11, int m12, int m13) + { + this.c0 = new int2(m00, m10); + this.c1 = new int2(m01, m11); + this.c2 = new int2(m02, m12); + this.c3 = new int2(m03, m13); + } + + /// Constructs a int2x4 matrix from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a int2x4 matrix from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(bool v) + { + this.c0 = math.select(new int2(0), new int2(1), v); + this.c1 = math.select(new int2(0), new int2(1), v); + this.c2 = math.select(new int2(0), new int2(1), v); + this.c3 = math.select(new int2(0), new int2(1), v); + } + + /// Constructs a int2x4 matrix from a bool2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(bool2x4 v) + { + this.c0 = math.select(new int2(0), new int2(1), v.c0); + this.c1 = math.select(new int2(0), new int2(1), v.c1); + this.c2 = math.select(new int2(0), new int2(1), v.c2); + this.c3 = math.select(new int2(0), new int2(1), v.c3); + } + + /// Constructs a int2x4 matrix from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(uint v) + { + this.c0 = (int2)v; + this.c1 = (int2)v; + this.c2 = (int2)v; + this.c3 = (int2)v; + } + + /// Constructs a int2x4 matrix from a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(uint2x4 v) + { + this.c0 = (int2)v.c0; + this.c1 = (int2)v.c1; + this.c2 = (int2)v.c2; + this.c3 = (int2)v.c3; + } + + /// Constructs a int2x4 matrix from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(float v) + { + this.c0 = (int2)v; + this.c1 = (int2)v; + this.c2 = (int2)v; + this.c3 = (int2)v; + } + + /// Constructs a int2x4 matrix from a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(float2x4 v) + { + this.c0 = (int2)v.c0; + this.c1 = (int2)v.c1; + this.c2 = (int2)v.c2; + this.c3 = (int2)v.c3; + } + + /// Constructs a int2x4 matrix from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(double v) + { + this.c0 = (int2)v; + this.c1 = (int2)v; + this.c2 = (int2)v; + this.c3 = (int2)v; + } + + /// Constructs a int2x4 matrix from a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2x4(double2x4 v) + { + this.c0 = (int2)v.c0; + this.c1 = (int2)v.c1; + this.c2 = (int2)v.c2; + this.c3 = (int2)v.c3; + } + + + /// Implicitly converts a single int value to a int2x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int2x4(int v) { return new int2x4(v); } + + /// Explicitly converts a single bool value to a int2x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x4(bool v) { return new int2x4(v); } + + /// Explicitly converts a bool2x4 matrix to a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x4(bool2x4 v) { return new int2x4(v); } + + /// Explicitly converts a single uint value to a int2x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x4(uint v) { return new int2x4(v); } + + /// Explicitly converts a uint2x4 matrix to a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x4(uint2x4 v) { return new int2x4(v); } + + /// Explicitly converts a single float value to a int2x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x4(float v) { return new int2x4(v); } + + /// Explicitly converts a float2x4 matrix to a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x4(float2x4 v) { return new int2x4(v); } + + /// Explicitly converts a single double value to a int2x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x4(double v) { return new int2x4(v); } + + /// Explicitly converts a double2x4 matrix to a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int2x4(double2x4 v) { return new int2x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator * (int2x4 lhs, int2x4 rhs) { return new int2x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator * (int2x4 lhs, int rhs) { return new int2x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator * (int lhs, int2x4 rhs) { return new int2x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator + (int2x4 lhs, int2x4 rhs) { return new int2x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator + (int2x4 lhs, int rhs) { return new int2x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator + (int lhs, int2x4 rhs) { return new int2x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator - (int2x4 lhs, int2x4 rhs) { return new int2x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator - (int2x4 lhs, int rhs) { return new int2x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator - (int lhs, int2x4 rhs) { return new int2x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator / (int2x4 lhs, int2x4 rhs) { return new int2x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator / (int2x4 lhs, int rhs) { return new int2x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator / (int lhs, int2x4 rhs) { return new int2x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator % (int2x4 lhs, int2x4 rhs) { return new int2x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator % (int2x4 lhs, int rhs) { return new int2x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator % (int lhs, int2x4 rhs) { return new int2x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator ++ (int2x4 val) { return new int2x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator -- (int2x4 val) { return new int2x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (int2x4 lhs, int2x4 rhs) { return new bool2x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (int2x4 lhs, int rhs) { return new bool2x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (int lhs, int2x4 rhs) { return new bool2x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (int2x4 lhs, int2x4 rhs) { return new bool2x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (int2x4 lhs, int rhs) { return new bool2x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (int lhs, int2x4 rhs) { return new bool2x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (int2x4 lhs, int2x4 rhs) { return new bool2x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (int2x4 lhs, int rhs) { return new bool2x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (int lhs, int2x4 rhs) { return new bool2x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (int2x4 lhs, int2x4 rhs) { return new bool2x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (int2x4 lhs, int rhs) { return new bool2x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (int lhs, int2x4 rhs) { return new bool2x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator - (int2x4 val) { return new int2x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator + (int2x4 val) { return new int2x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise left shift operation on an int2x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator << (int2x4 x, int n) { return new int2x4 (x.c0 << n, x.c1 << n, x.c2 << n, x.c3 << n); } + + /// Returns the result of a componentwise right shift operation on an int2x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator >> (int2x4 x, int n) { return new int2x4 (x.c0 >> n, x.c1 >> n, x.c2 >> n, x.c3 >> n); } + + /// Returns the result of a componentwise equality operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (int2x4 lhs, int2x4 rhs) { return new bool2x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (int2x4 lhs, int rhs) { return new bool2x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (int lhs, int2x4 rhs) { return new bool2x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (int2x4 lhs, int2x4 rhs) { return new bool2x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (int2x4 lhs, int rhs) { return new bool2x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (int lhs, int2x4 rhs) { return new bool2x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + /// Returns the result of a componentwise bitwise not operation on an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator ~ (int2x4 val) { return new int2x4 (~val.c0, ~val.c1, ~val.c2, ~val.c3); } + + + /// Returns the result of a componentwise bitwise and operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator & (int2x4 lhs, int2x4 rhs) { return new int2x4 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2, lhs.c3 & rhs.c3); } + + /// Returns the result of a componentwise bitwise and operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator & (int2x4 lhs, int rhs) { return new int2x4 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs, lhs.c3 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator & (int lhs, int2x4 rhs) { return new int2x4 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2, lhs & rhs.c3); } + + + /// Returns the result of a componentwise bitwise or operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator | (int2x4 lhs, int2x4 rhs) { return new int2x4 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2, lhs.c3 | rhs.c3); } + + /// Returns the result of a componentwise bitwise or operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator | (int2x4 lhs, int rhs) { return new int2x4 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs, lhs.c3 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator | (int lhs, int2x4 rhs) { return new int2x4 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2, lhs | rhs.c3); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator ^ (int2x4 lhs, int2x4 rhs) { return new int2x4 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2, lhs.c3 ^ rhs.c3); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int2x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator ^ (int2x4 lhs, int rhs) { return new int2x4 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs, lhs.c3 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 operator ^ (int lhs, int2x4 rhs) { return new int2x4 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2, lhs ^ rhs.c3); } + + + + /// Returns the int2 element at a specified index. + unsafe public ref int2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (int2x4* array = &this) { return ref ((int2*)array)[index]; } + } + } + + /// Returns true if the int2x4 is equal to a given int2x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int2x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the int2x4 is equal to a given int2x4, false otherwise. + public override bool Equals(object o) { return Equals((int2x4)o); } + + + /// Returns a hash code for the int2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int2x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y); + } + + /// Returns a string representation of the int2x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int2x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a int2x4 matrix constructed from four int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(int2 c0, int2 c1, int2 c2, int2 c3) { return new int2x4(c0, c1, c2, c3); } + + /// Returns a int2x4 matrix constructed from from 8 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(int m00, int m01, int m02, int m03, + int m10, int m11, int m12, int m13) + { + return new int2x4(m00, m01, m02, m03, + m10, m11, m12, m13); + } + + /// Returns a int2x4 matrix constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(int v) { return new int2x4(v); } + + /// Returns a int2x4 matrix constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(bool v) { return new int2x4(v); } + + /// Return a int2x4 matrix constructed from a bool2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(bool2x4 v) { return new int2x4(v); } + + /// Returns a int2x4 matrix constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(uint v) { return new int2x4(v); } + + /// Return a int2x4 matrix constructed from a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(uint2x4 v) { return new int2x4(v); } + + /// Returns a int2x4 matrix constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(float v) { return new int2x4(v); } + + /// Return a int2x4 matrix constructed from a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(float2x4 v) { return new int2x4(v); } + + /// Returns a int2x4 matrix constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(double v) { return new int2x4(v); } + + /// Return a int2x4 matrix constructed from a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 int2x4(double2x4 v) { return new int2x4(v); } + + /// Return the int4x2 transpose of a int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 transpose(int2x4 v) + { + return int4x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y, + v.c3.x, v.c3.y); + } + + /// Returns a uint hash code of a int2x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int2x4 v) + { + return csum(asuint(v.c0) * uint2(0x7AA07CD3u, 0xAF642BA9u) + + asuint(v.c1) * uint2(0xA8F2213Bu, 0x9F3FDC37u) + + asuint(v.c2) * uint2(0xAC60D0C3u, 0x9263662Fu) + + asuint(v.c3) * uint2(0xE69626FFu, 0xBD010EEBu)) + 0x9CEDE1D1u; + } + + /// + /// Returns a uint2 vector hash code of a int2x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(int2x4 v) + { + return (asuint(v.c0) * uint2(0x43BE0B51u, 0xAF836EE1u) + + asuint(v.c1) * uint2(0xB130C137u, 0x54834775u) + + asuint(v.c2) * uint2(0x7C022221u, 0xA2D00EDFu) + + asuint(v.c3) * uint2(0xA8977779u, 0x9F1C739Bu)) + 0x4B1BD187u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x4.gen.cs.meta new file mode 100644 index 0000000..7860865 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 827909947b5c9455fa16a57c0b8c55f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3.gen.cs new file mode 100644 index 0000000..897ff5d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3.gen.cs @@ -0,0 +1,1556 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(int3.DebuggerProxy))] + [System.Serializable] + public partial struct int3 : System.IEquatable, IFormattable + { + public int x; + public int y; + public int z; + + /// int3 zero value. + public static readonly int3 zero; + + /// Constructs a int3 vector from three int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(int x, int y, int z) + { + this.x = x; + this.y = y; + this.z = z; + } + + /// Constructs a int3 vector from an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(int x, int2 yz) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + } + + /// Constructs a int3 vector from an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(int2 xy, int z) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + } + + /// Constructs a int3 vector from an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(int3 xyz) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + } + + /// Constructs a int3 vector from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(int v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a int3 vector from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(bool v) + { + this.x = v ? 1 : 0; + this.y = v ? 1 : 0; + this.z = v ? 1 : 0; + } + + /// Constructs a int3 vector from a bool3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(bool3 v) + { + this.x = v.x ? 1 : 0; + this.y = v.y ? 1 : 0; + this.z = v.z ? 1 : 0; + } + + /// Constructs a int3 vector from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(uint v) + { + this.x = (int)v; + this.y = (int)v; + this.z = (int)v; + } + + /// Constructs a int3 vector from a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(uint3 v) + { + this.x = (int)v.x; + this.y = (int)v.y; + this.z = (int)v.z; + } + + /// Constructs a int3 vector from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(float v) + { + this.x = (int)v; + this.y = (int)v; + this.z = (int)v; + } + + /// Constructs a int3 vector from a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(float3 v) + { + this.x = (int)v.x; + this.y = (int)v.y; + this.z = (int)v.z; + } + + /// Constructs a int3 vector from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(double v) + { + this.x = (int)v; + this.y = (int)v; + this.z = (int)v; + } + + /// Constructs a int3 vector from a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3(double3 v) + { + this.x = (int)v.x; + this.y = (int)v.y; + this.z = (int)v.z; + } + + + /// Implicitly converts a single int value to a int3 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int3(int v) { return new int3(v); } + + /// Explicitly converts a single bool value to a int3 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3(bool v) { return new int3(v); } + + /// Explicitly converts a bool3 vector to a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3(bool3 v) { return new int3(v); } + + /// Explicitly converts a single uint value to a int3 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3(uint v) { return new int3(v); } + + /// Explicitly converts a uint3 vector to a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3(uint3 v) { return new int3(v); } + + /// Explicitly converts a single float value to a int3 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3(float v) { return new int3(v); } + + /// Explicitly converts a float3 vector to a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3(float3 v) { return new int3(v); } + + /// Explicitly converts a single double value to a int3 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3(double v) { return new int3(v); } + + /// Explicitly converts a double3 vector to a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3(double3 v) { return new int3(v); } + + + /// Returns the result of a componentwise multiplication operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator * (int3 lhs, int3 rhs) { return new int3 (lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z); } + + /// Returns the result of a componentwise multiplication operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator * (int3 lhs, int rhs) { return new int3 (lhs.x * rhs, lhs.y * rhs, lhs.z * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator * (int lhs, int3 rhs) { return new int3 (lhs * rhs.x, lhs * rhs.y, lhs * rhs.z); } + + + /// Returns the result of a componentwise addition operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator + (int3 lhs, int3 rhs) { return new int3 (lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z); } + + /// Returns the result of a componentwise addition operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator + (int3 lhs, int rhs) { return new int3 (lhs.x + rhs, lhs.y + rhs, lhs.z + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator + (int lhs, int3 rhs) { return new int3 (lhs + rhs.x, lhs + rhs.y, lhs + rhs.z); } + + + /// Returns the result of a componentwise subtraction operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator - (int3 lhs, int3 rhs) { return new int3 (lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z); } + + /// Returns the result of a componentwise subtraction operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator - (int3 lhs, int rhs) { return new int3 (lhs.x - rhs, lhs.y - rhs, lhs.z - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator - (int lhs, int3 rhs) { return new int3 (lhs - rhs.x, lhs - rhs.y, lhs - rhs.z); } + + + /// Returns the result of a componentwise division operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator / (int3 lhs, int3 rhs) { return new int3 (lhs.x / rhs.x, lhs.y / rhs.y, lhs.z / rhs.z); } + + /// Returns the result of a componentwise division operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator / (int3 lhs, int rhs) { return new int3 (lhs.x / rhs, lhs.y / rhs, lhs.z / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator / (int lhs, int3 rhs) { return new int3 (lhs / rhs.x, lhs / rhs.y, lhs / rhs.z); } + + + /// Returns the result of a componentwise modulus operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator % (int3 lhs, int3 rhs) { return new int3 (lhs.x % rhs.x, lhs.y % rhs.y, lhs.z % rhs.z); } + + /// Returns the result of a componentwise modulus operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator % (int3 lhs, int rhs) { return new int3 (lhs.x % rhs, lhs.y % rhs, lhs.z % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator % (int lhs, int3 rhs) { return new int3 (lhs % rhs.x, lhs % rhs.y, lhs % rhs.z); } + + + /// Returns the result of a componentwise increment operation on an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator ++ (int3 val) { return new int3 (++val.x, ++val.y, ++val.z); } + + + /// Returns the result of a componentwise decrement operation on an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator -- (int3 val) { return new int3 (--val.x, --val.y, --val.z); } + + + /// Returns the result of a componentwise less than operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (int3 lhs, int3 rhs) { return new bool3 (lhs.x < rhs.x, lhs.y < rhs.y, lhs.z < rhs.z); } + + /// Returns the result of a componentwise less than operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (int3 lhs, int rhs) { return new bool3 (lhs.x < rhs, lhs.y < rhs, lhs.z < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (int lhs, int3 rhs) { return new bool3 (lhs < rhs.x, lhs < rhs.y, lhs < rhs.z); } + + + /// Returns the result of a componentwise less or equal operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (int3 lhs, int3 rhs) { return new bool3 (lhs.x <= rhs.x, lhs.y <= rhs.y, lhs.z <= rhs.z); } + + /// Returns the result of a componentwise less or equal operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (int3 lhs, int rhs) { return new bool3 (lhs.x <= rhs, lhs.y <= rhs, lhs.z <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (int lhs, int3 rhs) { return new bool3 (lhs <= rhs.x, lhs <= rhs.y, lhs <= rhs.z); } + + + /// Returns the result of a componentwise greater than operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (int3 lhs, int3 rhs) { return new bool3 (lhs.x > rhs.x, lhs.y > rhs.y, lhs.z > rhs.z); } + + /// Returns the result of a componentwise greater than operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (int3 lhs, int rhs) { return new bool3 (lhs.x > rhs, lhs.y > rhs, lhs.z > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (int lhs, int3 rhs) { return new bool3 (lhs > rhs.x, lhs > rhs.y, lhs > rhs.z); } + + + /// Returns the result of a componentwise greater or equal operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (int3 lhs, int3 rhs) { return new bool3 (lhs.x >= rhs.x, lhs.y >= rhs.y, lhs.z >= rhs.z); } + + /// Returns the result of a componentwise greater or equal operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (int3 lhs, int rhs) { return new bool3 (lhs.x >= rhs, lhs.y >= rhs, lhs.z >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (int lhs, int3 rhs) { return new bool3 (lhs >= rhs.x, lhs >= rhs.y, lhs >= rhs.z); } + + + /// Returns the result of a componentwise unary minus operation on an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator - (int3 val) { return new int3 (-val.x, -val.y, -val.z); } + + + /// Returns the result of a componentwise unary plus operation on an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator + (int3 val) { return new int3 (+val.x, +val.y, +val.z); } + + + /// Returns the result of a componentwise left shift operation on an int3 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator << (int3 x, int n) { return new int3 (x.x << n, x.y << n, x.z << n); } + + /// Returns the result of a componentwise right shift operation on an int3 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator >> (int3 x, int n) { return new int3 (x.x >> n, x.y >> n, x.z >> n); } + + /// Returns the result of a componentwise equality operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (int3 lhs, int3 rhs) { return new bool3 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z); } + + /// Returns the result of a componentwise equality operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (int3 lhs, int rhs) { return new bool3 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (int lhs, int3 rhs) { return new bool3 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z); } + + + /// Returns the result of a componentwise not equal operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (int3 lhs, int3 rhs) { return new bool3 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z); } + + /// Returns the result of a componentwise not equal operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (int3 lhs, int rhs) { return new bool3 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (int lhs, int3 rhs) { return new bool3 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z); } + + + /// Returns the result of a componentwise bitwise not operation on an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator ~ (int3 val) { return new int3 (~val.x, ~val.y, ~val.z); } + + + /// Returns the result of a componentwise bitwise and operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator & (int3 lhs, int3 rhs) { return new int3 (lhs.x & rhs.x, lhs.y & rhs.y, lhs.z & rhs.z); } + + /// Returns the result of a componentwise bitwise and operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator & (int3 lhs, int rhs) { return new int3 (lhs.x & rhs, lhs.y & rhs, lhs.z & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator & (int lhs, int3 rhs) { return new int3 (lhs & rhs.x, lhs & rhs.y, lhs & rhs.z); } + + + /// Returns the result of a componentwise bitwise or operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator | (int3 lhs, int3 rhs) { return new int3 (lhs.x | rhs.x, lhs.y | rhs.y, lhs.z | rhs.z); } + + /// Returns the result of a componentwise bitwise or operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator | (int3 lhs, int rhs) { return new int3 (lhs.x | rhs, lhs.y | rhs, lhs.z | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator | (int lhs, int3 rhs) { return new int3 (lhs | rhs.x, lhs | rhs.y, lhs | rhs.z); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator ^ (int3 lhs, int3 rhs) { return new int3 (lhs.x ^ rhs.x, lhs.y ^ rhs.y, lhs.z ^ rhs.z); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator ^ (int3 lhs, int rhs) { return new int3 (lhs.x ^ rhs, lhs.y ^ rhs, lhs.z ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 operator ^ (int lhs, int3 rhs) { return new int3 (lhs ^ rhs.x, lhs ^ rhs.y, lhs ^ rhs.z); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(z, z); } + } + + + + /// Returns the int element at a specified index. + unsafe public int this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (int3* array = &this) { return ((int*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (int* array = &x) { array[index] = value; } + } + } + + /// Returns true if the int3 is equal to a given int3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int3 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z; } + + /// Returns true if the int3 is equal to a given int3, false otherwise. + public override bool Equals(object o) { return Equals((int3)o); } + + + /// Returns a hash code for the int3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int3({0}, {1}, {2})", x, y, z); + } + + /// Returns a string representation of the int3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int3({0}, {1}, {2})", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public int x; + public int y; + public int z; + public DebuggerProxy(int3 v) + { + x = v.x; + y = v.y; + z = v.z; + } + } + + } + + public static partial class math + { + /// Returns a int3 vector constructed from three int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(int x, int y, int z) { return new int3(x, y, z); } + + /// Returns a int3 vector constructed from an int value and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(int x, int2 yz) { return new int3(x, yz); } + + /// Returns a int3 vector constructed from an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(int2 xy, int z) { return new int3(xy, z); } + + /// Returns a int3 vector constructed from an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(int3 xyz) { return new int3(xyz); } + + /// Returns a int3 vector constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(int v) { return new int3(v); } + + /// Returns a int3 vector constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(bool v) { return new int3(v); } + + /// Return a int3 vector constructed from a bool3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(bool3 v) { return new int3(v); } + + /// Returns a int3 vector constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(uint v) { return new int3(v); } + + /// Return a int3 vector constructed from a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(uint3 v) { return new int3(v); } + + /// Returns a int3 vector constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(float v) { return new int3(v); } + + /// Return a int3 vector constructed from a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(float3 v) { return new int3(v); } + + /// Returns a int3 vector constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(double v) { return new int3(v); } + + /// Return a int3 vector constructed from a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 int3(double3 v) { return new int3(v); } + + /// Returns a uint hash code of a int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int3 v) + { + return csum(asuint(v) * uint3(0x4C7F6DD1u, 0x4822A3E9u, 0xAAC3C25Du)) + 0xD21D0945u; + } + + /// + /// Returns a uint3 vector hash code of a int3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(int3 v) + { + return (asuint(v) * uint3(0x88FCAB2Du, 0x614DA60Du, 0x5BA2C50Bu)) + 0x8C455ACBu; + } + + /// Returns the result of specified shuffling of the components from two int3 vectors into an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int shuffle(int3 a, int3 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two int3 vectors into an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 shuffle(int3 a, int3 b, ShuffleComponent x, ShuffleComponent y) + { + return int2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two int3 vectors into an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 shuffle(int3 a, int3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return int3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two int3 vectors into an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 shuffle(int3 a, int3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return int4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static int select_shuffle_component(int3 a, int3 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3.gen.cs.meta new file mode 100644 index 0000000..020e850 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87ec2d8734054e84fa6976e8e8d4decf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x2.gen.cs new file mode 100644 index 0000000..c917037 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x2.gen.cs @@ -0,0 +1,494 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct int3x2 : System.IEquatable, IFormattable + { + public int3 c0; + public int3 c1; + + /// int3x2 zero value. + public static readonly int3x2 zero; + + /// Constructs a int3x2 matrix from two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(int3 c0, int3 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a int3x2 matrix from 6 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(int m00, int m01, + int m10, int m11, + int m20, int m21) + { + this.c0 = new int3(m00, m10, m20); + this.c1 = new int3(m01, m11, m21); + } + + /// Constructs a int3x2 matrix from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(int v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a int3x2 matrix from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(bool v) + { + this.c0 = math.select(new int3(0), new int3(1), v); + this.c1 = math.select(new int3(0), new int3(1), v); + } + + /// Constructs a int3x2 matrix from a bool3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(bool3x2 v) + { + this.c0 = math.select(new int3(0), new int3(1), v.c0); + this.c1 = math.select(new int3(0), new int3(1), v.c1); + } + + /// Constructs a int3x2 matrix from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(uint v) + { + this.c0 = (int3)v; + this.c1 = (int3)v; + } + + /// Constructs a int3x2 matrix from a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(uint3x2 v) + { + this.c0 = (int3)v.c0; + this.c1 = (int3)v.c1; + } + + /// Constructs a int3x2 matrix from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(float v) + { + this.c0 = (int3)v; + this.c1 = (int3)v; + } + + /// Constructs a int3x2 matrix from a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(float3x2 v) + { + this.c0 = (int3)v.c0; + this.c1 = (int3)v.c1; + } + + /// Constructs a int3x2 matrix from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(double v) + { + this.c0 = (int3)v; + this.c1 = (int3)v; + } + + /// Constructs a int3x2 matrix from a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x2(double3x2 v) + { + this.c0 = (int3)v.c0; + this.c1 = (int3)v.c1; + } + + + /// Implicitly converts a single int value to a int3x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int3x2(int v) { return new int3x2(v); } + + /// Explicitly converts a single bool value to a int3x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x2(bool v) { return new int3x2(v); } + + /// Explicitly converts a bool3x2 matrix to a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x2(bool3x2 v) { return new int3x2(v); } + + /// Explicitly converts a single uint value to a int3x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x2(uint v) { return new int3x2(v); } + + /// Explicitly converts a uint3x2 matrix to a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x2(uint3x2 v) { return new int3x2(v); } + + /// Explicitly converts a single float value to a int3x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x2(float v) { return new int3x2(v); } + + /// Explicitly converts a float3x2 matrix to a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x2(float3x2 v) { return new int3x2(v); } + + /// Explicitly converts a single double value to a int3x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x2(double v) { return new int3x2(v); } + + /// Explicitly converts a double3x2 matrix to a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x2(double3x2 v) { return new int3x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator * (int3x2 lhs, int3x2 rhs) { return new int3x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator * (int3x2 lhs, int rhs) { return new int3x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator * (int lhs, int3x2 rhs) { return new int3x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator + (int3x2 lhs, int3x2 rhs) { return new int3x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator + (int3x2 lhs, int rhs) { return new int3x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator + (int lhs, int3x2 rhs) { return new int3x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator - (int3x2 lhs, int3x2 rhs) { return new int3x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator - (int3x2 lhs, int rhs) { return new int3x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator - (int lhs, int3x2 rhs) { return new int3x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator / (int3x2 lhs, int3x2 rhs) { return new int3x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator / (int3x2 lhs, int rhs) { return new int3x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator / (int lhs, int3x2 rhs) { return new int3x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator % (int3x2 lhs, int3x2 rhs) { return new int3x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator % (int3x2 lhs, int rhs) { return new int3x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator % (int lhs, int3x2 rhs) { return new int3x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator ++ (int3x2 val) { return new int3x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator -- (int3x2 val) { return new int3x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (int3x2 lhs, int3x2 rhs) { return new bool3x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (int3x2 lhs, int rhs) { return new bool3x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (int lhs, int3x2 rhs) { return new bool3x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (int3x2 lhs, int3x2 rhs) { return new bool3x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (int3x2 lhs, int rhs) { return new bool3x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (int lhs, int3x2 rhs) { return new bool3x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (int3x2 lhs, int3x2 rhs) { return new bool3x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (int3x2 lhs, int rhs) { return new bool3x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (int lhs, int3x2 rhs) { return new bool3x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (int3x2 lhs, int3x2 rhs) { return new bool3x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (int3x2 lhs, int rhs) { return new bool3x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (int lhs, int3x2 rhs) { return new bool3x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator - (int3x2 val) { return new int3x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator + (int3x2 val) { return new int3x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise left shift operation on an int3x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator << (int3x2 x, int n) { return new int3x2 (x.c0 << n, x.c1 << n); } + + /// Returns the result of a componentwise right shift operation on an int3x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator >> (int3x2 x, int n) { return new int3x2 (x.c0 >> n, x.c1 >> n); } + + /// Returns the result of a componentwise equality operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (int3x2 lhs, int3x2 rhs) { return new bool3x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (int3x2 lhs, int rhs) { return new bool3x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (int lhs, int3x2 rhs) { return new bool3x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (int3x2 lhs, int3x2 rhs) { return new bool3x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (int3x2 lhs, int rhs) { return new bool3x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (int lhs, int3x2 rhs) { return new bool3x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + /// Returns the result of a componentwise bitwise not operation on an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator ~ (int3x2 val) { return new int3x2 (~val.c0, ~val.c1); } + + + /// Returns the result of a componentwise bitwise and operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator & (int3x2 lhs, int3x2 rhs) { return new int3x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); } + + /// Returns the result of a componentwise bitwise and operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator & (int3x2 lhs, int rhs) { return new int3x2 (lhs.c0 & rhs, lhs.c1 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator & (int lhs, int3x2 rhs) { return new int3x2 (lhs & rhs.c0, lhs & rhs.c1); } + + + /// Returns the result of a componentwise bitwise or operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator | (int3x2 lhs, int3x2 rhs) { return new int3x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); } + + /// Returns the result of a componentwise bitwise or operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator | (int3x2 lhs, int rhs) { return new int3x2 (lhs.c0 | rhs, lhs.c1 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator | (int lhs, int3x2 rhs) { return new int3x2 (lhs | rhs.c0, lhs | rhs.c1); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator ^ (int3x2 lhs, int3x2 rhs) { return new int3x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int3x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator ^ (int3x2 lhs, int rhs) { return new int3x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 operator ^ (int lhs, int3x2 rhs) { return new int3x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); } + + + + /// Returns the int3 element at a specified index. + unsafe public ref int3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (int3x2* array = &this) { return ref ((int3*)array)[index]; } + } + } + + /// Returns true if the int3x2 is equal to a given int3x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int3x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the int3x2 is equal to a given int3x2, false otherwise. + public override bool Equals(object o) { return Equals((int3x2)o); } + + + /// Returns a hash code for the int3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int3x2({0}, {1}, {2}, {3}, {4}, {5})", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z); + } + + /// Returns a string representation of the int3x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int3x2({0}, {1}, {2}, {3}, {4}, {5})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a int3x2 matrix constructed from two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(int3 c0, int3 c1) { return new int3x2(c0, c1); } + + /// Returns a int3x2 matrix constructed from from 6 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(int m00, int m01, + int m10, int m11, + int m20, int m21) + { + return new int3x2(m00, m01, + m10, m11, + m20, m21); + } + + /// Returns a int3x2 matrix constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(int v) { return new int3x2(v); } + + /// Returns a int3x2 matrix constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(bool v) { return new int3x2(v); } + + /// Return a int3x2 matrix constructed from a bool3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(bool3x2 v) { return new int3x2(v); } + + /// Returns a int3x2 matrix constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(uint v) { return new int3x2(v); } + + /// Return a int3x2 matrix constructed from a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(uint3x2 v) { return new int3x2(v); } + + /// Returns a int3x2 matrix constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(float v) { return new int3x2(v); } + + /// Return a int3x2 matrix constructed from a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(float3x2 v) { return new int3x2(v); } + + /// Returns a int3x2 matrix constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(double v) { return new int3x2(v); } + + /// Return a int3x2 matrix constructed from a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 int3x2(double3x2 v) { return new int3x2(v); } + + /// Return the int2x3 transpose of a int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 transpose(int3x2 v) + { + return int2x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z); + } + + /// Returns a uint hash code of a int3x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int3x2 v) + { + return csum(asuint(v.c0) * uint3(0xDB3DE101u, 0x7B6D1B4Bu, 0x58399E77u) + + asuint(v.c1) * uint3(0x5EAC29C9u, 0xFC6014F9u, 0x6BF6693Fu)) + 0x9D1B1D9Bu; + } + + /// + /// Returns a uint3 vector hash code of a int3x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(int3x2 v) + { + return (asuint(v.c0) * uint3(0xF842F5C1u, 0xA47EC335u, 0xA477DF57u) + + asuint(v.c1) * uint3(0xC4B1493Fu, 0xBA0966D3u, 0xAFBEE253u)) + 0x5B419C01u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x2.gen.cs.meta new file mode 100644 index 0000000..0b36141 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6ddb7ba42f65c4292afd32dd847c8d3e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x3.gen.cs new file mode 100644 index 0000000..0032e45 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x3.gen.cs @@ -0,0 +1,527 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct int3x3 : System.IEquatable, IFormattable + { + public int3 c0; + public int3 c1; + public int3 c2; + + /// int3x3 identity transform. + public static readonly int3x3 identity = new int3x3(1, 0, 0, 0, 1, 0, 0, 0, 1); + + /// int3x3 zero value. + public static readonly int3x3 zero; + + /// Constructs a int3x3 matrix from three int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(int3 c0, int3 c1, int3 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a int3x3 matrix from 9 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(int m00, int m01, int m02, + int m10, int m11, int m12, + int m20, int m21, int m22) + { + this.c0 = new int3(m00, m10, m20); + this.c1 = new int3(m01, m11, m21); + this.c2 = new int3(m02, m12, m22); + } + + /// Constructs a int3x3 matrix from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a int3x3 matrix from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(bool v) + { + this.c0 = math.select(new int3(0), new int3(1), v); + this.c1 = math.select(new int3(0), new int3(1), v); + this.c2 = math.select(new int3(0), new int3(1), v); + } + + /// Constructs a int3x3 matrix from a bool3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(bool3x3 v) + { + this.c0 = math.select(new int3(0), new int3(1), v.c0); + this.c1 = math.select(new int3(0), new int3(1), v.c1); + this.c2 = math.select(new int3(0), new int3(1), v.c2); + } + + /// Constructs a int3x3 matrix from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(uint v) + { + this.c0 = (int3)v; + this.c1 = (int3)v; + this.c2 = (int3)v; + } + + /// Constructs a int3x3 matrix from a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(uint3x3 v) + { + this.c0 = (int3)v.c0; + this.c1 = (int3)v.c1; + this.c2 = (int3)v.c2; + } + + /// Constructs a int3x3 matrix from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(float v) + { + this.c0 = (int3)v; + this.c1 = (int3)v; + this.c2 = (int3)v; + } + + /// Constructs a int3x3 matrix from a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(float3x3 v) + { + this.c0 = (int3)v.c0; + this.c1 = (int3)v.c1; + this.c2 = (int3)v.c2; + } + + /// Constructs a int3x3 matrix from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(double v) + { + this.c0 = (int3)v; + this.c1 = (int3)v; + this.c2 = (int3)v; + } + + /// Constructs a int3x3 matrix from a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x3(double3x3 v) + { + this.c0 = (int3)v.c0; + this.c1 = (int3)v.c1; + this.c2 = (int3)v.c2; + } + + + /// Implicitly converts a single int value to a int3x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int3x3(int v) { return new int3x3(v); } + + /// Explicitly converts a single bool value to a int3x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x3(bool v) { return new int3x3(v); } + + /// Explicitly converts a bool3x3 matrix to a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x3(bool3x3 v) { return new int3x3(v); } + + /// Explicitly converts a single uint value to a int3x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x3(uint v) { return new int3x3(v); } + + /// Explicitly converts a uint3x3 matrix to a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x3(uint3x3 v) { return new int3x3(v); } + + /// Explicitly converts a single float value to a int3x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x3(float v) { return new int3x3(v); } + + /// Explicitly converts a float3x3 matrix to a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x3(float3x3 v) { return new int3x3(v); } + + /// Explicitly converts a single double value to a int3x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x3(double v) { return new int3x3(v); } + + /// Explicitly converts a double3x3 matrix to a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x3(double3x3 v) { return new int3x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator * (int3x3 lhs, int3x3 rhs) { return new int3x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator * (int3x3 lhs, int rhs) { return new int3x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator * (int lhs, int3x3 rhs) { return new int3x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator + (int3x3 lhs, int3x3 rhs) { return new int3x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator + (int3x3 lhs, int rhs) { return new int3x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator + (int lhs, int3x3 rhs) { return new int3x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator - (int3x3 lhs, int3x3 rhs) { return new int3x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator - (int3x3 lhs, int rhs) { return new int3x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator - (int lhs, int3x3 rhs) { return new int3x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator / (int3x3 lhs, int3x3 rhs) { return new int3x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator / (int3x3 lhs, int rhs) { return new int3x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator / (int lhs, int3x3 rhs) { return new int3x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator % (int3x3 lhs, int3x3 rhs) { return new int3x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator % (int3x3 lhs, int rhs) { return new int3x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator % (int lhs, int3x3 rhs) { return new int3x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator ++ (int3x3 val) { return new int3x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator -- (int3x3 val) { return new int3x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (int3x3 lhs, int3x3 rhs) { return new bool3x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (int3x3 lhs, int rhs) { return new bool3x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (int lhs, int3x3 rhs) { return new bool3x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (int3x3 lhs, int3x3 rhs) { return new bool3x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (int3x3 lhs, int rhs) { return new bool3x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (int lhs, int3x3 rhs) { return new bool3x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (int3x3 lhs, int3x3 rhs) { return new bool3x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (int3x3 lhs, int rhs) { return new bool3x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (int lhs, int3x3 rhs) { return new bool3x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (int3x3 lhs, int3x3 rhs) { return new bool3x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (int3x3 lhs, int rhs) { return new bool3x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (int lhs, int3x3 rhs) { return new bool3x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator - (int3x3 val) { return new int3x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator + (int3x3 val) { return new int3x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise left shift operation on an int3x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator << (int3x3 x, int n) { return new int3x3 (x.c0 << n, x.c1 << n, x.c2 << n); } + + /// Returns the result of a componentwise right shift operation on an int3x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator >> (int3x3 x, int n) { return new int3x3 (x.c0 >> n, x.c1 >> n, x.c2 >> n); } + + /// Returns the result of a componentwise equality operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (int3x3 lhs, int3x3 rhs) { return new bool3x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (int3x3 lhs, int rhs) { return new bool3x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (int lhs, int3x3 rhs) { return new bool3x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (int3x3 lhs, int3x3 rhs) { return new bool3x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (int3x3 lhs, int rhs) { return new bool3x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (int lhs, int3x3 rhs) { return new bool3x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + /// Returns the result of a componentwise bitwise not operation on an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator ~ (int3x3 val) { return new int3x3 (~val.c0, ~val.c1, ~val.c2); } + + + /// Returns the result of a componentwise bitwise and operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator & (int3x3 lhs, int3x3 rhs) { return new int3x3 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2); } + + /// Returns the result of a componentwise bitwise and operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator & (int3x3 lhs, int rhs) { return new int3x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator & (int lhs, int3x3 rhs) { return new int3x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); } + + + /// Returns the result of a componentwise bitwise or operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator | (int3x3 lhs, int3x3 rhs) { return new int3x3 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2); } + + /// Returns the result of a componentwise bitwise or operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator | (int3x3 lhs, int rhs) { return new int3x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator | (int lhs, int3x3 rhs) { return new int3x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator ^ (int3x3 lhs, int3x3 rhs) { return new int3x3 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int3x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator ^ (int3x3 lhs, int rhs) { return new int3x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 operator ^ (int lhs, int3x3 rhs) { return new int3x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); } + + + + /// Returns the int3 element at a specified index. + unsafe public ref int3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (int3x3* array = &this) { return ref ((int3*)array)[index]; } + } + } + + /// Returns true if the int3x3 is equal to a given int3x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int3x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the int3x3 is equal to a given int3x3, false otherwise. + public override bool Equals(object o) { return Equals((int3x3)o); } + + + /// Returns a hash code for the int3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int3x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z); + } + + /// Returns a string representation of the int3x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int3x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a int3x3 matrix constructed from three int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(int3 c0, int3 c1, int3 c2) { return new int3x3(c0, c1, c2); } + + /// Returns a int3x3 matrix constructed from from 9 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(int m00, int m01, int m02, + int m10, int m11, int m12, + int m20, int m21, int m22) + { + return new int3x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22); + } + + /// Returns a int3x3 matrix constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(int v) { return new int3x3(v); } + + /// Returns a int3x3 matrix constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(bool v) { return new int3x3(v); } + + /// Return a int3x3 matrix constructed from a bool3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(bool3x3 v) { return new int3x3(v); } + + /// Returns a int3x3 matrix constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(uint v) { return new int3x3(v); } + + /// Return a int3x3 matrix constructed from a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(uint3x3 v) { return new int3x3(v); } + + /// Returns a int3x3 matrix constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(float v) { return new int3x3(v); } + + /// Return a int3x3 matrix constructed from a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(float3x3 v) { return new int3x3(v); } + + /// Returns a int3x3 matrix constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(double v) { return new int3x3(v); } + + /// Return a int3x3 matrix constructed from a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 int3x3(double3x3 v) { return new int3x3(v); } + + /// Return the int3x3 transpose of a int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 transpose(int3x3 v) + { + return int3x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z); + } + + /// Returns the determinant of a int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int determinant(int3x3 m) + { + int3 c0 = m.c0; + int3 c1 = m.c1; + int3 c2 = m.c2; + + int m00 = c1.y * c2.z - c1.z * c2.y; + int m01 = c0.y * c2.z - c0.z * c2.y; + int m02 = c0.y * c1.z - c0.z * c1.y; + + return c0.x * m00 - c1.x * m01 + c2.x * m02; + } + + /// Returns a uint hash code of a int3x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int3x3 v) + { + return csum(asuint(v.c0) * uint3(0x93C30C2Bu, 0xDCAF0351u, 0x6E050B01u) + + asuint(v.c1) * uint3(0x750FDBF5u, 0x7F3DD499u, 0x52EAAEBBu) + + asuint(v.c2) * uint3(0x4599C793u, 0x83B5E729u, 0xC267163Fu)) + 0x67BC9149u; + } + + /// + /// Returns a uint3 vector hash code of a int3x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(int3x3 v) + { + return (asuint(v.c0) * uint3(0xAD7C5EC1u, 0x822A7D6Du, 0xB492BF15u) + + asuint(v.c1) * uint3(0xD37220E3u, 0x7AA2C2BDu, 0xE16BC89Du) + + asuint(v.c2) * uint3(0x7AA07CD3u, 0xAF642BA9u, 0xA8F2213Bu)) + 0x9F3FDC37u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x3.gen.cs.meta new file mode 100644 index 0000000..c29c0bc --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 217c0fb9c97594ff38dc97fdce4fc117 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x4.gen.cs new file mode 100644 index 0000000..788f3d3 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x4.gen.cs @@ -0,0 +1,524 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct int3x4 : System.IEquatable, IFormattable + { + public int3 c0; + public int3 c1; + public int3 c2; + public int3 c3; + + /// int3x4 zero value. + public static readonly int3x4 zero; + + /// Constructs a int3x4 matrix from four int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(int3 c0, int3 c1, int3 c2, int3 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a int3x4 matrix from 12 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(int m00, int m01, int m02, int m03, + int m10, int m11, int m12, int m13, + int m20, int m21, int m22, int m23) + { + this.c0 = new int3(m00, m10, m20); + this.c1 = new int3(m01, m11, m21); + this.c2 = new int3(m02, m12, m22); + this.c3 = new int3(m03, m13, m23); + } + + /// Constructs a int3x4 matrix from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a int3x4 matrix from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(bool v) + { + this.c0 = math.select(new int3(0), new int3(1), v); + this.c1 = math.select(new int3(0), new int3(1), v); + this.c2 = math.select(new int3(0), new int3(1), v); + this.c3 = math.select(new int3(0), new int3(1), v); + } + + /// Constructs a int3x4 matrix from a bool3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(bool3x4 v) + { + this.c0 = math.select(new int3(0), new int3(1), v.c0); + this.c1 = math.select(new int3(0), new int3(1), v.c1); + this.c2 = math.select(new int3(0), new int3(1), v.c2); + this.c3 = math.select(new int3(0), new int3(1), v.c3); + } + + /// Constructs a int3x4 matrix from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(uint v) + { + this.c0 = (int3)v; + this.c1 = (int3)v; + this.c2 = (int3)v; + this.c3 = (int3)v; + } + + /// Constructs a int3x4 matrix from a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(uint3x4 v) + { + this.c0 = (int3)v.c0; + this.c1 = (int3)v.c1; + this.c2 = (int3)v.c2; + this.c3 = (int3)v.c3; + } + + /// Constructs a int3x4 matrix from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(float v) + { + this.c0 = (int3)v; + this.c1 = (int3)v; + this.c2 = (int3)v; + this.c3 = (int3)v; + } + + /// Constructs a int3x4 matrix from a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(float3x4 v) + { + this.c0 = (int3)v.c0; + this.c1 = (int3)v.c1; + this.c2 = (int3)v.c2; + this.c3 = (int3)v.c3; + } + + /// Constructs a int3x4 matrix from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(double v) + { + this.c0 = (int3)v; + this.c1 = (int3)v; + this.c2 = (int3)v; + this.c3 = (int3)v; + } + + /// Constructs a int3x4 matrix from a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3x4(double3x4 v) + { + this.c0 = (int3)v.c0; + this.c1 = (int3)v.c1; + this.c2 = (int3)v.c2; + this.c3 = (int3)v.c3; + } + + + /// Implicitly converts a single int value to a int3x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int3x4(int v) { return new int3x4(v); } + + /// Explicitly converts a single bool value to a int3x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x4(bool v) { return new int3x4(v); } + + /// Explicitly converts a bool3x4 matrix to a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x4(bool3x4 v) { return new int3x4(v); } + + /// Explicitly converts a single uint value to a int3x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x4(uint v) { return new int3x4(v); } + + /// Explicitly converts a uint3x4 matrix to a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x4(uint3x4 v) { return new int3x4(v); } + + /// Explicitly converts a single float value to a int3x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x4(float v) { return new int3x4(v); } + + /// Explicitly converts a float3x4 matrix to a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x4(float3x4 v) { return new int3x4(v); } + + /// Explicitly converts a single double value to a int3x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x4(double v) { return new int3x4(v); } + + /// Explicitly converts a double3x4 matrix to a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int3x4(double3x4 v) { return new int3x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator * (int3x4 lhs, int3x4 rhs) { return new int3x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator * (int3x4 lhs, int rhs) { return new int3x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator * (int lhs, int3x4 rhs) { return new int3x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator + (int3x4 lhs, int3x4 rhs) { return new int3x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator + (int3x4 lhs, int rhs) { return new int3x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator + (int lhs, int3x4 rhs) { return new int3x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator - (int3x4 lhs, int3x4 rhs) { return new int3x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator - (int3x4 lhs, int rhs) { return new int3x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator - (int lhs, int3x4 rhs) { return new int3x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator / (int3x4 lhs, int3x4 rhs) { return new int3x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator / (int3x4 lhs, int rhs) { return new int3x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator / (int lhs, int3x4 rhs) { return new int3x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator % (int3x4 lhs, int3x4 rhs) { return new int3x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator % (int3x4 lhs, int rhs) { return new int3x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator % (int lhs, int3x4 rhs) { return new int3x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator ++ (int3x4 val) { return new int3x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator -- (int3x4 val) { return new int3x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (int3x4 lhs, int3x4 rhs) { return new bool3x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (int3x4 lhs, int rhs) { return new bool3x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (int lhs, int3x4 rhs) { return new bool3x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (int3x4 lhs, int3x4 rhs) { return new bool3x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (int3x4 lhs, int rhs) { return new bool3x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (int lhs, int3x4 rhs) { return new bool3x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (int3x4 lhs, int3x4 rhs) { return new bool3x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (int3x4 lhs, int rhs) { return new bool3x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (int lhs, int3x4 rhs) { return new bool3x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (int3x4 lhs, int3x4 rhs) { return new bool3x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (int3x4 lhs, int rhs) { return new bool3x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (int lhs, int3x4 rhs) { return new bool3x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator - (int3x4 val) { return new int3x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator + (int3x4 val) { return new int3x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise left shift operation on an int3x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator << (int3x4 x, int n) { return new int3x4 (x.c0 << n, x.c1 << n, x.c2 << n, x.c3 << n); } + + /// Returns the result of a componentwise right shift operation on an int3x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator >> (int3x4 x, int n) { return new int3x4 (x.c0 >> n, x.c1 >> n, x.c2 >> n, x.c3 >> n); } + + /// Returns the result of a componentwise equality operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (int3x4 lhs, int3x4 rhs) { return new bool3x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (int3x4 lhs, int rhs) { return new bool3x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (int lhs, int3x4 rhs) { return new bool3x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (int3x4 lhs, int3x4 rhs) { return new bool3x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (int3x4 lhs, int rhs) { return new bool3x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (int lhs, int3x4 rhs) { return new bool3x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + /// Returns the result of a componentwise bitwise not operation on an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator ~ (int3x4 val) { return new int3x4 (~val.c0, ~val.c1, ~val.c2, ~val.c3); } + + + /// Returns the result of a componentwise bitwise and operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator & (int3x4 lhs, int3x4 rhs) { return new int3x4 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2, lhs.c3 & rhs.c3); } + + /// Returns the result of a componentwise bitwise and operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator & (int3x4 lhs, int rhs) { return new int3x4 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs, lhs.c3 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator & (int lhs, int3x4 rhs) { return new int3x4 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2, lhs & rhs.c3); } + + + /// Returns the result of a componentwise bitwise or operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator | (int3x4 lhs, int3x4 rhs) { return new int3x4 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2, lhs.c3 | rhs.c3); } + + /// Returns the result of a componentwise bitwise or operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator | (int3x4 lhs, int rhs) { return new int3x4 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs, lhs.c3 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator | (int lhs, int3x4 rhs) { return new int3x4 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2, lhs | rhs.c3); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator ^ (int3x4 lhs, int3x4 rhs) { return new int3x4 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2, lhs.c3 ^ rhs.c3); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int3x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator ^ (int3x4 lhs, int rhs) { return new int3x4 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs, lhs.c3 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 operator ^ (int lhs, int3x4 rhs) { return new int3x4 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2, lhs ^ rhs.c3); } + + + + /// Returns the int3 element at a specified index. + unsafe public ref int3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (int3x4* array = &this) { return ref ((int3*)array)[index]; } + } + } + + /// Returns true if the int3x4 is equal to a given int3x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int3x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the int3x4 is equal to a given int3x4, false otherwise. + public override bool Equals(object o) { return Equals((int3x4)o); } + + + /// Returns a hash code for the int3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int3x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z); + } + + /// Returns a string representation of the int3x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int3x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c3.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a int3x4 matrix constructed from four int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(int3 c0, int3 c1, int3 c2, int3 c3) { return new int3x4(c0, c1, c2, c3); } + + /// Returns a int3x4 matrix constructed from from 12 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(int m00, int m01, int m02, int m03, + int m10, int m11, int m12, int m13, + int m20, int m21, int m22, int m23) + { + return new int3x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23); + } + + /// Returns a int3x4 matrix constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(int v) { return new int3x4(v); } + + /// Returns a int3x4 matrix constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(bool v) { return new int3x4(v); } + + /// Return a int3x4 matrix constructed from a bool3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(bool3x4 v) { return new int3x4(v); } + + /// Returns a int3x4 matrix constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(uint v) { return new int3x4(v); } + + /// Return a int3x4 matrix constructed from a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(uint3x4 v) { return new int3x4(v); } + + /// Returns a int3x4 matrix constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(float v) { return new int3x4(v); } + + /// Return a int3x4 matrix constructed from a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(float3x4 v) { return new int3x4(v); } + + /// Returns a int3x4 matrix constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(double v) { return new int3x4(v); } + + /// Return a int3x4 matrix constructed from a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 int3x4(double3x4 v) { return new int3x4(v); } + + /// Return the int4x3 transpose of a int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 transpose(int3x4 v) + { + return int4x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z, + v.c3.x, v.c3.y, v.c3.z); + } + + /// Returns a uint hash code of a int3x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int3x4 v) + { + return csum(asuint(v.c0) * uint3(0x5AB3E8CDu, 0x676E8407u, 0xB36DE767u) + + asuint(v.c1) * uint3(0x6FCA387Du, 0xAF0F3103u, 0xE4A056C7u) + + asuint(v.c2) * uint3(0x841D8225u, 0xC9393C7Du, 0xD42EAFA3u) + + asuint(v.c3) * uint3(0xD9AFD06Du, 0x97A65421u, 0x7809205Fu)) + 0x9C9F0823u; + } + + /// + /// Returns a uint3 vector hash code of a int3x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(int3x4 v) + { + return (asuint(v.c0) * uint3(0x5A9CA13Bu, 0xAFCDD5EFu, 0xA88D187Du) + + asuint(v.c1) * uint3(0xCF6EBA1Du, 0x9D88E5A1u, 0xEADF0775u) + + asuint(v.c2) * uint3(0x747A9D7Bu, 0x4111F799u, 0xB5F05AF1u) + + asuint(v.c3) * uint3(0xFD80290Bu, 0x8B65ADB7u, 0xDFF4F563u)) + 0x7069770Du; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x4.gen.cs.meta new file mode 100644 index 0000000..2a14dc2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67f00d3260d3e46778497ed1e2b93c92 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4.gen.cs new file mode 100644 index 0000000..d5f7795 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4.gen.cs @@ -0,0 +1,3480 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(int4.DebuggerProxy))] + [System.Serializable] + public partial struct int4 : System.IEquatable, IFormattable + { + public int x; + public int y; + public int z; + public int w; + + /// int4 zero value. + public static readonly int4 zero; + + /// Constructs a int4 vector from four int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(int x, int y, int z, int w) + { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + /// Constructs a int4 vector from two int values and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(int x, int y, int2 zw) + { + this.x = x; + this.y = y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a int4 vector from an int value, an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(int x, int2 yz, int w) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + this.w = w; + } + + /// Constructs a int4 vector from an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(int x, int3 yzw) + { + this.x = x; + this.y = yzw.x; + this.z = yzw.y; + this.w = yzw.z; + } + + /// Constructs a int4 vector from an int2 vector and two int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(int2 xy, int z, int w) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + this.w = w; + } + + /// Constructs a int4 vector from two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(int2 xy, int2 zw) + { + this.x = xy.x; + this.y = xy.y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a int4 vector from an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(int3 xyz, int w) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + this.w = w; + } + + /// Constructs a int4 vector from an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(int4 xyzw) + { + this.x = xyzw.x; + this.y = xyzw.y; + this.z = xyzw.z; + this.w = xyzw.w; + } + + /// Constructs a int4 vector from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(int v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a int4 vector from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(bool v) + { + this.x = v ? 1 : 0; + this.y = v ? 1 : 0; + this.z = v ? 1 : 0; + this.w = v ? 1 : 0; + } + + /// Constructs a int4 vector from a bool4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(bool4 v) + { + this.x = v.x ? 1 : 0; + this.y = v.y ? 1 : 0; + this.z = v.z ? 1 : 0; + this.w = v.w ? 1 : 0; + } + + /// Constructs a int4 vector from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(uint v) + { + this.x = (int)v; + this.y = (int)v; + this.z = (int)v; + this.w = (int)v; + } + + /// Constructs a int4 vector from a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(uint4 v) + { + this.x = (int)v.x; + this.y = (int)v.y; + this.z = (int)v.z; + this.w = (int)v.w; + } + + /// Constructs a int4 vector from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(float v) + { + this.x = (int)v; + this.y = (int)v; + this.z = (int)v; + this.w = (int)v; + } + + /// Constructs a int4 vector from a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(float4 v) + { + this.x = (int)v.x; + this.y = (int)v.y; + this.z = (int)v.z; + this.w = (int)v.w; + } + + /// Constructs a int4 vector from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(double v) + { + this.x = (int)v; + this.y = (int)v; + this.z = (int)v; + this.w = (int)v; + } + + /// Constructs a int4 vector from a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4(double4 v) + { + this.x = (int)v.x; + this.y = (int)v.y; + this.z = (int)v.z; + this.w = (int)v.w; + } + + + /// Implicitly converts a single int value to a int4 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int4(int v) { return new int4(v); } + + /// Explicitly converts a single bool value to a int4 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4(bool v) { return new int4(v); } + + /// Explicitly converts a bool4 vector to a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4(bool4 v) { return new int4(v); } + + /// Explicitly converts a single uint value to a int4 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4(uint v) { return new int4(v); } + + /// Explicitly converts a uint4 vector to a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4(uint4 v) { return new int4(v); } + + /// Explicitly converts a single float value to a int4 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4(float v) { return new int4(v); } + + /// Explicitly converts a float4 vector to a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4(float4 v) { return new int4(v); } + + /// Explicitly converts a single double value to a int4 vector by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4(double v) { return new int4(v); } + + /// Explicitly converts a double4 vector to a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4(double4 v) { return new int4(v); } + + + /// Returns the result of a componentwise multiplication operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator * (int4 lhs, int4 rhs) { return new int4 (lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z, lhs.w * rhs.w); } + + /// Returns the result of a componentwise multiplication operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator * (int4 lhs, int rhs) { return new int4 (lhs.x * rhs, lhs.y * rhs, lhs.z * rhs, lhs.w * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator * (int lhs, int4 rhs) { return new int4 (lhs * rhs.x, lhs * rhs.y, lhs * rhs.z, lhs * rhs.w); } + + + /// Returns the result of a componentwise addition operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator + (int4 lhs, int4 rhs) { return new int4 (lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z, lhs.w + rhs.w); } + + /// Returns the result of a componentwise addition operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator + (int4 lhs, int rhs) { return new int4 (lhs.x + rhs, lhs.y + rhs, lhs.z + rhs, lhs.w + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator + (int lhs, int4 rhs) { return new int4 (lhs + rhs.x, lhs + rhs.y, lhs + rhs.z, lhs + rhs.w); } + + + /// Returns the result of a componentwise subtraction operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator - (int4 lhs, int4 rhs) { return new int4 (lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z, lhs.w - rhs.w); } + + /// Returns the result of a componentwise subtraction operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator - (int4 lhs, int rhs) { return new int4 (lhs.x - rhs, lhs.y - rhs, lhs.z - rhs, lhs.w - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator - (int lhs, int4 rhs) { return new int4 (lhs - rhs.x, lhs - rhs.y, lhs - rhs.z, lhs - rhs.w); } + + + /// Returns the result of a componentwise division operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator / (int4 lhs, int4 rhs) { return new int4 (lhs.x / rhs.x, lhs.y / rhs.y, lhs.z / rhs.z, lhs.w / rhs.w); } + + /// Returns the result of a componentwise division operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator / (int4 lhs, int rhs) { return new int4 (lhs.x / rhs, lhs.y / rhs, lhs.z / rhs, lhs.w / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator / (int lhs, int4 rhs) { return new int4 (lhs / rhs.x, lhs / rhs.y, lhs / rhs.z, lhs / rhs.w); } + + + /// Returns the result of a componentwise modulus operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator % (int4 lhs, int4 rhs) { return new int4 (lhs.x % rhs.x, lhs.y % rhs.y, lhs.z % rhs.z, lhs.w % rhs.w); } + + /// Returns the result of a componentwise modulus operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator % (int4 lhs, int rhs) { return new int4 (lhs.x % rhs, lhs.y % rhs, lhs.z % rhs, lhs.w % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator % (int lhs, int4 rhs) { return new int4 (lhs % rhs.x, lhs % rhs.y, lhs % rhs.z, lhs % rhs.w); } + + + /// Returns the result of a componentwise increment operation on an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator ++ (int4 val) { return new int4 (++val.x, ++val.y, ++val.z, ++val.w); } + + + /// Returns the result of a componentwise decrement operation on an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator -- (int4 val) { return new int4 (--val.x, --val.y, --val.z, --val.w); } + + + /// Returns the result of a componentwise less than operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (int4 lhs, int4 rhs) { return new bool4 (lhs.x < rhs.x, lhs.y < rhs.y, lhs.z < rhs.z, lhs.w < rhs.w); } + + /// Returns the result of a componentwise less than operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (int4 lhs, int rhs) { return new bool4 (lhs.x < rhs, lhs.y < rhs, lhs.z < rhs, lhs.w < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (int lhs, int4 rhs) { return new bool4 (lhs < rhs.x, lhs < rhs.y, lhs < rhs.z, lhs < rhs.w); } + + + /// Returns the result of a componentwise less or equal operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (int4 lhs, int4 rhs) { return new bool4 (lhs.x <= rhs.x, lhs.y <= rhs.y, lhs.z <= rhs.z, lhs.w <= rhs.w); } + + /// Returns the result of a componentwise less or equal operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (int4 lhs, int rhs) { return new bool4 (lhs.x <= rhs, lhs.y <= rhs, lhs.z <= rhs, lhs.w <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (int lhs, int4 rhs) { return new bool4 (lhs <= rhs.x, lhs <= rhs.y, lhs <= rhs.z, lhs <= rhs.w); } + + + /// Returns the result of a componentwise greater than operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (int4 lhs, int4 rhs) { return new bool4 (lhs.x > rhs.x, lhs.y > rhs.y, lhs.z > rhs.z, lhs.w > rhs.w); } + + /// Returns the result of a componentwise greater than operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (int4 lhs, int rhs) { return new bool4 (lhs.x > rhs, lhs.y > rhs, lhs.z > rhs, lhs.w > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (int lhs, int4 rhs) { return new bool4 (lhs > rhs.x, lhs > rhs.y, lhs > rhs.z, lhs > rhs.w); } + + + /// Returns the result of a componentwise greater or equal operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (int4 lhs, int4 rhs) { return new bool4 (lhs.x >= rhs.x, lhs.y >= rhs.y, lhs.z >= rhs.z, lhs.w >= rhs.w); } + + /// Returns the result of a componentwise greater or equal operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (int4 lhs, int rhs) { return new bool4 (lhs.x >= rhs, lhs.y >= rhs, lhs.z >= rhs, lhs.w >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (int lhs, int4 rhs) { return new bool4 (lhs >= rhs.x, lhs >= rhs.y, lhs >= rhs.z, lhs >= rhs.w); } + + + /// Returns the result of a componentwise unary minus operation on an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator - (int4 val) { return new int4 (-val.x, -val.y, -val.z, -val.w); } + + + /// Returns the result of a componentwise unary plus operation on an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator + (int4 val) { return new int4 (+val.x, +val.y, +val.z, +val.w); } + + + /// Returns the result of a componentwise left shift operation on an int4 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator << (int4 x, int n) { return new int4 (x.x << n, x.y << n, x.z << n, x.w << n); } + + /// Returns the result of a componentwise right shift operation on an int4 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator >> (int4 x, int n) { return new int4 (x.x >> n, x.y >> n, x.z >> n, x.w >> n); } + + /// Returns the result of a componentwise equality operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (int4 lhs, int4 rhs) { return new bool4 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z, lhs.w == rhs.w); } + + /// Returns the result of a componentwise equality operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (int4 lhs, int rhs) { return new bool4 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs, lhs.w == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (int lhs, int4 rhs) { return new bool4 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z, lhs == rhs.w); } + + + /// Returns the result of a componentwise not equal operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (int4 lhs, int4 rhs) { return new bool4 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z, lhs.w != rhs.w); } + + /// Returns the result of a componentwise not equal operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (int4 lhs, int rhs) { return new bool4 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs, lhs.w != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (int lhs, int4 rhs) { return new bool4 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z, lhs != rhs.w); } + + + /// Returns the result of a componentwise bitwise not operation on an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator ~ (int4 val) { return new int4 (~val.x, ~val.y, ~val.z, ~val.w); } + + + /// Returns the result of a componentwise bitwise and operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator & (int4 lhs, int4 rhs) { return new int4 (lhs.x & rhs.x, lhs.y & rhs.y, lhs.z & rhs.z, lhs.w & rhs.w); } + + /// Returns the result of a componentwise bitwise and operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator & (int4 lhs, int rhs) { return new int4 (lhs.x & rhs, lhs.y & rhs, lhs.z & rhs, lhs.w & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator & (int lhs, int4 rhs) { return new int4 (lhs & rhs.x, lhs & rhs.y, lhs & rhs.z, lhs & rhs.w); } + + + /// Returns the result of a componentwise bitwise or operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator | (int4 lhs, int4 rhs) { return new int4 (lhs.x | rhs.x, lhs.y | rhs.y, lhs.z | rhs.z, lhs.w | rhs.w); } + + /// Returns the result of a componentwise bitwise or operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator | (int4 lhs, int rhs) { return new int4 (lhs.x | rhs, lhs.y | rhs, lhs.z | rhs, lhs.w | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator | (int lhs, int4 rhs) { return new int4 (lhs | rhs.x, lhs | rhs.y, lhs | rhs.z, lhs | rhs.w); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator ^ (int4 lhs, int4 rhs) { return new int4 (lhs.x ^ rhs.x, lhs.y ^ rhs.y, lhs.z ^ rhs.z, lhs.w ^ rhs.w); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int4 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator ^ (int4 lhs, int rhs) { return new int4 (lhs.x ^ rhs, lhs.y ^ rhs, lhs.z ^ rhs, lhs.w ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 operator ^ (int lhs, int4 rhs) { return new int4 (lhs ^ rhs.x, lhs ^ rhs.y, lhs ^ rhs.z, lhs ^ rhs.w); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 xwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(x, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 yzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 ywww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(y, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 zwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(z, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int4 wwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int4(w, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 xww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 ywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 ywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 ywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 yww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 zww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 wwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int3 www + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int3(w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 xw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 yw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 zw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 wx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 wy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 wz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public int2 ww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new int2(w, w); } + } + + + + /// Returns the int element at a specified index. + unsafe public int this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (int4* array = &this) { return ((int*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (int* array = &x) { array[index] = value; } + } + } + + /// Returns true if the int4 is equal to a given int4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int4 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z && w == rhs.w; } + + /// Returns true if the int4 is equal to a given int4, false otherwise. + public override bool Equals(object o) { return Equals((int4)o); } + + + /// Returns a hash code for the int4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int4({0}, {1}, {2}, {3})", x, y, z, w); + } + + /// Returns a string representation of the int4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int4({0}, {1}, {2}, {3})", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider), w.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public int x; + public int y; + public int z; + public int w; + public DebuggerProxy(int4 v) + { + x = v.x; + y = v.y; + z = v.z; + w = v.w; + } + } + + } + + public static partial class math + { + /// Returns a int4 vector constructed from four int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(int x, int y, int z, int w) { return new int4(x, y, z, w); } + + /// Returns a int4 vector constructed from two int values and an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(int x, int y, int2 zw) { return new int4(x, y, zw); } + + /// Returns a int4 vector constructed from an int value, an int2 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(int x, int2 yz, int w) { return new int4(x, yz, w); } + + /// Returns a int4 vector constructed from an int value and an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(int x, int3 yzw) { return new int4(x, yzw); } + + /// Returns a int4 vector constructed from an int2 vector and two int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(int2 xy, int z, int w) { return new int4(xy, z, w); } + + /// Returns a int4 vector constructed from two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(int2 xy, int2 zw) { return new int4(xy, zw); } + + /// Returns a int4 vector constructed from an int3 vector and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(int3 xyz, int w) { return new int4(xyz, w); } + + /// Returns a int4 vector constructed from an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(int4 xyzw) { return new int4(xyzw); } + + /// Returns a int4 vector constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(int v) { return new int4(v); } + + /// Returns a int4 vector constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(bool v) { return new int4(v); } + + /// Return a int4 vector constructed from a bool4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(bool4 v) { return new int4(v); } + + /// Returns a int4 vector constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(uint v) { return new int4(v); } + + /// Return a int4 vector constructed from a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(uint4 v) { return new int4(v); } + + /// Returns a int4 vector constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(float v) { return new int4(v); } + + /// Return a int4 vector constructed from a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(float4 v) { return new int4(v); } + + /// Returns a int4 vector constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(double v) { return new int4(v); } + + /// Return a int4 vector constructed from a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 int4(double4 v) { return new int4(v); } + + /// Returns a uint hash code of a int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int4 v) + { + return csum(asuint(v) * uint4(0x6E050B01u, 0x750FDBF5u, 0x7F3DD499u, 0x52EAAEBBu)) + 0x4599C793u; + } + + /// + /// Returns a uint4 vector hash code of a int4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(int4 v) + { + return (asuint(v) * uint4(0x83B5E729u, 0xC267163Fu, 0x67BC9149u, 0xAD7C5EC1u)) + 0x822A7D6Du; + } + + /// Returns the result of specified shuffling of the components from two int4 vectors into an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int shuffle(int4 a, int4 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two int4 vectors into an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 shuffle(int4 a, int4 b, ShuffleComponent x, ShuffleComponent y) + { + return int2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two int4 vectors into an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 shuffle(int4 a, int4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return int3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two int4 vectors into an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 shuffle(int4 a, int4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return int4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static int select_shuffle_component(int4 a, int4 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.LeftW: + return a.w; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + case ShuffleComponent.RightW: + return b.w; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4.gen.cs.meta new file mode 100644 index 0000000..8e0ea81 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9057960b12f46654798f69c411172f73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x2.gen.cs new file mode 100644 index 0000000..d63d814 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x2.gen.cs @@ -0,0 +1,497 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct int4x2 : System.IEquatable, IFormattable + { + public int4 c0; + public int4 c1; + + /// int4x2 zero value. + public static readonly int4x2 zero; + + /// Constructs a int4x2 matrix from two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(int4 c0, int4 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a int4x2 matrix from 8 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(int m00, int m01, + int m10, int m11, + int m20, int m21, + int m30, int m31) + { + this.c0 = new int4(m00, m10, m20, m30); + this.c1 = new int4(m01, m11, m21, m31); + } + + /// Constructs a int4x2 matrix from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(int v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a int4x2 matrix from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(bool v) + { + this.c0 = math.select(new int4(0), new int4(1), v); + this.c1 = math.select(new int4(0), new int4(1), v); + } + + /// Constructs a int4x2 matrix from a bool4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(bool4x2 v) + { + this.c0 = math.select(new int4(0), new int4(1), v.c0); + this.c1 = math.select(new int4(0), new int4(1), v.c1); + } + + /// Constructs a int4x2 matrix from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(uint v) + { + this.c0 = (int4)v; + this.c1 = (int4)v; + } + + /// Constructs a int4x2 matrix from a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(uint4x2 v) + { + this.c0 = (int4)v.c0; + this.c1 = (int4)v.c1; + } + + /// Constructs a int4x2 matrix from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(float v) + { + this.c0 = (int4)v; + this.c1 = (int4)v; + } + + /// Constructs a int4x2 matrix from a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(float4x2 v) + { + this.c0 = (int4)v.c0; + this.c1 = (int4)v.c1; + } + + /// Constructs a int4x2 matrix from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(double v) + { + this.c0 = (int4)v; + this.c1 = (int4)v; + } + + /// Constructs a int4x2 matrix from a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x2(double4x2 v) + { + this.c0 = (int4)v.c0; + this.c1 = (int4)v.c1; + } + + + /// Implicitly converts a single int value to a int4x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int4x2(int v) { return new int4x2(v); } + + /// Explicitly converts a single bool value to a int4x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x2(bool v) { return new int4x2(v); } + + /// Explicitly converts a bool4x2 matrix to a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x2(bool4x2 v) { return new int4x2(v); } + + /// Explicitly converts a single uint value to a int4x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x2(uint v) { return new int4x2(v); } + + /// Explicitly converts a uint4x2 matrix to a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x2(uint4x2 v) { return new int4x2(v); } + + /// Explicitly converts a single float value to a int4x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x2(float v) { return new int4x2(v); } + + /// Explicitly converts a float4x2 matrix to a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x2(float4x2 v) { return new int4x2(v); } + + /// Explicitly converts a single double value to a int4x2 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x2(double v) { return new int4x2(v); } + + /// Explicitly converts a double4x2 matrix to a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x2(double4x2 v) { return new int4x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator * (int4x2 lhs, int4x2 rhs) { return new int4x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator * (int4x2 lhs, int rhs) { return new int4x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator * (int lhs, int4x2 rhs) { return new int4x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator + (int4x2 lhs, int4x2 rhs) { return new int4x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator + (int4x2 lhs, int rhs) { return new int4x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator + (int lhs, int4x2 rhs) { return new int4x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator - (int4x2 lhs, int4x2 rhs) { return new int4x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator - (int4x2 lhs, int rhs) { return new int4x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator - (int lhs, int4x2 rhs) { return new int4x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator / (int4x2 lhs, int4x2 rhs) { return new int4x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator / (int4x2 lhs, int rhs) { return new int4x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator / (int lhs, int4x2 rhs) { return new int4x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator % (int4x2 lhs, int4x2 rhs) { return new int4x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator % (int4x2 lhs, int rhs) { return new int4x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator % (int lhs, int4x2 rhs) { return new int4x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator ++ (int4x2 val) { return new int4x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator -- (int4x2 val) { return new int4x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (int4x2 lhs, int4x2 rhs) { return new bool4x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (int4x2 lhs, int rhs) { return new bool4x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (int lhs, int4x2 rhs) { return new bool4x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (int4x2 lhs, int4x2 rhs) { return new bool4x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (int4x2 lhs, int rhs) { return new bool4x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (int lhs, int4x2 rhs) { return new bool4x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (int4x2 lhs, int4x2 rhs) { return new bool4x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (int4x2 lhs, int rhs) { return new bool4x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (int lhs, int4x2 rhs) { return new bool4x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (int4x2 lhs, int4x2 rhs) { return new bool4x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (int4x2 lhs, int rhs) { return new bool4x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (int lhs, int4x2 rhs) { return new bool4x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator - (int4x2 val) { return new int4x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator + (int4x2 val) { return new int4x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise left shift operation on an int4x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator << (int4x2 x, int n) { return new int4x2 (x.c0 << n, x.c1 << n); } + + /// Returns the result of a componentwise right shift operation on an int4x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator >> (int4x2 x, int n) { return new int4x2 (x.c0 >> n, x.c1 >> n); } + + /// Returns the result of a componentwise equality operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (int4x2 lhs, int4x2 rhs) { return new bool4x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (int4x2 lhs, int rhs) { return new bool4x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (int lhs, int4x2 rhs) { return new bool4x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (int4x2 lhs, int4x2 rhs) { return new bool4x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (int4x2 lhs, int rhs) { return new bool4x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (int lhs, int4x2 rhs) { return new bool4x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + /// Returns the result of a componentwise bitwise not operation on an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator ~ (int4x2 val) { return new int4x2 (~val.c0, ~val.c1); } + + + /// Returns the result of a componentwise bitwise and operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator & (int4x2 lhs, int4x2 rhs) { return new int4x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); } + + /// Returns the result of a componentwise bitwise and operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator & (int4x2 lhs, int rhs) { return new int4x2 (lhs.c0 & rhs, lhs.c1 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator & (int lhs, int4x2 rhs) { return new int4x2 (lhs & rhs.c0, lhs & rhs.c1); } + + + /// Returns the result of a componentwise bitwise or operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator | (int4x2 lhs, int4x2 rhs) { return new int4x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); } + + /// Returns the result of a componentwise bitwise or operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator | (int4x2 lhs, int rhs) { return new int4x2 (lhs.c0 | rhs, lhs.c1 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator | (int lhs, int4x2 rhs) { return new int4x2 (lhs | rhs.c0, lhs | rhs.c1); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator ^ (int4x2 lhs, int4x2 rhs) { return new int4x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int4x2 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator ^ (int4x2 lhs, int rhs) { return new int4x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 operator ^ (int lhs, int4x2 rhs) { return new int4x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); } + + + + /// Returns the int4 element at a specified index. + unsafe public ref int4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (int4x2* array = &this) { return ref ((int4*)array)[index]; } + } + } + + /// Returns true if the int4x2 is equal to a given int4x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int4x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the int4x2 is equal to a given int4x2, false otherwise. + public override bool Equals(object o) { return Equals((int4x2)o); } + + + /// Returns a hash code for the int4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int4x2({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z, c0.w, c1.w); + } + + /// Returns a string representation of the int4x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int4x2({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a int4x2 matrix constructed from two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(int4 c0, int4 c1) { return new int4x2(c0, c1); } + + /// Returns a int4x2 matrix constructed from from 8 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(int m00, int m01, + int m10, int m11, + int m20, int m21, + int m30, int m31) + { + return new int4x2(m00, m01, + m10, m11, + m20, m21, + m30, m31); + } + + /// Returns a int4x2 matrix constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(int v) { return new int4x2(v); } + + /// Returns a int4x2 matrix constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(bool v) { return new int4x2(v); } + + /// Return a int4x2 matrix constructed from a bool4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(bool4x2 v) { return new int4x2(v); } + + /// Returns a int4x2 matrix constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(uint v) { return new int4x2(v); } + + /// Return a int4x2 matrix constructed from a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(uint4x2 v) { return new int4x2(v); } + + /// Returns a int4x2 matrix constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(float v) { return new int4x2(v); } + + /// Return a int4x2 matrix constructed from a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(float4x2 v) { return new int4x2(v); } + + /// Returns a int4x2 matrix constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(double v) { return new int4x2(v); } + + /// Return a int4x2 matrix constructed from a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 int4x2(double4x2 v) { return new int4x2(v); } + + /// Return the int2x4 transpose of a int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 transpose(int4x2 v) + { + return int2x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w); + } + + /// Returns a uint hash code of a int4x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int4x2 v) + { + return csum(asuint(v.c0) * uint4(0xFAAF07DDu, 0x625C45BDu, 0xC9F27FCBu, 0x6D2523B1u) + + asuint(v.c1) * uint4(0x6E2BF6A9u, 0xCC74B3B7u, 0x83B58237u, 0x833E3E29u)) + 0xA9D919BFu; + } + + /// + /// Returns a uint4 vector hash code of a int4x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(int4x2 v) + { + return (asuint(v.c0) * uint4(0xC3EC1D97u, 0xB8B208C7u, 0x5D3ED947u, 0x4473BBB1u) + + asuint(v.c1) * uint4(0xCBA11D5Fu, 0x685835CFu, 0xC3D32AE1u, 0xB966942Fu)) + 0xFE9856B3u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x2.gen.cs.meta new file mode 100644 index 0000000..e974efe --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca7cf71984bec4b9081416653621d6df +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x3.gen.cs new file mode 100644 index 0000000..5d5c55b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x3.gen.cs @@ -0,0 +1,512 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct int4x3 : System.IEquatable, IFormattable + { + public int4 c0; + public int4 c1; + public int4 c2; + + /// int4x3 zero value. + public static readonly int4x3 zero; + + /// Constructs a int4x3 matrix from three int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(int4 c0, int4 c1, int4 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a int4x3 matrix from 12 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(int m00, int m01, int m02, + int m10, int m11, int m12, + int m20, int m21, int m22, + int m30, int m31, int m32) + { + this.c0 = new int4(m00, m10, m20, m30); + this.c1 = new int4(m01, m11, m21, m31); + this.c2 = new int4(m02, m12, m22, m32); + } + + /// Constructs a int4x3 matrix from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a int4x3 matrix from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(bool v) + { + this.c0 = math.select(new int4(0), new int4(1), v); + this.c1 = math.select(new int4(0), new int4(1), v); + this.c2 = math.select(new int4(0), new int4(1), v); + } + + /// Constructs a int4x3 matrix from a bool4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(bool4x3 v) + { + this.c0 = math.select(new int4(0), new int4(1), v.c0); + this.c1 = math.select(new int4(0), new int4(1), v.c1); + this.c2 = math.select(new int4(0), new int4(1), v.c2); + } + + /// Constructs a int4x3 matrix from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(uint v) + { + this.c0 = (int4)v; + this.c1 = (int4)v; + this.c2 = (int4)v; + } + + /// Constructs a int4x3 matrix from a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(uint4x3 v) + { + this.c0 = (int4)v.c0; + this.c1 = (int4)v.c1; + this.c2 = (int4)v.c2; + } + + /// Constructs a int4x3 matrix from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(float v) + { + this.c0 = (int4)v; + this.c1 = (int4)v; + this.c2 = (int4)v; + } + + /// Constructs a int4x3 matrix from a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(float4x3 v) + { + this.c0 = (int4)v.c0; + this.c1 = (int4)v.c1; + this.c2 = (int4)v.c2; + } + + /// Constructs a int4x3 matrix from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(double v) + { + this.c0 = (int4)v; + this.c1 = (int4)v; + this.c2 = (int4)v; + } + + /// Constructs a int4x3 matrix from a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x3(double4x3 v) + { + this.c0 = (int4)v.c0; + this.c1 = (int4)v.c1; + this.c2 = (int4)v.c2; + } + + + /// Implicitly converts a single int value to a int4x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int4x3(int v) { return new int4x3(v); } + + /// Explicitly converts a single bool value to a int4x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x3(bool v) { return new int4x3(v); } + + /// Explicitly converts a bool4x3 matrix to a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x3(bool4x3 v) { return new int4x3(v); } + + /// Explicitly converts a single uint value to a int4x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x3(uint v) { return new int4x3(v); } + + /// Explicitly converts a uint4x3 matrix to a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x3(uint4x3 v) { return new int4x3(v); } + + /// Explicitly converts a single float value to a int4x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x3(float v) { return new int4x3(v); } + + /// Explicitly converts a float4x3 matrix to a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x3(float4x3 v) { return new int4x3(v); } + + /// Explicitly converts a single double value to a int4x3 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x3(double v) { return new int4x3(v); } + + /// Explicitly converts a double4x3 matrix to a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x3(double4x3 v) { return new int4x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator * (int4x3 lhs, int4x3 rhs) { return new int4x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator * (int4x3 lhs, int rhs) { return new int4x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator * (int lhs, int4x3 rhs) { return new int4x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator + (int4x3 lhs, int4x3 rhs) { return new int4x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator + (int4x3 lhs, int rhs) { return new int4x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator + (int lhs, int4x3 rhs) { return new int4x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator - (int4x3 lhs, int4x3 rhs) { return new int4x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator - (int4x3 lhs, int rhs) { return new int4x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator - (int lhs, int4x3 rhs) { return new int4x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator / (int4x3 lhs, int4x3 rhs) { return new int4x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator / (int4x3 lhs, int rhs) { return new int4x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator / (int lhs, int4x3 rhs) { return new int4x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator % (int4x3 lhs, int4x3 rhs) { return new int4x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator % (int4x3 lhs, int rhs) { return new int4x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator % (int lhs, int4x3 rhs) { return new int4x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator ++ (int4x3 val) { return new int4x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator -- (int4x3 val) { return new int4x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (int4x3 lhs, int4x3 rhs) { return new bool4x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (int4x3 lhs, int rhs) { return new bool4x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (int lhs, int4x3 rhs) { return new bool4x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (int4x3 lhs, int4x3 rhs) { return new bool4x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (int4x3 lhs, int rhs) { return new bool4x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (int lhs, int4x3 rhs) { return new bool4x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (int4x3 lhs, int4x3 rhs) { return new bool4x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (int4x3 lhs, int rhs) { return new bool4x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (int lhs, int4x3 rhs) { return new bool4x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (int4x3 lhs, int4x3 rhs) { return new bool4x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (int4x3 lhs, int rhs) { return new bool4x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (int lhs, int4x3 rhs) { return new bool4x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator - (int4x3 val) { return new int4x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator + (int4x3 val) { return new int4x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise left shift operation on an int4x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator << (int4x3 x, int n) { return new int4x3 (x.c0 << n, x.c1 << n, x.c2 << n); } + + /// Returns the result of a componentwise right shift operation on an int4x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator >> (int4x3 x, int n) { return new int4x3 (x.c0 >> n, x.c1 >> n, x.c2 >> n); } + + /// Returns the result of a componentwise equality operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (int4x3 lhs, int4x3 rhs) { return new bool4x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (int4x3 lhs, int rhs) { return new bool4x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (int lhs, int4x3 rhs) { return new bool4x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (int4x3 lhs, int4x3 rhs) { return new bool4x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (int4x3 lhs, int rhs) { return new bool4x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (int lhs, int4x3 rhs) { return new bool4x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + /// Returns the result of a componentwise bitwise not operation on an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator ~ (int4x3 val) { return new int4x3 (~val.c0, ~val.c1, ~val.c2); } + + + /// Returns the result of a componentwise bitwise and operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator & (int4x3 lhs, int4x3 rhs) { return new int4x3 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2); } + + /// Returns the result of a componentwise bitwise and operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator & (int4x3 lhs, int rhs) { return new int4x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator & (int lhs, int4x3 rhs) { return new int4x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); } + + + /// Returns the result of a componentwise bitwise or operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator | (int4x3 lhs, int4x3 rhs) { return new int4x3 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2); } + + /// Returns the result of a componentwise bitwise or operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator | (int4x3 lhs, int rhs) { return new int4x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator | (int lhs, int4x3 rhs) { return new int4x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator ^ (int4x3 lhs, int4x3 rhs) { return new int4x3 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int4x3 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator ^ (int4x3 lhs, int rhs) { return new int4x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 operator ^ (int lhs, int4x3 rhs) { return new int4x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); } + + + + /// Returns the int4 element at a specified index. + unsafe public ref int4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (int4x3* array = &this) { return ref ((int4*)array)[index]; } + } + } + + /// Returns true if the int4x3 is equal to a given int4x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int4x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the int4x3 is equal to a given int4x3, false otherwise. + public override bool Equals(object o) { return Equals((int4x3)o); } + + + /// Returns a hash code for the int4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int4x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z, c0.w, c1.w, c2.w); + } + + /// Returns a string representation of the int4x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int4x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a int4x3 matrix constructed from three int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(int4 c0, int4 c1, int4 c2) { return new int4x3(c0, c1, c2); } + + /// Returns a int4x3 matrix constructed from from 12 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(int m00, int m01, int m02, + int m10, int m11, int m12, + int m20, int m21, int m22, + int m30, int m31, int m32) + { + return new int4x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22, + m30, m31, m32); + } + + /// Returns a int4x3 matrix constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(int v) { return new int4x3(v); } + + /// Returns a int4x3 matrix constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(bool v) { return new int4x3(v); } + + /// Return a int4x3 matrix constructed from a bool4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(bool4x3 v) { return new int4x3(v); } + + /// Returns a int4x3 matrix constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(uint v) { return new int4x3(v); } + + /// Return a int4x3 matrix constructed from a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(uint4x3 v) { return new int4x3(v); } + + /// Returns a int4x3 matrix constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(float v) { return new int4x3(v); } + + /// Return a int4x3 matrix constructed from a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(float4x3 v) { return new int4x3(v); } + + /// Returns a int4x3 matrix constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(double v) { return new int4x3(v); } + + /// Return a int4x3 matrix constructed from a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 int4x3(double4x3 v) { return new int4x3(v); } + + /// Return the int3x4 transpose of a int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 transpose(int4x3 v) + { + return int3x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w); + } + + /// Returns a uint hash code of a int4x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int4x3 v) + { + return csum(asuint(v.c0) * uint4(0x69B60C81u, 0xE0EB6C25u, 0xF648BEABu, 0x6BDB2B07u) + + asuint(v.c1) * uint4(0xEF63C699u, 0x9001903Fu, 0xA895B9CDu, 0x9D23B201u) + + asuint(v.c2) * uint4(0x4B01D3E1u, 0x7461CA0Du, 0x79725379u, 0xD6258E5Bu)) + 0xEE390C97u; + } + + /// + /// Returns a uint4 vector hash code of a int4x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(int4x3 v) + { + return (asuint(v.c0) * uint4(0x9C8A2F05u, 0x4DDC6509u, 0x7CF083CBu, 0x5C4D6CEDu) + + asuint(v.c1) * uint4(0xF9137117u, 0xE857DCE1u, 0xF62213C5u, 0x9CDAA959u) + + asuint(v.c2) * uint4(0xAA269ABFu, 0xD54BA36Fu, 0xFD0847B9u, 0x8189A683u)) + 0xB139D651u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x3.gen.cs.meta new file mode 100644 index 0000000..f6d07ec --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 625f7c407b9c1474bbfcb1c17db16571 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x4.gen.cs new file mode 100644 index 0000000..2125aac --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x4.gen.cs @@ -0,0 +1,546 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct int4x4 : System.IEquatable, IFormattable + { + public int4 c0; + public int4 c1; + public int4 c2; + public int4 c3; + + /// int4x4 identity transform. + public static readonly int4x4 identity = new int4x4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); + + /// int4x4 zero value. + public static readonly int4x4 zero; + + /// Constructs a int4x4 matrix from four int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(int4 c0, int4 c1, int4 c2, int4 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a int4x4 matrix from 16 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(int m00, int m01, int m02, int m03, + int m10, int m11, int m12, int m13, + int m20, int m21, int m22, int m23, + int m30, int m31, int m32, int m33) + { + this.c0 = new int4(m00, m10, m20, m30); + this.c1 = new int4(m01, m11, m21, m31); + this.c2 = new int4(m02, m12, m22, m32); + this.c3 = new int4(m03, m13, m23, m33); + } + + /// Constructs a int4x4 matrix from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(int v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a int4x4 matrix from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(bool v) + { + this.c0 = math.select(new int4(0), new int4(1), v); + this.c1 = math.select(new int4(0), new int4(1), v); + this.c2 = math.select(new int4(0), new int4(1), v); + this.c3 = math.select(new int4(0), new int4(1), v); + } + + /// Constructs a int4x4 matrix from a bool4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(bool4x4 v) + { + this.c0 = math.select(new int4(0), new int4(1), v.c0); + this.c1 = math.select(new int4(0), new int4(1), v.c1); + this.c2 = math.select(new int4(0), new int4(1), v.c2); + this.c3 = math.select(new int4(0), new int4(1), v.c3); + } + + /// Constructs a int4x4 matrix from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(uint v) + { + this.c0 = (int4)v; + this.c1 = (int4)v; + this.c2 = (int4)v; + this.c3 = (int4)v; + } + + /// Constructs a int4x4 matrix from a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(uint4x4 v) + { + this.c0 = (int4)v.c0; + this.c1 = (int4)v.c1; + this.c2 = (int4)v.c2; + this.c3 = (int4)v.c3; + } + + /// Constructs a int4x4 matrix from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(float v) + { + this.c0 = (int4)v; + this.c1 = (int4)v; + this.c2 = (int4)v; + this.c3 = (int4)v; + } + + /// Constructs a int4x4 matrix from a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(float4x4 v) + { + this.c0 = (int4)v.c0; + this.c1 = (int4)v.c1; + this.c2 = (int4)v.c2; + this.c3 = (int4)v.c3; + } + + /// Constructs a int4x4 matrix from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(double v) + { + this.c0 = (int4)v; + this.c1 = (int4)v; + this.c2 = (int4)v; + this.c3 = (int4)v; + } + + /// Constructs a int4x4 matrix from a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4x4(double4x4 v) + { + this.c0 = (int4)v.c0; + this.c1 = (int4)v.c1; + this.c2 = (int4)v.c2; + this.c3 = (int4)v.c3; + } + + + /// Implicitly converts a single int value to a int4x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator int4x4(int v) { return new int4x4(v); } + + /// Explicitly converts a single bool value to a int4x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x4(bool v) { return new int4x4(v); } + + /// Explicitly converts a bool4x4 matrix to a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x4(bool4x4 v) { return new int4x4(v); } + + /// Explicitly converts a single uint value to a int4x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x4(uint v) { return new int4x4(v); } + + /// Explicitly converts a uint4x4 matrix to a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x4(uint4x4 v) { return new int4x4(v); } + + /// Explicitly converts a single float value to a int4x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x4(float v) { return new int4x4(v); } + + /// Explicitly converts a float4x4 matrix to a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x4(float4x4 v) { return new int4x4(v); } + + /// Explicitly converts a single double value to a int4x4 matrix by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x4(double v) { return new int4x4(v); } + + /// Explicitly converts a double4x4 matrix to a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator int4x4(double4x4 v) { return new int4x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator * (int4x4 lhs, int4x4 rhs) { return new int4x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator * (int4x4 lhs, int rhs) { return new int4x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator * (int lhs, int4x4 rhs) { return new int4x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator + (int4x4 lhs, int4x4 rhs) { return new int4x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator + (int4x4 lhs, int rhs) { return new int4x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator + (int lhs, int4x4 rhs) { return new int4x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator - (int4x4 lhs, int4x4 rhs) { return new int4x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator - (int4x4 lhs, int rhs) { return new int4x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator - (int lhs, int4x4 rhs) { return new int4x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator / (int4x4 lhs, int4x4 rhs) { return new int4x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator / (int4x4 lhs, int rhs) { return new int4x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator / (int lhs, int4x4 rhs) { return new int4x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator % (int4x4 lhs, int4x4 rhs) { return new int4x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator % (int4x4 lhs, int rhs) { return new int4x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator % (int lhs, int4x4 rhs) { return new int4x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator ++ (int4x4 val) { return new int4x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator -- (int4x4 val) { return new int4x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (int4x4 lhs, int4x4 rhs) { return new bool4x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (int4x4 lhs, int rhs) { return new bool4x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (int lhs, int4x4 rhs) { return new bool4x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (int4x4 lhs, int4x4 rhs) { return new bool4x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (int4x4 lhs, int rhs) { return new bool4x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (int lhs, int4x4 rhs) { return new bool4x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (int4x4 lhs, int4x4 rhs) { return new bool4x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (int4x4 lhs, int rhs) { return new bool4x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (int lhs, int4x4 rhs) { return new bool4x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (int4x4 lhs, int4x4 rhs) { return new bool4x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (int4x4 lhs, int rhs) { return new bool4x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (int lhs, int4x4 rhs) { return new bool4x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator - (int4x4 val) { return new int4x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator + (int4x4 val) { return new int4x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise left shift operation on an int4x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator << (int4x4 x, int n) { return new int4x4 (x.c0 << n, x.c1 << n, x.c2 << n, x.c3 << n); } + + /// Returns the result of a componentwise right shift operation on an int4x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator >> (int4x4 x, int n) { return new int4x4 (x.c0 >> n, x.c1 >> n, x.c2 >> n, x.c3 >> n); } + + /// Returns the result of a componentwise equality operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (int4x4 lhs, int4x4 rhs) { return new bool4x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (int4x4 lhs, int rhs) { return new bool4x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (int lhs, int4x4 rhs) { return new bool4x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (int4x4 lhs, int4x4 rhs) { return new bool4x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (int4x4 lhs, int rhs) { return new bool4x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (int lhs, int4x4 rhs) { return new bool4x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + /// Returns the result of a componentwise bitwise not operation on an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator ~ (int4x4 val) { return new int4x4 (~val.c0, ~val.c1, ~val.c2, ~val.c3); } + + + /// Returns the result of a componentwise bitwise and operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator & (int4x4 lhs, int4x4 rhs) { return new int4x4 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2, lhs.c3 & rhs.c3); } + + /// Returns the result of a componentwise bitwise and operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator & (int4x4 lhs, int rhs) { return new int4x4 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs, lhs.c3 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator & (int lhs, int4x4 rhs) { return new int4x4 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2, lhs & rhs.c3); } + + + /// Returns the result of a componentwise bitwise or operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator | (int4x4 lhs, int4x4 rhs) { return new int4x4 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2, lhs.c3 | rhs.c3); } + + /// Returns the result of a componentwise bitwise or operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator | (int4x4 lhs, int rhs) { return new int4x4 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs, lhs.c3 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator | (int lhs, int4x4 rhs) { return new int4x4 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2, lhs | rhs.c3); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two int4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator ^ (int4x4 lhs, int4x4 rhs) { return new int4x4 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2, lhs.c3 ^ rhs.c3); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int4x4 matrix and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator ^ (int4x4 lhs, int rhs) { return new int4x4 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs, lhs.c3 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on an int value and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 operator ^ (int lhs, int4x4 rhs) { return new int4x4 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2, lhs ^ rhs.c3); } + + + + /// Returns the int4 element at a specified index. + unsafe public ref int4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (int4x4* array = &this) { return ref ((int4*)array)[index]; } + } + } + + /// Returns true if the int4x4 is equal to a given int4x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(int4x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the int4x4 is equal to a given int4x4, false otherwise. + public override bool Equals(object o) { return Equals((int4x4)o); } + + + /// Returns a hash code for the int4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the int4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("int4x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z, c0.w, c1.w, c2.w, c3.w); + } + + /// Returns a string representation of the int4x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("int4x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c3.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider), c3.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a int4x4 matrix constructed from four int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(int4 c0, int4 c1, int4 c2, int4 c3) { return new int4x4(c0, c1, c2, c3); } + + /// Returns a int4x4 matrix constructed from from 16 int values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(int m00, int m01, int m02, int m03, + int m10, int m11, int m12, int m13, + int m20, int m21, int m22, int m23, + int m30, int m31, int m32, int m33) + { + return new int4x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23, + m30, m31, m32, m33); + } + + /// Returns a int4x4 matrix constructed from a single int value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(int v) { return new int4x4(v); } + + /// Returns a int4x4 matrix constructed from a single bool value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(bool v) { return new int4x4(v); } + + /// Return a int4x4 matrix constructed from a bool4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(bool4x4 v) { return new int4x4(v); } + + /// Returns a int4x4 matrix constructed from a single uint value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(uint v) { return new int4x4(v); } + + /// Return a int4x4 matrix constructed from a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(uint4x4 v) { return new int4x4(v); } + + /// Returns a int4x4 matrix constructed from a single float value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(float v) { return new int4x4(v); } + + /// Return a int4x4 matrix constructed from a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(float4x4 v) { return new int4x4(v); } + + /// Returns a int4x4 matrix constructed from a single double value by converting it to int and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(double v) { return new int4x4(v); } + + /// Return a int4x4 matrix constructed from a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 int4x4(double4x4 v) { return new int4x4(v); } + + /// Return the int4x4 transpose of a int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 transpose(int4x4 v) + { + return int4x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w, + v.c3.x, v.c3.y, v.c3.z, v.c3.w); + } + + /// Returns the determinant of a int4x4 matrix. + public static int determinant(int4x4 m) + { + int4 c0 = m.c0; + int4 c1 = m.c1; + int4 c2 = m.c2; + int4 c3 = m.c3; + + int m00 = c1.y * (c2.z * c3.w - c2.w * c3.z) - c2.y * (c1.z * c3.w - c1.w * c3.z) + c3.y * (c1.z * c2.w - c1.w * c2.z); + int m01 = c0.y * (c2.z * c3.w - c2.w * c3.z) - c2.y * (c0.z * c3.w - c0.w * c3.z) + c3.y * (c0.z * c2.w - c0.w * c2.z); + int m02 = c0.y * (c1.z * c3.w - c1.w * c3.z) - c1.y * (c0.z * c3.w - c0.w * c3.z) + c3.y * (c0.z * c1.w - c0.w * c1.z); + int m03 = c0.y * (c1.z * c2.w - c1.w * c2.z) - c1.y * (c0.z * c2.w - c0.w * c2.z) + c2.y * (c0.z * c1.w - c0.w * c1.z); + + return c0.x * m00 - c1.x * m01 + c2.x * m02 - c3.x * m03; + } + + /// Returns a uint hash code of a int4x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(int4x4 v) + { + return csum(asuint(v.c0) * uint4(0x5D1B165Bu, 0x87096CD7u, 0x4C7F6DD1u, 0x4822A3E9u) + + asuint(v.c1) * uint4(0xAAC3C25Du, 0xD21D0945u, 0x88FCAB2Du, 0x614DA60Du) + + asuint(v.c2) * uint4(0x5BA2C50Bu, 0x8C455ACBu, 0xCD266C89u, 0xF1852A33u) + + asuint(v.c3) * uint4(0x77E35E77u, 0x863E3729u, 0xE191B035u, 0x68586FAFu)) + 0xD4DFF6D3u; + } + + /// + /// Returns a uint4 vector hash code of a int4x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(int4x4 v) + { + return (asuint(v.c0) * uint4(0xCB634F4Du, 0x9B13B92Du, 0x4ABF0813u, 0x86068063u) + + asuint(v.c1) * uint4(0xD75513F9u, 0x5AB3E8CDu, 0x676E8407u, 0xB36DE767u) + + asuint(v.c2) * uint4(0x6FCA387Du, 0xAF0F3103u, 0xE4A056C7u, 0x841D8225u) + + asuint(v.c3) * uint4(0xC9393C7Du, 0xD42EAFA3u, 0xD9AFD06Du, 0x97A65421u)) + 0x7809205Fu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x4.gen.cs.meta new file mode 100644 index 0000000..25bcfbf --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/int4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d606f419b22349e1a0d1d639bdfac05 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math.cs new file mode 100644 index 0000000..bf84dbd --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math.cs @@ -0,0 +1,3470 @@ +using System; +using System.Runtime.InteropServices; +using System.Runtime.CompilerServices; + +namespace Unity.Mathematics +{ + public static partial class math + { + /// Extrinsic rotation order. Specifies in which order rotations around the principal axes (x, y and z) are to be applied. + public enum RotationOrder : byte + { + /// Extrinsic rotation around the x axis, then around the y axis and finally around the z axis. + XYZ, + /// Extrinsic rotation around the x axis, then around the z axis and finally around the y axis. + XZY, + /// Extrinsic rotation around the y axis, then around the x axis and finally around the z axis. + YXZ, + /// Extrinsic rotation around the y axis, then around the z axis and finally around the x axis. + YZX, + /// Extrinsic rotation around the z axis, then around the x axis and finally around the y axis. + ZXY, + /// Extrinsic rotation around the z axis, then around the y axis and finally around the x axis. + ZYX, + /// Unity default rotation order. Extrinsic Rotation around the z axis, then around the x axis and finally around the y axis. + Default = ZXY + }; + + /// Specifies a shuffle component. + public enum ShuffleComponent : byte + { + /// Specified the x component of the left vector. + LeftX, + /// Specified the y component of the left vector. + LeftY, + /// Specified the z component of the left vector. + LeftZ, + /// Specified the w component of the left vector. + LeftW, + + /// Specified the x component of the right vector. + RightX, + /// Specified the y component of the right vector. + RightY, + /// Specified the z component of the right vector. + RightZ, + /// Specified the w component of the right vector. + RightW + }; + + /// The mathematical constant e also known as Euler's number. Approximately 2.72. This is a f64/double precision constant. + public const double E_DBL = 2.71828182845904523536; + + /// The base 2 logarithm of e. Approximately 1.44. This is a f64/double precision constant. + public const double LOG2E_DBL = 1.44269504088896340736; + + /// The base 10 logarithm of e. Approximately 0.43. This is a f64/double precision constant. + public const double LOG10E_DBL = 0.434294481903251827651; + + /// The natural logarithm of 2. Approximately 0.69. This is a f64/double precision constant. + public const double LN2_DBL = 0.693147180559945309417; + + /// The natural logarithm of 10. Approximately 2.30. This is a f64/double precision constant. + public const double LN10_DBL = 2.30258509299404568402; + + /// The mathematical constant pi. Approximately 3.14. This is a f64/double precision constant. + public const double PI_DBL = 3.14159265358979323846; + + /// The square root 2. Approximately 1.41. This is a f64/double precision constant. + public const double SQRT2_DBL = 1.41421356237309504880; + + /// The smallest positive normal number representable in a float. + public const float FLT_MIN_NORMAL = 1.175494351e-38F; + + /// The smallest positive normal number representable in a double. This is a f64/double precision constant. + public const double DBL_MIN_NORMAL = 2.2250738585072014e-308; + + /// The mathematical constant e also known as Euler's number. Approximately 2.72. + public const float E = (float)E_DBL; + + /// The base 2 logarithm of e. Approximately 1.44. + public const float LOG2E = (float)LOG2E_DBL; + + /// The base 10 logarithm of e. Approximately 0.43. + public const float LOG10E = (float)LOG10E_DBL; + + /// The natural logarithm of 2. Approximately 0.69. + public const float LN2 = (float)LN2_DBL; + + /// The natural logarithm of 10. Approximately 2.30. + public const float LN10 = (float)LN10_DBL; + + /// The mathematical constant pi. Approximately 3.14. + public const float PI = (float)PI_DBL; + + /// The square root 2. Approximately 1.41. + public const float SQRT2 = (float)SQRT2_DBL; + + /// Returns the bit pattern of a uint as an int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int asint(uint x) { return (int)x; } + + /// Returns the bit pattern of a uint2 as an int2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 asint(uint2 x) { return int2((int)x.x, (int)x.y); } + + /// Returns the bit pattern of a uint3 as an int3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 asint(uint3 x) { return int3((int)x.x, (int)x.y, (int)x.z); } + + /// Returns the bit pattern of a uint4 as an int4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 asint(uint4 x) { return int4((int)x.x, (int)x.y, (int)x.z, (int)x.w); } + + + /// Returns the bit pattern of a float as an int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int asint(float x) { + IntFloatUnion u; + u.intValue = 0; + u.floatValue = x; + return u.intValue; + } + + /// Returns the bit pattern of a float2 as an int2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 asint(float2 x) { return int2(asint(x.x), asint(x.y)); } + + /// Returns the bit pattern of a float3 as an int3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 asint(float3 x) { return int3(asint(x.x), asint(x.y), asint(x.z)); } + + /// Returns the bit pattern of a float4 as an int4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 asint(float4 x) { return int4(asint(x.x), asint(x.y), asint(x.z), asint(x.w)); } + + + /// Returns the bit pattern of an int as a uint. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint asuint(int x) { return (uint)x; } + + /// Returns the bit pattern of an int2 as a uint2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 asuint(int2 x) { return uint2((uint)x.x, (uint)x.y); } + + /// Returns the bit pattern of an int3 as a uint3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 asuint(int3 x) { return uint3((uint)x.x, (uint)x.y, (uint)x.z); } + + /// Returns the bit pattern of an int4 as a uint4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 asuint(int4 x) { return uint4((uint)x.x, (uint)x.y, (uint)x.z, (uint)x.w); } + + + /// Returns the bit pattern of a float as a uint. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint asuint(float x) { return (uint)asint(x); } + + /// Returns the bit pattern of a float2 as a uint2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 asuint(float2 x) { return uint2(asuint(x.x), asuint(x.y)); } + + /// Returns the bit pattern of a float3 as a uint3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 asuint(float3 x) { return uint3(asuint(x.x), asuint(x.y), asuint(x.z)); } + + /// Returns the bit pattern of a float4 as a uint4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 asuint(float4 x) { return uint4(asuint(x.x), asuint(x.y), asuint(x.z), asuint(x.w)); } + + + /// Returns the bit pattern of a ulong as a long. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long aslong(ulong x) { return (long)x; } + + /// Returns the bit pattern of a double as a long. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long aslong(double x) + { + LongDoubleUnion u; + u.longValue = 0; + u.doubleValue = x; + return u.longValue; + } + + + /// Returns the bit pattern of a long as a ulong. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong asulong(long x) { return (ulong)x; } + + /// Returns the bit pattern of a double as a ulong. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong asulong(double x) { return (ulong) aslong(x); } + + + /// Returns the bit pattern of an int as a float. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float asfloat(int x) + { + IntFloatUnion u; + u.floatValue = 0; + u.intValue = x; + + return u.floatValue; + } + + /// Returns the bit pattern of an int2 as a float2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 asfloat(int2 x) { return float2(asfloat(x.x), asfloat(x.y)); } + + /// Returns the bit pattern of an int3 as a float3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 asfloat(int3 x) { return float3(asfloat(x.x), asfloat(x.y), asfloat(x.z)); } + + /// Returns the bit pattern of an int4 as a float4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 asfloat(int4 x) { return float4(asfloat(x.x), asfloat(x.y), asfloat(x.z), asfloat(x.w)); } + + + /// Returns the bit pattern of a uint as a float. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float asfloat(uint x) { return asfloat((int)x); } + + /// Returns the bit pattern of a uint2 as a float2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 asfloat(uint2 x) { return float2(asfloat(x.x), asfloat(x.y)); } + + /// Returns the bit pattern of a uint3 as a float3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 asfloat(uint3 x) { return float3(asfloat(x.x), asfloat(x.y), asfloat(x.z)); } + + /// Returns the bit pattern of a uint4 as a float4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 asfloat(uint4 x) { return float4(asfloat(x.x), asfloat(x.y), asfloat(x.z), asfloat(x.w)); } + + /// + /// Returns a bitmask representation of a bool4. Storing one 1 bit per component + /// in LSB order, from lower to higher bits (so 4 bits in total). + /// The component x is stored at bit 0, + /// The component y is stored at bit 1, + /// The component z is stored at bit 2, + /// The component w is stored at bit 3 + /// The bool4(x = true, y = true, z = false, w = true) would produce the value 1011 = 0xB + /// + /// The input bool4 to calculate the bitmask for + /// A bitmask representation of the bool4, in LSB order + public static int bitmask(bool4 value) + { + int mask = 0; + if (value.x) mask |= 0x01; + if (value.y) mask |= 0x02; + if (value.z) mask |= 0x04; + if (value.w) mask |= 0x08; + return mask; + } + + /// Returns the bit pattern of a long as a double. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double asdouble(long x) + { + LongDoubleUnion u; + u.doubleValue = 0; + u.longValue = x; + return u.doubleValue; + } + + + /// Returns the bit pattern of a ulong as a double. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double asdouble(ulong x) { return asdouble((long)x); } + + + /// Returns true if the input float is a finite floating point value, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool isfinite(float x) { return abs(x) < float.PositiveInfinity; } + + /// Returns a bool2 indicating for each component of a float2 whether it is a finite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 isfinite(float2 x) { return abs(x) < float.PositiveInfinity; } + + /// Returns a bool3 indicating for each component of a float3 whether it is a finite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 isfinite(float3 x) { return abs(x) < float.PositiveInfinity; } + + /// Returns a bool4 indicating for each component of a float4 whether it is a finite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 isfinite(float4 x) { return abs(x) < float.PositiveInfinity; } + + + /// Returns true if the input double is a finite floating point value, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool isfinite(double x) { return abs(x) < double.PositiveInfinity; } + + /// Returns a bool2 indicating for each component of a double2 whether it is a finite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 isfinite(double2 x) { return abs(x) < double.PositiveInfinity; } + + /// Returns a bool3 indicating for each component of a double3 whether it is a finite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 isfinite(double3 x) { return abs(x) < double.PositiveInfinity; } + + /// Returns a bool4 indicating for each component of a double4 whether it is a finite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 isfinite(double4 x) { return abs(x) < double.PositiveInfinity; } + + + /// Returns true if the input float is an infinite floating point value, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool isinf(float x) { return abs(x) == float.PositiveInfinity; } + + /// Returns a bool2 indicating for each component of a float2 whether it is an infinite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 isinf(float2 x) { return abs(x) == float.PositiveInfinity; } + + /// Returns a bool3 indicating for each component of a float3 whether it is an infinite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 isinf(float3 x) { return abs(x) == float.PositiveInfinity; } + + /// Returns a bool4 indicating for each component of a float4 whether it is an infinite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 isinf(float4 x) { return abs(x) == float.PositiveInfinity; } + + /// Returns true if the input double is an infinite floating point value, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool isinf(double x) { return abs(x) == double.PositiveInfinity; } + + /// Returns a bool2 indicating for each component of a double2 whether it is an infinite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 isinf(double2 x) { return abs(x) == double.PositiveInfinity; } + + /// Returns a bool3 indicating for each component of a double3 whether it is an infinite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 isinf(double3 x) { return abs(x) == double.PositiveInfinity; } + + /// Returns a bool4 indicating for each component of a double4 whether it is an infinite floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 isinf(double4 x) { return abs(x) == double.PositiveInfinity; } + + + /// Returns true if the input float is a NaN (not a number) floating point value, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool isnan(float x) { return (asuint(x) & 0x7FFFFFFF) > 0x7F800000; } + + /// Returns a bool2 indicating for each component of a float2 whether it is a NaN (not a number) floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 isnan(float2 x) { return (asuint(x) & 0x7FFFFFFF) > 0x7F800000; } + + /// Returns a bool3 indicating for each component of a float3 whether it is a NaN (not a number) floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 isnan(float3 x) { return (asuint(x) & 0x7FFFFFFF) > 0x7F800000; } + + /// Returns a bool4 indicating for each component of a float4 whether it is a NaN (not a number) floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 isnan(float4 x) { return (asuint(x) & 0x7FFFFFFF) > 0x7F800000; } + + + /// Returns true if the input double is a NaN (not a number) floating point value, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool isnan(double x) { return (asulong(x) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000; } + + /// Returns a bool2 indicating for each component of a double2 whether it is a NaN (not a number) floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 isnan(double2 x) { + return bool2((asulong(x.x) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000, + (asulong(x.y) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000); + } + + /// Returns a bool3 indicating for each component of a double3 whether it is a NaN (not a number) floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 isnan(double3 x) + { + return bool3((asulong(x.x) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000, + (asulong(x.y) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000, + (asulong(x.z) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000); + } + + /// Returns a bool4 indicating for each component of a double4 whether it is a NaN (not a number) floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 isnan(double4 x) + { + return bool4((asulong(x.x) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000, + (asulong(x.y) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000, + (asulong(x.z) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000, + (asulong(x.w) & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000); + } + + + /// Returns the minimum of two int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int min(int x, int y) { return x < y ? x : y; } + + /// Returns the componentwise minimum of two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 min(int2 x, int2 y) { return new int2(min(x.x, y.x), min(x.y, y.y)); } + + /// Returns the componentwise minimum of two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 min(int3 x, int3 y) { return new int3(min(x.x, y.x), min(x.y, y.y), min(x.z, y.z)); } + + /// Returns the componentwise minimum of two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 min(int4 x, int4 y) { return new int4(min(x.x, y.x), min(x.y, y.y), min(x.z, y.z), min(x.w, y.w)); } + + + /// Returns the minimum of two uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint min(uint x, uint y) { return x < y ? x : y; } + + /// Returns the componentwise minimum of two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 min(uint2 x, uint2 y) { return new uint2(min(x.x, y.x), min(x.y, y.y)); } + + /// Returns the componentwise minimum of two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 min(uint3 x, uint3 y) { return new uint3(min(x.x, y.x), min(x.y, y.y), min(x.z, y.z)); } + + /// Returns the componentwise minimum of two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 min(uint4 x, uint4 y) { return new uint4(min(x.x, y.x), min(x.y, y.y), min(x.z, y.z), min(x.w, y.w)); } + + + /// Returns the minimum of two long values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long min(long x, long y) { return x < y ? x : y; } + + + /// Returns the minimum of two ulong values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong min(ulong x, ulong y) { return x < y ? x : y; } + + + /// Returns the minimum of two float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float min(float x, float y) { return float.IsNaN(y) || x < y ? x : y; } + + /// Returns the componentwise minimum of two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 min(float2 x, float2 y) { return new float2(min(x.x, y.x), min(x.y, y.y)); } + + /// Returns the componentwise minimum of two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 min(float3 x, float3 y) { return new float3(min(x.x, y.x), min(x.y, y.y), min(x.z, y.z)); } + + /// Returns the componentwise minimum of two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 min(float4 x, float4 y) { return new float4(min(x.x, y.x), min(x.y, y.y), min(x.z, y.z), min(x.w, y.w)); } + + + /// Returns the minimum of two double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double min(double x, double y) { return double.IsNaN(y) || x < y ? x : y; } + + /// Returns the componentwise minimum of two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 min(double2 x, double2 y) { return new double2(min(x.x, y.x), min(x.y, y.y)); } + + /// Returns the componentwise minimum of two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 min(double3 x, double3 y) { return new double3(min(x.x, y.x), min(x.y, y.y), min(x.z, y.z)); } + + /// Returns the componentwise minimum of two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 min(double4 x, double4 y) { return new double4(min(x.x, y.x), min(x.y, y.y), min(x.z, y.z), min(x.w, y.w)); } + + + /// Returns the maximum of two int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int max(int x, int y) { return x > y ? x : y; } + + /// Returns the componentwise maximum of two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 max(int2 x, int2 y) { return new int2(max(x.x, y.x), max(x.y, y.y)); } + + /// Returns the componentwise maximum of two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 max(int3 x, int3 y) { return new int3(max(x.x, y.x), max(x.y, y.y), max(x.z, y.z)); } + + /// Returns the componentwise maximum of two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 max(int4 x, int4 y) { return new int4(max(x.x, y.x), max(x.y, y.y), max(x.z, y.z), max(x.w, y.w)); } + + + /// Returns the maximum of two uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint max(uint x, uint y) { return x > y ? x : y; } + + /// Returns the componentwise maximum of two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 max(uint2 x, uint2 y) { return new uint2(max(x.x, y.x), max(x.y, y.y)); } + + /// Returns the componentwise maximum of two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 max(uint3 x, uint3 y) { return new uint3(max(x.x, y.x), max(x.y, y.y), max(x.z, y.z)); } + + /// Returns the componentwise maximum of two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 max(uint4 x, uint4 y) { return new uint4(max(x.x, y.x), max(x.y, y.y), max(x.z, y.z), max(x.w, y.w)); } + + + /// Returns the maximum of two long values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long max(long x, long y) { return x > y ? x : y; } + + + /// Returns the maximum of two ulong values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong max(ulong x, ulong y) { return x > y ? x : y; } + + + /// Returns the maximum of two float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float max(float x, float y) { return float.IsNaN(y) || x > y ? x : y; } + + /// Returns the componentwise maximum of two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 max(float2 x, float2 y) { return new float2(max(x.x, y.x), max(x.y, y.y)); } + + /// Returns the componentwise maximum of two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 max(float3 x, float3 y) { return new float3(max(x.x, y.x), max(x.y, y.y), max(x.z, y.z)); } + + /// Returns the componentwise maximum of two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 max(float4 x, float4 y) { return new float4(max(x.x, y.x), max(x.y, y.y), max(x.z, y.z), max(x.w, y.w)); } + + + /// Returns the maximum of two double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double max(double x, double y) { return double.IsNaN(y) || x > y ? x : y; } + + /// Returns the componentwise maximum of two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 max(double2 x, double2 y) { return new double2(max(x.x, y.x), max(x.y, y.y)); } + + /// Returns the componentwise maximum of two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 max(double3 x, double3 y) { return new double3(max(x.x, y.x), max(x.y, y.y), max(x.z, y.z)); } + + /// Returns the componentwise maximum of two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 max(double4 x, double4 y) { return new double4(max(x.x, y.x), max(x.y, y.y), max(x.z, y.z), max(x.w, y.w)); } + + + /// Returns the result of linearly interpolating from x to y using the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float lerp(float x, float y, float s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 lerp(float2 x, float2 y, float s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 lerp(float3 x, float3 y, float s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 lerp(float4 x, float4 y, float s) { return x + s * (y - x); } + + + /// Returns the result of a componentwise linear interpolating from x to y using the corresponding components of the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 lerp(float2 x, float2 y, float2 s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the corresponding components of the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 lerp(float3 x, float3 y, float3 s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the corresponding components of the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 lerp(float4 x, float4 y, float4 s) { return x + s * (y - x); } + + + /// Returns the result of linearly interpolating from x to y using the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double lerp(double x, double y, double s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 lerp(double2 x, double2 y, double s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 lerp(double3 x, double3 y, double s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 lerp(double4 x, double4 y, double s) { return x + s * (y - x); } + + + /// Returns the result of a componentwise linear interpolating from x to y using the corresponding components of the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 lerp(double2 x, double2 y, double2 s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the corresponding components of the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 lerp(double3 x, double3 y, double3 s) { return x + s * (y - x); } + + /// Returns the result of a componentwise linear interpolating from x to y using the corresponding components of the interpolation parameter s. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 lerp(double4 x, double4 y, double4 s) { return x + s * (y - x); } + + + /// Returns the result of normalizing a floating point value x to a range [a, b]. The opposite of lerp. Equivalent to (x - a) / (b - a). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float unlerp(float a, float b, float x) { return (x - a) / (b - a); } + + /// Returns the componentwise result of normalizing a floating point value x to a range [a, b]. The opposite of lerp. Equivalent to (x - a) / (b - a). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 unlerp(float2 a, float2 b, float2 x) { return (x - a) / (b - a); } + + /// Returns the componentwise result of normalizing a floating point value x to a range [a, b]. The opposite of lerp. Equivalent to (x - a) / (b - a). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 unlerp(float3 a, float3 b, float3 x) { return (x - a) / (b - a); } + + /// Returns the componentwise result of normalizing a floating point value x to a range [a, b]. The opposite of lerp. Equivalent to (x - a) / (b - a). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 unlerp(float4 a, float4 b, float4 x) { return (x - a) / (b - a); } + + + /// Returns the result of normalizing a floating point value x to a range [a, b]. The opposite of lerp. Equivalent to (x - a) / (b - a). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double unlerp(double a, double b, double x) { return (x - a) / (b - a); } + + /// Returns the componentwise result of normalizing a floating point value x to a range [a, b]. The opposite of lerp. Equivalent to (x - a) / (b - a). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 unlerp(double2 a, double2 b, double2 x) { return (x - a) / (b - a); } + + /// Returns the componentwise result of normalizing a floating point value x to a range [a, b]. The opposite of lerp. Equivalent to (x - a) / (b - a). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 unlerp(double3 a, double3 b, double3 x) { return (x - a) / (b - a); } + + /// Returns the componentwise result of normalizing a floating point value x to a range [a, b]. The opposite of lerp. Equivalent to (x - a) / (b - a). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 unlerp(double4 a, double4 b, double4 x) { return (x - a) / (b - a); } + + + /// Returns the result of a non-clamping linear remapping of a value x from [a, b] to [c, d]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float remap(float a, float b, float c, float d, float x) { return lerp(c, d, unlerp(a, b, x)); } + + /// Returns the componentwise result of a non-clamping linear remapping of a value x from [a, b] to [c, d]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 remap(float2 a, float2 b, float2 c, float2 d, float2 x) { return lerp(c, d, unlerp(a, b, x)); } + + /// Returns the componentwise result of a non-clamping linear remapping of a value x from [a, b] to [c, d]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 remap(float3 a, float3 b, float3 c, float3 d, float3 x) { return lerp(c, d, unlerp(a, b, x)); } + + /// Returns the componentwise result of a non-clamping linear remapping of a value x from [a, b] to [c, d]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 remap(float4 a, float4 b, float4 c, float4 d, float4 x) { return lerp(c, d, unlerp(a, b, x)); } + + + /// Returns the result of a non-clamping linear remapping of a value x from [a, b] to [c, d]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double remap(double a, double b, double c, double d, double x) { return lerp(c, d, unlerp(a, b, x)); } + + /// Returns the componentwise result of a non-clamping linear remapping of a value x from [a, b] to [c, d]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 remap(double2 a, double2 b, double2 c, double2 d, double2 x) { return lerp(c, d, unlerp(a, b, x)); } + + /// Returns the componentwise result of a non-clamping linear remapping of a value x from [a, b] to [c, d]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 remap(double3 a, double3 b, double3 c, double3 d, double3 x) { return lerp(c, d, unlerp(a, b, x)); } + + /// Returns the componentwise result of a non-clamping linear remapping of a value x from [a, b] to [c, d]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 remap(double4 a, double4 b, double4 c, double4 d, double4 x) { return lerp(c, d, unlerp(a, b, x)); } + + + /// Returns the result of a multiply-add operation (a * b + c) on 3 int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int mad(int a, int b, int c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 mad(int2 a, int2 b, int2 c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 mad(int3 a, int3 b, int3 c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 mad(int4 a, int4 b, int4 c) { return a * b + c; } + + + /// Returns the result of a multiply-add operation (a * b + c) on 3 uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint mad(uint a, uint b, uint c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 mad(uint2 a, uint2 b, uint2 c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 mad(uint3 a, uint3 b, uint3 c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 mad(uint4 a, uint4 b, uint4 c) { return a * b + c; } + + + /// Returns the result of a multiply-add operation (a * b + c) on 3 long values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long mad(long a, long b, long c) { return a * b + c; } + + + /// Returns the result of a multiply-add operation (a * b + c) on 3 ulong values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong mad(ulong a, ulong b, ulong c) { return a * b + c; } + + + /// Returns the result of a multiply-add operation (a * b + c) on 3 float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float mad(float a, float b, float c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 mad(float2 a, float2 b, float2 c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 mad(float3 a, float3 b, float3 c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 mad(float4 a, float4 b, float4 c) { return a * b + c; } + + + /// Returns the result of a multiply-add operation (a * b + c) on 3 double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double mad(double a, double b, double c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 mad(double2 a, double2 b, double2 c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 mad(double3 a, double3 b, double3 c) { return a * b + c; } + + /// Returns the result of a componentwise multiply-add operation (a * b + c) on 3 double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 mad(double4 a, double4 b, double4 c) { return a * b + c; } + + + /// Returns the result of clamping the value x into the interval [a, b], where x, a and b are int values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int clamp(int x, int a, int b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the int2 x into the interval [a, b], where a and b are int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 clamp(int2 x, int2 a, int2 b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the int3 x into the interval [a, b], where x, a and b are int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 clamp(int3 x, int3 a, int3 b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 clamp(int4 x, int4 a, int4 b) { return max(a, min(b, x)); } + + + /// Returns the result of clamping the value x into the interval [a, b], where x, a and b are uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint clamp(uint x, uint a, uint b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 clamp(uint2 x, uint2 a, uint2 b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 clamp(uint3 x, uint3 a, uint3 b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 clamp(uint4 x, uint4 a, uint4 b) { return max(a, min(b, x)); } + + + /// Returns the result of clamping the value x into the interval [a, b], where x, a and b are long values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long clamp(long x, long a, long b) { return max(a, min(b, x)); } + + /// Returns the result of clamping the value x into the interval [a, b], where x, a and b are ulong values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong clamp(ulong x, ulong a, ulong b) { return max(a, min(b, x)); } + + + /// Returns the result of clamping the value x into the interval [a, b], where x, a and b are float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float clamp(float x, float a, float b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 clamp(float2 x, float2 a, float2 b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 clamp(float3 x, float3 a, float3 b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 clamp(float4 x, float4 a, float4 b) { return max(a, min(b, x)); } + + + /// Returns the result of clamping the value x into the interval [a, b], where x, a and b are double values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double clamp(double x, double a, double b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 clamp(double2 x, double2 a, double2 b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 clamp(double3 x, double3 a, double3 b) { return max(a, min(b, x)); } + + /// Returns the result of a componentwise clamping of the value x into the interval [a, b], where x, a and b are double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 clamp(double4 x, double4 a, double4 b) { return max(a, min(b, x)); } + + + /// Returns the result of clamping the float value x into the interval [0, 1]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float saturate(float x) { return clamp(x, 0.0f, 1.0f); } + + /// Returns the result of a componentwise clamping of the float2 vector x into the interval [0, 1]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 saturate(float2 x) { return clamp(x, new float2(0.0f), new float2(1.0f)); } + + /// Returns the result of a componentwise clamping of the float3 vector x into the interval [0, 1]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 saturate(float3 x) { return clamp(x, new float3(0.0f), new float3(1.0f)); } + + /// Returns the result of a componentwise clamping of the float4 vector x into the interval [0, 1]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 saturate(float4 x) { return clamp(x, new float4(0.0f), new float4(1.0f)); } + + + /// Returns the result of clamping the double value x into the interval [0, 1]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double saturate(double x) { return clamp(x, 0.0, 1.0); } + + /// Returns the result of a componentwise clamping of the double2 vector x into the interval [0, 1]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 saturate(double2 x) { return clamp(x, new double2(0.0), new double2(1.0)); } + + /// Returns the result of a componentwise clamping of the double3 vector x into the interval [0, 1]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 saturate(double3 x) { return clamp(x, new double3(0.0), new double3(1.0)); } + + /// Returns the result of a componentwise clamping of the double4 vector x into the interval [0, 1]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 saturate(double4 x) { return clamp(x, new double4(0.0), new double4(1.0)); } + + + /// Returns the absolute value of a int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int abs(int x) { return max(-x, x); } + + /// Returns the componentwise absolute value of a int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 abs(int2 x) { return max(-x, x); } + + /// Returns the componentwise absolute value of a int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 abs(int3 x) { return max(-x, x); } + + /// Returns the componentwise absolute value of a int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 abs(int4 x) { return max(-x, x); } + + /// Returns the absolute value of a long value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long abs(long x) { return max(-x, x); } + + + /// Returns the absolute value of a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float abs(float x) { return asfloat(asuint(x) & 0x7FFFFFFF); } + + /// Returns the componentwise absolute value of a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 abs(float2 x) { return asfloat(asuint(x) & 0x7FFFFFFF); } + + /// Returns the componentwise absolute value of a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 abs(float3 x) { return asfloat(asuint(x) & 0x7FFFFFFF); } + + /// Returns the componentwise absolute value of a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 abs(float4 x) { return asfloat(asuint(x) & 0x7FFFFFFF); } + + + /// Returns the absolute value of a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double abs(double x) { return asdouble(asulong(x) & 0x7FFFFFFFFFFFFFFF); } + + /// Returns the componentwise absolute value of a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 abs(double2 x) { return double2(asdouble(asulong(x.x) & 0x7FFFFFFFFFFFFFFF), asdouble(asulong(x.y) & 0x7FFFFFFFFFFFFFFF)); } + + /// Returns the componentwise absolute value of a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 abs(double3 x) { return double3(asdouble(asulong(x.x) & 0x7FFFFFFFFFFFFFFF), asdouble(asulong(x.y) & 0x7FFFFFFFFFFFFFFF), asdouble(asulong(x.z) & 0x7FFFFFFFFFFFFFFF)); } + + /// Returns the componentwise absolute value of a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 abs(double4 x) { return double4(asdouble(asulong(x.x) & 0x7FFFFFFFFFFFFFFF), asdouble(asulong(x.y) & 0x7FFFFFFFFFFFFFFF), asdouble(asulong(x.z) & 0x7FFFFFFFFFFFFFFF), asdouble(asulong(x.w) & 0x7FFFFFFFFFFFFFFF)); } + + + /// Returns the dot product of two int values. Equivalent to multiplication. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int dot(int x, int y) { return x * y; } + + /// Returns the dot product of two int2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int dot(int2 x, int2 y) { return x.x * y.x + x.y * y.y; } + + /// Returns the dot product of two int3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int dot(int3 x, int3 y) { return x.x * y.x + x.y * y.y + x.z * y.z; } + + /// Returns the dot product of two int4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int dot(int4 x, int4 y) { return x.x * y.x + x.y * y.y + x.z * y.z + x.w * y.w; } + + + /// Returns the dot product of two uint values. Equivalent to multiplication. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint dot(uint x, uint y) { return x * y; } + + /// Returns the dot product of two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint dot(uint2 x, uint2 y) { return x.x * y.x + x.y * y.y; } + + /// Returns the dot product of two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint dot(uint3 x, uint3 y) { return x.x * y.x + x.y * y.y + x.z * y.z; } + + /// Returns the dot product of two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint dot(uint4 x, uint4 y) { return x.x * y.x + x.y * y.y + x.z * y.z + x.w * y.w; } + + + /// Returns the dot product of two float values. Equivalent to multiplication. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float dot(float x, float y) { return x * y; } + + /// Returns the dot product of two float2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float dot(float2 x, float2 y) { return x.x * y.x + x.y * y.y; } + + /// Returns the dot product of two float3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float dot(float3 x, float3 y) { return x.x * y.x + x.y * y.y + x.z * y.z; } + + /// Returns the dot product of two float4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float dot(float4 x, float4 y) { return x.x * y.x + x.y * y.y + x.z * y.z + x.w * y.w; } + + + /// Returns the dot product of two double values. Equivalent to multiplication. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double dot(double x, double y) { return x * y; } + + /// Returns the dot product of two double2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double dot(double2 x, double2 y) { return x.x * y.x + x.y * y.y; } + + /// Returns the dot product of two double3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double dot(double3 x, double3 y) { return x.x * y.x + x.y * y.y + x.z * y.z; } + + /// Returns the dot product of two double4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double dot(double4 x, double4 y) { return x.x * y.x + x.y * y.y + x.z * y.z + x.w * y.w; } + + + /// Returns the tangent of a float value. + public static float tan(float x) { return (float)System.Math.Tan(x); } + + /// Returns the componentwise tangent of a float2 vector. + public static float2 tan(float2 x) { return new float2(tan(x.x), tan(x.y)); } + + /// Returns the componentwise tangent of a float3 vector. + public static float3 tan(float3 x) { return new float3(tan(x.x), tan(x.y), tan(x.z)); } + + /// Returns the componentwise tangent of a float4 vector. + public static float4 tan(float4 x) { return new float4(tan(x.x), tan(x.y), tan(x.z), tan(x.w)); } + + + /// Returns the tangent of a double value. + public static double tan(double x) { return System.Math.Tan(x); } + + /// Returns the componentwise tangent of a double2 vector. + public static double2 tan(double2 x) { return new double2(tan(x.x), tan(x.y)); } + + /// Returns the componentwise tangent of a double3 vector. + public static double3 tan(double3 x) { return new double3(tan(x.x), tan(x.y), tan(x.z)); } + + /// Returns the componentwise tangent of a double4 vector. + public static double4 tan(double4 x) { return new double4(tan(x.x), tan(x.y), tan(x.z), tan(x.w)); } + + + /// Returns the hyperbolic tangent of a float value. + public static float tanh(float x) { return (float)System.Math.Tanh(x); } + + /// Returns the componentwise hyperbolic tangent of a float2 vector. + public static float2 tanh(float2 x) { return new float2(tanh(x.x), tanh(x.y)); } + + /// Returns the componentwise hyperbolic tangent of a float3 vector. + public static float3 tanh(float3 x) { return new float3(tanh(x.x), tanh(x.y), tanh(x.z)); } + + /// Returns the componentwise hyperbolic tangent of a float4 vector. + public static float4 tanh(float4 x) { return new float4(tanh(x.x), tanh(x.y), tanh(x.z), tanh(x.w)); } + + + /// Returns the hyperbolic tangent of a double value. + public static double tanh(double x) { return System.Math.Tanh(x); } + + /// Returns the componentwise hyperbolic tangent of a double2 vector. + public static double2 tanh(double2 x) { return new double2(tanh(x.x), tanh(x.y)); } + + /// Returns the componentwise hyperbolic tangent of a double3 vector. + public static double3 tanh(double3 x) { return new double3(tanh(x.x), tanh(x.y), tanh(x.z)); } + + /// Returns the componentwise hyperbolic tangent of a double4 vector. + public static double4 tanh(double4 x) { return new double4(tanh(x.x), tanh(x.y), tanh(x.z), tanh(x.w)); } + + + /// Returns the arctangent of a float value. + public static float atan(float x) { return (float)System.Math.Atan(x); } + + /// Returns the componentwise arctangent of a float2 vector. + public static float2 atan(float2 x) { return new float2(atan(x.x), atan(x.y)); } + + /// Returns the componentwise arctangent of a float3 vector. + public static float3 atan(float3 x) { return new float3(atan(x.x), atan(x.y), atan(x.z)); } + + /// Returns the componentwise arctangent of a float4 vector. + public static float4 atan(float4 x) { return new float4(atan(x.x), atan(x.y), atan(x.z), atan(x.w)); } + + + /// Returns the arctangent of a double value. + public static double atan(double x) { return System.Math.Atan(x); } + + /// Returns the componentwise arctangent of a double2 vector. + public static double2 atan(double2 x) { return new double2(atan(x.x), atan(x.y)); } + + /// Returns the componentwise arctangent of a double3 vector. + public static double3 atan(double3 x) { return new double3(atan(x.x), atan(x.y), atan(x.z)); } + + /// Returns the componentwise arctangent of a double4 vector. + public static double4 atan(double4 x) { return new double4(atan(x.x), atan(x.y), atan(x.z), atan(x.w)); } + + + /// Returns the 2-argument arctangent of a pair of float values. + public static float atan2(float y, float x) { return (float)System.Math.Atan2(y, x); } + + /// Returns the componentwise 2-argument arctangent of a pair of floats2 vectors. + public static float2 atan2(float2 y, float2 x) { return new float2(atan2(y.x, x.x), atan2(y.y, x.y)); } + + /// Returns the componentwise 2-argument arctangent of a pair of floats3 vectors. + public static float3 atan2(float3 y, float3 x) { return new float3(atan2(y.x, x.x), atan2(y.y, x.y), atan2(y.z, x.z)); } + + /// Returns the componentwise 2-argument arctangent of a pair of floats4 vectors. + public static float4 atan2(float4 y, float4 x) { return new float4(atan2(y.x, x.x), atan2(y.y, x.y), atan2(y.z, x.z), atan2(y.w, x.w)); } + + + /// Returns the 2-argument arctangent of a pair of double values. + public static double atan2(double y, double x) { return System.Math.Atan2(y, x); } + + /// Returns the 2-argument arctangent of a pair of double2 vectors. + public static double2 atan2(double2 y, double2 x) { return new double2(atan2(y.x, x.x), atan2(y.y, x.y)); } + + /// Returns the 2-argument arctangent of a pair of double3 vectors. + public static double3 atan2(double3 y, double3 x) { return new double3(atan2(y.x, x.x), atan2(y.y, x.y), atan2(y.z, x.z)); } + + /// Returns the 2-argument arctangent of a pair of double4 vectors. + public static double4 atan2(double4 y, double4 x) { return new double4(atan2(y.x, x.x), atan2(y.y, x.y), atan2(y.z, x.z), atan2(y.w, x.w)); } + + + /// Returns the cosine of a float value. + public static float cos(float x) { return (float)System.Math.Cos(x); } + + /// Returns the componentwise cosine of a float2 vector. + public static float2 cos(float2 x) { return new float2(cos(x.x), cos(x.y)); } + + /// Returns the componentwise cosine of a float3 vector. + public static float3 cos(float3 x) { return new float3(cos(x.x), cos(x.y), cos(x.z)); } + + /// Returns the componentwise cosine of a float4 vector. + public static float4 cos(float4 x) { return new float4(cos(x.x), cos(x.y), cos(x.z), cos(x.w)); } + + + /// Returns the cosine of a double value. + public static double cos(double x) { return System.Math.Cos(x); } + + /// Returns the componentwise cosine of a double2 vector. + public static double2 cos(double2 x) { return new double2(cos(x.x), cos(x.y)); } + + /// Returns the componentwise cosine of a double3 vector. + public static double3 cos(double3 x) { return new double3(cos(x.x), cos(x.y), cos(x.z)); } + + /// Returns the componentwise cosine of a double4 vector. + public static double4 cos(double4 x) { return new double4(cos(x.x), cos(x.y), cos(x.z), cos(x.w)); } + + + /// Returns the hyperbolic cosine of a float value. + public static float cosh(float x) { return (float)System.Math.Cosh(x); } + + /// Returns the componentwise hyperbolic cosine of a float2 vector. + public static float2 cosh(float2 x) { return new float2(cosh(x.x), cosh(x.y)); } + + /// Returns the componentwise hyperbolic cosine of a float3 vector. + public static float3 cosh(float3 x) { return new float3(cosh(x.x), cosh(x.y), cosh(x.z)); } + + /// Returns the componentwise hyperbolic cosine of a float4 vector. + public static float4 cosh(float4 x) { return new float4(cosh(x.x), cosh(x.y), cosh(x.z), cosh(x.w)); } + + + /// Returns the hyperbolic cosine of a double value. + public static double cosh(double x) { return System.Math.Cosh(x); } + + /// Returns the componentwise hyperbolic cosine of a double2 vector. + public static double2 cosh(double2 x) { return new double2(cosh(x.x), cosh(x.y)); } + + /// Returns the componentwise hyperbolic cosine of a double3 vector. + public static double3 cosh(double3 x) { return new double3(cosh(x.x), cosh(x.y), cosh(x.z)); } + + /// Returns the componentwise hyperbolic cosine of a double4 vector. + public static double4 cosh(double4 x) { return new double4(cosh(x.x), cosh(x.y), cosh(x.z), cosh(x.w)); } + + + /// Returns the arccosine of a float value. + public static float acos(float x) { return (float)System.Math.Acos((float)x); } + + /// Returns the componentwise arccosine of a float2 vector. + public static float2 acos(float2 x) { return new float2(acos(x.x), acos(x.y)); } + + /// Returns the componentwise arccosine of a float3 vector. + public static float3 acos(float3 x) { return new float3(acos(x.x), acos(x.y), acos(x.z)); } + + /// Returns the componentwise arccosine of a float4 vector. + public static float4 acos(float4 x) { return new float4(acos(x.x), acos(x.y), acos(x.z), acos(x.w)); } + + + /// Returns the arccosine of a double value. + public static double acos(double x) { return System.Math.Acos(x); } + + /// Returns the componentwise arccosine of a double2 vector. + public static double2 acos(double2 x) { return new double2(acos(x.x), acos(x.y)); } + + /// Returns the componentwise arccosine of a double3 vector. + public static double3 acos(double3 x) { return new double3(acos(x.x), acos(x.y), acos(x.z)); } + + /// Returns the componentwise arccosine of a double4 vector. + public static double4 acos(double4 x) { return new double4(acos(x.x), acos(x.y), acos(x.z), acos(x.w)); } + + + /// Returns the sine of a float value. + public static float sin(float x) { return (float)System.Math.Sin((float)x); } + + /// Returns the componentwise sine of a float2 vector. + public static float2 sin(float2 x) { return new float2(sin(x.x), sin(x.y)); } + + /// Returns the componentwise sine of a float3 vector. + public static float3 sin(float3 x) { return new float3(sin(x.x), sin(x.y), sin(x.z)); } + + /// Returns the componentwise sine of a float4 vector. + public static float4 sin(float4 x) { return new float4(sin(x.x), sin(x.y), sin(x.z), sin(x.w)); } + + + /// Returns the sine of a double value. + public static double sin(double x) { return System.Math.Sin(x); } + + /// Returns the componentwise sine of a double2 vector. + public static double2 sin(double2 x) { return new double2(sin(x.x), sin(x.y)); } + + /// Returns the componentwise sine of a double3 vector. + public static double3 sin(double3 x) { return new double3(sin(x.x), sin(x.y), sin(x.z)); } + + /// Returns the componentwise sine of a double4 vector. + public static double4 sin(double4 x) { return new double4(sin(x.x), sin(x.y), sin(x.z), sin(x.w)); } + + + /// Returns the hyperbolic sine of a float value. + public static float sinh(float x) { return (float)System.Math.Sinh((float)x); } + + /// Returns the componentwise hyperbolic sine of a float2 vector. + public static float2 sinh(float2 x) { return new float2(sinh(x.x), sinh(x.y)); } + + /// Returns the componentwise hyperbolic sine of a float3 vector. + public static float3 sinh(float3 x) { return new float3(sinh(x.x), sinh(x.y), sinh(x.z)); } + + /// Returns the componentwise hyperbolic sine of a float4 vector. + public static float4 sinh(float4 x) { return new float4(sinh(x.x), sinh(x.y), sinh(x.z), sinh(x.w)); } + + + /// Returns the hyperbolic sine of a double value. + public static double sinh(double x) { return System.Math.Sinh(x); } + + /// Returns the componentwise hyperbolic sine of a double2 vector. + public static double2 sinh(double2 x) { return new double2(sinh(x.x), sinh(x.y)); } + + /// Returns the componentwise hyperbolic sine of a double3 vector. + public static double3 sinh(double3 x) { return new double3(sinh(x.x), sinh(x.y), sinh(x.z)); } + + /// Returns the componentwise hyperbolic sine of a double4 vector. + public static double4 sinh(double4 x) { return new double4(sinh(x.x), sinh(x.y), sinh(x.z), sinh(x.w)); } + + + /// Returns the arcsine of a float value. + public static float asin(float x) { return (float)System.Math.Asin((float)x); } + + /// Returns the componentwise arcsine of a float2 vector. + public static float2 asin(float2 x) { return new float2(asin(x.x), asin(x.y)); } + + /// Returns the componentwise arcsine of a float3 vector. + public static float3 asin(float3 x) { return new float3(asin(x.x), asin(x.y), asin(x.z)); } + + /// Returns the componentwise arcsine of a float4 vector. + public static float4 asin(float4 x) { return new float4(asin(x.x), asin(x.y), asin(x.z), asin(x.w)); } + + + /// Returns the arcsine of a double value. + public static double asin(double x) { return System.Math.Asin(x); } + + /// Returns the componentwise arcsine of a double2 vector. + public static double2 asin(double2 x) { return new double2(asin(x.x), asin(x.y)); } + + /// Returns the componentwise arcsine of a double3 vector. + public static double3 asin(double3 x) { return new double3(asin(x.x), asin(x.y), asin(x.z)); } + + /// Returns the componentwise arcsine of a double4 vector. + public static double4 asin(double4 x) { return new double4(asin(x.x), asin(x.y), asin(x.z), asin(x.w)); } + + + /// Returns the result of rounding a float value up to the nearest integral value less or equal to the original value. + public static float floor(float x) { return (float)System.Math.Floor((float)x); } + + /// Returns the result of rounding each component of a float2 vector value down to the nearest value less or equal to the original value. + public static float2 floor(float2 x) { return new float2(floor(x.x), floor(x.y)); } + + /// Returns the result of rounding each component of a float3 vector value down to the nearest value less or equal to the original value. + public static float3 floor(float3 x) { return new float3(floor(x.x), floor(x.y), floor(x.z)); } + + /// Returns the result of rounding each component of a float4 vector value down to the nearest value less or equal to the original value. + public static float4 floor(float4 x) { return new float4(floor(x.x), floor(x.y), floor(x.z), floor(x.w)); } + + + /// Returns the result of rounding a double value up to the nearest integral value less or equal to the original value. + public static double floor(double x) { return System.Math.Floor(x); } + + /// Returns the result of rounding each component of a double2 vector value down to the nearest value less or equal to the original value. + public static double2 floor(double2 x) { return new double2(floor(x.x), floor(x.y)); } + + /// Returns the result of rounding each component of a double3 vector value down to the nearest value less or equal to the original value. + public static double3 floor(double3 x) { return new double3(floor(x.x), floor(x.y), floor(x.z)); } + + /// Returns the result of rounding each component of a double4 vector value down to the nearest value less or equal to the original value. + public static double4 floor(double4 x) { return new double4(floor(x.x), floor(x.y), floor(x.z), floor(x.w)); } + + + /// Returns the result of rounding a float value up to the nearest integral value greater or equal to the original value. + public static float ceil(float x) { return (float)System.Math.Ceiling((float)x); } + + /// Returns the result of rounding each component of a float2 vector value up to the nearest value greater or equal to the original value. + public static float2 ceil(float2 x) { return new float2(ceil(x.x), ceil(x.y)); } + + /// Returns the result of rounding each component of a float3 vector value up to the nearest value greater or equal to the original value. + public static float3 ceil(float3 x) { return new float3(ceil(x.x), ceil(x.y), ceil(x.z)); } + + /// Returns the result of rounding each component of a float4 vector value up to the nearest value greater or equal to the original value. + public static float4 ceil(float4 x) { return new float4(ceil(x.x), ceil(x.y), ceil(x.z), ceil(x.w)); } + + + /// Returns the result of rounding a double value up to the nearest greater integral value greater or equal to the original value. + public static double ceil(double x) { return System.Math.Ceiling(x); } + + /// Returns the result of rounding each component of a double2 vector value up to the nearest integral value greater or equal to the original value. + public static double2 ceil(double2 x) { return new double2(ceil(x.x), ceil(x.y)); } + + /// Returns the result of rounding each component of a double3 vector value up to the nearest integral value greater or equal to the original value.. + public static double3 ceil(double3 x) { return new double3(ceil(x.x), ceil(x.y), ceil(x.z)); } + + /// Returns the result of rounding each component of a double4 vector value up to the nearest integral value greater or equal to the original value. + public static double4 ceil(double4 x) { return new double4(ceil(x.x), ceil(x.y), ceil(x.z), ceil(x.w)); } + + + /// Returns the result of rounding a float value to the nearest integral value. + public static float round(float x) { return (float)System.Math.Round((float)x); } + + /// Returns the result of rounding each component of a float2 vector value to the nearest integral value. + public static float2 round(float2 x) { return new float2(round(x.x), round(x.y)); } + + /// Returns the result of rounding each component of a float3 vector value to the nearest integral value. + public static float3 round(float3 x) { return new float3(round(x.x), round(x.y), round(x.z)); } + + /// Returns the result of rounding each component of a float4 vector value to the nearest integral value. + public static float4 round(float4 x) { return new float4(round(x.x), round(x.y), round(x.z), round(x.w)); } + + + /// Returns the result of rounding a double value to the nearest integral value. + public static double round(double x) { return System.Math.Round(x); } + + /// Returns the result of rounding each component of a double2 vector value to the nearest integral value. + public static double2 round(double2 x) { return new double2(round(x.x), round(x.y)); } + + /// Returns the result of rounding each component of a double3 vector value to the nearest integral value. + public static double3 round(double3 x) { return new double3(round(x.x), round(x.y), round(x.z)); } + + /// Returns the result of rounding each component of a double4 vector value to the nearest integral value. + public static double4 round(double4 x) { return new double4(round(x.x), round(x.y), round(x.z), round(x.w)); } + + + /// Returns the result of truncating a float value to an integral float value. + public static float trunc(float x) { return (float)System.Math.Truncate((float)x); } + + /// Returns the result of a componentwise truncation of a float2 value to an integral float2 value. + public static float2 trunc(float2 x) { return new float2(trunc(x.x), trunc(x.y)); } + + /// Returns the result of a componentwise truncation of a float3 value to an integral float3 value. + public static float3 trunc(float3 x) { return new float3(trunc(x.x), trunc(x.y), trunc(x.z)); } + + /// Returns the result of a componentwise truncation of a float4 value to an integral float4 value. + public static float4 trunc(float4 x) { return new float4(trunc(x.x), trunc(x.y), trunc(x.z), trunc(x.w)); } + + + /// Returns the result of truncating a double value to an integral double value. + public static double trunc(double x) { return System.Math.Truncate(x); } + + /// Returns the result of a componentwise truncation of a double2 value to an integral double2 value. + public static double2 trunc(double2 x) { return new double2(trunc(x.x), trunc(x.y)); } + + /// Returns the result of a componentwise truncation of a double3 value to an integral double3 value. + public static double3 trunc(double3 x) { return new double3(trunc(x.x), trunc(x.y), trunc(x.z)); } + + /// Returns the result of a componentwise truncation of a double4 value to an integral double4 value. + public static double4 trunc(double4 x) { return new double4(trunc(x.x), trunc(x.y), trunc(x.z), trunc(x.w)); } + + + /// Returns the fractional part of a float value. + public static float frac(float x) { return x - floor(x); } + + /// Returns the componentwise fractional parts of a float2 vector. + public static float2 frac(float2 x) { return x - floor(x); } + + /// Returns the componentwise fractional parts of a float3 vector. + public static float3 frac(float3 x) { return x - floor(x); } + + /// Returns the componentwise fractional parts of a float4 vector. + public static float4 frac(float4 x) { return x - floor(x); } + + + /// Returns the fractional part of a double value. + public static double frac(double x) { return x - floor(x); } + + /// Returns the componentwise fractional parts of a double2 vector. + public static double2 frac(double2 x) { return x - floor(x); } + + /// Returns the componentwise fractional parts of a double3 vector. + public static double3 frac(double3 x) { return x - floor(x); } + + /// Returns the componentwise fractional parts of a double4 vector. + public static double4 frac(double4 x) { return x - floor(x); } + + + /// Returns the reciprocal a float value. + public static float rcp(float x) { return 1.0f / x; } + + /// Returns the componentwise reciprocal a float2 vector. + public static float2 rcp(float2 x) { return 1.0f / x; } + + /// Returns the componentwise reciprocal a float3 vector. + public static float3 rcp(float3 x) { return 1.0f / x; } + + /// Returns the componentwise reciprocal a float4 vector. + public static float4 rcp(float4 x) { return 1.0f / x; } + + + /// Returns the reciprocal a double value. + public static double rcp(double x) { return 1.0 / x; } + + /// Returns the componentwise reciprocal a double2 vector. + public static double2 rcp(double2 x) { return 1.0 / x; } + + /// Returns the componentwise reciprocal a double3 vector. + public static double3 rcp(double3 x) { return 1.0 / x; } + + /// Returns the componentwise reciprocal a double4 vector. + public static double4 rcp(double4 x) { return 1.0 / x; } + + + /// Returns the sign of a float value. -1.0f if it is less than zero, 0.0f if it is zero and 1.0f if it greater than zero. + public static float sign(float x) { return (x > 0.0f ? 1.0f : 0.0f) - (x < 0.0f ? 1.0f : 0.0f); } + + /// Returns the componentwise sign of a float2 value. 1.0f for positive components, 0.0f for zero components and -1.0f for negative components. + public static float2 sign(float2 x) { return new float2(sign(x.x), sign(x.y)); } + + /// Returns the componentwise sign of a float3 value. 1.0f for positive components, 0.0f for zero components and -1.0f for negative components. + public static float3 sign(float3 x) { return new float3(sign(x.x), sign(x.y), sign(x.z)); } + + /// Returns the componentwise sign of a float4 value. 1.0f for positive components, 0.0f for zero components and -1.0f for negative components. + public static float4 sign(float4 x) { return new float4(sign(x.x), sign(x.y), sign(x.z), sign(x.w)); } + + + /// Returns the sign of a double value. -1.0 if it is less than zero, 0.0 if it is zero and 1.0 if it greater than zero. + public static double sign(double x) { return x == 0 ? 0 : (x > 0.0 ? 1.0 : 0.0) - (x < 0.0 ? 1.0 : 0.0); } + + /// Returns the componentwise sign of a double2 value. 1.0 for positive components, 0.0 for zero components and -1.0 for negative components. + public static double2 sign(double2 x) { return new double2(sign(x.x), sign(x.y)); } + + /// Returns the componentwise sign of a double3 value. 1.0 for positive components, 0.0 for zero components and -1.0 for negative components. + public static double3 sign(double3 x) { return new double3(sign(x.x), sign(x.y), sign(x.z)); } + + /// Returns the componentwise sign of a double4 value. 1.0 for positive components, 0.0 for zero components and -1.0 for negative components. + public static double4 sign(double4 x) { return new double4(sign(x.x), sign(x.y), sign(x.z), sign(x.w)); } + + + /// Returns x raised to the power y. + public static float pow(float x, float y) { return (float)System.Math.Pow((float)x, (float)y); } + + /// Returns the componentwise result of raising x to the power y. + public static float2 pow(float2 x, float2 y) { return new float2(pow(x.x, y.x), pow(x.y, y.y)); } + + /// Returns the componentwise result of raising x to the power y. + public static float3 pow(float3 x, float3 y) { return new float3(pow(x.x, y.x), pow(x.y, y.y), pow(x.z, y.z)); } + + /// Returns the componentwise result of raising x to the power y. + public static float4 pow(float4 x, float4 y) { return new float4(pow(x.x, y.x), pow(x.y, y.y), pow(x.z, y.z), pow(x.w, y.w)); } + + + /// Returns x raised to the power y. + public static double pow(double x, double y) { return System.Math.Pow(x, y); } + + /// Returns the componentwise result of raising x to the power y. + public static double2 pow(double2 x, double2 y) { return new double2(pow(x.x, y.x), pow(x.y, y.y)); } + + /// Returns the componentwise result of raising x to the power y. + public static double3 pow(double3 x, double3 y) { return new double3(pow(x.x, y.x), pow(x.y, y.y), pow(x.z, y.z)); } + + /// Returns the componentwise result of raising x to the power y. + public static double4 pow(double4 x, double4 y) { return new double4(pow(x.x, y.x), pow(x.y, y.y), pow(x.z, y.z), pow(x.w, y.w)); } + + + /// Returns the base-e exponential of x. + public static float exp(float x) { return (float)System.Math.Exp((float)x); } + + /// Returns the componentwise base-e exponential of x. + public static float2 exp(float2 x) { return new float2(exp(x.x), exp(x.y)); } + + /// Returns the componentwise base-e exponential of x. + public static float3 exp(float3 x) { return new float3(exp(x.x), exp(x.y), exp(x.z)); } + + /// Returns the componentwise base-e exponential of x. + public static float4 exp(float4 x) { return new float4(exp(x.x), exp(x.y), exp(x.z), exp(x.w)); } + + + /// Returns the base-e exponential of x. + public static double exp(double x) { return System.Math.Exp(x); } + + /// Returns the componentwise base-e exponential of x. + public static double2 exp(double2 x) { return new double2(exp(x.x), exp(x.y)); } + + /// Returns the componentwise base-e exponential of x. + public static double3 exp(double3 x) { return new double3(exp(x.x), exp(x.y), exp(x.z)); } + + /// Returns the componentwise base-e exponential of x. + public static double4 exp(double4 x) { return new double4(exp(x.x), exp(x.y), exp(x.z), exp(x.w)); } + + + /// Returns the base-2 exponential of x. + public static float exp2(float x) { return (float)System.Math.Exp((float)x * 0.69314718f); } + + /// Returns the componentwise base-2 exponential of x. + public static float2 exp2(float2 x) { return new float2(exp2(x.x), exp2(x.y)); } + + /// Returns the componentwise base-2 exponential of x. + public static float3 exp2(float3 x) { return new float3(exp2(x.x), exp2(x.y), exp2(x.z)); } + + /// Returns the componentwise base-2 exponential of x. + public static float4 exp2(float4 x) { return new float4(exp2(x.x), exp2(x.y), exp2(x.z), exp2(x.w)); } + + + /// Returns the base-2 exponential of x. + public static double exp2(double x) { return System.Math.Exp(x * 0.693147180559945309); } + + /// Returns the componentwise base-2 exponential of x. + public static double2 exp2(double2 x) { return new double2(exp2(x.x), exp2(x.y)); } + + /// Returns the componentwise base-2 exponential of x. + public static double3 exp2(double3 x) { return new double3(exp2(x.x), exp2(x.y), exp2(x.z)); } + + /// Returns the componentwise base-2 exponential of x. + public static double4 exp2(double4 x) { return new double4(exp2(x.x), exp2(x.y), exp2(x.z), exp2(x.w)); } + + + /// Returns the base-10 exponential of x. + public static float exp10(float x) { return (float)System.Math.Exp((float)x * 2.30258509f); } + + /// Returns the componentwise base-10 exponential of x. + public static float2 exp10(float2 x) { return new float2(exp10(x.x), exp10(x.y)); } + + /// Returns the componentwise base-10 exponential of x. + public static float3 exp10(float3 x) { return new float3(exp10(x.x), exp10(x.y), exp10(x.z)); } + + /// Returns the componentwise base-10 exponential of x. + public static float4 exp10(float4 x) { return new float4(exp10(x.x), exp10(x.y), exp10(x.z), exp10(x.w)); } + + + /// Returns the base-10 exponential of x. + public static double exp10(double x) { return System.Math.Exp(x * 2.302585092994045684); } + + /// Returns the componentwise base-10 exponential of x. + public static double2 exp10(double2 x) { return new double2(exp10(x.x), exp10(x.y)); } + + /// Returns the componentwise base-10 exponential of x. + public static double3 exp10(double3 x) { return new double3(exp10(x.x), exp10(x.y), exp10(x.z)); } + + /// Returns the componentwise base-10 exponential of x. + public static double4 exp10(double4 x) { return new double4(exp10(x.x), exp10(x.y), exp10(x.z), exp10(x.w)); } + + + /// Returns the natural logarithm of a float value. + public static float log(float x) { return (float)System.Math.Log((float)x); } + + /// Returns the componentwise natural logarithm of a float2 vector. + public static float2 log(float2 x) { return new float2(log(x.x), log(x.y)); } + + /// Returns the componentwise natural logarithm of a float3 vector. + public static float3 log(float3 x) { return new float3(log(x.x), log(x.y), log(x.z)); } + + /// Returns the componentwise natural logarithm of a float4 vector. + public static float4 log(float4 x) { return new float4(log(x.x), log(x.y), log(x.z), log(x.w)); } + + + /// Returns the natural logarithm of a double value. + public static double log(double x) { return System.Math.Log(x); } + + /// Returns the componentwise natural logarithm of a double2 vector. + public static double2 log(double2 x) { return new double2(log(x.x), log(x.y)); } + + /// Returns the componentwise natural logarithm of a double3 vector. + public static double3 log(double3 x) { return new double3(log(x.x), log(x.y), log(x.z)); } + + /// Returns the componentwise natural logarithm of a double4 vector. + public static double4 log(double4 x) { return new double4(log(x.x), log(x.y), log(x.z), log(x.w)); } + + + /// Returns the base-2 logarithm of a float value. + public static float log2(float x) { return (float)System.Math.Log((float)x, 2.0f); } + + /// Returns the componentwise base-2 logarithm of a float2 vector. + public static float2 log2(float2 x) { return new float2(log2(x.x), log2(x.y)); } + + /// Returns the componentwise base-2 logarithm of a float3 vector. + public static float3 log2(float3 x) { return new float3(log2(x.x), log2(x.y), log2(x.z)); } + + /// Returns the componentwise base-2 logarithm of a float4 vector. + public static float4 log2(float4 x) { return new float4(log2(x.x), log2(x.y), log2(x.z), log2(x.w)); } + + + /// Returns the base-2 logarithm of a double value. + public static double log2(double x) { return System.Math.Log(x, 2.0); } + + /// Returns the componentwise base-2 logarithm of a double2 vector. + public static double2 log2(double2 x) { return new double2(log2(x.x), log2(x.y)); } + + /// Returns the componentwise base-2 logarithm of a double3 vector. + public static double3 log2(double3 x) { return new double3(log2(x.x), log2(x.y), log2(x.z)); } + + /// Returns the componentwise base-2 logarithm of a double4 vector. + public static double4 log2(double4 x) { return new double4(log2(x.x), log2(x.y), log2(x.z), log2(x.w)); } + + + /// Returns the base-10 logarithm of a float value. + public static float log10(float x) { return (float)System.Math.Log10((float)x); } + + /// Returns the componentwise base-10 logarithm of a float2 vector. + public static float2 log10(float2 x) { return new float2(log10(x.x), log10(x.y)); } + + /// Returns the componentwise base-10 logarithm of a float3 vector. + public static float3 log10(float3 x) { return new float3(log10(x.x), log10(x.y), log10(x.z)); } + + /// Returns the componentwise base-10 logarithm of a float4 vector. + public static float4 log10(float4 x) { return new float4(log10(x.x), log10(x.y), log10(x.z), log10(x.w)); } + + + /// Returns the base-10 logarithm of a double value. + public static double log10(double x) { return System.Math.Log10(x); } + + /// Returns the componentwise base-10 logarithm of a double2 vector. + public static double2 log10(double2 x) { return new double2(log10(x.x), log10(x.y)); } + + /// Returns the componentwise base-10 logarithm of a double3 vector. + public static double3 log10(double3 x) { return new double3(log10(x.x), log10(x.y), log10(x.z)); } + + /// Returns the componentwise base-10 logarithm of a double4 vector. + public static double4 log10(double4 x) { return new double4(log10(x.x), log10(x.y), log10(x.z), log10(x.w)); } + + + /// Returns the floating point remainder of x/y. + public static float fmod(float x, float y) { return x % y; } + + /// Returns the componentwise floating point remainder of x/y. + public static float2 fmod(float2 x, float2 y) { return new float2(x.x % y.x, x.y % y.y); } + + /// Returns the componentwise floating point remainder of x/y. + public static float3 fmod(float3 x, float3 y) { return new float3(x.x % y.x, x.y % y.y, x.z % y.z); } + + /// Returns the componentwise floating point remainder of x/y. + public static float4 fmod(float4 x, float4 y) { return new float4(x.x % y.x, x.y % y.y, x.z % y.z, x.w % y.w); } + + + /// Returns the double precision floating point remainder of x/y. + public static double fmod(double x, double y) { return x % y; } + + /// Returns the componentwise double precision floating point remainder of x/y. + public static double2 fmod(double2 x, double2 y) { return new double2(x.x % y.x, x.y % y.y); } + + /// Returns the componentwise double precision floating point remainder of x/y. + public static double3 fmod(double3 x, double3 y) { return new double3(x.x % y.x, x.y % y.y, x.z % y.z); } + + /// Returns the componentwise double precision floating point remainder of x/y. + public static double4 fmod(double4 x, double4 y) { return new double4(x.x % y.x, x.y % y.y, x.z % y.z, x.w % y.w); } + + + /// Splits a float value into an integral part i and a fractional part that gets returned. Both parts take the sign of the input. + public static float modf(float x, out float i) { i = trunc(x); return x - i; } + + /// + // Performs a componentwise split of a float2 vector into an integral part i and a fractional part that gets returned. + // Both parts take the sign of the corresponding input component. + // + public static float2 modf(float2 x, out float2 i) { i = trunc(x); return x - i; } + + /// + // Performs a componentwise split of a float3 vector into an integral part i and a fractional part that gets returned. + // Both parts take the sign of the corresponding input component. + // + public static float3 modf(float3 x, out float3 i) { i = trunc(x); return x - i; } + + /// + // Performs a componentwise split of a float4 vector into an integral part i and a fractional part that gets returned. + // Both parts take the sign of the corresponding input component. + // + public static float4 modf(float4 x, out float4 i) { i = trunc(x); return x - i; } + + + /// Splits a double value into an integral part i and a fractional part that gets returned. Both parts take the sign of the input. + public static double modf(double x, out double i) { i = trunc(x); return x - i; } + + /// + // Performs a componentwise split of a double2 vector into an integral part i and a fractional part that gets returned. + // Both parts take the sign of the corresponding input component. + // + public static double2 modf(double2 x, out double2 i) { i = trunc(x); return x - i; } + + /// + // Performs a componentwise split of a double3 vector into an integral part i and a fractional part that gets returned. + // Both parts take the sign of the corresponding input component. + // + public static double3 modf(double3 x, out double3 i) { i = trunc(x); return x - i; } + + /// + // Performs a componentwise split of a double4 vector into an integral part i and a fractional part that gets returned. + // Both parts take the sign of the corresponding input component. + // + public static double4 modf(double4 x, out double4 i) { i = trunc(x); return x - i; } + + + /// Returns the square root of a float value. + public static float sqrt(float x) { return (float)System.Math.Sqrt((float)x); } + + /// Returns the componentwise square root of a float2 vector. + public static float2 sqrt(float2 x) { return new float2(sqrt(x.x), sqrt(x.y)); } + + /// Returns the componentwise square root of a float3 vector. + public static float3 sqrt(float3 x) { return new float3(sqrt(x.x), sqrt(x.y), sqrt(x.z)); } + + /// Returns the componentwise square root of a float4 vector. + public static float4 sqrt(float4 x) { return new float4(sqrt(x.x), sqrt(x.y), sqrt(x.z), sqrt(x.w)); } + + + /// Returns the square root of a double value. + public static double sqrt(double x) { return System.Math.Sqrt(x); } + + /// Returns the componentwise square root of a double2 vector. + public static double2 sqrt(double2 x) { return new double2(sqrt(x.x), sqrt(x.y)); } + + /// Returns the componentwise square root of a double3 vector. + public static double3 sqrt(double3 x) { return new double3(sqrt(x.x), sqrt(x.y), sqrt(x.z)); } + + /// Returns the componentwise square root of a double4 vector. + public static double4 sqrt(double4 x) { return new double4(sqrt(x.x), sqrt(x.y), sqrt(x.z), sqrt(x.w)); } + + + /// Returns the reciprocal square root of a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float rsqrt(float x) { return 1.0f / sqrt(x); } + + /// Returns the componentwise reciprocal square root of a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 rsqrt(float2 x) { return 1.0f / sqrt(x); } + + /// Returns the componentwise reciprocal square root of a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 rsqrt(float3 x) { return 1.0f / sqrt(x); } + + /// Returns the componentwise reciprocal square root of a float4 vector + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 rsqrt(float4 x) { return 1.0f / sqrt(x); } + + + /// Returns the reciprocal square root of a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double rsqrt(double x) { return 1.0 / sqrt(x); } + + /// Returns the componentwise reciprocal square root of a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 rsqrt(double2 x) { return 1.0 / sqrt(x); } + + /// Returns the componentwise reciprocal square root of a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 rsqrt(double3 x) { return 1.0 / sqrt(x); } + + /// Returns the componentwise reciprocal square root of a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 rsqrt(double4 x) { return 1.0 / sqrt(x); } + + + /// Returns a normalized version of the float2 vector x by scaling it by 1 / length(x). + public static float2 normalize(float2 x) { return rsqrt(dot(x, x)) * x; } + + /// Returns a normalized version of the float3 vector x by scaling it by 1 / length(x). + public static float3 normalize(float3 x) { return rsqrt(dot(x, x)) * x; } + + /// Returns a normalized version of the float4 vector x by scaling it by 1 / length(x). + public static float4 normalize(float4 x) { return rsqrt(dot(x, x)) * x; } + + + /// Returns a normalized version of the double2 vector x by scaling it by 1 / length(x). + public static double2 normalize(double2 x) { return rsqrt(dot(x, x)) * x; } + + /// Returns a normalized version of the double3 vector x by scaling it by 1 / length(x). + public static double3 normalize(double3 x) { return rsqrt(dot(x, x)) * x; } + + /// Returns a normalized version of the double4 vector x by scaling it by 1 / length(x). + public static double4 normalize(double4 x) { return rsqrt(dot(x, x)) * x; } + + + /// + /// Returns a safe normalized version of the float2 vector x by scaling it by 1 / length(x). + /// Returns the given default value when 1 / length(x) does not produce a finite number. + /// + static public float2 normalizesafe(float2 x, float2 defaultvalue = new float2()) + { + float len = math.dot(x, x); + return math.select(defaultvalue, x * math.rsqrt(len), len > FLT_MIN_NORMAL); + } + + /// + /// Returns a safe normalized version of the float3 vector x by scaling it by 1 / length(x). + /// Returns the given default value when 1 / length(x) does not produce a finite number. + /// + static public float3 normalizesafe(float3 x, float3 defaultvalue = new float3()) + { + float len = math.dot(x, x); + return math.select(defaultvalue, x * math.rsqrt(len), len > FLT_MIN_NORMAL); + } + + /// + /// Returns a safe normalized version of the float4 vector x by scaling it by 1 / length(x). + /// Returns the given default value when 1 / length(x) does not produce a finite number. + /// + static public float4 normalizesafe(float4 x, float4 defaultvalue = new float4()) + { + float len = math.dot(x, x); + return math.select(defaultvalue, x * math.rsqrt(len), len > FLT_MIN_NORMAL); + } + + + /// + /// Returns a safe normalized version of the double4 vector x by scaling it by 1 / length(x). + /// Returns the given default value when 1 / length(x) does not produce a finite number. + /// + static public double2 normalizesafe(double2 x, double2 defaultvalue = new double2()) + { + double len = math.dot(x, x); + return math.select(defaultvalue, x * math.rsqrt(len), len > FLT_MIN_NORMAL); + } + + /// + /// Returns a safe normalized version of the double4 vector x by scaling it by 1 / length(x). + /// Returns the given default value when 1 / length(x) does not produce a finite number. + /// + static public double3 normalizesafe(double3 x, double3 defaultvalue = new double3()) + { + double len = math.dot(x, x); + return math.select(defaultvalue, x * math.rsqrt(len), len > FLT_MIN_NORMAL); + } + + /// + /// Returns a safe normalized version of the double4 vector x by scaling it by 1 / length(x). + /// Returns the given default value when 1 / length(x) does not produce a finite number. + /// + static public double4 normalizesafe(double4 x, double4 defaultvalue = new double4()) + { + double len = math.dot(x, x); + return math.select(defaultvalue, x * math.rsqrt(len), len > FLT_MIN_NORMAL); + } + + + /// Returns the length of a float value. Equivalent to the absolute value. + public static float length(float x) { return abs(x); } + + /// Returns the length of a float2 vector. + public static float length(float2 x) { return sqrt(dot(x, x)); } + + /// Returns the length of a float3 vector. + public static float length(float3 x) { return sqrt(dot(x, x)); } + + /// Returns the length of a float4 vector. + public static float length(float4 x) { return sqrt(dot(x, x)); } + + + /// Returns the length of a double value. Equivalent to the absolute value. + public static double length(double x) { return abs(x); } + + /// Returns the length of a double2 vector. + public static double length(double2 x) { return sqrt(dot(x, x)); } + + /// Returns the length of a double3 vector. + public static double length(double3 x) { return sqrt(dot(x, x)); } + + /// Returns the length of a double4 vector. + public static double length(double4 x) { return sqrt(dot(x, x)); } + + + /// Returns the squared length of a float value. Equivalent to squaring the value. + public static float lengthsq(float x) { return x*x; } + + /// Returns the squared length of a float2 vector. + public static float lengthsq(float2 x) { return dot(x, x); } + + /// Returns the squared length of a float3 vector. + public static float lengthsq(float3 x) { return dot(x, x); } + + /// Returns the squared length of a float4 vector. + public static float lengthsq(float4 x) { return dot(x, x); } + + + /// Returns the squared length of a double value. Equivalent to squaring the value. + public static double lengthsq(double x) { return x * x; } + + /// Returns the squared length of a double2 vector. + public static double lengthsq(double2 x) { return dot(x, x); } + + /// Returns the squared length of a double3 vector. + public static double lengthsq(double3 x) { return dot(x, x); } + + /// Returns the squared length of a double4 vector. + public static double lengthsq(double4 x) { return dot(x, x); } + + + /// Returns the distance between two float values. + public static float distance(float x, float y) { return abs(y - x); } + + /// Returns the distance between two float2 vectors. + public static float distance(float2 x, float2 y) { return length(y - x); } + + /// Returns the distance between two float3 vectors. + public static float distance(float3 x, float3 y) { return length(y - x); } + + /// Returns the distance between two float4 vectors. + public static float distance(float4 x, float4 y) { return length(y - x); } + + + /// Returns the distance between two double values. + public static double distance(double x, double y) { return abs(y - x); } + + /// Returns the distance between two double2 vectors. + public static double distance(double2 x, double2 y) { return length(y - x); } + + /// Returns the distance between two double3 vectors. + public static double distance(double3 x, double3 y) { return length(y - x); } + + /// Returns the distance between two double4 vectors. + public static double distance(double4 x, double4 y) { return length(y - x); } + + + /// Returns the distance between two float values. + public static float distancesq(float x, float y) { return (y - x) * (y - x); } + + /// Returns the distance between two float2 vectors. + public static float distancesq(float2 x, float2 y) { return lengthsq(y - x); } + + /// Returns the distance between two float3 vectors. + public static float distancesq(float3 x, float3 y) { return lengthsq(y - x); } + + /// Returns the distance between two float4 vectors. + public static float distancesq(float4 x, float4 y) { return lengthsq(y - x); } + + + /// Returns the distance between two double values. + public static double distancesq(double x, double y) { return (y - x) * (y - x); } + + /// Returns the distance between two double2 vectors. + public static double distancesq(double2 x, double2 y) { return lengthsq(y - x); } + + /// Returns the distance between two double3 vectors. + public static double distancesq(double3 x, double3 y) { return lengthsq(y - x); } + + /// Returns the distance between two double4 vectors. + public static double distancesq(double4 x, double4 y) { return lengthsq(y - x); } + + + /// Returns the cross product of two float3 vectors. + public static float3 cross(float3 x, float3 y) { return (x * y.yzx - x.yzx * y).yzx; } + + /// Returns the cross product of two double3 vectors. + public static double3 cross(double3 x, double3 y) { return (x * y.yzx - x.yzx * y).yzx; } + + + /// Returns a smooth Hermite interpolation between 0.0f and 1.0f when x is in [a, b]. + public static float smoothstep(float a, float b, float x) + { + var t = saturate((x - a) / (b - a)); + return t * t * (3.0f - (2.0f * t)); + } + + /// Returns a componentwise smooth Hermite interpolation between 0.0f and 1.0f when x is in [a, b]. + public static float2 smoothstep(float2 a, float2 b, float2 x) + { + var t = saturate((x - a) / (b - a)); + return t * t * (3.0f - (2.0f * t)); + } + + /// Returns a componentwise smooth Hermite interpolation between 0.0f and 1.0f when x is in [a, b]. + public static float3 smoothstep(float3 a, float3 b, float3 x) + { + var t = saturate((x - a) / (b - a)); + return t * t * (3.0f - (2.0f * t)); + } + + /// Returns a componentwise smooth Hermite interpolation between 0.0f and 1.0f when x is in [a, b]. + public static float4 smoothstep(float4 a, float4 b, float4 x) + { + var t = saturate((x - a) / (b - a)); + return t * t * (3.0f - (2.0f * t)); + } + + + /// Returns a smooth Hermite interpolation between 0.0 and 1.0 when x is in [a, b]. + public static double smoothstep(double a, double b, double x) + { + var t = saturate((x - a) / (b - a)); + return t * t * (3.0 - (2.0 * t)); + } + + /// Returns a componentwise smooth Hermite interpolation between 0.0 and 1.0 when x is in [a, b]. + public static double2 smoothstep(double2 a, double2 b, double2 x) + { + var t = saturate((x - a) / (b - a)); + return t * t * (3.0 - (2.0 * t)); + } + + /// Returns a componentwise smooth Hermite interpolation between 0.0 and 1.0 when x is in [a, b]. + public static double3 smoothstep(double3 a, double3 b, double3 x) + { + var t = saturate((x - a) / (b - a)); + return t * t * (3.0 - (2.0 * t)); + } + + /// Returns a componentwise smooth Hermite interpolation between 0.0 and 1.0 when x is in [a, b]. + public static double4 smoothstep(double4 a, double4 b, double4 x) + { + var t = saturate((x - a) / (b - a)); + return t * t * (3.0 - (2.0 * t)); + } + + + /// Returns true if any component of the input bool2 vector is true, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(bool2 x) { return x.x || x.y; } + + /// Returns true if any component of the input bool3 vector is true, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(bool3 x) { return x.x || x.y || x.z; } + + /// Returns true if any components of the input bool4 vector is true, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(bool4 x) { return x.x || x.y || x.z || x.w; } + + + /// Returns true if any component of the input int2 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(int2 x) { return x.x != 0 || x.y != 0; } + + /// Returns true if any component of the input int3 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(int3 x) { return x.x != 0 || x.y != 0 || x.z != 0; } + + /// Returns true if any components of the input int4 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(int4 x) { return x.x != 0 || x.y != 0 || x.z != 0 || x.w != 0; } + + + /// Returns true if any component of the input uint2 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(uint2 x) { return x.x != 0 || x.y != 0; } + + /// Returns true if any component of the input uint3 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(uint3 x) { return x.x != 0 || x.y != 0 || x.z != 0; } + + /// Returns true if any components of the input uint4 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(uint4 x) { return x.x != 0 || x.y != 0 || x.z != 0 || x.w != 0; } + + + /// Returns true if any component of the input float2 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(float2 x) { return x.x != 0.0f || x.y != 0.0f; } + + /// Returns true if any component of the input float3 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(float3 x) { return x.x != 0.0f || x.y != 0.0f || x.z != 0.0f; } + + /// Returns true if any component of the input float4 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(float4 x) { return x.x != 0.0f || x.y != 0.0f || x.z != 0.0f || x.w != 0.0f; } + + + /// Returns true if any component of the input double2 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(double2 x) { return x.x != 0.0 || x.y != 0.0; } + + /// Returns true if any component of the input double3 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(double3 x) { return x.x != 0.0 || x.y != 0.0 || x.z != 0.0; } + + /// Returns true if any component of the input double4 vector is non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool any(double4 x) { return x.x != 0.0 || x.y != 0.0 || x.z != 0.0 || x.w != 0.0; } + + + /// Returns true if all components of the input bool2 vector are true, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(bool2 x) { return x.x && x.y; } + + /// Returns true if all components of the input bool3 vector are true, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(bool3 x) { return x.x && x.y && x.z; } + + /// Returns true if all components of the input bool4 vector are true, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(bool4 x) { return x.x && x.y && x.z && x.w; } + + + /// Returns true if all components of the input int2 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(int2 x) { return x.x != 0 && x.y != 0; } + + /// Returns true if all components of the input int3 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(int3 x) { return x.x != 0 && x.y != 0 && x.z != 0; } + + /// Returns true if all components of the input int4 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(int4 x) { return x.x != 0 && x.y != 0 && x.z != 0 && x.w != 0; } + + + /// Returns true if all components of the input uint2 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(uint2 x) { return x.x != 0 && x.y != 0; } + + /// Returns true if all components of the input uint3 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(uint3 x) { return x.x != 0 && x.y != 0 && x.z != 0; } + + /// Returns true if all components of the input uint4 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(uint4 x) { return x.x != 0 && x.y != 0 && x.z != 0 && x.w != 0; } + + + /// Returns true if all components of the input float2 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(float2 x) { return x.x != 0.0f && x.y != 0.0f; } + + /// Returns true if all components of the input float3 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(float3 x) { return x.x != 0.0f && x.y != 0.0f && x.z != 0.0f; } + + /// Returns true if all components of the input float4 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(float4 x) { return x.x != 0.0f && x.y != 0.0f && x.z != 0.0f && x.w != 0.0f; } + + + /// Returns true if all components of the input double2 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(double2 x) { return x.x != 0.0 && x.y != 0.0; } + + /// Returns true if all components of the input double3 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(double3 x) { return x.x != 0.0 && x.y != 0.0 && x.z != 0.0; } + + /// Returns true if all components of the input double4 vector are non-zero, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool all(double4 x) { return x.x != 0.0 && x.y != 0.0 && x.z != 0.0 && x.w != 0.0; } + + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int select(int a, int b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 select(int2 a, int2 b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 select(int3 a, int3 b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 select(int4 a, int4 b, bool c) { return c ? b : a; } + + + /// + /// Returns a componentwise selection between two int2 vectors a and b based on a bool2 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 select(int2 a, int2 b, bool2 c) { return new int2(c.x ? b.x : a.x, c.y ? b.y : a.y); } + + /// + /// Returns a componentwise selection between two int3 vectors a and b based on a bool3 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 select(int3 a, int3 b, bool3 c) { return new int3(c.x ? b.x : a.x, c.y ? b.y : a.y, c.z ? b.z : a.z); } + + /// + /// Returns a componentwise selection between two int4 vectors a and b based on a bool4 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 select(int4 a, int4 b, bool4 c) { return new int4(c.x ? b.x : a.x, c.y ? b.y : a.y, c.z ? b.z : a.z, c.w ? b.w : a.w); } + + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint select(uint a, uint b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 select(uint2 a, uint2 b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 select(uint3 a, uint3 b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 select(uint4 a, uint4 b, bool c) { return c ? b : a; } + + + /// + /// Returns a componentwise selection between two uint2 vectors a and b based on a bool2 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 select(uint2 a, uint2 b, bool2 c) { return new uint2(c.x ? b.x : a.x, c.y ? b.y : a.y); } + + /// + /// Returns a componentwise selection between two uint3 vectors a and b based on a bool3 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 select(uint3 a, uint3 b, bool3 c) { return new uint3(c.x ? b.x : a.x, c.y ? b.y : a.y, c.z ? b.z : a.z); } + + /// + /// Returns a componentwise selection between two uint4 vectors a and b based on a bool4 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 select(uint4 a, uint4 b, bool4 c) { return new uint4(c.x ? b.x : a.x, c.y ? b.y : a.y, c.z ? b.z : a.z, c.w ? b.w : a.w); } + + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long select(long a, long b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong select(ulong a, ulong b, bool c) { return c ? b : a; } + + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float select(float a, float b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 select(float2 a, float2 b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 select(float3 a, float3 b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 select(float4 a, float4 b, bool c) { return c ? b : a; } + + + /// + /// Returns a componentwise selection between two float2 vectors a and b based on a bool2 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 select(float2 a, float2 b, bool2 c) { return new float2(c.x ? b.x : a.x, c.y ? b.y : a.y); } + + /// + /// Returns a componentwise selection between two float3 vectors a and b based on a bool3 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 select(float3 a, float3 b, bool3 c) { return new float3(c.x ? b.x : a.x, c.y ? b.y : a.y, c.z ? b.z : a.z); } + + /// + /// Returns a componentwise selection between two float4 vectors a and b based on a bool4 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 select(float4 a, float4 b, bool4 c) { return new float4(c.x ? b.x : a.x, c.y ? b.y : a.y, c.z ? b.z : a.z, c.w ? b.w : a.w); } + + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double select(double a, double b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 select(double2 a, double2 b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 select(double3 a, double3 b, bool c) { return c ? b : a; } + + /// Returns b if c is true, a otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 select(double4 a, double4 b, bool c) { return c ? b : a; } + + /// + /// Returns a componentwise selection between two double2 vectors a and b based on a bool2 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 select(double2 a, double2 b, bool2 c) { return new double2(c.x ? b.x : a.x, c.y ? b.y : a.y); } + + /// + /// Returns a componentwise selection between two double3 vectors a and b based on a bool3 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 select(double3 a, double3 b, bool3 c) { return new double3(c.x ? b.x : a.x, c.y ? b.y : a.y, c.z ? b.z : a.z); } + + /// + /// Returns a componentwise selection between two double4 vectors a and b based on a bool4 selection mask c. + /// Per component, the component from b is selected when c is true, otherwise the component from a is selected. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 select(double4 a, double4 b, bool4 c) { return new double4(c.x ? b.x : a.x, c.y ? b.y : a.y, c.z ? b.z : a.z, c.w ? b.w : a.w); } + + + /// Computes a step function. Returns 1.0f when x >= y, 0.0f otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float step(float y, float x) { return select(0.0f, 1.0f, x >= y); } + + /// Returns the result of a componentwise step function where each component is 1.0f when x >= y and 0.0f otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 step(float2 y, float2 x) { return select(float2(0.0f), float2(1.0f), x >= y); } + + /// Returns the result of a componentwise step function where each component is 1.0f when x >= y and 0.0f otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 step(float3 y, float3 x) { return select(float3(0.0f), float3(1.0f), x >= y); } + + /// Returns the result of a componentwise step function where each component is 1.0f when x >= y and 0.0f otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 step(float4 y, float4 x) { return select(float4(0.0f), float4(1.0f), x >= y); } + + + /// Computes a step function. Returns 1.0 when x >= y, 0.0 otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double step(double y, double x) { return select(0.0, 1.0, x >= y); } + + /// Returns the result of a componentwise step function where each component is 1.0f when x >= y and 0.0f otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 step(double2 y, double2 x) { return select(double2(0.0), double2(1.0), x >= y); } + + /// Returns the result of a componentwise step function where each component is 1.0f when x >= y and 0.0f otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 step(double3 y, double3 x) { return select(double3(0.0), double3(1.0), x >= y); } + + /// Returns the result of a componentwise step function where each component is 1.0f when x >= y and 0.0f otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 step(double4 y, double4 x) { return select(double4(0.0), double4(1.0), x >= y); } + + + /// Given an incident vector i and a normal vector n, returns the reflection vector r = i - 2.0f * dot(i, n) * n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 reflect(float2 i, float2 n) { return i - 2f * n * dot(i, n); } + + /// Given an incident vector i and a normal vector n, returns the reflection vector r = i - 2.0f * dot(i, n) * n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 reflect(float3 i, float3 n) { return i - 2f * n * dot(i, n); } + + /// Given an incident vector i and a normal vector n, returns the reflection vector r = i - 2.0f * dot(i, n) * n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 reflect(float4 i, float4 n) { return i - 2f * n * dot(i, n); } + + + /// Given an incident vector i and a normal vector n, returns the reflection vector r = i - 2.0 * dot(i, n) * n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 reflect(double2 i, double2 n) { return i - 2 * n * dot(i, n); } + + /// Given an incident vector i and a normal vector n, returns the reflection vector r = i - 2.0 * dot(i, n) * n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 reflect(double3 i, double3 n) { return i - 2 * n * dot(i, n); } + + /// Given an incident vector i and a normal vector n, returns the reflection vector r = i - 2.0 * dot(i, n) * n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 reflect(double4 i, double4 n) { return i - 2 * n * dot(i, n); } + + + /// Returns the refraction vector given the incident vector i, the normal vector n and the refraction index eta. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 refract(float2 i, float2 n, float eta) + { + float ni = dot(n, i); + float k = 1.0f - eta * eta * (1.0f - ni * ni); + return select(0.0f, eta * i - (eta * ni + sqrt(k)) * n, k >= 0); + } + + /// Returns the refraction vector given the incident vector i, the normal vector n and the refraction index eta. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 refract(float3 i, float3 n, float eta) + { + float ni = dot(n, i); + float k = 1.0f - eta * eta * (1.0f - ni * ni); + return select(0.0f, eta * i - (eta * ni + sqrt(k)) * n, k >= 0); + } + + /// Returns the refraction vector given the incident vector i, the normal vector n and the refraction index eta. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 refract(float4 i, float4 n, float eta) + { + float ni = dot(n, i); + float k = 1.0f - eta * eta * (1.0f - ni * ni); + return select(0.0f, eta * i - (eta * ni + sqrt(k)) * n, k >= 0); + } + + + /// Returns the refraction vector given the incident vector i, the normal vector n and the refraction index eta. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 refract(double2 i, double2 n, double eta) + { + double ni = dot(n, i); + double k = 1.0 - eta * eta * (1.0 - ni * ni); + return select(0.0f, eta * i - (eta * ni + sqrt(k)) * n, k >= 0); + } + + /// Returns the refraction vector given the incident vector i, the normal vector n and the refraction index eta. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 refract(double3 i, double3 n, double eta) + { + double ni = dot(n, i); + double k = 1.0 - eta * eta * (1.0 - ni * ni); + return select(0.0f, eta * i - (eta * ni + sqrt(k)) * n, k >= 0); + } + + /// Returns the refraction vector given the incident vector i, the normal vector n and the refraction index eta. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 refract(double4 i, double4 n, double eta) + { + double ni = dot(n, i); + double k = 1.0 - eta * eta * (1.0 - ni * ni); + return select(0.0f, eta * i - (eta * ni + sqrt(k)) * n, k >= 0); + } + + + /// Conditionally flips a vector n to face in the direction of i. Returns n if dot(i, ng) < 0, -n otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 faceforward(float2 n, float2 i, float2 ng) { return select(n, -n, dot(ng, i) >= 0.0f); } + + /// Conditionally flips a vector n to face in the direction of i. Returns n if dot(i, ng) < 0, -n otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 faceforward(float3 n, float3 i, float3 ng) { return select(n, -n, dot(ng, i) >= 0.0f); } + + /// Conditionally flips a vector n to face in the direction of i. Returns n if dot(i, ng) < 0, -n otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 faceforward(float4 n, float4 i, float4 ng) { return select(n, -n, dot(ng, i) >= 0.0f); } + + + /// Conditionally flips a vector n to face in the direction of i. Returns n if dot(i, ng) < 0, -n otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 faceforward(double2 n, double2 i, double2 ng) { return select(n, -n, dot(ng, i) >= 0.0f); } + + /// Conditionally flips a vector n to face in the direction of i. Returns n if dot(i, ng) < 0, -n otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 faceforward(double3 n, double3 i, double3 ng) { return select(n, -n, dot(ng, i) >= 0.0f); } + + /// Conditionally flips a vector n to face in the direction of i. Returns n if dot(i, ng) < 0, -n otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 faceforward(double4 n, double4 i, double4 ng) { return select(n, -n, dot(ng, i) >= 0.0f); } + + + /// Returns the sine and cosine of the input float value x through the out parameters s and c. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void sincos(float x, out float s, out float c) { s = sin(x); c = cos(x); } + + /// Returns the componentwise sine and cosine of the input float2 vector x through the out parameters s and c. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void sincos(float2 x, out float2 s, out float2 c) { s = sin(x); c = cos(x); } + + /// Returns the componentwise sine and cosine of the input float3 vector x through the out parameters s and c. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void sincos(float3 x, out float3 s, out float3 c) { s = sin(x); c = cos(x); } + + /// Returns the componentwise sine and cosine of the input float4 vector x through the out parameters s and c. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void sincos(float4 x, out float4 s, out float4 c) { s = sin(x); c = cos(x); } + + + /// Returns the sine and cosine of the input double value x through the out parameters s and c. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void sincos(double x, out double s, out double c) { s = sin(x); c = cos(x); } + + /// Returns the componentwise sine and cosine of the input double2 vector x through the out parameters s and c. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void sincos(double2 x, out double2 s, out double2 c) { s = sin(x); c = cos(x); } + + /// Returns the componentwise sine and cosine of the input double3 vector x through the out parameters s and c. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void sincos(double3 x, out double3 s, out double3 c) { s = sin(x); c = cos(x); } + + /// Returns the componentwise sine and cosine of the input double4 vector x through the out parameters s and c. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void sincos(double4 x, out double4 s, out double4 c) { s = sin(x); c = cos(x); } + + + /// Returns number of 1-bits in the binary representations of an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int countbits(int x) { return countbits((uint)x); } + + /// Returns componentwise number of 1-bits in the binary representations of an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 countbits(int2 x) { return countbits((uint2)x); } + + /// Returns componentwise number of 1-bits in the binary representations of an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 countbits(int3 x) { return countbits((uint3)x); } + + /// Returns componentwise number of 1-bits in the binary representations of an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 countbits(int4 x) { return countbits((uint4)x); } + + + /// Returns number of 1-bits in the binary representations of a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int countbits(uint x) + { + x = x - ((x >> 1) & 0x55555555); + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + return (int)((((x + (x >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24); + } + + /// Returns componentwise number of 1-bits in the binary representations of a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 countbits(uint2 x) + { + x = x - ((x >> 1) & 0x55555555); + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + return int2((((x + (x >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24); + } + + /// Returns componentwise number of 1-bits in the binary representations of a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 countbits(uint3 x) + { + x = x - ((x >> 1) & 0x55555555); + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + return int3((((x + (x >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24); + } + + /// Returns componentwise number of 1-bits in the binary representations of a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 countbits(uint4 x) + { + x = x - ((x >> 1) & 0x55555555); + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + return int4((((x + (x >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24); + } + + /// Returns number of 1-bits in the binary representations of a ulong value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int countbits(ulong x) + { + x = x - ((x >> 1) & 0x5555555555555555); + x = (x & 0x3333333333333333) + ((x >> 2) & 0x3333333333333333); + return (int)((((x + (x >> 4)) & 0x0F0F0F0F0F0F0F0F) * 0x0101010101010101) >> 56); + } + + /// Returns number of 1-bits in the binary representations of a long value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int countbits(long x) { return countbits((ulong)x); } + + + /// Returns the componentwise number of leading zeros in the binary representations of an int vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int lzcnt(int x) { return lzcnt((uint)x); } + + /// Returns the componentwise number of leading zeros in the binary representations of an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 lzcnt(int2 x) { return int2(lzcnt(x.x), lzcnt(x.y)); } + + /// Returns the componentwise number of leading zeros in the binary representations of an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 lzcnt(int3 x) { return int3(lzcnt(x.x), lzcnt(x.y), lzcnt(x.z)); } + + /// Returns the componentwise number of leading zeros in the binary representations of an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 lzcnt(int4 x) { return int4(lzcnt(x.x), lzcnt(x.y), lzcnt(x.z), lzcnt(x.w)); } + + + /// Returns number of leading zeros in the binary representations of a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int lzcnt(uint x) + { + if (x == 0) + return 32; + LongDoubleUnion u; + u.doubleValue = 0.0; + u.longValue = 0x4330000000000000L + x; + u.doubleValue -= 4503599627370496.0; + return 0x41E - (int)(u.longValue >> 52); + } + + /// Returns the componentwise number of leading zeros in the binary representations of a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 lzcnt(uint2 x) { return int2(lzcnt(x.x), lzcnt(x.y)); } + + /// Returns the componentwise number of leading zeros in the binary representations of a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 lzcnt(uint3 x) { return int3(lzcnt(x.x), lzcnt(x.y), lzcnt(x.z)); } + + /// Returns the componentwise number of leading zeros in the binary representations of a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 lzcnt(uint4 x) { return int4(lzcnt(x.x), lzcnt(x.y), lzcnt(x.z), lzcnt(x.w)); } + + + /// Returns number of leading zeros in the binary representations of a long value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int lzcnt(long x) { return lzcnt((ulong)x); } + + + /// Returns number of leading zeros in the binary representations of a ulong value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int lzcnt(ulong x) + { + if (x == 0) + return 64; + + uint xh = (uint)(x >> 32); + uint bits = xh != 0 ? xh : (uint)x; + int offset = xh != 0 ? 0x41E : 0x43E; + + LongDoubleUnion u; + u.doubleValue = 0.0; + u.longValue = 0x4330000000000000L + bits; + u.doubleValue -= 4503599627370496.0; + return offset - (int)(u.longValue >> 52); + } + + + /// Returns number of trailing zeros in the binary representations of an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int tzcnt(int x) { return tzcnt((uint)x); } + + /// Returns the componentwise number of leading zeros in the binary representations of an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 tzcnt(int2 x) { return int2(tzcnt(x.x), tzcnt(x.y)); } + + /// Returns the componentwise number of leading zeros in the binary representations of an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 tzcnt(int3 v) { return int3(tzcnt(v.x), tzcnt(v.y), tzcnt(v.z)); } + + /// Returns the componentwise number of leading zeros in the binary representations of an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 tzcnt(int4 v) { return int4(tzcnt(v.x), tzcnt(v.y), tzcnt(v.z), tzcnt(v.w)); } + + + /// Returns number of trailing zeros in the binary representations of a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int tzcnt(uint x) + { + if (x == 0) + return 32; + + x &= (uint)-x; + LongDoubleUnion u; + u.doubleValue = 0.0; + u.longValue = 0x4330000000000000L + x; + u.doubleValue -= 4503599627370496.0; + return (int)(u.longValue >> 52) - 0x3FF; + } + + /// Returns the componentwise number of leading zeros in the binary representations of an uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 tzcnt(uint2 x) { return int2(tzcnt(x.x), tzcnt(x.y)); } + + /// Returns the componentwise number of leading zeros in the binary representations of an uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 tzcnt(uint3 x) { return int3(tzcnt(x.x), tzcnt(x.y), tzcnt(x.z)); } + + /// Returns the componentwise number of leading zeros in the binary representations of an uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 tzcnt(uint4 x) { return int4(tzcnt(x.x), tzcnt(x.y), tzcnt(x.z), tzcnt(x.w)); } + + + /// Returns number of trailing zeros in the binary representations of a long value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int tzcnt(long x) { return tzcnt((ulong)x); } + + + /// Returns number of trailing zeros in the binary representations of a ulong value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int tzcnt(ulong x) + { + if (x == 0) + return 64; + + x = x & (ulong)-(long)x; + uint xl = (uint)x; + + uint bits = xl != 0 ? xl : (uint)(x >> 32); + int offset = xl != 0 ? 0x3FF : 0x3DF; + + LongDoubleUnion u; + u.doubleValue = 0.0; + u.longValue = 0x4330000000000000L + bits; + u.doubleValue -= 4503599627370496.0; + return (int)(u.longValue >> 52) - offset; + } + + + + /// Returns the result of performing a reversal of the bit pattern of an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int reversebits(int x) { return (int)reversebits((uint)x); } + + /// Returns the result of performing a componentwise reversal of the bit pattern of an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 reversebits(int2 x) { return (int2)reversebits((uint2)x); } + + /// Returns the result of performing a componentwise reversal of the bit pattern of an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 reversebits(int3 x) { return (int3)reversebits((uint3)x); } + + /// Returns the result of performing a componentwise reversal of the bit pattern of an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 reversebits(int4 x) { return (int4)reversebits((uint4)x); } + + + /// Returns the result of performing a reversal of the bit pattern of a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint reversebits(uint x) { + x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1); + x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2); + x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4); + x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8); + return (x >> 16) | (x << 16); + } + + /// Returns the result of performing a componentwise reversal of the bit pattern of an uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 reversebits(uint2 x) + { + x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1); + x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2); + x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4); + x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8); + return (x >> 16) | (x << 16); + } + + /// Returns the result of performing a componentwise reversal of the bit pattern of an uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 reversebits(uint3 x) + { + x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1); + x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2); + x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4); + x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8); + return (x >> 16) | (x << 16); + } + + /// Returns the result of performing a componentwise reversal of the bit pattern of an uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 reversebits(uint4 x) + { + x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1); + x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2); + x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4); + x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8); + return (x >> 16) | (x << 16); + } + + + /// Returns the result of performing a reversal of the bit pattern of a long value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long reversebits(long x) { return (long)reversebits((ulong)x); } + + + /// Returns the result of performing a reversal of the bit pattern of a ulong value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong reversebits(ulong x) + { + x = ((x >> 1) & 0x5555555555555555ul) | ((x & 0x5555555555555555ul) << 1); + x = ((x >> 2) & 0x3333333333333333ul) | ((x & 0x3333333333333333ul) << 2); + x = ((x >> 4) & 0x0F0F0F0F0F0F0F0Ful) | ((x & 0x0F0F0F0F0F0F0F0Ful) << 4); + x = ((x >> 8) & 0x00FF00FF00FF00FFul) | ((x & 0x00FF00FF00FF00FFul) << 8); + x = ((x >> 16) & 0x0000FFFF0000FFFFul) | ((x & 0x0000FFFF0000FFFFul) << 16); + return (x >> 32) | (x << 32); + } + + + /// Returns the result of rotating the bits of an int left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int rol(int x, int n) { return (int)rol((uint)x, n); } + + /// Returns the componentwise result of rotating the bits of an int2 left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 rol(int2 x, int n) { return (int2)rol((uint2)x, n); } + + /// Returns the componentwise result of rotating the bits of an int3 left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 rol(int3 x, int n) { return (int3)rol((uint3)x, n); } + + /// Returns the componentwise result of rotating the bits of an int4 left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 rol(int4 x, int n) { return (int4)rol((uint4)x, n); } + + + /// Returns the result of rotating the bits of a uint left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint rol(uint x, int n) { return (x << n) | (x >> (32 - n)); } + + /// Returns the componentwise result of rotating the bits of a uint2 left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 rol(uint2 x, int n) { return (x << n) | (x >> (32 - n)); } + + /// Returns the componentwise result of rotating the bits of a uint3 left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 rol(uint3 x, int n) { return (x << n) | (x >> (32 - n)); } + + /// Returns the componentwise result of rotating the bits of a uint4 left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 rol(uint4 x, int n) { return (x << n) | (x >> (32 - n)); } + + + /// Returns the result of rotating the bits of a long left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long rol(long x, int n) { return (long)rol((ulong)x, n); } + + + /// Returns the result of rotating the bits of a ulong left by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong rol(ulong x, int n) { return (x << n) | (x >> (64 - n)); } + + + /// Returns the result of rotating the bits of an int right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int ror(int x, int n) { return (int)ror((uint)x, n); } + + /// Returns the componentwise result of rotating the bits of an int2 right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 ror(int2 x, int n) { return (int2)ror((uint2)x, n); } + + /// Returns the componentwise result of rotating the bits of an int3 right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 ror(int3 x, int n) { return (int3)ror((uint3)x, n); } + + /// Returns the componentwise result of rotating the bits of an int4 right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 ror(int4 x, int n) { return (int4)ror((uint4)x, n); } + + + /// Returns the result of rotating the bits of a uint right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint ror(uint x, int n) { return (x >> n) | (x << (32 - n)); } + + /// Returns the componentwise result of rotating the bits of a uint2 right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 ror(uint2 x, int n) { return (x >> n) | (x << (32 - n)); } + + /// Returns the componentwise result of rotating the bits of a uint3 right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 ror(uint3 x, int n) { return (x >> n) | (x << (32 - n)); } + + /// Returns the componentwise result of rotating the bits of a uint4 right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 ror(uint4 x, int n) { return (x >> n) | (x << (32 - n)); } + + + /// Returns the result of rotating the bits of a long right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long ror(long x, int n) { return (long)ror((ulong)x, n); } + + + /// Returns the result of rotating the bits of a ulong right by bits n. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong ror(ulong x, int n) { return (x >> n) | (x << (64 - n)); } + + + /// Returns the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int ceilpow2(int x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + /// Returns the result of a componentwise calculation of the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 ceilpow2(int2 x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + /// Returns the result of a componentwise calculation of the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 ceilpow2(int3 x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + /// Returns the result of a componentwise calculation of the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 ceilpow2(int4 x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + + /// Returns the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint ceilpow2(uint x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + /// Returns the result of a componentwise calculation of the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 ceilpow2(uint2 x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + /// Returns the result of a componentwise calculation of the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 ceilpow2(uint3 x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + /// Returns the result of a componentwise calculation of the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 ceilpow2(uint4 x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; + } + + + /// Returns the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static long ceilpow2(long x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + x |= x >> 32; + return x + 1; + } + + + /// Returns the smallest power of two greater than or equal to the input. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ulong ceilpow2(ulong x) + { + x -= 1; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + x |= x >> 32; + return x + 1; + } + + /// Returns the result of converting a float value from degrees to radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float radians(float x) { return x * 0.0174532925f; } + + /// Returns the result of a componentwise conversion of a float2 vector from degrees to radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 radians(float2 x) { return x * 0.0174532925f; } + + /// Returns the result of a componentwise conversion of a float3 vector from degrees to radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 radians(float3 x) { return x * 0.0174532925f; } + + /// Returns the result of a componentwise conversion of a float4 vector from degrees to radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 radians(float4 x) { return x * 0.0174532925f; } + + + /// Returns the result of converting a float value from degrees to radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double radians(double x) { return x * 0.017453292519943296; } + + /// Returns the result of a componentwise conversion of a float2 vector from degrees to radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 radians(double2 x) { return x * 0.017453292519943296; } + + /// Returns the result of a componentwise conversion of a float3 vector from degrees to radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 radians(double3 x) { return x * 0.017453292519943296; } + + /// Returns the result of a componentwise conversion of a float4 vector from degrees to radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 radians(double4 x) { return x * 0.017453292519943296; } + + + /// Returns the result of converting a double value from radians to degrees. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float degrees(float x) { return x * 57.295779513f; } + + /// Returns the result of a componentwise conversion of a double2 vector from radians to degrees. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 degrees(float2 x) { return x * 57.295779513f; } + + /// Returns the result of a componentwise conversion of a double3 vector from radians to degrees. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 degrees(float3 x) { return x * 57.295779513f; } + + /// Returns the result of a componentwise conversion of a double4 vector from radians to degrees. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 degrees(float4 x) { return x * 57.295779513f; } + + + /// Returns the result of converting a double value from radians to degrees. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double degrees(double x) { return x * 57.29577951308232; } + + /// Returns the result of a componentwise conversion of a double2 vector from radians to degrees. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 degrees(double2 x) { return x * 57.29577951308232; } + + /// Returns the result of a componentwise conversion of a double3 vector from radians to degrees. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 degrees(double3 x) { return x * 57.29577951308232; } + + /// Returns the result of a componentwise conversion of a double4 vector from radians to degrees. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 degrees(double4 x) { return x * 57.29577951308232; } + + + /// Returns the minimum component of an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int cmin(int2 x) { return min(x.x, x.y); } + + /// Returns the minimum component of an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int cmin(int3 x) { return min(min(x.x, x.y), x.z); } + + /// Returns the minimum component of an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int cmin(int4 x) { return min(min(x.x, x.y), min(x.z, x.w)); } + + + /// Returns the minimum component of a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint cmin(uint2 x) { return min(x.x, x.y); } + + /// Returns the minimum component of a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint cmin(uint3 x) { return min(min(x.x, x.y), x.z); } + + /// Returns the minimum component of a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint cmin(uint4 x) { return min(min(x.x, x.y), min(x.z, x.w)); } + + + /// Returns the minimum component of a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float cmin(float2 x) { return min(x.x, x.y); } + + /// Returns the minimum component of a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float cmin(float3 x) { return min(min(x.x, x.y), x.z); } + + /// Returns the maximum component of a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float cmin(float4 x) { return min(min(x.x, x.y), min(x.z, x.w)); } + + + /// Returns the minimum component of a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double cmin(double2 x) { return min(x.x, x.y); } + + /// Returns the minimum component of a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double cmin(double3 x) { return min(min(x.x, x.y), x.z); } + + /// Returns the maximum component of a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double cmin(double4 x) { return min(min(x.x, x.y), min(x.z, x.w)); } + + + /// Returns the maximum component of an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int cmax(int2 x) { return max(x.x, x.y); } + + /// Returns the maximum component of an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int cmax(int3 x) { return max(max(x.x, x.y), x.z); } + + /// Returns the maximum component of an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int cmax(int4 x) { return max(max(x.x, x.y), max(x.z, x.w)); } + + + /// Returns the maximum component of a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint cmax(uint2 x) { return max(x.x, x.y); } + + /// Returns the maximum component of a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint cmax(uint3 x) { return max(max(x.x, x.y), x.z); } + + /// Returns the maximum component of a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint cmax(uint4 x) { return max(max(x.x, x.y), max(x.z, x.w)); } + + + /// Returns the maximum component of a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float cmax(float2 x) { return max(x.x, x.y); } + + /// Returns the maximum component of a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float cmax(float3 x) { return max(max(x.x, x.y), x.z); } + + /// Returns the maximum component of a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float cmax(float4 x) { return max(max(x.x, x.y), max(x.z, x.w)); } + + + /// Returns the maximum component of a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double cmax(double2 x) { return max(x.x, x.y); } + + /// Returns the maximum component of a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double cmax(double3 x) { return max(max(x.x, x.y), x.z); } + + /// Returns the maximum component of a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double cmax(double4 x) { return max(max(x.x, x.y), max(x.z, x.w)); } + + + /// Returns the horizontal sum of components of an int2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int csum(int2 x) { return x.x + x.y; } + + /// Returns the horizontal sum of components of an int3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int csum(int3 x) { return x.x + x.y + x.z; } + + /// Returns the horizontal sum of components of an int4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int csum(int4 x) { return x.x + x.y + x.z + x.w; } + + + /// Returns the horizontal sum of components of a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint csum(uint2 x) { return x.x + x.y; } + + /// Returns the horizontal sum of components of a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint csum(uint3 x) { return x.x + x.y + x.z; } + + /// Returns the horizontal sum of components of a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint csum(uint4 x) { return x.x + x.y + x.z + x.w; } + + + /// Returns the horizontal sum of components of a float2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float csum(float2 x) { return x.x + x.y; } + + /// Returns the horizontal sum of components of a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float csum(float3 x) { return x.x + x.y + x.z; } + + /// Returns the horizontal sum of components of a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float csum(float4 x) { return (x.x + x.y) + (x.z + x.w); } + + + /// Returns the horizontal sum of components of a double2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double csum(double2 x) { return x.x + x.y; } + + /// Returns the horizontal sum of components of a double3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double csum(double3 x) { return x.x + x.y + x.z; } + + /// Returns the horizontal sum of components of a double4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double csum(double4 x) { return (x.x + x.y) + (x.z + x.w); } + + /// + /// Packs components with an enabled mask (LSB) to the left + /// The value of components after the last packed component are undefined. + /// Returns the number of enabled mask bits. (0 ... 4) + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static unsafe int compress(int* output, int index, int4 val, bool4 mask) + { + if (mask.x) + output[index++] = val.x; + if (mask.y) + output[index++] = val.y; + if (mask.z) + output[index++] = val.z; + if (mask.w) + output[index++] = val.w; + + return index; + } + + /// Returns the floating point representation of a half-precision floating point value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float f16tof32(uint x) + { + const uint shifted_exp = (0x7c00 << 13); + uint uf = (x & 0x7fff) << 13; + uint e = uf & shifted_exp; + uf += (127 - 15) << 23; + uf += select(0, (128u - 16u) << 23, e == shifted_exp); + uf = select(uf, asuint(asfloat(uf + (1 << 23)) - 6.10351563e-05f), e == 0); + uf |= (x & 0x8000) << 16; + return asfloat(uf); + } + + /// Returns the floating point representation of a half-precision floating point vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 f16tof32(uint2 x) + { + const uint shifted_exp = (0x7c00 << 13); + uint2 uf = (x & 0x7fff) << 13; + uint2 e = uf & shifted_exp; + uf += (127 - 15) << 23; + uf += select(0, (128u - 16u) << 23, e == shifted_exp); + uf = select(uf, asuint(asfloat(uf + (1 << 23)) - 6.10351563e-05f), e == 0); + uf |= (x & 0x8000) << 16; + return asfloat(uf); + } + + /// Returns the floating point representation of a half-precision floating point vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 f16tof32(uint3 x) + { + const uint shifted_exp = (0x7c00 << 13); + uint3 uf = (x & 0x7fff) << 13; + uint3 e = uf & shifted_exp; + uf += (127 - 15) << 23; + uf += select(0, (128u - 16u) << 23, e == shifted_exp); + uf = select(uf, asuint(asfloat(uf + (1 << 23)) - 6.10351563e-05f), e == 0); + uf |= (x & 0x8000) << 16; + return asfloat(uf); + } + + /// Returns the floating point representation of a half-precision floating point vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 f16tof32(uint4 x) + { + const uint shifted_exp = (0x7c00 << 13); + uint4 uf = (x & 0x7fff) << 13; + uint4 e = uf & shifted_exp; + uf += (127 - 15) << 23; + uf += select(0, (128u - 16u) << 23, e == shifted_exp); + uf = select(uf, asuint(asfloat(uf + (1 << 23)) - 6.10351563e-05f), e == 0); + uf |= (x & 0x8000) << 16; + return asfloat(uf); + } + + /// Returns the result converting a float value to its nearest half-precision floating point representation. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint f32tof16(float x) + { + const int infinity_32 = 255 << 23; + const uint msk = 0x7FFFF000u; + + uint ux = asuint(x); + uint uux = ux & msk; + uint h = (uint)(asuint(min(asfloat(uux) * 1.92592994e-34f, 260042752.0f)) + 0x1000) >> 13; // Clamp to signed infinity if overflowed + h = select(h, select(0x7c00u, 0x7e00u, (int)uux > infinity_32), (int)uux >= infinity_32); // NaN->qNaN and Inf->Inf + return h | (ux & ~msk) >> 16; + } + + /// Returns the result of a componentwise conversion of a float2 vector to its nearest half-precision floating point representation. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 f32tof16(float2 x) + { + const int infinity_32 = 255 << 23; + const uint msk = 0x7FFFF000u; + + uint2 ux = asuint(x); + uint2 uux = ux & msk; + uint2 h = (uint2)(asint(min(asfloat(uux) * 1.92592994e-34f, 260042752.0f)) + 0x1000) >> 13; // Clamp to signed infinity if overflowed + h = select(h, select(0x7c00u, 0x7e00u, (int2)uux > infinity_32), (int2)uux >= infinity_32); // NaN->qNaN and Inf->Inf + return h | (ux & ~msk) >> 16; + } + + /// Returns the result of a componentwise conversion of a float3 vector to its nearest half-precision floating point representation. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 f32tof16(float3 x) + { + const int infinity_32 = 255 << 23; + const uint msk = 0x7FFFF000u; + + uint3 ux = asuint(x); + uint3 uux = ux & msk; + uint3 h = (uint3)(asint(min(asfloat(uux) * 1.92592994e-34f, 260042752.0f)) + 0x1000) >> 13; // Clamp to signed infinity if overflowed + h = select(h, select(0x7c00u, 0x7e00u, (int3)uux > infinity_32), (int3)uux >= infinity_32); // NaN->qNaN and Inf->Inf + return h | (ux & ~msk) >> 16; + } + + /// Returns the result of a componentwise conversion of a float4 vector to its nearest half-precision floating point representation. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 f32tof16(float4 x) + { + const int infinity_32 = 255 << 23; + const uint msk = 0x7FFFF000u; + + uint4 ux = asuint(x); + uint4 uux = ux & msk; + uint4 h = (uint4)(asint(min(asfloat(uux) * 1.92592994e-34f, 260042752.0f)) + 0x1000) >> 13; // Clamp to signed infinity if overflowed + h = select(h, select(0x7c00u, 0x7e00u, (int4)uux > infinity_32), (int4)uux >= infinity_32); // NaN->qNaN and Inf->Inf + return h | (ux & ~msk) >> 16; + } + + + /// Returns a uint hash from a block of memory using the xxhash32 algorithm. Can only be used in an unsafe context. + /// A pointer to the beginning of the data. + /// Number of bytes to hash. + /// Starting seed value. + public static unsafe uint hash(void* pBuffer, int numBytes, uint seed = 0) + { + unchecked + { + const uint Prime1 = 2654435761; + const uint Prime2 = 2246822519; + const uint Prime3 = 3266489917; + const uint Prime4 = 668265263; + const uint Prime5 = 374761393; + + uint4* p = (uint4*)pBuffer; + uint hash = seed + Prime5; + if (numBytes >= 16) + { + uint4 state = new uint4(Prime1 + Prime2, Prime2, 0, (uint)-Prime1) + seed; + + int count = numBytes >> 4; + for (int i = 0; i < count; ++i) + { + state += *p++ * Prime2; + state = (state << 13) | (state >> 19); + state *= Prime1; + } + + hash = rol(state.x, 1) + rol(state.y, 7) + rol(state.z, 12) + rol(state.w, 18); + } + + hash += (uint)numBytes; + + uint* puint = (uint*)p; + for (int i = 0; i < ((numBytes >> 2) & 3); ++i) + { + hash += *puint++ * Prime3; + hash = rol(hash, 17) * Prime4; + } + + byte* pbyte = (byte*)puint; + for (int i = 0; i < ((numBytes) & 3); ++i) + { + hash += (*pbyte++) * Prime5; + hash = rol(hash, 11) * Prime1; + } + + hash ^= hash >> 15; + hash *= Prime2; + hash ^= hash >> 13; + hash *= Prime3; + hash ^= hash >> 16; + + return hash; + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 up() { return new float3(0.0f, 1.0f, 0.0f); } // for compatibility + + + // Internal + + // SSE shuffles + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static float4 unpacklo(float4 a, float4 b) + { + return shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static double4 unpacklo(double4 a, double4 b) + { + return shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static float4 unpackhi(float4 a, float4 b) + { + return shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftW, ShuffleComponent.RightW); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static double4 unpackhi(double4 a, double4 b) + { + return shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftW, ShuffleComponent.RightW); + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static float4 movelh(float4 a, float4 b) + { + return shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.RightY); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static double4 movelh(double4 a, double4 b) + { + return shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.RightY); + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static float4 movehl(float4 a, float4 b) + { + return shuffle(b, a, ShuffleComponent.LeftZ, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightW); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static double4 movehl(double4 a, double4 b) + { + return shuffle(b, a, ShuffleComponent.LeftZ, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightW); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static uint fold_to_uint(double x) // utility for double hashing + { + LongDoubleUnion u; + u.longValue = 0; + u.doubleValue = x; + return (uint)(u.longValue >> 32) ^ (uint)u.longValue; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static uint2 fold_to_uint(double2 x) { return uint2(fold_to_uint(x.x), fold_to_uint(x.y)); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static uint3 fold_to_uint(double3 x) { return uint3(fold_to_uint(x.x), fold_to_uint(x.y), fold_to_uint(x.z)); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static uint4 fold_to_uint(double4 x) { return uint4(fold_to_uint(x.x), fold_to_uint(x.y), fold_to_uint(x.z), fold_to_uint(x.w)); } + + [StructLayout(LayoutKind.Explicit)] + internal struct IntFloatUnion + { + [FieldOffset(0)] + public int intValue; + [FieldOffset(0)] + public float floatValue; + } + + [StructLayout(LayoutKind.Explicit)] + internal struct LongDoubleUnion + { + [FieldOffset(0)] + public long longValue; + [FieldOffset(0)] + public double doubleValue; + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math.cs.meta new file mode 100644 index 0000000..b04f0be --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a54902d8339407348996f4a12702eaff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math_unity_conversion.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math_unity_conversion.cs new file mode 100644 index 0000000..e8db079 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math_unity_conversion.cs @@ -0,0 +1,38 @@ +#if !UNITY_DOTSPLAYER +using UnityEngine; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + public partial struct float2 + { + public static implicit operator Vector2(float2 v) { return new Vector2(v.x, v.y); } + public static implicit operator float2(Vector2 v) { return new float2(v.x, v.y); } + } + + public partial struct float3 + { + public static implicit operator Vector3(float3 v) { return new Vector3(v.x, v.y, v.z); } + public static implicit operator float3(Vector3 v) { return new float3(v.x, v.y, v.z); } + } + + public partial struct float4 + { + public static implicit operator float4(Vector4 v) { return new float4(v.x, v.y, v.z, v.w); } + public static implicit operator Vector4(float4 v) { return new Vector4(v.x, v.y, v.z, v.w); } + } + + public partial struct quaternion + { + public static implicit operator Quaternion(quaternion q) { return new Quaternion(q.value.x, q.value.y, q.value.z, q.value.w); } + public static implicit operator quaternion(Quaternion q) { return new quaternion(q.x, q.y, q.z, q.w); } + } + + public partial struct float4x4 + { + public static implicit operator float4x4(Matrix4x4 m) { return new float4x4(m.GetColumn(0), m.GetColumn(1), m.GetColumn(2), m.GetColumn(3)); } + public static implicit operator Matrix4x4(float4x4 m) { return new Matrix4x4(m.c0, m.c1, m.c2, m.c3); } + } +} +#endif diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math_unity_conversion.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math_unity_conversion.cs.meta new file mode 100644 index 0000000..1261674 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/math_unity_conversion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff55c152384775745b54032825a4ef2c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.cs new file mode 100644 index 0000000..b3cd01e --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.cs @@ -0,0 +1,901 @@ +using System.Runtime.CompilerServices; +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public partial struct float2x2 + { + /// Returns a float2x2 matrix representing a counter-clockwise rotation of angle degrees. + public static float2x2 Rotate(float angle) + { + float s, c; + sincos(angle, out s, out c); + return float2x2(c, -s, + s, c); + } + + /// Returns a float2x2 matrix representing a uniform scaling of both axes by s. + public static float2x2 Scale(float s) + { + return float2x2(s, 0.0f, + 0.0f, s); + } + + /// Returns a float2x2 matrix representing a non-uniform axis scaling by x and y. + public static float2x2 Scale(float x, float y) + { + return float2x2(x, 0.0f, + 0.0f, y); + } + + /// Returns a float2x2 matrix representing a non-uniform axis scaling by the components of the float2 vector v. + public static float2x2 Scale(float2 v) + { + return Scale(v.x, v.y); + } + } + + public partial struct float3x3 + { + /// Constructs a float3x3 matrix from a unit quaternion. + public float3x3(quaternion q) + { + float4 v = q.value; + float4 v2 = v + v; + + uint3 npn = uint3(0x80000000, 0x00000000, 0x80000000); + uint3 nnp = uint3(0x80000000, 0x80000000, 0x00000000); + uint3 pnn = uint3(0x00000000, 0x80000000, 0x80000000); + c0 = v2.y * asfloat(asuint(v.yxw) ^ npn) - v2.z * asfloat(asuint(v.zwx) ^ pnn) + float3(1, 0, 0); + c1 = v2.z * asfloat(asuint(v.wzy) ^ nnp) - v2.x * asfloat(asuint(v.yxw) ^ npn) + float3(0, 1, 0); + c2 = v2.x * asfloat(asuint(v.zwx) ^ pnn) - v2.y * asfloat(asuint(v.wzy) ^ nnp) + float3(0, 0, 1); + } + + /// + /// Returns a float3x3 matrix representing a rotation around a unit axis by an angle in radians. + /// The rotation direction is clockwise when looking along the rotation axis towards the origin. + /// + public static float3x3 AxisAngle(float3 axis, float angle) + { + float sina, cosa; + math.sincos(angle, out sina, out cosa); + + float3 u = axis; + float3 u_yzx = u.yzx; + float3 u_zxy = u.zxy; + float3 u_inv_cosa = u - u * cosa; // u * (1.0f - cosa); + float4 t = float4(u * sina, cosa); + + uint3 ppn = uint3(0x00000000, 0x00000000, 0x80000000); + uint3 npp = uint3(0x80000000, 0x00000000, 0x00000000); + uint3 pnp = uint3(0x00000000, 0x80000000, 0x00000000); + + return float3x3( + u.x * u_inv_cosa + asfloat(asuint(t.wzy) ^ ppn), + u.y * u_inv_cosa + asfloat(asuint(t.zwx) ^ npp), + u.z * u_inv_cosa + asfloat(asuint(t.yxw) ^ pnp) + ); + /* + return float3x3( + cosa + u.x * u.x * (1.0f - cosa), u.y * u.x * (1.0f - cosa) - u.z * sina, u.z * u.x * (1.0f - cosa) + u.y * sina, + u.x * u.y * (1.0f - cosa) + u.z * sina, cosa + u.y * u.y * (1.0f - cosa), u.y * u.z * (1.0f - cosa) - u.x * sina, + u.x * u.z * (1.0f - cosa) - u.y * sina, u.y * u.z * (1.0f - cosa) + u.x * sina, cosa + u.z * u.z * (1.0f - cosa) + ); + */ + } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the x-axis, then the y-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float3x3 EulerXYZ(float3 xyz) + { + // return mul(rotateZ(xyz.z), mul(rotateY(xyz.y), rotateX(xyz.x))); + float3 s, c; + sincos(xyz, out s, out c); + return float3x3( + c.y * c.z, c.z * s.x * s.y - c.x * s.z, c.x * c.z * s.y + s.x * s.z, + c.y * s.z, c.x * c.z + s.x * s.y * s.z, c.x * s.y * s.z - c.z * s.x, + -s.y, c.y * s.x, c.x * c.y + ); + } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the x-axis, then the z-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float3x3 EulerXZY(float3 xyz) + { + // return mul(rotateY(xyz.y), mul(rotateZ(xyz.z), rotateX(xyz.x))); } + float3 s, c; + sincos(xyz, out s, out c); + return float3x3( + c.y * c.z, s.x * s.y - c.x * c.y * s.z, c.x * s.y + c.y * s.x * s.z, + s.z, c.x * c.z, -c.z * s.x, + -c.z * s.y, c.y * s.x + c.x * s.y * s.z, c.x * c.y - s.x * s.y * s.z + ); + } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the y-axis, then the x-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float3x3 EulerYXZ(float3 xyz) + { + // return mul(rotateZ(xyz.z), mul(rotateX(xyz.x), rotateY(xyz.y))); + float3 s, c; + sincos(xyz, out s, out c); + return float3x3( + c.y * c.z - s.x * s.y * s.z, -c.x * s.z, c.z * s.y + c.y * s.x * s.z, + c.z * s.x * s.y + c.y * s.z, c.x * c.z, s.y * s.z - c.y * c.z * s.x, + -c.x * s.y, s.x, c.x * c.y + ); + } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the y-axis, then the z-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float3x3 EulerYZX(float3 xyz) + { + // return mul(rotateX(xyz.x), mul(rotateZ(xyz.z), rotateY(xyz.y))); + float3 s, c; + sincos(xyz, out s, out c); + return float3x3( + c.y * c.z, -s.z, c.z * s.y, + s.x * s.y + c.x * c.y * s.z, c.x * c.z, c.x * s.y * s.z - c.y * s.x, + c.y * s.x * s.z - c.x * s.y, c.z * s.x, c.x * c.y + s.x * s.y * s.z + ); + } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the z-axis, then the x-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// This is the default order rotation order in Unity. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float3x3 EulerZXY(float3 xyz) + { + // return mul(rotateY(xyz.y), mul(rotateX(xyz.x), rotateZ(xyz.z))); + float3 s, c; + sincos(xyz, out s, out c); + return float3x3( + c.y * c.z + s.x * s.y * s.z, c.z * s.x * s.y - c.y * s.z, c.x * s.y, + c.x * s.z, c.x * c.z, -s.x, + c.y * s.x * s.z - c.z * s.y, c.y * c.z * s.x + s.y * s.z, c.x * c.y + ); + } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the z-axis, then the y-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float3x3 EulerZYX(float3 xyz) + { + // return mul(rotateX(xyz.x), mul(rotateY(xyz.y), rotateZ(xyz.z))); + float3 s, c; + sincos(xyz, out s, out c); + return float3x3( + c.y * c.z, -c.y * s.z, s.y, + c.z * s.x * s.y + c.x * s.z, c.x * c.z - s.x * s.y * s.z, -c.y * s.x, + s.x * s.z - c.x * c.z * s.y, c.z * s.x + c.x * s.y * s.z, c.x * c.y + ); + } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the x-axis, then the y-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 EulerXYZ(float x, float y, float z) { return EulerXYZ(float3(x, y, z)); } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the x-axis, then the z-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 EulerXZY(float x, float y, float z) { return EulerXZY(float3(x, y, z)); } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the y-axis, then the x-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 EulerYXZ(float x, float y, float z) { return EulerYXZ(float3(x, y, z)); } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the y-axis, then the z-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 EulerYZX(float x, float y, float z) { return EulerYZX(float3(x, y, z)); } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the z-axis, then the x-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// This is the default order rotation order in Unity. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 EulerZXY(float x, float y, float z) { return EulerZXY(float3(x, y, z)); } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing a rotation around the z-axis, then the y-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 EulerZYX(float x, float y, float z) { return EulerZYX(float3(x, y, z)); } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing 3 rotations around the principal axes in a given order. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// When the rotation order is known at compile time, it is recommended for performance reasons to use specific + /// Euler rotation constructors such as EulerZXY(...). + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + /// The order in which the rotations are applied. + public static float3x3 Euler(float3 xyz, RotationOrder order = RotationOrder.Default) + { + switch (order) + { + case RotationOrder.XYZ: + return EulerXYZ(xyz); + case RotationOrder.XZY: + return EulerXZY(xyz); + case RotationOrder.YXZ: + return EulerYXZ(xyz); + case RotationOrder.YZX: + return EulerYZX(xyz); + case RotationOrder.ZXY: + return EulerZXY(xyz); + case RotationOrder.ZYX: + return EulerZYX(xyz); + default: + return float3x3.identity; + } + } + + /// + /// Returns a float3x3 rotation matrix constructed by first performing 3 rotations around the principal axes in a given order. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// When the rotation order is known at compile time, it is recommended for performance reasons to use specific + /// Euler rotation constructors such as EulerZXY(...). + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + /// The order in which the rotations are applied. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 Euler(float x, float y, float z, RotationOrder order = RotationOrder.Default) + { + return Euler(float3(x, y, z), order); + } + + /// Returns a float4x4 matrix that rotates around the x-axis by a given number of radians. + /// The clockwise rotation angle when looking along the x-axis towards the origin in radians. + public static float3x3 RotateX(float angle) + { + // {{1, 0, 0}, {0, c_0, -s_0}, {0, s_0, c_0}} + float s, c; + sincos(angle, out s, out c); + return float3x3(1.0f, 0.0f, 0.0f, + 0.0f, c, -s, + 0.0f, s, c); + } + + /// Returns a float4x4 matrix that rotates around the y-axis by a given number of radians. + /// The clockwise rotation angle when looking along the y-axis towards the origin in radians. + public static float3x3 RotateY(float angle) + { + // {{c_1, 0, s_1}, {0, 1, 0}, {-s_1, 0, c_1}} + float s, c; + sincos(angle, out s, out c); + return float3x3(c, 0.0f, s, + 0.0f, 1.0f, 0.0f, + -s, 0.0f, c); + } + + /// Returns a float4x4 matrix that rotates around the z-axis by a given number of radians. + /// The clockwise rotation angle when looking along the z-axis towards the origin in radians. + public static float3x3 RotateZ(float angle) + { + // {{c_2, -s_2, 0}, {s_2, c_2, 0}, {0, 0, 1}} + float s, c; + sincos(angle, out s, out c); + return float3x3(c, -s, 0.0f, + s, c, 0.0f, + 0.0f, 0.0f, 1.0f); + } + + //Returns a float3x3 matrix representing a uniform scaling of all axes by s. + public static float3x3 Scale(float s) + { + return float3x3(s, 0.0f, 0.0f, + 0.0f, s, 0.0f, + 0.0f, 0.0f, s); + } + + /// Returns a float3x3 matrix representing a non-uniform axis scaling by x, y and z. + public static float3x3 Scale(float x, float y, float z) + { + return float3x3(x, 0.0f, 0.0f, + 0.0f, y, 0.0f, + 0.0f, 0.0f, z); + } + + /// Returns a float3x3 matrix representing a non-uniform axis scaling by the components of the float3 vector v. + public static float3x3 Scale(float3 v) + { + return Scale(v.x, v.y, v.z); + } + + /// + /// Returns a float3x3 view rotation matrix given a unit length forward vector and a unit length up vector. + /// The two input vectors are assumed to be unit length and not collinear. + /// If these assumptions are not met use float3x3.LookRotationSafe instead. + /// + public static float3x3 LookRotation(float3 forward, float3 up) + { + float3 t = normalize(cross(up, forward)); + return float3x3(t, cross(forward, t), forward); + } + + /// + /// Returns a float3x3 view rotation matrix given a forward vector and an up vector. + /// The two input vectors are not assumed to be unit length. + /// If the magnitude of either of the vectors is so extreme that the calculation cannot be carried out reliably or the vectors are collinear, + /// the identity will be returned instead. + /// + public static float3x3 LookRotationSafe(float3 forward, float3 up) + { + float forwardLengthSq = dot(forward, forward); + float upLengthSq = dot(up, up); + + forward *= rsqrt(forwardLengthSq); + up *= rsqrt(upLengthSq); + + float3 t = cross(up, forward); + float tLengthSq = dot(t, t); + t *= rsqrt(tLengthSq); + + float mn = min(min(forwardLengthSq, upLengthSq), tLengthSq); + float mx = max(max(forwardLengthSq, upLengthSq), tLengthSq); + + bool accept = mn > 1e-35f && mx < 1e35f && isfinite(forwardLengthSq) && isfinite(upLengthSq) && isfinite(tLengthSq); + return float3x3( + select(float3(1,0,0), t, accept), + select(float3(0,1,0), cross(forward, t), accept), + select(float3(0,0,1), forward, accept)); + } + } + + public partial struct float4x4 + { + /// Constructs a float4x4 from a float3x3 rotation matrix and a float3 translation vector. + public float4x4(float3x3 rotation, float3 translation) + { + c0 = float4(rotation.c0, 0.0f); + c1 = float4(rotation.c1, 0.0f); + c2 = float4(rotation.c2, 0.0f); + c3 = float4(translation, 1.0f); + } + + /// Constructs a float4x4 from a quaternion and a float3 translation vector. + public float4x4(quaternion rotation, float3 translation) + { + float3x3 rot = float3x3(rotation); + c0 = float4(rot.c0, 0.0f); + c1 = float4(rot.c1, 0.0f); + c2 = float4(rot.c2, 0.0f); + c3 = float4(translation, 1.0f); + } + + /// Constructs a float4x4 from a RigidTransform. + public float4x4(RigidTransform transform) + { + float3x3 rot = float3x3(transform.rot); + c0 = float4(rot.c0, 0.0f); + c1 = float4(rot.c1, 0.0f); + c2 = float4(rot.c2, 0.0f); + c3 = float4(transform.pos, 1.0f); + } + + /// + /// Returns a float4x4 matrix representing a rotation around a unit axis by an angle in radians. + /// The rotation direction is clockwise when looking along the rotation axis towards the origin. + /// + public static float4x4 AxisAngle(float3 axis, float angle) + { + float sina, cosa; + math.sincos(angle, out sina, out cosa); + + float4 u = float4(axis, 0.0f); + float4 u_yzx = u.yzxx; + float4 u_zxy = u.zxyx; + float4 u_inv_cosa = u - u * cosa; // u * (1.0f - cosa); + float4 t = float4(u.xyz * sina, cosa); + + uint4 ppnp = uint4(0x00000000, 0x00000000, 0x80000000, 0x00000000); + uint4 nppp = uint4(0x80000000, 0x00000000, 0x00000000, 0x00000000); + uint4 pnpp = uint4(0x00000000, 0x80000000, 0x00000000, 0x00000000); + uint4 mask = uint4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000); + + return float4x4( + u.x * u_inv_cosa + asfloat((asuint(t.wzyx) ^ ppnp) & mask), + u.y * u_inv_cosa + asfloat((asuint(t.zwxx) ^ nppp) & mask), + u.z * u_inv_cosa + asfloat((asuint(t.yxwx) ^ pnpp) & mask), + float4(0.0f, 0.0f, 0.0f, 1.0f) + ); + + } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the x-axis, then the y-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float4x4 EulerXYZ(float3 xyz) + { + // return mul(rotateZ(xyz.z), mul(rotateY(xyz.y), rotateX(xyz.x))); + float3 s, c; + sincos(xyz, out s, out c); + return float4x4( + c.y * c.z, c.z * s.x * s.y - c.x * s.z, c.x * c.z * s.y + s.x * s.z, 0.0f, + c.y * s.z, c.x * c.z + s.x * s.y * s.z, c.x * s.y * s.z - c.z * s.x, 0.0f, + -s.y, c.y * s.x, c.x * c.y, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + ); + } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the x-axis, then the z-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float4x4 EulerXZY(float3 xyz) + { + // return mul(rotateY(xyz.y), mul(rotateZ(xyz.z), rotateX(xyz.x))); } + float3 s, c; + sincos(xyz, out s, out c); + return float4x4( + c.y * c.z, s.x * s.y - c.x * c.y * s.z, c.x * s.y + c.y * s.x * s.z, 0.0f, + s.z, c.x * c.z, -c.z * s.x, 0.0f, + -c.z * s.y, c.y * s.x + c.x * s.y * s.z, c.x * c.y - s.x * s.y * s.z, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + ); + } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the y-axis, then the x-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float4x4 EulerYXZ(float3 xyz) + { + // return mul(rotateZ(xyz.z), mul(rotateX(xyz.x), rotateY(xyz.y))); + float3 s, c; + sincos(xyz, out s, out c); + return float4x4( + c.y * c.z - s.x * s.y * s.z, -c.x * s.z, c.z * s.y + c.y * s.x * s.z, 0.0f, + c.z * s.x * s.y + c.y * s.z, c.x * c.z, s.y * s.z - c.y * c.z * s.x, 0.0f, + -c.x * s.y, s.x, c.x * c.y, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + ); + } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the y-axis, then the z-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float4x4 EulerYZX(float3 xyz) + { + // return mul(rotateX(xyz.x), mul(rotateZ(xyz.z), rotateY(xyz.y))); + float3 s, c; + sincos(xyz, out s, out c); + return float4x4( + c.y * c.z, -s.z, c.z * s.y, 0.0f, + s.x * s.y + c.x * c.y * s.z, c.x * c.z, c.x * s.y * s.z - c.y * s.x, 0.0f, + c.y * s.x * s.z - c.x * s.y, c.z * s.x, c.x * c.y + s.x * s.y * s.z, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + ); + } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the z-axis, then the x-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// This is the default order rotation order in Unity. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float4x4 EulerZXY(float3 xyz) + { + // return mul(rotateY(xyz.y), mul(rotateX(xyz.x), rotateZ(xyz.z))); + float3 s, c; + sincos(xyz, out s, out c); + return float4x4( + c.y * c.z + s.x * s.y * s.z, c.z * s.x * s.y - c.y * s.z, c.x * s.y, 0.0f, + c.x * s.z, c.x * c.z, -s.x, 0.0f, + c.y * s.x * s.z - c.z * s.y, c.y * c.z * s.x + s.y * s.z, c.x * c.y, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + ); + } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the z-axis, then the y-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static float4x4 EulerZYX(float3 xyz) + { + // return mul(rotateX(xyz.x), mul(rotateY(xyz.y), rotateZ(xyz.z))); + float3 s, c; + sincos(xyz, out s, out c); + return float4x4( + c.y * c.z, -c.y * s.z, s.y, 0.0f, + c.z * s.x * s.y + c.x * s.z, c.x * c.z - s.x * s.y * s.z, -c.y * s.x, 0.0f, + s.x * s.z - c.x * c.z * s.y, c.z * s.x + c.x * s.y * s.z, c.x * c.y, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + ); + } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the x-axis, then the y-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 EulerXYZ(float x, float y, float z) { return EulerXYZ(float3(x, y, z)); } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the x-axis, then the z-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 EulerXZY(float x, float y, float z) { return EulerXZY(float3(x, y, z)); } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the y-axis, then the x-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 EulerYXZ(float x, float y, float z) { return EulerYXZ(float3(x, y, z)); } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the y-axis, then the z-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 EulerYZX(float x, float y, float z) { return EulerYZX(float3(x, y, z)); } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the z-axis, then the x-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// This is the default order rotation order in Unity. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 EulerZXY(float x, float y, float z) { return EulerZXY(float3(x, y, z)); } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing a rotation around the z-axis, then the y-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 EulerZYX(float x, float y, float z) { return EulerZYX(float3(x, y, z)); } + + public static float4x4 Euler(float3 xyz, RotationOrder order = RotationOrder.Default) + { + switch (order) + { + case RotationOrder.XYZ: + return EulerXYZ(xyz); + case RotationOrder.XZY: + return EulerXZY(xyz); + case RotationOrder.YXZ: + return EulerYXZ(xyz); + case RotationOrder.YZX: + return EulerYZX(xyz); + case RotationOrder.ZXY: + return EulerZXY(xyz); + case RotationOrder.ZYX: + return EulerZYX(xyz); + default: + return float4x4.identity; + } + } + + /// + /// Returns a float4x4 rotation matrix constructed by first performing 3 rotations around the principal axes in a given order. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// When the rotation order is known at compile time, it is recommended for performance reasons to use specific + /// Euler rotation constructors such as EulerZXY(...). + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + /// The order in which the rotations are applied. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 Euler(float x, float y, float z, RotationOrder order = RotationOrder.Default) + { + return Euler(float3(x, y, z), order); + } + + /// Returns a float4x4 matrix that rotates around the x-axis by a given number of radians. + /// The clockwise rotation angle when looking along the x-axis towards the origin in radians. + public static float4x4 RotateX(float angle) + { + // {{1, 0, 0}, {0, c_0, -s_0}, {0, s_0, c_0}} + float s, c; + sincos(angle, out s, out c); + return float4x4(1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, c, -s, 0.0f, + 0.0f, s, c, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + + } + + /// Returns a float4x4 matrix that rotates around the y-axis by a given number of radians. + /// The clockwise rotation angle when looking along the y-axis towards the origin in radians. + public static float4x4 RotateY(float angle) + { + // {{c_1, 0, s_1}, {0, 1, 0}, {-s_1, 0, c_1}} + float s, c; + sincos(angle, out s, out c); + return float4x4(c, 0.0f, s, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + -s, 0.0f, c, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + + } + + /// Returns a float4x4 matrix that rotates around the z-axis by a given number of radians. + /// The clockwise rotation angle when looking along the z-axis towards the origin in radians. + public static float4x4 RotateZ(float angle) + { + // {{c_2, -s_2, 0}, {s_2, c_2, 0}, {0, 0, 1}} + float s, c; + sincos(angle, out s, out c); + return float4x4(c, -s, 0.0f, 0.0f, + s, c, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + + } + + /// Returns a float4x4 scale matrix given 3 axis scales. + public static float4x4 Scale(float s) + { + return float4x4(s, 0.0f, 0.0f, 0.0f, + 0.0f, s, 0.0f, 0.0f, + 0.0f, 0.0f, s, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + } + + /// Returns a float4x4 scale matrix given a float3 vector containing the 3 axis scales. + public static float4x4 Scale(float x, float y, float z) + { + return float4x4(x, 0.0f, 0.0f, 0.0f, + 0.0f, y, 0.0f, 0.0f, + 0.0f, 0.0f, z, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + } + + /// Returns a float4x4 scale matrix given a float3 vector containing the 3 axis scales. + public static float4x4 Scale(float3 scales) + { + return Scale(scales.x, scales.y, scales.z); + } + + /// Returns a float4x4 translation matrix given a float3 translation vector. + public static float4x4 Translate(float3 vector) + { + return float4x4(float4(1.0f, 0.0f, 0.0f, 0.0f), + float4(0.0f, 1.0f, 0.0f, 0.0f), + float4(0.0f, 0.0f, 1.0f, 0.0f), + float4(vector.x, vector.y, vector.z, 1.0f)); + } + + /// + /// Returns a float4x4 view matrix given an eye position, a target point and a unit length up vector. + /// The up vector is assumed to be unit length, the eye and target points are assumed to be distinct and + /// the vector between them is assumes to be collinear with the up vector. + /// If these assumptions are not met use float4x4.LookRotationSafe instead. + /// + public static float4x4 LookAt(float3 eye, float3 target, float3 up) + { + float3x3 rot = float3x3.LookRotation(normalize(target - eye), up); + + float4x4 matrix; + matrix.c0 = float4(rot.c0, 0.0F); + matrix.c1 = float4(rot.c1, 0.0F); + matrix.c2 = float4(rot.c2, 0.0F); + matrix.c3 = float4(eye, 1.0F); + return matrix; + } + + /// + /// Returns a float4x4 centered orthographic projection matrix. + /// + /// The width of the view volume. + /// The height of the view volume. + /// The distance to the near plane. + /// The distance to the far plane. + public static float4x4 Ortho(float width, float height, float near, float far) + { + float rcpdx = 1.0f / width; + float rcpdy = 1.0f / height; + float rcpdz = 1.0f / (far - near); + + return float4x4( + 2.0f * rcpdx, 0.0f, 0.0f, 0.0f, + 0.0f, 2.0f * rcpdy, 0.0f, 0.0f, + 0.0f, 0.0f, -2.0f * rcpdz, -(far + near) * rcpdz, + 0.0f, 0.0f, 0.0f, 1.0f + ); + } + + /// + /// Returns a float4x4 off-center orthographic projection matrix. + /// + /// The minimum x-coordinate of the view volume. + /// The maximum x-coordinate of the view volume. + /// The minimum y-coordinate of the view volume. + /// The minimum y-coordinate of the view volume. + /// The distance to the near plane. + /// The distance to the far plane. + public static float4x4 OrthoOffCenter(float left, float right, float bottom, float top, float near, float far) + { + float rcpdx = 1.0f / (right - left); + float rcpdy = 1.0f / (top - bottom); + float rcpdz = 1.0f / (far - near); + + return float4x4( + 2.0f * rcpdx, 0.0f, 0.0f, -(right + left) * rcpdx, + 0.0f, 2.0f * rcpdy, 0.0f, -(top + bottom) * rcpdy, + 0.0f, 0.0f, -2.0f * rcpdz, -(far + near) * rcpdz, + 0.0f, 0.0f, 0.0f, 1.0f + ); + } + + /// + /// Returns a float4x4 perspective projection matrix based on field of view. + /// + /// Vertical Field of view in radians. + /// X:Y aspect ratio. + /// Distance to near plane. Must be greater than zero. + /// Distance to far plane. Must be greater than zero. + public static float4x4 PerspectiveFov(float verticalFov, float aspect, float near, float far) + { + float cotangent = 1.0f / tan(verticalFov * 0.5f); + float rcpdz = 1.0f / (near - far); + + return float4x4( + cotangent / aspect, 0.0f, 0.0f, 0.0f, + 0.0f, cotangent, 0.0f, 0.0f, + 0.0f, 0.0f, (far + near) * rcpdz, 2.0f * near * far * rcpdz, + 0.0f, 0.0f, -1.0f, 0.0f + ); + } + + /// + /// Returns a float4x4 off-center perspective projection matrix. + /// + /// The x-coordinate of the left side of the clipping frustum at the near plane. + /// The x-coordinate of the right side of the clipping frustum at the near plane. + /// The y-coordinate of the bottom side of the clipping frustum at the near plane. + /// The y-coordinate of the top side of the clipping frustum at the near plane. + /// Distance to the near plane. Must be greater than zero. + /// Distance to the far plane. Must be greater than zero. + public static float4x4 PerspectiveOffCenter(float left, float right, float bottom, float top, float near, float far) + { + float rcpdz = 1.0f / (near - far); + float rcpWidth = 1.0f / (right - left); + float rcpHeight = 1.0f / (top - bottom); + + return float4x4( + 2.0f * near * rcpWidth, 0.0f, (left + right) * rcpWidth, 0.0f, + 0.0f, 2.0f * near * rcpHeight, (bottom + top) * rcpHeight, 0.0f, + 0.0f, 0.0f, (far + near) * rcpdz, 2.0f * near * far * rcpdz, + 0.0f, 0.0f, -1.0f, 0.0f + ); + } + + /// + /// Returns a float4x4 matrix representing a combined scale-, rotation- and translation transform. + /// Equivalent to mul(translationTransform, mul(rotationTransform, scaleTransform)). + /// + public static float4x4 TRS(float3 translation, quaternion rotation, float3 scale) + { + float3x3 r = float3x3(rotation); + return float4x4( float4(r.c0 * scale.x, 0.0f), + float4(r.c1 * scale.y, 0.0f), + float4(r.c2 * scale.z, 0.0f), + float4(translation, 1.0f)); + } + } + + partial class math + { + /// Returns a float3x3 matrix constructed from a quaternion. + public static float3x3 float3x3(quaternion rotation) + { + return new float3x3(rotation); + } + + /// Returns a float4x4 constructed from a float3x3 rotation matrix and a float3 translation vector. + public static float4x4 float4x4(float3x3 rotation, float3 translation) + { + return new float4x4(rotation, translation); + } + + /// Returns a float4x4 constructed from a quaternion and a float3 translation vector. + public static float4x4 float4x4(quaternion rotation, float3 translation) + { + return new float4x4(rotation, translation); + } + + /// Returns a float4x4 constructed from a RigidTransform. + public static float4x4 float4x4(RigidTransform transform) + { + return new float4x4(transform); + } + + /// Returns an orthonormalized version of a float3x3 matrix. + public static float3x3 orthonormalize(float3x3 i) + { + float3x3 o; + + float3 u = i.c0; + float3 v = i.c1 - i.c0 * math.dot(i.c1, i.c0); + + float lenU = math.length(u); + float lenV = math.length(v); + + bool c = lenU > 1e-30f && lenV > 1e-30f; + + o.c0 = math.select(float3(1, 0, 0), u / lenU, c); + o.c1 = math.select(float3(0, 1, 0), v / lenV, c); + o.c2 = math.cross(o.c0, o.c1); + + return o; + } + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.cs.meta new file mode 100644 index 0000000..5719318 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e378472eca9810946b664b8ff70f4edf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.gen.cs new file mode 100644 index 0000000..4bd21af --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.gen.cs @@ -0,0 +1,1821 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +namespace Unity.Mathematics +{ + partial class math + { + /// Returns the float value result of a matrix multiplication between a float value and a float value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float mul(float a, float b) + { + return a * b; + } + + /// Returns the float value result of a matrix multiplication between a float2 row vector and a float2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float mul(float2 a, float2 b) + { + return a.x * b.x + a.y * b.y; + } + + /// Returns the float2 row vector result of a matrix multiplication between a float2 row vector and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 mul(float2 a, float2x2 b) + { + return float2( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y); + } + + /// Returns the float3 row vector result of a matrix multiplication between a float2 row vector and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 mul(float2 a, float2x3 b) + { + return float3( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y, + a.x * b.c2.x + a.y * b.c2.y); + } + + /// Returns the float4 row vector result of a matrix multiplication between a float2 row vector and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 mul(float2 a, float2x4 b) + { + return float4( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y, + a.x * b.c2.x + a.y * b.c2.y, + a.x * b.c3.x + a.y * b.c3.y); + } + + /// Returns the float value result of a matrix multiplication between a float3 row vector and a float3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float mul(float3 a, float3 b) + { + return a.x * b.x + a.y * b.y + a.z * b.z; + } + + /// Returns the float2 row vector result of a matrix multiplication between a float3 row vector and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 mul(float3 a, float3x2 b) + { + return float2( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z); + } + + /// Returns the float3 row vector result of a matrix multiplication between a float3 row vector and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 mul(float3 a, float3x3 b) + { + return float3( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z); + } + + /// Returns the float4 row vector result of a matrix multiplication between a float3 row vector and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 mul(float3 a, float3x4 b) + { + return float4( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z, + a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z); + } + + /// Returns the float value result of a matrix multiplication between a float4 row vector and a float4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float mul(float4 a, float4 b) + { + return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + } + + /// Returns the float2 row vector result of a matrix multiplication between a float4 row vector and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 mul(float4 a, float4x2 b) + { + return float2( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w); + } + + /// Returns the float3 row vector result of a matrix multiplication between a float4 row vector and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 mul(float4 a, float4x3 b) + { + return float3( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w); + } + + /// Returns the float4 row vector result of a matrix multiplication between a float4 row vector and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 mul(float4 a, float4x4 b) + { + return float4( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w, + a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z + a.w * b.c3.w); + } + + /// Returns the float2 column vector result of a matrix multiplication between a float2x2 matrix and a float2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 mul(float2x2 a, float2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the float2x2 matrix result of a matrix multiplication between a float2x2 matrix and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 mul(float2x2 a, float2x2 b) + { + return float2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the float2x3 matrix result of a matrix multiplication between a float2x2 matrix and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 mul(float2x2 a, float2x3 b) + { + return float2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the float2x4 matrix result of a matrix multiplication between a float2x2 matrix and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 mul(float2x2 a, float2x4 b) + { + return float2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the float2 column vector result of a matrix multiplication between a float2x3 matrix and a float3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 mul(float2x3 a, float3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the float2x2 matrix result of a matrix multiplication between a float2x3 matrix and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 mul(float2x3 a, float3x2 b) + { + return float2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the float2x3 matrix result of a matrix multiplication between a float2x3 matrix and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 mul(float2x3 a, float3x3 b) + { + return float2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the float2x4 matrix result of a matrix multiplication between a float2x3 matrix and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 mul(float2x3 a, float3x4 b) + { + return float2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the float2 column vector result of a matrix multiplication between a float2x4 matrix and a float4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2 mul(float2x4 a, float4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the float2x2 matrix result of a matrix multiplication between a float2x4 matrix and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x2 mul(float2x4 a, float4x2 b) + { + return float2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the float2x3 matrix result of a matrix multiplication between a float2x4 matrix and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x3 mul(float2x4 a, float4x3 b) + { + return float2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the float2x4 matrix result of a matrix multiplication between a float2x4 matrix and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float2x4 mul(float2x4 a, float4x4 b) + { + return float2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the float3 column vector result of a matrix multiplication between a float3x2 matrix and a float2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 mul(float3x2 a, float2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the float3x2 matrix result of a matrix multiplication between a float3x2 matrix and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 mul(float3x2 a, float2x2 b) + { + return float3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the float3x3 matrix result of a matrix multiplication between a float3x2 matrix and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 mul(float3x2 a, float2x3 b) + { + return float3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the float3x4 matrix result of a matrix multiplication between a float3x2 matrix and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 mul(float3x2 a, float2x4 b) + { + return float3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the float3 column vector result of a matrix multiplication between a float3x3 matrix and a float3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 mul(float3x3 a, float3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the float3x2 matrix result of a matrix multiplication between a float3x3 matrix and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 mul(float3x3 a, float3x2 b) + { + return float3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the float3x3 matrix result of a matrix multiplication between a float3x3 matrix and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 mul(float3x3 a, float3x3 b) + { + return float3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the float3x4 matrix result of a matrix multiplication between a float3x3 matrix and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 mul(float3x3 a, float3x4 b) + { + return float3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the float3 column vector result of a matrix multiplication between a float3x4 matrix and a float4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 mul(float3x4 a, float4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the float3x2 matrix result of a matrix multiplication between a float3x4 matrix and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x2 mul(float3x4 a, float4x2 b) + { + return float3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the float3x3 matrix result of a matrix multiplication between a float3x4 matrix and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x3 mul(float3x4 a, float4x3 b) + { + return float3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the float3x4 matrix result of a matrix multiplication between a float3x4 matrix and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3x4 mul(float3x4 a, float4x4 b) + { + return float3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the float4 column vector result of a matrix multiplication between a float4x2 matrix and a float2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 mul(float4x2 a, float2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the float4x2 matrix result of a matrix multiplication between a float4x2 matrix and a float2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 mul(float4x2 a, float2x2 b) + { + return float4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the float4x3 matrix result of a matrix multiplication between a float4x2 matrix and a float2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 mul(float4x2 a, float2x3 b) + { + return float4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the float4x4 matrix result of a matrix multiplication between a float4x2 matrix and a float2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 mul(float4x2 a, float2x4 b) + { + return float4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the float4 column vector result of a matrix multiplication between a float4x3 matrix and a float3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 mul(float4x3 a, float3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the float4x2 matrix result of a matrix multiplication between a float4x3 matrix and a float3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 mul(float4x3 a, float3x2 b) + { + return float4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the float4x3 matrix result of a matrix multiplication between a float4x3 matrix and a float3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 mul(float4x3 a, float3x3 b) + { + return float4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the float4x4 matrix result of a matrix multiplication between a float4x3 matrix and a float3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 mul(float4x3 a, float3x4 b) + { + return float4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the float4 column vector result of a matrix multiplication between a float4x4 matrix and a float4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 mul(float4x4 a, float4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the float4x2 matrix result of a matrix multiplication between a float4x4 matrix and a float4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x2 mul(float4x4 a, float4x2 b) + { + return float4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the float4x3 matrix result of a matrix multiplication between a float4x4 matrix and a float4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x3 mul(float4x4 a, float4x3 b) + { + return float4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the float4x4 matrix result of a matrix multiplication between a float4x4 matrix and a float4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4x4 mul(float4x4 a, float4x4 b) + { + return float4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the double value result of a matrix multiplication between a double value and a double value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double mul(double a, double b) + { + return a * b; + } + + /// Returns the double value result of a matrix multiplication between a double2 row vector and a double2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double mul(double2 a, double2 b) + { + return a.x * b.x + a.y * b.y; + } + + /// Returns the double2 row vector result of a matrix multiplication between a double2 row vector and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 mul(double2 a, double2x2 b) + { + return double2( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y); + } + + /// Returns the double3 row vector result of a matrix multiplication between a double2 row vector and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 mul(double2 a, double2x3 b) + { + return double3( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y, + a.x * b.c2.x + a.y * b.c2.y); + } + + /// Returns the double4 row vector result of a matrix multiplication between a double2 row vector and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 mul(double2 a, double2x4 b) + { + return double4( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y, + a.x * b.c2.x + a.y * b.c2.y, + a.x * b.c3.x + a.y * b.c3.y); + } + + /// Returns the double value result of a matrix multiplication between a double3 row vector and a double3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double mul(double3 a, double3 b) + { + return a.x * b.x + a.y * b.y + a.z * b.z; + } + + /// Returns the double2 row vector result of a matrix multiplication between a double3 row vector and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 mul(double3 a, double3x2 b) + { + return double2( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z); + } + + /// Returns the double3 row vector result of a matrix multiplication between a double3 row vector and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 mul(double3 a, double3x3 b) + { + return double3( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z); + } + + /// Returns the double4 row vector result of a matrix multiplication between a double3 row vector and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 mul(double3 a, double3x4 b) + { + return double4( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z, + a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z); + } + + /// Returns the double value result of a matrix multiplication between a double4 row vector and a double4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double mul(double4 a, double4 b) + { + return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + } + + /// Returns the double2 row vector result of a matrix multiplication between a double4 row vector and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 mul(double4 a, double4x2 b) + { + return double2( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w); + } + + /// Returns the double3 row vector result of a matrix multiplication between a double4 row vector and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 mul(double4 a, double4x3 b) + { + return double3( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w); + } + + /// Returns the double4 row vector result of a matrix multiplication between a double4 row vector and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 mul(double4 a, double4x4 b) + { + return double4( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w, + a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z + a.w * b.c3.w); + } + + /// Returns the double2 column vector result of a matrix multiplication between a double2x2 matrix and a double2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 mul(double2x2 a, double2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the double2x2 matrix result of a matrix multiplication between a double2x2 matrix and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 mul(double2x2 a, double2x2 b) + { + return double2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the double2x3 matrix result of a matrix multiplication between a double2x2 matrix and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 mul(double2x2 a, double2x3 b) + { + return double2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the double2x4 matrix result of a matrix multiplication between a double2x2 matrix and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 mul(double2x2 a, double2x4 b) + { + return double2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the double2 column vector result of a matrix multiplication between a double2x3 matrix and a double3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 mul(double2x3 a, double3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the double2x2 matrix result of a matrix multiplication between a double2x3 matrix and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 mul(double2x3 a, double3x2 b) + { + return double2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the double2x3 matrix result of a matrix multiplication between a double2x3 matrix and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 mul(double2x3 a, double3x3 b) + { + return double2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the double2x4 matrix result of a matrix multiplication between a double2x3 matrix and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 mul(double2x3 a, double3x4 b) + { + return double2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the double2 column vector result of a matrix multiplication between a double2x4 matrix and a double4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2 mul(double2x4 a, double4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the double2x2 matrix result of a matrix multiplication between a double2x4 matrix and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x2 mul(double2x4 a, double4x2 b) + { + return double2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the double2x3 matrix result of a matrix multiplication between a double2x4 matrix and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x3 mul(double2x4 a, double4x3 b) + { + return double2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the double2x4 matrix result of a matrix multiplication between a double2x4 matrix and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double2x4 mul(double2x4 a, double4x4 b) + { + return double2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the double3 column vector result of a matrix multiplication between a double3x2 matrix and a double2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 mul(double3x2 a, double2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the double3x2 matrix result of a matrix multiplication between a double3x2 matrix and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 mul(double3x2 a, double2x2 b) + { + return double3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the double3x3 matrix result of a matrix multiplication between a double3x2 matrix and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 mul(double3x2 a, double2x3 b) + { + return double3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the double3x4 matrix result of a matrix multiplication between a double3x2 matrix and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 mul(double3x2 a, double2x4 b) + { + return double3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the double3 column vector result of a matrix multiplication between a double3x3 matrix and a double3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 mul(double3x3 a, double3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the double3x2 matrix result of a matrix multiplication between a double3x3 matrix and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 mul(double3x3 a, double3x2 b) + { + return double3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the double3x3 matrix result of a matrix multiplication between a double3x3 matrix and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 mul(double3x3 a, double3x3 b) + { + return double3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the double3x4 matrix result of a matrix multiplication between a double3x3 matrix and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 mul(double3x3 a, double3x4 b) + { + return double3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the double3 column vector result of a matrix multiplication between a double3x4 matrix and a double4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3 mul(double3x4 a, double4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the double3x2 matrix result of a matrix multiplication between a double3x4 matrix and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x2 mul(double3x4 a, double4x2 b) + { + return double3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the double3x3 matrix result of a matrix multiplication between a double3x4 matrix and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x3 mul(double3x4 a, double4x3 b) + { + return double3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the double3x4 matrix result of a matrix multiplication between a double3x4 matrix and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double3x4 mul(double3x4 a, double4x4 b) + { + return double3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the double4 column vector result of a matrix multiplication between a double4x2 matrix and a double2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 mul(double4x2 a, double2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the double4x2 matrix result of a matrix multiplication between a double4x2 matrix and a double2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 mul(double4x2 a, double2x2 b) + { + return double4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the double4x3 matrix result of a matrix multiplication between a double4x2 matrix and a double2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 mul(double4x2 a, double2x3 b) + { + return double4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the double4x4 matrix result of a matrix multiplication between a double4x2 matrix and a double2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 mul(double4x2 a, double2x4 b) + { + return double4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the double4 column vector result of a matrix multiplication between a double4x3 matrix and a double3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 mul(double4x3 a, double3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the double4x2 matrix result of a matrix multiplication between a double4x3 matrix and a double3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 mul(double4x3 a, double3x2 b) + { + return double4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the double4x3 matrix result of a matrix multiplication between a double4x3 matrix and a double3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 mul(double4x3 a, double3x3 b) + { + return double4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the double4x4 matrix result of a matrix multiplication between a double4x3 matrix and a double3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 mul(double4x3 a, double3x4 b) + { + return double4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the double4 column vector result of a matrix multiplication between a double4x4 matrix and a double4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4 mul(double4x4 a, double4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the double4x2 matrix result of a matrix multiplication between a double4x4 matrix and a double4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x2 mul(double4x4 a, double4x2 b) + { + return double4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the double4x3 matrix result of a matrix multiplication between a double4x4 matrix and a double4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x3 mul(double4x4 a, double4x3 b) + { + return double4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the double4x4 matrix result of a matrix multiplication between a double4x4 matrix and a double4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double4x4 mul(double4x4 a, double4x4 b) + { + return double4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the int value result of a matrix multiplication between an int value and an int value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int mul(int a, int b) + { + return a * b; + } + + /// Returns the int value result of a matrix multiplication between an int2 row vector and an int2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int mul(int2 a, int2 b) + { + return a.x * b.x + a.y * b.y; + } + + /// Returns the int2 row vector result of a matrix multiplication between an int2 row vector and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 mul(int2 a, int2x2 b) + { + return int2( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y); + } + + /// Returns the int3 row vector result of a matrix multiplication between an int2 row vector and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 mul(int2 a, int2x3 b) + { + return int3( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y, + a.x * b.c2.x + a.y * b.c2.y); + } + + /// Returns the int4 row vector result of a matrix multiplication between an int2 row vector and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 mul(int2 a, int2x4 b) + { + return int4( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y, + a.x * b.c2.x + a.y * b.c2.y, + a.x * b.c3.x + a.y * b.c3.y); + } + + /// Returns the int value result of a matrix multiplication between an int3 row vector and an int3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int mul(int3 a, int3 b) + { + return a.x * b.x + a.y * b.y + a.z * b.z; + } + + /// Returns the int2 row vector result of a matrix multiplication between an int3 row vector and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 mul(int3 a, int3x2 b) + { + return int2( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z); + } + + /// Returns the int3 row vector result of a matrix multiplication between an int3 row vector and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 mul(int3 a, int3x3 b) + { + return int3( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z); + } + + /// Returns the int4 row vector result of a matrix multiplication between an int3 row vector and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 mul(int3 a, int3x4 b) + { + return int4( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z, + a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z); + } + + /// Returns the int value result of a matrix multiplication between an int4 row vector and an int4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int mul(int4 a, int4 b) + { + return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + } + + /// Returns the int2 row vector result of a matrix multiplication between an int4 row vector and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 mul(int4 a, int4x2 b) + { + return int2( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w); + } + + /// Returns the int3 row vector result of a matrix multiplication between an int4 row vector and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 mul(int4 a, int4x3 b) + { + return int3( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w); + } + + /// Returns the int4 row vector result of a matrix multiplication between an int4 row vector and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 mul(int4 a, int4x4 b) + { + return int4( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w, + a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z + a.w * b.c3.w); + } + + /// Returns the int2 column vector result of a matrix multiplication between an int2x2 matrix and an int2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 mul(int2x2 a, int2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the int2x2 matrix result of a matrix multiplication between an int2x2 matrix and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 mul(int2x2 a, int2x2 b) + { + return int2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the int2x3 matrix result of a matrix multiplication between an int2x2 matrix and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 mul(int2x2 a, int2x3 b) + { + return int2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the int2x4 matrix result of a matrix multiplication between an int2x2 matrix and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 mul(int2x2 a, int2x4 b) + { + return int2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the int2 column vector result of a matrix multiplication between an int2x3 matrix and an int3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 mul(int2x3 a, int3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the int2x2 matrix result of a matrix multiplication between an int2x3 matrix and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 mul(int2x3 a, int3x2 b) + { + return int2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the int2x3 matrix result of a matrix multiplication between an int2x3 matrix and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 mul(int2x3 a, int3x3 b) + { + return int2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the int2x4 matrix result of a matrix multiplication between an int2x3 matrix and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 mul(int2x3 a, int3x4 b) + { + return int2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the int2 column vector result of a matrix multiplication between an int2x4 matrix and an int4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2 mul(int2x4 a, int4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the int2x2 matrix result of a matrix multiplication between an int2x4 matrix and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x2 mul(int2x4 a, int4x2 b) + { + return int2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the int2x3 matrix result of a matrix multiplication between an int2x4 matrix and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x3 mul(int2x4 a, int4x3 b) + { + return int2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the int2x4 matrix result of a matrix multiplication between an int2x4 matrix and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int2x4 mul(int2x4 a, int4x4 b) + { + return int2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the int3 column vector result of a matrix multiplication between an int3x2 matrix and an int2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 mul(int3x2 a, int2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the int3x2 matrix result of a matrix multiplication between an int3x2 matrix and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 mul(int3x2 a, int2x2 b) + { + return int3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the int3x3 matrix result of a matrix multiplication between an int3x2 matrix and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 mul(int3x2 a, int2x3 b) + { + return int3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the int3x4 matrix result of a matrix multiplication between an int3x2 matrix and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 mul(int3x2 a, int2x4 b) + { + return int3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the int3 column vector result of a matrix multiplication between an int3x3 matrix and an int3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 mul(int3x3 a, int3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the int3x2 matrix result of a matrix multiplication between an int3x3 matrix and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 mul(int3x3 a, int3x2 b) + { + return int3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the int3x3 matrix result of a matrix multiplication between an int3x3 matrix and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 mul(int3x3 a, int3x3 b) + { + return int3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the int3x4 matrix result of a matrix multiplication between an int3x3 matrix and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 mul(int3x3 a, int3x4 b) + { + return int3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the int3 column vector result of a matrix multiplication between an int3x4 matrix and an int4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3 mul(int3x4 a, int4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the int3x2 matrix result of a matrix multiplication between an int3x4 matrix and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x2 mul(int3x4 a, int4x2 b) + { + return int3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the int3x3 matrix result of a matrix multiplication between an int3x4 matrix and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x3 mul(int3x4 a, int4x3 b) + { + return int3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the int3x4 matrix result of a matrix multiplication between an int3x4 matrix and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int3x4 mul(int3x4 a, int4x4 b) + { + return int3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the int4 column vector result of a matrix multiplication between an int4x2 matrix and an int2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 mul(int4x2 a, int2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the int4x2 matrix result of a matrix multiplication between an int4x2 matrix and an int2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 mul(int4x2 a, int2x2 b) + { + return int4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the int4x3 matrix result of a matrix multiplication between an int4x2 matrix and an int2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 mul(int4x2 a, int2x3 b) + { + return int4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the int4x4 matrix result of a matrix multiplication between an int4x2 matrix and an int2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 mul(int4x2 a, int2x4 b) + { + return int4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the int4 column vector result of a matrix multiplication between an int4x3 matrix and an int3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 mul(int4x3 a, int3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the int4x2 matrix result of a matrix multiplication between an int4x3 matrix and an int3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 mul(int4x3 a, int3x2 b) + { + return int4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the int4x3 matrix result of a matrix multiplication between an int4x3 matrix and an int3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 mul(int4x3 a, int3x3 b) + { + return int4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the int4x4 matrix result of a matrix multiplication between an int4x3 matrix and an int3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 mul(int4x3 a, int3x4 b) + { + return int4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the int4 column vector result of a matrix multiplication between an int4x4 matrix and an int4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4 mul(int4x4 a, int4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the int4x2 matrix result of a matrix multiplication between an int4x4 matrix and an int4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x2 mul(int4x4 a, int4x2 b) + { + return int4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the int4x3 matrix result of a matrix multiplication between an int4x4 matrix and an int4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x3 mul(int4x4 a, int4x3 b) + { + return int4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the int4x4 matrix result of a matrix multiplication between an int4x4 matrix and an int4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int4x4 mul(int4x4 a, int4x4 b) + { + return int4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the uint value result of a matrix multiplication between a uint value and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint mul(uint a, uint b) + { + return a * b; + } + + /// Returns the uint value result of a matrix multiplication between a uint2 row vector and a uint2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint mul(uint2 a, uint2 b) + { + return a.x * b.x + a.y * b.y; + } + + /// Returns the uint2 row vector result of a matrix multiplication between a uint2 row vector and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 mul(uint2 a, uint2x2 b) + { + return uint2( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y); + } + + /// Returns the uint3 row vector result of a matrix multiplication between a uint2 row vector and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 mul(uint2 a, uint2x3 b) + { + return uint3( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y, + a.x * b.c2.x + a.y * b.c2.y); + } + + /// Returns the uint4 row vector result of a matrix multiplication between a uint2 row vector and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 mul(uint2 a, uint2x4 b) + { + return uint4( + a.x * b.c0.x + a.y * b.c0.y, + a.x * b.c1.x + a.y * b.c1.y, + a.x * b.c2.x + a.y * b.c2.y, + a.x * b.c3.x + a.y * b.c3.y); + } + + /// Returns the uint value result of a matrix multiplication between a uint3 row vector and a uint3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint mul(uint3 a, uint3 b) + { + return a.x * b.x + a.y * b.y + a.z * b.z; + } + + /// Returns the uint2 row vector result of a matrix multiplication between a uint3 row vector and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 mul(uint3 a, uint3x2 b) + { + return uint2( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z); + } + + /// Returns the uint3 row vector result of a matrix multiplication between a uint3 row vector and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 mul(uint3 a, uint3x3 b) + { + return uint3( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z); + } + + /// Returns the uint4 row vector result of a matrix multiplication between a uint3 row vector and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 mul(uint3 a, uint3x4 b) + { + return uint4( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z, + a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z); + } + + /// Returns the uint value result of a matrix multiplication between a uint4 row vector and a uint4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint mul(uint4 a, uint4 b) + { + return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; + } + + /// Returns the uint2 row vector result of a matrix multiplication between a uint4 row vector and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 mul(uint4 a, uint4x2 b) + { + return uint2( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w); + } + + /// Returns the uint3 row vector result of a matrix multiplication between a uint4 row vector and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 mul(uint4 a, uint4x3 b) + { + return uint3( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w); + } + + /// Returns the uint4 row vector result of a matrix multiplication between a uint4 row vector and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 mul(uint4 a, uint4x4 b) + { + return uint4( + a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, + a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, + a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w, + a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z + a.w * b.c3.w); + } + + /// Returns the uint2 column vector result of a matrix multiplication between a uint2x2 matrix and a uint2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 mul(uint2x2 a, uint2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the uint2x2 matrix result of a matrix multiplication between a uint2x2 matrix and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 mul(uint2x2 a, uint2x2 b) + { + return uint2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the uint2x3 matrix result of a matrix multiplication between a uint2x2 matrix and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 mul(uint2x2 a, uint2x3 b) + { + return uint2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the uint2x4 matrix result of a matrix multiplication between a uint2x2 matrix and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 mul(uint2x2 a, uint2x4 b) + { + return uint2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the uint2 column vector result of a matrix multiplication between a uint2x3 matrix and a uint3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 mul(uint2x3 a, uint3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the uint2x2 matrix result of a matrix multiplication between a uint2x3 matrix and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 mul(uint2x3 a, uint3x2 b) + { + return uint2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the uint2x3 matrix result of a matrix multiplication between a uint2x3 matrix and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 mul(uint2x3 a, uint3x3 b) + { + return uint2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the uint2x4 matrix result of a matrix multiplication between a uint2x3 matrix and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 mul(uint2x3 a, uint3x4 b) + { + return uint2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the uint2 column vector result of a matrix multiplication between a uint2x4 matrix and a uint4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 mul(uint2x4 a, uint4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the uint2x2 matrix result of a matrix multiplication between a uint2x4 matrix and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 mul(uint2x4 a, uint4x2 b) + { + return uint2x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the uint2x3 matrix result of a matrix multiplication between a uint2x4 matrix and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 mul(uint2x4 a, uint4x3 b) + { + return uint2x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the uint2x4 matrix result of a matrix multiplication between a uint2x4 matrix and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 mul(uint2x4 a, uint4x4 b) + { + return uint2x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the uint3 column vector result of a matrix multiplication between a uint3x2 matrix and a uint2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 mul(uint3x2 a, uint2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the uint3x2 matrix result of a matrix multiplication between a uint3x2 matrix and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 mul(uint3x2 a, uint2x2 b) + { + return uint3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the uint3x3 matrix result of a matrix multiplication between a uint3x2 matrix and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 mul(uint3x2 a, uint2x3 b) + { + return uint3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the uint3x4 matrix result of a matrix multiplication between a uint3x2 matrix and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 mul(uint3x2 a, uint2x4 b) + { + return uint3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the uint3 column vector result of a matrix multiplication between a uint3x3 matrix and a uint3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 mul(uint3x3 a, uint3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the uint3x2 matrix result of a matrix multiplication between a uint3x3 matrix and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 mul(uint3x3 a, uint3x2 b) + { + return uint3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the uint3x3 matrix result of a matrix multiplication between a uint3x3 matrix and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 mul(uint3x3 a, uint3x3 b) + { + return uint3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the uint3x4 matrix result of a matrix multiplication between a uint3x3 matrix and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 mul(uint3x3 a, uint3x4 b) + { + return uint3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the uint3 column vector result of a matrix multiplication between a uint3x4 matrix and a uint4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 mul(uint3x4 a, uint4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the uint3x2 matrix result of a matrix multiplication between a uint3x4 matrix and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 mul(uint3x4 a, uint4x2 b) + { + return uint3x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the uint3x3 matrix result of a matrix multiplication between a uint3x4 matrix and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 mul(uint3x4 a, uint4x3 b) + { + return uint3x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the uint3x4 matrix result of a matrix multiplication between a uint3x4 matrix and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 mul(uint3x4 a, uint4x4 b) + { + return uint3x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + /// Returns the uint4 column vector result of a matrix multiplication between a uint4x2 matrix and a uint2 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 mul(uint4x2 a, uint2 b) + { + return a.c0 * b.x + a.c1 * b.y; + } + + /// Returns the uint4x2 matrix result of a matrix multiplication between a uint4x2 matrix and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 mul(uint4x2 a, uint2x2 b) + { + return uint4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y); + } + + /// Returns the uint4x3 matrix result of a matrix multiplication between a uint4x2 matrix and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 mul(uint4x2 a, uint2x3 b) + { + return uint4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y); + } + + /// Returns the uint4x4 matrix result of a matrix multiplication between a uint4x2 matrix and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 mul(uint4x2 a, uint2x4 b) + { + return uint4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y, + a.c0 * b.c1.x + a.c1 * b.c1.y, + a.c0 * b.c2.x + a.c1 * b.c2.y, + a.c0 * b.c3.x + a.c1 * b.c3.y); + } + + /// Returns the uint4 column vector result of a matrix multiplication between a uint4x3 matrix and a uint3 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 mul(uint4x3 a, uint3 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; + } + + /// Returns the uint4x2 matrix result of a matrix multiplication between a uint4x3 matrix and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 mul(uint4x3 a, uint3x2 b) + { + return uint4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); + } + + /// Returns the uint4x3 matrix result of a matrix multiplication between a uint4x3 matrix and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 mul(uint4x3 a, uint3x3 b) + { + return uint4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); + } + + /// Returns the uint4x4 matrix result of a matrix multiplication between a uint4x3 matrix and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 mul(uint4x3 a, uint3x4 b) + { + return uint4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); + } + + /// Returns the uint4 column vector result of a matrix multiplication between a uint4x4 matrix and a uint4 column vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 mul(uint4x4 a, uint4 b) + { + return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; + } + + /// Returns the uint4x2 matrix result of a matrix multiplication between a uint4x4 matrix and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 mul(uint4x4 a, uint4x2 b) + { + return uint4x2( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); + } + + /// Returns the uint4x3 matrix result of a matrix multiplication between a uint4x4 matrix and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 mul(uint4x4 a, uint4x3 b) + { + return uint4x3( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); + } + + /// Returns the uint4x4 matrix result of a matrix multiplication between a uint4x4 matrix and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 mul(uint4x4 a, uint4x4 b) + { + return uint4x4( + a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, + a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, + a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, + a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.gen.cs.meta new file mode 100644 index 0000000..4ad76a1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/matrix.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1064bad8f85342fd912d0d27f279601 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/quaternion.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/quaternion.cs new file mode 100644 index 0000000..3f9a447 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/quaternion.cs @@ -0,0 +1,610 @@ +using System; +using System.Runtime.CompilerServices; +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + [Serializable] + public partial struct quaternion : System.IEquatable, IFormattable + { + public float4 value; + + /// A quaternion representing the identity transform. + public static readonly quaternion identity = new quaternion(0.0f, 0.0f, 0.0f, 1.0f); + + /// Constructs a quaternion from four float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public quaternion(float x, float y, float z, float w) { value.x = x; value.y = y; value.z = z; value.w = w; } + + /// Constructs a quaternion from float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public quaternion(float4 value) { this.value = value; } + + /// Implicitly converts a float4 vector to a quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator quaternion(float4 v) { return new quaternion(v); } + + /// Constructs a unit quaternion from a float3x3 rotation matrix. The matrix must be orthonormal. + public quaternion(float3x3 m) + { + float3 u = m.c0; + float3 v = m.c1; + float3 w = m.c2; + + uint u_sign = (asuint(u.x) & 0x80000000); + float t = v.y + asfloat(asuint(w.z) ^ u_sign); + uint4 u_mask = uint4((int)u_sign >> 31); + uint4 t_mask = uint4(asint(t) >> 31); + + float tr = 1.0f + abs(u.x); + + uint4 sign_flips = uint4(0x00000000, 0x80000000, 0x80000000, 0x80000000) ^ (u_mask & uint4(0x00000000, 0x80000000, 0x00000000, 0x80000000)) ^ (t_mask & uint4(0x80000000, 0x80000000, 0x80000000, 0x00000000)); + + value = float4(tr, u.y, w.x, v.z) + asfloat(asuint(float4(t, v.x, u.z, w.y)) ^ sign_flips); // +---, +++-, ++-+, +-++ + + value = asfloat((asuint(value) & ~u_mask) | (asuint(value.zwxy) & u_mask)); + value = asfloat((asuint(value.wzyx) & ~t_mask) | (asuint(value) & t_mask)); + value = normalize(value); + } + + /// Constructs a unit quaternion from an orthonormal float4x4 matrix. + public quaternion(float4x4 m) + { + float4 u = m.c0; + float4 v = m.c1; + float4 w = m.c2; + + uint u_sign = (asuint(u.x) & 0x80000000); + float t = v.y + asfloat(asuint(w.z) ^ u_sign); + uint4 u_mask = uint4((int)u_sign >> 31); + uint4 t_mask = uint4(asint(t) >> 31); + + float tr = 1.0f + abs(u.x); + + uint4 sign_flips = uint4(0x00000000, 0x80000000, 0x80000000, 0x80000000) ^ (u_mask & uint4(0x00000000, 0x80000000, 0x00000000, 0x80000000)) ^ (t_mask & uint4(0x80000000, 0x80000000, 0x80000000, 0x00000000)); + + value = float4(tr, u.y, w.x, v.z) + asfloat(asuint(float4(t, v.x, u.z, w.y)) ^ sign_flips); // +---, +++-, ++-+, +-++ + + value = asfloat((asuint(value) & ~u_mask) | (asuint(value.zwxy) & u_mask)); + value = asfloat((asuint(value.wzyx) & ~t_mask) | (asuint(value) & t_mask)); + + value = normalize(value); + } + + /// + /// Returns a quaternion representing a rotation around a unit axis by an angle in radians. + /// The rotation direction is clockwise when looking along the rotation axis towards the origin. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion AxisAngle(float3 axis, float angle) + { + float sina, cosa; + math.sincos(0.5f * angle, out sina, out cosa); + return quaternion(float4(axis * sina, cosa)); + } + + /// + /// Returns a quaternion constructed by first performing a rotation around the x-axis, then the y-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static quaternion EulerXYZ(float3 xyz) + { + // return mul(rotateZ(xyz.z), mul(rotateY(xyz.y), rotateX(xyz.x))); + float3 s, c; + sincos(0.5f * xyz, out s, out c); + return quaternion( + // s.x * c.y * c.z - s.y * s.z * c.x, + // s.y * c.x * c.z + s.x * s.z * c.y, + // s.z * c.x * c.y - s.x * s.y * c.z, + // c.x * c.y * c.z + s.y * s.z * s.x + float4(s.xyz, c.x) * c.yxxy * c.zzyz + s.yxxy * s.zzyz * float4(c.xyz, s.x) * float4(-1.0f, 1.0f, -1.0f, 1.0f) + ); + } + + /// + /// Returns a quaternion constructed by first performing a rotation around the x-axis, then the z-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static quaternion EulerXZY(float3 xyz) + { + // return mul(rotateY(xyz.y), mul(rotateZ(xyz.z), rotateX(xyz.x))); + float3 s, c; + sincos(0.5f * xyz, out s, out c); + return quaternion( + // s.x * c.y * c.z + s.y * s.z * c.x, + // s.y * c.x * c.z + s.x * s.z * c.y, + // s.z * c.x * c.y - s.x * s.y * c.z, + // c.x * c.y * c.z - s.y * s.z * s.x + float4(s.xyz, c.x) * c.yxxy * c.zzyz + s.yxxy * s.zzyz * float4(c.xyz, s.x) * float4(1.0f, 1.0f, -1.0f, -1.0f) + ); + } + + /// + /// Returns a quaternion constructed by first performing a rotation around the y-axis, then the x-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static quaternion EulerYXZ(float3 xyz) + { + // return mul(rotateZ(xyz.z), mul(rotateX(xyz.x), rotateY(xyz.y))); + float3 s, c; + sincos(0.5f * xyz, out s, out c); + return quaternion( + // s.x * c.y * c.z - s.y * s.z * c.x, + // s.y * c.x * c.z + s.x * s.z * c.y, + // s.z * c.x * c.y + s.x * s.y * c.z, + // c.x * c.y * c.z - s.y * s.z * s.x + float4(s.xyz, c.x) * c.yxxy * c.zzyz + s.yxxy * s.zzyz * float4(c.xyz, s.x) * float4(-1.0f, 1.0f, 1.0f, -1.0f) + ); + } + + /// + /// Returns a quaternion constructed by first performing a rotation around the y-axis, then the z-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static quaternion EulerYZX(float3 xyz) + { + // return mul(rotateX(xyz.x), mul(rotateZ(xyz.z), rotateY(xyz.y))); + float3 s, c; + sincos(0.5f * xyz, out s, out c); + return quaternion( + // s.x * c.y * c.z - s.y * s.z * c.x, + // s.y * c.x * c.z - s.x * s.z * c.y, + // s.z * c.x * c.y + s.x * s.y * c.z, + // c.x * c.y * c.z + s.y * s.z * s.x + float4(s.xyz, c.x) * c.yxxy * c.zzyz + s.yxxy * s.zzyz * float4(c.xyz, s.x) * float4(-1.0f, -1.0f, 1.0f, 1.0f) + ); + } + + /// + /// Returns a quaternion constructed by first performing a rotation around the z-axis, then the x-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// This is the default order rotation order in Unity. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static quaternion EulerZXY(float3 xyz) + { + // return mul(rotateY(xyz.y), mul(rotateX(xyz.x), rotateZ(xyz.z))); + float3 s, c; + sincos(0.5f * xyz, out s, out c); + return quaternion( + // s.x * c.y * c.z + s.y * s.z * c.x, + // s.y * c.x * c.z - s.x * s.z * c.y, + // s.z * c.x * c.y - s.x * s.y * c.z, + // c.x * c.y * c.z + s.y * s.z * s.x + float4(s.xyz, c.x) * c.yxxy * c.zzyz + s.yxxy * s.zzyz * float4(c.xyz, s.x) * float4(1.0f, -1.0f, -1.0f, 1.0f) + ); + } + + /// + /// Returns a quaternion constructed by first performing a rotation around the z-axis, then the y-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + public static quaternion EulerZYX(float3 xyz) + { + // return mul(rotateX(xyz.x), mul(rotateY(xyz.y), rotateZ(xyz.z))); + float3 s, c; + sincos(0.5f * xyz, out s, out c); + return quaternion( + // s.x * c.y * c.z + s.y * s.z * c.x, + // s.y * c.x * c.z - s.x * s.z * c.y, + // s.z * c.x * c.y + s.x * s.y * c.z, + // c.x * c.y * c.z - s.y * s.x * s.z + float4(s.xyz, c.x) * c.yxxy * c.zzyz + s.yxxy * s.zzyz * float4(c.xyz, s.x) * float4(1.0f, -1.0f, 1.0f, -1.0f) + ); + } + + /// + /// Returns a quaternion constructed by first performing a rotation around the x-axis, then the y-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion EulerXYZ(float x, float y, float z) { return EulerXYZ(float3(x, y, z)); } + + /// + /// Returns a quaternion constructed by first performing a rotation around the x-axis, then the z-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion EulerXZY(float x, float y, float z) { return EulerXZY(float3(x, y, z)); } + + /// + /// Returns a quaternion constructed by first performing a rotation around the y-axis, then the x-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion EulerYXZ(float x, float y, float z) { return EulerYXZ(float3(x, y, z)); } + + /// + /// Returns a quaternion constructed by first performing a rotation around the y-axis, then the z-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion EulerYZX(float x, float y, float z) { return EulerYZX(float3(x, y, z)); } + + /// + /// Returns a quaternion constructed by first performing a rotation around the z-axis, then the x-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// This is the default order rotation order in Unity. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion EulerZXY(float x, float y, float z) { return EulerZXY(float3(x, y, z)); } + + /// + /// Returns a quaternion constructed by first performing a rotation around the z-axis, then the y-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion EulerZYX(float x, float y, float z) { return EulerZYX(float3(x, y, z)); } + + /// + /// Returns a quaternion constructed by first performing 3 rotations around the principal axes in a given order. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// When the rotation order is known at compile time, it is recommended for performance reasons to use specific + /// Euler rotation constructors such as EulerZXY(...). + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + /// The order in which the rotations are applied. + public static quaternion Euler(float3 xyz, RotationOrder order = RotationOrder.ZXY) + { + switch (order) + { + case RotationOrder.XYZ: + return EulerXYZ(xyz); + case RotationOrder.XZY: + return EulerXZY(xyz); + case RotationOrder.YXZ: + return EulerYXZ(xyz); + case RotationOrder.YZX: + return EulerYZX(xyz); + case RotationOrder.ZXY: + return EulerZXY(xyz); + case RotationOrder.ZYX: + return EulerZYX(xyz); + default: + return quaternion.identity; + } + } + + /// + /// Returns a quaternion constructed by first performing 3 rotations around the principal axes in a given order. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// When the rotation order is known at compile time, it is recommended for performance reasons to use specific + /// Euler rotation constructors such as EulerZXY(...). + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + /// The order in which the rotations are applied. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion Euler(float x, float y, float z, RotationOrder order = RotationOrder.Default) + { + return Euler(float3(x, y, z), order); + } + + /// Returns a float4x4 matrix that rotates around the x-axis by a given number of radians. + /// The clockwise rotation angle when looking along the x-axis towards the origin in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion RotateX(float angle) + { + float sina, cosa; + math.sincos(0.5f * angle, out sina, out cosa); + return quaternion(sina, 0.0f, 0.0f, cosa); + } + + /// Returns a float4x4 matrix that rotates around the y-axis by a given number of radians. + /// The clockwise rotation angle when looking along the y-axis towards the origin in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion RotateY(float angle) + { + float sina, cosa; + math.sincos(0.5f * angle, out sina, out cosa); + return quaternion(0.0f, sina, 0.0f, cosa); + } + + /// Returns a float4x4 matrix that rotates around the z-axis by a given number of radians. + /// The clockwise rotation angle when looking along the z-axis towards the origin in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion RotateZ(float angle) + { + float sina, cosa; + math.sincos(0.5f * angle, out sina, out cosa); + return quaternion(0.0f, 0.0f, sina, cosa); + } + + /// + /// Returns a quaternion view rotation given a unit length forward vector and a unit length up vector. + /// The two input vectors are assumed to be unit length and not collinear. + /// If these assumptions are not met use float3x3.LookRotationSafe instead. + /// + public static quaternion LookRotation(float3 forward, float3 up) + { + float3 t = normalize(cross(up, forward)); + return quaternion(float3x3(t, cross(forward, t), forward)); + } + + /// + /// Returns a quaternion view rotation given a forward vector and an up vector. + /// The two input vectors are not assumed to be unit length. + /// If the magnitude of either of the vectors is so extreme that the calculation cannot be carried out reliably or the vectors are collinear, + /// the identity will be returned instead. + /// + public static quaternion LookRotationSafe(float3 forward, float3 up) + { + float forwardLengthSq = dot(forward, forward); + float upLengthSq = dot(up, up); + + forward *= rsqrt(forwardLengthSq); + up *= rsqrt(upLengthSq); + + float3 t = cross(up, forward); + float tLengthSq = dot(t, t); + t *= rsqrt(tLengthSq); + + float mn = min(min(forwardLengthSq, upLengthSq), tLengthSq); + float mx = max(max(forwardLengthSq, upLengthSq), tLengthSq); + + bool accept = mn > 1e-35f && mx < 1e35f && isfinite(forwardLengthSq) && isfinite(upLengthSq) && isfinite(tLengthSq); + return quaternion(select(float4(0.0f, 0.0f, 0.0f, 1.0f), quaternion(float3x3(t, cross(forward, t),forward)).value, accept)); + } + + /// Returns true if the quaternion is equal to a given quaternion, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(quaternion x) { return value.x == x.value.x && value.y == x.value.y && value.z == x.value.z && value.w == x.value.w; } + + /// Returns whether true if the quaternion is equal to a given quaternion, false otherwise. + public override bool Equals(object x) { return Equals((quaternion)x); } + + /// Returns a hash code for the quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + /// Returns a string representation of the quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("quaternion({0}f, {1}f, {2}f, {3}f)", value.x, value.y, value.z, value.w); + } + + /// Returns a string representation of the quaternion using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("quaternion({0}f, {1}f, {2}f, {3}f)", value.x.ToString(format, formatProvider), value.y.ToString(format, formatProvider), value.z.ToString(format, formatProvider), value.w.ToString(format, formatProvider)); + } + } + + public static partial class math + { + /// Returns a quaternion constructed from four float values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion quaternion(float x, float y, float z, float w) { return new quaternion(x, y, z, w); } + + /// Returns a quaternion constructed from a float4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion quaternion(float4 value) { return new quaternion(value); } + + /// Returns a unit quaternion constructed from a float3x3 rotation matrix. The matrix must be orthonormal. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion quaternion(float3x3 m) { return new quaternion(m); } + + /// Returns a unit quaternion constructed from a float4x4 matrix. The matrix must be orthonormal. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion quaternion(float4x4 m) { return new quaternion(m); } + + /// Returns the conjugate of a quaternion value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion conjugate(quaternion q) + { + return quaternion(q.value * float4(-1.0f, -1.0f, -1.0f, 1.0f)); + } + + /// Returns the inverse of a quaternion value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion inverse(quaternion q) + { + float4 x = q.value; + return quaternion(rcp(dot(x, x)) * x * float4(-1.0f, -1.0f, -1.0f, 1.0f)); + } + + /// Returns the dot product of two quaternions. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float dot(quaternion a, quaternion b) + { + return dot(a.value, b.value); + } + + /// Returns the length of a quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float length(quaternion q) + { + return sqrt(dot(q.value, q.value)); + } + + /// Returns the squared length of a quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float lengthsq(quaternion q) + { + return dot(q.value, q.value); + } + + /// Returns a normalized version of a quaternion q by scaling it by 1 / length(q). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion normalize(quaternion q) + { + float4 x = q.value; + return quaternion(rsqrt(dot(x, x)) * x); + } + + /// + /// Returns a safe normalized version of the q by scaling it by 1 / length(q). + /// Returns the identity when 1 / length(q) does not produce a finite number. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion normalizesafe(quaternion q) + { + float4 x = q.value; + float len = math.dot(x, x); + return quaternion(math.select(Mathematics.quaternion.identity.value, x * math.rsqrt(len), len > FLT_MIN_NORMAL)); + } + + /// + /// Returns a safe normalized version of the q by scaling it by 1 / length(q). + /// Returns the given default value when 1 / length(q) does not produce a finite number. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion normalizesafe(quaternion q, quaternion defaultvalue) + { + float4 x = q.value; + float len = math.dot(x, x); + return quaternion(math.select(defaultvalue.value, x * math.rsqrt(len), len > FLT_MIN_NORMAL)); + } + + /// Returns the natural exponent of a quaternion. Assumes w is zero. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion unitexp(quaternion q) + { + float v_rcp_len = rsqrt(dot(q.value.xyz, q.value.xyz)); + float v_len = rcp(v_rcp_len); + float sin_v_len, cos_v_len; + sincos(v_len, out sin_v_len, out cos_v_len); + return quaternion(float4(q.value.xyz * v_rcp_len * sin_v_len, cos_v_len)); + } + + /// Returns the natural exponent of a quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion exp(quaternion q) + { + float v_rcp_len = rsqrt(dot(q.value.xyz, q.value.xyz)); + float v_len = rcp(v_rcp_len); + float sin_v_len, cos_v_len; + sincos(v_len, out sin_v_len, out cos_v_len); + return quaternion(float4(q.value.xyz * v_rcp_len * sin_v_len, cos_v_len) * exp(q.value.w)); + } + + /// Returns the natural logarithm of a unit length quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion unitlog(quaternion q) + { + float w = clamp(q.value.w, -1.0f, 1.0f); + float s = acos(w) * rsqrt(1.0f - w*w); + return quaternion(float4(q.value.xyz * s, 0.0f)); + } + + /// Returns the natural logarithm of a quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion log(quaternion q) + { + float v_len_sq = dot(q.value.xyz, q.value.xyz); + float q_len_sq = v_len_sq + q.value.w*q.value.w; + + float s = acos(clamp(q.value.w * rsqrt(q_len_sq), -1.0f, 1.0f)) * rsqrt(v_len_sq); + return quaternion(float4(q.value.xyz * s, 0.5f * log(q_len_sq))); + } + + /// Returns the result of transforming the quaternion b by the quaternion a. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion mul(quaternion a, quaternion b) + { + return quaternion(a.value.wwww * b.value + (a.value.xyzx * b.value.wwwx + a.value.yzxy * b.value.zxyy) * float4(1.0f, 1.0f, 1.0f, -1.0f) - a.value.zxyz * b.value.yzxz); + } + + /// Returns the result of transforming a vector by a quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 mul(quaternion q, float3 v) + { + float3 t = 2 * cross(q.value.xyz, v); + return v + q.value.w * t + cross(q.value.xyz, t); + } + + /// Returns the result of rotating a vector by a unit quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 rotate(quaternion q, float3 v) + { + float3 t = 2 * cross(q.value.xyz, v); + return v + q.value.w * t + cross(q.value.xyz, t); + } + + /// Returns the result of a normalized linear interpolation between two quaternions q1 and a2 using an interpolation parameter t. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static quaternion nlerp(quaternion q1, quaternion q2, float t) + { + float dt = dot(q1, q2); + if(dt < 0.0f) + { + q2.value = -q2.value; + } + + return normalize(quaternion(lerp(q1.value, q2.value, t))); + } + + /// Returns the result of a spherical interpolation between two quaternions q1 and a2 using an interpolation parameter t. + public static quaternion slerp(quaternion q1, quaternion q2, float t) + { + float dt = dot(q1, q2); + if (dt < 0.0f) + { + dt = -dt; + q2.value = -q2.value; + } + + if (dt < 0.9995f) + { + float angle = acos(dt); + float s = rsqrt(1.0f - dt * dt); // 1.0f / sin(angle) + float w1 = sin(angle * (1.0f - t)) * s; + float w2 = sin(angle * t) * s; + return quaternion(q1.value * w1 + q2.value * w2); + } + else + { + // if the angle is small, use linear interpolation + return nlerp(q1, q2, t); + } + } + + /// Returns a uint hash code of a quaternion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(quaternion q) + { + return hash(q.value); + } + + /// + /// Returns a uint4 vector hash code of a quaternion. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(quaternion q) + { + return hashwide(q.value); + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 forward(quaternion q) { return mul(q, float3(0, 0, 1)); } // for compatibility + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/quaternion.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/quaternion.cs.meta new file mode 100644 index 0000000..2f32afa --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/quaternion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8481bb868ae344e9b4a5551a11483d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/random.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/random.cs new file mode 100644 index 0000000..d565fc1 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/random.cs @@ -0,0 +1,567 @@ +using System; +using System.Runtime.CompilerServices; +using static Unity.Mathematics.math; +using System.Diagnostics; + +namespace Unity.Mathematics +{ + /// + /// Random Number Generator based on xorshift. + /// Designed for minimal state (32bits) to be easily embeddable into components. + /// Core functionality is integer multiplication free to improve vectorization + /// on less capable SIMD instruction sets. + /// + [Serializable] + public partial struct Random + { + public uint state; + + /// + /// Constructs a Random instance with a given seed value. The seed must be non-zero. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public Random(uint seed) + { + state = seed; + CheckInitState(); + NextState(); + } + + /// + /// Initialized the state of the Random instance with a given seed value. The seed must be non-zero. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void InitState(uint seed = 0x6E624EB7u) + { + state = seed; + NextState(); + } + + /// Returns a uniformly random bool value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool NextBool() + { + return (NextState() & 1) == 1; + } + + /// Returns a uniformly random bool2 value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool2 NextBool2() + { + uint v = NextState(); + return (uint2(v) & uint2(1, 2)) == 0; + } + + /// Returns a uniformly random bool3 value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool3 NextBool3() + { + uint v = NextState(); + return (uint3(v) & uint3(1, 2, 4)) == 0; + } + + /// Returns a uniformly random bool4 value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool4 NextBool4() + { + uint v = NextState(); + return (uint4(v) & uint4(1, 2, 4, 8)) == 0; + } + + + /// Returns a uniformly random int value in the interval [-2147483647, 2147483647]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int NextInt() + { + return (int)NextState() ^ -2147483648; + } + + /// Returns a uniformly random int2 value with all components in the interval [-2147483647, 2147483647]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2 NextInt2() + { + return int2((int)NextState(), (int)NextState()) ^ -2147483648; + } + + /// Returns a uniformly random int3 value with all components in the interval [-2147483647, 2147483647]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3 NextInt3() + { + return int3((int)NextState(), (int)NextState(), (int)NextState()) ^ -2147483648; + } + + /// Returns a uniformly random int4 value with all components in the interval [-2147483647, 2147483647]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4 NextInt4() + { + return int4((int)NextState(), (int)NextState(), (int)NextState(), (int)NextState()) ^ -2147483648; + } + + /// Returns a uniformly random int value in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int NextInt(int max) + { + CheckNextIntMax(max); + return (int)((NextState() * (ulong)max) >> 32); + } + + /// Returns a uniformly random int2 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2 NextInt2(int2 max) + { + CheckNextIntMax(max.x); + CheckNextIntMax(max.y); + return int2((int)(NextState() * (ulong)max.x >> 32), + (int)(NextState() * (ulong)max.y >> 32)); + } + + /// Returns a uniformly random int3 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3 NextInt3(int3 max) + { + CheckNextIntMax(max.x); + CheckNextIntMax(max.y); + CheckNextIntMax(max.z); + return int3((int)(NextState() * (ulong)max.x >> 32), + (int)(NextState() * (ulong)max.y >> 32), + (int)(NextState() * (ulong)max.z >> 32)); + } + + /// Returns a uniformly random int4 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4 NextInt4(int4 max) + { + CheckNextIntMax(max.x); + CheckNextIntMax(max.y); + CheckNextIntMax(max.z); + CheckNextIntMax(max.w); + return int4((int)(NextState() * (ulong)max.x >> 32), + (int)(NextState() * (ulong)max.y >> 32), + (int)(NextState() * (ulong)max.z >> 32), + (int)(NextState() * (ulong)max.w >> 32)); + } + + /// Returns a uniformly random int value in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int NextInt(int min, int max) + { + CheckNextIntMinMax(min, max); + uint range = (uint)(max - min); + return (int)(NextState() * (ulong)range >> 32) + min; + } + + /// Returns a uniformly random int2 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int2 NextInt2(int2 min, int2 max) + { + CheckNextIntMinMax(min.x, max.x); + CheckNextIntMinMax(min.y, max.y); + uint2 range = (uint2)(max - min); + return int2((int)(NextState() * (ulong)range.x >> 32), + (int)(NextState() * (ulong)range.y >> 32)) + min; + } + + /// Returns a uniformly random int3 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int3 NextInt3(int3 min, int3 max) + { + CheckNextIntMinMax(min.x, max.x); + CheckNextIntMinMax(min.y, max.y); + CheckNextIntMinMax(min.z, max.z); + uint3 range = (uint3)(max - min); + return int3((int)(NextState() * (ulong)range.x >> 32), + (int)(NextState() * (ulong)range.y >> 32), + (int)(NextState() * (ulong)range.z >> 32)) + min; + } + + /// Returns a uniformly random int4 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int4 NextInt4(int4 min, int4 max) + { + CheckNextIntMinMax(min.x, max.x); + CheckNextIntMinMax(min.y, max.y); + CheckNextIntMinMax(min.z, max.z); + CheckNextIntMinMax(min.w, max.w); + uint4 range = (uint4)(max - min); + return int4((int)(NextState() * (ulong)range.x >> 32), + (int)(NextState() * (ulong)range.y >> 32), + (int)(NextState() * (ulong)range.z >> 32), + (int)(NextState() * (ulong)range.w >> 32)) + min; + } + + /// Returns a uniformly random uint value in the interval [0, 4294967294]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint NextUInt() + { + return NextState() - 1u; + } + + /// Returns a uniformly random uint2 value with all components in the interval [0, 4294967294]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2 NextUInt2() + { + return uint2(NextState(), NextState()) - 1u; + } + + /// Returns a uniformly random uint3 value with all components in the interval [0, 4294967294]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3 NextUInt3() + { + return uint3(NextState(), NextState(), NextState()) - 1u; + } + + /// Returns a uniformly random uint4 value with all components in the interval [0, 4294967294]. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4 NextUInt4() + { + return uint4(NextState(), NextState(), NextState(), NextState()) - 1u; + } + + + /// Returns a uniformly random uint value in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint NextUInt(uint max) + { + return (uint)((NextState() * (ulong)max) >> 32); + } + + /// Returns a uniformly random uint2 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2 NextUInt2(uint2 max) + { + return uint2( (uint)(NextState() * (ulong)max.x >> 32), + (uint)(NextState() * (ulong)max.y >> 32)); + } + + /// Returns a uniformly random uint3 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3 NextUInt3(uint3 max) + { + return uint3( (uint)(NextState() * (ulong)max.x >> 32), + (uint)(NextState() * (ulong)max.y >> 32), + (uint)(NextState() * (ulong)max.z >> 32)); + } + + /// Returns a uniformly random uint4 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4 NextUInt4(uint4 max) + { + return uint4( (uint)(NextState() * (ulong)max.x >> 32), + (uint)(NextState() * (ulong)max.y >> 32), + (uint)(NextState() * (ulong)max.z >> 32), + (uint)(NextState() * (ulong)max.w >> 32)); + } + + /// Returns a uniformly random uint value in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint NextUInt(uint min, uint max) + { + CheckNextUIntMinMax(min, max); + uint range = max - min; + return (uint)(NextState() * (ulong)range >> 32) + min; + } + + /// Returns a uniformly random uint2 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2 NextUInt2(uint2 min, uint2 max) + { + CheckNextUIntMinMax(min.x, max.x); + CheckNextUIntMinMax(min.y, max.y); + uint2 range = max - min; + return uint2((uint)(NextState() * (ulong)range.x >> 32), + (uint)(NextState() * (ulong)range.y >> 32)) + min; + } + + /// Returns a uniformly random uint3 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3 NextUInt3(uint3 min, uint3 max) + { + CheckNextUIntMinMax(min.x, max.x); + CheckNextUIntMinMax(min.y, max.y); + CheckNextUIntMinMax(min.z, max.z); + uint3 range = max - min; + return uint3((uint)(NextState() * (ulong)range.x >> 32), + (uint)(NextState() * (ulong)range.y >> 32), + (uint)(NextState() * (ulong)range.z >> 32)) + min; + } + + /// Returns a uniformly random uint4 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4 NextUInt4(uint4 min, uint4 max) + { + CheckNextUIntMinMax(min.x, max.x); + CheckNextUIntMinMax(min.y, max.y); + CheckNextUIntMinMax(min.z, max.z); + CheckNextUIntMinMax(min.w, max.w); + uint4 range = (uint4)(max - min); + return uint4((uint)(NextState() * (ulong)range.x >> 32), + (uint)(NextState() * (ulong)range.y >> 32), + (uint)(NextState() * (ulong)range.z >> 32), + (uint)(NextState() * (ulong)range.w >> 32)) + min; + } + + /// Returns a uniformly random float value in the interval [0, 1). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float NextFloat() + { + return asfloat(0x3f800000 | (NextState() >> 9)) - 1.0f; + } + + /// Returns a uniformly random float2 value with all components in the interval [0, 1). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2 NextFloat2() + { + return asfloat(0x3f800000 | (uint2(NextState(), NextState()) >> 9)) - 1.0f; + } + + /// Returns a uniformly random float3 value with all components in the interval [0, 1). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3 NextFloat3() + { + return asfloat(0x3f800000 | (uint3(NextState(), NextState(), NextState()) >> 9)) - 1.0f; + } + + /// Returns a uniformly random float4 value with all components in the interval [0, 1). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4 NextFloat4() + { + return asfloat(0x3f800000 | (uint4(NextState(), NextState(), NextState(), NextState()) >> 9)) - 1.0f; + } + + + /// Returns a uniformly random float value in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float NextFloat(float max) { return NextFloat() * max; } + + /// Returns a uniformly random float2 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2 NextFloat2(float2 max) { return NextFloat2() * max; } + + /// Returns a uniformly random float3 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3 NextFloat3(float3 max) { return NextFloat3() * max; } + + /// Returns a uniformly random float4 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4 NextFloat4(float4 max) { return NextFloat4() * max; } + + + /// Returns a uniformly random float value in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float NextFloat(float min, float max) { return NextFloat() * (max - min) + min; } + + /// Returns a uniformly random float2 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2 NextFloat2(float2 min, float2 max) { return NextFloat2() * (max - min) + min; } + + /// Returns a uniformly random float3 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3 NextFloat3(float3 min, float3 max) { return NextFloat3() * (max - min) + min; } + + /// Returns a uniformly random float4 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float4 NextFloat4(float4 min, float4 max) { return NextFloat4() * (max - min) + min; } + + + + /// Returns a uniformly random double value in the interval [0, 1). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double NextDouble() + { + ulong sx = ((ulong)NextState() << 20) ^ NextState(); + return asdouble(0x3ff0000000000000 | sx) - 1.0; + } + + /// Returns a uniformly random double2 value with all components in the interval [0, 1). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2 NextDouble2() + { + ulong sx = ((ulong)NextState() << 20) ^ NextState(); + ulong sy = ((ulong)NextState() << 20) ^ NextState(); + return double2(asdouble(0x3ff0000000000000 | sx), + asdouble(0x3ff0000000000000 | sy)) - 1.0; + } + + /// Returns a uniformly random double3 value with all components in the interval [0, 1). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3 NextDouble3() + { + ulong sx = ((ulong)NextState() << 20) ^ NextState(); + ulong sy = ((ulong)NextState() << 20) ^ NextState(); + ulong sz = ((ulong)NextState() << 20) ^ NextState(); + return double3(asdouble(0x3ff0000000000000 | sx), + asdouble(0x3ff0000000000000 | sy), + asdouble(0x3ff0000000000000 | sz)) - 1.0; + } + + /// Returns a uniformly random double4 value with all components in the interval [0, 1). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4 NextDouble4() + { + ulong sx = ((ulong)NextState() << 20) ^ NextState(); + ulong sy = ((ulong)NextState() << 20) ^ NextState(); + ulong sz = ((ulong)NextState() << 20) ^ NextState(); + ulong sw = ((ulong)NextState() << 20) ^ NextState(); + return double4(asdouble(0x3ff0000000000000 | sx), + asdouble(0x3ff0000000000000 | sy), + asdouble(0x3ff0000000000000 | sz), + asdouble(0x3ff0000000000000 | sw)) - 1.0; + } + + + /// Returns a uniformly random double value in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double NextDouble(double max) { return NextDouble() * max; } + + /// Returns a uniformly random double2 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2 NextDouble2(double2 max) { return NextDouble2() * max; } + + /// Returns a uniformly random double3 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3 NextDouble3(double3 max) { return NextDouble3() * max; } + + /// Returns a uniformly random double4 value with all components in the interval [0, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4 NextDouble4(double4 max) { return NextDouble4() * max; } + + + /// Returns a uniformly random double value in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double NextDouble(double min, double max) { return NextDouble() * (max - min) + min; } + + /// Returns a uniformly random double2 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2 NextDouble2(double2 min, double2 max) { return NextDouble2() * (max - min) + min; } + + /// Returns a uniformly random double3 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3 NextDouble3(double3 min, double3 max) { return NextDouble3() * (max - min) + min; } + + /// Returns a uniformly random double4 value with all components in the interval [min, max). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double4 NextDouble4(double4 min, double4 max) { return NextDouble4() * (max - min) + min; } + + /// Returns a unit length float2 vector representing a uniformly random 2D direction. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float2 NextFloat2Direction() + { + float angle = NextFloat() * PI * 2.0f; + float s, c; + sincos(angle, out s, out c); + return float2(c, s); + } + + /// Returns a unit length double2 vector representing a uniformly random 2D direction. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double2 NextDouble2Direction() + { + double angle = NextDouble() * PI_DBL * 2.0; + double s, c; + sincos(angle, out s, out c); + return double2(c, s); + } + + /// Returns a unit length float3 vector representing a uniformly random 3D direction. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float3 NextFloat3Direction() + { + float2 rnd = NextFloat2(); + float z = rnd.x * 2.0f - 1.0f; + float r = sqrt(max(1.0f - z * z, 0.0f)); + float angle = rnd.y * PI * 2.0f; + float s, c; + sincos(angle, out s, out c); + return float3(c*r, s*r, z); + } + + /// Returns a unit length double3 vector representing a uniformly random 3D direction. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public double3 NextDouble3Direction() + { + double2 rnd = NextDouble2(); + double z = rnd.x * 2.0 - 1.0; + double r = sqrt(max(1.0 - z * z, 0.0)); + double angle = rnd.y * PI_DBL * 2.0; + double s, c; + sincos(angle, out s, out c); + return double3(c * r, s * r, z); + } + + /// Returns a unit length quaternion representing a uniformly 3D rotation. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public quaternion NextQuaternionRotation() + { + float3 rnd = NextFloat3(float3(2.0f * PI, 2.0f * PI, 1.0f)); + float u1 = rnd.z; + float2 theta_rho = rnd.xy; + + float i = sqrt(1.0f - u1); + float j = sqrt(u1); + + float2 sin_theta_rho; + float2 cos_theta_rho; + sincos(theta_rho, out sin_theta_rho, out cos_theta_rho); + + quaternion q = quaternion(i * sin_theta_rho.x, i * cos_theta_rho.x, j * sin_theta_rho.y, j * cos_theta_rho.y); + return quaternion(select(q.value, -q.value, q.value.w < 0.0f)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private uint NextState() + { + CheckState(); + uint t = state; + state ^= state << 13; + state ^= state >> 17; + state ^= state << 5; + return t; + } + + [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] + private void CheckInitState() + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if (state == 0) + throw new System.ArgumentException("Seed must be non-zero"); +#endif + } + + [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] + private void CheckState() + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if(state == 0) + throw new System.ArgumentException("Invalid state 0. Random object has not been properly initialized"); +#endif + } + + [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] + private void CheckNextIntMax(int max) + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if (max < 0) + throw new System.ArgumentException("max must be positive"); +#endif + } + + [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] + private void CheckNextIntMinMax(int min, int max) + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if (min > max) + throw new System.ArgumentException("min must be less than or equal to max"); +#endif + } + + [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] + private void CheckNextUIntMinMax(uint min, uint max) + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if (min > max) + throw new System.ArgumentException("min must be less than or equal to max"); +#endif + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/random.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/random.cs.meta new file mode 100644 index 0000000..9c9463b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/random.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 897d0bd3ae806496b8724cb68e7d18c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/rigid_transform.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/rigid_transform.cs new file mode 100644 index 0000000..4ff9c2d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/rigid_transform.cs @@ -0,0 +1,339 @@ +using System; +using System.Runtime.CompilerServices; +using static Unity.Mathematics.math; + +namespace Unity.Mathematics +{ + public struct RigidTransform + { + public quaternion rot; + public float3 pos; + + /// A RigidTransform representing the identity transform. + public static readonly RigidTransform identity = new RigidTransform(new quaternion(0.0f, 0.0f, 0.0f, 1.0f), new float3(0.0f, 0.0f, 0.0f)); + + /// Constructs a RigidTransform from a rotation represented by a unit quaternion and a translation represented by a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public RigidTransform(quaternion rotation, float3 translation) + { + this.rot = rotation; + this.pos = translation; + } + + /// Constructs a RigidTransform from a rotation represented by a float3x3 matrix and a translation represented by a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public RigidTransform(float3x3 rotation, float3 translation) + { + this.rot = new quaternion(rotation); + this.pos = translation; + } + + /// Constructs a RigidTransform from a float4x4. Assumes the matrix is orthonormal. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public RigidTransform(float4x4 transform) + { + this.rot = new quaternion(transform); + this.pos = transform.c3.xyz; + } + + + /// + /// Returns a RigidTransform representing a rotation around a unit axis by an angle in radians. + /// The rotation direction is clockwise when looking along the rotation axis towards the origin. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform AxisAngle(float3 axis, float angle) { return new RigidTransform(quaternion.AxisAngle(axis, angle), float3.zero); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the x-axis, then the y-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerXYZ(float3 xyz) { return new RigidTransform(quaternion.EulerXYZ(xyz), float3.zero); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the x-axis, then the z-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerXZY(float3 xyz) { return new RigidTransform(quaternion.EulerXZY(xyz), float3.zero); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the y-axis, then the x-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerYXZ(float3 xyz) { return new RigidTransform(quaternion.EulerYXZ(xyz), float3.zero); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the y-axis, then the z-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerYZX(float3 xyz) { return new RigidTransform(quaternion.EulerYZX(xyz), float3.zero); } + + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the z-axis, then the x-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// This is the default order rotation order in Unity. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerZXY(float3 xyz) { return new RigidTransform(quaternion.EulerZXY(xyz), float3.zero); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the z-axis, then the y-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerZYX(float3 xyz) { return new RigidTransform(quaternion.EulerZYX(xyz), float3.zero); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the x-axis, then the y-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerXYZ(float x, float y, float z) { return EulerXYZ(float3(x, y, z)); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the x-axis, then the z-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerXZY(float x, float y, float z) { return EulerXZY(float3(x, y, z)); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the y-axis, then the x-axis and finally the z-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerYXZ(float x, float y, float z) { return EulerYXZ(float3(x, y, z)); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the y-axis, then the z-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerYZX(float x, float y, float z) { return EulerYZX(float3(x, y, z)); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the z-axis, then the x-axis and finally the y-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// This is the default order rotation order in Unity. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerZXY(float x, float y, float z) { return EulerZXY(float3(x, y, z)); } + + /// + /// Returns a RigidTransform constructed by first performing a rotation around the z-axis, then the y-axis and finally the x-axis. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform EulerZYX(float x, float y, float z) { return EulerZYX(float3(x, y, z)); } + + /// + /// Returns a RigidTransform constructed by first performing 3 rotations around the principal axes in a given order. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// When the rotation order is known at compile time, it is recommended for performance reasons to use specific + /// Euler rotation constructors such as EulerZXY(...). + /// + /// A float3 vector containing the rotation angles around the x-, y- and z-axis measures in radians. + /// The order in which the rotations are applied. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform Euler(float3 xyz, RotationOrder order = RotationOrder.ZXY) + { + switch (order) + { + case RotationOrder.XYZ: + return EulerXYZ(xyz); + case RotationOrder.XZY: + return EulerXZY(xyz); + case RotationOrder.YXZ: + return EulerYXZ(xyz); + case RotationOrder.YZX: + return EulerYZX(xyz); + case RotationOrder.ZXY: + return EulerZXY(xyz); + case RotationOrder.ZYX: + return EulerZYX(xyz); + default: + return RigidTransform.identity; + } + } + + /// + /// Returns a RigidTransform constructed by first performing 3 rotations around the principal axes in a given order. + /// All rotation angles are in radians and clockwise when looking along the rotation axis towards the origin. + /// When the rotation order is known at compile time, it is recommended for performance reasons to use specific + /// Euler rotation constructors such as EulerZXY(...). + /// + /// The rotation angle around the x-axis in radians. + /// The rotation angle around the y-axis in radians. + /// The rotation angle around the z-axis in radians. + /// The order in which the rotations are applied. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform Euler(float x, float y, float z, RotationOrder order = RotationOrder.Default) + { + return Euler(float3(x, y, z), order); + } + + /// Returns a float4x4 matrix that rotates around the x-axis by a given number of radians. + /// The clockwise rotation angle when looking along the x-axis towards the origin in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform RotateX(float angle) + { + return new RigidTransform(quaternion.RotateX(angle), float3.zero); + } + + /// Returns a float4x4 matrix that rotates around the y-axis by a given number of radians. + /// The clockwise rotation angle when looking along the y-axis towards the origin in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform RotateY(float angle) + { + return new RigidTransform(quaternion.RotateY(angle), float3.zero); + } + + /// Returns a float4x4 matrix that rotates around the z-axis by a given number of radians. + /// The clockwise rotation angle when looking along the z-axis towards the origin in radians. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform RotateZ(float angle) + { + return new RigidTransform(quaternion.RotateZ(angle), float3.zero); + } + + /// Returns a RigidTransform that translates by an amount specified by a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform Translate(float3 vector) + { + return new RigidTransform(quaternion.identity, vector); + } + + + /// Returns true if the RigidTransform is equal to a given RigidTransform, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(RigidTransform x) { return rot.Equals(x.rot) && pos.Equals(x.pos); } + + /// Returns true if the RigidTransform is equal to a given RigidTransform, false otherwise. + public override bool Equals(object x) { return Equals((RigidTransform)x); } + + /// Returns a hash code for the RigidTransform. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + /// Returns a string representation of the RigidTransform. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("RigidTransform(({0}f, {1}f, {2}f, {3}f), ({4}f, {5}f, {6}f))", + rot.value.x, rot.value.y, rot.value.z, rot.value.w, pos.x, pos.y, pos.z); + } + + /// Returns a string representation of the quaternion using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("float4x4(({0}f, {1}f, {2}f, {3}f), ({4}f, {5}f, {6}f))", + rot.value.x.ToString(format, formatProvider), + rot.value.y.ToString(format, formatProvider), + rot.value.z.ToString(format, formatProvider), + rot.value.w.ToString(format, formatProvider), + pos.x.ToString(format, formatProvider), + pos.y.ToString(format, formatProvider), + pos.z.ToString(format, formatProvider)); + } + } + + public static partial class math + { + /// Returns a RigidTransform constructed from a rotation represented by a unit quaternion and a translation represented by a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform RigidTransform(quaternion rot, float3 pos) { return new RigidTransform(rot, pos); } + + /// Returns a RigidTransform constructed from a rotation represented by a unit quaternion and a translation represented by a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform RigidTransform(float3x3 rotation, float3 translation) { return new RigidTransform(rotation, translation); } + + /// Returns a RigidTransform constructed from a rotation represented by a float3x3 matrix and a translation represented by a float3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform RigidTransform(float4x4 transform) { return new RigidTransform(transform); } + + /// Returns the inverse of a RigidTransform. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform inverse(RigidTransform t) + { + quaternion invRotation = inverse(t.rot); + float3 invTranslation = mul(invRotation, -t.pos); + return new RigidTransform(invRotation, invTranslation); + } + + /// Returns the result of transforming the RigidTransform b by the RigidTransform a. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static RigidTransform mul(RigidTransform a, RigidTransform b) + { + return new RigidTransform(mul(a.rot, b.rot), mul(a.rot, b.pos) + a.pos); + } + + /// Returns the result of transforming a float4 homogeneous coordinate by a RigidTransform. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float4 mul(RigidTransform a, float4 pos) + { + return float4(mul(a.rot, pos.xyz) + a.pos * pos.w, pos.w); + } + + /// Returns the result of rotating a float3 vector by a RigidTransform. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 rotate(RigidTransform a, float3 dir) + { + return mul(a.rot, dir); + } + + /// Returns the result of transforming a float3 point by a RigidTransform. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static float3 transform(RigidTransform a, float3 pos) + { + return mul(a.rot, pos) + a.pos; + } + + /// Returns a uint hash code of a RigidTransform. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(RigidTransform t) + { + return hash(t.rot) + 0xC5C5394Bu * hash(t.pos); + } + + /// + /// Returns a uint4 vector hash code of a RigidTransform. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(RigidTransform t) + { + return hashwide(t.rot) + 0xC5C5394Bu * hashwide(t.pos).xyzz; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/rigid_transform.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/rigid_transform.cs.meta new file mode 100644 index 0000000..fd25cb9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/rigid_transform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 790a4c601e5714c18971af51ef3cbe71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2.gen.cs new file mode 100644 index 0000000..1cd72ce --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2.gen.cs @@ -0,0 +1,780 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(uint2.DebuggerProxy))] + [System.Serializable] + public partial struct uint2 : System.IEquatable, IFormattable + { + public uint x; + public uint y; + + /// uint2 zero value. + public static readonly uint2 zero; + + /// Constructs a uint2 vector from two uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(uint x, uint y) + { + this.x = x; + this.y = y; + } + + /// Constructs a uint2 vector from a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(uint2 xy) + { + this.x = xy.x; + this.y = xy.y; + } + + /// Constructs a uint2 vector from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(uint v) + { + this.x = v; + this.y = v; + } + + /// Constructs a uint2 vector from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(bool v) + { + this.x = v ? 1u : 0u; + this.y = v ? 1u : 0u; + } + + /// Constructs a uint2 vector from a bool2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(bool2 v) + { + this.x = v.x ? 1u : 0u; + this.y = v.y ? 1u : 0u; + } + + /// Constructs a uint2 vector from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(int v) + { + this.x = (uint)v; + this.y = (uint)v; + } + + /// Constructs a uint2 vector from a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(int2 v) + { + this.x = (uint)v.x; + this.y = (uint)v.y; + } + + /// Constructs a uint2 vector from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(float v) + { + this.x = (uint)v; + this.y = (uint)v; + } + + /// Constructs a uint2 vector from a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(float2 v) + { + this.x = (uint)v.x; + this.y = (uint)v.y; + } + + /// Constructs a uint2 vector from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(double v) + { + this.x = (uint)v; + this.y = (uint)v; + } + + /// Constructs a uint2 vector from a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2(double2 v) + { + this.x = (uint)v.x; + this.y = (uint)v.y; + } + + + /// Implicitly converts a single uint value to a uint2 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint2(uint v) { return new uint2(v); } + + /// Explicitly converts a single bool value to a uint2 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2(bool v) { return new uint2(v); } + + /// Explicitly converts a bool2 vector to a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2(bool2 v) { return new uint2(v); } + + /// Explicitly converts a single int value to a uint2 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2(int v) { return new uint2(v); } + + /// Explicitly converts a int2 vector to a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2(int2 v) { return new uint2(v); } + + /// Explicitly converts a single float value to a uint2 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2(float v) { return new uint2(v); } + + /// Explicitly converts a float2 vector to a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2(float2 v) { return new uint2(v); } + + /// Explicitly converts a single double value to a uint2 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2(double v) { return new uint2(v); } + + /// Explicitly converts a double2 vector to a uint2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2(double2 v) { return new uint2(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator * (uint2 lhs, uint2 rhs) { return new uint2 (lhs.x * rhs.x, lhs.y * rhs.y); } + + /// Returns the result of a componentwise multiplication operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator * (uint2 lhs, uint rhs) { return new uint2 (lhs.x * rhs, lhs.y * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator * (uint lhs, uint2 rhs) { return new uint2 (lhs * rhs.x, lhs * rhs.y); } + + + /// Returns the result of a componentwise addition operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator + (uint2 lhs, uint2 rhs) { return new uint2 (lhs.x + rhs.x, lhs.y + rhs.y); } + + /// Returns the result of a componentwise addition operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator + (uint2 lhs, uint rhs) { return new uint2 (lhs.x + rhs, lhs.y + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator + (uint lhs, uint2 rhs) { return new uint2 (lhs + rhs.x, lhs + rhs.y); } + + + /// Returns the result of a componentwise subtraction operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator - (uint2 lhs, uint2 rhs) { return new uint2 (lhs.x - rhs.x, lhs.y - rhs.y); } + + /// Returns the result of a componentwise subtraction operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator - (uint2 lhs, uint rhs) { return new uint2 (lhs.x - rhs, lhs.y - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator - (uint lhs, uint2 rhs) { return new uint2 (lhs - rhs.x, lhs - rhs.y); } + + + /// Returns the result of a componentwise division operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator / (uint2 lhs, uint2 rhs) { return new uint2 (lhs.x / rhs.x, lhs.y / rhs.y); } + + /// Returns the result of a componentwise division operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator / (uint2 lhs, uint rhs) { return new uint2 (lhs.x / rhs, lhs.y / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator / (uint lhs, uint2 rhs) { return new uint2 (lhs / rhs.x, lhs / rhs.y); } + + + /// Returns the result of a componentwise modulus operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator % (uint2 lhs, uint2 rhs) { return new uint2 (lhs.x % rhs.x, lhs.y % rhs.y); } + + /// Returns the result of a componentwise modulus operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator % (uint2 lhs, uint rhs) { return new uint2 (lhs.x % rhs, lhs.y % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator % (uint lhs, uint2 rhs) { return new uint2 (lhs % rhs.x, lhs % rhs.y); } + + + /// Returns the result of a componentwise increment operation on a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator ++ (uint2 val) { return new uint2 (++val.x, ++val.y); } + + + /// Returns the result of a componentwise decrement operation on a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator -- (uint2 val) { return new uint2 (--val.x, --val.y); } + + + /// Returns the result of a componentwise less than operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (uint2 lhs, uint2 rhs) { return new bool2 (lhs.x < rhs.x, lhs.y < rhs.y); } + + /// Returns the result of a componentwise less than operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (uint2 lhs, uint rhs) { return new bool2 (lhs.x < rhs, lhs.y < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator < (uint lhs, uint2 rhs) { return new bool2 (lhs < rhs.x, lhs < rhs.y); } + + + /// Returns the result of a componentwise less or equal operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (uint2 lhs, uint2 rhs) { return new bool2 (lhs.x <= rhs.x, lhs.y <= rhs.y); } + + /// Returns the result of a componentwise less or equal operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (uint2 lhs, uint rhs) { return new bool2 (lhs.x <= rhs, lhs.y <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator <= (uint lhs, uint2 rhs) { return new bool2 (lhs <= rhs.x, lhs <= rhs.y); } + + + /// Returns the result of a componentwise greater than operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (uint2 lhs, uint2 rhs) { return new bool2 (lhs.x > rhs.x, lhs.y > rhs.y); } + + /// Returns the result of a componentwise greater than operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (uint2 lhs, uint rhs) { return new bool2 (lhs.x > rhs, lhs.y > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator > (uint lhs, uint2 rhs) { return new bool2 (lhs > rhs.x, lhs > rhs.y); } + + + /// Returns the result of a componentwise greater or equal operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (uint2 lhs, uint2 rhs) { return new bool2 (lhs.x >= rhs.x, lhs.y >= rhs.y); } + + /// Returns the result of a componentwise greater or equal operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (uint2 lhs, uint rhs) { return new bool2 (lhs.x >= rhs, lhs.y >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator >= (uint lhs, uint2 rhs) { return new bool2 (lhs >= rhs.x, lhs >= rhs.y); } + + + /// Returns the result of a componentwise unary minus operation on a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator - (uint2 val) { return new uint2 ((uint)-val.x, (uint)-val.y); } + + + /// Returns the result of a componentwise unary plus operation on a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator + (uint2 val) { return new uint2 (+val.x, +val.y); } + + + /// Returns the result of a componentwise left shift operation on a uint2 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator << (uint2 x, int n) { return new uint2 (x.x << n, x.y << n); } + + /// Returns the result of a componentwise right shift operation on a uint2 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator >> (uint2 x, int n) { return new uint2 (x.x >> n, x.y >> n); } + + /// Returns the result of a componentwise equality operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (uint2 lhs, uint2 rhs) { return new bool2 (lhs.x == rhs.x, lhs.y == rhs.y); } + + /// Returns the result of a componentwise equality operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (uint2 lhs, uint rhs) { return new bool2 (lhs.x == rhs, lhs.y == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator == (uint lhs, uint2 rhs) { return new bool2 (lhs == rhs.x, lhs == rhs.y); } + + + /// Returns the result of a componentwise not equal operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (uint2 lhs, uint2 rhs) { return new bool2 (lhs.x != rhs.x, lhs.y != rhs.y); } + + /// Returns the result of a componentwise not equal operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (uint2 lhs, uint rhs) { return new bool2 (lhs.x != rhs, lhs.y != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2 operator != (uint lhs, uint2 rhs) { return new bool2 (lhs != rhs.x, lhs != rhs.y); } + + + /// Returns the result of a componentwise bitwise not operation on a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator ~ (uint2 val) { return new uint2 (~val.x, ~val.y); } + + + /// Returns the result of a componentwise bitwise and operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator & (uint2 lhs, uint2 rhs) { return new uint2 (lhs.x & rhs.x, lhs.y & rhs.y); } + + /// Returns the result of a componentwise bitwise and operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator & (uint2 lhs, uint rhs) { return new uint2 (lhs.x & rhs, lhs.y & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator & (uint lhs, uint2 rhs) { return new uint2 (lhs & rhs.x, lhs & rhs.y); } + + + /// Returns the result of a componentwise bitwise or operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator | (uint2 lhs, uint2 rhs) { return new uint2 (lhs.x | rhs.x, lhs.y | rhs.y); } + + /// Returns the result of a componentwise bitwise or operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator | (uint2 lhs, uint rhs) { return new uint2 (lhs.x | rhs, lhs.y | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator | (uint lhs, uint2 rhs) { return new uint2 (lhs | rhs.x, lhs | rhs.y); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator ^ (uint2 lhs, uint2 rhs) { return new uint2 (lhs.x ^ rhs.x, lhs.y ^ rhs.y); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator ^ (uint2 lhs, uint rhs) { return new uint2 (lhs.x ^ rhs, lhs.y ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 operator ^ (uint lhs, uint2 rhs) { return new uint2 (lhs ^ rhs.x, lhs ^ rhs.y); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(y, y); } + } + + + + /// Returns the uint element at a specified index. + unsafe public uint this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (uint2* array = &this) { return ((uint*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (uint* array = &x) { array[index] = value; } + } + } + + /// Returns true if the uint2 is equal to a given uint2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint2 rhs) { return x == rhs.x && y == rhs.y; } + + /// Returns true if the uint2 is equal to a given uint2, false otherwise. + public override bool Equals(object o) { return Equals((uint2)o); } + + + /// Returns a hash code for the uint2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint2({0}, {1})", x, y); + } + + /// Returns a string representation of the uint2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint2({0}, {1})", x.ToString(format, formatProvider), y.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public uint x; + public uint y; + public DebuggerProxy(uint2 v) + { + x = v.x; + y = v.y; + } + } + + } + + public static partial class math + { + /// Returns a uint2 vector constructed from two uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(uint x, uint y) { return new uint2(x, y); } + + /// Returns a uint2 vector constructed from a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(uint2 xy) { return new uint2(xy); } + + /// Returns a uint2 vector constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(uint v) { return new uint2(v); } + + /// Returns a uint2 vector constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(bool v) { return new uint2(v); } + + /// Return a uint2 vector constructed from a bool2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(bool2 v) { return new uint2(v); } + + /// Returns a uint2 vector constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(int v) { return new uint2(v); } + + /// Return a uint2 vector constructed from a int2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(int2 v) { return new uint2(v); } + + /// Returns a uint2 vector constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(float v) { return new uint2(v); } + + /// Return a uint2 vector constructed from a float2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(float2 v) { return new uint2(v); } + + /// Returns a uint2 vector constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(double v) { return new uint2(v); } + + /// Return a uint2 vector constructed from a double2 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 uint2(double2 v) { return new uint2(v); } + + /// Returns a uint hash code of a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint2 v) + { + return csum(v * uint2(0x4473BBB1u, 0xCBA11D5Fu)) + 0x685835CFu; + } + + /// + /// Returns a uint2 vector hash code of a uint2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(uint2 v) + { + return (v * uint2(0xC3D32AE1u, 0xB966942Fu)) + 0xFE9856B3u; + } + + /// Returns the result of specified shuffling of the components from two uint2 vectors into a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint shuffle(uint2 a, uint2 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two uint2 vectors into a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 shuffle(uint2 a, uint2 b, ShuffleComponent x, ShuffleComponent y) + { + return uint2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two uint2 vectors into a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 shuffle(uint2 a, uint2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return uint3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two uint2 vectors into a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 shuffle(uint2 a, uint2 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return uint4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static uint select_shuffle_component(uint2 a, uint2 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2.gen.cs.meta new file mode 100644 index 0000000..8896491 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cdcbf6c3d9b20634c90f40978594a52b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x2.gen.cs new file mode 100644 index 0000000..0c0592a --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x2.gen.cs @@ -0,0 +1,494 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct uint2x2 : System.IEquatable, IFormattable + { + public uint2 c0; + public uint2 c1; + + /// uint2x2 identity transform. + public static readonly uint2x2 identity = new uint2x2(1u, 0u, 0u, 1u); + + /// uint2x2 zero value. + public static readonly uint2x2 zero; + + /// Constructs a uint2x2 matrix from two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(uint2 c0, uint2 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a uint2x2 matrix from 4 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(uint m00, uint m01, + uint m10, uint m11) + { + this.c0 = new uint2(m00, m10); + this.c1 = new uint2(m01, m11); + } + + /// Constructs a uint2x2 matrix from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(uint v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a uint2x2 matrix from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(bool v) + { + this.c0 = math.select(new uint2(0u), new uint2(1u), v); + this.c1 = math.select(new uint2(0u), new uint2(1u), v); + } + + /// Constructs a uint2x2 matrix from a bool2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(bool2x2 v) + { + this.c0 = math.select(new uint2(0u), new uint2(1u), v.c0); + this.c1 = math.select(new uint2(0u), new uint2(1u), v.c1); + } + + /// Constructs a uint2x2 matrix from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(int v) + { + this.c0 = (uint2)v; + this.c1 = (uint2)v; + } + + /// Constructs a uint2x2 matrix from a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(int2x2 v) + { + this.c0 = (uint2)v.c0; + this.c1 = (uint2)v.c1; + } + + /// Constructs a uint2x2 matrix from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(float v) + { + this.c0 = (uint2)v; + this.c1 = (uint2)v; + } + + /// Constructs a uint2x2 matrix from a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(float2x2 v) + { + this.c0 = (uint2)v.c0; + this.c1 = (uint2)v.c1; + } + + /// Constructs a uint2x2 matrix from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(double v) + { + this.c0 = (uint2)v; + this.c1 = (uint2)v; + } + + /// Constructs a uint2x2 matrix from a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x2(double2x2 v) + { + this.c0 = (uint2)v.c0; + this.c1 = (uint2)v.c1; + } + + + /// Implicitly converts a single uint value to a uint2x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint2x2(uint v) { return new uint2x2(v); } + + /// Explicitly converts a single bool value to a uint2x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x2(bool v) { return new uint2x2(v); } + + /// Explicitly converts a bool2x2 matrix to a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x2(bool2x2 v) { return new uint2x2(v); } + + /// Explicitly converts a single int value to a uint2x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x2(int v) { return new uint2x2(v); } + + /// Explicitly converts a int2x2 matrix to a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x2(int2x2 v) { return new uint2x2(v); } + + /// Explicitly converts a single float value to a uint2x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x2(float v) { return new uint2x2(v); } + + /// Explicitly converts a float2x2 matrix to a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x2(float2x2 v) { return new uint2x2(v); } + + /// Explicitly converts a single double value to a uint2x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x2(double v) { return new uint2x2(v); } + + /// Explicitly converts a double2x2 matrix to a uint2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x2(double2x2 v) { return new uint2x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator * (uint2x2 lhs, uint2x2 rhs) { return new uint2x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator * (uint2x2 lhs, uint rhs) { return new uint2x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator * (uint lhs, uint2x2 rhs) { return new uint2x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator + (uint2x2 lhs, uint2x2 rhs) { return new uint2x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator + (uint2x2 lhs, uint rhs) { return new uint2x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator + (uint lhs, uint2x2 rhs) { return new uint2x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator - (uint2x2 lhs, uint2x2 rhs) { return new uint2x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator - (uint2x2 lhs, uint rhs) { return new uint2x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator - (uint lhs, uint2x2 rhs) { return new uint2x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator / (uint2x2 lhs, uint2x2 rhs) { return new uint2x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator / (uint2x2 lhs, uint rhs) { return new uint2x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator / (uint lhs, uint2x2 rhs) { return new uint2x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator % (uint2x2 lhs, uint2x2 rhs) { return new uint2x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator % (uint2x2 lhs, uint rhs) { return new uint2x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator % (uint lhs, uint2x2 rhs) { return new uint2x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator ++ (uint2x2 val) { return new uint2x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator -- (uint2x2 val) { return new uint2x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (uint2x2 lhs, uint2x2 rhs) { return new bool2x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (uint2x2 lhs, uint rhs) { return new bool2x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator < (uint lhs, uint2x2 rhs) { return new bool2x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (uint2x2 lhs, uint2x2 rhs) { return new bool2x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (uint2x2 lhs, uint rhs) { return new bool2x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator <= (uint lhs, uint2x2 rhs) { return new bool2x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (uint2x2 lhs, uint2x2 rhs) { return new bool2x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (uint2x2 lhs, uint rhs) { return new bool2x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator > (uint lhs, uint2x2 rhs) { return new bool2x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (uint2x2 lhs, uint2x2 rhs) { return new bool2x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (uint2x2 lhs, uint rhs) { return new bool2x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator >= (uint lhs, uint2x2 rhs) { return new bool2x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator - (uint2x2 val) { return new uint2x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator + (uint2x2 val) { return new uint2x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise left shift operation on a uint2x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator << (uint2x2 x, int n) { return new uint2x2 (x.c0 << n, x.c1 << n); } + + /// Returns the result of a componentwise right shift operation on a uint2x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator >> (uint2x2 x, int n) { return new uint2x2 (x.c0 >> n, x.c1 >> n); } + + /// Returns the result of a componentwise equality operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (uint2x2 lhs, uint2x2 rhs) { return new bool2x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (uint2x2 lhs, uint rhs) { return new bool2x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator == (uint lhs, uint2x2 rhs) { return new bool2x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (uint2x2 lhs, uint2x2 rhs) { return new bool2x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (uint2x2 lhs, uint rhs) { return new bool2x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x2 operator != (uint lhs, uint2x2 rhs) { return new bool2x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + /// Returns the result of a componentwise bitwise not operation on a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator ~ (uint2x2 val) { return new uint2x2 (~val.c0, ~val.c1); } + + + /// Returns the result of a componentwise bitwise and operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator & (uint2x2 lhs, uint2x2 rhs) { return new uint2x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); } + + /// Returns the result of a componentwise bitwise and operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator & (uint2x2 lhs, uint rhs) { return new uint2x2 (lhs.c0 & rhs, lhs.c1 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator & (uint lhs, uint2x2 rhs) { return new uint2x2 (lhs & rhs.c0, lhs & rhs.c1); } + + + /// Returns the result of a componentwise bitwise or operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator | (uint2x2 lhs, uint2x2 rhs) { return new uint2x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); } + + /// Returns the result of a componentwise bitwise or operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator | (uint2x2 lhs, uint rhs) { return new uint2x2 (lhs.c0 | rhs, lhs.c1 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator | (uint lhs, uint2x2 rhs) { return new uint2x2 (lhs | rhs.c0, lhs | rhs.c1); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint2x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator ^ (uint2x2 lhs, uint2x2 rhs) { return new uint2x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint2x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator ^ (uint2x2 lhs, uint rhs) { return new uint2x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 operator ^ (uint lhs, uint2x2 rhs) { return new uint2x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); } + + + + /// Returns the uint2 element at a specified index. + unsafe public ref uint2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (uint2x2* array = &this) { return ref ((uint2*)array)[index]; } + } + } + + /// Returns true if the uint2x2 is equal to a given uint2x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint2x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the uint2x2 is equal to a given uint2x2, false otherwise. + public override bool Equals(object o) { return Equals((uint2x2)o); } + + + /// Returns a hash code for the uint2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint2x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint2x2({0}, {1}, {2}, {3})", c0.x, c1.x, c0.y, c1.y); + } + + /// Returns a string representation of the uint2x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint2x2({0}, {1}, {2}, {3})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a uint2x2 matrix constructed from two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(uint2 c0, uint2 c1) { return new uint2x2(c0, c1); } + + /// Returns a uint2x2 matrix constructed from from 4 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(uint m00, uint m01, + uint m10, uint m11) + { + return new uint2x2(m00, m01, + m10, m11); + } + + /// Returns a uint2x2 matrix constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(uint v) { return new uint2x2(v); } + + /// Returns a uint2x2 matrix constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(bool v) { return new uint2x2(v); } + + /// Return a uint2x2 matrix constructed from a bool2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(bool2x2 v) { return new uint2x2(v); } + + /// Returns a uint2x2 matrix constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(int v) { return new uint2x2(v); } + + /// Return a uint2x2 matrix constructed from a int2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(int2x2 v) { return new uint2x2(v); } + + /// Returns a uint2x2 matrix constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(float v) { return new uint2x2(v); } + + /// Return a uint2x2 matrix constructed from a float2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(float2x2 v) { return new uint2x2(v); } + + /// Returns a uint2x2 matrix constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(double v) { return new uint2x2(v); } + + /// Return a uint2x2 matrix constructed from a double2x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 uint2x2(double2x2 v) { return new uint2x2(v); } + + /// Return the uint2x2 transpose of a uint2x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x2 transpose(uint2x2 v) + { + return uint2x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y); + } + + /// Returns a uint hash code of a uint2x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint2x2 v) + { + return csum(v.c0 * uint2(0xB36DE767u, 0x6FCA387Du) + + v.c1 * uint2(0xAF0F3103u, 0xE4A056C7u)) + 0x841D8225u; + } + + /// + /// Returns a uint2 vector hash code of a uint2x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(uint2x2 v) + { + return (v.c0 * uint2(0xC9393C7Du, 0xD42EAFA3u) + + v.c1 * uint2(0xD9AFD06Du, 0x97A65421u)) + 0x7809205Fu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x2.gen.cs.meta new file mode 100644 index 0000000..2fb0e2c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93a63257a84804542ad359995ba0c1b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x3.gen.cs new file mode 100644 index 0000000..75a42f9 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x3.gen.cs @@ -0,0 +1,506 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct uint2x3 : System.IEquatable, IFormattable + { + public uint2 c0; + public uint2 c1; + public uint2 c2; + + /// uint2x3 zero value. + public static readonly uint2x3 zero; + + /// Constructs a uint2x3 matrix from three uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(uint2 c0, uint2 c1, uint2 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a uint2x3 matrix from 6 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(uint m00, uint m01, uint m02, + uint m10, uint m11, uint m12) + { + this.c0 = new uint2(m00, m10); + this.c1 = new uint2(m01, m11); + this.c2 = new uint2(m02, m12); + } + + /// Constructs a uint2x3 matrix from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a uint2x3 matrix from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(bool v) + { + this.c0 = math.select(new uint2(0u), new uint2(1u), v); + this.c1 = math.select(new uint2(0u), new uint2(1u), v); + this.c2 = math.select(new uint2(0u), new uint2(1u), v); + } + + /// Constructs a uint2x3 matrix from a bool2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(bool2x3 v) + { + this.c0 = math.select(new uint2(0u), new uint2(1u), v.c0); + this.c1 = math.select(new uint2(0u), new uint2(1u), v.c1); + this.c2 = math.select(new uint2(0u), new uint2(1u), v.c2); + } + + /// Constructs a uint2x3 matrix from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(int v) + { + this.c0 = (uint2)v; + this.c1 = (uint2)v; + this.c2 = (uint2)v; + } + + /// Constructs a uint2x3 matrix from a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(int2x3 v) + { + this.c0 = (uint2)v.c0; + this.c1 = (uint2)v.c1; + this.c2 = (uint2)v.c2; + } + + /// Constructs a uint2x3 matrix from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(float v) + { + this.c0 = (uint2)v; + this.c1 = (uint2)v; + this.c2 = (uint2)v; + } + + /// Constructs a uint2x3 matrix from a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(float2x3 v) + { + this.c0 = (uint2)v.c0; + this.c1 = (uint2)v.c1; + this.c2 = (uint2)v.c2; + } + + /// Constructs a uint2x3 matrix from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(double v) + { + this.c0 = (uint2)v; + this.c1 = (uint2)v; + this.c2 = (uint2)v; + } + + /// Constructs a uint2x3 matrix from a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x3(double2x3 v) + { + this.c0 = (uint2)v.c0; + this.c1 = (uint2)v.c1; + this.c2 = (uint2)v.c2; + } + + + /// Implicitly converts a single uint value to a uint2x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint2x3(uint v) { return new uint2x3(v); } + + /// Explicitly converts a single bool value to a uint2x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x3(bool v) { return new uint2x3(v); } + + /// Explicitly converts a bool2x3 matrix to a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x3(bool2x3 v) { return new uint2x3(v); } + + /// Explicitly converts a single int value to a uint2x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x3(int v) { return new uint2x3(v); } + + /// Explicitly converts a int2x3 matrix to a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x3(int2x3 v) { return new uint2x3(v); } + + /// Explicitly converts a single float value to a uint2x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x3(float v) { return new uint2x3(v); } + + /// Explicitly converts a float2x3 matrix to a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x3(float2x3 v) { return new uint2x3(v); } + + /// Explicitly converts a single double value to a uint2x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x3(double v) { return new uint2x3(v); } + + /// Explicitly converts a double2x3 matrix to a uint2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x3(double2x3 v) { return new uint2x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator * (uint2x3 lhs, uint2x3 rhs) { return new uint2x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator * (uint2x3 lhs, uint rhs) { return new uint2x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator * (uint lhs, uint2x3 rhs) { return new uint2x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator + (uint2x3 lhs, uint2x3 rhs) { return new uint2x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator + (uint2x3 lhs, uint rhs) { return new uint2x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator + (uint lhs, uint2x3 rhs) { return new uint2x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator - (uint2x3 lhs, uint2x3 rhs) { return new uint2x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator - (uint2x3 lhs, uint rhs) { return new uint2x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator - (uint lhs, uint2x3 rhs) { return new uint2x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator / (uint2x3 lhs, uint2x3 rhs) { return new uint2x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator / (uint2x3 lhs, uint rhs) { return new uint2x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator / (uint lhs, uint2x3 rhs) { return new uint2x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator % (uint2x3 lhs, uint2x3 rhs) { return new uint2x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator % (uint2x3 lhs, uint rhs) { return new uint2x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator % (uint lhs, uint2x3 rhs) { return new uint2x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator ++ (uint2x3 val) { return new uint2x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator -- (uint2x3 val) { return new uint2x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (uint2x3 lhs, uint2x3 rhs) { return new bool2x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (uint2x3 lhs, uint rhs) { return new bool2x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator < (uint lhs, uint2x3 rhs) { return new bool2x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (uint2x3 lhs, uint2x3 rhs) { return new bool2x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (uint2x3 lhs, uint rhs) { return new bool2x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator <= (uint lhs, uint2x3 rhs) { return new bool2x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (uint2x3 lhs, uint2x3 rhs) { return new bool2x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (uint2x3 lhs, uint rhs) { return new bool2x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator > (uint lhs, uint2x3 rhs) { return new bool2x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (uint2x3 lhs, uint2x3 rhs) { return new bool2x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (uint2x3 lhs, uint rhs) { return new bool2x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator >= (uint lhs, uint2x3 rhs) { return new bool2x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator - (uint2x3 val) { return new uint2x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator + (uint2x3 val) { return new uint2x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise left shift operation on a uint2x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator << (uint2x3 x, int n) { return new uint2x3 (x.c0 << n, x.c1 << n, x.c2 << n); } + + /// Returns the result of a componentwise right shift operation on a uint2x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator >> (uint2x3 x, int n) { return new uint2x3 (x.c0 >> n, x.c1 >> n, x.c2 >> n); } + + /// Returns the result of a componentwise equality operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (uint2x3 lhs, uint2x3 rhs) { return new bool2x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (uint2x3 lhs, uint rhs) { return new bool2x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator == (uint lhs, uint2x3 rhs) { return new bool2x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (uint2x3 lhs, uint2x3 rhs) { return new bool2x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (uint2x3 lhs, uint rhs) { return new bool2x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x3 operator != (uint lhs, uint2x3 rhs) { return new bool2x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + /// Returns the result of a componentwise bitwise not operation on a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator ~ (uint2x3 val) { return new uint2x3 (~val.c0, ~val.c1, ~val.c2); } + + + /// Returns the result of a componentwise bitwise and operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator & (uint2x3 lhs, uint2x3 rhs) { return new uint2x3 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2); } + + /// Returns the result of a componentwise bitwise and operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator & (uint2x3 lhs, uint rhs) { return new uint2x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator & (uint lhs, uint2x3 rhs) { return new uint2x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); } + + + /// Returns the result of a componentwise bitwise or operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator | (uint2x3 lhs, uint2x3 rhs) { return new uint2x3 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2); } + + /// Returns the result of a componentwise bitwise or operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator | (uint2x3 lhs, uint rhs) { return new uint2x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator | (uint lhs, uint2x3 rhs) { return new uint2x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint2x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator ^ (uint2x3 lhs, uint2x3 rhs) { return new uint2x3 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint2x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator ^ (uint2x3 lhs, uint rhs) { return new uint2x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 operator ^ (uint lhs, uint2x3 rhs) { return new uint2x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); } + + + + /// Returns the uint2 element at a specified index. + unsafe public ref uint2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (uint2x3* array = &this) { return ref ((uint2*)array)[index]; } + } + } + + /// Returns true if the uint2x3 is equal to a given uint2x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint2x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the uint2x3 is equal to a given uint2x3, false otherwise. + public override bool Equals(object o) { return Equals((uint2x3)o); } + + + /// Returns a hash code for the uint2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint2x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint2x3({0}, {1}, {2}, {3}, {4}, {5})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y); + } + + /// Returns a string representation of the uint2x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint2x3({0}, {1}, {2}, {3}, {4}, {5})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a uint2x3 matrix constructed from three uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(uint2 c0, uint2 c1, uint2 c2) { return new uint2x3(c0, c1, c2); } + + /// Returns a uint2x3 matrix constructed from from 6 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(uint m00, uint m01, uint m02, + uint m10, uint m11, uint m12) + { + return new uint2x3(m00, m01, m02, + m10, m11, m12); + } + + /// Returns a uint2x3 matrix constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(uint v) { return new uint2x3(v); } + + /// Returns a uint2x3 matrix constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(bool v) { return new uint2x3(v); } + + /// Return a uint2x3 matrix constructed from a bool2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(bool2x3 v) { return new uint2x3(v); } + + /// Returns a uint2x3 matrix constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(int v) { return new uint2x3(v); } + + /// Return a uint2x3 matrix constructed from a int2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(int2x3 v) { return new uint2x3(v); } + + /// Returns a uint2x3 matrix constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(float v) { return new uint2x3(v); } + + /// Return a uint2x3 matrix constructed from a float2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(float2x3 v) { return new uint2x3(v); } + + /// Returns a uint2x3 matrix constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(double v) { return new uint2x3(v); } + + /// Return a uint2x3 matrix constructed from a double2x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 uint2x3(double2x3 v) { return new uint2x3(v); } + + /// Return the uint3x2 transpose of a uint2x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 transpose(uint2x3 v) + { + return uint3x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y); + } + + /// Returns a uint hash code of a uint2x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint2x3 v) + { + return csum(v.c0 * uint2(0xEF63C699u, 0x9001903Fu) + + v.c1 * uint2(0xA895B9CDu, 0x9D23B201u) + + v.c2 * uint2(0x4B01D3E1u, 0x7461CA0Du)) + 0x79725379u; + } + + /// + /// Returns a uint2 vector hash code of a uint2x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(uint2x3 v) + { + return (v.c0 * uint2(0xD6258E5Bu, 0xEE390C97u) + + v.c1 * uint2(0x9C8A2F05u, 0x4DDC6509u) + + v.c2 * uint2(0x7CF083CBu, 0x5C4D6CEDu)) + 0xF9137117u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x3.gen.cs.meta new file mode 100644 index 0000000..33e817b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b7bf1463aaa942d98a29d05b88ebd4e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x4.gen.cs new file mode 100644 index 0000000..34e12e6 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x4.gen.cs @@ -0,0 +1,521 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct uint2x4 : System.IEquatable, IFormattable + { + public uint2 c0; + public uint2 c1; + public uint2 c2; + public uint2 c3; + + /// uint2x4 zero value. + public static readonly uint2x4 zero; + + /// Constructs a uint2x4 matrix from four uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(uint2 c0, uint2 c1, uint2 c2, uint2 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a uint2x4 matrix from 8 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(uint m00, uint m01, uint m02, uint m03, + uint m10, uint m11, uint m12, uint m13) + { + this.c0 = new uint2(m00, m10); + this.c1 = new uint2(m01, m11); + this.c2 = new uint2(m02, m12); + this.c3 = new uint2(m03, m13); + } + + /// Constructs a uint2x4 matrix from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a uint2x4 matrix from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(bool v) + { + this.c0 = math.select(new uint2(0u), new uint2(1u), v); + this.c1 = math.select(new uint2(0u), new uint2(1u), v); + this.c2 = math.select(new uint2(0u), new uint2(1u), v); + this.c3 = math.select(new uint2(0u), new uint2(1u), v); + } + + /// Constructs a uint2x4 matrix from a bool2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(bool2x4 v) + { + this.c0 = math.select(new uint2(0u), new uint2(1u), v.c0); + this.c1 = math.select(new uint2(0u), new uint2(1u), v.c1); + this.c2 = math.select(new uint2(0u), new uint2(1u), v.c2); + this.c3 = math.select(new uint2(0u), new uint2(1u), v.c3); + } + + /// Constructs a uint2x4 matrix from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(int v) + { + this.c0 = (uint2)v; + this.c1 = (uint2)v; + this.c2 = (uint2)v; + this.c3 = (uint2)v; + } + + /// Constructs a uint2x4 matrix from a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(int2x4 v) + { + this.c0 = (uint2)v.c0; + this.c1 = (uint2)v.c1; + this.c2 = (uint2)v.c2; + this.c3 = (uint2)v.c3; + } + + /// Constructs a uint2x4 matrix from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(float v) + { + this.c0 = (uint2)v; + this.c1 = (uint2)v; + this.c2 = (uint2)v; + this.c3 = (uint2)v; + } + + /// Constructs a uint2x4 matrix from a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(float2x4 v) + { + this.c0 = (uint2)v.c0; + this.c1 = (uint2)v.c1; + this.c2 = (uint2)v.c2; + this.c3 = (uint2)v.c3; + } + + /// Constructs a uint2x4 matrix from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(double v) + { + this.c0 = (uint2)v; + this.c1 = (uint2)v; + this.c2 = (uint2)v; + this.c3 = (uint2)v; + } + + /// Constructs a uint2x4 matrix from a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint2x4(double2x4 v) + { + this.c0 = (uint2)v.c0; + this.c1 = (uint2)v.c1; + this.c2 = (uint2)v.c2; + this.c3 = (uint2)v.c3; + } + + + /// Implicitly converts a single uint value to a uint2x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint2x4(uint v) { return new uint2x4(v); } + + /// Explicitly converts a single bool value to a uint2x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x4(bool v) { return new uint2x4(v); } + + /// Explicitly converts a bool2x4 matrix to a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x4(bool2x4 v) { return new uint2x4(v); } + + /// Explicitly converts a single int value to a uint2x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x4(int v) { return new uint2x4(v); } + + /// Explicitly converts a int2x4 matrix to a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x4(int2x4 v) { return new uint2x4(v); } + + /// Explicitly converts a single float value to a uint2x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x4(float v) { return new uint2x4(v); } + + /// Explicitly converts a float2x4 matrix to a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x4(float2x4 v) { return new uint2x4(v); } + + /// Explicitly converts a single double value to a uint2x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x4(double v) { return new uint2x4(v); } + + /// Explicitly converts a double2x4 matrix to a uint2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint2x4(double2x4 v) { return new uint2x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator * (uint2x4 lhs, uint2x4 rhs) { return new uint2x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator * (uint2x4 lhs, uint rhs) { return new uint2x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator * (uint lhs, uint2x4 rhs) { return new uint2x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator + (uint2x4 lhs, uint2x4 rhs) { return new uint2x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator + (uint2x4 lhs, uint rhs) { return new uint2x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator + (uint lhs, uint2x4 rhs) { return new uint2x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator - (uint2x4 lhs, uint2x4 rhs) { return new uint2x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator - (uint2x4 lhs, uint rhs) { return new uint2x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator - (uint lhs, uint2x4 rhs) { return new uint2x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator / (uint2x4 lhs, uint2x4 rhs) { return new uint2x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator / (uint2x4 lhs, uint rhs) { return new uint2x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator / (uint lhs, uint2x4 rhs) { return new uint2x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator % (uint2x4 lhs, uint2x4 rhs) { return new uint2x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator % (uint2x4 lhs, uint rhs) { return new uint2x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator % (uint lhs, uint2x4 rhs) { return new uint2x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator ++ (uint2x4 val) { return new uint2x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator -- (uint2x4 val) { return new uint2x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (uint2x4 lhs, uint2x4 rhs) { return new bool2x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (uint2x4 lhs, uint rhs) { return new bool2x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator < (uint lhs, uint2x4 rhs) { return new bool2x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (uint2x4 lhs, uint2x4 rhs) { return new bool2x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (uint2x4 lhs, uint rhs) { return new bool2x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator <= (uint lhs, uint2x4 rhs) { return new bool2x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (uint2x4 lhs, uint2x4 rhs) { return new bool2x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (uint2x4 lhs, uint rhs) { return new bool2x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator > (uint lhs, uint2x4 rhs) { return new bool2x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (uint2x4 lhs, uint2x4 rhs) { return new bool2x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (uint2x4 lhs, uint rhs) { return new bool2x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator >= (uint lhs, uint2x4 rhs) { return new bool2x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator - (uint2x4 val) { return new uint2x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator + (uint2x4 val) { return new uint2x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise left shift operation on a uint2x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator << (uint2x4 x, int n) { return new uint2x4 (x.c0 << n, x.c1 << n, x.c2 << n, x.c3 << n); } + + /// Returns the result of a componentwise right shift operation on a uint2x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator >> (uint2x4 x, int n) { return new uint2x4 (x.c0 >> n, x.c1 >> n, x.c2 >> n, x.c3 >> n); } + + /// Returns the result of a componentwise equality operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (uint2x4 lhs, uint2x4 rhs) { return new bool2x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (uint2x4 lhs, uint rhs) { return new bool2x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator == (uint lhs, uint2x4 rhs) { return new bool2x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (uint2x4 lhs, uint2x4 rhs) { return new bool2x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (uint2x4 lhs, uint rhs) { return new bool2x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool2x4 operator != (uint lhs, uint2x4 rhs) { return new bool2x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + /// Returns the result of a componentwise bitwise not operation on a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator ~ (uint2x4 val) { return new uint2x4 (~val.c0, ~val.c1, ~val.c2, ~val.c3); } + + + /// Returns the result of a componentwise bitwise and operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator & (uint2x4 lhs, uint2x4 rhs) { return new uint2x4 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2, lhs.c3 & rhs.c3); } + + /// Returns the result of a componentwise bitwise and operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator & (uint2x4 lhs, uint rhs) { return new uint2x4 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs, lhs.c3 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator & (uint lhs, uint2x4 rhs) { return new uint2x4 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2, lhs & rhs.c3); } + + + /// Returns the result of a componentwise bitwise or operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator | (uint2x4 lhs, uint2x4 rhs) { return new uint2x4 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2, lhs.c3 | rhs.c3); } + + /// Returns the result of a componentwise bitwise or operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator | (uint2x4 lhs, uint rhs) { return new uint2x4 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs, lhs.c3 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator | (uint lhs, uint2x4 rhs) { return new uint2x4 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2, lhs | rhs.c3); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint2x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator ^ (uint2x4 lhs, uint2x4 rhs) { return new uint2x4 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2, lhs.c3 ^ rhs.c3); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint2x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator ^ (uint2x4 lhs, uint rhs) { return new uint2x4 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs, lhs.c3 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 operator ^ (uint lhs, uint2x4 rhs) { return new uint2x4 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2, lhs ^ rhs.c3); } + + + + /// Returns the uint2 element at a specified index. + unsafe public ref uint2 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (uint2x4* array = &this) { return ref ((uint2*)array)[index]; } + } + } + + /// Returns true if the uint2x4 is equal to a given uint2x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint2x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the uint2x4 is equal to a given uint2x4, false otherwise. + public override bool Equals(object o) { return Equals((uint2x4)o); } + + + /// Returns a hash code for the uint2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint2x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint2x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y); + } + + /// Returns a string representation of the uint2x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint2x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a uint2x4 matrix constructed from four uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(uint2 c0, uint2 c1, uint2 c2, uint2 c3) { return new uint2x4(c0, c1, c2, c3); } + + /// Returns a uint2x4 matrix constructed from from 8 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(uint m00, uint m01, uint m02, uint m03, + uint m10, uint m11, uint m12, uint m13) + { + return new uint2x4(m00, m01, m02, m03, + m10, m11, m12, m13); + } + + /// Returns a uint2x4 matrix constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(uint v) { return new uint2x4(v); } + + /// Returns a uint2x4 matrix constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(bool v) { return new uint2x4(v); } + + /// Return a uint2x4 matrix constructed from a bool2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(bool2x4 v) { return new uint2x4(v); } + + /// Returns a uint2x4 matrix constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(int v) { return new uint2x4(v); } + + /// Return a uint2x4 matrix constructed from a int2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(int2x4 v) { return new uint2x4(v); } + + /// Returns a uint2x4 matrix constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(float v) { return new uint2x4(v); } + + /// Return a uint2x4 matrix constructed from a float2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(float2x4 v) { return new uint2x4(v); } + + /// Returns a uint2x4 matrix constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(double v) { return new uint2x4(v); } + + /// Return a uint2x4 matrix constructed from a double2x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 uint2x4(double2x4 v) { return new uint2x4(v); } + + /// Return the uint4x2 transpose of a uint2x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 transpose(uint2x4 v) + { + return uint4x2( + v.c0.x, v.c0.y, + v.c1.x, v.c1.y, + v.c2.x, v.c2.y, + v.c3.x, v.c3.y); + } + + /// Returns a uint hash code of a uint2x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint2x4 v) + { + return csum(v.c0 * uint2(0x9DF50593u, 0xF18EEB85u) + + v.c1 * uint2(0x9E19BFC3u, 0x8196B06Fu) + + v.c2 * uint2(0xD24EFA19u, 0x7D8048BBu) + + v.c3 * uint2(0x713BD06Fu, 0x753AD6ADu)) + 0xD19764C7u; + } + + /// + /// Returns a uint2 vector hash code of a uint2x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 hashwide(uint2x4 v) + { + return (v.c0 * uint2(0xB5D0BF63u, 0xF9102C5Fu) + + v.c1 * uint2(0x9881FB9Fu, 0x56A1530Du) + + v.c2 * uint2(0x804B722Du, 0x738E50E5u) + + v.c3 * uint2(0x4FC93C25u, 0xCD0445A5u)) + 0xD2B90D9Bu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x4.gen.cs.meta new file mode 100644 index 0000000..058ceff --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6acdbd744899541e28c4f19a9398b2b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3.gen.cs new file mode 100644 index 0000000..665d681 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3.gen.cs @@ -0,0 +1,1556 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(uint3.DebuggerProxy))] + [System.Serializable] + public partial struct uint3 : System.IEquatable, IFormattable + { + public uint x; + public uint y; + public uint z; + + /// uint3 zero value. + public static readonly uint3 zero; + + /// Constructs a uint3 vector from three uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(uint x, uint y, uint z) + { + this.x = x; + this.y = y; + this.z = z; + } + + /// Constructs a uint3 vector from a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(uint x, uint2 yz) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + } + + /// Constructs a uint3 vector from a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(uint2 xy, uint z) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + } + + /// Constructs a uint3 vector from a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(uint3 xyz) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + } + + /// Constructs a uint3 vector from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(uint v) + { + this.x = v; + this.y = v; + this.z = v; + } + + /// Constructs a uint3 vector from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(bool v) + { + this.x = v ? 1u : 0u; + this.y = v ? 1u : 0u; + this.z = v ? 1u : 0u; + } + + /// Constructs a uint3 vector from a bool3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(bool3 v) + { + this.x = v.x ? 1u : 0u; + this.y = v.y ? 1u : 0u; + this.z = v.z ? 1u : 0u; + } + + /// Constructs a uint3 vector from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(int v) + { + this.x = (uint)v; + this.y = (uint)v; + this.z = (uint)v; + } + + /// Constructs a uint3 vector from a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(int3 v) + { + this.x = (uint)v.x; + this.y = (uint)v.y; + this.z = (uint)v.z; + } + + /// Constructs a uint3 vector from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(float v) + { + this.x = (uint)v; + this.y = (uint)v; + this.z = (uint)v; + } + + /// Constructs a uint3 vector from a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(float3 v) + { + this.x = (uint)v.x; + this.y = (uint)v.y; + this.z = (uint)v.z; + } + + /// Constructs a uint3 vector from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(double v) + { + this.x = (uint)v; + this.y = (uint)v; + this.z = (uint)v; + } + + /// Constructs a uint3 vector from a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3(double3 v) + { + this.x = (uint)v.x; + this.y = (uint)v.y; + this.z = (uint)v.z; + } + + + /// Implicitly converts a single uint value to a uint3 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint3(uint v) { return new uint3(v); } + + /// Explicitly converts a single bool value to a uint3 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3(bool v) { return new uint3(v); } + + /// Explicitly converts a bool3 vector to a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3(bool3 v) { return new uint3(v); } + + /// Explicitly converts a single int value to a uint3 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3(int v) { return new uint3(v); } + + /// Explicitly converts a int3 vector to a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3(int3 v) { return new uint3(v); } + + /// Explicitly converts a single float value to a uint3 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3(float v) { return new uint3(v); } + + /// Explicitly converts a float3 vector to a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3(float3 v) { return new uint3(v); } + + /// Explicitly converts a single double value to a uint3 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3(double v) { return new uint3(v); } + + /// Explicitly converts a double3 vector to a uint3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3(double3 v) { return new uint3(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator * (uint3 lhs, uint3 rhs) { return new uint3 (lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z); } + + /// Returns the result of a componentwise multiplication operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator * (uint3 lhs, uint rhs) { return new uint3 (lhs.x * rhs, lhs.y * rhs, lhs.z * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator * (uint lhs, uint3 rhs) { return new uint3 (lhs * rhs.x, lhs * rhs.y, lhs * rhs.z); } + + + /// Returns the result of a componentwise addition operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator + (uint3 lhs, uint3 rhs) { return new uint3 (lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z); } + + /// Returns the result of a componentwise addition operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator + (uint3 lhs, uint rhs) { return new uint3 (lhs.x + rhs, lhs.y + rhs, lhs.z + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator + (uint lhs, uint3 rhs) { return new uint3 (lhs + rhs.x, lhs + rhs.y, lhs + rhs.z); } + + + /// Returns the result of a componentwise subtraction operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator - (uint3 lhs, uint3 rhs) { return new uint3 (lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z); } + + /// Returns the result of a componentwise subtraction operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator - (uint3 lhs, uint rhs) { return new uint3 (lhs.x - rhs, lhs.y - rhs, lhs.z - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator - (uint lhs, uint3 rhs) { return new uint3 (lhs - rhs.x, lhs - rhs.y, lhs - rhs.z); } + + + /// Returns the result of a componentwise division operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator / (uint3 lhs, uint3 rhs) { return new uint3 (lhs.x / rhs.x, lhs.y / rhs.y, lhs.z / rhs.z); } + + /// Returns the result of a componentwise division operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator / (uint3 lhs, uint rhs) { return new uint3 (lhs.x / rhs, lhs.y / rhs, lhs.z / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator / (uint lhs, uint3 rhs) { return new uint3 (lhs / rhs.x, lhs / rhs.y, lhs / rhs.z); } + + + /// Returns the result of a componentwise modulus operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator % (uint3 lhs, uint3 rhs) { return new uint3 (lhs.x % rhs.x, lhs.y % rhs.y, lhs.z % rhs.z); } + + /// Returns the result of a componentwise modulus operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator % (uint3 lhs, uint rhs) { return new uint3 (lhs.x % rhs, lhs.y % rhs, lhs.z % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator % (uint lhs, uint3 rhs) { return new uint3 (lhs % rhs.x, lhs % rhs.y, lhs % rhs.z); } + + + /// Returns the result of a componentwise increment operation on a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator ++ (uint3 val) { return new uint3 (++val.x, ++val.y, ++val.z); } + + + /// Returns the result of a componentwise decrement operation on a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator -- (uint3 val) { return new uint3 (--val.x, --val.y, --val.z); } + + + /// Returns the result of a componentwise less than operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (uint3 lhs, uint3 rhs) { return new bool3 (lhs.x < rhs.x, lhs.y < rhs.y, lhs.z < rhs.z); } + + /// Returns the result of a componentwise less than operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (uint3 lhs, uint rhs) { return new bool3 (lhs.x < rhs, lhs.y < rhs, lhs.z < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator < (uint lhs, uint3 rhs) { return new bool3 (lhs < rhs.x, lhs < rhs.y, lhs < rhs.z); } + + + /// Returns the result of a componentwise less or equal operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (uint3 lhs, uint3 rhs) { return new bool3 (lhs.x <= rhs.x, lhs.y <= rhs.y, lhs.z <= rhs.z); } + + /// Returns the result of a componentwise less or equal operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (uint3 lhs, uint rhs) { return new bool3 (lhs.x <= rhs, lhs.y <= rhs, lhs.z <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator <= (uint lhs, uint3 rhs) { return new bool3 (lhs <= rhs.x, lhs <= rhs.y, lhs <= rhs.z); } + + + /// Returns the result of a componentwise greater than operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (uint3 lhs, uint3 rhs) { return new bool3 (lhs.x > rhs.x, lhs.y > rhs.y, lhs.z > rhs.z); } + + /// Returns the result of a componentwise greater than operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (uint3 lhs, uint rhs) { return new bool3 (lhs.x > rhs, lhs.y > rhs, lhs.z > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator > (uint lhs, uint3 rhs) { return new bool3 (lhs > rhs.x, lhs > rhs.y, lhs > rhs.z); } + + + /// Returns the result of a componentwise greater or equal operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (uint3 lhs, uint3 rhs) { return new bool3 (lhs.x >= rhs.x, lhs.y >= rhs.y, lhs.z >= rhs.z); } + + /// Returns the result of a componentwise greater or equal operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (uint3 lhs, uint rhs) { return new bool3 (lhs.x >= rhs, lhs.y >= rhs, lhs.z >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator >= (uint lhs, uint3 rhs) { return new bool3 (lhs >= rhs.x, lhs >= rhs.y, lhs >= rhs.z); } + + + /// Returns the result of a componentwise unary minus operation on a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator - (uint3 val) { return new uint3 ((uint)-val.x, (uint)-val.y, (uint)-val.z); } + + + /// Returns the result of a componentwise unary plus operation on a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator + (uint3 val) { return new uint3 (+val.x, +val.y, +val.z); } + + + /// Returns the result of a componentwise left shift operation on a uint3 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator << (uint3 x, int n) { return new uint3 (x.x << n, x.y << n, x.z << n); } + + /// Returns the result of a componentwise right shift operation on a uint3 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator >> (uint3 x, int n) { return new uint3 (x.x >> n, x.y >> n, x.z >> n); } + + /// Returns the result of a componentwise equality operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (uint3 lhs, uint3 rhs) { return new bool3 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z); } + + /// Returns the result of a componentwise equality operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (uint3 lhs, uint rhs) { return new bool3 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator == (uint lhs, uint3 rhs) { return new bool3 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z); } + + + /// Returns the result of a componentwise not equal operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (uint3 lhs, uint3 rhs) { return new bool3 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z); } + + /// Returns the result of a componentwise not equal operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (uint3 lhs, uint rhs) { return new bool3 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3 operator != (uint lhs, uint3 rhs) { return new bool3 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z); } + + + /// Returns the result of a componentwise bitwise not operation on a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator ~ (uint3 val) { return new uint3 (~val.x, ~val.y, ~val.z); } + + + /// Returns the result of a componentwise bitwise and operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator & (uint3 lhs, uint3 rhs) { return new uint3 (lhs.x & rhs.x, lhs.y & rhs.y, lhs.z & rhs.z); } + + /// Returns the result of a componentwise bitwise and operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator & (uint3 lhs, uint rhs) { return new uint3 (lhs.x & rhs, lhs.y & rhs, lhs.z & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator & (uint lhs, uint3 rhs) { return new uint3 (lhs & rhs.x, lhs & rhs.y, lhs & rhs.z); } + + + /// Returns the result of a componentwise bitwise or operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator | (uint3 lhs, uint3 rhs) { return new uint3 (lhs.x | rhs.x, lhs.y | rhs.y, lhs.z | rhs.z); } + + /// Returns the result of a componentwise bitwise or operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator | (uint3 lhs, uint rhs) { return new uint3 (lhs.x | rhs, lhs.y | rhs, lhs.z | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator | (uint lhs, uint3 rhs) { return new uint3 (lhs | rhs.x, lhs | rhs.y, lhs | rhs.z); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator ^ (uint3 lhs, uint3 rhs) { return new uint3 (lhs.x ^ rhs.x, lhs.y ^ rhs.y, lhs.z ^ rhs.z); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator ^ (uint3 lhs, uint rhs) { return new uint3 (lhs.x ^ rhs, lhs.y ^ rhs, lhs.z ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 operator ^ (uint lhs, uint3 rhs) { return new uint3 (lhs ^ rhs.x, lhs ^ rhs.y, lhs ^ rhs.z); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(z, z); } + } + + + + /// Returns the uint element at a specified index. + unsafe public uint this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (uint3* array = &this) { return ((uint*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (uint* array = &x) { array[index] = value; } + } + } + + /// Returns true if the uint3 is equal to a given uint3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint3 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z; } + + /// Returns true if the uint3 is equal to a given uint3, false otherwise. + public override bool Equals(object o) { return Equals((uint3)o); } + + + /// Returns a hash code for the uint3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint3({0}, {1}, {2})", x, y, z); + } + + /// Returns a string representation of the uint3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint3({0}, {1}, {2})", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public uint x; + public uint y; + public uint z; + public DebuggerProxy(uint3 v) + { + x = v.x; + y = v.y; + z = v.z; + } + } + + } + + public static partial class math + { + /// Returns a uint3 vector constructed from three uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(uint x, uint y, uint z) { return new uint3(x, y, z); } + + /// Returns a uint3 vector constructed from a uint value and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(uint x, uint2 yz) { return new uint3(x, yz); } + + /// Returns a uint3 vector constructed from a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(uint2 xy, uint z) { return new uint3(xy, z); } + + /// Returns a uint3 vector constructed from a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(uint3 xyz) { return new uint3(xyz); } + + /// Returns a uint3 vector constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(uint v) { return new uint3(v); } + + /// Returns a uint3 vector constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(bool v) { return new uint3(v); } + + /// Return a uint3 vector constructed from a bool3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(bool3 v) { return new uint3(v); } + + /// Returns a uint3 vector constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(int v) { return new uint3(v); } + + /// Return a uint3 vector constructed from a int3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(int3 v) { return new uint3(v); } + + /// Returns a uint3 vector constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(float v) { return new uint3(v); } + + /// Return a uint3 vector constructed from a float3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(float3 v) { return new uint3(v); } + + /// Returns a uint3 vector constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(double v) { return new uint3(v); } + + /// Return a uint3 vector constructed from a double3 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 uint3(double3 v) { return new uint3(v); } + + /// Returns a uint hash code of a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint3 v) + { + return csum(v * uint3(0xCD266C89u, 0xF1852A33u, 0x77E35E77u)) + 0x863E3729u; + } + + /// + /// Returns a uint3 vector hash code of a uint3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(uint3 v) + { + return (v * uint3(0xE191B035u, 0x68586FAFu, 0xD4DFF6D3u)) + 0xCB634F4Du; + } + + /// Returns the result of specified shuffling of the components from two uint3 vectors into a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint shuffle(uint3 a, uint3 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two uint3 vectors into a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 shuffle(uint3 a, uint3 b, ShuffleComponent x, ShuffleComponent y) + { + return uint2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two uint3 vectors into a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 shuffle(uint3 a, uint3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return uint3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two uint3 vectors into a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 shuffle(uint3 a, uint3 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return uint4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static uint select_shuffle_component(uint3 a, uint3 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3.gen.cs.meta new file mode 100644 index 0000000..b79320b --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f9d441c51e38d9488cbdd2f013adcd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x2.gen.cs new file mode 100644 index 0000000..fa231da --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x2.gen.cs @@ -0,0 +1,494 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct uint3x2 : System.IEquatable, IFormattable + { + public uint3 c0; + public uint3 c1; + + /// uint3x2 zero value. + public static readonly uint3x2 zero; + + /// Constructs a uint3x2 matrix from two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(uint3 c0, uint3 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a uint3x2 matrix from 6 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(uint m00, uint m01, + uint m10, uint m11, + uint m20, uint m21) + { + this.c0 = new uint3(m00, m10, m20); + this.c1 = new uint3(m01, m11, m21); + } + + /// Constructs a uint3x2 matrix from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(uint v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a uint3x2 matrix from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(bool v) + { + this.c0 = math.select(new uint3(0u), new uint3(1u), v); + this.c1 = math.select(new uint3(0u), new uint3(1u), v); + } + + /// Constructs a uint3x2 matrix from a bool3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(bool3x2 v) + { + this.c0 = math.select(new uint3(0u), new uint3(1u), v.c0); + this.c1 = math.select(new uint3(0u), new uint3(1u), v.c1); + } + + /// Constructs a uint3x2 matrix from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(int v) + { + this.c0 = (uint3)v; + this.c1 = (uint3)v; + } + + /// Constructs a uint3x2 matrix from a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(int3x2 v) + { + this.c0 = (uint3)v.c0; + this.c1 = (uint3)v.c1; + } + + /// Constructs a uint3x2 matrix from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(float v) + { + this.c0 = (uint3)v; + this.c1 = (uint3)v; + } + + /// Constructs a uint3x2 matrix from a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(float3x2 v) + { + this.c0 = (uint3)v.c0; + this.c1 = (uint3)v.c1; + } + + /// Constructs a uint3x2 matrix from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(double v) + { + this.c0 = (uint3)v; + this.c1 = (uint3)v; + } + + /// Constructs a uint3x2 matrix from a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x2(double3x2 v) + { + this.c0 = (uint3)v.c0; + this.c1 = (uint3)v.c1; + } + + + /// Implicitly converts a single uint value to a uint3x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint3x2(uint v) { return new uint3x2(v); } + + /// Explicitly converts a single bool value to a uint3x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x2(bool v) { return new uint3x2(v); } + + /// Explicitly converts a bool3x2 matrix to a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x2(bool3x2 v) { return new uint3x2(v); } + + /// Explicitly converts a single int value to a uint3x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x2(int v) { return new uint3x2(v); } + + /// Explicitly converts a int3x2 matrix to a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x2(int3x2 v) { return new uint3x2(v); } + + /// Explicitly converts a single float value to a uint3x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x2(float v) { return new uint3x2(v); } + + /// Explicitly converts a float3x2 matrix to a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x2(float3x2 v) { return new uint3x2(v); } + + /// Explicitly converts a single double value to a uint3x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x2(double v) { return new uint3x2(v); } + + /// Explicitly converts a double3x2 matrix to a uint3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x2(double3x2 v) { return new uint3x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator * (uint3x2 lhs, uint3x2 rhs) { return new uint3x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator * (uint3x2 lhs, uint rhs) { return new uint3x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator * (uint lhs, uint3x2 rhs) { return new uint3x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator + (uint3x2 lhs, uint3x2 rhs) { return new uint3x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator + (uint3x2 lhs, uint rhs) { return new uint3x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator + (uint lhs, uint3x2 rhs) { return new uint3x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator - (uint3x2 lhs, uint3x2 rhs) { return new uint3x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator - (uint3x2 lhs, uint rhs) { return new uint3x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator - (uint lhs, uint3x2 rhs) { return new uint3x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator / (uint3x2 lhs, uint3x2 rhs) { return new uint3x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator / (uint3x2 lhs, uint rhs) { return new uint3x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator / (uint lhs, uint3x2 rhs) { return new uint3x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator % (uint3x2 lhs, uint3x2 rhs) { return new uint3x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator % (uint3x2 lhs, uint rhs) { return new uint3x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator % (uint lhs, uint3x2 rhs) { return new uint3x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator ++ (uint3x2 val) { return new uint3x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator -- (uint3x2 val) { return new uint3x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (uint3x2 lhs, uint3x2 rhs) { return new bool3x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (uint3x2 lhs, uint rhs) { return new bool3x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator < (uint lhs, uint3x2 rhs) { return new bool3x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (uint3x2 lhs, uint3x2 rhs) { return new bool3x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (uint3x2 lhs, uint rhs) { return new bool3x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator <= (uint lhs, uint3x2 rhs) { return new bool3x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (uint3x2 lhs, uint3x2 rhs) { return new bool3x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (uint3x2 lhs, uint rhs) { return new bool3x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator > (uint lhs, uint3x2 rhs) { return new bool3x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (uint3x2 lhs, uint3x2 rhs) { return new bool3x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (uint3x2 lhs, uint rhs) { return new bool3x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator >= (uint lhs, uint3x2 rhs) { return new bool3x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator - (uint3x2 val) { return new uint3x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator + (uint3x2 val) { return new uint3x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise left shift operation on a uint3x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator << (uint3x2 x, int n) { return new uint3x2 (x.c0 << n, x.c1 << n); } + + /// Returns the result of a componentwise right shift operation on a uint3x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator >> (uint3x2 x, int n) { return new uint3x2 (x.c0 >> n, x.c1 >> n); } + + /// Returns the result of a componentwise equality operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (uint3x2 lhs, uint3x2 rhs) { return new bool3x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (uint3x2 lhs, uint rhs) { return new bool3x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator == (uint lhs, uint3x2 rhs) { return new bool3x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (uint3x2 lhs, uint3x2 rhs) { return new bool3x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (uint3x2 lhs, uint rhs) { return new bool3x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x2 operator != (uint lhs, uint3x2 rhs) { return new bool3x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + /// Returns the result of a componentwise bitwise not operation on a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator ~ (uint3x2 val) { return new uint3x2 (~val.c0, ~val.c1); } + + + /// Returns the result of a componentwise bitwise and operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator & (uint3x2 lhs, uint3x2 rhs) { return new uint3x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); } + + /// Returns the result of a componentwise bitwise and operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator & (uint3x2 lhs, uint rhs) { return new uint3x2 (lhs.c0 & rhs, lhs.c1 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator & (uint lhs, uint3x2 rhs) { return new uint3x2 (lhs & rhs.c0, lhs & rhs.c1); } + + + /// Returns the result of a componentwise bitwise or operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator | (uint3x2 lhs, uint3x2 rhs) { return new uint3x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); } + + /// Returns the result of a componentwise bitwise or operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator | (uint3x2 lhs, uint rhs) { return new uint3x2 (lhs.c0 | rhs, lhs.c1 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator | (uint lhs, uint3x2 rhs) { return new uint3x2 (lhs | rhs.c0, lhs | rhs.c1); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint3x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator ^ (uint3x2 lhs, uint3x2 rhs) { return new uint3x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint3x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator ^ (uint3x2 lhs, uint rhs) { return new uint3x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 operator ^ (uint lhs, uint3x2 rhs) { return new uint3x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); } + + + + /// Returns the uint3 element at a specified index. + unsafe public ref uint3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (uint3x2* array = &this) { return ref ((uint3*)array)[index]; } + } + } + + /// Returns true if the uint3x2 is equal to a given uint3x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint3x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the uint3x2 is equal to a given uint3x2, false otherwise. + public override bool Equals(object o) { return Equals((uint3x2)o); } + + + /// Returns a hash code for the uint3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint3x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint3x2({0}, {1}, {2}, {3}, {4}, {5})", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z); + } + + /// Returns a string representation of the uint3x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint3x2({0}, {1}, {2}, {3}, {4}, {5})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a uint3x2 matrix constructed from two uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(uint3 c0, uint3 c1) { return new uint3x2(c0, c1); } + + /// Returns a uint3x2 matrix constructed from from 6 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(uint m00, uint m01, + uint m10, uint m11, + uint m20, uint m21) + { + return new uint3x2(m00, m01, + m10, m11, + m20, m21); + } + + /// Returns a uint3x2 matrix constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(uint v) { return new uint3x2(v); } + + /// Returns a uint3x2 matrix constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(bool v) { return new uint3x2(v); } + + /// Return a uint3x2 matrix constructed from a bool3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(bool3x2 v) { return new uint3x2(v); } + + /// Returns a uint3x2 matrix constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(int v) { return new uint3x2(v); } + + /// Return a uint3x2 matrix constructed from a int3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(int3x2 v) { return new uint3x2(v); } + + /// Returns a uint3x2 matrix constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(float v) { return new uint3x2(v); } + + /// Return a uint3x2 matrix constructed from a float3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(float3x2 v) { return new uint3x2(v); } + + /// Returns a uint3x2 matrix constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(double v) { return new uint3x2(v); } + + /// Return a uint3x2 matrix constructed from a double3x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x2 uint3x2(double3x2 v) { return new uint3x2(v); } + + /// Return the uint2x3 transpose of a uint3x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x3 transpose(uint3x2 v) + { + return uint2x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z); + } + + /// Returns a uint hash code of a uint3x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint3x2 v) + { + return csum(v.c0 * uint3(0x515D90F5u, 0xEC9F68F3u, 0xF9EA92D5u) + + v.c1 * uint3(0xC2FAFCB9u, 0x616E9CA1u, 0xC5C5394Bu)) + 0xCAE78587u; + } + + /// + /// Returns a uint3 vector hash code of a uint3x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(uint3x2 v) + { + return (v.c0 * uint3(0x7A1541C9u, 0xF83BD927u, 0x6A243BCBu) + + v.c1 * uint3(0x509B84C9u, 0x91D13847u, 0x52F7230Fu)) + 0xCF286E83u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x2.gen.cs.meta new file mode 100644 index 0000000..5edd82c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b284ac5d8ece4e8cbadac0249c18c4c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x3.gen.cs new file mode 100644 index 0000000..f774aab --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x3.gen.cs @@ -0,0 +1,512 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct uint3x3 : System.IEquatable, IFormattable + { + public uint3 c0; + public uint3 c1; + public uint3 c2; + + /// uint3x3 identity transform. + public static readonly uint3x3 identity = new uint3x3(1u, 0u, 0u, 0u, 1u, 0u, 0u, 0u, 1u); + + /// uint3x3 zero value. + public static readonly uint3x3 zero; + + /// Constructs a uint3x3 matrix from three uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(uint3 c0, uint3 c1, uint3 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a uint3x3 matrix from 9 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(uint m00, uint m01, uint m02, + uint m10, uint m11, uint m12, + uint m20, uint m21, uint m22) + { + this.c0 = new uint3(m00, m10, m20); + this.c1 = new uint3(m01, m11, m21); + this.c2 = new uint3(m02, m12, m22); + } + + /// Constructs a uint3x3 matrix from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a uint3x3 matrix from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(bool v) + { + this.c0 = math.select(new uint3(0u), new uint3(1u), v); + this.c1 = math.select(new uint3(0u), new uint3(1u), v); + this.c2 = math.select(new uint3(0u), new uint3(1u), v); + } + + /// Constructs a uint3x3 matrix from a bool3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(bool3x3 v) + { + this.c0 = math.select(new uint3(0u), new uint3(1u), v.c0); + this.c1 = math.select(new uint3(0u), new uint3(1u), v.c1); + this.c2 = math.select(new uint3(0u), new uint3(1u), v.c2); + } + + /// Constructs a uint3x3 matrix from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(int v) + { + this.c0 = (uint3)v; + this.c1 = (uint3)v; + this.c2 = (uint3)v; + } + + /// Constructs a uint3x3 matrix from a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(int3x3 v) + { + this.c0 = (uint3)v.c0; + this.c1 = (uint3)v.c1; + this.c2 = (uint3)v.c2; + } + + /// Constructs a uint3x3 matrix from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(float v) + { + this.c0 = (uint3)v; + this.c1 = (uint3)v; + this.c2 = (uint3)v; + } + + /// Constructs a uint3x3 matrix from a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(float3x3 v) + { + this.c0 = (uint3)v.c0; + this.c1 = (uint3)v.c1; + this.c2 = (uint3)v.c2; + } + + /// Constructs a uint3x3 matrix from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(double v) + { + this.c0 = (uint3)v; + this.c1 = (uint3)v; + this.c2 = (uint3)v; + } + + /// Constructs a uint3x3 matrix from a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x3(double3x3 v) + { + this.c0 = (uint3)v.c0; + this.c1 = (uint3)v.c1; + this.c2 = (uint3)v.c2; + } + + + /// Implicitly converts a single uint value to a uint3x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint3x3(uint v) { return new uint3x3(v); } + + /// Explicitly converts a single bool value to a uint3x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x3(bool v) { return new uint3x3(v); } + + /// Explicitly converts a bool3x3 matrix to a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x3(bool3x3 v) { return new uint3x3(v); } + + /// Explicitly converts a single int value to a uint3x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x3(int v) { return new uint3x3(v); } + + /// Explicitly converts a int3x3 matrix to a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x3(int3x3 v) { return new uint3x3(v); } + + /// Explicitly converts a single float value to a uint3x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x3(float v) { return new uint3x3(v); } + + /// Explicitly converts a float3x3 matrix to a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x3(float3x3 v) { return new uint3x3(v); } + + /// Explicitly converts a single double value to a uint3x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x3(double v) { return new uint3x3(v); } + + /// Explicitly converts a double3x3 matrix to a uint3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x3(double3x3 v) { return new uint3x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator * (uint3x3 lhs, uint3x3 rhs) { return new uint3x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator * (uint3x3 lhs, uint rhs) { return new uint3x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator * (uint lhs, uint3x3 rhs) { return new uint3x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator + (uint3x3 lhs, uint3x3 rhs) { return new uint3x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator + (uint3x3 lhs, uint rhs) { return new uint3x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator + (uint lhs, uint3x3 rhs) { return new uint3x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator - (uint3x3 lhs, uint3x3 rhs) { return new uint3x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator - (uint3x3 lhs, uint rhs) { return new uint3x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator - (uint lhs, uint3x3 rhs) { return new uint3x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator / (uint3x3 lhs, uint3x3 rhs) { return new uint3x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator / (uint3x3 lhs, uint rhs) { return new uint3x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator / (uint lhs, uint3x3 rhs) { return new uint3x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator % (uint3x3 lhs, uint3x3 rhs) { return new uint3x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator % (uint3x3 lhs, uint rhs) { return new uint3x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator % (uint lhs, uint3x3 rhs) { return new uint3x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator ++ (uint3x3 val) { return new uint3x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator -- (uint3x3 val) { return new uint3x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (uint3x3 lhs, uint3x3 rhs) { return new bool3x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (uint3x3 lhs, uint rhs) { return new bool3x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator < (uint lhs, uint3x3 rhs) { return new bool3x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (uint3x3 lhs, uint3x3 rhs) { return new bool3x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (uint3x3 lhs, uint rhs) { return new bool3x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator <= (uint lhs, uint3x3 rhs) { return new bool3x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (uint3x3 lhs, uint3x3 rhs) { return new bool3x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (uint3x3 lhs, uint rhs) { return new bool3x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator > (uint lhs, uint3x3 rhs) { return new bool3x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (uint3x3 lhs, uint3x3 rhs) { return new bool3x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (uint3x3 lhs, uint rhs) { return new bool3x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator >= (uint lhs, uint3x3 rhs) { return new bool3x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator - (uint3x3 val) { return new uint3x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator + (uint3x3 val) { return new uint3x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise left shift operation on a uint3x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator << (uint3x3 x, int n) { return new uint3x3 (x.c0 << n, x.c1 << n, x.c2 << n); } + + /// Returns the result of a componentwise right shift operation on a uint3x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator >> (uint3x3 x, int n) { return new uint3x3 (x.c0 >> n, x.c1 >> n, x.c2 >> n); } + + /// Returns the result of a componentwise equality operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (uint3x3 lhs, uint3x3 rhs) { return new bool3x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (uint3x3 lhs, uint rhs) { return new bool3x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator == (uint lhs, uint3x3 rhs) { return new bool3x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (uint3x3 lhs, uint3x3 rhs) { return new bool3x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (uint3x3 lhs, uint rhs) { return new bool3x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x3 operator != (uint lhs, uint3x3 rhs) { return new bool3x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + /// Returns the result of a componentwise bitwise not operation on a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator ~ (uint3x3 val) { return new uint3x3 (~val.c0, ~val.c1, ~val.c2); } + + + /// Returns the result of a componentwise bitwise and operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator & (uint3x3 lhs, uint3x3 rhs) { return new uint3x3 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2); } + + /// Returns the result of a componentwise bitwise and operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator & (uint3x3 lhs, uint rhs) { return new uint3x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator & (uint lhs, uint3x3 rhs) { return new uint3x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); } + + + /// Returns the result of a componentwise bitwise or operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator | (uint3x3 lhs, uint3x3 rhs) { return new uint3x3 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2); } + + /// Returns the result of a componentwise bitwise or operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator | (uint3x3 lhs, uint rhs) { return new uint3x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator | (uint lhs, uint3x3 rhs) { return new uint3x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint3x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator ^ (uint3x3 lhs, uint3x3 rhs) { return new uint3x3 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint3x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator ^ (uint3x3 lhs, uint rhs) { return new uint3x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 operator ^ (uint lhs, uint3x3 rhs) { return new uint3x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); } + + + + /// Returns the uint3 element at a specified index. + unsafe public ref uint3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (uint3x3* array = &this) { return ref ((uint3*)array)[index]; } + } + } + + /// Returns true if the uint3x3 is equal to a given uint3x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint3x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the uint3x3 is equal to a given uint3x3, false otherwise. + public override bool Equals(object o) { return Equals((uint3x3)o); } + + + /// Returns a hash code for the uint3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint3x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint3x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z); + } + + /// Returns a string representation of the uint3x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint3x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a uint3x3 matrix constructed from three uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(uint3 c0, uint3 c1, uint3 c2) { return new uint3x3(c0, c1, c2); } + + /// Returns a uint3x3 matrix constructed from from 9 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(uint m00, uint m01, uint m02, + uint m10, uint m11, uint m12, + uint m20, uint m21, uint m22) + { + return new uint3x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22); + } + + /// Returns a uint3x3 matrix constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(uint v) { return new uint3x3(v); } + + /// Returns a uint3x3 matrix constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(bool v) { return new uint3x3(v); } + + /// Return a uint3x3 matrix constructed from a bool3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(bool3x3 v) { return new uint3x3(v); } + + /// Returns a uint3x3 matrix constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(int v) { return new uint3x3(v); } + + /// Return a uint3x3 matrix constructed from a int3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(int3x3 v) { return new uint3x3(v); } + + /// Returns a uint3x3 matrix constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(float v) { return new uint3x3(v); } + + /// Return a uint3x3 matrix constructed from a float3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(float3x3 v) { return new uint3x3(v); } + + /// Returns a uint3x3 matrix constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(double v) { return new uint3x3(v); } + + /// Return a uint3x3 matrix constructed from a double3x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 uint3x3(double3x3 v) { return new uint3x3(v); } + + /// Return the uint3x3 transpose of a uint3x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x3 transpose(uint3x3 v) + { + return uint3x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z); + } + + /// Returns a uint hash code of a uint3x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint3x3 v) + { + return csum(v.c0 * uint3(0xAC60D0C3u, 0x9263662Fu, 0xE69626FFu) + + v.c1 * uint3(0xBD010EEBu, 0x9CEDE1D1u, 0x43BE0B51u) + + v.c2 * uint3(0xAF836EE1u, 0xB130C137u, 0x54834775u)) + 0x7C022221u; + } + + /// + /// Returns a uint3 vector hash code of a uint3x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(uint3x3 v) + { + return (v.c0 * uint3(0xA2D00EDFu, 0xA8977779u, 0x9F1C739Bu) + + v.c1 * uint3(0x4B1BD187u, 0x9DF50593u, 0xF18EEB85u) + + v.c2 * uint3(0x9E19BFC3u, 0x8196B06Fu, 0xD24EFA19u)) + 0x7D8048BBu; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x3.gen.cs.meta new file mode 100644 index 0000000..a6e8de2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c1262616ca00349c28426545d8525266 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x4.gen.cs new file mode 100644 index 0000000..2220796 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x4.gen.cs @@ -0,0 +1,524 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct uint3x4 : System.IEquatable, IFormattable + { + public uint3 c0; + public uint3 c1; + public uint3 c2; + public uint3 c3; + + /// uint3x4 zero value. + public static readonly uint3x4 zero; + + /// Constructs a uint3x4 matrix from four uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(uint3 c0, uint3 c1, uint3 c2, uint3 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a uint3x4 matrix from 12 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(uint m00, uint m01, uint m02, uint m03, + uint m10, uint m11, uint m12, uint m13, + uint m20, uint m21, uint m22, uint m23) + { + this.c0 = new uint3(m00, m10, m20); + this.c1 = new uint3(m01, m11, m21); + this.c2 = new uint3(m02, m12, m22); + this.c3 = new uint3(m03, m13, m23); + } + + /// Constructs a uint3x4 matrix from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a uint3x4 matrix from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(bool v) + { + this.c0 = math.select(new uint3(0u), new uint3(1u), v); + this.c1 = math.select(new uint3(0u), new uint3(1u), v); + this.c2 = math.select(new uint3(0u), new uint3(1u), v); + this.c3 = math.select(new uint3(0u), new uint3(1u), v); + } + + /// Constructs a uint3x4 matrix from a bool3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(bool3x4 v) + { + this.c0 = math.select(new uint3(0u), new uint3(1u), v.c0); + this.c1 = math.select(new uint3(0u), new uint3(1u), v.c1); + this.c2 = math.select(new uint3(0u), new uint3(1u), v.c2); + this.c3 = math.select(new uint3(0u), new uint3(1u), v.c3); + } + + /// Constructs a uint3x4 matrix from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(int v) + { + this.c0 = (uint3)v; + this.c1 = (uint3)v; + this.c2 = (uint3)v; + this.c3 = (uint3)v; + } + + /// Constructs a uint3x4 matrix from a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(int3x4 v) + { + this.c0 = (uint3)v.c0; + this.c1 = (uint3)v.c1; + this.c2 = (uint3)v.c2; + this.c3 = (uint3)v.c3; + } + + /// Constructs a uint3x4 matrix from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(float v) + { + this.c0 = (uint3)v; + this.c1 = (uint3)v; + this.c2 = (uint3)v; + this.c3 = (uint3)v; + } + + /// Constructs a uint3x4 matrix from a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(float3x4 v) + { + this.c0 = (uint3)v.c0; + this.c1 = (uint3)v.c1; + this.c2 = (uint3)v.c2; + this.c3 = (uint3)v.c3; + } + + /// Constructs a uint3x4 matrix from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(double v) + { + this.c0 = (uint3)v; + this.c1 = (uint3)v; + this.c2 = (uint3)v; + this.c3 = (uint3)v; + } + + /// Constructs a uint3x4 matrix from a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint3x4(double3x4 v) + { + this.c0 = (uint3)v.c0; + this.c1 = (uint3)v.c1; + this.c2 = (uint3)v.c2; + this.c3 = (uint3)v.c3; + } + + + /// Implicitly converts a single uint value to a uint3x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint3x4(uint v) { return new uint3x4(v); } + + /// Explicitly converts a single bool value to a uint3x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x4(bool v) { return new uint3x4(v); } + + /// Explicitly converts a bool3x4 matrix to a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x4(bool3x4 v) { return new uint3x4(v); } + + /// Explicitly converts a single int value to a uint3x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x4(int v) { return new uint3x4(v); } + + /// Explicitly converts a int3x4 matrix to a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x4(int3x4 v) { return new uint3x4(v); } + + /// Explicitly converts a single float value to a uint3x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x4(float v) { return new uint3x4(v); } + + /// Explicitly converts a float3x4 matrix to a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x4(float3x4 v) { return new uint3x4(v); } + + /// Explicitly converts a single double value to a uint3x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x4(double v) { return new uint3x4(v); } + + /// Explicitly converts a double3x4 matrix to a uint3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint3x4(double3x4 v) { return new uint3x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator * (uint3x4 lhs, uint3x4 rhs) { return new uint3x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator * (uint3x4 lhs, uint rhs) { return new uint3x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator * (uint lhs, uint3x4 rhs) { return new uint3x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator + (uint3x4 lhs, uint3x4 rhs) { return new uint3x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator + (uint3x4 lhs, uint rhs) { return new uint3x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator + (uint lhs, uint3x4 rhs) { return new uint3x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator - (uint3x4 lhs, uint3x4 rhs) { return new uint3x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator - (uint3x4 lhs, uint rhs) { return new uint3x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator - (uint lhs, uint3x4 rhs) { return new uint3x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator / (uint3x4 lhs, uint3x4 rhs) { return new uint3x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator / (uint3x4 lhs, uint rhs) { return new uint3x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator / (uint lhs, uint3x4 rhs) { return new uint3x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator % (uint3x4 lhs, uint3x4 rhs) { return new uint3x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator % (uint3x4 lhs, uint rhs) { return new uint3x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator % (uint lhs, uint3x4 rhs) { return new uint3x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator ++ (uint3x4 val) { return new uint3x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator -- (uint3x4 val) { return new uint3x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (uint3x4 lhs, uint3x4 rhs) { return new bool3x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (uint3x4 lhs, uint rhs) { return new bool3x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator < (uint lhs, uint3x4 rhs) { return new bool3x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (uint3x4 lhs, uint3x4 rhs) { return new bool3x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (uint3x4 lhs, uint rhs) { return new bool3x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator <= (uint lhs, uint3x4 rhs) { return new bool3x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (uint3x4 lhs, uint3x4 rhs) { return new bool3x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (uint3x4 lhs, uint rhs) { return new bool3x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator > (uint lhs, uint3x4 rhs) { return new bool3x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (uint3x4 lhs, uint3x4 rhs) { return new bool3x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (uint3x4 lhs, uint rhs) { return new bool3x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator >= (uint lhs, uint3x4 rhs) { return new bool3x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator - (uint3x4 val) { return new uint3x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator + (uint3x4 val) { return new uint3x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise left shift operation on a uint3x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator << (uint3x4 x, int n) { return new uint3x4 (x.c0 << n, x.c1 << n, x.c2 << n, x.c3 << n); } + + /// Returns the result of a componentwise right shift operation on a uint3x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator >> (uint3x4 x, int n) { return new uint3x4 (x.c0 >> n, x.c1 >> n, x.c2 >> n, x.c3 >> n); } + + /// Returns the result of a componentwise equality operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (uint3x4 lhs, uint3x4 rhs) { return new bool3x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (uint3x4 lhs, uint rhs) { return new bool3x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator == (uint lhs, uint3x4 rhs) { return new bool3x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (uint3x4 lhs, uint3x4 rhs) { return new bool3x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (uint3x4 lhs, uint rhs) { return new bool3x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool3x4 operator != (uint lhs, uint3x4 rhs) { return new bool3x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + /// Returns the result of a componentwise bitwise not operation on a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator ~ (uint3x4 val) { return new uint3x4 (~val.c0, ~val.c1, ~val.c2, ~val.c3); } + + + /// Returns the result of a componentwise bitwise and operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator & (uint3x4 lhs, uint3x4 rhs) { return new uint3x4 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2, lhs.c3 & rhs.c3); } + + /// Returns the result of a componentwise bitwise and operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator & (uint3x4 lhs, uint rhs) { return new uint3x4 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs, lhs.c3 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator & (uint lhs, uint3x4 rhs) { return new uint3x4 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2, lhs & rhs.c3); } + + + /// Returns the result of a componentwise bitwise or operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator | (uint3x4 lhs, uint3x4 rhs) { return new uint3x4 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2, lhs.c3 | rhs.c3); } + + /// Returns the result of a componentwise bitwise or operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator | (uint3x4 lhs, uint rhs) { return new uint3x4 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs, lhs.c3 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator | (uint lhs, uint3x4 rhs) { return new uint3x4 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2, lhs | rhs.c3); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint3x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator ^ (uint3x4 lhs, uint3x4 rhs) { return new uint3x4 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2, lhs.c3 ^ rhs.c3); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint3x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator ^ (uint3x4 lhs, uint rhs) { return new uint3x4 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs, lhs.c3 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 operator ^ (uint lhs, uint3x4 rhs) { return new uint3x4 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2, lhs ^ rhs.c3); } + + + + /// Returns the uint3 element at a specified index. + unsafe public ref uint3 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (uint3x4* array = &this) { return ref ((uint3*)array)[index]; } + } + } + + /// Returns true if the uint3x4 is equal to a given uint3x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint3x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the uint3x4 is equal to a given uint3x4, false otherwise. + public override bool Equals(object o) { return Equals((uint3x4)o); } + + + /// Returns a hash code for the uint3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint3x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint3x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z); + } + + /// Returns a string representation of the uint3x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint3x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c3.z.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a uint3x4 matrix constructed from four uint3 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(uint3 c0, uint3 c1, uint3 c2, uint3 c3) { return new uint3x4(c0, c1, c2, c3); } + + /// Returns a uint3x4 matrix constructed from from 12 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(uint m00, uint m01, uint m02, uint m03, + uint m10, uint m11, uint m12, uint m13, + uint m20, uint m21, uint m22, uint m23) + { + return new uint3x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23); + } + + /// Returns a uint3x4 matrix constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(uint v) { return new uint3x4(v); } + + /// Returns a uint3x4 matrix constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(bool v) { return new uint3x4(v); } + + /// Return a uint3x4 matrix constructed from a bool3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(bool3x4 v) { return new uint3x4(v); } + + /// Returns a uint3x4 matrix constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(int v) { return new uint3x4(v); } + + /// Return a uint3x4 matrix constructed from a int3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(int3x4 v) { return new uint3x4(v); } + + /// Returns a uint3x4 matrix constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(float v) { return new uint3x4(v); } + + /// Return a uint3x4 matrix constructed from a float3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(float3x4 v) { return new uint3x4(v); } + + /// Returns a uint3x4 matrix constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(double v) { return new uint3x4(v); } + + /// Return a uint3x4 matrix constructed from a double3x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 uint3x4(double3x4 v) { return new uint3x4(v); } + + /// Return the uint4x3 transpose of a uint3x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 transpose(uint3x4 v) + { + return uint4x3( + v.c0.x, v.c0.y, v.c0.z, + v.c1.x, v.c1.y, v.c1.z, + v.c2.x, v.c2.y, v.c2.z, + v.c3.x, v.c3.y, v.c3.z); + } + + /// Returns a uint hash code of a uint3x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint3x4 v) + { + return csum(v.c0 * uint3(0xD1224537u, 0xE99ED6F3u, 0x48125549u) + + v.c1 * uint3(0xEEE2123Bu, 0xE3AD9FE5u, 0xCE1CF8BFu) + + v.c2 * uint3(0x7BE39F3Bu, 0xFAB9913Fu, 0xB4501269u) + + v.c3 * uint3(0xE04B89FDu, 0xDB3DE101u, 0x7B6D1B4Bu)) + 0x58399E77u; + } + + /// + /// Returns a uint3 vector hash code of a uint3x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 hashwide(uint3x4 v) + { + return (v.c0 * uint3(0x5EAC29C9u, 0xFC6014F9u, 0x6BF6693Fu) + + v.c1 * uint3(0x9D1B1D9Bu, 0xF842F5C1u, 0xA47EC335u) + + v.c2 * uint3(0xA477DF57u, 0xC4B1493Fu, 0xBA0966D3u) + + v.c3 * uint3(0xAFBEE253u, 0x5B419C01u, 0x515D90F5u)) + 0xEC9F68F3u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x4.gen.cs.meta new file mode 100644 index 0000000..e331fbd --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b26cb334c782240eb950a56e23e0378c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4.gen.cs new file mode 100644 index 0000000..100200c --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4.gen.cs @@ -0,0 +1,3480 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; +using System.Diagnostics; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [DebuggerTypeProxy(typeof(uint4.DebuggerProxy))] + [System.Serializable] + public partial struct uint4 : System.IEquatable, IFormattable + { + public uint x; + public uint y; + public uint z; + public uint w; + + /// uint4 zero value. + public static readonly uint4 zero; + + /// Constructs a uint4 vector from four uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(uint x, uint y, uint z, uint w) + { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + /// Constructs a uint4 vector from two uint values and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(uint x, uint y, uint2 zw) + { + this.x = x; + this.y = y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a uint4 vector from a uint value, a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(uint x, uint2 yz, uint w) + { + this.x = x; + this.y = yz.x; + this.z = yz.y; + this.w = w; + } + + /// Constructs a uint4 vector from a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(uint x, uint3 yzw) + { + this.x = x; + this.y = yzw.x; + this.z = yzw.y; + this.w = yzw.z; + } + + /// Constructs a uint4 vector from a uint2 vector and two uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(uint2 xy, uint z, uint w) + { + this.x = xy.x; + this.y = xy.y; + this.z = z; + this.w = w; + } + + /// Constructs a uint4 vector from two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(uint2 xy, uint2 zw) + { + this.x = xy.x; + this.y = xy.y; + this.z = zw.x; + this.w = zw.y; + } + + /// Constructs a uint4 vector from a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(uint3 xyz, uint w) + { + this.x = xyz.x; + this.y = xyz.y; + this.z = xyz.z; + this.w = w; + } + + /// Constructs a uint4 vector from a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(uint4 xyzw) + { + this.x = xyzw.x; + this.y = xyzw.y; + this.z = xyzw.z; + this.w = xyzw.w; + } + + /// Constructs a uint4 vector from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(uint v) + { + this.x = v; + this.y = v; + this.z = v; + this.w = v; + } + + /// Constructs a uint4 vector from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(bool v) + { + this.x = v ? 1u : 0u; + this.y = v ? 1u : 0u; + this.z = v ? 1u : 0u; + this.w = v ? 1u : 0u; + } + + /// Constructs a uint4 vector from a bool4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(bool4 v) + { + this.x = v.x ? 1u : 0u; + this.y = v.y ? 1u : 0u; + this.z = v.z ? 1u : 0u; + this.w = v.w ? 1u : 0u; + } + + /// Constructs a uint4 vector from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(int v) + { + this.x = (uint)v; + this.y = (uint)v; + this.z = (uint)v; + this.w = (uint)v; + } + + /// Constructs a uint4 vector from a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(int4 v) + { + this.x = (uint)v.x; + this.y = (uint)v.y; + this.z = (uint)v.z; + this.w = (uint)v.w; + } + + /// Constructs a uint4 vector from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(float v) + { + this.x = (uint)v; + this.y = (uint)v; + this.z = (uint)v; + this.w = (uint)v; + } + + /// Constructs a uint4 vector from a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(float4 v) + { + this.x = (uint)v.x; + this.y = (uint)v.y; + this.z = (uint)v.z; + this.w = (uint)v.w; + } + + /// Constructs a uint4 vector from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(double v) + { + this.x = (uint)v; + this.y = (uint)v; + this.z = (uint)v; + this.w = (uint)v; + } + + /// Constructs a uint4 vector from a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4(double4 v) + { + this.x = (uint)v.x; + this.y = (uint)v.y; + this.z = (uint)v.z; + this.w = (uint)v.w; + } + + + /// Implicitly converts a single uint value to a uint4 vector by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint4(uint v) { return new uint4(v); } + + /// Explicitly converts a single bool value to a uint4 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4(bool v) { return new uint4(v); } + + /// Explicitly converts a bool4 vector to a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4(bool4 v) { return new uint4(v); } + + /// Explicitly converts a single int value to a uint4 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4(int v) { return new uint4(v); } + + /// Explicitly converts a int4 vector to a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4(int4 v) { return new uint4(v); } + + /// Explicitly converts a single float value to a uint4 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4(float v) { return new uint4(v); } + + /// Explicitly converts a float4 vector to a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4(float4 v) { return new uint4(v); } + + /// Explicitly converts a single double value to a uint4 vector by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4(double v) { return new uint4(v); } + + /// Explicitly converts a double4 vector to a uint4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4(double4 v) { return new uint4(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator * (uint4 lhs, uint4 rhs) { return new uint4 (lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z, lhs.w * rhs.w); } + + /// Returns the result of a componentwise multiplication operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator * (uint4 lhs, uint rhs) { return new uint4 (lhs.x * rhs, lhs.y * rhs, lhs.z * rhs, lhs.w * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator * (uint lhs, uint4 rhs) { return new uint4 (lhs * rhs.x, lhs * rhs.y, lhs * rhs.z, lhs * rhs.w); } + + + /// Returns the result of a componentwise addition operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator + (uint4 lhs, uint4 rhs) { return new uint4 (lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z, lhs.w + rhs.w); } + + /// Returns the result of a componentwise addition operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator + (uint4 lhs, uint rhs) { return new uint4 (lhs.x + rhs, lhs.y + rhs, lhs.z + rhs, lhs.w + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator + (uint lhs, uint4 rhs) { return new uint4 (lhs + rhs.x, lhs + rhs.y, lhs + rhs.z, lhs + rhs.w); } + + + /// Returns the result of a componentwise subtraction operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator - (uint4 lhs, uint4 rhs) { return new uint4 (lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z, lhs.w - rhs.w); } + + /// Returns the result of a componentwise subtraction operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator - (uint4 lhs, uint rhs) { return new uint4 (lhs.x - rhs, lhs.y - rhs, lhs.z - rhs, lhs.w - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator - (uint lhs, uint4 rhs) { return new uint4 (lhs - rhs.x, lhs - rhs.y, lhs - rhs.z, lhs - rhs.w); } + + + /// Returns the result of a componentwise division operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator / (uint4 lhs, uint4 rhs) { return new uint4 (lhs.x / rhs.x, lhs.y / rhs.y, lhs.z / rhs.z, lhs.w / rhs.w); } + + /// Returns the result of a componentwise division operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator / (uint4 lhs, uint rhs) { return new uint4 (lhs.x / rhs, lhs.y / rhs, lhs.z / rhs, lhs.w / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator / (uint lhs, uint4 rhs) { return new uint4 (lhs / rhs.x, lhs / rhs.y, lhs / rhs.z, lhs / rhs.w); } + + + /// Returns the result of a componentwise modulus operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator % (uint4 lhs, uint4 rhs) { return new uint4 (lhs.x % rhs.x, lhs.y % rhs.y, lhs.z % rhs.z, lhs.w % rhs.w); } + + /// Returns the result of a componentwise modulus operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator % (uint4 lhs, uint rhs) { return new uint4 (lhs.x % rhs, lhs.y % rhs, lhs.z % rhs, lhs.w % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator % (uint lhs, uint4 rhs) { return new uint4 (lhs % rhs.x, lhs % rhs.y, lhs % rhs.z, lhs % rhs.w); } + + + /// Returns the result of a componentwise increment operation on a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator ++ (uint4 val) { return new uint4 (++val.x, ++val.y, ++val.z, ++val.w); } + + + /// Returns the result of a componentwise decrement operation on a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator -- (uint4 val) { return new uint4 (--val.x, --val.y, --val.z, --val.w); } + + + /// Returns the result of a componentwise less than operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (uint4 lhs, uint4 rhs) { return new bool4 (lhs.x < rhs.x, lhs.y < rhs.y, lhs.z < rhs.z, lhs.w < rhs.w); } + + /// Returns the result of a componentwise less than operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (uint4 lhs, uint rhs) { return new bool4 (lhs.x < rhs, lhs.y < rhs, lhs.z < rhs, lhs.w < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator < (uint lhs, uint4 rhs) { return new bool4 (lhs < rhs.x, lhs < rhs.y, lhs < rhs.z, lhs < rhs.w); } + + + /// Returns the result of a componentwise less or equal operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (uint4 lhs, uint4 rhs) { return new bool4 (lhs.x <= rhs.x, lhs.y <= rhs.y, lhs.z <= rhs.z, lhs.w <= rhs.w); } + + /// Returns the result of a componentwise less or equal operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (uint4 lhs, uint rhs) { return new bool4 (lhs.x <= rhs, lhs.y <= rhs, lhs.z <= rhs, lhs.w <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator <= (uint lhs, uint4 rhs) { return new bool4 (lhs <= rhs.x, lhs <= rhs.y, lhs <= rhs.z, lhs <= rhs.w); } + + + /// Returns the result of a componentwise greater than operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (uint4 lhs, uint4 rhs) { return new bool4 (lhs.x > rhs.x, lhs.y > rhs.y, lhs.z > rhs.z, lhs.w > rhs.w); } + + /// Returns the result of a componentwise greater than operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (uint4 lhs, uint rhs) { return new bool4 (lhs.x > rhs, lhs.y > rhs, lhs.z > rhs, lhs.w > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator > (uint lhs, uint4 rhs) { return new bool4 (lhs > rhs.x, lhs > rhs.y, lhs > rhs.z, lhs > rhs.w); } + + + /// Returns the result of a componentwise greater or equal operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (uint4 lhs, uint4 rhs) { return new bool4 (lhs.x >= rhs.x, lhs.y >= rhs.y, lhs.z >= rhs.z, lhs.w >= rhs.w); } + + /// Returns the result of a componentwise greater or equal operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (uint4 lhs, uint rhs) { return new bool4 (lhs.x >= rhs, lhs.y >= rhs, lhs.z >= rhs, lhs.w >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator >= (uint lhs, uint4 rhs) { return new bool4 (lhs >= rhs.x, lhs >= rhs.y, lhs >= rhs.z, lhs >= rhs.w); } + + + /// Returns the result of a componentwise unary minus operation on a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator - (uint4 val) { return new uint4 ((uint)-val.x, (uint)-val.y, (uint)-val.z, (uint)-val.w); } + + + /// Returns the result of a componentwise unary plus operation on a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator + (uint4 val) { return new uint4 (+val.x, +val.y, +val.z, +val.w); } + + + /// Returns the result of a componentwise left shift operation on a uint4 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator << (uint4 x, int n) { return new uint4 (x.x << n, x.y << n, x.z << n, x.w << n); } + + /// Returns the result of a componentwise right shift operation on a uint4 vector by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator >> (uint4 x, int n) { return new uint4 (x.x >> n, x.y >> n, x.z >> n, x.w >> n); } + + /// Returns the result of a componentwise equality operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (uint4 lhs, uint4 rhs) { return new bool4 (lhs.x == rhs.x, lhs.y == rhs.y, lhs.z == rhs.z, lhs.w == rhs.w); } + + /// Returns the result of a componentwise equality operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (uint4 lhs, uint rhs) { return new bool4 (lhs.x == rhs, lhs.y == rhs, lhs.z == rhs, lhs.w == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator == (uint lhs, uint4 rhs) { return new bool4 (lhs == rhs.x, lhs == rhs.y, lhs == rhs.z, lhs == rhs.w); } + + + /// Returns the result of a componentwise not equal operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (uint4 lhs, uint4 rhs) { return new bool4 (lhs.x != rhs.x, lhs.y != rhs.y, lhs.z != rhs.z, lhs.w != rhs.w); } + + /// Returns the result of a componentwise not equal operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (uint4 lhs, uint rhs) { return new bool4 (lhs.x != rhs, lhs.y != rhs, lhs.z != rhs, lhs.w != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4 operator != (uint lhs, uint4 rhs) { return new bool4 (lhs != rhs.x, lhs != rhs.y, lhs != rhs.z, lhs != rhs.w); } + + + /// Returns the result of a componentwise bitwise not operation on a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator ~ (uint4 val) { return new uint4 (~val.x, ~val.y, ~val.z, ~val.w); } + + + /// Returns the result of a componentwise bitwise and operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator & (uint4 lhs, uint4 rhs) { return new uint4 (lhs.x & rhs.x, lhs.y & rhs.y, lhs.z & rhs.z, lhs.w & rhs.w); } + + /// Returns the result of a componentwise bitwise and operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator & (uint4 lhs, uint rhs) { return new uint4 (lhs.x & rhs, lhs.y & rhs, lhs.z & rhs, lhs.w & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator & (uint lhs, uint4 rhs) { return new uint4 (lhs & rhs.x, lhs & rhs.y, lhs & rhs.z, lhs & rhs.w); } + + + /// Returns the result of a componentwise bitwise or operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator | (uint4 lhs, uint4 rhs) { return new uint4 (lhs.x | rhs.x, lhs.y | rhs.y, lhs.z | rhs.z, lhs.w | rhs.w); } + + /// Returns the result of a componentwise bitwise or operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator | (uint4 lhs, uint rhs) { return new uint4 (lhs.x | rhs, lhs.y | rhs, lhs.z | rhs, lhs.w | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator | (uint lhs, uint4 rhs) { return new uint4 (lhs | rhs.x, lhs | rhs.y, lhs | rhs.z, lhs | rhs.w); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator ^ (uint4 lhs, uint4 rhs) { return new uint4 (lhs.x ^ rhs.x, lhs.y ^ rhs.y, lhs.z ^ rhs.z, lhs.w ^ rhs.w); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint4 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator ^ (uint4 lhs, uint rhs) { return new uint4 (lhs.x ^ rhs, lhs.y ^ rhs, lhs.z ^ rhs, lhs.w ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 operator ^ (uint lhs, uint4 rhs) { return new uint4 (lhs ^ rhs.x, lhs ^ rhs.y, lhs ^ rhs.z, lhs ^ rhs.w); } + + + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 xwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(x, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 yzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 ywww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(y, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; w = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 zwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(z, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wxww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; z = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wyww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; y = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; x = value.w; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wzww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint4 wwww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint4(w, w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 xww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(x, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, x, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, y, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 ywx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 ywy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 ywz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 yww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(y, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, x, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, y, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; w = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, z, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, z, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 zww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(z, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wxx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wxy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wxz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wxw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, x, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wyx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wyy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wyz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; z = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wyw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, y, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wzx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; x = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wzy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; y = value.z; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wzz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wzw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, z, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wwx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, w, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wwy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, w, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 wwz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, w, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint3 www + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint3(w, w, w); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 xx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(x, x); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 xy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 xz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(x, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 xw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(x, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { x = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 yx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(y, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 yy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(y, y); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 yz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(y, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 yw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(y, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { y = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 zx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(z, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 zy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(z, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 zz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(z, z); } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 zw + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(z, w); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { z = value.x; w = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 wx + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(w, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; x = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 wy + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(w, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; y = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 wz + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(w, z); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set { w = value.x; z = value.y; } + } + + + [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] + public uint2 ww + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { return new uint2(w, w); } + } + + + + /// Returns the uint element at a specified index. + unsafe public uint this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (uint4* array = &this) { return ((uint*)array)[index]; } + } + set + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (uint* array = &x) { array[index] = value; } + } + } + + /// Returns true if the uint4 is equal to a given uint4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint4 rhs) { return x == rhs.x && y == rhs.y && z == rhs.z && w == rhs.w; } + + /// Returns true if the uint4 is equal to a given uint4, false otherwise. + public override bool Equals(object o) { return Equals((uint4)o); } + + + /// Returns a hash code for the uint4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint4({0}, {1}, {2}, {3})", x, y, z, w); + } + + /// Returns a string representation of the uint4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint4({0}, {1}, {2}, {3})", x.ToString(format, formatProvider), y.ToString(format, formatProvider), z.ToString(format, formatProvider), w.ToString(format, formatProvider)); + } + + internal sealed class DebuggerProxy + { + public uint x; + public uint y; + public uint z; + public uint w; + public DebuggerProxy(uint4 v) + { + x = v.x; + y = v.y; + z = v.z; + w = v.w; + } + } + + } + + public static partial class math + { + /// Returns a uint4 vector constructed from four uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(uint x, uint y, uint z, uint w) { return new uint4(x, y, z, w); } + + /// Returns a uint4 vector constructed from two uint values and a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(uint x, uint y, uint2 zw) { return new uint4(x, y, zw); } + + /// Returns a uint4 vector constructed from a uint value, a uint2 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(uint x, uint2 yz, uint w) { return new uint4(x, yz, w); } + + /// Returns a uint4 vector constructed from a uint value and a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(uint x, uint3 yzw) { return new uint4(x, yzw); } + + /// Returns a uint4 vector constructed from a uint2 vector and two uint values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(uint2 xy, uint z, uint w) { return new uint4(xy, z, w); } + + /// Returns a uint4 vector constructed from two uint2 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(uint2 xy, uint2 zw) { return new uint4(xy, zw); } + + /// Returns a uint4 vector constructed from a uint3 vector and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(uint3 xyz, uint w) { return new uint4(xyz, w); } + + /// Returns a uint4 vector constructed from a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(uint4 xyzw) { return new uint4(xyzw); } + + /// Returns a uint4 vector constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(uint v) { return new uint4(v); } + + /// Returns a uint4 vector constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(bool v) { return new uint4(v); } + + /// Return a uint4 vector constructed from a bool4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(bool4 v) { return new uint4(v); } + + /// Returns a uint4 vector constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(int v) { return new uint4(v); } + + /// Return a uint4 vector constructed from a int4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(int4 v) { return new uint4(v); } + + /// Returns a uint4 vector constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(float v) { return new uint4(v); } + + /// Return a uint4 vector constructed from a float4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(float4 v) { return new uint4(v); } + + /// Returns a uint4 vector constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(double v) { return new uint4(v); } + + /// Return a uint4 vector constructed from a double4 vector by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 uint4(double4 v) { return new uint4(v); } + + /// Returns a uint hash code of a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint4 v) + { + return csum(v * uint4(0xB492BF15u, 0xD37220E3u, 0x7AA2C2BDu, 0xE16BC89Du)) + 0x7AA07CD3u; + } + + /// + /// Returns a uint4 vector hash code of a uint4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(uint4 v) + { + return (v * uint4(0xAF642BA9u, 0xA8F2213Bu, 0x9F3FDC37u, 0xAC60D0C3u)) + 0x9263662Fu; + } + + /// Returns the result of specified shuffling of the components from two uint4 vectors into a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint shuffle(uint4 a, uint4 b, ShuffleComponent x) + { + return select_shuffle_component(a, b, x); + } + + /// Returns the result of specified shuffling of the components from two uint4 vectors into a uint2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2 shuffle(uint4 a, uint4 b, ShuffleComponent x, ShuffleComponent y) + { + return uint2( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y)); + } + + /// Returns the result of specified shuffling of the components from two uint4 vectors into a uint3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3 shuffle(uint4 a, uint4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z) + { + return uint3( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z)); + } + + /// Returns the result of specified shuffling of the components from two uint4 vectors into a uint4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 shuffle(uint4 a, uint4 b, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w) + { + return uint4( + select_shuffle_component(a, b, x), + select_shuffle_component(a, b, y), + select_shuffle_component(a, b, z), + select_shuffle_component(a, b, w)); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static uint select_shuffle_component(uint4 a, uint4 b, ShuffleComponent component) + { + switch(component) + { + case ShuffleComponent.LeftX: + return a.x; + case ShuffleComponent.LeftY: + return a.y; + case ShuffleComponent.LeftZ: + return a.z; + case ShuffleComponent.LeftW: + return a.w; + case ShuffleComponent.RightX: + return b.x; + case ShuffleComponent.RightY: + return b.y; + case ShuffleComponent.RightZ: + return b.z; + case ShuffleComponent.RightW: + return b.w; + default: + throw new System.ArgumentException("Invalid shuffle component: " + component); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4.gen.cs.meta new file mode 100644 index 0000000..e3038e7 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9fdee5e687d86ef488fb8ebda7eb849b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x2.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x2.gen.cs new file mode 100644 index 0000000..62cf28f --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x2.gen.cs @@ -0,0 +1,497 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct uint4x2 : System.IEquatable, IFormattable + { + public uint4 c0; + public uint4 c1; + + /// uint4x2 zero value. + public static readonly uint4x2 zero; + + /// Constructs a uint4x2 matrix from two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(uint4 c0, uint4 c1) + { + this.c0 = c0; + this.c1 = c1; + } + + /// Constructs a uint4x2 matrix from 8 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(uint m00, uint m01, + uint m10, uint m11, + uint m20, uint m21, + uint m30, uint m31) + { + this.c0 = new uint4(m00, m10, m20, m30); + this.c1 = new uint4(m01, m11, m21, m31); + } + + /// Constructs a uint4x2 matrix from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(uint v) + { + this.c0 = v; + this.c1 = v; + } + + /// Constructs a uint4x2 matrix from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(bool v) + { + this.c0 = math.select(new uint4(0u), new uint4(1u), v); + this.c1 = math.select(new uint4(0u), new uint4(1u), v); + } + + /// Constructs a uint4x2 matrix from a bool4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(bool4x2 v) + { + this.c0 = math.select(new uint4(0u), new uint4(1u), v.c0); + this.c1 = math.select(new uint4(0u), new uint4(1u), v.c1); + } + + /// Constructs a uint4x2 matrix from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(int v) + { + this.c0 = (uint4)v; + this.c1 = (uint4)v; + } + + /// Constructs a uint4x2 matrix from a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(int4x2 v) + { + this.c0 = (uint4)v.c0; + this.c1 = (uint4)v.c1; + } + + /// Constructs a uint4x2 matrix from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(float v) + { + this.c0 = (uint4)v; + this.c1 = (uint4)v; + } + + /// Constructs a uint4x2 matrix from a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(float4x2 v) + { + this.c0 = (uint4)v.c0; + this.c1 = (uint4)v.c1; + } + + /// Constructs a uint4x2 matrix from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(double v) + { + this.c0 = (uint4)v; + this.c1 = (uint4)v; + } + + /// Constructs a uint4x2 matrix from a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x2(double4x2 v) + { + this.c0 = (uint4)v.c0; + this.c1 = (uint4)v.c1; + } + + + /// Implicitly converts a single uint value to a uint4x2 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint4x2(uint v) { return new uint4x2(v); } + + /// Explicitly converts a single bool value to a uint4x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x2(bool v) { return new uint4x2(v); } + + /// Explicitly converts a bool4x2 matrix to a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x2(bool4x2 v) { return new uint4x2(v); } + + /// Explicitly converts a single int value to a uint4x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x2(int v) { return new uint4x2(v); } + + /// Explicitly converts a int4x2 matrix to a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x2(int4x2 v) { return new uint4x2(v); } + + /// Explicitly converts a single float value to a uint4x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x2(float v) { return new uint4x2(v); } + + /// Explicitly converts a float4x2 matrix to a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x2(float4x2 v) { return new uint4x2(v); } + + /// Explicitly converts a single double value to a uint4x2 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x2(double v) { return new uint4x2(v); } + + /// Explicitly converts a double4x2 matrix to a uint4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x2(double4x2 v) { return new uint4x2(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator * (uint4x2 lhs, uint4x2 rhs) { return new uint4x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); } + + /// Returns the result of a componentwise multiplication operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator * (uint4x2 lhs, uint rhs) { return new uint4x2 (lhs.c0 * rhs, lhs.c1 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator * (uint lhs, uint4x2 rhs) { return new uint4x2 (lhs * rhs.c0, lhs * rhs.c1); } + + + /// Returns the result of a componentwise addition operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator + (uint4x2 lhs, uint4x2 rhs) { return new uint4x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); } + + /// Returns the result of a componentwise addition operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator + (uint4x2 lhs, uint rhs) { return new uint4x2 (lhs.c0 + rhs, lhs.c1 + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator + (uint lhs, uint4x2 rhs) { return new uint4x2 (lhs + rhs.c0, lhs + rhs.c1); } + + + /// Returns the result of a componentwise subtraction operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator - (uint4x2 lhs, uint4x2 rhs) { return new uint4x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); } + + /// Returns the result of a componentwise subtraction operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator - (uint4x2 lhs, uint rhs) { return new uint4x2 (lhs.c0 - rhs, lhs.c1 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator - (uint lhs, uint4x2 rhs) { return new uint4x2 (lhs - rhs.c0, lhs - rhs.c1); } + + + /// Returns the result of a componentwise division operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator / (uint4x2 lhs, uint4x2 rhs) { return new uint4x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); } + + /// Returns the result of a componentwise division operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator / (uint4x2 lhs, uint rhs) { return new uint4x2 (lhs.c0 / rhs, lhs.c1 / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator / (uint lhs, uint4x2 rhs) { return new uint4x2 (lhs / rhs.c0, lhs / rhs.c1); } + + + /// Returns the result of a componentwise modulus operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator % (uint4x2 lhs, uint4x2 rhs) { return new uint4x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); } + + /// Returns the result of a componentwise modulus operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator % (uint4x2 lhs, uint rhs) { return new uint4x2 (lhs.c0 % rhs, lhs.c1 % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator % (uint lhs, uint4x2 rhs) { return new uint4x2 (lhs % rhs.c0, lhs % rhs.c1); } + + + /// Returns the result of a componentwise increment operation on a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator ++ (uint4x2 val) { return new uint4x2 (++val.c0, ++val.c1); } + + + /// Returns the result of a componentwise decrement operation on a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator -- (uint4x2 val) { return new uint4x2 (--val.c0, --val.c1); } + + + /// Returns the result of a componentwise less than operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (uint4x2 lhs, uint4x2 rhs) { return new bool4x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); } + + /// Returns the result of a componentwise less than operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (uint4x2 lhs, uint rhs) { return new bool4x2 (lhs.c0 < rhs, lhs.c1 < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator < (uint lhs, uint4x2 rhs) { return new bool4x2 (lhs < rhs.c0, lhs < rhs.c1); } + + + /// Returns the result of a componentwise less or equal operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (uint4x2 lhs, uint4x2 rhs) { return new bool4x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); } + + /// Returns the result of a componentwise less or equal operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (uint4x2 lhs, uint rhs) { return new bool4x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator <= (uint lhs, uint4x2 rhs) { return new bool4x2 (lhs <= rhs.c0, lhs <= rhs.c1); } + + + /// Returns the result of a componentwise greater than operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (uint4x2 lhs, uint4x2 rhs) { return new bool4x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); } + + /// Returns the result of a componentwise greater than operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (uint4x2 lhs, uint rhs) { return new bool4x2 (lhs.c0 > rhs, lhs.c1 > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator > (uint lhs, uint4x2 rhs) { return new bool4x2 (lhs > rhs.c0, lhs > rhs.c1); } + + + /// Returns the result of a componentwise greater or equal operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (uint4x2 lhs, uint4x2 rhs) { return new bool4x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); } + + /// Returns the result of a componentwise greater or equal operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (uint4x2 lhs, uint rhs) { return new bool4x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator >= (uint lhs, uint4x2 rhs) { return new bool4x2 (lhs >= rhs.c0, lhs >= rhs.c1); } + + + /// Returns the result of a componentwise unary minus operation on a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator - (uint4x2 val) { return new uint4x2 (-val.c0, -val.c1); } + + + /// Returns the result of a componentwise unary plus operation on a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator + (uint4x2 val) { return new uint4x2 (+val.c0, +val.c1); } + + + /// Returns the result of a componentwise left shift operation on a uint4x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator << (uint4x2 x, int n) { return new uint4x2 (x.c0 << n, x.c1 << n); } + + /// Returns the result of a componentwise right shift operation on a uint4x2 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator >> (uint4x2 x, int n) { return new uint4x2 (x.c0 >> n, x.c1 >> n); } + + /// Returns the result of a componentwise equality operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (uint4x2 lhs, uint4x2 rhs) { return new bool4x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); } + + /// Returns the result of a componentwise equality operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (uint4x2 lhs, uint rhs) { return new bool4x2 (lhs.c0 == rhs, lhs.c1 == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator == (uint lhs, uint4x2 rhs) { return new bool4x2 (lhs == rhs.c0, lhs == rhs.c1); } + + + /// Returns the result of a componentwise not equal operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (uint4x2 lhs, uint4x2 rhs) { return new bool4x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); } + + /// Returns the result of a componentwise not equal operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (uint4x2 lhs, uint rhs) { return new bool4x2 (lhs.c0 != rhs, lhs.c1 != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x2 operator != (uint lhs, uint4x2 rhs) { return new bool4x2 (lhs != rhs.c0, lhs != rhs.c1); } + + + /// Returns the result of a componentwise bitwise not operation on a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator ~ (uint4x2 val) { return new uint4x2 (~val.c0, ~val.c1); } + + + /// Returns the result of a componentwise bitwise and operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator & (uint4x2 lhs, uint4x2 rhs) { return new uint4x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); } + + /// Returns the result of a componentwise bitwise and operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator & (uint4x2 lhs, uint rhs) { return new uint4x2 (lhs.c0 & rhs, lhs.c1 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator & (uint lhs, uint4x2 rhs) { return new uint4x2 (lhs & rhs.c0, lhs & rhs.c1); } + + + /// Returns the result of a componentwise bitwise or operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator | (uint4x2 lhs, uint4x2 rhs) { return new uint4x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); } + + /// Returns the result of a componentwise bitwise or operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator | (uint4x2 lhs, uint rhs) { return new uint4x2 (lhs.c0 | rhs, lhs.c1 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator | (uint lhs, uint4x2 rhs) { return new uint4x2 (lhs | rhs.c0, lhs | rhs.c1); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint4x2 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator ^ (uint4x2 lhs, uint4x2 rhs) { return new uint4x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint4x2 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator ^ (uint4x2 lhs, uint rhs) { return new uint4x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 operator ^ (uint lhs, uint4x2 rhs) { return new uint4x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); } + + + + /// Returns the uint4 element at a specified index. + unsafe public ref uint4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 2) + throw new System.ArgumentException("index must be between[0...1]"); +#endif + fixed (uint4x2* array = &this) { return ref ((uint4*)array)[index]; } + } + } + + /// Returns true if the uint4x2 is equal to a given uint4x2, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint4x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); } + + /// Returns true if the uint4x2 is equal to a given uint4x2, false otherwise. + public override bool Equals(object o) { return Equals((uint4x2)o); } + + + /// Returns a hash code for the uint4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint4x2. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint4x2({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x, c1.x, c0.y, c1.y, c0.z, c1.z, c0.w, c1.w); + } + + /// Returns a string representation of the uint4x2 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint4x2({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a uint4x2 matrix constructed from two uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(uint4 c0, uint4 c1) { return new uint4x2(c0, c1); } + + /// Returns a uint4x2 matrix constructed from from 8 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(uint m00, uint m01, + uint m10, uint m11, + uint m20, uint m21, + uint m30, uint m31) + { + return new uint4x2(m00, m01, + m10, m11, + m20, m21, + m30, m31); + } + + /// Returns a uint4x2 matrix constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(uint v) { return new uint4x2(v); } + + /// Returns a uint4x2 matrix constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(bool v) { return new uint4x2(v); } + + /// Return a uint4x2 matrix constructed from a bool4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(bool4x2 v) { return new uint4x2(v); } + + /// Returns a uint4x2 matrix constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(int v) { return new uint4x2(v); } + + /// Return a uint4x2 matrix constructed from a int4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(int4x2 v) { return new uint4x2(v); } + + /// Returns a uint4x2 matrix constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(float v) { return new uint4x2(v); } + + /// Return a uint4x2 matrix constructed from a float4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(float4x2 v) { return new uint4x2(v); } + + /// Returns a uint4x2 matrix constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(double v) { return new uint4x2(v); } + + /// Return a uint4x2 matrix constructed from a double4x2 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x2 uint4x2(double4x2 v) { return new uint4x2(v); } + + /// Return the uint2x4 transpose of a uint4x2 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint2x4 transpose(uint4x2 v) + { + return uint2x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w); + } + + /// Returns a uint hash code of a uint4x2 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint4x2 v) + { + return csum(v.c0 * uint4(0xFA3A3285u, 0xAD55999Du, 0xDCDD5341u, 0x94DDD769u) + + v.c1 * uint4(0xA1E92D39u, 0x4583C801u, 0x9536A0F5u, 0xAF816615u)) + 0x9AF8D62Du; + } + + /// + /// Returns a uint4 vector hash code of a uint4x2 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(uint4x2 v) + { + return (v.c0 * uint4(0xE3600729u, 0x5F17300Du, 0x670D6809u, 0x7AF32C49u) + + v.c1 * uint4(0xAE131389u, 0x5D1B165Bu, 0x87096CD7u, 0x4C7F6DD1u)) + 0x4822A3E9u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x2.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x2.gen.cs.meta new file mode 100644 index 0000000..ede2077 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 793eda612f42a4089bcfd0be1ece0a6d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x3.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x3.gen.cs new file mode 100644 index 0000000..fec0124 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x3.gen.cs @@ -0,0 +1,512 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct uint4x3 : System.IEquatable, IFormattable + { + public uint4 c0; + public uint4 c1; + public uint4 c2; + + /// uint4x3 zero value. + public static readonly uint4x3 zero; + + /// Constructs a uint4x3 matrix from three uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(uint4 c0, uint4 c1, uint4 c2) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + } + + /// Constructs a uint4x3 matrix from 12 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(uint m00, uint m01, uint m02, + uint m10, uint m11, uint m12, + uint m20, uint m21, uint m22, + uint m30, uint m31, uint m32) + { + this.c0 = new uint4(m00, m10, m20, m30); + this.c1 = new uint4(m01, m11, m21, m31); + this.c2 = new uint4(m02, m12, m22, m32); + } + + /// Constructs a uint4x3 matrix from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + } + + /// Constructs a uint4x3 matrix from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(bool v) + { + this.c0 = math.select(new uint4(0u), new uint4(1u), v); + this.c1 = math.select(new uint4(0u), new uint4(1u), v); + this.c2 = math.select(new uint4(0u), new uint4(1u), v); + } + + /// Constructs a uint4x3 matrix from a bool4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(bool4x3 v) + { + this.c0 = math.select(new uint4(0u), new uint4(1u), v.c0); + this.c1 = math.select(new uint4(0u), new uint4(1u), v.c1); + this.c2 = math.select(new uint4(0u), new uint4(1u), v.c2); + } + + /// Constructs a uint4x3 matrix from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(int v) + { + this.c0 = (uint4)v; + this.c1 = (uint4)v; + this.c2 = (uint4)v; + } + + /// Constructs a uint4x3 matrix from a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(int4x3 v) + { + this.c0 = (uint4)v.c0; + this.c1 = (uint4)v.c1; + this.c2 = (uint4)v.c2; + } + + /// Constructs a uint4x3 matrix from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(float v) + { + this.c0 = (uint4)v; + this.c1 = (uint4)v; + this.c2 = (uint4)v; + } + + /// Constructs a uint4x3 matrix from a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(float4x3 v) + { + this.c0 = (uint4)v.c0; + this.c1 = (uint4)v.c1; + this.c2 = (uint4)v.c2; + } + + /// Constructs a uint4x3 matrix from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(double v) + { + this.c0 = (uint4)v; + this.c1 = (uint4)v; + this.c2 = (uint4)v; + } + + /// Constructs a uint4x3 matrix from a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x3(double4x3 v) + { + this.c0 = (uint4)v.c0; + this.c1 = (uint4)v.c1; + this.c2 = (uint4)v.c2; + } + + + /// Implicitly converts a single uint value to a uint4x3 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint4x3(uint v) { return new uint4x3(v); } + + /// Explicitly converts a single bool value to a uint4x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x3(bool v) { return new uint4x3(v); } + + /// Explicitly converts a bool4x3 matrix to a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x3(bool4x3 v) { return new uint4x3(v); } + + /// Explicitly converts a single int value to a uint4x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x3(int v) { return new uint4x3(v); } + + /// Explicitly converts a int4x3 matrix to a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x3(int4x3 v) { return new uint4x3(v); } + + /// Explicitly converts a single float value to a uint4x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x3(float v) { return new uint4x3(v); } + + /// Explicitly converts a float4x3 matrix to a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x3(float4x3 v) { return new uint4x3(v); } + + /// Explicitly converts a single double value to a uint4x3 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x3(double v) { return new uint4x3(v); } + + /// Explicitly converts a double4x3 matrix to a uint4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x3(double4x3 v) { return new uint4x3(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator * (uint4x3 lhs, uint4x3 rhs) { return new uint4x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); } + + /// Returns the result of a componentwise multiplication operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator * (uint4x3 lhs, uint rhs) { return new uint4x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator * (uint lhs, uint4x3 rhs) { return new uint4x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); } + + + /// Returns the result of a componentwise addition operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator + (uint4x3 lhs, uint4x3 rhs) { return new uint4x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); } + + /// Returns the result of a componentwise addition operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator + (uint4x3 lhs, uint rhs) { return new uint4x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator + (uint lhs, uint4x3 rhs) { return new uint4x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); } + + + /// Returns the result of a componentwise subtraction operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator - (uint4x3 lhs, uint4x3 rhs) { return new uint4x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); } + + /// Returns the result of a componentwise subtraction operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator - (uint4x3 lhs, uint rhs) { return new uint4x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator - (uint lhs, uint4x3 rhs) { return new uint4x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); } + + + /// Returns the result of a componentwise division operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator / (uint4x3 lhs, uint4x3 rhs) { return new uint4x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); } + + /// Returns the result of a componentwise division operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator / (uint4x3 lhs, uint rhs) { return new uint4x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator / (uint lhs, uint4x3 rhs) { return new uint4x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); } + + + /// Returns the result of a componentwise modulus operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator % (uint4x3 lhs, uint4x3 rhs) { return new uint4x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); } + + /// Returns the result of a componentwise modulus operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator % (uint4x3 lhs, uint rhs) { return new uint4x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator % (uint lhs, uint4x3 rhs) { return new uint4x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); } + + + /// Returns the result of a componentwise increment operation on a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator ++ (uint4x3 val) { return new uint4x3 (++val.c0, ++val.c1, ++val.c2); } + + + /// Returns the result of a componentwise decrement operation on a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator -- (uint4x3 val) { return new uint4x3 (--val.c0, --val.c1, --val.c2); } + + + /// Returns the result of a componentwise less than operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (uint4x3 lhs, uint4x3 rhs) { return new bool4x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); } + + /// Returns the result of a componentwise less than operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (uint4x3 lhs, uint rhs) { return new bool4x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator < (uint lhs, uint4x3 rhs) { return new bool4x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); } + + + /// Returns the result of a componentwise less or equal operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (uint4x3 lhs, uint4x3 rhs) { return new bool4x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); } + + /// Returns the result of a componentwise less or equal operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (uint4x3 lhs, uint rhs) { return new bool4x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator <= (uint lhs, uint4x3 rhs) { return new bool4x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); } + + + /// Returns the result of a componentwise greater than operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (uint4x3 lhs, uint4x3 rhs) { return new bool4x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); } + + /// Returns the result of a componentwise greater than operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (uint4x3 lhs, uint rhs) { return new bool4x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator > (uint lhs, uint4x3 rhs) { return new bool4x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); } + + + /// Returns the result of a componentwise greater or equal operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (uint4x3 lhs, uint4x3 rhs) { return new bool4x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); } + + /// Returns the result of a componentwise greater or equal operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (uint4x3 lhs, uint rhs) { return new bool4x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator >= (uint lhs, uint4x3 rhs) { return new bool4x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); } + + + /// Returns the result of a componentwise unary minus operation on a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator - (uint4x3 val) { return new uint4x3 (-val.c0, -val.c1, -val.c2); } + + + /// Returns the result of a componentwise unary plus operation on a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator + (uint4x3 val) { return new uint4x3 (+val.c0, +val.c1, +val.c2); } + + + /// Returns the result of a componentwise left shift operation on a uint4x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator << (uint4x3 x, int n) { return new uint4x3 (x.c0 << n, x.c1 << n, x.c2 << n); } + + /// Returns the result of a componentwise right shift operation on a uint4x3 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator >> (uint4x3 x, int n) { return new uint4x3 (x.c0 >> n, x.c1 >> n, x.c2 >> n); } + + /// Returns the result of a componentwise equality operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (uint4x3 lhs, uint4x3 rhs) { return new bool4x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); } + + /// Returns the result of a componentwise equality operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (uint4x3 lhs, uint rhs) { return new bool4x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator == (uint lhs, uint4x3 rhs) { return new bool4x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); } + + + /// Returns the result of a componentwise not equal operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (uint4x3 lhs, uint4x3 rhs) { return new bool4x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); } + + /// Returns the result of a componentwise not equal operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (uint4x3 lhs, uint rhs) { return new bool4x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x3 operator != (uint lhs, uint4x3 rhs) { return new bool4x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); } + + + /// Returns the result of a componentwise bitwise not operation on a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator ~ (uint4x3 val) { return new uint4x3 (~val.c0, ~val.c1, ~val.c2); } + + + /// Returns the result of a componentwise bitwise and operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator & (uint4x3 lhs, uint4x3 rhs) { return new uint4x3 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2); } + + /// Returns the result of a componentwise bitwise and operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator & (uint4x3 lhs, uint rhs) { return new uint4x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator & (uint lhs, uint4x3 rhs) { return new uint4x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); } + + + /// Returns the result of a componentwise bitwise or operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator | (uint4x3 lhs, uint4x3 rhs) { return new uint4x3 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2); } + + /// Returns the result of a componentwise bitwise or operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator | (uint4x3 lhs, uint rhs) { return new uint4x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator | (uint lhs, uint4x3 rhs) { return new uint4x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint4x3 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator ^ (uint4x3 lhs, uint4x3 rhs) { return new uint4x3 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint4x3 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator ^ (uint4x3 lhs, uint rhs) { return new uint4x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 operator ^ (uint lhs, uint4x3 rhs) { return new uint4x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); } + + + + /// Returns the uint4 element at a specified index. + unsafe public ref uint4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 3) + throw new System.ArgumentException("index must be between[0...2]"); +#endif + fixed (uint4x3* array = &this) { return ref ((uint4*)array)[index]; } + } + } + + /// Returns true if the uint4x3 is equal to a given uint4x3, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint4x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); } + + /// Returns true if the uint4x3 is equal to a given uint4x3, false otherwise. + public override bool Equals(object o) { return Equals((uint4x3)o); } + + + /// Returns a hash code for the uint4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint4x3. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint4x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z, c0.w, c1.w, c2.w); + } + + /// Returns a string representation of the uint4x3 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint4x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a uint4x3 matrix constructed from three uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(uint4 c0, uint4 c1, uint4 c2) { return new uint4x3(c0, c1, c2); } + + /// Returns a uint4x3 matrix constructed from from 12 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(uint m00, uint m01, uint m02, + uint m10, uint m11, uint m12, + uint m20, uint m21, uint m22, + uint m30, uint m31, uint m32) + { + return new uint4x3(m00, m01, m02, + m10, m11, m12, + m20, m21, m22, + m30, m31, m32); + } + + /// Returns a uint4x3 matrix constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(uint v) { return new uint4x3(v); } + + /// Returns a uint4x3 matrix constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(bool v) { return new uint4x3(v); } + + /// Return a uint4x3 matrix constructed from a bool4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(bool4x3 v) { return new uint4x3(v); } + + /// Returns a uint4x3 matrix constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(int v) { return new uint4x3(v); } + + /// Return a uint4x3 matrix constructed from a int4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(int4x3 v) { return new uint4x3(v); } + + /// Returns a uint4x3 matrix constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(float v) { return new uint4x3(v); } + + /// Return a uint4x3 matrix constructed from a float4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(float4x3 v) { return new uint4x3(v); } + + /// Returns a uint4x3 matrix constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(double v) { return new uint4x3(v); } + + /// Return a uint4x3 matrix constructed from a double4x3 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x3 uint4x3(double4x3 v) { return new uint4x3(v); } + + /// Return the uint3x4 transpose of a uint4x3 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint3x4 transpose(uint4x3 v) + { + return uint3x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w); + } + + /// Returns a uint hash code of a uint4x3 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint4x3 v) + { + return csum(v.c0 * uint4(0xE7579997u, 0xEF7D56C7u, 0x66F38F0Bu, 0x624256A3u) + + v.c1 * uint4(0x5292ADE1u, 0xD2E590E5u, 0xF25BE857u, 0x9BC17CE7u) + + v.c2 * uint4(0xC8B86851u, 0x64095221u, 0xADF428FFu, 0xA3977109u)) + 0x745ED837u; + } + + /// + /// Returns a uint4 vector hash code of a uint4x3 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(uint4x3 v) + { + return (v.c0 * uint4(0x9CDC88F5u, 0xFA62D721u, 0x7E4DB1CFu, 0x68EEE0F5u) + + v.c1 * uint4(0xBC3B0A59u, 0x816EFB5Du, 0xA24E82B7u, 0x45A22087u) + + v.c2 * uint4(0xFC104C3Bu, 0x5FFF6B19u, 0x5E6CBF3Bu, 0xB546F2A5u)) + 0xBBCF63E7u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x3.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x3.gen.cs.meta new file mode 100644 index 0000000..2f3698d --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8178bb4bab5354260979dd1f191c22ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x4.gen.cs b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x4.gen.cs new file mode 100644 index 0000000..6a17f62 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x4.gen.cs @@ -0,0 +1,530 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using System; +using System.Runtime.CompilerServices; + +#pragma warning disable 0660, 0661 + +namespace Unity.Mathematics +{ + [System.Serializable] + public partial struct uint4x4 : System.IEquatable, IFormattable + { + public uint4 c0; + public uint4 c1; + public uint4 c2; + public uint4 c3; + + /// uint4x4 identity transform. + public static readonly uint4x4 identity = new uint4x4(1u, 0u, 0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 1u); + + /// uint4x4 zero value. + public static readonly uint4x4 zero; + + /// Constructs a uint4x4 matrix from four uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(uint4 c0, uint4 c1, uint4 c2, uint4 c3) + { + this.c0 = c0; + this.c1 = c1; + this.c2 = c2; + this.c3 = c3; + } + + /// Constructs a uint4x4 matrix from 16 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(uint m00, uint m01, uint m02, uint m03, + uint m10, uint m11, uint m12, uint m13, + uint m20, uint m21, uint m22, uint m23, + uint m30, uint m31, uint m32, uint m33) + { + this.c0 = new uint4(m00, m10, m20, m30); + this.c1 = new uint4(m01, m11, m21, m31); + this.c2 = new uint4(m02, m12, m22, m32); + this.c3 = new uint4(m03, m13, m23, m33); + } + + /// Constructs a uint4x4 matrix from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(uint v) + { + this.c0 = v; + this.c1 = v; + this.c2 = v; + this.c3 = v; + } + + /// Constructs a uint4x4 matrix from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(bool v) + { + this.c0 = math.select(new uint4(0u), new uint4(1u), v); + this.c1 = math.select(new uint4(0u), new uint4(1u), v); + this.c2 = math.select(new uint4(0u), new uint4(1u), v); + this.c3 = math.select(new uint4(0u), new uint4(1u), v); + } + + /// Constructs a uint4x4 matrix from a bool4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(bool4x4 v) + { + this.c0 = math.select(new uint4(0u), new uint4(1u), v.c0); + this.c1 = math.select(new uint4(0u), new uint4(1u), v.c1); + this.c2 = math.select(new uint4(0u), new uint4(1u), v.c2); + this.c3 = math.select(new uint4(0u), new uint4(1u), v.c3); + } + + /// Constructs a uint4x4 matrix from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(int v) + { + this.c0 = (uint4)v; + this.c1 = (uint4)v; + this.c2 = (uint4)v; + this.c3 = (uint4)v; + } + + /// Constructs a uint4x4 matrix from a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(int4x4 v) + { + this.c0 = (uint4)v.c0; + this.c1 = (uint4)v.c1; + this.c2 = (uint4)v.c2; + this.c3 = (uint4)v.c3; + } + + /// Constructs a uint4x4 matrix from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(float v) + { + this.c0 = (uint4)v; + this.c1 = (uint4)v; + this.c2 = (uint4)v; + this.c3 = (uint4)v; + } + + /// Constructs a uint4x4 matrix from a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(float4x4 v) + { + this.c0 = (uint4)v.c0; + this.c1 = (uint4)v.c1; + this.c2 = (uint4)v.c2; + this.c3 = (uint4)v.c3; + } + + /// Constructs a uint4x4 matrix from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(double v) + { + this.c0 = (uint4)v; + this.c1 = (uint4)v; + this.c2 = (uint4)v; + this.c3 = (uint4)v; + } + + /// Constructs a uint4x4 matrix from a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint4x4(double4x4 v) + { + this.c0 = (uint4)v.c0; + this.c1 = (uint4)v.c1; + this.c2 = (uint4)v.c2; + this.c3 = (uint4)v.c3; + } + + + /// Implicitly converts a single uint value to a uint4x4 matrix by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator uint4x4(uint v) { return new uint4x4(v); } + + /// Explicitly converts a single bool value to a uint4x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x4(bool v) { return new uint4x4(v); } + + /// Explicitly converts a bool4x4 matrix to a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x4(bool4x4 v) { return new uint4x4(v); } + + /// Explicitly converts a single int value to a uint4x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x4(int v) { return new uint4x4(v); } + + /// Explicitly converts a int4x4 matrix to a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x4(int4x4 v) { return new uint4x4(v); } + + /// Explicitly converts a single float value to a uint4x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x4(float v) { return new uint4x4(v); } + + /// Explicitly converts a float4x4 matrix to a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x4(float4x4 v) { return new uint4x4(v); } + + /// Explicitly converts a single double value to a uint4x4 matrix by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x4(double v) { return new uint4x4(v); } + + /// Explicitly converts a double4x4 matrix to a uint4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static explicit operator uint4x4(double4x4 v) { return new uint4x4(v); } + + + /// Returns the result of a componentwise multiplication operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator * (uint4x4 lhs, uint4x4 rhs) { return new uint4x4 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2, lhs.c3 * rhs.c3); } + + /// Returns the result of a componentwise multiplication operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator * (uint4x4 lhs, uint rhs) { return new uint4x4 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs, lhs.c3 * rhs); } + + /// Returns the result of a componentwise multiplication operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator * (uint lhs, uint4x4 rhs) { return new uint4x4 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2, lhs * rhs.c3); } + + + /// Returns the result of a componentwise addition operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator + (uint4x4 lhs, uint4x4 rhs) { return new uint4x4 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2, lhs.c3 + rhs.c3); } + + /// Returns the result of a componentwise addition operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator + (uint4x4 lhs, uint rhs) { return new uint4x4 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs, lhs.c3 + rhs); } + + /// Returns the result of a componentwise addition operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator + (uint lhs, uint4x4 rhs) { return new uint4x4 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2, lhs + rhs.c3); } + + + /// Returns the result of a componentwise subtraction operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator - (uint4x4 lhs, uint4x4 rhs) { return new uint4x4 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2, lhs.c3 - rhs.c3); } + + /// Returns the result of a componentwise subtraction operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator - (uint4x4 lhs, uint rhs) { return new uint4x4 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs, lhs.c3 - rhs); } + + /// Returns the result of a componentwise subtraction operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator - (uint lhs, uint4x4 rhs) { return new uint4x4 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2, lhs - rhs.c3); } + + + /// Returns the result of a componentwise division operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator / (uint4x4 lhs, uint4x4 rhs) { return new uint4x4 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2, lhs.c3 / rhs.c3); } + + /// Returns the result of a componentwise division operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator / (uint4x4 lhs, uint rhs) { return new uint4x4 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs, lhs.c3 / rhs); } + + /// Returns the result of a componentwise division operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator / (uint lhs, uint4x4 rhs) { return new uint4x4 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2, lhs / rhs.c3); } + + + /// Returns the result of a componentwise modulus operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator % (uint4x4 lhs, uint4x4 rhs) { return new uint4x4 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2, lhs.c3 % rhs.c3); } + + /// Returns the result of a componentwise modulus operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator % (uint4x4 lhs, uint rhs) { return new uint4x4 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs, lhs.c3 % rhs); } + + /// Returns the result of a componentwise modulus operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator % (uint lhs, uint4x4 rhs) { return new uint4x4 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2, lhs % rhs.c3); } + + + /// Returns the result of a componentwise increment operation on a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator ++ (uint4x4 val) { return new uint4x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); } + + + /// Returns the result of a componentwise decrement operation on a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator -- (uint4x4 val) { return new uint4x4 (--val.c0, --val.c1, --val.c2, --val.c3); } + + + /// Returns the result of a componentwise less than operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (uint4x4 lhs, uint4x4 rhs) { return new bool4x4 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2, lhs.c3 < rhs.c3); } + + /// Returns the result of a componentwise less than operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (uint4x4 lhs, uint rhs) { return new bool4x4 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs, lhs.c3 < rhs); } + + /// Returns the result of a componentwise less than operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator < (uint lhs, uint4x4 rhs) { return new bool4x4 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2, lhs < rhs.c3); } + + + /// Returns the result of a componentwise less or equal operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (uint4x4 lhs, uint4x4 rhs) { return new bool4x4 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2, lhs.c3 <= rhs.c3); } + + /// Returns the result of a componentwise less or equal operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (uint4x4 lhs, uint rhs) { return new bool4x4 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs, lhs.c3 <= rhs); } + + /// Returns the result of a componentwise less or equal operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator <= (uint lhs, uint4x4 rhs) { return new bool4x4 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2, lhs <= rhs.c3); } + + + /// Returns the result of a componentwise greater than operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (uint4x4 lhs, uint4x4 rhs) { return new bool4x4 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2, lhs.c3 > rhs.c3); } + + /// Returns the result of a componentwise greater than operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (uint4x4 lhs, uint rhs) { return new bool4x4 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs, lhs.c3 > rhs); } + + /// Returns the result of a componentwise greater than operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator > (uint lhs, uint4x4 rhs) { return new bool4x4 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2, lhs > rhs.c3); } + + + /// Returns the result of a componentwise greater or equal operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (uint4x4 lhs, uint4x4 rhs) { return new bool4x4 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2, lhs.c3 >= rhs.c3); } + + /// Returns the result of a componentwise greater or equal operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (uint4x4 lhs, uint rhs) { return new bool4x4 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs, lhs.c3 >= rhs); } + + /// Returns the result of a componentwise greater or equal operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator >= (uint lhs, uint4x4 rhs) { return new bool4x4 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2, lhs >= rhs.c3); } + + + /// Returns the result of a componentwise unary minus operation on a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator - (uint4x4 val) { return new uint4x4 (-val.c0, -val.c1, -val.c2, -val.c3); } + + + /// Returns the result of a componentwise unary plus operation on a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator + (uint4x4 val) { return new uint4x4 (+val.c0, +val.c1, +val.c2, +val.c3); } + + + /// Returns the result of a componentwise left shift operation on a uint4x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator << (uint4x4 x, int n) { return new uint4x4 (x.c0 << n, x.c1 << n, x.c2 << n, x.c3 << n); } + + /// Returns the result of a componentwise right shift operation on a uint4x4 matrix by a number of bits specified by a single int. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator >> (uint4x4 x, int n) { return new uint4x4 (x.c0 >> n, x.c1 >> n, x.c2 >> n, x.c3 >> n); } + + /// Returns the result of a componentwise equality operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (uint4x4 lhs, uint4x4 rhs) { return new bool4x4 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2, lhs.c3 == rhs.c3); } + + /// Returns the result of a componentwise equality operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (uint4x4 lhs, uint rhs) { return new bool4x4 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs, lhs.c3 == rhs); } + + /// Returns the result of a componentwise equality operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator == (uint lhs, uint4x4 rhs) { return new bool4x4 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2, lhs == rhs.c3); } + + + /// Returns the result of a componentwise not equal operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (uint4x4 lhs, uint4x4 rhs) { return new bool4x4 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2, lhs.c3 != rhs.c3); } + + /// Returns the result of a componentwise not equal operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (uint4x4 lhs, uint rhs) { return new bool4x4 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs, lhs.c3 != rhs); } + + /// Returns the result of a componentwise not equal operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool4x4 operator != (uint lhs, uint4x4 rhs) { return new bool4x4 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2, lhs != rhs.c3); } + + + /// Returns the result of a componentwise bitwise not operation on a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator ~ (uint4x4 val) { return new uint4x4 (~val.c0, ~val.c1, ~val.c2, ~val.c3); } + + + /// Returns the result of a componentwise bitwise and operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator & (uint4x4 lhs, uint4x4 rhs) { return new uint4x4 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1, lhs.c2 & rhs.c2, lhs.c3 & rhs.c3); } + + /// Returns the result of a componentwise bitwise and operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator & (uint4x4 lhs, uint rhs) { return new uint4x4 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs, lhs.c3 & rhs); } + + /// Returns the result of a componentwise bitwise and operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator & (uint lhs, uint4x4 rhs) { return new uint4x4 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2, lhs & rhs.c3); } + + + /// Returns the result of a componentwise bitwise or operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator | (uint4x4 lhs, uint4x4 rhs) { return new uint4x4 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1, lhs.c2 | rhs.c2, lhs.c3 | rhs.c3); } + + /// Returns the result of a componentwise bitwise or operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator | (uint4x4 lhs, uint rhs) { return new uint4x4 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs, lhs.c3 | rhs); } + + /// Returns the result of a componentwise bitwise or operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator | (uint lhs, uint4x4 rhs) { return new uint4x4 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2, lhs | rhs.c3); } + + + /// Returns the result of a componentwise bitwise exclusive or operation on two uint4x4 matrices. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator ^ (uint4x4 lhs, uint4x4 rhs) { return new uint4x4 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1, lhs.c2 ^ rhs.c2, lhs.c3 ^ rhs.c3); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint4x4 matrix and a uint value. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator ^ (uint4x4 lhs, uint rhs) { return new uint4x4 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs, lhs.c3 ^ rhs); } + + /// Returns the result of a componentwise bitwise exclusive or operation on a uint value and a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 operator ^ (uint lhs, uint4x4 rhs) { return new uint4x4 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2, lhs ^ rhs.c3); } + + + + /// Returns the uint4 element at a specified index. + unsafe public ref uint4 this[int index] + { + get + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + if ((uint)index >= 4) + throw new System.ArgumentException("index must be between[0...3]"); +#endif + fixed (uint4x4* array = &this) { return ref ((uint4*)array)[index]; } + } + } + + /// Returns true if the uint4x4 is equal to a given uint4x4, false otherwise. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public bool Equals(uint4x4 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2) && c3.Equals(rhs.c3); } + + /// Returns true if the uint4x4 is equal to a given uint4x4, false otherwise. + public override bool Equals(object o) { return Equals((uint4x4)o); } + + + /// Returns a hash code for the uint4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override int GetHashCode() { return (int)math.hash(this); } + + + /// Returns a string representation of the uint4x4. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public override string ToString() + { + return string.Format("uint4x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15})", c0.x, c1.x, c2.x, c3.x, c0.y, c1.y, c2.y, c3.y, c0.z, c1.z, c2.z, c3.z, c0.w, c1.w, c2.w, c3.w); + } + + /// Returns a string representation of the uint4x4 using a specified format and culture-specific format information. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public string ToString(string format, IFormatProvider formatProvider) + { + return string.Format("uint4x4({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c3.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c3.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c3.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider), c3.w.ToString(format, formatProvider)); + } + + } + + public static partial class math + { + /// Returns a uint4x4 matrix constructed from four uint4 vectors. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(uint4 c0, uint4 c1, uint4 c2, uint4 c3) { return new uint4x4(c0, c1, c2, c3); } + + /// Returns a uint4x4 matrix constructed from from 16 uint values given in row-major order. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(uint m00, uint m01, uint m02, uint m03, + uint m10, uint m11, uint m12, uint m13, + uint m20, uint m21, uint m22, uint m23, + uint m30, uint m31, uint m32, uint m33) + { + return new uint4x4(m00, m01, m02, m03, + m10, m11, m12, m13, + m20, m21, m22, m23, + m30, m31, m32, m33); + } + + /// Returns a uint4x4 matrix constructed from a single uint value by assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(uint v) { return new uint4x4(v); } + + /// Returns a uint4x4 matrix constructed from a single bool value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(bool v) { return new uint4x4(v); } + + /// Return a uint4x4 matrix constructed from a bool4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(bool4x4 v) { return new uint4x4(v); } + + /// Returns a uint4x4 matrix constructed from a single int value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(int v) { return new uint4x4(v); } + + /// Return a uint4x4 matrix constructed from a int4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(int4x4 v) { return new uint4x4(v); } + + /// Returns a uint4x4 matrix constructed from a single float value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(float v) { return new uint4x4(v); } + + /// Return a uint4x4 matrix constructed from a float4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(float4x4 v) { return new uint4x4(v); } + + /// Returns a uint4x4 matrix constructed from a single double value by converting it to uint and assigning it to every component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(double v) { return new uint4x4(v); } + + /// Return a uint4x4 matrix constructed from a double4x4 matrix by componentwise conversion. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 uint4x4(double4x4 v) { return new uint4x4(v); } + + /// Return the uint4x4 transpose of a uint4x4 matrix. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4x4 transpose(uint4x4 v) + { + return uint4x4( + v.c0.x, v.c0.y, v.c0.z, v.c0.w, + v.c1.x, v.c1.y, v.c1.z, v.c1.w, + v.c2.x, v.c2.y, v.c2.z, v.c2.w, + v.c3.x, v.c3.y, v.c3.z, v.c3.w); + } + + /// Returns a uint hash code of a uint4x4 vector. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint hash(uint4x4 v) + { + return csum(v.c0 * uint4(0x9C9F0823u, 0x5A9CA13Bu, 0xAFCDD5EFu, 0xA88D187Du) + + v.c1 * uint4(0xCF6EBA1Du, 0x9D88E5A1u, 0xEADF0775u, 0x747A9D7Bu) + + v.c2 * uint4(0x4111F799u, 0xB5F05AF1u, 0xFD80290Bu, 0x8B65ADB7u) + + v.c3 * uint4(0xDFF4F563u, 0x7069770Du, 0xD1224537u, 0xE99ED6F3u)) + 0x48125549u; + } + + /// + /// Returns a uint4 vector hash code of a uint4x4 vector. + /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash + /// that are only reduced to a narrow uint hash at the very end instead of at every step. + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static uint4 hashwide(uint4x4 v) + { + return (v.c0 * uint4(0xEEE2123Bu, 0xE3AD9FE5u, 0xCE1CF8BFu, 0x7BE39F3Bu) + + v.c1 * uint4(0xFAB9913Fu, 0xB4501269u, 0xE04B89FDu, 0xDB3DE101u) + + v.c2 * uint4(0x7B6D1B4Bu, 0x58399E77u, 0x5EAC29C9u, 0xFC6014F9u) + + v.c3 * uint4(0x6BF6693Fu, 0x9D1B1D9Bu, 0xF842F5C1u, 0xA47EC335u)) + 0xA477DF57u; + } + + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x4.gen.cs.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x4.gen.cs.meta new file mode 100644 index 0000000..87a4723 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/Unity.Mathematics/uint4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1878454c2f73547909bfcea105ffd941 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/package.json b/Library/PackageCache/com.unity.mathematics@1.1.0/package.json new file mode 100644 index 0000000..a050b09 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/package.json @@ -0,0 +1,16 @@ +{ + "name": "com.unity.mathematics", + "displayName": "Mathematics", + "version": "1.1.0", + "unity": "2018.3", + "description": "Unity's C# SIMD math library providing vector types and math functions with a shader like syntax.", + "keywords": [ + "unity" + ], + "dependencies": {}, + "repository": { + "type": "git", + "url": "git@github.com:Unity-Technologies/Unity.Mathematics.git", + "revision": "0a3dfafaf606098ea681de4c4be60f3aac63b773" + } +} diff --git a/Library/PackageCache/com.unity.mathematics@1.1.0/package.json.meta b/Library/PackageCache/com.unity.mathematics@1.1.0/package.json.meta new file mode 100644 index 0000000..42235a2 --- /dev/null +++ b/Library/PackageCache/com.unity.mathematics@1.1.0/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d34d0af25c21141a98c0cf3c0066444f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/CHANGELOG.md b/Library/PackageCache/com.unity.test-framework@1.1.18/CHANGELOG.md new file mode 100644 index 0000000..7d71dbe --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/CHANGELOG.md @@ -0,0 +1,153 @@ +# Changelog +## [1.1.18] - 2020-10-07 +- Fixed issue of timeout during UnitySetUp which wasn't detected and allowed the test to pass instead of failing (case DSTR-21) + +## [1.1.17] - 2020-10-05 +- Fixed an issue where the WaitForDomainReload yield instruction would sometimes let the test continue for one frame before the domain reload. +- Added support for negation in filters using !. E.g. !CategoryToExclude. +- Fixed an issue where if the first test enters PlayMode from UnitySetup then the test body will not run on consecutive runs (case 1260901). +- Clear Results button clears the test results in the GUI (DSTR-16) +- Improved UI in Test Runner window, added new options: + - Run Selected Tests in player + - Build/Export project with all tests in player + - Build/Export project with selected tests in player +- Fixed issue on loading EditMode or Playmode test tree in the wrong tab when switching between tabs when TestRunner is loading (DS-865) + +## [1.1.16] - 2020-07-09 +- Follow up on fix when UTF picks up on outdated compilation errors + +## [1.1.15] - 2020-07-02 +- Fixed an issue where an exception is thrown on getting the enumerator of a UnityTest would result in stopping the test run instead of failing it (case 1212000). +- Including a trailing semi-colon in a testName filter no longer results in all tests being run (case 1171200). +- Fixed and issue when Unity Test Framework exits editor on an outdated script compilation error (during api updates) + +## [1.1.14] - 2020-04-03 +- Added the 'assemblyNames' command line argument for filtering on the assembly level. +- The dll and project level of the tree view should now correctly show the results when running tests in a player (case 1197026). +- Optimize usage of player connection when transfering test results (case 1229200). +- Ignore internal test framework tests assertions (case 1206961). + +## [1.1.13] - 2020-03-16 +- Fixed an issue where a combination of Entering / Exiting playmode and recompiling scripts would result in the test run repeating (case 1213958). +- Fixed a regression from 1.1.12 where prefabs left in the scene would be cleaned up to aggressively. +- Fixed Test execution timed out. No activity received from the player in 600 seconds error when player is not supposed to start (case 1225147) + +## [1.1.12] - 2020-03-02 +- Now 'Open error line' for a failed UTF test does not throw exceptions for corrupted testable pdb in Editor release mode (case 1118259) +- Fixed an issue where running a test fixture would also run other fixtures with the same full name (namespace plus classname) in other assemblies (case 1197385). +- Running tests with the same full name, with a domain reload inbetween, will no longer fail to initialize the fixture of the second class (case 1205240). +- Running a playmode tests with "Maximize on Play" will now correctly show the result of the tests in the test runner window (case 1014908). +- Fixed an issue where leaving a game object in a scene with a DontSaveInEditor hideFlags would result in an error on cleanup (case 1136883). +- Now ITestPlayerBuildModifier.ModifyOptions is called as expected when running tests on a device (case 1213845) + +## [1.1.11] - 2020-01-16 +- Fixed test runner dlls got included into player build (case 1211624) +- Passing a non-full-path of XML file for -testResults in Unity Batchmode issue resolved, now passing "result.xml" creates the result file in the project file directory (case 959078) +- Respect Script Debugging build setting when running tests + +## [1.1.10] - 2019-12-19 +- Introduced PostSuccessfulLaunchAction callback +- Fixed an issue where canceling a UnityTest while it was running would incorrectly mark it as passed instead of canceled. +- Added command line argument for running tests synchronously. +- The test search bar now handles null values correctly. +- The test output pane now retains its size on domain reloads. + +## [1.1.9] - 2019-12-12 +- Rolled back refactoring to the test run system, as it caused issues in some corner cases. + +## [1.1.8] - 2019-11-15 +- Ensured that a resumed test run is continued instantly. + +## [1.1.7] - 2019-11-14 +- Fixed an issue with test runs after domain reload. + +## [1.1.6] - 2019-11-12 +- Building a player for test will no longer look in unrelated assemblies for relevant attributes. + +## [1.1.5] - 2019-10-23 +- Fixed a regression to synchronous runs introduced in 1.1.4. + +## [1.1.4] - 2019-10-15 +- Running tests in batch mode now correctly returns error code 3 (RunError) when a timeout or a build error occurs. +- Fixed an issue where a test run in a player would time out, if the player takes longer than 10 minutes to run. +- Added command line argument and api setting for specifying custom heartbeat timeout for running on players. + +## [1.1.3] - 2019-09-23 +- Fixed a regression where tests in a player would report a timeout after a test run is finished. +- Made it possible for the ui to change its test items when the test tree changes without script compilation. +- Added synchronous runs as an option to the TestRunnerApi. + +## [1.1.2] - 2019-09-11 +- Fixed an issue where Run Selected would run all tests in the category, if a category filter was selected, regardless of what tests were selected. +- Unsupported attributes used in UnityTests now give an explicit error. +- Added support for the Repeat and Retry attributes in UnityTests (case 1131940). +- Tests with a explicit timeout higher than 10 minutes, no longer times out after running longer than 10 minutes when running from command line (case 1125991). +- Fixed a performance regression in the test runner api result reporting, introduced in 2018.3 (case 1109865). +- Fixed an issue where parameterized test fixtures would not run if selected in the test tree (case 1092244). +- Pressing Clear Results now also correctly clears the counters on the test list (case 1181763). +- Prebuild setup now handles errors logged with Debug.LogError and stops the run if any is logged (case 1115240). It now also supports LogAssert.Expect. + +## [1.1.1] - 2019-08-07 +- Tests retrieved as a test list with the test runner api incorrectly showed both mode as their TestMode. +- Fixed a compatibility issue with running tests from rider. + +## [1.1.0] - 2019-07-30 +- Introduced the TestRunnerApi for running tests programmatically from elsewhere inside the Editor. +- Introduced yield instructions for recompiling scripts and awaiting a domain reload in Edit Mode tests. +- Added a button to the Test Runner UI for clearing the results. + +## [1.0.18] - 2019-07-15 +- Included new full documentation of the test framework. + +## [1.0.17] - 2019-07-11 +- Fixed an issue where the Test Runner window wouldn’t frame selected items after search filter is cleared. +- Fixed a regression where playmode test application on the IOS platform would not quit after the tests are done. + +## [1.0.16] - 2019-06-20 +- Fixed an issue where the Test Runner window popped out if it was docked, or if something else was docked next to it, when re-opened (case 1158961) +- Fixed a regression where the running standalone playmode tests from the ui would result in an error. + +## [1.0.15] - 2019-06-18 +- Added new `[TestMustExpectAllLogs]` attribute, which automatically does `LogAssert.NoUnexpectedReceived()` at the end of affected tests. See docs for this attribute for more info on usage. +- Fixed a regression where no tests would be run if multiple filters are specified. E.g. selecting both a whole assembly and an individual test in the ui. +- Fixed an issue where performing `Run Selected` on a selected assembly would run all assemblies. +- Introduced the capability to do a split build and run, when running playmode tests on standalone devices. +- Fixed an error in ConditionalIgnore, if the condition were not set. + +## [1.0.14] - 2019-05-27 +- Fixed issue preventing scene creation in IPrebuildSetup.Setup callback when running standalone playmode tests. +- Fixed an issue where test assemblies would sometimes not be ordered alphabetically. +- Added module references to the package for the required modules: imgui and jsonserialize. +- Added a ConditionalIgnore attribute to help ignoring tests only under specific conditions. +- Fixed a typo in the player test window (case 1148671). + +## [1.0.13] - 2019-05-07 +- Fixed a regression where results from the player would no longer update correctly in the UI (case 1151147). + +## [1.0.12] - 2019-04-16 +- Added specific unity release to the package information. + +## [1.0.11] - 2019-04-10 +- Fixed a regression from 1.0.10 where test-started events were triggered multiple times after a domain reload. + +## [1.0.10] - 2019-04-08 +- Fixed an issue where test-started events would not be fired correctly after a test performing a domain reload (case 1141530). +- The UI should correctly run tests inside a nested class, when that class is selected. +- All actions should now correctly display a prefix when reporting test result. E.g. "TearDown :". +- Errors logged with Debug.LogError in TearDowns now append the error, rather than overwriting the existing result (case 1114306). +- Incorrect implementations of IWrapTestMethod and IWrapSetUpTearDown now gives a meaningful error. +- Fixed a regression where the Test Framework would run TearDown in a base class before the inheriting class (case 1142553). +- Fixed a regression introduced in 1.0.9 where tests with the Explicit attribute could no longer be executed. + +## [1.0.9] - 2019-03-27 +- Fixed an issue where a corrupt instance of the test runner window would block for a new being opened. +- Added the required modules to the list of package requirements. +- Fixed an issue where errors would happen if the test filter ui was clicked before the ui is done loading. +- Fix selecting items with duplicate names in test hierarchy of Test Runner window (case 987587). +- Fixed RecompileScripts instruction which we use in tests (case 1128994). +- Fixed an issue where using multiple filters on tests would sometimes give an incorrect result. + +## [1.0.7] - 2019-03-12 +### This is the first release of *Unity Package com.unity.test-framework*. + +- Migrated the test-framework from the current extension in unity. diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/CHANGELOG.md.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/CHANGELOG.md.meta new file mode 100644 index 0000000..4fca79e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d691174143fd3774ba63d7c493633b99 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/CONTRIBUTING.md b/Library/PackageCache/com.unity.test-framework@1.1.18/CONTRIBUTING.md new file mode 100644 index 0000000..9f299b1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/CONTRIBUTING.md @@ -0,0 +1,9 @@ +# Contributing + +## If you are interested in contributing, here are some ground rules: +* ... Define guidelines & rules for what contributors need to know to successfully make Pull requests against your repo ... + +## All contributions are subject to the [Unity Contribution Agreement(UCA)](https://unity3d.com/legal/licenses/Unity_Contribution_Agreement) +By making a pull request, you are confirming agreement to the terms and conditions of the UCA, including that your Contributions are your original creation and that you have complete right and authority to make your Contributions. + +## Once you have a change ready following these ground rules. Simply make a pull request diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/CONTRIBUTING.md.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/CONTRIBUTING.md.meta new file mode 100644 index 0000000..39e850a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/CONTRIBUTING.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 57d2ac5c7d5786e499d4794973fe0d4e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/TableOfContents.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/TableOfContents.md new file mode 100644 index 0000000..3155c1f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/TableOfContents.md @@ -0,0 +1,66 @@ +* [Unity Test Framework overview](./index.md) +* [Edit Mode vs. Play Mode tests](./edit-mode-vs-play-mode-tests.md) +* [Getting started with UTF](./getting-started.md) + * [How to create a new test assembly](./workflow-create-test-assembly.md) + * [How to create a test](./workflow-create-test.md) + * [How to run a test](./workflow-run-test.md) + * [How to create a Play Mode test](./workflow-create-playmode-test.md) + * [How to run a Play Mode test as standalone](./workflow-run-playmode-test-standalone.md) +* [Resources](./resources.md) +* [Extending UTF](./extending.md) + * [How to split the build and run process for standalone Play Mode tests](./reference-attribute-testplayerbuildmodifier.md#split-build-and-run-for-player-mode-tests) + * [How to run tests programmatically](./extension-run-tests.md) + * [How to get test results](./extension-get-test-results.md) + * [How to retrieve the list of tests](./extension-retrieve-test-list.md) +* [Reference](./manual.md#reference) + * [Running tests from the command-line](./reference-command-line.md) + * [UnityTest attribute](./reference-attribute-unitytest.md) + * [Setup and cleanup at build time](./reference-setup-and-cleanup.md) + * [IPrebuildSetup](./reference-setup-and-cleanup.md#iprebuildsetup) + * [IPostBuildCleanup](./reference-setup-and-cleanup.md#ipostbuildcleanup) + * [Actions outside of tests](./reference-actions-outside-tests.md) + * [Action execution order](./reference-actions-outside-tests.md#action-execution-order) + * [UnitySetUp and UnityTearDown](./reference-actions-outside-tests.md#unitysetup-and-unityteardown) + * [OuterUnityTestAction](./reference-actions-outside-tests.md#outerunitytestaction) + * [Domain Reloads](./reference-actions-outside-tests.md#domain-reloads) + * [Custom attributes](./reference-custom-attributes.md) + * [ConditionalIgnore attribute](./reference-attribute-conditionalignore.md) + * [PostBuildCleanup attribute](./reference-setup-and-cleanup.md#prebuildsetup-and-postbuildcleanup) + * [PrebuildSetup attribute](./reference-setup-and-cleanup.md#prebuildsetup-and-postbuildcleanup) + * [TestMustExpectAllLogs attribute](./reference-attribute-testmustexpectalllogs.md) + * [TestPlayerBuildModifier attribute](./reference-attribute-testplayerbuildmodifier.md) + * [TestRunCallback attribute](./reference-attribute-testruncallback.md) + * [UnityPlatform attribute](./reference-attribute-unityplatform.md) + * [UnitySetUp attribute](./reference-actions-outside-tests.md#unitysetup-and-unityteardown) + * [UnityTearDown attribute](./reference-actions-outside-tests.md#unitysetup-and-unityteardown) + * [UnityTest attribute](./reference-attribute-unitytest.md) + * [Custom equality comparers](./reference-custom-equality-comparers.md) + * [ColorEqualityComparer](./reference-comparer-color.md) + * [FloatEqualityComparer](./reference-comparer-float.md) + * [QuaternionEqualityComparer](./reference-comparer-quaternion.md) + * [Vector2EqualityComparer](./reference-comparer-vector2.md) + * [Vector3EqualityComparer](./reference-comparer-vector3.md) + * [Vector4EqualityComparer](./reference-comparer-vector4.md) + * [Custom equality comparers with equals operator](./reference-comparer-equals.md) + * [Test Utils](./reference-test-utils.md) + * [Custom yield instructions](./reference-custom-yield-instructions.md) + * [IEditModeTestYieldInstruction](./reference-custom-yield-instructions.md#IEditModeTestYieldInstruction) + * [EnterPlayMode](./reference-custom-yield-instructions.md#enterplaymode) + * [ExitPlayMode](./reference-custom-yield-instructions.md#exitplaymode) + * [RecompileScripts](./reference-recompile-scripts.md) + * [WaitForDomainReload](./reference-wait-for-domain-reload.md) + * [Custom assertion](./reference-custom-assertion.md) + * [LogAssert](./reference-custom-assertion.md#logassert) + * [Custom constraints](./reference-custom-constraints.md) + * [Is](./reference-custom-constraints.md#is) + * [Parameterized tests](./reference-tests-parameterized.md) + * [MonoBehaviour tests](./reference-tests-monobehaviour.md) + * [MonoBehaviourTest<T>](./reference-tests-monobehaviour.md#monobehaviourtestt) + * [IMonoBehaviourTest](./reference-tests-monobehaviour.md#imonobehaviourtest) + * [TestRunnerApi](./reference-test-runner-api.md) + * [ExecutionSettings](./reference-execution-settings.md) + * [Filter](./reference-filter.md) + * [ITestRunSettings](./reference-itest-run-settings.md) + * [ICallbacks](./reference-icallbacks.md) + * [IErrorCallbacks](./reference-ierror-callbacks.md) + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/edit-mode-vs-play-mode-tests.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/edit-mode-vs-play-mode-tests.md new file mode 100644 index 0000000..5459639 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/edit-mode-vs-play-mode-tests.md @@ -0,0 +1,53 @@ +# Edit Mode vs. Play Mode tests + +Let’s clarify a bit what Play Mode and Edit Mode test means from the Unity Test Framework perspective: + +## Edit Mode tests + +**Edit Mode** tests (also known as Editor tests) are only run in the Unity Editor and have access to the Editor code in addition to the game code. + +With Edit Mode tests it is possible to test any of your [Editor extensions](https://docs.unity3d.com/Manual/ExtendingTheEditor.html) using the [UnityTest](./reference-attribute-unitytest.md) attribute. For Edit Mode tests, your test code runs in the [EditorApplication.update](https://docs.unity3d.com/ScriptReference/EditorApplication-update.html) callback loop. + +> **Note**: You can also control entering and exiting Play Mode from your Edit Mode test. This allow your test to make changes before entering Play Mode. + +Edit Mode tests should meet one of the following conditions: + +* They should have an [assembly definition](./workflow-create-test-assembly.md) with reference to *nunit.framework.dll* and has only the Editor as a target platform: + +```assembly + "includePlatforms": [ + "Editor" + ], +``` + +* Legacy condition: put tests in the project’s [Editor](https://docs.unity3d.com/Manual/SpecialFolders.html) folder. + +## Play Mode tests + +You can run **Play Mode** tests as a [standalone in a Player](./workflow-run-playmode-test-standalone.md) or inside the Editor. Play Mode tests allow you to exercise your game code, as the tests run as [coroutines](https://docs.unity3d.com/ScriptReference/Coroutine.html) if marked with the `UnityTest` attribute. + +Play Mode tests should correspond to the following conditions: + +* Have an [assembly definition](./workflow-create-test-assembly.md) with reference to *nunit.framework.dll*. +* Have the test scripts located in a folder with the .asmdef file. +* The test assembly should reference an assembly within the code that you need to test. + +```assembly + "references": [ + "NewAssembly" + ], + "optionalUnityReferences": [ + "TestAssemblies" + ], + "includePlatforms": [], +``` + +## Recommendations + +### Attributes + +Use the [NUnit](http://www.nunit.org/) `Test` attribute instead of the `UnityTest` attribute, unless you need to [yield special instructions](./reference-custom-yield-instructions.md), in Edit Mode, or if you need to skip a frame or wait for a certain amount of time in Play Mode. + +### References + +It is possible for your Test Assemblies to reference the test tools in `UnityEngine.TestRunner` and `UnityEditor.TestRunner`. The latter is only available in Edit Mode. You can specify these references in the `Assembly Definition References` on the Assembly Definition. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extending.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extending.md new file mode 100644 index 0000000..045c94a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extending.md @@ -0,0 +1,10 @@ +# Extending Unity Test Framework +It is possible to extend the Unity Test Framework (UTF) in many ways, for custom workflows for your projects and for other packages to build on top of UTF. + +These extensions are a supplement to the ones already offered by [NUnit](https://github.com/nunit/docs/wiki/Framework-Extensibility). + +Some workflows for extending UTF include: +* [How to split the build and run process for standalone Play Mode tests](./reference-attribute-testplayerbuildmodifier.md#split-build-and-run-for-player-mode-tests) +* [How to run tests programmatically](./extension-run-tests.md) +* [How to get test results](./extension-get-test-results.md) +* [How to retrieve the list of tests](./extension-retrieve-test-list.md)  \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extension-get-test-results.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extension-get-test-results.md new file mode 100644 index 0000000..8b71d7e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extension-get-test-results.md @@ -0,0 +1,45 @@ +# How to get test results +You can receive callbacks when the active test run, or individual tests, starts and finishes. You can register callbacks by invoking `RegisterCallbacks` on the [TestRunnerApi](./reference-test-runner-api.md) with an instance of a class that implements [ICallbacks](./reference-icallbacks.md). There are four `ICallbacks` methods for the start and finish of both the whole run and each level of the test tree. + +## Example +An example of how listeners can be set up: + +> **Note**: Listeners receive callbacks from all test runs, regardless of the registered `TestRunnerApi` for that instance. + +``` C# +public void SetupListeners() +{ + var api = ScriptableObject.CreateInstance(); + api.RegisterCallbacks(new MyCallbacks()); +} + +private class MyCallbacks : ICallbacks +{ + public void RunStarted(ITestAdaptor testsToRun) + { + + } + + public void RunFinished(ITestResultAdaptor result) + { + + } + + public void TestStarted(ITestAdaptor test) + { + + } + + public void TestFinished(ITestResultAdaptor result) + { + if (!result.HasChildren && result.ResultState != "Success") + { + Debug.Log(string.Format("Test {0} {1}", result.Test.Name, result.ResultState)); + } + } +} +``` + +> **Note**: The registered callbacks are not persisted on domain reloads. So it is necessary to re-register the callback after a domain reloads, usually with [InitializeOnLoad](https://docs.unity3d.com/Manual/RunningEditorCodeOnLaunch.html). + +It is possible to provide a `priority` as an integer as the second argument when registering a callback. This influences the invocation order of different callbacks. The default value is zero. It is also possible to provide `RegisterCallbacks` with a class instance that implements [IErrorCallbacks](./reference-ierror-callbacks.md) that is an extended version of `ICallbacks`. `IErrorCallbacks` also has a callback method for `OnError` that invokes if the run fails to start, for example, due to compilation errors or if an [IPrebuildSetup](./reference-setup-and-cleanup.md) throws an exception. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extension-retrieve-test-list.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extension-retrieve-test-list.md new file mode 100644 index 0000000..dedc7fa --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extension-retrieve-test-list.md @@ -0,0 +1,13 @@ +# How to retrieve the list of tests +It is possible to use the [TestRunnerApi](./reference-test-runner-api.md) to retrieve the test tree for a given test mode (**Edit Mode** or **Play Mode**). You can retrieve the test tree by invoking `RetrieveTestList` with the desired `TestMode` and a callback action, with an [ITestAdaptor](./reference-itest-adaptor.md) representing the test tree. + +## Example +The following example retrieves the test tree for Edit Mode tests and prints the number of total test cases: +``` C# +var api = ScriptableObject.CreateInstance(); +api.RetrieveTestList(TestMode.EditMode, (testRoot) => +{ + Debug.Log(string.Format("Tree contains {0} tests.", testRoot.TestCaseCount)); +}); +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extension-run-tests.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extension-run-tests.md new file mode 100644 index 0000000..60ff3dc --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/extension-run-tests.md @@ -0,0 +1,72 @@ +# How to run tests programmatically +## Filters + +Run tests by calling `Execute` on the [TestRunnerApi](./reference-test-runner-api.md), and provide some execution settings that consists of a [Filter](./reference-filter.md). The `Filter` specifies what tests to run. + +### Example + +The following is an example of how to run all **Play Mode** tests in a project: + +``` C# +var testRunnerApi = ScriptableObject.CreateInstance(); +var filter = new Filter() +{ + testMode = TestMode.PlayMode +}; +testRunnerApi.Execute(new ExecutionSettings(filter)); +``` +## Multiple filter values + +It is possible to specify a more specific filter by filling out the fields on the `Filter` class in more detail. + +Many of the fields allow for multiple values. The runner tries to match tests against at least one of the values provided and then runs any tests that match. + +### Example + +In this example, the API runs tests with full names that fit either of the two names provided: + +``` C# +var api = ScriptableObject.CreateInstance(); +api.Execute(new ExecutionSettings(new Filter() +{ + testNames = new[] {"MyTestClass.NameOfMyTest", "SpecificTestFixture.NameOfAnotherTest"} +})); +``` +## Multiple filter fields + +If using multiple different fields on the filter, then it matches against tests that fulfill all the different fields. + +### Example + +In this example, it runs any test that fits either of the two test names, and that also belongs to a test assembly that fits the given name. + +``` C# +var api = ScriptableObject.CreateInstance(); +api.Execute(new ExecutionSettings(new Filter() +{ + assemblyNames = new [] {"MyTestAssembly"}, + testNames = new [] {"MyTestClass.NameOfMyTest", "MyTestClass.AnotherNameOfATest"} +})); +``` +## Multiple constructor filters + +The execution settings take one or more filters in its constructor. If there is no filter provided, then it runs all **Edit Mode** tests by default. If there are multiple filters provided, then a test runs if it matches any of the filters. + +### Example + +In this example, it runs any tests that are either in the assembly named `MyTestAssembly` or if the full name of the test matches either of the two provided test names: + +``` C# +var api = ScriptableObject.CreateInstance(); +api.Execute(new ExecutionSettings( + new Filter() + { + assemblyNames = new[] {"MyTestAssembly"}, + }, + new Filter() + { + testNames = new[] {"MyTestClass.NameOfMyTest", "MyTestClass.AnotherNameOfATest"} + } +)); +``` +> **Note**: Specifying different test modes or platforms in each `Filter` is not currently supported. The test mode and platform is from the first `Filter` only and defaults to Edit Mode, if not supplied. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/getting-started.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/getting-started.md new file mode 100644 index 0000000..a8051f2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/getting-started.md @@ -0,0 +1,18 @@ +# Getting started with Unity Test Framework + +To access the Unity Test Framework (UTF) in the Unity Editor, open the **Test Runner** window; go to **Window** > **General** > **Test Runner**. + +![Unity Test Runner window](./images/test-runner-window.png) + +To get started with UTF, follow the workflows below: + +* [How to create a new test assembly](./workflow-create-test-assembly.md) +* [How to create a test](./workflow-create-test.md) +* [How to run a test](./workflow-run-test.md) +* [How to create a Play Mode test](./workflow-create-playmode-test.md) +* [How to run a Play Mode test as standalone](./workflow-run-playmode-test-standalone.md) + + + +For further information, see the [resources](./resources.md) and [reference](./manual.md#reference) sections. + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-create-test-script.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-create-test-script.png new file mode 100644 index 0000000..fc9af55 Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-create-test-script.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-run-test.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-run-test.png new file mode 100644 index 0000000..df1b53c Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-run-test.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-run-tests.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-run-tests.png new file mode 100644 index 0000000..c890d81 Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-run-tests.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-tab.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-tab.png new file mode 100644 index 0000000..e1b00d7 Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/editmode-tab.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/import-settings.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/import-settings.png new file mode 100644 index 0000000..6a34e92 Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/import-settings.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/new-test-script.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/new-test-script.png new file mode 100644 index 0000000..21de081 Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/new-test-script.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-enable-all.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-enable-all.png new file mode 100644 index 0000000..961991a Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-enable-all.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-results-standalone.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-results-standalone.png new file mode 100644 index 0000000..de40c03 Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-results-standalone.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-run-standalone.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-run-standalone.png new file mode 100644 index 0000000..ded5792 Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-run-standalone.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-tab.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-tab.png new file mode 100644 index 0000000..9d315cb Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/playmode-tab.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/test-runner-window.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/test-runner-window.png new file mode 100644 index 0000000..f3023fb Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/test-runner-window.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/test-templates.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/test-templates.png new file mode 100644 index 0000000..753a155 Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/test-templates.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/tests-folder-assembly.png b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/tests-folder-assembly.png new file mode 100644 index 0000000..4e63751 Binary files /dev/null and b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/images/tests-folder-assembly.png differ diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/index.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/index.md new file mode 100644 index 0000000..604a916 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/index.md @@ -0,0 +1,54 @@ +# About Unity Test Framework + +The Unity Test Framework (UTF) enables Unity users to test their code in both **Edit Mode** and **Play Mode**, and also on target platforms such as [Standalone](https://docs.unity3d.com/Manual/Standalone.html), Android, iOS, etc. + +This package provides a standard test framework for users of Unity and developers at Unity so that both benefit from the same features and can write tests the same way. + +UTF uses a Unity integration of NUnit library, which is an open-source unit testing library for .Net languages. For more information about NUnit, see the [official NUnit website](http://www.nunit.org/) and the [NUnit documentation on GitHub](https://github.com/nunit/docs/wiki/NUnit-Documentation). + +> **Note**: UTF is not a new concept or toolset; it is an adjusted and more descriptive naming for the toolset otherwise known as Unity Test Runner, which is now available as this package. + +# Installing Unity Test Framework + +To install this package, follow the instructions in the [Package Manager documentation](https://docs.unity3d.com/Packages/com.unity.package-manager-ui@latest/index.html). + +> **Note**: Search for the Test Framework package. In Unity 2019.2 and higher, you may need to enable the package before use. + +# Using Unity Test Framework + +To learn how to use the Unity Test Framework package in your project, read the [manual](./manual.md). + +# Technical details + +## Requirements + +This version of the Unity Test Framework is compatible with the following versions of the Unity Editor: + +* 2019.2 and later. + +## Known limitations + +Unity Test Framework version 1.0.18 includes the following known limitations: + +* The `UnityTest` attribute does not support WebGL and WSA platforms. +* The `UnityTest` attribute does not support [Parameterized tests](https://github.com/nunit/docs/wiki/Parameterized-Tests) (except for `ValueSource`). +* The `UnityTest` attribute does not support the `NUnit` [Repeat](https://github.com/nunit/docs/wiki/Repeat-Attribute) attribute. +* Nested test fixture cannot run from the Editor UI. +* When using the `NUnit` [Retry](https://github.com/nunit/docs/wiki/Retry-Attribute) attribute in PlayMode tests, it throws `InvalidCastException`. + +## Package contents + +The following table indicates the root folders in the package where you can find useful resources: + +| Location | Description | +| :----------------------------------------- | :------------------------------------------ | +| _/com.unity.test-framework/Documentation~_ | Contains the documentation for the package. | + +## Document revision history + +| Date | Reason | +| :----------- | :---------------------------------------------------- | +| August 23, 2019 | Applied feedback to the documentation | +| July 25, 2019 | Documentation updated to include features in version 1.1.0 | +| July 11, 2019 | Documentation updated. Matches package version 1.0.18 | +| May 27, 2019 | Documentation created. Matches package version 1.0.14 | diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/manual.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/manual.md new file mode 100644 index 0000000..e50f7ad --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/manual.md @@ -0,0 +1,80 @@ +# Unity Test Framework manual + +This is the manual for the Unity Test Framework (UTF): + +## **Introduction** + +* [Unity Test Framework overview](./index.md) +* [Edit Mode vs. Play Mode tests](edit-mode-vs-play-mode-tests.md) + +## **Getting started** + +* [Getting started with UTF](./getting-started.md) + * Workflows: + * [How to create a new test assembly](./workflow-create-test-assembly.md) + * [How to create a test](./workflow-create-test.md) + * [How to run a test](workflow-run-test.md) + * [How to create a Play Mode test](./workflow-create-playmode-test.md) + * [How to run a Play Mode test in player](./workflow-run-playmode-test-standalone.md) +* [Resources](./resources.md) + +## Extending UTF + +* [Extending UTF](./extending.md) + * Workflows: + * [How to split the build and run process for standalone Play Mode tests](./reference-attribute-testplayerbuildmodifier.md#split-build-and-run) + * [How to run tests programmatically](./extension-run-tests.md) + * [How to get test results](./extension-get-test-results.md) + * [How to retrieve the list of tests](./extension-retrieve-test-list.md) + +## Reference + +* [Running tests from the command-line](./reference-command-line.md) +* [UnityTest attribute](./reference-attribute-unitytest.md) +* [Setup and cleanup at build time](./reference-setup-and-cleanup.md) + * [IPrebuildSetup](./reference-setup-and-cleanup.md#iprebuildsetup) + * [IPostBuildCleanup](./reference-setup-and-cleanup.md#ipostbuildcleanup) +* [Actions outside of tests](./reference-actions-outside-tests.md) + * [Action execution order](./reference-actions-outside-tests.md#action-execution-order) + * [UnitySetUp and UnityTearDown](./reference-actions-outside-tests.md#unitysetup-and-unityteardown) + * [OuterUnityTestAction](./reference-actions-outside-tests.md#outerunitytestaction) + * [Domain Reloads](./reference-actions-outside-tests.md#domain-reloads) +* [Custom attributes](./reference-custom-attributes.md) + * [ConditionalIgnore attribute](./reference-attribute-conditionalignore.md) + * [PostBuildCleanup attribute](./reference-setup-and-cleanup.md#prebuildsetup-and-postbuildcleanup) + * [PrebuildSetup attribute](./reference-setup-and-cleanup.md#prebuildsetup-and-postbuildcleanup) + * [TestMustExpectAllLogs attribute](./reference-attribute-testmustexpectalllogs.md) + * [TestPlayerBuildModifier attribute](./reference-attribute-testplayerbuildmodifier.md) + * [TestRunCallback attribute](./reference-attribute-testruncallback.md) + * [UnityPlatform attribute](./reference-attribute-unityplatform.md) + * [UnitySetUp attribute](./reference-actions-outside-tests.md#unitysetup-and-unityteardown) + * [UnityTearDown attribute](./reference-actions-outside-tests.md#unitysetup-and-unityteardown) + * [UnityTest attribute](./reference-attribute-unitytest.md) +* [Custom equality comparers](./reference-custom-equality-comparers.md) + * [ColorEqualityComparer](./reference-comparer-color.md) + * [FloatEqualityComparer](./reference-comparer-float.md) + * [QuaternionEqualityComparer](./reference-comparer-quaternion.md) + * [Vector2EqualityComparer](./reference-comparer-vector2.md) + * [Vector3EqualityComparer](./reference-comparer-vector3.md) + * [Vector4EqualityComparer](./reference-comparer-vector4.md) + * [Custom equality comparers with equals operator](./reference-comparer-equals.md) + * [Test Utils](./reference-test-utils.md) +* [Custom yield instructions](./reference-custom-yield-instructions.md) + * [IEditModeTestYieldInstruction](./reference-custom-yield-instructions.md#IEditModeTestYieldInstruction) + * [EnterPlayMode](./reference-custom-yield-instructions.md#enterplaymode) + * [ExitPlayMode](./reference-custom-yield-instructions.md#exitplaymode) +* [Custom assertion](./reference-custom-assertion.md) + * [LogAssert](./reference-custom-assertion.md#logassert) +* [Custom constraints](./reference-custom-constraints.md) + * [Is](./reference-custom-constraints.md#is) +* [Parameterized tests](./reference-tests-parameterized.md) +* [MonoBehaviour tests](./reference-tests-monobehaviour.md) + * [MonoBehaviourTest](./reference-tests-monobehaviour.md#monobehaviourtestt) + * [IMonoBehaviourTest](./reference-tests-monobehaviour.md#imonobehaviourtest) + +* [TestRunnerApi](./reference-test-runner-api.md) + * [ExecutionSettings](./reference-execution-settings.md) + * [Filter](./reference-filter.md) + * [ITestRunSettings](./reference-itest-run-settings.md) + * [ICallbacks](./reference-icallbacks.md) + * [IErrorCallbacks](./reference-ierror-callbacks.md) \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-actions-outside-tests.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-actions-outside-tests.md new file mode 100644 index 0000000..0c8a437 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-actions-outside-tests.md @@ -0,0 +1,98 @@ +# Actions outside of tests + +When writing tests, it is possible to avoid duplication of code by using the [SetUp and TearDown](https://github.com/nunit/docs/wiki/SetUp-and-TearDown) methods built into [NUnit](http://www.nunit.org/). The Unity Test Framework has extended these methods with extra functionality, which can yield commands and skip frames, in the same way as [UnityTest](./reference-attribute-unitytest.md). + +## Action execution order + +The actions related to a test run in the following order: + +* Attributes implementing [IApplyToContext](https://github.com/nunit/docs/wiki/IApplyToContext-Interface) +* Any attribute implementing [OuterUnityTestAction](#outerunitytestaction) has its `BeforeTest` invoked +* Tests with [UnitySetUp](#unitysetup-and-unityteardown) methods in their test class. +* Attributes implementing [IWrapSetUpTearDown](https://github.com/nunit/docs/wiki/ICommandWrapper-Interface) +* Any [SetUp](https://github.com/nunit/docs/wiki/SetUp-and-TearDown) attributes +* [Action attributes](https://nunit.org/docs/2.6/actionAttributes.html) have their `BeforeTest` method invoked +* Attributes implementing of [IWrapTestMethod](https://github.com/nunit/docs/wiki/ICommandWrapper-Interface) +* **The test itself runs** +* [Action attributes](https://nunit.org/docs/2.6/actionAttributes.html) have their `AfterTest` method invoked +* Any method with the [TearDown](https://github.com/nunit/docs/wiki/SetUp-and-TearDown) attribute +* Tests with [UnityTearDown](#unitysetup-and-unityteardown) methods in their test class +* Any [OuterUnityTestAction](#outerunitytestaction) has its `AfterTest` invoked + +The list of actions is the same for both `Test` and `UnityTest`. + +## UnitySetUp and UnityTearDown + +The `UnitySetUp` and `UnityTearDown` attributes are identical to the standard `SetUp` and `TearDown` attributes, with the exception that they allow for [yielding instructions](reference-custom-yield-instructions.md). The `UnitySetUp` and `UnityTearDown` attributes expect a return type of [IEnumerator](https://docs.microsoft.com/en-us/dotnet/api/system.collections.ienumerator?view=netframework-4.8). + +### Example + +```c# +public class SetUpTearDownExample +{ + [UnitySetUp] + public IEnumerator SetUp() + { + yield return new EnterPlayMode(); + } + + [Test] + public void MyTest() + { + Debug.Log("This runs inside playmode"); + } + + [UnitySetUp] + public IEnumerator TearDown() + { + + yield return new ExitPlayMode(); + } +} +``` + + + +## OuterUnityTestAction + +`OuterUnityTestAction` is a wrapper outside of the tests, which allows for any tests with this attribute to run code before and after the tests. This method allows for yielding commands in the same way as `UnityTest`. The attribute must inherit the `NUnit` attribute and implement `IOuterUnityTestAction`. + +### Example + +```c# +using System.Collections; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using UnityEngine; +using UnityEngine.TestTools; + +public class MyTestClass +{ + [UnityTest, MyOuterActionAttribute] + public IEnumerator MyTestInsidePlaymode() + { + Assert.IsTrue(Application.isPlaying); + yield return null; + } +} + +public class MyOuterActionAttribute : NUnitAttribute, IOuterUnityTestAction +{ + public IEnumerator BeforeTest(ITest test) + { + yield return new EnterPlayMode(); + } + + public IEnumerator AfterTest(ITest test) + { + yield return new ExitPlayMode(); + } +} + +``` + + + +## Domain Reloads + +In **Edit Mode** tests it is possible to yield instructions that can result in a domain reload, such as entering or exiting **Play Mode** (see [Custom yield instructions](./reference-custom-yield-instructions.md)). When a domain reload happens, all non-Unity actions (such as `OneTimeSetup` and `Setup`) are rerun before the code, which initiated the domain reload, continues. Unity actions (such as `UnitySetup`) are not rerun. If the Unity action is the code that initiated the domain reload, then the rest of the code in the `UnitySetup` method runs after the domain reload. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-conditionalignore.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-conditionalignore.md new file mode 100644 index 0000000..c051e01 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-conditionalignore.md @@ -0,0 +1,39 @@ +# ConditionalIgnore attribute + +This attribute is an alternative to the standard `Ignore` attribute in [NUnit](http://www.nunit.org/). It allows for ignoring tests only under a specified condition. The condition evaluates during `OnLoad`, referenced by ID. + +## Example + +The following example shows a method to use the `ConditionalIgnore` attribute to ignore a test if the Unity Editor is running macOS: + +```C# +using UnityEditor; +using NUnit.Framework; +using UnityEngine.TestTools; + +[InitializeOnLoad] +public class OnLoad +{ + static OnLoad() + { + var editorIsOSX = false; + #if UNITY_EDITOR_OSX + editorIsOSX = true; + #endif + + ConditionalIgnoreAttribute.AddConditionalIgnoreMapping("IgnoreInMacEditor", editorIsOSX); + } +} + +public class MyTestClass +{ + [Test, ConditionalIgnore("IgnoreInMacEditor", "Ignored on Mac editor.")] + public void TestNeverRunningInMacEditor() + { + Assert.Pass(); + } +} + +``` + +> **Note**: You can only use `InitializeOnLoad` in **Edit Mode** tests. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-testmustexpectalllogs.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-testmustexpectalllogs.md new file mode 100644 index 0000000..f0c4665 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-testmustexpectalllogs.md @@ -0,0 +1,11 @@ +# TestMustExpectAllLogs attribute + +The presence of this attribute causes the **Test Runner** to expect every single log. By default, the Test Runner only fails on error logs, but `TestMustExpectAllLogs` fails on warnings and info level messages as well. It is the same as calling the method [LogAssert.NoUnexpectedReceived](./reference-custom-assertion.md#static-methods) at the bottom of every affected test. + +## Assembly-wide usage + +You can apply this attribute to test assemblies (that affects every test in the assembly), fixtures (affects every test in the fixture), or on individual test methods. It is also inherited from base fixtures. + +The `MustExpect` property (`true` by default) lets you enable or disable the higher level value. + +For example when migrating an assembly to this more strict checking method, you might attach `[assembly:TestMustExpectAllLogs]` to the assembly itself, but then whitelist failing fixtures and test methods with `[TestMustExpectAllLogs(MustExpect=false)]` until you have migrated them. This also means new tests in that assembly would have the more strict checking. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-testplayerbuildmodifier.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-testplayerbuildmodifier.md new file mode 100644 index 0000000..4ab7ccb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-testplayerbuildmodifier.md @@ -0,0 +1,105 @@ +# TestPlayerBuildModifier attribute + +You can use the `TestPlayerBuildModifier` attribute to accomplish a couple of different scenarios: + +## Modify the Player build options for Play Mode tests + +It is possible to change the [BuildPlayerOptions](https://docs.unity3d.com/ScriptReference/BuildPlayerOptions.html) for the test **Player**, to achieve custom behavior when running **Play Mode** tests. Modifying the build options allows for changing the target location of the build as well as changing [BuildOptions](https://docs.unity3d.com/ScriptReference/BuildOptions.html). + +To modify the `BuildPlayerOptions`, do the following: + +* Implement the `ITestPlayerBuildModifier` +* Reference the implementation type in a `TestPlayerBuildModifier` attribute on an assembly level. + +### Example + +```c# +using UnityEditor; +using UnityEditor.TestTools; + +[assembly:TestPlayerBuildModifier(typeof(BuildModifier))] +public class BuildModifier : ITestPlayerBuildModifier +{ + public BuildPlayerOptions ModifyOptions(BuildPlayerOptions playerOptions) + { + if (playerOptions.target == BuildTarget.iOS) + { + playerOptions.options |= BuildOptions.SymlinkLibraries; // Enable symlink libraries when running on iOS + } + + playerOptions.options |= BuildOptions.AllowDebugging; // Enable allow Debugging flag on the test Player. + return playerOptions; + } +} +``` + +> **Note:** When building the Player, it includes all `TestPlayerBuildModifier` attributes across all loaded assemblies, independent of the currently used test filter. As the implementation references the `UnityEditor` namespace, the code is typically implemented in an Editor only assembly, as the `UnityEditor` namespace is not available otherwise. + +## Split build and run + +It is possible to use the Unity Editor for building the Player with tests, without [running the tests](./workflow-run-playmode-test-standalone.md). This allows for running the Player on e.g. another machine. In this case, it is necessary to modify the Player to build and implement a custom handling of the test result. + +By using `TestPlayerBuildModifier`, you can alter the `BuildOptions` to not start the Player after the build as well as build the Player at a specific location. Combined with [PostBuildCleanup](./reference-setup-and-cleanup.md#prebuildsetup-and-postbuildcleanup), you can automatically exit the Editor on completion of the build. + +### Example + +```c# +using System; +using System.IO; +using System.Linq; +using Tests; +using UnityEditor; +using UnityEditor.TestTools; +using UnityEngine; +using UnityEngine.TestTools; + +[assembly:TestPlayerBuildModifier(typeof(HeadlessPlayModeSetup))] +[assembly:PostBuildCleanup(typeof(HeadlessPlayModeSetup))] + +namespace Tests +{ + public class HeadlessPlayModeSetup : ITestPlayerBuildModifier, IPostBuildCleanup + { + private static bool s_RunningPlayerTests; + public BuildPlayerOptions ModifyOptions(BuildPlayerOptions playerOptions) + { + // Do not launch the player after the build completes. + playerOptions.options &= ~BuildOptions.AutoRunPlayer; + + // Set the headlessBuildLocation to the output directory you desire. It does not need to be inside the project. + var headlessBuildLocation = Path.GetFullPath(Path.Combine(Application.dataPath, ".//..//PlayModeTestPlayer")); + var fileName = Path.GetFileName(playerOptions.locationPathName); + if (!string.IsNullOrEmpty(fileName)) + { + headlessBuildLocation = Path.Combine(headlessBuildLocation, fileName); + } + playerOptions.locationPathName = headlessBuildLocation; + + // Instruct the cleanup to exit the Editor if the run came from the command line. + // The variable is static because the cleanup is being invoked in a new instance of the class. + s_RunningPlayerTests = true; + return playerOptions; + } + + public void Cleanup() + { + if (s_RunningPlayerTests && IsRunningTestsFromCommandLine()) + { + // Exit the Editor on the next update, allowing for other PostBuildCleanup steps to run. + EditorApplication.update += () => { EditorApplication.Exit(0); }; + } + } + + private static bool IsRunningTestsFromCommandLine() + { + var commandLineArgs = Environment.GetCommandLineArgs(); + return commandLineArgs.Any(value => value == "-runTests"); + } + } +} +``` + +If the Editor is still running after the Play Mode tests have run, the Player tries to report the results back, using [PlayerConnection](https://docs.unity3d.com/ScriptReference/Networking.PlayerConnection.PlayerConnection.html), which has a reference to the IP address of the Editor machine, when built. + +To implement a custom way of reporting the results of the test run, let one of the assemblies in the Player include a [TestRunCallback](./reference-attribute-testruncallback.md). At `RunFinished`, it is possible to get the full test report as XML from the [NUnit](http://www.nunit.org/) test result by calling `result.ToXml(true)`. You can save the result and then save it on the device or send it to another machine as needed. + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-testruncallback.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-testruncallback.md new file mode 100644 index 0000000..dad865a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-testruncallback.md @@ -0,0 +1,46 @@ +# TestRunCallback attribute + +It is possible for the test framework to invoke callbacks as the current test run progresses. To do this, there is a `TestRunCallback` attribute which takes the type of `ITestRunCallback` implementation. You can invoke the callbacks with [NUnit](http://www.nunit.org/) `ITest` and `ITestResult` classes. + +At the `RunStarted` and `RunFinished` methods, the test and test results are for the whole test tree. These methods invoke at each node in the test tree; first with the whole test assembly, then with the test class, and last with the test method. + +From these callbacks, it is possible to read the partial or the full results, and it is furthermore possible to save the XML version of the result for further processing or continuous integration. + +## Example + +```C# +using NUnit.Framework.Interfaces; +using UnityEngine; +using UnityEngine.TestRunner; + +[assembly:TestRunCallback(typeof(MyTestRunCallback))] + +public class MyTestRunCallback : ITestRunCallback +{ + public void RunStarted(ITest testsToRun) + { + + } + + public void RunFinished(ITestResult testResults) + { + + } + + public void TestStarted(ITest test) + { + + } + + public void TestFinished(ITestResult result) + { + if (!result.Test.IsSuite) + { + Debug.Log($"Result of {result.Name}: {result.ResultState.Status}"); + } + } +} + +``` + +> **Note:** The `TestRunCallback` does not need any references to the `UnityEditor` namespace and is thus able to run in standalone Players, on the **Player** side. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-unityplatform.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-unityplatform.md new file mode 100644 index 0000000..931ab87 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-unityplatform.md @@ -0,0 +1,35 @@ +# UnityPlatform attribute + +Use this attribute to define a specific set of platforms you want or do not want your test(s) to run on. + +You can use this attribute on the test method, test class, or test assembly level. Use the supported [RuntimePlatform](https://docs.unity3d.com/ScriptReference/RuntimePlatform.html) enumeration values to specify the platforms. You can also specify which platforms to test by passing one or more `RuntimePlatform` values along with or without the include or exclude properties as parameters to the [Platform](https://github.com/nunit/docs/wiki/Platform-Attribute) attribute constructor. + +The test(s) skips if the current target platform is: + +- Not explicitly specified in the included platforms list +- In the excluded platforms list + +```c# +using UnityEngine; +using UnityEngine.TestTools; +using NUnit.Framework; + +[TestFixture] +public class TestClass +{ + [Test] + [UnityPlatform(RuntimePlatform.WindowsPlayer)] + public void TestMethod() + { + Assert.AreEqual(Application.platform, RuntimePlatform.WindowsPlayer); + } +} +``` + +## Properties + +| Syntax | Description | +| --------------------------- | ------------------------------------------------------------ | +| `RuntimePlatform[] exclude` | List the platforms you do not want to have your tests run on. | +| `RuntimePlatform[] include` | A subset of platforms you need to have your tests run on. | + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-unitytest.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-unitytest.md new file mode 100644 index 0000000..dd002b2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-attribute-unitytest.md @@ -0,0 +1,51 @@ +# UnityTest attribute + +`UnityTest` attribute is the main addition to the standard [NUnit](http://www.nunit.org/) library for the Unity Test Framework. This type of unit test allows you to skip a frame from within a test (so background tasks can finish) or give certain commands to the Unity **Editor**, such as performing a domain reload or entering **Play Mode** from an **Edit Mode** test. + +In Play Mode, the `UnityTest` attribute runs as a [coroutine](https://docs.unity3d.com/Manual/Coroutines.html). Whereas Edit Mode tests run in the [EditorApplication.update](https://docs.unity3d.com/ScriptReference/EditorApplication-update.html) callback loop. + +The `UnityTest` attribute is, in fact, an alternative to the `NUnit` [Test attribute](https://github.com/nunit/docs/wiki/Test-Attribute), which allows yielding instructions back to the framework. Once the instruction is complete, the test run continues. If you `yield return null`, you skip a frame. That might be necessary to ensure that some changes do happen on the next iteration of either the `EditorApplication.update` loop or the [game loop](https://docs.unity3d.com/Manual/ExecutionOrder.html). + +## Edit Mode example + +The most simple example of an Edit Mode test could be the one that yields `null` to skip the current frame and then continues to run: + +```C# +[UnityTest] +public IEnumerator EditorUtility_WhenExecuted_ReturnsSuccess() +{ + var utility = RunEditorUtilityInTheBackgroud(); + + while (utility.isRunning) + { + yield return null; + } + + Assert.IsTrue(utility.isSuccess); +} +``` + +## Play Mode example + +In Play Mode, a test runs as a coroutine attached to a [MonoBehaviour](https://docs.unity3d.com/ScriptReference/MonoBehaviour.html). So all the yield instructions available in coroutines, are also available in your test. + +From a Play Mode test you can use one of Unity’s [Yield Instructions](https://docs.unity3d.com/ScriptReference/YieldInstruction.html): + +- [WaitForFixedUpdate](https://docs.unity3d.com/ScriptReference/WaitForFixedUpdate.html): to ensure changes expected within the next cycle of physics calculations. +- [WaitForSeconds](https://docs.unity3d.com/ScriptReference/WaitForSeconds.html): if you want to pause your test coroutine for a fixed amount of time. Be careful about creating long-running tests. + +The simplest example is to yield to `WaitForFixedUpdate`: + +```c# +[UnityTest] +public IEnumerator GameObject_WithRigidBody_WillBeAffectedByPhysics() +{ + var go = new GameObject(); + go.AddComponent(); + var originalPosition = go.transform.position.y; + + yield return new WaitForFixedUpdate(); + + Assert.AreNotEqual(originalPosition, go.transform.position.y); +} +``` diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-command-line.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-command-line.md new file mode 100644 index 0000000..8a95061 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-command-line.md @@ -0,0 +1,120 @@ +# Running tests from the command line + +It’s pretty simple to run a test project from the command line. Here is an example in Windows: + +```bash +Unity.exe -runTests -batchmode -projectPath PATH_TO_YOUR_PROJECT -testResults C:\temp\results.xml -testPlatform PS4 +``` + +For more information, see [Command line arguments](https://docs.unity3d.com/Manual/CommandLineArguments.html). + +## Commands + +### batchmode + +Runs Unity in batch mode and ensures no pop-up windows appear to eliminate the need for any human intervention. + +### forgetProjectPath + +Don't save your current **Project** into the Unity launcher/hub history. + +### runTests + +Runs tests in the Project. + +### testCategory + +A semicolon-separated list of test categories to include in the run. If using both `testFilter` and `testCategory`, then tests only run that matches both. This argument supports negation using '!'. If using '!MyCategory' then no tests with the 'MyCategory' category will be included in the run. + +### testFilter + +A semicolon-separated list of test names to run, or a regular expression pattern to match tests by their full name. This argument supports negation using '!'. If using the test filter '!MyNamespace.Something.MyTest', then all tests except that test will be run. + +### testPlatform + +The platform you want to run tests on. Available platforms are **EditMode** and **PlayMode**. + +> **Note**: If unspecified, tests run in Edit Mode by default. + +Platform/Type convention is from the [BuildTarget](https://docs.unity3d.com/ScriptReference/BuildTarget.html) enum. Supported platforms are: + +* StandaloneWindows +* StandaloneWindows64 +* StandaloneLinux64 +* StandaloneOSX +* iOS +* Android +* PS4 +* XboxOne + +### assemblyNames + +A semicolon-separated list of test assemblies to include in the run. + +### testResults + +The path where Unity should save the result file. By default, Unity saves it in the Project’s root folder. + +### playerHeartbeatTimeout + +The time, in seconds, the editor should wait for heartbeats after starting a test run on a player. This defaults to 10 minutes. + +### runSynchronously + +If included, the test run will run tests synchronously, guaranteeing that all tests runs in one editor update call. Note that this is only supported for EditMode tests, and that tests which take multiple frames (i.e. `[UnityTest]` tests, or tests with `[UnitySetUp]` or `[UnityTearDown]` scaffolding) will be filtered out. + +### testSettingsFile + +Path to a *TestSettings.json* file that allows you to set up extra options for your test run. An example of the *TestSettings.json* file could look like this: + +```json +{ + "scriptingBackend":2, + "Architecture":null, + "apiProfile":0 +} +``` + +#### apiProfile + +The .Net compatibility level. Set to one of the following values: + +- 1 - .Net 2.0 +- 2 - .Net 2.0 Subset +- 3 - .Net 4.6 +- 5 - .Net micro profile (used by Mono scripting backend if **Stripping Level** is set to **Use micro mscorlib**) +- 6 - .Net Standard 2.0 + +#### appleEnableAutomaticSigning + +Sets option for automatic signing of Apple devices. + +#### appleDeveloperTeamID + +Sets the team ID for the apple developer account. + +#### architecture + +Target architecture for Android. Set to one of the following values: + +* None = 0 +* ARMv7 = 1 +* ARM64 = 2 +* X86 = 4 +* All = 4294967295 + +#### iOSManualProvisioningProfileType + +Set to one of the following values: + +* 0 - Automatic +* 1 - Development +* 2 - Distribution iOSManualProvisioningProfileID + +#### scriptingBackend + + Set to one of the following values: + +- Mono2x = 0 +- IL2CPP = 1 +- WinRT DotNET = 2 \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-color.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-color.md new file mode 100644 index 0000000..f4ae57e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-color.md @@ -0,0 +1,47 @@ +# ColorEqualityComparer + +Use this class to compare two `Color` objects. `ColorEqualityComparer.Instance` has default calculation error value set to 0.01f. To set a test specific error value instantiate a comparer instance using the [one argument constructor](#constructors). + +## Static properties + +| Syntax | Description | +| ---------- | ------------------------------------------------------------ | +| `Instance` | A singleton instance of the comparer with a default error value set to 0.01f. | + +## Constructors + +| Syntax | Description | +| ------------------------------------ | ------------------------------------------------------------ | +| `ColorEqualityComparer(float error)` | Creates an instance of the comparer with a custom error value. | + +## Public methods + +| Syntax | Description | +| -------------------------------------------- | ------------------------------------------------------------ | +| `bool Equals(Color expected, Color actual);` | Compares the actual and expected `Color` objects for equality using `Utils.AreFloatsEqualAbsoluteError` to compare the `RGB` and `Alpha` attributes of `Color`. Returns `true` if expected and actual objects are equal otherwise, it returns `false`. | + +## Example + +```c# +[TestFixture] +public class ColorEqualityTest +{ + [Test] + public void GivenColorsAreEqual_WithAllowedCalculationError() + { + // Using default error + var firstColor = new Color(0f, 0f, 0f, 0f); + var secondColor = new Color(0f, 0f, 0f, 0f); + + Assert.That(firstColor, Is.EqualTo(secondColor).Using(ColorEqualityComparer.Instance)); + + // Allowed error 10e-5f + var comparer = new ColorEqualityComparer(10e-5f); + firstColor = new Color(0f, 0f, 0f, 1f); + secondColor = new Color(10e-6f, 0f, 0f, 1f); + + Assert.That(firstColor, Is.EqualTo(secondColor).Using(comparer)); + } +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-equals.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-equals.md new file mode 100644 index 0000000..cc5d4d6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-equals.md @@ -0,0 +1,27 @@ +# Custom equality comparers with equals operator + +If you need to compare Vectors using the overloaded operator == (see [Vector2.operator ==](https://docs.unity3d.com/ScriptReference/Vector2-operator_eq.html), [Vector3.operator ==](https://docs.unity3d.com/ScriptReference/Vector3-operator_eq.html), and [Vector4.operator ==](https://docs.unity3d.com/ScriptReference/Vector4-operator_eq.html)) you should use the respective comparer implementations: + +- Vector2ComparerWithEqualsOperator +- Vector3ComparerWithEqualsOperator +- Vector4ComparerWithEqualsOperator + +The interface is the same as for other [equality comparers](./reference-custom-equality-comparers.md) except the public [constructor](./reference-custom-equality-comparers.md#constructors) `error` parameter is inapplicable in this case. + +## Example + +```c# +[TestFixture] +public class Vector3Test +{ + [Test] + public void VerifyThat_TwoVector3ObjectsAreEqual() + { + var actual = new Vector3(10e-7f, 10e-7f, 10e-7f); + var expected = new Vector3(0f, 0f, 0f); + + Assert.That(actual, Is.EqualTo(expected).Using(Vector3ComparerWithEqualsOperator.Instance)); + } +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-float.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-float.md new file mode 100644 index 0000000..188d207 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-float.md @@ -0,0 +1,46 @@ +# FloatEqualityComparer + +Use this class to compare two float values for equality with [NUnit](http://www.nunit.org/) constraints. Use `FloatEqualityComparer.Instance` comparer to have the default error value set to 0.0001f. For any other error, use the [one argument constructor](#constructors) to create a comparer. + +## Static Properties + +| Syntax | Description | +| ---------- | ------------------------------------------------------------ | +| `Instance` | A singleton instance of the comparer with a default error value set to 0.0001f. | + +## Constructors + +| Syntax | Description | +| ------------------------------------------- | ------------------------------------------------------------ | +| `FloatEqualityComparer(float allowedError)` | Creates an instance of the comparer with a custom error value. | + +## Public methods + +| Syntax | Description | +| -------------------------------------------- | ------------------------------------------------------------ | +| `bool Equals(float expected, float actual);` | Compares the `actual` and `expected` float values for equality using `Utils.AreFloatsEqual`. | + +## Example + +```c# +[TestFixture] +public class FloatsTest +{ + [Test] + public void VerifyThat_TwoFloatsAreEqual() + { + var comparer = new FloatEqualityComparer(10e-6f); + var actual = -0.00009f; + var expected = 0.00009f; + + Assert.That(actual, Is.EqualTo(expected).Using(comparer)); + + // Default relative error 0.0001f + actual = 10e-8f; + expected = 0f; + + Assert.That(actual, Is.EqualTo(expected).Using(FloatEqualityComparer.Instance)); + } +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-quaternion.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-quaternion.md new file mode 100644 index 0000000..5d7abc8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-quaternion.md @@ -0,0 +1,46 @@ +# QuaternionEqualityComparer + +Use this utility to compare two [Quaternion](https://docs.unity3d.com/ScriptReference/Quaternion.html) objects for equality with [NUnit](http://www.nunit.org/) assertion constraints. Use the static instance `QuaternionEqualityComparer.Instance` to have the default calculation error value set to 0.00001f. For any other custom error value, use the [one argument constructor](#constructors). + +## Static properties + +| Syntax | Description | +| ---------- | ---------------------------------------------------------- | +| `Instance` | A comparer instance with the default error value 0.00001f. | + +## Constructors + +| Syntax | Description | +| ------------------------------------------------ | ------------------------------------------------------------ | +| `QuaternionEqualityComparer(float allowedError)` | Creates an instance of the comparer with a custom allowed error value. | + +## Public methods + +| Syntax | Description | +| ----------------------------------------------------- | ------------------------------------------------------------ | +| `bool Equals(Quaternion expected, Quaternion actual)` | Compares the `actual` and `expected` `Quaternion` objects for equality using the [Quaternion.Dot](https://docs.unity3d.com/ScriptReference/Quaternion.Dot.html) method. | + +## Example + +```c# +[TestFixture] +public class QuaternionTest +{ + [Test] + public void VerifyThat_TwoQuaternionsAreEqual() + { + var actual = new Quaternion(10f, 0f, 0f, 0f); + var expected = new Quaternion(1f, 10f, 0f, 0f); + var comparer = new QuaternionEqualityComparer(10e-6f); + + Assert.That(actual, Is.EqualTo(expected).Using(comparer)); + + //Using default error 0.00001f + actual = new Quaternion(10f, 0f, 0.1f, 0f); + expected = new Quaternion(1f, 10f, 0.1f, 0f); + + Assert.That(actual, Is.EqualTo(expected).Using(QuaternionEqualityComparer.Instance)); + } +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-vector2.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-vector2.md new file mode 100644 index 0000000..977879e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-vector2.md @@ -0,0 +1,47 @@ +# Vector2EqualityComparer + +Use this class to compare two [Vector2](https://docs.unity3d.com/ScriptReference/Vector2.html) objects for equality with [NUnit](http://www.nunit.org/) constraints. Use the static `Vector2EqualityComparer.Instance` to have the calculation error value set to default 0.0001f. For any other error value, instantiate a new comparer object with the [one argument constructor](#constructors). + +## Static properties + +| Syntax | Description | +| ---------- | ------------------------------------------------------------ | +| `Instance` | A comparer instance with the default error value set to 0.0001f. | + +## Constructors + +| Syntax | Description | +| -------------------------------------- | ---------------------------------------------- | +| `Vector2EqualityComparer(float error)` | Creates an instance with a custom error value. | + +## Public methods + +| Syntax | Description | +| ------------------------------------------ | ------------------------------------------------------------ | +| `Equals(Vector2 expected, Vector2 actual)` | Compares the `actual` and `expected` `Vector2` objects for equality using the [Utils.AreFloatsEqual](./reference-test-utils.md) method. | + +## Example + +```c# +[TestFixture] +public class Vector2Test +{ + [Test] + public void VerifyThat_TwoVector2ObjectsAreEqual() + { + // Custom calculation error + var actual = new Vector2(10e-7f, 10e-7f); + var expected = new Vector2(0f, 0f); + var comparer = new Vector2EqualityComparer(10e-6f); + + Assert.That(actual, Is.EqualTo(expected).Using(comparer)); + + //Default error 0.0001f + actual = new Vector2(0.01f, 0.01f); + expected = new Vector2(0.01f, 0.01f); + + Assert.That(actual, Is.EqualTo(expected).Using(Vector2EqualityComparer.Instance)); + } +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-vector3.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-vector3.md new file mode 100644 index 0000000..6fe1122 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-vector3.md @@ -0,0 +1,47 @@ +# Vector3EqualityComparer + +Use this class to compare two [Vector3](https://docs.unity3d.com/ScriptReference/Vector3.html) objects for equality with `NUnit` constraints. Call `Vector3EqualityComparer.Instance` comparer to perform a comparison with the default calculation error value 0.0001f. To specify a different error value, use the [one argument constructor](#constructors) to instantiate a new comparer. + +## Static properties + +| Syntax | Description | +| ---------- | ------------------------------------------------------------ | +| `Instance` | A comparer instance with the default calculation error value equal to 0.0001f. | + +## Constructors + +| Syntax | Description | +| --------------------------------------------- | ---------------------------------------------- | +| `Vector3EqualityComparer(float allowedError)` | Creates an instance with a custom error value. | + +## Public methods + +| Syntax | Description | +| ----------------------------------------------- | ------------------------------------------------------------ | +| `bool Equals(Vector3 expected, Vector3 actual)` | Compares the `actual` and `expected` `Vector3` objects for equality using [Utils.AreFloatsEqual](http://todo) to compare the `x`, `y`, and `z` attributes of `Vector3`. | + +## Example + +```c# +[TestFixture] +public class Vector3Test +{ + [Test] + public void VerifyThat_TwoVector3ObjectsAreEqual() + { + // Custom error 10e-6f + var actual = new Vector3(10e-8f, 10e-8f, 10e-8f); + var expected = new Vector3(0f, 0f, 0f); + var comparer = new Vector3EqualityComparer(10e-6f); + + Assert.That(actual, Is.EqualTo(expected).Using(comparer)); + + //Default error 0.0001f + actual = new Vector3(0.01f, 0.01f, 0f); + expected = new Vector3(0.01f, 0.01f, 0f); + + Assert.That(actual, Is.EqualTo(expected).Using(Vector3EqualityComparer.Instance)); + } +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-vector4.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-vector4.md new file mode 100644 index 0000000..915cd65 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-comparer-vector4.md @@ -0,0 +1,47 @@ +# Vector4EqualityComparer + +Use this class to compare two [Vector4](https://docs.unity3d.com/ScriptReference/Vector4.html) objects for equality with [NUnit](http://www.nunit.org/) constraints. Call `Vector4EqualityComparer.Instance` to perform comparisons using default calculation error value 0.0001f. To set a custom test value, instantiate a new comparer using the [one argument constructor](#constructor). + +## Static Properties + +| Syntax | Description | +| ---------------------------------- | ------------------------------------------------------------ | +| `Vector4EqualityComparer Instance` | A comparer instance with the default calculation error value set to 0.0001f. | + +## Constructors + +| Syntax | Description | +| --------------------------------------------- | ---------------------------------------------- | +| `Vector4EqualityComparer(float allowedError)` | Creates an instance with a custom error value. | + +## Public methods + +| Syntax | Description | +| ------------------------------------------------ | ------------------------------------------------------------ | +| `bool Equals(Vector4 expected, Vector4 actual);` | Compares the `actual` and `expected` `Vector4` objects for equality using [Utils.AreFloatsEqual](http://todo) to compare the `x`, `y`, `z`, and `w` attributes of `Vector4`. | + +## Example + +```c# +[TestFixture] +public class Vector4Test +{ + [Test] + public void VerifyThat_TwoVector4ObjectsAreEqual() + { + // Custom error 10e-6f + var actual = new Vector4(0, 0, 1e-6f, 1e-6f); + var expected = new Vector4(1e-6f, 0f, 0f, 0f); + var comparer = new Vector4EqualityComparer(10e-6f); + + Assert.That(actual, Is.EqualTo(expected).Using(comparer)); + + // Default error 0.0001f + actual = new Vector4(0.01f, 0.01f, 0f, 0f); + expected = new Vector4(0.01f, 0.01f, 0f, 0f); + + Assert.That(actual, Is.EqualTo(expected).Using(Vector4EqualityComparer.Instance)); + } +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-assertion.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-assertion.md new file mode 100644 index 0000000..665597b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-assertion.md @@ -0,0 +1,66 @@ +# Custom assertion + +A test fails if Unity logs a message other than a regular log or warning message. Use [LogAssert](#logassert) to check for an expected message in the log so that the test does not fail when Unity logs the message. + +Use `LogAssert.Expect` before running the code under test, as the check for expected logs runs at the end of each frame. + +A test also reports a failure, if an expected message does not appear, or if Unity does not log any regular log or warning messages. + +## Example + +```c# +[Test] +public void LogAssertExample() +{ + // Expect a regular log message + LogAssert.Expect(LogType.Log, "Log message"); + + // The test fails without the following expected log message + Debug.Log("Log message"); + + // An error log + Debug.LogError("Error message"); + + // Without expecting an error log, the test would fail + LogAssert.Expect(LogType.Error, "Error message"); +} +``` + +## LogAssert + +`LogAssert` lets you expect Unity log messages that would otherwise cause the test to fail. + +### Static properties + +| Syntax | Description | +| ---------------------------- | ------------------------------------------------------------ | +| `bool ignoreFailingMessages` | Set this property to `true` to prevent unexpected error log messages from triggering an assertion. By default, it is `false`. | + +### Static Methods + +| Syntax | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| `void Expect(LogType type, string message);` `void Expect(LogType type, Regex message);` | Verifies that a log message of a specified type appears in the log. A test won’t fail from an expected error, assertion, or exception log message. It does fail if an expected message does not appear in the log. | +| `void NoUnexpectedReceived();` | Triggers an assertion when receiving any log messages and fails the test if some are unexpected messages. If multiple tests need to check for no received unexpected logs, consider using the [TestMustExpectAllLogs](./reference-attribute-testmustexpectalllogs.md) attribute instead. | + +### Expect string message + +`void Expect(LogType type, string message);` + +#### Parameters + +| Syntax | Description | +| ---------------- | ------------------------------------------------------------ | +| `LogType type` | A type of log to expect. It can take one of the [LogType enum](https://docs.unity3d.com/ScriptReference/LogType.html) values. | +| `string message` | A string value that should equate to the expected message. | + +### Expect Regex message + +`void Expect(LogType type, Regex message);` + +#### Parameters + +| Syntax | Description | +| --------------- | ------------------------------------------------------------ | +| `LogType type` | A type of log to expect. It can take one of the [LogType enum](https://docs.unity3d.com/ScriptReference/LogType.html) values. | +| `Regex message` | A regular expression pattern to match the expected message. | \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-attributes.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-attributes.md new file mode 100644 index 0000000..115e4cb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-attributes.md @@ -0,0 +1,15 @@ +# Custom attributes + +As a part of UTF’s public API we provide the following attributes: + +* [ConditionalIgnore attribute](./reference-attribute-conditionalignore.md) +* [PostBuildCleanup attribute](./reference-setup-and-cleanup.md#prebuildsetup-and-postbuildcleanup) +* [PrebuildSetup attribute](./reference-setup-and-cleanup.md#prebuildsetup-and-postbuildcleanup) +* [TestMustExpectAllLogs attribute](./reference-attribute-testmustexpectalllogs.md) +* [TestPlayerBuildModifier attribute](./reference-attribute-testplayerbuildmodifier.md) +* [TestRunCallback attribute](./reference-attribute-testruncallback.md) +* [UnityPlatform attribute](./reference-attribute-unityplatform.md) +* [UnitySetUp attribute](./reference-actions-outside-tests.md#unitysetup-and-unityteardown) +* [UnityTearDown attribute](./reference-actions-outside-tests.md#unitysetup-and-unityteardown) +* [UnityTest attribute](./reference-attribute-unitytest.md) + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-constraints.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-constraints.md new file mode 100644 index 0000000..10b205b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-constraints.md @@ -0,0 +1,31 @@ +# Custom constraints + +`NUnit` allows you to write test assertions in a more descriptive and human readable way using the [Assert.That](https://github.com/nunit/docs/wiki/Assertions) mechanism, where the first parameter is an object under test and the second parameter describes conditions that the object has to meet. + +## Is + +We’ve extended `NUnit` API with a custom constraint type and declared an overlay `Is` class. To resolve ambiguity between the original implementation and the custom one you must explicitly declare it with a using statement or via addressing through the full type name `UnityEngine.TestTools.Constraints.Is`. + +### Static Methods + +| Syntax | Description | +| -------------------- | ------------------------------------------------------------ | +| `AllocatingGCMemory` | A constraint type that invokes the delegate you provide as the parameter of `Assert.That` and checks whether it causes any GC memory allocations. It passes if any GC memory is allocated and fails if not. | + +## Example + +```c# +using Is = UnityEngine.TestTools.Constraints.Is; + +class MyTestClass +{ + [Test] + public void MyTest() + { + Assert.That(() => { + var i = new int[500]; + }, Is.AllocatingGCMemory()); + } +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-equality-comparers.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-equality-comparers.md new file mode 100644 index 0000000..8203a32 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-equality-comparers.md @@ -0,0 +1,32 @@ +# Custom equality comparers + +To enable easier verification of custom Unity type values in your tests we provide you with some custom equality comparers: + +* [ColorEqualityComparer](./reference-comparer-color.md) +* [FloatEqualityComparer](./reference-comparer-float.md) +* [QuaternionEqualityComparer](./reference-comparer-quaternion.md) +* [Vector2EqualityComparer](./reference-comparer-vector2.md) +* [Vector3EqualityComparer](./reference-comparer-vector3.md) +* [Vector4EqualityComparer](./reference-comparer-vector4.md) + +Use these classes to compare two objects of the same type for equality within the range of a given tolerance using [NUnit ](https://github.com/nunit/docs/wiki/Constraints)or [custom constraints](./reference-custom-constraints.md) . Call Instance to apply the default calculation error value to the comparison. To set a specific error value, instantiate a new comparer object using a one argument constructor `ctor(float error)`. + +## Static properties + +| Syntax | Description | +| ---------- | ------------------------------------------------------------ | +| `Instance` | A singleton instance of the comparer with a predefined default error value. | + +## Constructors + +| Syntax | Description | +| ------------------- | ------------------------------------------------------------ | +| `ctor(float error)` | Creates an instance of comparer with a custom error `value.allowedError`. The relative error to be considered while comparing two values. | + +## Public methods + +| Syntax | Description | +| ------------------------------------ | ------------------------------------------------------------ | +| `bool Equals(T expected, T actual);` | Compares the actual and expected objects for equality using a custom comparison mechanism. Returns `true` if expected and actual objects are equal, otherwise it returns `false`. | + + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-yield-instructions.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-yield-instructions.md new file mode 100644 index 0000000..9814ca3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-custom-yield-instructions.md @@ -0,0 +1,60 @@ +# Custom yield instructions + +By implementing this interface below, you can define custom yield instructions in **Edit Mode** tests. + +## IEditModeTestYieldInstruction + +In an Edit Mode test, you can use `IEditModeTestYieldInstruction` interface to implement your own instruction. There are also a couple of commonly used implementations available: + +- [EnterPlayMode](#enterplaymode) +- [ExitPlayMode](#exitplaymode) +- [RecompileScripts](./reference-recompile-scripts.md) +- [WaitForDomainReload](./reference-wait-for-domain-reload.md) + +## Example + +```c# +[UnityTest] + +public IEnumerator PlayOnAwakeDisabled_DoesntPlayWhenEnteringPlayMode() + +{ + var videoPlayer = PrefabUtility.InstantiatePrefab(m_VideoPlayerPrefab.GetComponent()) as VideoPlayer; + + videoPlayer.playOnAwake = false; + + yield return new EnterPlayMode(); + + var videoPlayerGO = GameObject.Find(m_VideoPlayerPrefab.name); + + Assert.IsFalse(videoPlayerGO.GetComponent().isPlaying); + + yield return new ExitPlayMode(); + + Object.DestroyImmediate(GameObject.Find(m_VideoPlayerPrefab.name)); +} +``` + +## Properties + +| Syntax | Description | +| ---------------------------- | ------------------------------------------------------------ | +| `bool ExpectDomainReload` | Returns `true` if the instruction expects a domain reload to occur. | +| `bool ExpectedPlaymodeState` | Returns `true` if the instruction expects the Unity Editor to be in **Play Mode**. | + +## Methods + +| Syntax | Description | +| ----------------------- | ------------------------------------------------------------ | +| `IEnumerator Perform()` | Used to define multi-frame operations performed when instantiating a yield instruction. | + +## EnterPlayMode + +* Implements `IEditModeTestYieldInstruction`. Creates a yield instruction to enter Play Mode. +* When creating an Editor test that uses the `UnityTest` attribute, use this to trigger the Editor to enter Play Mode. +* Throws an exception if the Editor is already in Play Mode or if there is a [script compilation error](https://support.unity3d.com/hc/en-us/articles/205930539-How-do-I-interpret-a-compiler-error-). + +## ExitPlayMode + +* Implements `IEditModeTestYieldInstruction`. A new instance of the class is a yield instruction to exit Play Mode. +* Throws an exception if the Editor is not in Play Mode. diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-execution-settings.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-execution-settings.md new file mode 100644 index 0000000..e40a333 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-execution-settings.md @@ -0,0 +1,17 @@ +# ExecutionSettings +The `ExecutionSettings` is a set of filters and other settings provided when running a set of tests from the [TestRunnerApi](./reference-test-runner-api.md). + +## Constructors + +| Syntax | Description | +| ----------------------------------------------------- | -------------------------------------------------------- | +| `ExecutionSettings(params Filter[] filtersToExecute)` | Creates an instance with a given set of filters, if any. | + +## Fields + +| Syntax | Description | +| ---------------------------- | ------------------------------------------------------------ | +| `Filter[] filters` | A collection of [Filters](./reference-filter.md) to execute tests on. | +| `ITestRunSettings overloadTestRunSettings` | An instance of [ITestRunSettings](./reference-itest-run-settings.md) to set up before running tests on a Player. | +| `bool runSynchronously` | If true, the call to `Execute()` will run tests synchronously, guaranteeing that all tests have finished running by the time the call returns. Note that this is only supported for EditMode tests, and that tests which take multiple frames (i.e. `[UnityTest]` tests, or tests with `[UnitySetUp]` or `[UnityTearDown]` scaffolding) will be filtered out. | +| 'int playerHeartbeatTimeout' | The time, in seconds, the editor should wait for heartbeats after starting a test run on a player. This defaults to 10 minutes. | \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-filter.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-filter.md new file mode 100644 index 0000000..8cfa910 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-filter.md @@ -0,0 +1,15 @@ +# Filter +The filter class provides the [TestRunnerApi](./reference-test-runner-api.md) with a specification of what tests to run when [running tests programmatically](./extension-run-tests.md). + +## Fields + +| Syntax | Description | +| ----------------------------- | ------------------------------------------------------------ | +| `TestMode testMode` | An enum flag that specifies if **Edit Mode** or **Play Mode** tests should run. Applying both Edit Mode and Play Mode is currently not supported when running tests from the API. | +| `string[] testNames` | The full name of the tests to match the filter. This is usually in the format `FixtureName.TestName`. If the test has test arguments, then include them in parenthesis. E.g. `MyTestClass2.MyTestWithMultipleValues(1)`. | +| `string[] groupNames` | The same as `testNames`, except that it allows for Regex. This is useful for running specific fixtures or namespaces. E.g. `"^MyNamespace\\."` Runs any tests where the top namespace is `MyNamespace`. | +| `string[] categoryNames` | The name of a [Category](https://nunit.org/docs/2.2.7/category.html) to include in the run. Any test or fixtures runs that have a `Category` matching the string. | +| `string[] assemblyNames` | The name of assemblies included in the run. That is the assembly name, without the .dll file extension. E.g., `MyTestAssembly`. | +| `BuildTarget? targetPlatform` | The [BuildTarget](https://docs.unity3d.com/ScriptReference/BuildTarget.html) platform to run the test on. If set to `null`, then the Editor is the target for the tests. | + + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-icallbacks.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-icallbacks.md new file mode 100644 index 0000000..b04e7e8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-icallbacks.md @@ -0,0 +1,48 @@ +# ICallbacks +An interface for receiving callbacks when running tests. All test runs invoke the callbacks until the next domain reload. + +The `RunStarted` method runs when the whole test run starts. Then the `TestStarted` method runs with information about the tests it is about to run on an assembly level. Afterward, it runs on a test fixture level and then on the individual test. If the test is a [parameterized test](./https://github.com/nunit/docs/wiki/Parameterized-Tests), then it is also invoked for each parameter combination. After each part of the test tree have completed running, the corresponding `TestFinished` method runs with the test result. At the end of the run, the `RunFinished` event runs with the test result. + +An extended version of the callback, [IErrorCallbacks](./reference-ierror-callbacks.md), extends this `ICallbacks` to receive calls when a run fails due to a build error. + +## Public methods + +| Syntax | Description | +| ---------------------------------------------- | ------------------------------------------------------------ | +| `void RunStarted(ITestAdaptor testsToRun)` | Invoked when the test run starts. The [ITestAdaptor](./reference-itest-adaptor.md) represents the tree of tests to run. | +| `void RunFinished(ITestResultAdaptor result)` | Invoked when the test run finishes. The [ITestResultAdaptor](./reference-itest-result-adaptor.md) represents the results of the set of tests that have run. | +| `void TestStarted(ITestAdaptor test)` | Invoked on each node of the test tree, as that part of the tree starts to run. | +| `void TestFinished(ITestResultAdaptor result)` | Invoked on each node of the test tree once that part of the test tree has finished running. The [ITestResultAdaptor](./reference-itest-result-adaptor.md) represents the results of the current node of the test tree. | + +## Example +An example that sets up a listener on the API. The listener prints the number of failed tests after the run has finished: +``` C# +public void SetupListeners() +{ + var api = ScriptableObject.CreateInstance(); + api.RegisterCallbacks(new MyCallbacks()); +} + +private class MyCallbacks : ICallbacks +{ + public void RunStarted(ITestAdaptor testsToRun) + { + + } + + public void RunFinished(ITestResultAdaptor result) + { + Debug.Log(string.Format("Run finished {0} test(s) failed.", result.FailCount)); + } + + public void TestStarted(ITestAdaptor test) + { + + } + + public void TestFinished(ITestResultAdaptor result) + { + + } +} +``` \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-ierror-callbacks.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-ierror-callbacks.md new file mode 100644 index 0000000..bf83309 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-ierror-callbacks.md @@ -0,0 +1,9 @@ +# IErrorCallbacks +An extended version of the [ICallbacks](./reference-icallbacks.md), which get invoked if the test run fails due to a build error or if any [IPrebuildSetup](./reference-setup-and-cleanup.md) has a failure. + +## Public methods + +| Syntax | Description | +| ---------------------------- | ------------------------------------------------------------------- | +| void OnError(string message) | The error message detailing the reason for the run to fail. | + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-itest-adaptor.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-itest-adaptor.md new file mode 100644 index 0000000..04e72f6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-itest-adaptor.md @@ -0,0 +1,31 @@ +# ITestAdaptor +`ITestAdaptor` is a representation of a node in the test tree implemented as a wrapper around the [NUnit](http://www.nunit.org/) [ITest](https://github.com/nunit/nunit/blob/master/src/NUnitFramework/framework/Interfaces/ITest.cs) interface. + +## Properties + +| Syntax | Description | +| ---------- | ------------------------------------------------------------ | +| `string Id` | The ID of the test tree node. The ID can change if you add new tests to the suite. Use `UniqueName`, if you want to have a more permanent point of reference. | +| `string Name` | The name of the test. E.g., `MyTest`. | +| `string FullName` | The full name of the test. E.g., `MyNamespace.MyTestClass.MyTest`. | +| `int TestCaseCount` | The total number of test cases in the node and all sub-nodes. | +| `bool HasChildren` | Whether the node has any children. | +| `bool IsSuite` | Whether the node is a test suite/fixture. | +| `IEnumerable Children` | The child nodes. | +| `ITestAdaptor Parent` | The parent node, if any. | +| `int TestCaseTimeout` | The test case timeout in milliseconds. Note that this value is only available on TestFinished. | +| `ITypeInfo TypeInfo` | The type of test class as an `NUnit` [ITypeInfo](https://github.com/nunit/nunit/blob/master/src/NUnitFramework/framework/Interfaces/ITypeInfo.cs). If the node is not a test class, then the value is `null`. | +| `IMethodInfo Method` | The [Nunit IMethodInfo](https://github.com/nunit/nunit/blob/master/src/NUnitFramework/framework/Interfaces/IMethodInfo.cs) of the test method. If the node is not a test method, then the value is `null`. | +| `string[] Categories` | An array of the categories applied to the test or fixture. | +| `bool IsTestAssembly` | Whether the node represents a test assembly. | +| `RunState RunState` | The run state of the test node. Either `NotRunnable`, `Runnable`, `Explicit`, `Skipped`, or `Ignored`. | +| `string Description` | The description of the test. | +| `string SkipReason` | The skip reason. E.g., if ignoring the test. | +| `string ParentId` | The ID of the parent node. | +| `string ParentFullName` | The full name of the parent node. | +| `string UniqueName` | A unique generated name for the test node. E.g., `Tests.dll/MyNamespace/MyTestClass/[Tests][MyNamespace.MyTestClass.MyTest]`. | +| `string ParentUniqueName` | A unique name of the parent node. E.g., `Tests.dll/MyNamespace/[Tests][MyNamespace.MyTestClass][suite]`. | +| `int ChildIndex` | The child index of the node in its parent. | +| `TestMode TestMode` | The mode of the test. Either **Edit Mode** or **Play Mode**. | + +> **Note**: Some properties are not available when receiving the test tree as a part of a test result coming from a standalone Player, such as `TypeInfo` and `Method`. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-itest-result-adaptor.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-itest-result-adaptor.md new file mode 100644 index 0000000..63280f6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-itest-result-adaptor.md @@ -0,0 +1,25 @@ +# ITestResultAdaptor +The `ITestResultAdaptor` is the representation of the test results for a node in the test tree implemented as a wrapper around the [NUnit](http://www.nunit.org/) [ITest](https://github.com/nunit/nunit/blob/master/src/NUnitFramework/framework/Interfaces/ITestResults.cs) interface. +## Properties + +| Syntax | Description | +| ---------- | ------------------------------------------------------------ | +| `ITestAdaptor Test` | The test details of the test result tree node as a [TestAdaptor](./reference-itest-adaptor.md). | +| `string Name` | The name of the test node. | +| `string FullName` | Gets the full name of the test result | +| `string ResultState` | The state of the result as a string. E.g., `Success`, `Skipped`, `Failure`, `Explicit`, `Cancelled`. | +| `TestStatus TestStatus` | The status of the test as an enum. Either `Inconclusive`, `Skipped`, `Passed`, or `Failed`. | +| `double Duration` | Gets the elapsed time for running the test in seconds. | +| `DateTime StartTime` | Gets or sets the time the test started running. | +| `DateTime EndTime` | Gets or sets the time the test finished running. | +| `string Message` | Gets the message associated with a test failure or with not running the test | +| `string StackTrace` | Gets any stack trace associated with an error or failure. Not available in the [Compact Framework](https://en.wikipedia.org/wiki/.NET_Compact_Framework) 1.0. | +| `int AssertCount` | Gets the number of asserts that ran during the test and all its children. | +| `int FailCount` | Gets the number of test cases that failed when running the test and all its children. | +| `int PassCount` | Gets the number of test cases that passed when running the test and all its children. | +| `int SkipCount` | Gets the number of test cases skipped when running the test and all its children. | +| `int InconclusiveCount` | Gets the number of test cases that were inconclusive when running the test and all its children. | +| `bool HasChildren` | Indicates whether this result has any child results. Accessing HasChildren should not force the creation of the Children collection in classes implementing this interface. | +| `IEnumerable Children` | Gets the collection of child results. | +| `string Output` | Gets any text output written to this result. | +| `TNode ToXml` | Gets the test results as an `NUnit` XML node. Use this to save the results to an XML file. | diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-itest-run-settings.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-itest-run-settings.md new file mode 100644 index 0000000..79c344b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-itest-run-settings.md @@ -0,0 +1,29 @@ +# ITestRunSettings +`ITestRunSettings` lets you set any of the global settings right before building a Player for a test run and then reverts the settings afterward. +`ITestRunSettings` implements [IDisposable](https://docs.microsoft.com/en-us/dotnet/api/system.idisposable), and runs after building the Player with tests. + +## Public methods + +| Syntax | Description | +| ---------------- | ------------------------------------------------------------ | +| `void Apply()` | A method called before building the Player. | +| `void Dispose()` | A method called after building the Player or if the build failed. | + +## Example +The following example sets the iOS SDK version to be the simulator SDK and resets it to the original value after the run. +``` C# +public class MyTestSettings : ITestRunSettings +{ + private iOSSdkVersion originalSdkVersion; + public void Apply() + { + originalSdkVersion = PlayerSettings.iOS.sdkVersion; + PlayerSettings.iOS.sdkVersion = iOSSdkVersion.SimulatorSDK; + } + + public void Dispose() + { + PlayerSettings.iOS.sdkVersion = originalSdkVersion; + } +} +``` \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-recompile-scripts.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-recompile-scripts.md new file mode 100644 index 0000000..0fb8644 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-recompile-scripts.md @@ -0,0 +1,22 @@ +# RecompileScripts +`RecompileScripts` is an [IEditModeTestYieldInstruction](./reference-custom-yield-instructions.md) that you can yield in Edit Mode tests. It lets you trigger a recompilation of scripts in the Unity Editor. + +## Constructors + +| Syntax | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| `RecompileScripts(bool expectScriptCompilation = true, bool expectScriptCompilationSuccess = true)` | Creates a new instance of the `RecompileScripts` yield instruction. The parameter `expectScriptCompilation` indicates if you expect a script compilation to start (defaults to true). If a script compilation does not start and `expectScriptCompilation` is `true`, then it throws an exception. | + +## Example +``` C@ +[UnitySetUp] +public IEnumerator SetUp() +{ + using (var file = File.CreateText("Assets/temp/myScript.cs")) + { + file.Write("public class ATempClass { }"); + } + AssetDatabase.Refresh(); + yield return new RecompileScripts(); +} +``` \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-setup-and-cleanup.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-setup-and-cleanup.md new file mode 100644 index 0000000..93e77a5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-setup-and-cleanup.md @@ -0,0 +1,91 @@ +# Setup and cleanup at build time + +In some cases, it is relevant to perform changes to Unity or the file system before building the tests. In the same way, it may be necessary to clean up such changes after the test run. In response to such needs, you can incorporate the pre-build setup and post-build cleanup concepts into your tests in one of the following ways: + +1. Via implementation of `IPrebuildSetup` and `IPostBuildCleanup` interfaces by a test class. +2. Via applying the `PrebuildSetup` attribute and `PostBuildCleanup` attribute on your test class, one of the tests or the test assembly, providing a class name that implements the corresponding interface as an argument (fx `[PrebuildSetup("MyTestSceneSetup")]`). + +## Execution order + +All setups run in a deterministic order one after another. The first to run are the setups defined with attributes. Then any test class implementing the interface runs, in alphabetical order inside their namespace, which is the same order as the tests run. + +> **Note**: Cleanup runs right away for a standalone test run, but only after related tests run in the Unity Editor. + +## PrebuildSetup and PostBuildCleanup + +Both `PrebuildSetup` and `PostBuildCleanup` attributes run if the respective test or test class is in the current test run. The test is included either by running all tests or setting a [filter](./workflow-create-test.md#filters) that includes the test. If multiple tests reference the same pre-built setup or post-build cleanup, then it only runs once. + +## IPrebuildSetup + +Implement this interface if you want to define a set of actions to run as a pre-build step. + +### Public methods + +| Syntax | Description | +| -------------- | ------------------------------------------------------------ | +| `void Setup()` | Implement this method to call actions automatically before the build process. | + +## IPostBuildCleanup + +Implement this interface if you want to define a set of actions to execute as a post-build step. Cleanup runs right away for a standalone test run, but only after all the tests run within the Editor. + +### Public methods + +| Syntax | Description | +| ---------------- | ------------------------------------------------------------ | +| `void Cleanup()` | Implement this method to specify actions that should run as a post-build cleanup step. | + +## Example + +```c# +[TestFixture] +public class CreateSpriteTest : IPrebuildSetup +{ + Texture2D m_Texture; + Sprite m_Sprite; + + public void Setup() + { + +#if UNITY_EDITOR + + var spritePath = "Assets/Resources/Circle.png"; + + var ti = UnityEditor.AssetImporter.GetAtPath(spritePath) as UnityEditor.TextureImporter; + + ti.textureCompression = UnityEditor.TextureImporterCompression.Uncompressed; + + ti.SaveAndReimport(); + +#endif + } + + [SetUp] + public void SetUpTest() + { + m_Texture = Resources.Load("Circle"); + } + + [Test] + public void WhenNullTextureIsPassed_CreateShouldReturnNullSprite() + { + + // Check with Valid Texture. + + LogAssert.Expect(LogType.Log, "Circle Sprite Created"); + + Sprite.Create(m_Texture, new Rect(0, 0, m_Texture.width, m_Texture.height), new Vector2(0.5f, 0.5f)); + + Debug.Log("Circle Sprite Created"); + + // Check with NULL Texture. Should return NULL Sprite. + + m_Sprite = Sprite.Create(null, new Rect(0, 0, m_Texture.width, m_Texture.heig`t), new Vector2(0.5f, 0.5f)); + + Assert.That(m_Sprite, Is.Null, "Sprite created with null texture should be null"); + + } +} +``` + +> **Tip**: Use `#if UNITY_EDITOR` if you want to access Editor only APIs, but the setup/cleanup is inside a **Play Mode** assembly. diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-test-runner-api.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-test-runner-api.md new file mode 100644 index 0000000..b594f7e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-test-runner-api.md @@ -0,0 +1,23 @@ +# TestRunnerApi +The `TestRunnerApi` retrieves and runs tests programmatically from code inside the project, or inside other packages. `TestRunnerApi` is a [ScriptableObject](https://docs.unity3d.com/ScriptReference/ScriptableObject.html). + +You can initialize the API like this: + +```c# +var testRunnerApi = ScriptableObject.CreateInstance(); +``` +> **Note**: You can subscribe and receive test results in one instance of the API, even if the run starts from another instance. + +The `TestRunnerApi` supports the following workflows: +* [How to run tests programmatically](./extension-run-tests.md) +* [How to get test results](./extension-get-test-results.md) +* [How to retrieve the list of tests](./extension-retrieve-test-list.md) + +## Public methods + +| Syntax | Description | +| ------------------------------------------ | ------------------------------------------------------------ | +| `void Execute(ExecutionSettings executionSettings)` | Starts a test run with a given set of [ExecutionSettings](./reference-execution-settings.md). | +| `void RegisterCallbacks(ICallbacks testCallbacks, int priority = 0)` | Sets up a given instance of [ICallbacks](./reference-icallbacks.md) to be invoked on test runs. | +| `void UnregisterCallbacks(ICallbacks testCallbacks)` | Unregisters an instance of ICallbacks to no longer receive callbacks from test runs. | +| `void RetrieveTestList(TestMode testMode, Action callback)` | Retrieve the full test tree as [ITestAdaptor](./reference-itest-adaptor.md) for a given test mode. | \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-test-utils.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-test-utils.md new file mode 100644 index 0000000..dae8dae --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-test-utils.md @@ -0,0 +1,40 @@ +# Test Utils + +This contains test utility functions for float value comparison and creating primitives. + +## Static Methods + +| Syntax | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| `bool AreFloatsEqual(float expected, float actual, float allowedRelativeError)` | Relative epsilon comparison of two float values for equality. `allowedRelativeError` is the relative error to be used in relative epsilon comparison. The relative error is the absolute error divided by the magnitude of the exact value. Returns `true` if the actual value is equivalent to the expected value. | +| `bool AreFloatsEqualAbsoluteError(float expected, float actual, float allowedAbsoluteError)` | Compares two floating point numbers for equality under the given absolute tolerance. `allowedAbsoluteError` is the permitted error tolerance. Returns `true` if the actual value is equivalent to the expected value under the given tolerance. | +| `GameObject CreatePrimitive( type)` | Creates a [GameObject](https://docs.unity3d.com/ScriptReference/GameObject.html) with a primitive [MeshRenderer](https://docs.unity3d.com/ScriptReference/MeshRenderer.html). This is an analogue to the [GameObject.CreatePrimitive](https://docs.unity3d.com/ScriptReference/GameObject.CreatePrimitive.html), but creates a primitive `MeshRenderer` with a fast [Shader](https://docs.unity3d.com/ScriptReference/Shader.html) instead of the default built-in `Shader`, optimized for testing performance. `type` is the [primitive type](https://docs.unity3d.com/ScriptReference/PrimitiveType.html) of the required `GameObject`. Returns a `GameObject` with primitive `MeshRenderer` and [Collider](https://docs.unity3d.com/ScriptReference/Collider.html). | + +## Example + +```c# +[TestFixture] +class UtilsTests +{ + [Test] + public void ChechThat_FloatsAreEqual() + { + float expected = 10e-8f; + float actual = 0f; + float allowedRelativeError = 10e-6f; + + Assert.That(Utils.AreFloatsEqual(expected, actual, allowedRelativeError), Is.True); + } + + [Test] + public void ChechThat_FloatsAreAbsoluteEqual() + { + float expected = 0f; + float actual = 10e-6f; + float error = 10e-5f; + + Assert.That(Utils.AreFloatsEqualAbsoluteError(expected, actual, error), Is.True); + } +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-tests-monobehaviour.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-tests-monobehaviour.md new file mode 100644 index 0000000..6409333 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-tests-monobehaviour.md @@ -0,0 +1,51 @@ +# MonoBehaviour tests + +`MonoBehaviourTest` is a [coroutine](https://docs.unity3d.com/ScriptReference/Coroutine.html) and a helper for writing [MonoBehaviour](https://docs.unity3d.com/ScriptReference/MonoBehaviour.html) tests. + +Yield a `MonoBehaviourTest` when using the `UnityTest` attribute to instantiate the `MonoBehaviour` you wish to test and wait for it to finish running. Implement the `IMonoBehaviourTest` interface on the `MonoBehaviour` to state when the test completes. + +## Example + +```c# +[UnityTest] +public IEnumerator MonoBehaviourTest_Works() +{ + yield return new MonoBehaviourTest(); +} + +public class MyMonoBehaviourTest : MonoBehaviour, IMonoBehaviourTest +{ + private int frameCount; + public bool IsTestFinished + { + get { return frameCount > 10; } + } + + void Update() + { + frameCount++; + } +} +``` + +## MonoBehaviourTest<T> + +This is a wrapper that allows running tests on `MonoBehaviour` scripts. Inherits from [CustomYieldInstruction](https://docs.unity3d.com/ScriptReference/CustomYieldInstruction.html). + +### Properties + +| Syntax | Description | +| ----------------------- | ------------------------------------------------------------ | +| `T component` | A `MonoBehaviour` component created for the test and attached to the test’s [GameObject](https://docs.unity3d.com/ScriptReference/GameObject.html). | +| `GameObject gameObject` | A `GameObject` created as a container for the test component. | +| `bool keepWaiting` | (Inherited) Returns `true` if the test is not finished yet, which keeps the coroutine suspended. | + +## IMonoBehaviourTest + +An interface implemented by a `MonoBehaviour` test. + +### Properties + +| Syntax | Description | +| --------------------- | ----------------------------------------------- | +| `bool IsTestFinished` | Indicates when the test is considered finished. | \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-tests-parameterized.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-tests-parameterized.md new file mode 100644 index 0000000..6182bad --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-tests-parameterized.md @@ -0,0 +1,18 @@ +# Parameterized tests + +For data-driven testing, you may want to have your tests parameterized. You may use both the [NUnit](http://www.nunit.org/) attributes [TestCase](https://github.com/nunit/docs/wiki/TestCase-Attribute) and [ValueSource](https://github.com/nunit/docs/wiki/ValueSource-Attribute) with a unit test. + +> **Note**: With `UnityTest` it is recommended to use `ValueSource` since `TestCase` is not supported. + +## Example + +```c# +static int[] values = new int[] { 1, 5, 6 }; + +[UnityTest] +public IEnumerator MyTestWithMultipleValues([ValueSource("values")] int value) +{ + yield return null; +} +``` + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-wait-for-domain-reload.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-wait-for-domain-reload.md new file mode 100644 index 0000000..8d42e70 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/reference-wait-for-domain-reload.md @@ -0,0 +1,19 @@ +# WaitForDomainReload +`WaitForDomainReload` is an [IEditModeTestYieldInstruction](./reference-custom-yield-instructions.md) that you can yield in Edit Mode tests. It delays the execution of scripts until after an incoming domain reload. If the domain reload results in a script compilation failure, then it throws an exception. + +## Constructors + +| Syntax | Description | +| ---------------------------- | ------------------------------------------------------------ | +| `WaitForDomainReload()` | Create a new instance of the `WaitForDomainReload` yield instruction. | + +## Example +``` C@ +[UnitySetUp] +public IEnumerator SetUp() +{ + File.Copy("Resources/MyDll.dll", @"Assets/MyDll.dll", true); // Trigger a domain reload. + AssetDatabase.Refresh(); + yield return new WaitForDomainReload(); +} +``` \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/resources.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/resources.md new file mode 100644 index 0000000..ce261e9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/resources.md @@ -0,0 +1,6 @@ +# Resources + +Here you can find other related resources to the Unity Test Framework: + +* [Performance Benchmarking in Unity: How to Get Started](https://blogs.unity3d.com/2018/09/25/performance-benchmarking-in-unity-how-to-get-started/) [Blog] +* [Testing Test-Driven Development with the Unity Test Runner](https://blogs.unity3d.com/2018/11/02/testing-test-driven-development-with-the-unity-test-runner/) [Blog] \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-create-playmode-test.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-create-playmode-test.md new file mode 100644 index 0000000..a21b619 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-create-playmode-test.md @@ -0,0 +1,28 @@ +# Workflow: How to create a Play Mode test + +To create a **Play Mode** test, you can follow a similar process as when you want to create an **Edit Mode** test. + +1. Start with switching to the **PlayMode** tab in the **Test Runner** window. +2. Create a test assembly folder (see [How to create a new test assembly)](./workflow-create-test-assembly.md). The folder name is *Tests* by default (or *Tests 1*, *Tests 2*, etc. if the preceding name is already in use). + +![PlayMode tab](./images/playmode-tab.png) + +> **Note**: If you don’t see the **Create Play Mode Test Assembly Folder** button enabled, make sure that in the Project window you navigate out of a folder with another .asmdef (such as one for Edit Mode tests). + +3. When you have your Play Mode test assembly folder ready, then [create your Play Mode test](./workflow-create-test.md). + +> **Note**: [Pre-defined Unity assemblies](https://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html) (such as _Assembly-CSharp.dll_) do not reference your new assembly. + +## References and builds + +Unity Test Framework adds a reference to `TestAssemblies` in the [Assembly Definition](https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html) file, but it won't include any other references (e.g., to other scripting assemblies within the Unity project). So you need to add other assemblies yourself if you want to test them too. + +Unity does not include `TestAssemblies` in Player builds, but in the Test Runner window, we have such an option. If you need to test code in pre-defined assemblies, you can reference `TestAssemblies` from other assemblies. You must remove these tests after the test run so that Unity does not add them to the final Player build. + +To do this, in the Test Runner window choose **Enable playmode tests for all assemblies** option from the drop-down menu (to expand, click on the small list item in the top right corner). In the dialog box, click **OK** to manually restart the Editor. + +![Enable Play Mode tests for all assemblies](./images/playmode-enable-all.png) + +> **Note**: **Enabling Play Mode tests for all assemblies** includes additional assemblies in your project build, which can increase the project’s size as well as the build time. + +For more information, see [Edit Mode vs. Play Mode tests](./edit-mode-vs-play-mode-tests.md). \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-create-test-assembly.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-create-test-assembly.md new file mode 100644 index 0000000..eb35896 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-create-test-assembly.md @@ -0,0 +1,17 @@ +# Workflow: **How to create a new test assembly** + +Unity Test Framework looks for a test inside any assembly that references [NUnit](http://www.nunit.org/). We refer to such assemblies as `TestAssemblies`. The [Test Runner](./getting-started.md) UI can help you set up `TestAssemblies`. **Play Mode** and **Edit Mode** tests need to be in separate assemblies. + +In the **Test Runner** window, you will see an **EditMode** tab enabled by default, as well as a **Create EditMode Test Assembly Folder** button. + +![Test Runner window EditMode tab](./images/editmode-tab.png) + +Click the button to create a *Tests* folder with a respective .asmdef file by default. Change the name of the new [Assembly Definition](https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html), if necessary, and press Enter to accept it. + +![New Test folder and assembly file](./images/tests-folder-assembly.png) + +In the Inspector window, it should have references to **nunit.framework.dll***,* **UnityEngine.TestRunner,** and **UnityEditor.TestRunner** assemblies, as well as **Editor** preselected as a target platform. + +> **Note**: The **UnityEditor.TestRunner** reference is only available for [Edit Mode tests](./edit-mode-vs-play-mode-tests.md#edit-mode-tests). + +![Assembly definition import settings](./images/import-settings.png) diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-create-test.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-create-test.md new file mode 100644 index 0000000..612106e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-create-test.md @@ -0,0 +1,36 @@ +# Workflow: How to create a test + +To create a test, do the following: + +1. Create your *Test* [assembly folder](./workflow-create-test-assembly.md) and select it in the **Project** window. +2. Click the button **Create Test Script in current folder** option in the **Test Runner** window. + +![EditMode create test script](./images/editmode-create-test-script.png) + +3. It creates a *NewTestScript.cs* file in the *Tests* folder. Change the name of the script, if necessary, and press Enter to accept it. + +![NewTestScript.cs](./images/new-test-script.png) + +Now you’ll see two sample tests in the Test Runner window: + +![Test templates](./images/test-templates.png) + +Now you can open the tests in your favorite script editor. + +You can also create test scripts by navigating to **Assets** > **Create > Testing** > **C# Test Script**, unless adding a test script would result in a compilation error. + +> **Note**: Unity does not include `TestAssemblies` ([NUnit](http://www.nunit.org/), Unity Test Framework, and user script assemblies) when using the normal build pipeline, but does include them when using **Run on <Platform>** in the Test Runner window. + +## Filters + +If you have a lot of tests, and you only want to view/run a sub-set of them, you can filter them in three ways (see image above): + +* Type in the search box in the top left + +* Click a test class or fixture (such as **NewTestScript** in the image above) + +* Click one of the test result icon buttons in the top right + + + +For more information, see [Edit Mode vs. Play Mode tests](./edit-mode-vs-play-mode-tests.md). diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-run-playmode-test-standalone.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-run-playmode-test-standalone.md new file mode 100644 index 0000000..0a2fa81 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-run-playmode-test-standalone.md @@ -0,0 +1,21 @@ +# Workflow: How to run a Play Mode test in player + +If you run a **Play Mode** test in the same way as an [Editor test](./workflow-run-test.md), it runs inside the Unity Editor. You can also run Play Mode tests on specific platforms. Click **Run all in the player** to build and run your tests on the currently active target platform. + +![Run PlayMode test in player](./images/playmode-run-standalone.png) + +> **Note**: Your current platform displays in brackets on the button. For example, in the image above, the button reads **Run all in player (StandaloneWindows)**, because the current platform is Windows. The target platform is always the current Platform selected in [Build Settings](https://docs.unity3d.com/Manual/BuildSettings.html) (menu: **File** > **Build Settings**). + +The test result displays in the build once the test completes: + +![Results of PlayMode in player test run](./images/playmode-results-standalone.png) + +The application running on the platform reports back the test results to the Editor UI then displays the executed tests and shuts down. To make sure you receive the test results from the Player on your target platform back into the Editor that’s running the test, both should be on the same network. + +> **Note:** Some platforms do not support shutting down the application with `Application.Quit`, so it will continue running after reporting the test results. + +If Unity cannot instantiate the connection, you can see the tests succeed in the running application. Running tests on platforms with arguments, in this state, does not provide XML test results. + + + +For more information, see [Edit Mode vs Play Mode tests](./edit-mode-vs-play-mode-tests.md). \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-run-test.md b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-run-test.md new file mode 100644 index 0000000..506194b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/Documentation~/workflow-run-test.md @@ -0,0 +1,19 @@ +# Workflow: How to run a test + +To run a test, you need to double-click on the test or test fixture name in the **Test Runner** window. + +You can also use one of the buttons on the top bar, **Run All** or **Run Selected**. As a result, you’ll see the test status icon changed and a counter in the top right corner updated: + +![EditMode Run Test](./images/editmode-run-test.png) + +You may also use a context menu option **Run**, right-click on any item in the test tree to have it (with all its children if any) run. + +![EditMode Run Tests](./images/editmode-run-tests.png) + + + +## Run tests within Rider + +It is possible to run unit tests in the Unity Test Framework directly from [JetBrains Rider](https://www.jetbrains.com/rider/). + +For more information, see the [JetBrains official documentation](https://www.jetbrains.com/help/rider/Running_and_Debugging_Unity_Tests.html) and their blog post [Run Unity tests in Rider 2018.1](https://blog.jetbrains.com/dotnet/2018/04/18/run-unity-tests-rider-2018-1/). \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/LICENSE.md b/Library/PackageCache/com.unity.test-framework@1.1.18/LICENSE.md new file mode 100644 index 0000000..e6a38bf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/LICENSE.md @@ -0,0 +1,5 @@ +Test Framework copyright © 2020 Unity Technologies ApS + +Licensed under the Unity Companion License for Unity-dependent projects--see [Unity Companion License](http://www.unity3d.com/legal/licenses/Unity_Companion_License). + +Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions. diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/LICENSE.md.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/LICENSE.md.meta new file mode 100644 index 0000000..f6a2ca2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3ec7596410385054a9e0bc90377fbe63 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner.meta new file mode 100644 index 0000000..d1eb573 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95cdf27b47eb82747ba9e51f41e72a35 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api.meta new file mode 100644 index 0000000..2ffb8f9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa423365b1ce06a4dbdc6fb4a8597bfa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegator.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegator.cs new file mode 100644 index 0000000..91f2d4c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegator.cs @@ -0,0 +1,136 @@ +using System; +using System.Linq; +using System.Text; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using UnityEngine; +using UnityEngine.TestRunner.TestLaunchers; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal class CallbacksDelegator : ICallbacksDelegator + { + private static CallbacksDelegator s_instance; + public static CallbacksDelegator instance + { + get + { + if (s_instance == null) + { + s_instance = new CallbacksDelegator(CallbacksHolder.instance.GetAll, new TestAdaptorFactory()); + } + return s_instance; + } + } + + private readonly Func m_CallbacksProvider; + private readonly ITestAdaptorFactory m_AdaptorFactory; + + public CallbacksDelegator(Func callbacksProvider, ITestAdaptorFactory adaptorFactory) + { + m_CallbacksProvider = callbacksProvider; + m_AdaptorFactory = adaptorFactory; + } + + public void RunStarted(ITest testsToRun) + { + m_AdaptorFactory.ClearResultsCache(); + var testRunnerTestsToRun = m_AdaptorFactory.Create(testsToRun); + TryInvokeAllCallbacks(callbacks => callbacks.RunStarted(testRunnerTestsToRun)); + } + + public void RunStartedRemotely(byte[] testsToRunData) + { + var testData = Deserialize(testsToRunData); + var testsToRun = m_AdaptorFactory.BuildTree(testData); + TryInvokeAllCallbacks(callbacks => callbacks.RunStarted(testsToRun)); + } + + public void RunFinished(ITestResult testResults) + { + var testResult = m_AdaptorFactory.Create(testResults); + TryInvokeAllCallbacks(callbacks => callbacks.RunFinished(testResult)); + } + + public void RunFinishedRemotely(byte[] testResultsData) + { + var remoteTestResult = Deserialize(testResultsData); + var testResult = m_AdaptorFactory.Create(remoteTestResult.results.First(), remoteTestResult); + TryInvokeAllCallbacks(callbacks => callbacks.RunFinished(testResult)); + } + + public void RunFailed(string failureMessage) + { + Debug.LogError(failureMessage); + TryInvokeAllCallbacks(callbacks => + { + var errorCallback = callbacks as IErrorCallbacks; + if (errorCallback != null) + { + errorCallback.OnError(failureMessage); + } + }); + } + + public void TestStarted(ITest test) + { + var testRunnerTest = m_AdaptorFactory.Create(test); + TryInvokeAllCallbacks(callbacks => callbacks.TestStarted(testRunnerTest)); + } + + public void TestStartedRemotely(byte[] testStartedData) + { + var testData = Deserialize(testStartedData); + var testsToRun = m_AdaptorFactory.BuildTree(testData); + + TryInvokeAllCallbacks(callbacks => callbacks.TestStarted(testsToRun)); + } + + public void TestFinished(ITestResult result) + { + var testResult = m_AdaptorFactory.Create(result); + TryInvokeAllCallbacks(callbacks => callbacks.TestFinished(testResult)); + } + + public void TestFinishedRemotely(byte[] testResultsData) + { + var remoteTestResult = Deserialize(testResultsData); + var testResult = m_AdaptorFactory.Create(remoteTestResult.results.First(), remoteTestResult); + TryInvokeAllCallbacks(callbacks => callbacks.TestFinished(testResult)); + } + + public void TestTreeRebuild(ITest test) + { + m_AdaptorFactory.ClearTestsCache(); + var testAdaptor = m_AdaptorFactory.Create(test); + TryInvokeAllCallbacks(callbacks => + { + var rebuildCallbacks = callbacks as ITestTreeRebuildCallbacks; + if (rebuildCallbacks != null) + { + rebuildCallbacks.TestTreeRebuild(testAdaptor); + } + }); + } + + private void TryInvokeAllCallbacks(Action callbackAction) + { + foreach (var testRunnerApiCallback in m_CallbacksProvider()) + { + try + { + callbackAction(testRunnerApiCallback); + } + catch (Exception ex) + { + Debug.LogException(ex); + } + } + } + + private static T Deserialize(byte[] data) + { + return JsonUtility.FromJson(Encoding.UTF8.GetString(data)); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegator.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegator.cs.meta new file mode 100644 index 0000000..89e0904 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0de03ebd74e2b474fa23d05ab42d0cd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegatorListener.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegatorListener.cs new file mode 100644 index 0000000..c19621d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegatorListener.cs @@ -0,0 +1,28 @@ +using UnityEngine; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal class CallbacksDelegatorListener : ScriptableObject, ITestRunnerListener + { + public void RunStarted(NUnit.Framework.Interfaces.ITest testsToRun) + { + CallbacksDelegator.instance.RunStarted(testsToRun); + } + + public void RunFinished(NUnit.Framework.Interfaces.ITestResult testResults) + { + CallbacksDelegator.instance.RunFinished(testResults); + } + + public void TestStarted(NUnit.Framework.Interfaces.ITest test) + { + CallbacksDelegator.instance.TestStarted(test); + } + + public void TestFinished(NUnit.Framework.Interfaces.ITestResult result) + { + CallbacksDelegator.instance.TestFinished(result); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegatorListener.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegatorListener.cs.meta new file mode 100644 index 0000000..c9bb94a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksDelegatorListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3e1b3cbf3fac6a459b1a602167ad311 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksHolder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksHolder.cs new file mode 100644 index 0000000..5df378d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksHolder.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal class CallbacksHolder : ScriptableSingleton, ICallbacksHolder + { + private List m_Callbacks = new List(); + public void Add(ICallbacks callback, int priority) + { + m_Callbacks.Add(new CallbackWithPriority(callback, priority)); + } + + public void Remove(ICallbacks callback) + { + m_Callbacks.RemoveAll(callbackWithPriority => callbackWithPriority.Callback == callback); + } + + public ICallbacks[] GetAll() + { + return m_Callbacks.OrderByDescending(callback => callback.Priority).Select(callback => callback.Callback).ToArray(); + } + + public void Clear() + { + m_Callbacks.Clear(); + } + + private struct CallbackWithPriority + { + public ICallbacks Callback; + public int Priority; + public CallbackWithPriority(ICallbacks callback, int priority) + { + Callback = callback; + Priority = priority; + } + } + + // Sometimes - such as when we want to test the test framework itself - it's necessary to launch a test run from + // inside a test. Because callbacks are registered globally, this can cause a lot of confusion (e.g. the in-test + // run will emit UTP messages, utterly confusing UTR). In such circumstances the safest thing to do is to + // temporarily suppress all registered callbacks for the duration of the in-test run. This method can be called + // to set up a using() block which will suppress the callbacks for the scope. + public IDisposable TemporarilySuppressCallbacks() + { + return new Suppressor(this); + } + + private sealed class Suppressor : IDisposable + { + private readonly CallbacksHolder _instance; + private readonly List _suppressed; + + public Suppressor(CallbacksHolder instance) + { + _instance = instance; + _suppressed = new List(instance.m_Callbacks); + instance.m_Callbacks.Clear(); + } + + public void Dispose() + { + _instance.m_Callbacks.AddRange(_suppressed); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksHolder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksHolder.cs.meta new file mode 100644 index 0000000..7c42028 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/CallbacksHolder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4884ccc3528cb2e40a0e6f0a19a2b35b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ExecutionSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ExecutionSettings.cs new file mode 100644 index 0000000..bc68007 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ExecutionSettings.cs @@ -0,0 +1,57 @@ +using System; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal.Filters; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + [Serializable] + public class ExecutionSettings + { + public ExecutionSettings(params Filter[] filtersToExecute) + { + filters = filtersToExecute; + } + + [SerializeField] + internal BuildTarget? targetPlatform; + + // Note: Is not available after serialization + public ITestRunSettings overloadTestRunSettings; + + [SerializeField] + internal Filter filter; + [SerializeField] + public Filter[] filters; + [SerializeField] + public bool runSynchronously; + [SerializeField] + public int playerHeartbeatTimeout = 60*10; + + internal bool EditModeIncluded() + { + return filters.Any(f => IncludesTestMode(f.testMode, TestMode.EditMode)); + } + + internal bool PlayModeInEditorIncluded() + { + return filters.Any(f => IncludesTestMode(f.testMode, TestMode.PlayMode) && targetPlatform == null); + } + + internal bool PlayerIncluded() + { + return filters.Any(f => IncludesTestMode(f.testMode, TestMode.PlayMode) && targetPlatform != null); + } + + private static bool IncludesTestMode(TestMode testMode, TestMode modeToCheckFor) + { + return (testMode & modeToCheckFor) == modeToCheckFor; + } + + internal ITestFilter BuildNUnitFilter() + { + return new OrFilter(filters.Select(f => f.ToRuntimeTestRunnerFilter(runSynchronously).BuildNUnitFilter()).ToArray()); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ExecutionSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ExecutionSettings.cs.meta new file mode 100644 index 0000000..602a117 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ExecutionSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eea34a28297f9bc4c9f4c573bc8d5d1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/Filter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/Filter.cs new file mode 100644 index 0000000..133aca1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/Filter.cs @@ -0,0 +1,35 @@ +using System; +using UnityEngine; +using UnityEngine.TestTools.TestRunner.GUI; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + [Serializable] + public class Filter + { + [SerializeField] + public TestMode testMode; + [SerializeField] + public string[] testNames; + [SerializeField] + public string[] groupNames; + [SerializeField] + public string[] categoryNames; + [SerializeField] + public string[] assemblyNames; + [SerializeField] + public BuildTarget? targetPlatform; + + internal RuntimeTestRunnerFilter ToRuntimeTestRunnerFilter(bool synchronousOnly) + { + return new RuntimeTestRunnerFilter() + { + testNames = testNames, + categoryNames = categoryNames, + groupNames = groupNames, + assemblyNames = assemblyNames, + synchronousOnly = synchronousOnly + }; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/Filter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/Filter.cs.meta new file mode 100644 index 0000000..bbb21b5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/Filter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05f92e4a2414cb144a92157752dfa324 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacks.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacks.cs new file mode 100644 index 0000000..365102b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacks.cs @@ -0,0 +1,10 @@ +namespace UnityEditor.TestTools.TestRunner.Api +{ + public interface ICallbacks + { + void RunStarted(ITestAdaptor testsToRun); + void RunFinished(ITestResultAdaptor result); + void TestStarted(ITestAdaptor test); + void TestFinished(ITestResultAdaptor result); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacks.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacks.cs.meta new file mode 100644 index 0000000..851e3f6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93eea84e53d0226479c9a584f19427b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksDelegator.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksDelegator.cs new file mode 100644 index 0000000..9005c46 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksDelegator.cs @@ -0,0 +1,18 @@ +using NUnit.Framework.Interfaces; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal interface ICallbacksDelegator + { + void RunStarted(ITest testsToRun); + void RunStartedRemotely(byte[] testsToRunData); + void RunFinished(ITestResult testResults); + void RunFinishedRemotely(byte[] testResultsData); + void RunFailed(string failureMessage); + void TestStarted(ITest test); + void TestStartedRemotely(byte[] testStartedData); + void TestFinished(ITestResult result); + void TestFinishedRemotely(byte[] testResultsData); + void TestTreeRebuild(ITest test); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksDelegator.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksDelegator.cs.meta new file mode 100644 index 0000000..fb26459 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksDelegator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f8f74fe8e363da42875d9cab025d3b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksHolder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksHolder.cs new file mode 100644 index 0000000..ff7128b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksHolder.cs @@ -0,0 +1,10 @@ +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal interface ICallbacksHolder + { + void Add(ICallbacks callback, int priority); + void Remove(ICallbacks callback); + ICallbacks[] GetAll(); + void Clear(); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksHolder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksHolder.cs.meta new file mode 100644 index 0000000..7f11d80 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ICallbacksHolder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d742f2caefd9f934d9f19dad07a08e6f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/IErrorCallbacks.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/IErrorCallbacks.cs new file mode 100644 index 0000000..2d7a922 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/IErrorCallbacks.cs @@ -0,0 +1,7 @@ +namespace UnityEditor.TestTools.TestRunner.Api +{ + public interface IErrorCallbacks : ICallbacks + { + void OnError(string message); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/IErrorCallbacks.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/IErrorCallbacks.cs.meta new file mode 100644 index 0000000..34728c6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/IErrorCallbacks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a06c562b0c5eb046bcb876a29f93c98 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptor.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptor.cs new file mode 100644 index 0000000..7e7736a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptor.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using NUnit.Framework.Interfaces; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + public interface ITestAdaptor + { + string Id { get; } + string Name { get; } + string FullName { get; } + int TestCaseCount { get; } + bool HasChildren { get; } + bool IsSuite { get; } + IEnumerable Children { get; } + ITestAdaptor Parent { get; } + int TestCaseTimeout { get; } + ITypeInfo TypeInfo { get; } + IMethodInfo Method { get; } + string[] Categories { get; } + bool IsTestAssembly { get; } + RunState RunState { get; } + string Description { get; } + string SkipReason { get; } + string ParentId { get; } + string ParentFullName { get; } + string UniqueName { get; } + string ParentUniqueName { get; } + int ChildIndex { get; } + TestMode TestMode { get; } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptor.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptor.cs.meta new file mode 100644 index 0000000..2ae45af --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85dd7af03f02aea4aae13a3945e3b313 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptorFactory.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptorFactory.cs new file mode 100644 index 0000000..021b313 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptorFactory.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using UnityEngine.TestRunner.TestLaunchers; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal interface ITestAdaptorFactory + { + ITestAdaptor Create(ITest test); + ITestAdaptor Create(RemoteTestData testData); + ITestResultAdaptor Create(ITestResult testResult); + ITestResultAdaptor Create(RemoteTestResultData testResult, RemoteTestResultDataWithTestData allData); + ITestAdaptor BuildTree(RemoteTestResultDataWithTestData data); + IEnumerator BuildTreeAsync(RemoteTestResultDataWithTestData data); + void ClearResultsCache(); + void ClearTestsCache(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptorFactory.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptorFactory.cs.meta new file mode 100644 index 0000000..05dadba --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestAdaptorFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 803abab0f7e17044db56f8760186dbd1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestResultAdaptor.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestResultAdaptor.cs new file mode 100644 index 0000000..ae4b9f6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestResultAdaptor.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using NUnit.Framework.Interfaces; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + public interface ITestResultAdaptor + { + ITestAdaptor Test { get; } + string Name { get; } + + /// Gets the full name of the test result + string FullName { get; } + + string ResultState { get; } + + TestStatus TestStatus { get; } + + /// Gets the elapsed time for running the test in seconds + double Duration { get; } + + /// Gets or sets the time the test started running. + DateTime StartTime { get; } + + /// Gets or sets the time the test finished running. + DateTime EndTime { get; } + + /// + /// Gets the message associated with a test + /// failure or with not running the test + /// + string Message { get; } + + /// + /// Gets any stacktrace associated with an + /// error or failure. Not available in + /// the Compact Framework 1.0. + /// + string StackTrace { get; } + + /// + /// Gets the number of asserts executed + /// when running the test and all its children. + /// + int AssertCount { get; } + + /// + /// Gets the number of test cases that failed + /// when running the test and all its children. + /// + int FailCount { get; } + + /// + /// Gets the number of test cases that passed + /// when running the test and all its children. + /// + int PassCount { get; } + + /// + /// Gets the number of test cases that were skipped + /// when running the test and all its children. + /// + int SkipCount { get; } + + /// + /// Gets the number of test cases that were inconclusive + /// when running the test and all its children. + /// + int InconclusiveCount { get; } + + /// + /// Indicates whether this result has any child results. + /// Accessing HasChildren should not force creation of the + /// Children collection in classes implementing this interface. + /// + bool HasChildren { get; } + + /// Gets the the collection of child results. + IEnumerable Children { get; } + + /// Gets any text output written to this result. + string Output { get; } + + TNode ToXml(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestResultAdaptor.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestResultAdaptor.cs.meta new file mode 100644 index 0000000..5ea944f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestResultAdaptor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f90cfe4bf5cfb44f84a5b11387f2a42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunSettings.cs new file mode 100644 index 0000000..90058c1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunSettings.cs @@ -0,0 +1,9 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + public interface ITestRunSettings : IDisposable + { + void Apply(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunSettings.cs.meta new file mode 100644 index 0000000..27a3a33 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2ae2ce6274819484fa8747a28cebdf3a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunnerApi.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunnerApi.cs new file mode 100644 index 0000000..da3ffdd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunnerApi.cs @@ -0,0 +1,12 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal interface ITestRunnerApi + { + string Execute(ExecutionSettings executionSettings); + void RegisterCallbacks(T testCallbacks, int priority = 0) where T : ICallbacks; + void UnregisterCallbacks(T testCallbacks) where T : ICallbacks; + void RetrieveTestList(TestMode testMode, Action callback); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunnerApi.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunnerApi.cs.meta new file mode 100644 index 0000000..d581ffd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestRunnerApi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7842a837a4b13e41ae16193db753418 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestTreeRebuildCallbacks.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestTreeRebuildCallbacks.cs new file mode 100644 index 0000000..cc5a301 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestTreeRebuildCallbacks.cs @@ -0,0 +1,7 @@ +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal interface ITestTreeRebuildCallbacks : ICallbacks + { + void TestTreeRebuild(ITestAdaptor test); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestTreeRebuildCallbacks.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestTreeRebuildCallbacks.cs.meta new file mode 100644 index 0000000..eb1117c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/ITestTreeRebuildCallbacks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4230e406313f1db43a4b548e7a3ad2e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/RunState.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/RunState.cs new file mode 100644 index 0000000..ab449de --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/RunState.cs @@ -0,0 +1,11 @@ +namespace UnityEditor.TestTools.TestRunner.Api +{ + public enum RunState + { + NotRunnable, + Runnable, + Explicit, + Skipped, + Ignored, + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/RunState.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/RunState.cs.meta new file mode 100644 index 0000000..818e3c0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/RunState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bb59cb2f66d156418ca1bd1e2703233 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptor.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptor.cs new file mode 100644 index 0000000..556bb0c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptor.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using UnityEngine.TestRunner.NUnitExtensions; +using UnityEngine.TestRunner.NUnitExtensions.Runner; +using UnityEngine.TestRunner.TestLaunchers; +using UnityEngine.TestTools.Utils; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal class TestAdaptor : ITestAdaptor + { + internal TestAdaptor(ITest test, ITestAdaptor[] children = null) + { + Id = test.Id; + Name = test.Name; + var childIndex = -1; + if (test.Properties["childIndex"].Count > 0) + { + childIndex = (int)test.Properties["childIndex"][0]; + } + FullName = childIndex != -1 ? GetIndexedTestCaseName(test.FullName, childIndex) : test.FullName; + TestCaseCount = test.TestCaseCount; + HasChildren = test.HasChildren; + IsSuite = test.IsSuite; + if (UnityTestExecutionContext.CurrentContext != null) + { + TestCaseTimeout = UnityTestExecutionContext.CurrentContext.TestCaseTimeout; + } + else + { + TestCaseTimeout = CoroutineRunner.k_DefaultTimeout; + } + + TypeInfo = test.TypeInfo; + Method = test.Method; + Categories = test.GetAllCategoriesFromTest().Distinct().ToArray(); + IsTestAssembly = test is TestAssembly; + RunState = (RunState)Enum.Parse(typeof(RunState), test.RunState.ToString()); + Description = (string)test.Properties.Get(PropertyNames.Description); + SkipReason = test.GetSkipReason(); + ParentId = test.GetParentId(); + ParentFullName = test.GetParentFullName(); + UniqueName = test.GetUniqueName(); + ParentUniqueName = test.GetParentUniqueName(); + ChildIndex = childIndex; + + if (test.Parent != null) + { + if (test.Parent.Parent == null) // Assembly level + { + TestMode = (TestMode)Enum.Parse(typeof(TestMode),test.Properties.Get("platform").ToString()); + } + } + + Children = children; + } + + public void SetParent(ITestAdaptor parent) + { + Parent = parent; + if (parent != null) + { + TestMode = parent.TestMode; + } + } + + internal TestAdaptor(RemoteTestData test) + { + Id = test.id; + Name = test.name; + FullName = test.ChildIndex != -1 ? GetIndexedTestCaseName(test.fullName, test.ChildIndex) : test.fullName; + TestCaseCount = test.testCaseCount; + HasChildren = test.hasChildren; + IsSuite = test.isSuite; + m_ChildrenIds = test.childrenIds; + TestCaseTimeout = test.testCaseTimeout; + Categories = test.Categories; + IsTestAssembly = test.IsTestAssembly; + RunState = (RunState)Enum.Parse(typeof(RunState), test.RunState.ToString()); + Description = test.Description; + SkipReason = test.SkipReason; + ParentId = test.ParentId; + UniqueName = test.UniqueName; + ParentUniqueName = test.ParentUniqueName; + ParentFullName = test.ParentFullName; + ChildIndex = test.ChildIndex; + TestMode = TestMode.PlayMode; + } + + internal void ApplyChildren(IEnumerable allTests) + { + Children = m_ChildrenIds.Select(id => allTests.First(t => t.Id == id)).ToArray(); + if (!string.IsNullOrEmpty(ParentId)) + { + Parent = allTests.FirstOrDefault(t => t.Id == ParentId); + } + } + + public string Id { get; private set; } + public string Name { get; private set; } + public string FullName { get; private set; } + public int TestCaseCount { get; private set; } + public bool HasChildren { get; private set; } + public bool IsSuite { get; private set; } + public IEnumerable Children { get; private set; } + public ITestAdaptor Parent { get; private set; } + public int TestCaseTimeout { get; private set; } + public ITypeInfo TypeInfo { get; private set; } + public IMethodInfo Method { get; private set; } + private string[] m_ChildrenIds; + public string[] Categories { get; private set; } + public bool IsTestAssembly { get; private set; } + public RunState RunState { get; } + public string Description { get; } + public string SkipReason { get; } + public string ParentId { get; } + public string ParentFullName { get; } + public string UniqueName { get; } + public string ParentUniqueName { get; } + public int ChildIndex { get; } + public TestMode TestMode { get; private set; } + + private static string GetIndexedTestCaseName(string fullName, int index) + { + var generatedTestSuffix = " GeneratedTestCase" + index; + if (fullName.EndsWith(")")) + { + // Test names from generated TestCaseSource look like Test(TestCaseSourceType) + // This inserts a unique test case index in the name, so that it becomes Test(TestCaseSourceType GeneratedTestCase0) + return fullName.Substring(0, fullName.Length - 1) + generatedTestSuffix + fullName[fullName.Length - 1]; + } + + // In some cases there can be tests with duplicate names generated in other ways and they won't have () in their name + // We just append a suffix at the end of the name in that case + return fullName + generatedTestSuffix; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptor.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptor.cs.meta new file mode 100644 index 0000000..81e39b7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e0e62db88935c74288c97c907243bd0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptorFactory.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptorFactory.cs new file mode 100644 index 0000000..7a25ec8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptorFactory.cs @@ -0,0 +1,91 @@ +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEngine.TestRunner.NUnitExtensions; +using UnityEngine.TestRunner.TestLaunchers; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal class TestAdaptorFactory : ITestAdaptorFactory + { + private Dictionary m_TestAdaptorCache = new Dictionary(); + private Dictionary m_TestResultAdaptorCache = new Dictionary(); + public ITestAdaptor Create(ITest test) + { + var uniqueName = test.GetUniqueName(); + if (m_TestAdaptorCache.ContainsKey(uniqueName)) + { + return m_TestAdaptorCache[uniqueName]; + } + + var adaptor = new TestAdaptor(test, test.Tests.Select(Create).ToArray()); + foreach (var child in adaptor.Children) + { + (child as TestAdaptor).SetParent(adaptor); + } + m_TestAdaptorCache[uniqueName] = adaptor; + return adaptor; + } + + public ITestAdaptor Create(RemoteTestData testData) + { + return new TestAdaptor(testData); + } + + public ITestResultAdaptor Create(ITestResult testResult) + { + var uniqueName = testResult.Test.GetUniqueName(); + if (m_TestResultAdaptorCache.ContainsKey(uniqueName)) + { + return m_TestResultAdaptorCache[uniqueName]; + } + var adaptor = new TestResultAdaptor(testResult, Create(testResult.Test), testResult.Children.Select(Create).ToArray()); + m_TestResultAdaptorCache[uniqueName] = adaptor; + return adaptor; + } + + public ITestResultAdaptor Create(RemoteTestResultData testResult, RemoteTestResultDataWithTestData allData) + { + return new TestResultAdaptor(testResult, allData); + } + + public ITestAdaptor BuildTree(RemoteTestResultDataWithTestData data) + { + var tests = data.tests.Select(remoteTestData => new TestAdaptor(remoteTestData)).ToList(); + + foreach (var test in tests) + { + test.ApplyChildren(tests); + } + + return tests.First(); + } + + public IEnumerator BuildTreeAsync(RemoteTestResultDataWithTestData data) + { + var tests = data.tests.Select(remoteTestData => new TestAdaptor(remoteTestData)).ToList(); + + for (var index = 0; index < tests.Count; index++) + { + var test = tests[index]; + test.ApplyChildren(tests); + if (index % 100 == 0) + { + yield return null; + } + } + + yield return tests.First(); + } + + public void ClearResultsCache() + { + m_TestResultAdaptorCache.Clear(); + } + + public void ClearTestsCache() + { + m_TestAdaptorCache.Clear(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptorFactory.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptorFactory.cs.meta new file mode 100644 index 0000000..0b1175f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestAdaptorFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0663d520c26b7c48a4135599e66acf8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestMode.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestMode.cs new file mode 100644 index 0000000..e55ee3a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestMode.cs @@ -0,0 +1,11 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + [Flags] + public enum TestMode + { + EditMode = 1 << 0, + PlayMode = 1 << 1 + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestMode.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestMode.cs.meta new file mode 100644 index 0000000..e04594b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cad095eccea17b741bc4cd264e7441cd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestResultAdaptor.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestResultAdaptor.cs new file mode 100644 index 0000000..7374b3f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestResultAdaptor.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEngine.TestRunner.TestLaunchers; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + internal class TestResultAdaptor : ITestResultAdaptor + { + private TNode m_Node; + + internal TestResultAdaptor(ITestResult result, ITestAdaptor test, ITestResultAdaptor[] children = null) + { + Test = test; + Name = result.Name; + FullName = result.FullName; + ResultState = result.ResultState.ToString(); + TestStatus = ParseTestStatus(result.ResultState.Status); + Duration = result.Duration; + StartTime = result.StartTime; + EndTime = result.EndTime; + Message = result.Message; + StackTrace = result.StackTrace; + AssertCount = result.AssertCount; + FailCount = result.FailCount; + PassCount = result.PassCount; + SkipCount = result.SkipCount; + InconclusiveCount = result.InconclusiveCount; + HasChildren = result.HasChildren; + Output = result.Output; + Children = children; + m_Node = result.ToXml(true); + } + + internal TestResultAdaptor(RemoteTestResultData result, RemoteTestResultDataWithTestData allData) + { + Test = new TestAdaptor(allData.tests.First(t => t.id == result.testId)); + Name = result.name; + FullName = result.fullName; + ResultState = result.resultState; + TestStatus = ParseTestStatus(result.testStatus); + Duration = result.duration; + StartTime = result.startTime; + EndTime = result.endTime; + Message = result.message; + StackTrace = result.stackTrace; + AssertCount = result.assertCount; + FailCount = result.failCount; + PassCount = result.passCount; + SkipCount = result.skipCount; + InconclusiveCount = result.inconclusiveCount; + HasChildren = result.hasChildren; + Output = result.output; + Children = result.childrenIds.Select(childId => new TestResultAdaptor(allData.results.First(r => r.testId == childId), allData)).ToArray(); + m_Node = TNode.FromXml(result.xml); + } + + public ITestAdaptor Test { get; private set; } + public string Name { get; private set; } + public string FullName { get; private set; } + public string ResultState { get; private set; } + public TestStatus TestStatus { get; private set; } + public double Duration { get; private set; } + public DateTime StartTime { get; private set; } + public DateTime EndTime { get; private set; } + public string Message { get; private set; } + public string StackTrace { get; private set; } + public int AssertCount { get; private set; } + public int FailCount { get; private set; } + public int PassCount { get; private set; } + public int SkipCount { get; private set; } + public int InconclusiveCount { get; private set; } + public bool HasChildren { get; private set; } + public IEnumerable Children { get; private set; } + public string Output { get; private set; } + public TNode ToXml() + { + return m_Node; + } + + private static TestStatus ParseTestStatus(NUnit.Framework.Interfaces.TestStatus testStatus) + { + return (TestStatus)Enum.Parse(typeof(TestStatus), testStatus.ToString()); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestResultAdaptor.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestResultAdaptor.cs.meta new file mode 100644 index 0000000..c2b119e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestResultAdaptor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d061ada5d3169454daf54243390b5fdb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestRunnerApi.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestRunnerApi.cs new file mode 100644 index 0000000..c7af3f0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestRunnerApi.cs @@ -0,0 +1,120 @@ +using System; +using System.Linq; +using System.Threading; +using UnityEditor.TestTools.TestRunner.CommandLineTest; +using UnityEditor.TestTools.TestRunner.TestRun; +using UnityEngine; +using UnityEngine.TestRunner.TestLaunchers; +using UnityEngine.TestTools; +using UnityEngine.TestTools.NUnitExtensions; + +namespace UnityEditor.TestTools.TestRunner.Api +{ + public class TestRunnerApi : ScriptableObject, ITestRunnerApi + { + internal ICallbacksHolder callbacksHolder; + + private ICallbacksHolder m_CallbacksHolder + { + get + { + if (callbacksHolder == null) + { + return CallbacksHolder.instance; + } + + return callbacksHolder; + } + } + + internal Func ScheduleJob = (executionSettings) => + { + var runner = new TestJobRunner(); + return runner.RunJob(new TestJobData(executionSettings)); + }; + + public string Execute(ExecutionSettings executionSettings) + { + if (executionSettings == null) + { + throw new ArgumentNullException(nameof(executionSettings)); + } + + if ((executionSettings.filters == null || executionSettings.filters.Length == 0) && executionSettings.filter != null) + { + // Map filter (singular) to filters (plural), for backwards compatibility. + executionSettings.filters = new [] {executionSettings.filter}; + } + + if (executionSettings.targetPlatform == null && executionSettings.filters != null && + executionSettings.filters.Length > 0) + { + executionSettings.targetPlatform = executionSettings.filters[0].targetPlatform; + } + + return ScheduleJob(executionSettings); + } + + public void RegisterCallbacks(T testCallbacks, int priority = 0) where T : ICallbacks + { + if (testCallbacks == null) + { + throw new ArgumentNullException(nameof(testCallbacks)); + } + + m_CallbacksHolder.Add(testCallbacks, priority); + } + + public void UnregisterCallbacks(T testCallbacks) where T : ICallbacks + { + if (testCallbacks == null) + { + throw new ArgumentNullException(nameof(testCallbacks)); + } + + m_CallbacksHolder.Remove(testCallbacks); + } + + internal void RetrieveTestList(ExecutionSettings executionSettings, Action callback) + { + if (executionSettings == null) + { + throw new ArgumentNullException(nameof(executionSettings)); + } + + var firstFilter = executionSettings.filters?.FirstOrDefault() ?? executionSettings.filter; + RetrieveTestList(firstFilter.testMode, callback); + } + + public void RetrieveTestList(TestMode testMode, Action callback) + { + if (callback == null) + { + throw new ArgumentNullException(nameof(callback)); + } + + var platform = ParseTestMode(testMode); + var testAssemblyProvider = new EditorLoadedTestAssemblyProvider(new EditorCompilationInterfaceProxy(), new EditorAssembliesProxy()); + var testAdaptorFactory = new TestAdaptorFactory(); + var testListCache = new TestListCache(testAdaptorFactory, new RemoteTestResultDataFactory(), TestListCacheData.instance); + var testListProvider = new TestListProvider(testAssemblyProvider, new UnityTestAssemblyBuilder()); + var cachedTestListProvider = new CachingTestListProvider(testListProvider, testListCache, testAdaptorFactory); + + var job = new TestListJob(cachedTestListProvider, platform, (testRoot) => + { + callback(testRoot); + }); + job.Start(); + } + + internal static bool IsRunActive() + { + return RunData.instance.isRunning; + } + + private static TestPlatform ParseTestMode(TestMode testMode) + { + return (((testMode & TestMode.EditMode) == TestMode.EditMode) ? TestPlatform.EditMode : 0) | (((testMode & TestMode.PlayMode) == TestMode.PlayMode) ? TestPlatform.PlayMode : 0); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestRunnerApi.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestRunnerApi.cs.meta new file mode 100644 index 0000000..7ad5fc1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestRunnerApi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68993ba529ae04440916cb7c23bf3279 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestStatus.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestStatus.cs new file mode 100644 index 0000000..f330fa1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestStatus.cs @@ -0,0 +1,10 @@ +namespace UnityEditor.TestTools.TestRunner.Api +{ + public enum TestStatus + { + Inconclusive, + Skipped, + Passed, + Failed + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestStatus.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestStatus.cs.meta new file mode 100644 index 0000000..38bd6af --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/Api/TestStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ec94545c5b00344c9bd8e691f15d799 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/AssemblyInfo.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/AssemblyInfo.cs new file mode 100644 index 0000000..49b650e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/AssemblyInfo.cs @@ -0,0 +1,15 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +[assembly: AssemblyTitle("UnityEditor.TestRunner")] +[assembly: InternalsVisibleTo("Assembly-CSharp-Editor-testable")] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] +[assembly: InternalsVisibleTo("Unity.PerformanceTesting.Editor")] +[assembly: InternalsVisibleTo("Unity.IntegrationTests")] +[assembly: InternalsVisibleTo("UnityEditor.TestRunner.Tests")] +[assembly: InternalsVisibleTo("Unity.TestTools.CodeCoverage.Editor")] +[assembly: InternalsVisibleTo("Unity.PackageManagerUI.Develop.Editor")] +[assembly: InternalsVisibleTo("Unity.PackageManagerUI.Develop.EditorTests")] +[assembly: InternalsVisibleTo("Unity.PackageValidationSuite.Editor")] + +[assembly: AssemblyVersion("1.0.0")] diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/AssemblyInfo.cs.meta new file mode 100644 index 0000000..5e1b8dd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9db19a04003fca7439552acd4de9baa1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser.meta new file mode 100644 index 0000000..b5a29bd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7602252bdb82b8d45ae3483c3a00d3e1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOption.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOption.cs new file mode 100644 index 0000000..8582351 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOption.cs @@ -0,0 +1,45 @@ +using System; +using System.Linq; + +namespace UnityEditor.TestRunner.CommandLineParser +{ + internal class CommandLineOption : ICommandLineOption + { + Action m_ArgAction; + + public CommandLineOption(string argName, Action action) + { + ArgName = argName; + m_ArgAction = s => action(); + } + + public CommandLineOption(string argName, Action action) + { + ArgName = argName; + m_ArgAction = action; + } + + public CommandLineOption(string argName, Action action) + { + ArgName = argName; + m_ArgAction = s => action(SplitStringToArray(s)); + } + + public string ArgName { get; private set; } + + public void ApplyValue(string value) + { + m_ArgAction(value); + } + + static string[] SplitStringToArray(string value) + { + if (string.IsNullOrEmpty(value)) + { + return null; + } + + return value.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOption.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOption.cs.meta new file mode 100644 index 0000000..65f3256 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOption.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3529368f4cd0424a89aa51080a16b06 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOptionSet.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOptionSet.cs new file mode 100644 index 0000000..d08c233 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOptionSet.cs @@ -0,0 +1,49 @@ +using System; + +namespace UnityEditor.TestRunner.CommandLineParser +{ + internal class CommandLineOptionSet + { + ICommandLineOption[] m_Options; + + public CommandLineOptionSet(params ICommandLineOption[] options) + { + m_Options = options; + } + + public void Parse(string[] args) + { + var i = 0; + while (i < args.Length) + { + var arg = args[i]; + if (!arg.StartsWith("-")) + { + i++; + continue; + } + + string value = null; + if (i + 1 < args.Length && !args[i + 1].StartsWith("-")) + { + value = args[i + 1]; + i++; + } + + ApplyValueToMatchingOptions(arg, value); + i++; + } + } + + private void ApplyValueToMatchingOptions(string argName, string value) + { + foreach (var option in m_Options) + { + if ("-" + option.ArgName == argName) + { + option.ApplyValue(value); + } + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOptionSet.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOptionSet.cs.meta new file mode 100644 index 0000000..1db24d0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/CommandLineOptionSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 139c5eac101a4dc4fb3098e30c29f15e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/ICommandLineOption.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/ICommandLineOption.cs new file mode 100644 index 0000000..7f699ad --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/ICommandLineOption.cs @@ -0,0 +1,8 @@ +namespace UnityEditor.TestRunner.CommandLineParser +{ + interface ICommandLineOption + { + string ArgName { get; } + void ApplyValue(string value); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/ICommandLineOption.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/ICommandLineOption.cs.meta new file mode 100644 index 0000000..613d95f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineParser/ICommandLineOption.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f445ca0c614a846449fcd8ae648c24e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest.meta new file mode 100644 index 0000000..d005718 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b477d1f29b65a674e9d5cdab4eb72b01 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/Executer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/Executer.cs new file mode 100644 index 0000000..fe0eb3b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/Executer.cs @@ -0,0 +1,134 @@ +using System; +using System.Linq; +using UnityEditor.TestRunner.TestLaunchers; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + internal class Executer + { + private ITestRunnerApi m_TestRunnerApi; + private ISettingsBuilder m_SettingsBuilder; + private Action m_LogErrorFormat; + private Action m_LogException; + private Action m_ExitEditorApplication; + private Func m_ScriptCompilationFailedCheck; + + public Executer(ITestRunnerApi testRunnerApi, ISettingsBuilder settingsBuilder, Action logErrorFormat, Action logException, Action exitEditorApplication, Func scriptCompilationFailedCheck) + { + m_TestRunnerApi = testRunnerApi; + m_SettingsBuilder = settingsBuilder; + m_LogErrorFormat = logErrorFormat; + m_LogException = logException; + m_ExitEditorApplication = exitEditorApplication; + m_ScriptCompilationFailedCheck = scriptCompilationFailedCheck; + } + + internal void InitializeAndExecuteRun(string[] commandLineArgs) + { + Api.ExecutionSettings executionSettings; + try + { + executionSettings = m_SettingsBuilder.BuildApiExecutionSettings(commandLineArgs); + if (executionSettings.targetPlatform.HasValue) + RemotePlayerLogController.instance.SetBuildTarget(executionSettings.targetPlatform.Value); + } + catch (SetupException exception) + { + HandleSetupException(exception); + return; + } + + try + { + Debug.Log("Executing tests with settings: " + ExecutionSettingsToString(executionSettings)); + m_TestRunnerApi.Execute(executionSettings); + } + catch (Exception exception) + { + m_LogException(exception); + m_ExitEditorApplication((int)ReturnCodes.RunError); + } + } + + internal ExecutionSettings BuildExecutionSettings(string[] commandLineArgs) + { + return m_SettingsBuilder.BuildExecutionSettings(commandLineArgs); + } + + internal enum ReturnCodes + { + Ok = 0, + Failed = 2, + RunError = 3, + PlatformNotFoundReturnCode = 4 + } + + internal void SetUpCallbacks(ExecutionSettings executionSettings) + { + RemotePlayerLogController.instance.SetLogsDirectory(executionSettings.DeviceLogsDirectory); + + var resultSavingCallback = ScriptableObject.CreateInstance(); + resultSavingCallback.m_ResultFilePath = executionSettings.TestResultsFile; + + var logSavingCallback = ScriptableObject.CreateInstance(); + + m_TestRunnerApi.RegisterCallbacks(resultSavingCallback); + m_TestRunnerApi.RegisterCallbacks(logSavingCallback); + m_TestRunnerApi.RegisterCallbacks(ScriptableObject.CreateInstance(), -10); + } + + internal void ExitOnCompileErrors() + { + if (m_ScriptCompilationFailedCheck()) + { + var handling = s_ExceptionHandlingMapping.First(h => h.m_ExceptionType == SetupException.ExceptionType.ScriptCompilationFailed); + m_LogErrorFormat(handling.m_Message, new object[0]); + m_ExitEditorApplication(handling.m_ReturnCode); + } + } + + void HandleSetupException(SetupException exception) + { + ExceptionHandling handling = s_ExceptionHandlingMapping.FirstOrDefault(h => h.m_ExceptionType == exception.Type) ?? new ExceptionHandling(exception.Type, "Unknown command line test run error. " + exception.Type, ReturnCodes.RunError); + m_LogErrorFormat(handling.m_Message, exception.Details); + m_ExitEditorApplication(handling.m_ReturnCode); + } + + private class ExceptionHandling + { + internal SetupException.ExceptionType m_ExceptionType; + internal string m_Message; + internal int m_ReturnCode; + public ExceptionHandling(SetupException.ExceptionType exceptionType, string message, ReturnCodes returnCode) + { + m_ExceptionType = exceptionType; + m_Message = message; + m_ReturnCode = (int)returnCode; + } + } + + static ExceptionHandling[] s_ExceptionHandlingMapping = new[] + { + new ExceptionHandling(SetupException.ExceptionType.ScriptCompilationFailed, "Scripts had compilation errors.", ReturnCodes.RunError), + new ExceptionHandling(SetupException.ExceptionType.PlatformNotFound, "Test platform not found ({0}).", ReturnCodes.PlatformNotFoundReturnCode), + new ExceptionHandling(SetupException.ExceptionType.TestSettingsFileNotFound, "Test settings file not found at {0}.", ReturnCodes.RunError) + }; + + private static string ExecutionSettingsToString(Api.ExecutionSettings executionSettings) + { + if (executionSettings == null) + { + return "none"; + } + + if (executionSettings.filters == null || executionSettings.filters.Length == 0) + { + return "no filter"; + } + + return "test mode = " + executionSettings.filters[0].testMode; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/Executer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/Executer.cs.meta new file mode 100644 index 0000000..e57a010 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/Executer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 083c6a3a5426382449369ddc12b691d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExecutionSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExecutionSettings.cs new file mode 100644 index 0000000..3ff2356 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExecutionSettings.cs @@ -0,0 +1,11 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + [Serializable] + internal class ExecutionSettings + { + public string TestResultsFile; + public string DeviceLogsDirectory; + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExecutionSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExecutionSettings.cs.meta new file mode 100644 index 0000000..35edc4c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExecutionSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3a75354f6ceac94ca15ca9d96593290 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExitCallbacks.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExitCallbacks.cs new file mode 100644 index 0000000..0e46f6e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExitCallbacks.cs @@ -0,0 +1,53 @@ +using System; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + [Serializable] + internal class ExitCallbacks : ScriptableObject, IErrorCallbacks + { + private bool m_AnyTestsExecuted; + private bool m_RunFailed; + internal static bool preventExit; + + public void RunFinished(ITestResultAdaptor testResults) + { + if (preventExit) + { + return; + } + + if (!m_AnyTestsExecuted) + { + Debug.LogFormat(LogType.Warning, LogOption.NoStacktrace, null, "No tests were executed"); + } + EditorApplication.Exit(m_RunFailed ? (int)Executer.ReturnCodes.Failed : (int)Executer.ReturnCodes.Ok); + } + + public void TestStarted(ITestAdaptor test) + { + if (!test.IsSuite) + { + m_AnyTestsExecuted = true; + } + } + + public void TestFinished(ITestResultAdaptor result) + { + if (!result.Test.IsSuite && (result.TestStatus == TestStatus.Failed)) + { + m_RunFailed = true; + } + } + + public void RunStarted(ITestAdaptor testsToRun) + { + } + + public void OnError(string message) + { + EditorApplication.Exit((int)Executer.ReturnCodes.RunError); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExitCallbacks.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExitCallbacks.cs.meta new file mode 100644 index 0000000..6296463 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ExitCallbacks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1adaa8dcc4fda3d4cb4d3c8e0cb65d12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ISettingsBuilder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ISettingsBuilder.cs new file mode 100644 index 0000000..557195d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ISettingsBuilder.cs @@ -0,0 +1,10 @@ +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + interface ISettingsBuilder + { + Api.ExecutionSettings BuildApiExecutionSettings(string[] commandLineArgs); + ExecutionSettings BuildExecutionSettings(string[] commandLineArgs); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ISettingsBuilder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ISettingsBuilder.cs.meta new file mode 100644 index 0000000..cc0b248 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ISettingsBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8a13cbeb2099aca47bb456f49845f86c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogSavingCallbacks.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogSavingCallbacks.cs new file mode 100644 index 0000000..40a185f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogSavingCallbacks.cs @@ -0,0 +1,29 @@ +using System; +using UnityEditor.TestRunner.TestLaunchers; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + [Serializable] + internal class LogSavingCallbacks : ScriptableObject, ICallbacks + { + public void RunStarted(ITestAdaptor testsToRun) + { + RemotePlayerLogController.instance.StartLogWriters(); + } + + public virtual void RunFinished(ITestResultAdaptor testResults) + { + RemotePlayerLogController.instance.StopLogWriters(); + } + + public void TestStarted(ITestAdaptor test) + { + } + + public void TestFinished(ITestResultAdaptor result) + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogSavingCallbacks.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogSavingCallbacks.cs.meta new file mode 100644 index 0000000..c968178 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogSavingCallbacks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d20eedbe40f0ce41a4c4f633f225de8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogWriter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogWriter.cs new file mode 100644 index 0000000..5470fd7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogWriter.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.IO; +using UnityEditor.DeploymentTargets; +using UnityEditor.Utils; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + internal class LogWriter : IDisposable + { + private string m_LogsDirectory; + private string m_DeviceID; + private Dictionary m_LogStreams; + private DeploymentTargetLogger m_Logger; + + internal LogWriter(string logsDirectory, string deviceID, DeploymentTargetLogger logger) + { + m_LogStreams = new Dictionary(); + m_Logger = logger; + m_LogsDirectory = logsDirectory; + m_DeviceID = deviceID; + + logger.logMessage += WriteLogToFile; + } + + private void WriteLogToFile(string id, string logLine) + { + StreamWriter logStream; + var streamExists = m_LogStreams.TryGetValue(id, out logStream); + if (!streamExists) + { + var filePath = GetLogFilePath(m_LogsDirectory, m_DeviceID, id); + logStream = CreateLogFile(filePath); + + m_LogStreams.Add(id, logStream); + } + + try + { + if (logLine != null) + logStream.WriteLine(logLine); + } + catch (Exception ex) + { + Debug.LogError($"Writing {id} log failed."); + Debug.LogException(ex); + } + } + + public void Stop() + { + m_Logger.Stop(); + foreach (var logStream in m_LogStreams) + { + logStream.Value.Close(); + } + } + + public void Dispose() + { + Stop(); + } + + private StreamWriter CreateLogFile(string path) + { + Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "Creating {0} device log: {1}", m_DeviceID, path); + StreamWriter streamWriter = null; + try + { + if (!Directory.Exists(path)) + Directory.CreateDirectory(Path.GetDirectoryName(path)); + + streamWriter = File.CreateText(path); + } + catch (Exception ex) + { + Debug.LogError($"Creating device log {path} file failed."); + Debug.LogException(ex); + } + + return streamWriter; + } + + private string GetLogFilePath(string lgosDirectory, string deviceID, string logID) + { + var fileName = "Device-" + deviceID + "-" + logID + ".txt"; + fileName = string.Join("_", fileName.Split(Path.GetInvalidFileNameChars())); + return Paths.Combine(lgosDirectory, fileName); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogWriter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogWriter.cs.meta new file mode 100644 index 0000000..56872b9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/LogWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05778dd1de4433d418793b6f3d3c18cf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsSavingCallbacks.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsSavingCallbacks.cs new file mode 100644 index 0000000..a3837bf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsSavingCallbacks.cs @@ -0,0 +1,50 @@ +using System; +using System.IO; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEditor.Utils; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + [Serializable] + internal class ResultsSavingCallbacks : ScriptableObject, ICallbacks + { + [SerializeField] + public string m_ResultFilePath; + + public ResultsSavingCallbacks() + { + this.m_ResultFilePath = GetDefaultResultFilePath(); + } + + public void RunStarted(ITestAdaptor testsToRun) + { + } + + public virtual void RunFinished(ITestResultAdaptor testResults) + { + if (string.IsNullOrEmpty(m_ResultFilePath)) + { + m_ResultFilePath = GetDefaultResultFilePath(); + } + + var resultWriter = new ResultsWriter(); + resultWriter.WriteResultToFile(testResults, m_ResultFilePath); + } + + public void TestStarted(ITestAdaptor test) + { + } + + public void TestFinished(ITestResultAdaptor result) + { + } + + private static string GetDefaultResultFilePath() + { + var fileName = "TestResults-" + DateTime.Now.Ticks + ".xml"; + var projectPath = Directory.GetCurrentDirectory(); + return Paths.Combine(projectPath, fileName); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsSavingCallbacks.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsSavingCallbacks.cs.meta new file mode 100644 index 0000000..ca06f3a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsSavingCallbacks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef563c5a6ecf64d4193dc144cb7d472a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsWriter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsWriter.cs new file mode 100644 index 0000000..e713a6e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsWriter.cs @@ -0,0 +1,103 @@ +using System; +using System.IO; +using System.Xml; +using NUnit.Framework.Interfaces; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + internal class ResultsWriter + { + private const string k_nUnitVersion = "3.5.0.0"; + + private const string k_TestRunNode = "test-run"; + private const string k_Id = "id"; + private const string k_Testcasecount = "testcasecount"; + private const string k_Result = "result"; + private const string k_Total = "total"; + private const string k_Passed = "passed"; + private const string k_Failed = "failed"; + private const string k_Inconclusive = "inconclusive"; + private const string k_Skipped = "skipped"; + private const string k_Asserts = "asserts"; + private const string k_EngineVersion = "engine-version"; + private const string k_ClrVersion = "clr-version"; + private const string k_StartTime = "start-time"; + private const string k_EndTime = "end-time"; + private const string k_Duration = "duration"; + + private const string k_TimeFormat = "u"; + + public void WriteResultToFile(ITestResultAdaptor result, string filePath) + { + Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "Saving results to: {0}", filePath); + + try + { + if (!Directory.Exists(filePath)) + { + CreateDirectory(filePath); + } + + using (var fileStream = File.CreateText(filePath)) + { + WriteResultToStream(result, fileStream); + } + } + catch (Exception ex) + { + Debug.LogError("Saving result file failed."); + Debug.LogException(ex); + } + } + + void CreateDirectory(string filePath) + { + var driectoryPath = Path.GetDirectoryName(filePath); + if (!String.IsNullOrEmpty(driectoryPath)) + { + Directory.CreateDirectory(driectoryPath); + } + } + + public void WriteResultToStream(ITestResultAdaptor result, StreamWriter streamWriter, XmlWriterSettings settings = null) + { + settings = settings ?? new XmlWriterSettings(); + settings.Indent = true; + settings.NewLineOnAttributes = false; + + using (var xmlWriter = XmlWriter.Create(streamWriter, settings)) + { + WriteResultsToXml(result, xmlWriter); + } + } + + void WriteResultsToXml(ITestResultAdaptor result, XmlWriter xmlWriter) + { + // XML format as specified at https://github.com/nunit/docs/wiki/Test-Result-XML-Format + + var testRunNode = new TNode(k_TestRunNode); + + testRunNode.AddAttribute(k_Id, "2"); + testRunNode.AddAttribute(k_Testcasecount, (result.PassCount + result.FailCount + result.SkipCount + result.InconclusiveCount).ToString()); + testRunNode.AddAttribute(k_Result, result.ResultState.ToString()); + testRunNode.AddAttribute(k_Total, (result.PassCount + result.FailCount + result.SkipCount + result.InconclusiveCount).ToString()); + testRunNode.AddAttribute(k_Passed, result.PassCount.ToString()); + testRunNode.AddAttribute(k_Failed, result.FailCount.ToString()); + testRunNode.AddAttribute(k_Inconclusive, result.InconclusiveCount.ToString()); + testRunNode.AddAttribute(k_Skipped, result.SkipCount.ToString()); + testRunNode.AddAttribute(k_Asserts, result.AssertCount.ToString()); + testRunNode.AddAttribute(k_EngineVersion, k_nUnitVersion); + testRunNode.AddAttribute(k_ClrVersion, Environment.Version.ToString()); + testRunNode.AddAttribute(k_StartTime, result.StartTime.ToString(k_TimeFormat)); + testRunNode.AddAttribute(k_EndTime, result.EndTime.ToString(k_TimeFormat)); + testRunNode.AddAttribute(k_Duration, result.Duration.ToString()); + + var resultNode = result.ToXml(); + testRunNode.ChildNodes.Add(resultNode); + + testRunNode.WriteTo(xmlWriter); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsWriter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsWriter.cs.meta new file mode 100644 index 0000000..074fe65 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/ResultsWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 29d603e0a726a9043b3503112271844a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunData.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunData.cs new file mode 100644 index 0000000..6a469a7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunData.cs @@ -0,0 +1,8 @@ +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + internal class RunData : ScriptableSingleton + { + public bool isRunning; + public ExecutionSettings executionSettings; + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunData.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunData.cs.meta new file mode 100644 index 0000000..4cfe30e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f8c1075884df0249b80e23a0598f9c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunSettings.cs new file mode 100644 index 0000000..9b914c7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunSettings.cs @@ -0,0 +1,29 @@ +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + internal class RunSettings : ITestRunSettings + { + private ITestSettings m_TestSettings; + public RunSettings(ITestSettings testSettings) + { + this.m_TestSettings = testSettings; + } + + public void Apply() + { + if (m_TestSettings != null) + { + m_TestSettings.SetupProjectParameters(); + } + } + + public void Dispose() + { + if (m_TestSettings != null) + { + m_TestSettings.Dispose(); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunSettings.cs.meta new file mode 100644 index 0000000..0e241ba --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/RunSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 59d3f5586b341a74c84c8f72144a4568 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SettingsBuilder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SettingsBuilder.cs new file mode 100644 index 0000000..16b66e4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SettingsBuilder.cs @@ -0,0 +1,188 @@ +using System; +using System.IO; +using UnityEditor.TestRunner.CommandLineParser; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEditor.TestTools.TestRunner.GUI; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + internal class SettingsBuilder : ISettingsBuilder + { + private ITestSettingsDeserializer m_TestSettingsDeserializer; + private Action m_LogAction; + private Action m_LogWarningAction; + private Func m_FileExistsCheck; + private Func m_ScriptCompilationFailedCheck; + public SettingsBuilder(ITestSettingsDeserializer testSettingsDeserializer, Action logAction, Action logWarningAction, Func fileExistsCheck, Func scriptCompilationFailedCheck) + { + m_LogAction = logAction; + m_LogWarningAction = logWarningAction; + m_FileExistsCheck = fileExistsCheck; + m_ScriptCompilationFailedCheck = scriptCompilationFailedCheck; + m_TestSettingsDeserializer = testSettingsDeserializer; + } + + public Api.ExecutionSettings BuildApiExecutionSettings(string[] commandLineArgs) + { + var quit = false; + string testPlatform = TestMode.EditMode.ToString(); + string[] testFilters = null; + string[] testCategories = null; + string testSettingsFilePath = null; + int testRepetitions = 1; + int? playerHeartbeatTimeout = null; + bool runSynchronously = false; + string[] testAssemblyNames = null; + + var optionSet = new CommandLineOptionSet( + new CommandLineOption("quit", () => { quit = true; }), + new CommandLineOption("testPlatform", platform => { testPlatform = platform; }), + new CommandLineOption("editorTestsFilter", filters => { testFilters = filters; }), + new CommandLineOption("testFilter", filters => { testFilters = filters; }), + new CommandLineOption("editorTestsCategories", catagories => { testCategories = catagories; }), + new CommandLineOption("testCategory", catagories => { testCategories = catagories; }), + new CommandLineOption("testSettingsFile", settingsFilePath => { testSettingsFilePath = settingsFilePath; }), + new CommandLineOption("testRepetitions", reps => { testRepetitions = int.Parse(reps); }), + new CommandLineOption("playerHeartbeatTimeout", timeout => { playerHeartbeatTimeout = int.Parse(timeout); }), + new CommandLineOption("runSynchronously", () => { runSynchronously = true; }), + new CommandLineOption("assemblyNames", assemblyNames => { testAssemblyNames = assemblyNames; }) + ); + optionSet.Parse(commandLineArgs); + + DisplayQuitWarningIfQuitIsGiven(quit); + + CheckForScriptCompilationErrors(); + + LogParametersForRun(testPlatform, testFilters, testCategories, testSettingsFilePath); + + var testSettings = GetTestSettings(testSettingsFilePath); + + var filter = new Filter() + { + groupNames = testFilters, + categoryNames = testCategories, + assemblyNames = testAssemblyNames + }; + + var buildTarget = SetFilterAndGetBuildTarget(testPlatform, filter); + + RerunCallbackData.instance.runFilters = new []{new UITestRunnerFilter() + { + categoryNames = filter.categoryNames, + groupNames = filter.groupNames, + testRepetitions = testRepetitions + }}; + + RerunCallbackData.instance.testMode = filter.testMode; + + var settings = new Api.ExecutionSettings() + { + filters = new []{filter}, + overloadTestRunSettings = new RunSettings(testSettings), + targetPlatform = buildTarget, + runSynchronously = runSynchronously + }; + + if (playerHeartbeatTimeout != null) + { + settings.playerHeartbeatTimeout = playerHeartbeatTimeout.Value; + } + + return settings; + } + + public ExecutionSettings BuildExecutionSettings(string[] commandLineArgs) + { + string resultFilePath = null; + string deviceLogsDirectory = null; + + var optionSet = new CommandLineOptionSet( + new CommandLineOption("editorTestsResultFile", filePath => { resultFilePath = filePath; }), + new CommandLineOption("testResults", filePath => { resultFilePath = filePath; }), + new CommandLineOption("deviceLogs", dirPath => { deviceLogsDirectory = dirPath; }) + ); + optionSet.Parse(commandLineArgs); + + return new ExecutionSettings() + { + TestResultsFile = resultFilePath, + DeviceLogsDirectory = deviceLogsDirectory + }; + } + + void DisplayQuitWarningIfQuitIsGiven(bool quitIsGiven) + { + if (quitIsGiven) + { + m_LogWarningAction("Running tests from command line arguments will not work when \"quit\" is specified."); + } + } + + void CheckForScriptCompilationErrors() + { + if (m_ScriptCompilationFailedCheck()) + { + throw new SetupException(SetupException.ExceptionType.ScriptCompilationFailed); + } + } + + void LogParametersForRun(string testPlatform, string[] testFilters, string[] testCategories, string testSettingsFilePath) + { + m_LogAction("Running tests for " + testPlatform); + if (testFilters != null && testFilters.Length > 0) + { + m_LogAction("With test filter: " + string.Join(", ", testFilters)); + } + if (testCategories != null && testCategories.Length > 0) + { + m_LogAction("With test categories: " + string.Join(", ", testCategories)); + } + if (!string.IsNullOrEmpty(testSettingsFilePath)) + { + m_LogAction("With test settings file: " + testSettingsFilePath); + } + } + + ITestSettings GetTestSettings(string testSettingsFilePath) + { + ITestSettings testSettings = null; + if (!string.IsNullOrEmpty(testSettingsFilePath)) + { + if (!m_FileExistsCheck(testSettingsFilePath)) + { + throw new SetupException(SetupException.ExceptionType.TestSettingsFileNotFound, testSettingsFilePath); + } + + testSettings = m_TestSettingsDeserializer.GetSettingsFromJsonFile(testSettingsFilePath); + } + return testSettings; + } + + static BuildTarget? SetFilterAndGetBuildTarget(string testPlatform, Filter filter) + { + BuildTarget? buildTarget = null; + if (testPlatform.ToLower() == "editmode") + { + filter.testMode = TestMode.EditMode; + } + else if (testPlatform.ToLower() == "playmode") + { + filter.testMode = TestMode.PlayMode; + } + else + { + try + { + buildTarget = (BuildTarget)Enum.Parse(typeof(BuildTarget), testPlatform, true); + + filter.testMode = TestMode.PlayMode; + } + catch (ArgumentException) + { + throw new SetupException(SetupException.ExceptionType.PlatformNotFound, testPlatform); + } + } + return buildTarget; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SettingsBuilder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SettingsBuilder.cs.meta new file mode 100644 index 0000000..1e2f8c9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SettingsBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7468a027a77337478e133b40b42b4f9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SetupException.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SetupException.cs new file mode 100644 index 0000000..3337713 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SetupException.cs @@ -0,0 +1,23 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + internal class SetupException : Exception + { + public ExceptionType Type { get; } + public object[] Details { get; } + + public SetupException(ExceptionType type, params object[] details) + { + Type = type; + Details = details; + } + + public enum ExceptionType + { + ScriptCompilationFailed, + PlatformNotFound, + TestSettingsFileNotFound, + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SetupException.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SetupException.cs.meta new file mode 100644 index 0000000..bdb235c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/SetupException.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63572993f2104574099a48392460b211 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/TestStarter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/TestStarter.cs new file mode 100644 index 0000000..44130b2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/TestStarter.cs @@ -0,0 +1,82 @@ +using System; +using System.IO; +using UnityEditor.TestRunner.CommandLineParser; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; +using UnityEditor.Compilation; +using System.Linq; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner.CommandLineTest +{ + [InitializeOnLoad] + static class TestStarter + { + static TestStarter() + { + if (!ShouldRunTests()) + { + return; + } + + if (EditorApplication.isCompiling) + { + return; + } + + if (RunData.instance.isRunning) + { + executer.ExitOnCompileErrors(); + executer.SetUpCallbacks(RunData.instance.executionSettings); + return; + } + + EditorApplication.update += UpdateWatch; + } + + static void UpdateWatch() + { + EditorApplication.update -= UpdateWatch; + + if (RunData.instance.isRunning) + { + return; + } + + RunData.instance.isRunning = true; + var commandLineArgs = Environment.GetCommandLineArgs(); + RunData.instance.executionSettings = executer.BuildExecutionSettings(commandLineArgs); + executer.SetUpCallbacks(RunData.instance.executionSettings); + executer.InitializeAndExecuteRun(commandLineArgs); + } + + static bool ShouldRunTests() + { + var shouldRunTests = false; + var optionSet = new CommandLineOptionSet( + new CommandLineOption("runTests", () => { shouldRunTests = true; }), + new CommandLineOption("runEditorTests", () => { shouldRunTests = true; }) + ); + optionSet.Parse(Environment.GetCommandLineArgs()); + return shouldRunTests; + } + + static Executer s_Executer; + + static Executer executer + { + get + { + if (s_Executer == null) + { + Func compilationCheck = () => EditorUtility.scriptCompilationFailed; + Action actionLogger = (string msg) => { Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, msg); }; + var apiSettingsBuilder = new SettingsBuilder(new TestSettingsDeserializer(() => new TestSettings()), actionLogger, Debug.LogWarning, File.Exists, compilationCheck); + s_Executer = new Executer(ScriptableObject.CreateInstance(), apiSettingsBuilder, Debug.LogErrorFormat, Debug.LogException, EditorApplication.Exit, compilationCheck); + } + + return s_Executer; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/TestStarter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/TestStarter.cs.meta new file mode 100644 index 0000000..4d5dfdc --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/CommandLineTest/TestStarter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d616d1a494edd144b262cf6cd5e5fda +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI.meta new file mode 100644 index 0000000..bc9308a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e609b27ad2caa14c83dd9951b6c13c6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/AssetsDatabaseHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/AssetsDatabaseHelper.cs new file mode 100644 index 0000000..0016142 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/AssetsDatabaseHelper.cs @@ -0,0 +1,11 @@ +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal class AssetsDatabaseHelper : IAssetsDatabaseHelper + { + public void OpenAssetInItsDefaultExternalEditor(string assetPath, int line) + { + var asset = AssetDatabase.LoadMainAssetAtPath(assetPath); + AssetDatabase.OpenAsset(asset, line); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/AssetsDatabaseHelper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/AssetsDatabaseHelper.cs.meta new file mode 100644 index 0000000..4fad1fc --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/AssetsDatabaseHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 740b3785866edda4b8d1e1a05570a5f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/GuiHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/GuiHelper.cs new file mode 100644 index 0000000..e1f23a3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/GuiHelper.cs @@ -0,0 +1,108 @@ +using System; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text.RegularExpressions; +using UnityEditor.Utils; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal class GuiHelper : IGuiHelper + { + public GuiHelper(IMonoCecilHelper monoCecilHelper, IAssetsDatabaseHelper assetsDatabaseHelper) + { + MonoCecilHelper = monoCecilHelper; + AssetsDatabaseHelper = assetsDatabaseHelper; + } + + protected IMonoCecilHelper MonoCecilHelper { get; private set; } + public IAssetsDatabaseHelper AssetsDatabaseHelper { get; private set; } + + public void OpenScriptInExternalEditor(Type type, MethodInfo method) + { + var fileOpenInfo = GetFileOpenInfo(type, method); + + if (string.IsNullOrEmpty(fileOpenInfo.FilePath)) + { + Debug.LogWarning("Failed to open test method source code in external editor. Inconsistent filename and yield return operator in target method."); + + return; + } + + if (fileOpenInfo.LineNumber == 1) + { + Debug.LogWarning("Failed to get a line number for unity test method. So please find it in opened file in external editor."); + } + + AssetsDatabaseHelper.OpenAssetInItsDefaultExternalEditor(fileOpenInfo.FilePath, fileOpenInfo.LineNumber); + } + + public IFileOpenInfo GetFileOpenInfo(Type type, MethodInfo method) + { + const string fileExtension = ".cs"; + + var fileOpenInfo = MonoCecilHelper.TryGetCecilFileOpenInfo(type, method); + if (string.IsNullOrEmpty(fileOpenInfo.FilePath)) + { + var dirPath = Paths.UnifyDirectorySeparator(Application.dataPath); + var allCsFiles = Directory.GetFiles(dirPath, $"*{fileExtension}", SearchOption.AllDirectories) + .Select(Paths.UnifyDirectorySeparator); + + var fileName = allCsFiles.FirstOrDefault(x => + x.Split(Path.DirectorySeparatorChar).Last().Equals(string.Concat(type.Name, fileExtension))); + + fileOpenInfo.FilePath = fileName ?? string.Empty; + } + + fileOpenInfo.FilePath = FilePathToAssetsRelativeAndUnified(fileOpenInfo.FilePath); + + return fileOpenInfo; + } + + public string FilePathToAssetsRelativeAndUnified(string filePath) + { + if (string.IsNullOrEmpty(filePath)) + return string.Empty; + + filePath = Paths.UnifyDirectorySeparator(filePath); + var length = Paths.UnifyDirectorySeparator(Application.dataPath).Length - "Assets".Length; + + return filePath.Substring(length); + } + + public bool OpenScriptInExternalEditor(string stacktrace) + { + if (string.IsNullOrEmpty(stacktrace)) + return false; + + var regex = new Regex("in (?.*):{1}(?[0-9]+)"); + + var matchingLines = stacktrace.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).Where(x => regex.IsMatch(x)).ToList(); + if (!matchingLines.Any()) + return false; + + var fileOpenInfos = matchingLines + .Select(x => regex.Match(x)) + .Select(x => + new FileOpenInfo + { + FilePath = x.Groups["path"].Value, + LineNumber = int.Parse(x.Groups["line"].Value) + }).ToList(); + + var fileOpenInfo = fileOpenInfos + .FirstOrDefault(openInfo => !string.IsNullOrEmpty(openInfo.FilePath) && File.Exists(openInfo.FilePath)); + + if (fileOpenInfo == null) + { + return false; + } + + var filePath = FilePathToAssetsRelativeAndUnified(fileOpenInfo.FilePath); + AssetsDatabaseHelper.OpenAssetInItsDefaultExternalEditor(filePath, fileOpenInfo.LineNumber); + + return true; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/GuiHelper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/GuiHelper.cs.meta new file mode 100644 index 0000000..a1512d0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/GuiHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0138170d24533e47b8e6c250c6d7fbc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IAssetsDatabaseHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IAssetsDatabaseHelper.cs new file mode 100644 index 0000000..3e26c53 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IAssetsDatabaseHelper.cs @@ -0,0 +1,7 @@ +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal interface IAssetsDatabaseHelper + { + void OpenAssetInItsDefaultExternalEditor(string assetPath, int line); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IAssetsDatabaseHelper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IAssetsDatabaseHelper.cs.meta new file mode 100644 index 0000000..622fe68 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IAssetsDatabaseHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 208e46d59ff6e304db0318377d20f5a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IGuiHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IGuiHelper.cs new file mode 100644 index 0000000..a87fb8d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IGuiHelper.cs @@ -0,0 +1,13 @@ +using System; +using System.Reflection; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal interface IGuiHelper + { + bool OpenScriptInExternalEditor(string stacktrace); + void OpenScriptInExternalEditor(Type type, MethodInfo method); + IFileOpenInfo GetFileOpenInfo(Type type, MethodInfo method); + string FilePathToAssetsRelativeAndUnified(string filePath); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IGuiHelper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IGuiHelper.cs.meta new file mode 100644 index 0000000..9c6e266 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/IGuiHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd57cf917f61bbb42b8f030436426ddd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder.meta new file mode 100644 index 0000000..e682923 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07ea0326ed848fb4489187cb58f96113 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/RenderingOptions.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/RenderingOptions.cs new file mode 100644 index 0000000..34118d6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/RenderingOptions.cs @@ -0,0 +1,12 @@ +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal class RenderingOptions + { + public string nameFilter; + public bool showSucceeded; + public bool showFailed; + public bool showIgnored; + public bool showNotRunned; + public string[] categories; + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/RenderingOptions.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/RenderingOptions.cs.meta new file mode 100644 index 0000000..57e6748 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/RenderingOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87357ff0dec4ef348a295235835c6ee4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/ResultSummarizer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/ResultSummarizer.cs new file mode 100644 index 0000000..7d7b7ff --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/ResultSummarizer.cs @@ -0,0 +1,174 @@ +// **************************************************************** +// Based on nUnit 2.6.2 (http://www.nunit.org/) +// **************************************************************** + +using System; +using System.Collections.Generic; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + /// + /// Summary description for ResultSummarizer. + /// + internal class ResultSummarizer + { + private int m_ErrorCount = -1; + private int m_FailureCount; + private int m_IgnoreCount = -1; + private int m_InconclusiveCount = -1; + private int m_NotRunnable = -1; + private int m_ResultCount; + private int m_SkipCount; + private int m_SuccessCount; + private int m_TestsRun; + + private TimeSpan m_Duration = TimeSpan.FromSeconds(0); + + public ResultSummarizer(IEnumerable results) + { + foreach (var result in results) + Summarize(result); + } + + public bool success + { + get { return m_FailureCount == 0; } + } + + /// + /// Returns the number of test cases for which results + /// have been summarized. Any tests excluded by use of + /// Category or Explicit attributes are not counted. + /// + public int ResultCount + { + get { return m_ResultCount; } + } + + /// + /// Returns the number of test cases actually run, which + /// is the same as ResultCount, less any Skipped, Ignored + /// or NonRunnable tests. + /// + public int TestsRun + { + get { return m_TestsRun; } + } + + /// + /// Returns the number of tests that passed + /// + public int Passed + { + get { return m_SuccessCount; } + } + + /// + /// Returns the number of test cases that had an error. + /// + public int errors + { + get { return m_ErrorCount; } + } + + /// + /// Returns the number of test cases that failed. + /// + public int failures + { + get { return m_FailureCount; } + } + + /// + /// Returns the number of test cases that failed. + /// + public int inconclusive + { + get { return m_InconclusiveCount; } + } + + /// + /// Returns the number of test cases that were not runnable + /// due to errors in the signature of the class or method. + /// Such tests are also counted as Errors. + /// + public int notRunnable + { + get { return m_NotRunnable; } + } + + /// + /// Returns the number of test cases that were skipped. + /// + public int Skipped + { + get { return m_SkipCount; } + } + + public int ignored + { + get { return m_IgnoreCount; } + } + + public double duration + { + get { return m_Duration.TotalSeconds; } + } + + public int testsNotRun + { + get { return m_SkipCount + m_IgnoreCount + m_NotRunnable; } + } + + public void Summarize(TestRunnerResult result) + { + m_Duration += TimeSpan.FromSeconds(result.duration); + m_ResultCount++; + + if (result.resultStatus != TestRunnerResult.ResultStatus.NotRun) + { + //TODO implement missing features + // if(result.IsIgnored) + // { + // m_IgnoreCount++; + // return; + // } + + m_SkipCount++; + return; + } + + switch (result.resultStatus) + { + case TestRunnerResult.ResultStatus.Passed: + m_SuccessCount++; + m_TestsRun++; + break; + case TestRunnerResult.ResultStatus.Failed: + m_FailureCount++; + m_TestsRun++; + break; + //TODO implement missing features + // case TestResultState.Error: + // case TestResultState.Cancelled: + // m_ErrorCount++; + // m_TestsRun++; + // break; + // case TestResultState.Inconclusive: + // m_InconclusiveCount++; + // m_TestsRun++; + // break; + // case TestResultState.NotRunnable: + // m_NotRunnable++; + // // errorCount++; + // break; + // case TestResultState.Ignored: + // m_IgnoreCount++; + // break; + default: + m_SkipCount++; + break; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/ResultSummarizer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/ResultSummarizer.cs.meta new file mode 100644 index 0000000..bc4b465 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/ResultSummarizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95a2914724952ef40bb590d0607fc878 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestFilterSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestFilterSettings.cs new file mode 100644 index 0000000..10f96bf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestFilterSettings.cs @@ -0,0 +1,104 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal class TestFilterSettings + { + public bool showSucceeded; + public bool showFailed; + public bool showIgnored; + public bool showNotRun; + + public string filterByName; + public int filterByCategory; + + private GUIContent m_SucceededBtn; + private GUIContent m_FailedBtn; + private GUIContent m_IgnoredBtn; + private GUIContent m_NotRunBtn; + + public string[] availableCategories; + + private readonly string m_PrefsKey; + + public TestFilterSettings(string prefsKey) + { + availableCategories = null; + m_PrefsKey = prefsKey; + Load(); + UpdateCounters(Enumerable.Empty()); + } + + public void Load() + { + showSucceeded = EditorPrefs.GetBool(m_PrefsKey + ".ShowSucceeded", true); + showFailed = EditorPrefs.GetBool(m_PrefsKey + ".ShowFailed", true); + showIgnored = EditorPrefs.GetBool(m_PrefsKey + ".ShowIgnored", true); + showNotRun = EditorPrefs.GetBool(m_PrefsKey + ".ShowNotRun", true); + filterByName = EditorPrefs.GetString(m_PrefsKey + ".FilterByName", string.Empty); + filterByCategory = EditorPrefs.GetInt(m_PrefsKey + ".FilterByCategory", 0); + } + + public void Save() + { + EditorPrefs.SetBool(m_PrefsKey + ".ShowSucceeded", showSucceeded); + EditorPrefs.SetBool(m_PrefsKey + ".ShowFailed", showFailed); + EditorPrefs.SetBool(m_PrefsKey + ".ShowIgnored", showIgnored); + EditorPrefs.SetBool(m_PrefsKey + ".ShowNotRun", showNotRun); + EditorPrefs.SetString(m_PrefsKey + ".FilterByName", filterByName); + EditorPrefs.SetInt(m_PrefsKey + ".FilterByCategory", filterByCategory); + } + + public void UpdateCounters(IEnumerable results) + { + var summary = new ResultSummarizer(results); + + m_SucceededBtn = new GUIContent(summary.Passed.ToString(), Icons.s_SuccessImg, "Show tests that succeeded"); + m_FailedBtn = new GUIContent((summary.errors + summary.failures + summary.inconclusive).ToString(), Icons.s_FailImg, "Show tests that failed"); + m_IgnoredBtn = new GUIContent((summary.ignored + summary.notRunnable).ToString(), Icons.s_IgnoreImg, "Show tests that are ignored"); + m_NotRunBtn = new GUIContent((summary.testsNotRun - summary.ignored - summary.notRunnable).ToString(), Icons.s_UnknownImg, "Show tests that didn't run"); + } + + public string[] GetSelectedCategories() + { + if (availableCategories == null) + return new string[0]; + + return availableCategories.Where((c, i) => (filterByCategory & (1 << i)) != 0).ToArray(); + } + + public void OnGUI() + { + EditorGUI.BeginChangeCheck(); + + filterByName = GUILayout.TextField(filterByName, "ToolbarSeachTextField", GUILayout.MinWidth(100), GUILayout.MaxWidth(250), GUILayout.ExpandWidth(true)); + if (GUILayout.Button(GUIContent.none, string.IsNullOrEmpty(filterByName) ? "ToolbarSeachCancelButtonEmpty" : "ToolbarSeachCancelButton")) + filterByName = string.Empty; + + if (availableCategories != null && availableCategories.Length > 0) + filterByCategory = EditorGUILayout.MaskField(filterByCategory, availableCategories, EditorStyles.toolbarDropDown, GUILayout.MaxWidth(90)); + + showSucceeded = GUILayout.Toggle(showSucceeded, m_SucceededBtn, EditorStyles.toolbarButton); + showFailed = GUILayout.Toggle(showFailed, m_FailedBtn, EditorStyles.toolbarButton); + showIgnored = GUILayout.Toggle(showIgnored, m_IgnoredBtn, EditorStyles.toolbarButton); + showNotRun = GUILayout.Toggle(showNotRun, m_NotRunBtn, EditorStyles.toolbarButton); + + if (EditorGUI.EndChangeCheck()) + Save(); + } + + public RenderingOptions BuildRenderingOptions() + { + var options = new RenderingOptions(); + options.showSucceeded = showSucceeded; + options.showFailed = showFailed; + options.showIgnored = showIgnored; + options.showNotRunned = showNotRun; + options.nameFilter = filterByName; + options.categories = GetSelectedCategories(); + return options; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestFilterSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestFilterSettings.cs.meta new file mode 100644 index 0000000..af8b799 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestFilterSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 046c3854296c5ec48bac50da6ca248ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestTreeViewBuilder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestTreeViewBuilder.cs new file mode 100644 index 0000000..63965af --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestTreeViewBuilder.cs @@ -0,0 +1,110 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEditor.IMGUI.Controls; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine.TestRunner.NUnitExtensions; +using UnityEngine.TestRunner.NUnitExtensions.Filters; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal class TestTreeViewBuilder + { + public List results = new List(); + private readonly List m_OldTestResultList; + private readonly TestRunnerUIFilter m_UIFilter; + private readonly ITestAdaptor m_TestListRoot; + + private readonly List m_AvailableCategories = new List(); + + public string[] AvailableCategories + { + get { return m_AvailableCategories.Distinct().OrderBy(a => a).ToArray(); } + } + + public TestTreeViewBuilder(ITestAdaptor tests, List oldTestResultResults, TestRunnerUIFilter uiFilter) + { + m_AvailableCategories.Add(CategoryFilterExtended.k_DefaultCategory); + m_OldTestResultList = oldTestResultResults; + m_TestListRoot = tests; + m_UIFilter = uiFilter; + } + + public TreeViewItem BuildTreeView(TestFilterSettings settings, bool sceneBased, string sceneName) + { + var rootItem = new TreeViewItem(int.MaxValue, 0, null, "Invisible Root Item"); + ParseTestTree(0, rootItem, m_TestListRoot); + return rootItem; + } + + private bool IsFilteredOutByUIFilter(ITestAdaptor test, TestRunnerResult result) + { + if (m_UIFilter.PassedHidden && result.resultStatus == TestRunnerResult.ResultStatus.Passed) + return true; + if (m_UIFilter.FailedHidden && (result.resultStatus == TestRunnerResult.ResultStatus.Failed || result.resultStatus == TestRunnerResult.ResultStatus.Inconclusive)) + return true; + if (m_UIFilter.NotRunHidden && (result.resultStatus == TestRunnerResult.ResultStatus.NotRun || result.resultStatus == TestRunnerResult.ResultStatus.Skipped)) + return true; + if (m_UIFilter.CategoryFilter.Length > 0) + return !test.Categories.Any(category => m_UIFilter.CategoryFilter.Contains(category)); + return false; + } + + private void ParseTestTree(int depth, TreeViewItem rootItem, ITestAdaptor testElement) + { + m_AvailableCategories.AddRange(testElement.Categories); + + var testElementId = testElement.UniqueName; + if (!testElement.HasChildren) + { + var result = m_OldTestResultList.FirstOrDefault(a => a.uniqueId == testElementId); + + if (result != null && + (result.ignoredOrSkipped + || result.notRunnable + || testElement.RunState == RunState.NotRunnable + || testElement.RunState == RunState.Ignored + || testElement.RunState == RunState.Skipped + ) + ) + { + //if the test was or becomes ignored or not runnable, we recreate the result in case it has changed + result = null; + } + if (result == null) + { + result = new TestRunnerResult(testElement); + } + results.Add(result); + + var test = new TestTreeViewItem(testElement, depth, rootItem); + if (!IsFilteredOutByUIFilter(testElement, result)) + rootItem.AddChild(test); + test.SetResult(result); + return; + } + + var groupResult = m_OldTestResultList.FirstOrDefault(a => a.uniqueId == testElementId); + if (groupResult == null) + { + groupResult = new TestRunnerResult(testElement); + } + + results.Add(groupResult); + var group = new TestTreeViewItem(testElement, depth, rootItem); + group.SetResult(groupResult); + + depth++; + foreach (var child in testElement.Children) + { + ParseTestTree(depth, group, child); + } + + + if (testElement.IsTestAssembly && !testElement.HasChildren) + return; + + if (group.hasChildren) + rootItem.AddChild(group); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestTreeViewBuilder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestTreeViewBuilder.cs.meta new file mode 100644 index 0000000..68a6c25 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListBuilder/TestTreeViewBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e17c88b021c2a4c409b3f15b0d80ac62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListGuiHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListGuiHelper.cs new file mode 100644 index 0000000..05cadba --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListGuiHelper.cs @@ -0,0 +1,135 @@ +using System; +using System.IO; +using System.Linq; +using UnityEditor.ProjectWindowCallback; +using UnityEditor.Scripting.ScriptCompilation; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal class TestListGUIHelper + { + private const string kResourcesTemplatePath = "Resources/ScriptTemplates"; + private const string kAssemblyDefinitionTestTemplate = "92-Assembly Definition-NewTestAssembly.asmdef.txt"; + + private const string kAssemblyDefinitionEditModeTestTemplate = + "92-Assembly Definition-NewEditModeTestAssembly.asmdef.txt"; + + private const string kTestScriptTemplate = "83-C# Script-NewTestScript.cs.txt"; + private const string kNewTestScriptName = "NewTestScript.cs"; + private const string kNunit = "nunit.framework.dll"; + + [MenuItem("Assets/Create/Testing/Tests Assembly Folder", false, 83)] + public static void MenuItemAddFolderAndAsmDefForTesting() + { + AddFolderAndAsmDefForTesting(); + } + + [MenuItem("Assets/Create/Testing/Tests Assembly Folder", true, 83)] + public static bool MenuItemAddFolderAndAsmDefForTestingWithValidation() + { + return !SelectedFolderContainsTestAssembly(); + } + + public static void AddFolderAndAsmDefForTesting(bool isEditorOnly = false) + { + ProjectWindowUtil.CreateFolderWithTemplates("Tests", + isEditorOnly ? kAssemblyDefinitionEditModeTestTemplate : kAssemblyDefinitionTestTemplate); + } + + public static bool SelectedFolderContainsTestAssembly() + { + var theNearestCustomScriptAssembly = GetTheNearestCustomScriptAssembly(); + if (theNearestCustomScriptAssembly != null) + { + return theNearestCustomScriptAssembly.PrecompiledReferences != null && theNearestCustomScriptAssembly.PrecompiledReferences.Any(x => Path.GetFileName(x) == kNunit); + } + + return false; + } + + [MenuItem("Assets/Create/Testing/C# Test Script", false, 83)] + public static void AddTest() + { + var basePath = Path.Combine(EditorApplication.applicationContentsPath, kResourcesTemplatePath); + var destPath = Path.Combine(GetActiveFolderPath(), kNewTestScriptName); + var templatePath = Path.Combine(basePath, kTestScriptTemplate); + var icon = EditorGUIUtility.IconContent("cs Script Icon").image as Texture2D; + ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, + ScriptableObject.CreateInstance(), destPath, icon, templatePath); + + AssetDatabase.Refresh(); + } + + [MenuItem("Assets/Create/Testing/C# Test Script", true, 83)] + public static bool CanAddScriptAndItWillCompile() + { + return CanAddEditModeTestScriptAndItWillCompile() || CanAddPlayModeTestScriptAndItWillCompile(); + } + + public static bool CanAddEditModeTestScriptAndItWillCompile() + { + var theNearestCustomScriptAssembly = GetTheNearestCustomScriptAssembly(); + if (theNearestCustomScriptAssembly != null) + { + return (theNearestCustomScriptAssembly.AssemblyFlags & AssemblyFlags.EditorOnly) == + AssemblyFlags.EditorOnly; + } + + var activeFolderPath = GetActiveFolderPath(); + return activeFolderPath.ToLower().Contains("/editor"); + } + + public static bool CanAddPlayModeTestScriptAndItWillCompile() + { + if (PlayerSettings.playModeTestRunnerEnabled) + { + return true; + } + + var theNearestCustomScriptAssembly = GetTheNearestCustomScriptAssembly(); + + if (theNearestCustomScriptAssembly == null) + { + return false; + } + + var hasTestAssemblyFlag = theNearestCustomScriptAssembly.PrecompiledReferences != null && theNearestCustomScriptAssembly.PrecompiledReferences.Any(x => Path.GetFileName(x) == kNunit);; + var editorOnlyAssembly = (theNearestCustomScriptAssembly.AssemblyFlags & AssemblyFlags.EditorOnly) != 0; + + return hasTestAssemblyFlag && !editorOnlyAssembly; + } + + public static string GetActiveFolderPath() + { + var path = "Assets"; + + foreach (var obj in Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.Assets)) + { + path = AssetDatabase.GetAssetPath(obj); + if (!string.IsNullOrEmpty(path) && File.Exists(path)) + { + path = Path.GetDirectoryName(path); + break; + } + } + return path; + } + + private static CustomScriptAssembly GetTheNearestCustomScriptAssembly() + { + CustomScriptAssembly findCustomScriptAssemblyFromScriptPath; + try + { + findCustomScriptAssemblyFromScriptPath = + EditorCompilationInterface.Instance.FindCustomScriptAssemblyFromScriptPath( + Path.Combine(GetActiveFolderPath(), "Foo.cs")); + } + catch (Exception) + { + return null; + } + return findCustomScriptAssemblyFromScriptPath; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListGuiHelper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListGuiHelper.cs.meta new file mode 100644 index 0000000..70d8f19 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListGuiHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 97a05971510726f438153cd4987526fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView.meta new file mode 100644 index 0000000..63ce2ad --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 68cb547af0187634aad591a09c01cd5b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/Icons.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/Icons.cs new file mode 100644 index 0000000..52c94a5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/Icons.cs @@ -0,0 +1,24 @@ +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal static class Icons + { + public static readonly Texture2D s_FailImg; + public static readonly Texture2D s_IgnoreImg; + public static readonly Texture2D s_SuccessImg; + public static readonly Texture2D s_UnknownImg; + public static readonly Texture2D s_InconclusiveImg; + public static readonly Texture2D s_StopwatchImg; + + static Icons() + { + s_FailImg = EditorGUIUtility.IconContent("TestFailed").image as Texture2D; + s_IgnoreImg = EditorGUIUtility.IconContent("TestIgnored").image as Texture2D; + s_SuccessImg = EditorGUIUtility.IconContent("TestPassed").image as Texture2D; + s_UnknownImg = EditorGUIUtility.IconContent("TestNormal").image as Texture2D; + s_InconclusiveImg = EditorGUIUtility.IconContent("TestInconclusive").image as Texture2D; + s_StopwatchImg = EditorGUIUtility.IconContent("TestStopwatch").image as Texture2D; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/Icons.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/Icons.cs.meta new file mode 100644 index 0000000..3ddb7ee --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/Icons.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27769e9b00b038d47aefe306a4d20bec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewDataSource.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewDataSource.cs new file mode 100644 index 0000000..454af2a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewDataSource.cs @@ -0,0 +1,98 @@ +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using UnityEditor.IMGUI.Controls; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine.SceneManagement; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal class TestListTreeViewDataSource : TreeViewDataSource + { + private bool m_ExpandTreeOnCreation; + private readonly TestListGUI m_TestListGUI; + private ITestAdaptor m_RootTest; + + public TestListTreeViewDataSource(TreeViewController testListTree, TestListGUI testListGUI, ITestAdaptor rootTest) : base(testListTree) + { + showRootItem = false; + rootIsCollapsable = false; + m_TestListGUI = testListGUI; + m_RootTest = rootTest; + } + + public void UpdateRootTest(ITestAdaptor rootTest) + { + m_RootTest = rootTest; + } + + public override void FetchData() + { + var sceneName = SceneManager.GetActiveScene().name; + if (sceneName.StartsWith("InitTestScene")) + sceneName = PlaymodeTestsController.GetController().settings.originalScene; + + var testListBuilder = new TestTreeViewBuilder(m_RootTest, m_TestListGUI.newResultList, m_TestListGUI.m_TestRunnerUIFilter); + + m_RootItem = testListBuilder.BuildTreeView(null, false, sceneName); + SetExpanded(m_RootItem, true); + if (m_RootItem.hasChildren && m_RootItem.children.Count == 1) + SetExpanded(m_RootItem.children[0], true); + + if (m_ExpandTreeOnCreation) + SetExpandedWithChildren(m_RootItem, true); + + m_TestListGUI.newResultList = new List(testListBuilder.results); + m_TestListGUI.m_TestRunnerUIFilter.availableCategories = testListBuilder.AvailableCategories; + m_NeedRefreshRows = true; + } + + public override bool IsRenamingItemAllowed(TreeViewItem item) + { + return false; + } + + public void ExpandTreeOnCreation() + { + m_ExpandTreeOnCreation = true; + } + + public override bool IsExpandable(TreeViewItem item) + { + if (item is TestTreeViewItem) + return ((TestTreeViewItem)item).IsGroupNode; + return base.IsExpandable(item); + } + + protected override List Search(TreeViewItem rootItem, string search) + { + var result = new List(); + + if (rootItem.hasChildren) + { + foreach (var child in rootItem.children) + { + SearchTestTree(child, search, result); + } + } + return result; + } + + protected void SearchTestTree(TreeViewItem item, string search, IList searchResult) + { + var testItem = item as TestTreeViewItem; + if (!testItem.IsGroupNode) + { + if (testItem.FullName.ToLower().Contains(search)) + { + searchResult.Add(item); + } + } + else if (item.children != null) + { + foreach (var child in item.children) + SearchTestTree(child, search, searchResult); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewDataSource.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewDataSource.cs.meta new file mode 100644 index 0000000..5ec5332 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewDataSource.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce87c287371edde43a4b5fcfdee7b9ef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewGUI.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewGUI.cs new file mode 100644 index 0000000..6657813 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewGUI.cs @@ -0,0 +1,11 @@ +using UnityEditor.IMGUI.Controls; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal class TestListTreeViewGUI : TreeViewGUI + { + public TestListTreeViewGUI(TreeViewController testListTree) : base(testListTree) + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewGUI.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewGUI.cs.meta new file mode 100644 index 0000000..ed09e25 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestListTreeViewGUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52c907c81459f324497af504b84fd557 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestTreeViewItem.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestTreeViewItem.cs new file mode 100644 index 0000000..3c3f649 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestTreeViewItem.cs @@ -0,0 +1,137 @@ +using System; +using System.Reflection; +using System.Text; +using UnityEditor.IMGUI.Controls; +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal sealed class TestTreeViewItem : TreeViewItem + { + public TestRunnerResult result; + internal ITestAdaptor m_Test; + + public Type type; + public MethodInfo method; + + private const int k_ResultTestMaxLength = 15000; + + public bool IsGroupNode { get { return m_Test.IsSuite; } } + + public string FullName { get { return m_Test.FullName; } } + + public string GetAssemblyName() + { + var test = m_Test; + while (test != null) + { + if (test.IsTestAssembly) + { + return test.FullName; + } + + test = test.Parent; + } + + return null; + } + + public TestTreeViewItem(ITestAdaptor test, int depth, TreeViewItem parent) + : base(GetId(test), depth, parent, test.Name) + { + m_Test = test; + + if (test.TypeInfo != null) + { + type = test.TypeInfo.Type; + } + if (test.Method != null) + { + method = test.Method.MethodInfo; + } + + displayName = test.Name.Replace("\n", ""); + icon = Icons.s_UnknownImg; + } + + private static int GetId(ITestAdaptor test) + { + return test.UniqueName.GetHashCode(); + } + + public void SetResult(TestRunnerResult testResult) + { + result = testResult; + result.SetResultChangedCallback(ResultUpdated); + ResultUpdated(result); + } + + public string GetResultText() + { + if (result.resultStatus == TestRunnerResult.ResultStatus.NotRun) + { + return string.Empty; + } + var durationString = String.Format("{0:0.000}", result.duration); + var sb = new StringBuilder(string.Format("{0} ({1}s)", displayName.Trim(), durationString)); + if (!string.IsNullOrEmpty(result.description)) + { + sb.AppendFormat("\n{0}", result.description); + } + if (!string.IsNullOrEmpty(result.messages)) + { + sb.Append("\n---\n"); + sb.Append(result.messages.Trim()); + } + if (!string.IsNullOrEmpty(result.stacktrace)) + { + sb.Append("\n---\n"); + sb.Append(result.stacktrace.Trim()); + } + if (!string.IsNullOrEmpty(result.output)) + { + sb.Append("\n---\n"); + sb.Append(result.output.Trim()); + } + if (sb.Length > k_ResultTestMaxLength) + { + sb.Length = k_ResultTestMaxLength; + sb.AppendFormat("...\n\n---MESSAGE TRUNCATED AT {0} CHARACTERS---", k_ResultTestMaxLength); + } + return sb.ToString().Trim(); + } + + private void ResultUpdated(TestRunnerResult testResult) + { + switch (testResult.resultStatus) + { + case TestRunnerResult.ResultStatus.Passed: + icon = Icons.s_SuccessImg; + break; + case TestRunnerResult.ResultStatus.Failed: + icon = Icons.s_FailImg; + break; + case TestRunnerResult.ResultStatus.Inconclusive: + icon = Icons.s_InconclusiveImg; + break; + case TestRunnerResult.ResultStatus.Skipped: + icon = Icons.s_IgnoreImg; + break; + default: + if (testResult.ignoredOrSkipped) + { + icon = Icons.s_IgnoreImg; + } + else if (testResult.notRunnable) + { + icon = Icons.s_FailImg; + } + else + { + icon = Icons.s_UnknownImg; + } + break; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestTreeViewItem.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestTreeViewItem.cs.meta new file mode 100644 index 0000000..1a29abe --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestListTreeView/TestTreeViewItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce567ddbf30368344bc7b80e20cac36e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerResult.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerResult.cs new file mode 100644 index 0000000..717cf37 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerResult.cs @@ -0,0 +1,148 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + [Serializable] + internal class TestRunnerResult : UITestRunnerFilter.IClearableResult + { + public string id; + public string uniqueId; + public string name; + public string fullName; + public ResultStatus resultStatus = ResultStatus.NotRun; + public float duration; + public string messages; + public string output; + public string stacktrace; + public bool notRunnable; + public bool ignoredOrSkipped; + public string description; + public bool isSuite; + public List categories; + public string parentId; + public string parentUniqueId; + + //This field is suppose to mark results from before domain reload + //Such result is outdated because the code might haev changed + //This field will get reset every time a domain reload happens + [NonSerialized] + public bool notOutdated; + + protected Action m_OnResultUpdate; + + internal TestRunnerResult(ITestAdaptor test) + { + id = test.Id; + uniqueId = test.UniqueName; + + fullName = test.FullName; + name = test.Name; + description = test.Description; + isSuite = test.IsSuite; + + ignoredOrSkipped = test.RunState == RunState.Ignored || test.RunState == RunState.Skipped; + notRunnable = test.RunState == RunState.NotRunnable; + + if (ignoredOrSkipped) + { + messages = test.SkipReason; + } + if (notRunnable) + { + resultStatus = ResultStatus.Failed; + messages = test.SkipReason; + } + categories = test.Categories.ToList(); + parentId = test.ParentId; + parentUniqueId = test.ParentUniqueName; + } + + internal TestRunnerResult(ITestResultAdaptor testResult) : this(testResult.Test) + { + notOutdated = true; + + messages = testResult.Message; + output = testResult.Output; + stacktrace = testResult.StackTrace; + duration = (float)testResult.Duration; + if (testResult.Test.IsSuite && testResult.ResultState == "Ignored") + { + resultStatus = ResultStatus.Passed; + } + else + { + resultStatus = ParseNUnitResultStatus(testResult.TestStatus); + } + } + + public void Update(TestRunnerResult result) + { + if (ReferenceEquals(result, null)) + return; + resultStatus = result.resultStatus; + duration = result.duration; + messages = result.messages; + output = result.output; + stacktrace = result.stacktrace; + ignoredOrSkipped = result.ignoredOrSkipped; + notRunnable = result.notRunnable; + description = result.description; + notOutdated = result.notOutdated; + if (m_OnResultUpdate != null) + m_OnResultUpdate(this); + } + + public void SetResultChangedCallback(Action resultUpdated) + { + m_OnResultUpdate = resultUpdated; + } + + [Serializable] + internal enum ResultStatus + { + NotRun, + Passed, + Failed, + Inconclusive, + Skipped + } + + private static ResultStatus ParseNUnitResultStatus(TestStatus status) + { + switch (status) + { + case TestStatus.Passed: + return ResultStatus.Passed; + case TestStatus.Failed: + return ResultStatus.Failed; + case TestStatus.Inconclusive: + return ResultStatus.Inconclusive; + case TestStatus.Skipped: + return ResultStatus.Skipped; + default: + return ResultStatus.NotRun; + } + } + + public override string ToString() + { + return string.Format("{0} ({1})", name, fullName); + } + + public string Id { get { return uniqueId; } } + public string FullName { get { return fullName; } } + public string ParentId { get { return parentUniqueId; } } + public bool IsSuite { get { return isSuite; } } + public List Categories { get { return categories; } } + + public void Clear() + { + resultStatus = ResultStatus.NotRun; + if (m_OnResultUpdate != null) + m_OnResultUpdate(this); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerResult.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerResult.cs.meta new file mode 100644 index 0000000..771053c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a04a45bbed9e1714f9902fc9443669b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerUIFilter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerUIFilter.cs new file mode 100644 index 0000000..c55c2b3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerUIFilter.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + [Serializable] + internal class TestRunnerUIFilter + { + private int m_PassedCount; + private int m_FailedCount; + private int m_NotRunCount; + private int m_InconclusiveCount; + private int m_SkippedCount; + + public int PassedCount { get { return m_PassedCount; } } + public int FailedCount { get { return m_FailedCount + m_InconclusiveCount; } } + public int NotRunCount { get { return m_NotRunCount + m_SkippedCount; } } + + [SerializeField] + public bool PassedHidden; + [SerializeField] + public bool FailedHidden; + [SerializeField] + public bool NotRunHidden; + + [SerializeField] + private string m_SearchString; + [SerializeField] + private int selectedCategoryMask; + + public string[] availableCategories = new string[0]; + + + private GUIContent m_SucceededBtn; + private GUIContent m_FailedBtn; + private GUIContent m_NotRunBtn; + + public Action RebuildTestList; + public Action SearchStringChanged; + public Action SearchStringCleared; + public bool IsFiltering + { + get + { + return !string.IsNullOrEmpty(m_SearchString) || PassedHidden || FailedHidden || NotRunHidden || + selectedCategoryMask != 0; + } + } + + public string[] CategoryFilter + { + get + { + var list = new List(); + for (int i = 0; i < availableCategories.Length; i++) + { + if ((selectedCategoryMask & (1 << i)) != 0) + { + list.Add(availableCategories[i]); + } + } + return list.ToArray(); + } + } + + public void UpdateCounters(List resultList) + { + m_PassedCount = m_FailedCount = m_NotRunCount = m_InconclusiveCount = m_SkippedCount = 0; + foreach (var result in resultList) + { + if (result.isSuite) + continue; + switch (result.resultStatus) + { + case TestRunnerResult.ResultStatus.Passed: + m_PassedCount++; + break; + case TestRunnerResult.ResultStatus.Failed: + m_FailedCount++; + break; + case TestRunnerResult.ResultStatus.Inconclusive: + m_InconclusiveCount++; + break; + case TestRunnerResult.ResultStatus.Skipped: + m_SkippedCount++; + break; + case TestRunnerResult.ResultStatus.NotRun: + default: + m_NotRunCount++; + break; + } + } + + var succeededTooltip = string.Format("Show tests that succeeded\n{0} succeeded", m_PassedCount); + m_SucceededBtn = new GUIContent(PassedCount.ToString(), Icons.s_SuccessImg, succeededTooltip); + var failedTooltip = string.Format("Show tests that failed\n{0} failed\n{1} inconclusive", m_FailedCount, m_InconclusiveCount); + m_FailedBtn = new GUIContent(FailedCount.ToString(), Icons.s_FailImg, failedTooltip); + var notRunTooltip = string.Format("Show tests that didn't run\n{0} didn't run\n{1} skipped or ignored", m_NotRunCount, m_SkippedCount); + m_NotRunBtn = new GUIContent(NotRunCount.ToString(), Icons.s_UnknownImg, notRunTooltip); + } + + public void Draw() + { + EditorGUI.BeginChangeCheck(); + if (m_SearchString == null) + { + m_SearchString = ""; + } + m_SearchString = EditorGUILayout.ToolbarSearchField(m_SearchString); + if (EditorGUI.EndChangeCheck() && SearchStringChanged != null) + { + SearchStringChanged(m_SearchString); + if (String.IsNullOrEmpty(m_SearchString)) + SearchStringCleared(); + } + + if (availableCategories != null && availableCategories.Any()) + { + EditorGUI.BeginChangeCheck(); + selectedCategoryMask = EditorGUILayout.MaskField(selectedCategoryMask, availableCategories, EditorStyles.toolbarDropDown, GUILayout.MaxWidth(150)); + if (EditorGUI.EndChangeCheck() && RebuildTestList != null) + { + RebuildTestList(); + } + } + else + { + EditorGUILayout.Popup(0, new[] { "" }, EditorStyles.toolbarDropDown, GUILayout.MaxWidth(150)); + } + + EditorGUI.BeginChangeCheck(); + if (m_SucceededBtn != null) + { + PassedHidden = !GUILayout.Toggle(!PassedHidden, m_SucceededBtn, EditorStyles.toolbarButton, GUILayout.MaxWidth(GetMaxWidth(PassedCount))); + } + if (m_FailedBtn != null) + { + FailedHidden = !GUILayout.Toggle(!FailedHidden, m_FailedBtn, EditorStyles.toolbarButton, GUILayout.MaxWidth(GetMaxWidth(FailedCount))); + } + if (m_NotRunBtn != null) + { + NotRunHidden = !GUILayout.Toggle(!NotRunHidden, m_NotRunBtn, EditorStyles.toolbarButton, GUILayout.MaxWidth(GetMaxWidth(NotRunCount))); + } + + if (EditorGUI.EndChangeCheck() && RebuildTestList != null) + { + RebuildTestList(); + } + } + + private static int GetMaxWidth(int count) + { + if (count < 10) + return 33; + return count < 100 ? 40 : 47; + } + + public void Clear() + { + PassedHidden = false; + FailedHidden = false; + NotRunHidden = false; + selectedCategoryMask = 0; + m_SearchString = ""; + if (SearchStringChanged != null) + { + SearchStringChanged(m_SearchString); + } + if (SearchStringCleared != null) + { + SearchStringCleared(); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerUIFilter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerUIFilter.cs.meta new file mode 100644 index 0000000..e65f91a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/TestRunnerUIFilter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 15f870c6975ad6449b5b52514b90dc2b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/UITestRunnerFilter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/UITestRunnerFilter.cs new file mode 100644 index 0000000..a557dee --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/UITestRunnerFilter.cs @@ -0,0 +1,164 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + [Serializable] + internal class UITestRunnerFilter + { +#pragma warning disable 649 + public string[] assemblyNames; + public string[] groupNames; + public string[] categoryNames; + public string[] testNames; + public int testRepetitions = 1; + public bool synchronousOnly = false; + + public static string AssemblyNameFromPath(string path) + { + string output = Path.GetFileName(path); + if (output != null && output.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) + return output.Substring(0, output.Length - 4); + return output; + } + + private bool CategoryMatches(IEnumerable categories) + { + if (categoryNames == null || categoryNames.Length == 0) + return true; + + foreach (string category in categories) + { + if (categoryNames.Contains(category)) + return true; + } + + return false; + } + + private bool IDMatchesAssembly(string id) + { + if (AreOptionalFiltersEmpty()) + return true; + + if (assemblyNames == null || assemblyNames.Length == 0) + return true; + + int openingBracket = id.IndexOf('['); + int closingBracket = id.IndexOf(']'); + if (openingBracket >= 0 && openingBracket < id.Length && closingBracket > openingBracket && + openingBracket < id.Length) + { + //Some assemblies are absolute and explicitly part of the test ID e.g. + //"[/path/to/assembly-name.dll][rest of ID ...]" + //While some are minimal assembly names e.g. + //"[assembly-name][rest of ID ...]" + //Strip them down to just the assembly name + string assemblyNameFromID = + AssemblyNameFromPath(id.Substring(openingBracket + 1, closingBracket - openingBracket - 1)); + foreach (string assemblyName in assemblyNames) + { + if (assemblyName.Equals(assemblyNameFromID, StringComparison.OrdinalIgnoreCase)) + return true; + } + } + + return false; + } + + private bool NameMatches(string name) + { + if (AreOptionalFiltersEmpty()) + return true; + + if (groupNames == null || groupNames.Length == 0) + return true; + + foreach (var nameFromFilter in groupNames) + { + //Strict regex match for test group name on its own + if (Regex.IsMatch(name, nameFromFilter)) + return true; + //Match test names that end with parametrized test values and full nunit generated test names that have . separators + var regex = nameFromFilter.TrimEnd('$') + @"[\.|\(.*\)]"; + if (Regex.IsMatch(name, regex)) + return true; + } + + return false; + } + + private bool AreOptionalFiltersEmpty() + { + if (assemblyNames != null && assemblyNames.Length != 0) + return false; + if (groupNames != null && groupNames.Length != 0) + return false; + if (testNames != null && testNames.Length != 0) + return false; + return true; + } + + private bool NameMatchesExactly(string name) + { + if (AreOptionalFiltersEmpty()) + return true; + + if (testNames == null || testNames.Length == 0) + return true; + + foreach (var exactName in testNames) + { + if (name == exactName) + return true; + } + + return false; + } + + private static void ClearAncestors(IEnumerable newResultList, string parentID) + { + if (string.IsNullOrEmpty(parentID)) + return; + foreach (var result in newResultList) + { + if (result.Id == parentID) + { + result.Clear(); + ClearAncestors(newResultList, result.ParentId); + break; + } + } + } + + public void ClearResults(List newResultList) + { + foreach (var result in newResultList) + { + if (!result.IsSuite && CategoryMatches(result.Categories)) + { + if (IDMatchesAssembly(result.Id) && NameMatches(result.FullName) && + NameMatchesExactly(result.FullName)) + { + result.Clear(); + ClearAncestors(newResultList, result.ParentId); + } + } + } + } + + internal interface IClearableResult + { + string Id { get; } + string FullName { get; } + string ParentId { get; } + bool IsSuite { get; } + List Categories { get; } + void Clear(); + } + + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/UITestRunnerFilter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/UITestRunnerFilter.cs.meta new file mode 100644 index 0000000..26ef62e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/UITestRunnerFilter.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8069e1fc631e461ababf11f19a9c0df3 +timeCreated: 1595586126 \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views.meta new file mode 100644 index 0000000..ca14182 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5535d742ea2e4941850b421f9c70a1f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/EditModeTestListGUI.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/EditModeTestListGUI.cs new file mode 100644 index 0000000..1a7d906 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/EditModeTestListGUI.cs @@ -0,0 +1,92 @@ +using System; +using System.Linq; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + [Serializable] + internal class EditModeTestListGUI : TestListGUI + { + public override TestMode TestMode + { + get { return TestMode.EditMode; } + } + + public override void RenderNoTestsInfo() + { + if (!TestListGUIHelper.SelectedFolderContainsTestAssembly()) + { + var noTestText = "No tests to show"; + + if (!PlayerSettings.playModeTestRunnerEnabled) + { + const string testsArePulledFromCustomAssemblies = + "EditMode tests can be in Editor only Assemblies, either in the editor special folder or Editor only Assembly Definitions that references the \"nunit.framework.dll\" Assembly Reference or any of the Assembly Definition References \"UnityEngine.TestRunner\" or \"UnityEditor.TestRunner\".."; + noTestText += Environment.NewLine + testsArePulledFromCustomAssemblies; + } + + EditorGUILayout.HelpBox(noTestText, MessageType.Info); + if (GUILayout.Button("Create EditMode Test Assembly Folder")) + { + TestListGUIHelper.AddFolderAndAsmDefForTesting(isEditorOnly: true); + } + } + + if (!TestListGUIHelper.CanAddEditModeTestScriptAndItWillCompile()) + { + UnityEngine.GUI.enabled = false; + EditorGUILayout.HelpBox("EditMode test scripts can only be created in editor test assemblies.", MessageType.Warning); + } + if (GUILayout.Button("Create Test Script in current folder")) + { + TestListGUIHelper.AddTest(); + } + UnityEngine.GUI.enabled = true; + } + + public override void PrintHeadPanel() + { + base.PrintHeadPanel(); + DrawFilters(); + } + + protected override void RunTests(params UITestRunnerFilter[] filters) + { + if (EditorUtility.scriptCompilationFailed) + { + Debug.LogError("Fix compilation issues before running tests"); + return; + } + + foreach (var filter in filters) + { + filter.ClearResults(newResultList.OfType().ToList()); + } + + RerunCallbackData.instance.runFilters = filters; + RerunCallbackData.instance.testMode = TestMode.EditMode; + + var testRunnerApi = ScriptableObject.CreateInstance(); + testRunnerApi.Execute(new ExecutionSettings() + { + filters = filters.Select(filter => new Filter() + { + assemblyNames = filter.assemblyNames, + categoryNames = filter.categoryNames, + groupNames = filter.groupNames, + testMode = TestMode, + testNames = filter.testNames + }).ToArray() + }); + } + + public override TestPlatform TestPlatform { get { return TestPlatform.EditMode; } } + + protected override bool IsBusy() + { + return TestRunnerApi.IsRunActive() || EditorApplication.isCompiling || EditorApplication.isPlaying; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/EditModeTestListGUI.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/EditModeTestListGUI.cs.meta new file mode 100644 index 0000000..afd4abb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/EditModeTestListGUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0336a32a79bfaed43a3fd2d88b91e974 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/PlayModeTestListGUI.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/PlayModeTestListGUI.cs new file mode 100644 index 0000000..4f82f47 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/PlayModeTestListGUI.cs @@ -0,0 +1,241 @@ +using System; +using System.IO; +using System.Linq; +using UnityEditor.SceneManagement; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + [Serializable] + internal class PlayModeTestListGUI : TestListGUI + { + private struct PlayerMenuItem + { + public GUIContent name; + public bool filterSelectedTestsOnly; + public bool buildOnly; + } + + [SerializeField] + private int m_SelectedOption; + + public override TestMode TestMode + { + get { return TestMode.PlayMode; } + } + + private string GetBuildText() + { + switch (EditorUserBuildSettings.activeBuildTarget) + { + case BuildTarget.Android: + if (EditorUserBuildSettings.exportAsGoogleAndroidProject) + return "Export"; + break; + case BuildTarget.iOS: + return "Export"; + } + return "Build"; + } + + private string PickBuildLocation() + { + var target = EditorUserBuildSettings.activeBuildTarget; + var targetGroup = BuildPipeline.GetBuildTargetGroup(target); + var lastLocation = EditorUserBuildSettings.GetBuildLocation(target); + var extension = PostprocessBuildPlayer.GetExtensionForBuildTarget(targetGroup, target, BuildOptions.None); + var defaultName = FileUtil.GetLastPathNameComponent(lastLocation); + lastLocation = string.IsNullOrEmpty(lastLocation) ? string.Empty : Path.GetDirectoryName(lastLocation); + bool updateExistingBuild; + var location = EditorUtility.SaveBuildPanel(target, $"{GetBuildText()} {target}", lastLocation, defaultName, extension, + out updateExistingBuild); + if (!string.IsNullOrEmpty(location)) + EditorUserBuildSettings.SetBuildLocation(target, location); + return location; + } + + private void ExecuteAction(PlayerMenuItem item) + { + var runSettings = new PlayerLauncherTestRunSettings(); + runSettings.buildOnly = item.buildOnly; + if (runSettings.buildOnly) + { + runSettings.buildOnlyLocationPath = PickBuildLocation(); + if (string.IsNullOrEmpty(runSettings.buildOnlyLocationPath)) + { + Debug.LogWarning("Aborting, build selection was canceled."); + return; + } + } + + if (item.filterSelectedTestsOnly) + RunTestsInPlayer(runSettings, SelectedTestsFilter); + else + { + var filter = new UITestRunnerFilter { categoryNames = m_TestRunnerUIFilter.CategoryFilter }; + RunTestsInPlayer(runSettings, filter); + } + } + + public override void PrintHeadPanel() + { + EditorGUILayout.BeginHorizontal(GUILayout.ExpandHeight(false)); + base.PrintHeadPanel(); + + PlayerMenuItem[] menuItems; + + if (EditorUserBuildSettings.installInBuildFolder) + { + menuItems = new [] + { + // Note: We select here buildOnly = false, so build location dialog won't show up + // The player won't actually be ran when using together with EditorUserBuildSettings.installInBuildFolder + new PlayerMenuItem() + { + name = new GUIContent("Install All Tests In Build Folder"), buildOnly = false, filterSelectedTestsOnly = false + }, + new PlayerMenuItem() + { + name = new GUIContent("Install Selected Tests In Build Folder"), buildOnly = false, filterSelectedTestsOnly = true + } + }; + } + else + { + menuItems = new [] + { + new PlayerMenuItem() + { + name = new GUIContent("Run All Tests"), buildOnly = false, filterSelectedTestsOnly = false + }, + new PlayerMenuItem() + { + name = new GUIContent("Run Selected Tests"), buildOnly = false, filterSelectedTestsOnly = true + }, + new PlayerMenuItem() + { + name = new GUIContent($"{GetBuildText()} All Tests"), buildOnly = true, filterSelectedTestsOnly = false + }, + new PlayerMenuItem() + { + name = new GUIContent($"{GetBuildText()} Selected Tests"), buildOnly = true, filterSelectedTestsOnly = true + }, + }; + } + + m_SelectedOption = Math.Min(m_SelectedOption, menuItems.Length - 1); + var selectedMenuItem = menuItems[m_SelectedOption]; + if (GUILayout.Button( + new GUIContent($"{selectedMenuItem.name.text} ({EditorUserBuildSettings.activeBuildTarget})"), + EditorStyles.toolbarButton)) + { + ExecuteAction(selectedMenuItem); + } + + if (GUILayout.Button(GUIContent.none, EditorStyles.toolbarDropDown)) + { + Vector2 mousePos = Event.current.mousePosition; + EditorUtility.DisplayCustomMenu(new Rect(mousePos.x, mousePos.y, 0, 0), + menuItems.Select(m => m.name).ToArray(), + -1, + (object userData, string[] options, int selected) => m_SelectedOption = selected, + menuItems); + } + + EditorGUILayout.EndHorizontal(); + DrawFilters(); + EditorGUILayout.BeginHorizontal(GUILayout.ExpandHeight(false)); + EditorGUILayout.EndHorizontal(); + } + + public override void RenderNoTestsInfo() + { + if (!TestListGUIHelper.SelectedFolderContainsTestAssembly()) + { + var noTestText = "No tests to show"; + if (!PlayerSettings.playModeTestRunnerEnabled) + { + const string testsArePulledFromCustomAssemblues = "Test Assemblies are defined by Assembly Definitions that references the \"nunit.framework.dll\" Assembly Reference or the Assembly Definition Reference \"UnityEngine.TestRunner\"."; + const string infoTextAboutTestsInAllAssemblies = + "To have tests in all assemblies enable it in the Test Runner window context menu"; + noTestText += Environment.NewLine + testsArePulledFromCustomAssemblues + Environment.NewLine + + infoTextAboutTestsInAllAssemblies; + } + + EditorGUILayout.HelpBox(noTestText, MessageType.Info); + if (GUILayout.Button("Create PlayMode Test Assembly Folder")) + { + TestListGUIHelper.AddFolderAndAsmDefForTesting(); + } + } + + if (!TestListGUIHelper.CanAddPlayModeTestScriptAndItWillCompile()) + { + UnityEngine.GUI.enabled = false; + EditorGUILayout.HelpBox("PlayMode test scripts can only be created in non editor test assemblies.", MessageType.Warning); + } + if (GUILayout.Button("Create Test Script in current folder")) + { + TestListGUIHelper.AddTest(); + } + UnityEngine.GUI.enabled = true; + } + + protected override void RunTests(UITestRunnerFilter[] filters) + { + foreach (var filter in filters) + { + filter.ClearResults(newResultList.OfType().ToList()); + } + + RerunCallbackData.instance.runFilters = filters; + RerunCallbackData.instance.testMode = TestMode.PlayMode; + + var testRunnerApi = ScriptableObject.CreateInstance(); + testRunnerApi.Execute(new ExecutionSettings() + { + filters = filters.Select(filter => new Filter() + { + assemblyNames = filter.assemblyNames, + categoryNames = filter.categoryNames, + groupNames = filter.groupNames, + testMode = TestMode, + testNames = filter.testNames + }).ToArray() + }); + } + + + protected void RunTestsInPlayer(PlayerLauncherTestRunSettings runSettings, params UITestRunnerFilter[] filters) + { + foreach (var filter in filters) + { + filter.ClearResults(newResultList.OfType().ToList()); + } + + var testRunnerApi = ScriptableObject.CreateInstance(); + testRunnerApi.Execute(new ExecutionSettings() + { + overloadTestRunSettings = runSettings, + filters = filters.Select(filter => new Filter() + { + assemblyNames = filter.assemblyNames, + categoryNames = filter.categoryNames, + groupNames = filter.groupNames, + testMode = TestMode, + testNames = filter.testNames + }).ToArray(), + targetPlatform = EditorUserBuildSettings.activeBuildTarget + }); + } + + public override TestPlatform TestPlatform { get { return TestPlatform.PlayMode; } } + + protected override bool IsBusy() + { + return TestRunnerApi.IsRunActive() || PlaymodeLauncher.IsRunning || EditorApplication.isCompiling || EditorApplication.isPlaying; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/PlayModeTestListGUI.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/PlayModeTestListGUI.cs.meta new file mode 100644 index 0000000..6f0c1d6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/PlayModeTestListGUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3efd39f2cfb43a4c830d4fd5689900f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/TestListGUIBase.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/TestListGUIBase.cs new file mode 100644 index 0000000..ae633ba --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/TestListGUIBase.cs @@ -0,0 +1,540 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using UnityEditor.IMGUI.Controls; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal abstract class TestListGUI + { + private static readonly GUIContent s_GUIRunSelectedTests = EditorGUIUtility.TrTextContent("Run Selected", "Run selected test(s)"); + private static readonly GUIContent s_GUIRunAllTests = EditorGUIUtility.TrTextContent("Run All", "Run all tests"); + private static readonly GUIContent s_GUIRerunFailedTests = EditorGUIUtility.TrTextContent("Rerun Failed", "Rerun all failed tests"); + private static readonly GUIContent s_GUIRun = EditorGUIUtility.TrTextContent("Run"); + private static readonly GUIContent s_GUIRunUntilFailed = EditorGUIUtility.TrTextContent("Run Until Failed"); + private static readonly GUIContent s_GUIRun100Times = EditorGUIUtility.TrTextContent("Run 100 times"); + private static readonly GUIContent s_GUIOpenTest = EditorGUIUtility.TrTextContent("Open source code"); + private static readonly GUIContent s_GUIOpenErrorLine = EditorGUIUtility.TrTextContent("Open error line"); + private static readonly GUIContent s_GUIClearResults = EditorGUIUtility.TrTextContent("Clear Results", "Clear all test results"); + + [SerializeField] + protected TestRunnerWindow m_Window; + [SerializeField] + public List newResultList = new List(); + [SerializeField] + private string m_ResultText; + [SerializeField] + private string m_ResultStacktrace; + + private TreeViewController m_TestListTree; + [SerializeField] + internal TreeViewState m_TestListState; + [SerializeField] + internal TestRunnerUIFilter m_TestRunnerUIFilter = new TestRunnerUIFilter(); + + private Vector2 m_TestInfoScroll, m_TestListScroll; + private string m_PreviousProjectPath; + private List m_QueuedResults = new List(); + + protected TestListGUI() + { + MonoCecilHelper = new MonoCecilHelper(); + AssetsDatabaseHelper = new AssetsDatabaseHelper(); + + GuiHelper = new GuiHelper(MonoCecilHelper, AssetsDatabaseHelper); + } + + protected IMonoCecilHelper MonoCecilHelper { get; private set; } + protected IAssetsDatabaseHelper AssetsDatabaseHelper { get; private set; } + protected IGuiHelper GuiHelper { get; private set; } + protected UITestRunnerFilter[] SelectedTestsFilter => GetSelectedTestsAsFilter(m_TestListTree.GetSelection()); + + public abstract TestMode TestMode { get; } + + public virtual void PrintHeadPanel() + { + EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); + using (new EditorGUI.DisabledScope(IsBusy())) + { + if (GUILayout.Button(s_GUIRunAllTests, EditorStyles.toolbarButton)) + { + var filter = new UITestRunnerFilter {categoryNames = m_TestRunnerUIFilter.CategoryFilter}; + RunTests(filter); + GUIUtility.ExitGUI(); + } + } + using (new EditorGUI.DisabledScope(m_TestListTree == null || !m_TestListTree.HasSelection() || IsBusy())) + { + if (GUILayout.Button(s_GUIRunSelectedTests, EditorStyles.toolbarButton)) + { + RunTests(SelectedTestsFilter); + GUIUtility.ExitGUI(); + } + } + using (new EditorGUI.DisabledScope(m_TestRunnerUIFilter.FailedCount == 0 || IsBusy())) + { + if (GUILayout.Button(s_GUIRerunFailedTests, EditorStyles.toolbarButton)) + { + var failedTestnames = new List(); + foreach (var result in newResultList) + { + if (result.isSuite) + continue; + if (result.resultStatus == TestRunnerResult.ResultStatus.Failed || + result.resultStatus == TestRunnerResult.ResultStatus.Inconclusive) + failedTestnames.Add(result.fullName); + } + RunTests(new UITestRunnerFilter() {testNames = failedTestnames.ToArray(), categoryNames = m_TestRunnerUIFilter.CategoryFilter}); + GUIUtility.ExitGUI(); + } + } + using (new EditorGUI.DisabledScope(IsBusy())) + { + if (GUILayout.Button(s_GUIClearResults, EditorStyles.toolbarButton)) + { + foreach (var result in newResultList) + { + result.Clear(); + } + m_TestRunnerUIFilter.UpdateCounters(newResultList); + Reload(); + GUIUtility.ExitGUI(); + } + } + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + } + + protected void DrawFilters() + { + EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); + m_TestRunnerUIFilter.Draw(); + EditorGUILayout.EndHorizontal(); + } + + public bool HasTreeData() + { + return m_TestListTree != null; + } + + public virtual void RenderTestList() + { + if (m_TestListTree == null) + { + GUILayout.Label("Loading..."); + return; + } + + m_TestListScroll = EditorGUILayout.BeginScrollView(m_TestListScroll, + GUILayout.ExpandWidth(true), + GUILayout.MaxWidth(2000)); + + if (m_TestListTree.data.root == null || m_TestListTree.data.rowCount == 0 || (!m_TestListTree.isSearching && !m_TestListTree.data.GetItem(0).hasChildren)) + { + if (m_TestRunnerUIFilter.IsFiltering) + { + if (GUILayout.Button("Clear filters")) + { + m_TestRunnerUIFilter.Clear(); + m_TestListTree.ReloadData(); + m_Window.Repaint(); + } + } + RenderNoTestsInfo(); + } + else + { + var treeRect = EditorGUILayout.GetControlRect(GUILayout.ExpandHeight(true), GUILayout.ExpandWidth(true)); + var treeViewKeyboardControlId = GUIUtility.GetControlID(FocusType.Keyboard); + + m_TestListTree.OnGUI(treeRect, treeViewKeyboardControlId); + } + + EditorGUILayout.EndScrollView(); + } + + public virtual void RenderNoTestsInfo() + { + EditorGUILayout.HelpBox("No tests to show", MessageType.Info); + } + + public void RenderDetails() + { + m_TestInfoScroll = EditorGUILayout.BeginScrollView(m_TestInfoScroll); + var resultTextSize = TestRunnerWindow.Styles.info.CalcSize(new GUIContent(m_ResultText)); + EditorGUILayout.SelectableLabel(m_ResultText, TestRunnerWindow.Styles.info, + GUILayout.ExpandHeight(true), + GUILayout.ExpandWidth(true), + GUILayout.MinWidth(resultTextSize.x), + GUILayout.MinHeight(resultTextSize.y)); + EditorGUILayout.EndScrollView(); + } + + public void Reload() + { + if (m_TestListTree != null) + { + m_TestListTree.ReloadData(); + UpdateQueuedResults(); + } + } + + public void Repaint() + { + if (m_TestListTree == null || m_TestListTree.data.root == null) + { + return; + } + + m_TestListTree.Repaint(); + if (m_TestListTree.data.rowCount == 0) + m_TestListTree.SetSelection(new int[0], false); + TestSelectionCallback(m_TestListState.selectedIDs.ToArray()); + } + + public void Init(TestRunnerWindow window, ITestAdaptor rootTest) + { + if (m_Window == null) + { + m_Window = window; + } + + if (m_TestListTree == null) + { + if (m_TestListState == null) + { + m_TestListState = new TreeViewState(); + } + if (m_TestListTree == null) + m_TestListTree = new TreeViewController(m_Window, m_TestListState); + + m_TestListTree.deselectOnUnhandledMouseDown = false; + + m_TestListTree.selectionChangedCallback += TestSelectionCallback; + m_TestListTree.itemDoubleClickedCallback += TestDoubleClickCallback; + m_TestListTree.contextClickItemCallback += TestContextClickCallback; + + var testListTreeViewDataSource = new TestListTreeViewDataSource(m_TestListTree, this, rootTest); + + if (!newResultList.Any()) + testListTreeViewDataSource.ExpandTreeOnCreation(); + + m_TestListTree.Init(new Rect(), + testListTreeViewDataSource, + new TestListTreeViewGUI(m_TestListTree), + null); + } + + EditorApplication.update += RepaintIfProjectPathChanged; + + m_TestRunnerUIFilter.UpdateCounters(newResultList); + m_TestRunnerUIFilter.RebuildTestList = () => m_TestListTree.ReloadData(); + m_TestRunnerUIFilter.SearchStringChanged = s => m_TestListTree.searchString = s; + m_TestRunnerUIFilter.SearchStringCleared = () => FrameSelection(); + } + + public void UpdateResult(TestRunnerResult result) + { + if (!HasTreeData()) + { + m_QueuedResults.Add(result); + return; + } + + if (newResultList.All(x => x.uniqueId != result.uniqueId)) + { + return; + } + + var testRunnerResult = newResultList.FirstOrDefault(x => x.uniqueId == result.uniqueId); + if (testRunnerResult != null) + { + testRunnerResult.Update(result); + } + + Repaint(); + m_Window.Repaint(); + } + + public void UpdateTestTree(ITestAdaptor test) + { + if (!HasTreeData()) + { + return; + } + + (m_TestListTree.data as TestListTreeViewDataSource).UpdateRootTest(test); + + m_TestListTree.ReloadData(); + Repaint(); + m_Window.Repaint(); + } + + private void UpdateQueuedResults() + { + foreach (var testRunnerResult in m_QueuedResults) + { + var existingResult = newResultList.FirstOrDefault(x => x.uniqueId == testRunnerResult.uniqueId); + if (existingResult != null) + { + existingResult.Update(testRunnerResult); + } + } + m_QueuedResults.Clear(); + TestSelectionCallback(m_TestListState.selectedIDs.ToArray()); + m_TestRunnerUIFilter.UpdateCounters(newResultList); + Repaint(); + m_Window.Repaint(); + } + + internal void TestSelectionCallback(int[] selected) + { + if (m_TestListTree != null && selected.Length == 1) + { + if (m_TestListTree != null) + { + var node = m_TestListTree.FindItem(selected[0]); + if (node is TestTreeViewItem) + { + var test = node as TestTreeViewItem; + m_ResultText = test.GetResultText(); + m_ResultStacktrace = test.result.stacktrace; + } + } + } + else if (selected.Length == 0) + { + m_ResultText = ""; + } + } + + protected virtual void TestDoubleClickCallback(int id) + { + if (IsBusy()) + return; + + RunTests(GetSelectedTestsAsFilter(new List { id })); + GUIUtility.ExitGUI(); + } + + protected virtual void RunTests(params UITestRunnerFilter[] filters) + { + throw new NotImplementedException(); + } + + protected virtual void TestContextClickCallback(int id) + { + if (id == 0) + return; + + var m = new GenericMenu(); + var testFilters = GetSelectedTestsAsFilter(m_TestListState.selectedIDs); + var multilineSelection = m_TestListState.selectedIDs.Count > 1; + + if (!multilineSelection) + { + var testNode = GetSelectedTest(); + var isNotSuite = !testNode.IsGroupNode; + if (isNotSuite) + { + if (!string.IsNullOrEmpty(m_ResultStacktrace)) + { + m.AddItem(s_GUIOpenErrorLine, + false, + data => + { + if (!GuiHelper.OpenScriptInExternalEditor(m_ResultStacktrace)) + { + GuiHelper.OpenScriptInExternalEditor(testNode.type, testNode.method); + } + }, + ""); + } + + m.AddItem(s_GUIOpenTest, + false, + data => GuiHelper.OpenScriptInExternalEditor(testNode.type, testNode.method), + ""); + m.AddSeparator(""); + } + } + + if (!IsBusy()) + { + m.AddItem(multilineSelection ? s_GUIRunSelectedTests : s_GUIRun, + false, + data => RunTests(testFilters), + ""); + + if (EditorPrefs.GetBool("DeveloperMode", false)) + { + m.AddItem(multilineSelection ? s_GUIRunSelectedTests : s_GUIRunUntilFailed, + false, + data => + { + foreach (var filter in testFilters) + { + filter.testRepetitions = int.MaxValue; + } + + RunTests(testFilters); + }, + ""); + + m.AddItem(multilineSelection ? s_GUIRunSelectedTests : s_GUIRun100Times, + false, + data => + { + foreach (var filter in testFilters) + { + filter.testRepetitions = 100; + } + + RunTests(testFilters); + }, + ""); + } + } + else + m.AddDisabledItem(multilineSelection ? s_GUIRunSelectedTests : s_GUIRun, false); + + m.ShowAsContext(); + } + + private UITestRunnerFilter[] GetSelectedTestsAsFilter(IEnumerable selectedIDs) + { + var namesToRun = new List(); + var assembliesForNamesToRun = new List(); + var exactNamesToRun = new List(); + var assembliesToRun = new List(); + foreach (var lineId in selectedIDs) + { + var line = m_TestListTree.FindItem(lineId); + if (line is TestTreeViewItem) + { + var testLine = line as TestTreeViewItem; + if (testLine.IsGroupNode && !testLine.FullName.Contains("+")) + { + if (testLine.parent != null && testLine.parent.displayName == "Invisible Root Item") + { + //Root node selected. Use an empty TestRunnerFilter to run every test + return new[] {new UITestRunnerFilter()}; + } + + if (testLine.FullName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) + { + assembliesToRun.Add(UITestRunnerFilter.AssemblyNameFromPath(testLine.FullName)); + } + else + { + namesToRun.Add($"^{Regex.Escape(testLine.FullName)}$"); + var assembly = UITestRunnerFilter.AssemblyNameFromPath(testLine.GetAssemblyName()); + if (!string.IsNullOrEmpty(assembly) && !assembliesForNamesToRun.Contains(assembly)) + { + assembliesForNamesToRun.Add(assembly); + } + } + } + else + { + exactNamesToRun.Add(testLine.FullName); + } + } + } + + var filters = new List(); + + if (assembliesToRun.Count > 0) + { + filters.Add(new UITestRunnerFilter() + { + assemblyNames = assembliesToRun.ToArray() + }); + } + + if (namesToRun.Count > 0) + { + filters.Add(new UITestRunnerFilter() + { + groupNames = namesToRun.ToArray(), + assemblyNames = assembliesForNamesToRun.ToArray() + }); + } + + if (exactNamesToRun.Count > 0) + { + filters.Add(new UITestRunnerFilter() + { + testNames = exactNamesToRun.ToArray() + }); + } + + if (filters.Count == 0) + { + filters.Add(new UITestRunnerFilter()); + } + + var categories = m_TestRunnerUIFilter.CategoryFilter.ToArray(); + if (categories.Length > 0) + { + foreach (var filter in filters) + { + filter.categoryNames = categories; + } + } + + return filters.ToArray(); + } + + private TestTreeViewItem GetSelectedTest() + { + foreach (var lineId in m_TestListState.selectedIDs) + { + var line = m_TestListTree.FindItem(lineId); + if (line is TestTreeViewItem) + { + return line as TestTreeViewItem; + } + } + return null; + } + + private void FrameSelection() + { + if (m_TestListTree.HasSelection()) + { + var firstClickedID = m_TestListState.selectedIDs.First() == m_TestListState.lastClickedID ? m_TestListState.selectedIDs.Last() : m_TestListState.selectedIDs.First(); + m_TestListTree.Frame(firstClickedID, true, false); + } + } + + public abstract TestPlatform TestPlatform { get; } + + public void RebuildUIFilter() + { + m_TestRunnerUIFilter.UpdateCounters(newResultList); + if (m_TestRunnerUIFilter.IsFiltering) + { + m_TestListTree.ReloadData(); + } + } + + public void RepaintIfProjectPathChanged() + { + var path = TestListGUIHelper.GetActiveFolderPath(); + if (path != m_PreviousProjectPath) + { + m_PreviousProjectPath = path; + TestRunnerWindow.s_Instance.Repaint(); + } + + EditorApplication.update -= RepaintIfProjectPathChanged; + } + + protected abstract bool IsBusy(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/TestListGUIBase.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/TestListGUIBase.cs.meta new file mode 100644 index 0000000..3bef151 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/GUI/Views/TestListGUIBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8abb41ceb6f62c45a00197ae59224c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension.meta new file mode 100644 index 0000000..0c99889 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f9202a39620f51418046c7754f215f0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes.meta new file mode 100644 index 0000000..a5930f1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 96c503bf059df984c86eecf572370347 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs new file mode 100644 index 0000000..e71b62c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs @@ -0,0 +1,63 @@ +using System; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEditor.TestTools +{ + /// + /// Ignore attributes dedicated to Asset Import Pipeline backend version handling. + /// + internal static class AssetPipelineIgnore + { + internal enum AssetPipelineBackend + { + V1, + V2 + } + + /// + /// Ignore the test when running with the legacy Asset Import Pipeline V1 backend. + /// + internal class IgnoreInV1 : AssetPipelineIgnoreAttribute + { + public IgnoreInV1(string ignoreReason) : base(AssetPipelineBackend.V1, ignoreReason) {} + } + + /// + /// Ignore the test when running with the latest Asset Import Pipeline V2 backend. + /// + internal class IgnoreInV2 : AssetPipelineIgnoreAttribute + { + public IgnoreInV2(string ignoreReason) : base(AssetPipelineBackend.V2, ignoreReason) {} + } + + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] + internal class AssetPipelineIgnoreAttribute : NUnitAttribute, IApplyToTest + { + readonly string m_IgnoreReason; + readonly AssetPipelineBackend m_IgnoredBackend; + static readonly AssetPipelineBackend k_ActiveBackend = AssetDatabase.IsV2Enabled() + ? AssetPipelineBackend.V2 + : AssetPipelineBackend.V1; + + static string ActiveBackendName = Enum.GetName(typeof(AssetPipelineBackend), k_ActiveBackend); + + public AssetPipelineIgnoreAttribute(AssetPipelineBackend backend, string ignoreReason) + { + m_IgnoredBackend = backend; + m_IgnoreReason = ignoreReason; + } + + public void ApplyToTest(Test test) + { + if (k_ActiveBackend == m_IgnoredBackend) + { + test.RunState = RunState.Ignored; + var skipReason = string.Format("Not supported by asset pipeline {0} backend {1}", ActiveBackendName, m_IgnoreReason); + test.Properties.Add(PropertyNames.SkipReason, skipReason); + } + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs.meta new file mode 100644 index 0000000..5f7207f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/AssetPipelineIgnore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b88caca58e05ee74486d86fb404c48e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs new file mode 100644 index 0000000..08bab3a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs @@ -0,0 +1,7 @@ +namespace UnityEditor.TestTools +{ + public interface ITestPlayerBuildModifier + { + BuildPlayerOptions ModifyOptions(BuildPlayerOptions playerOptions); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs.meta new file mode 100644 index 0000000..1bb36a6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/ITestPlayerBuildModifier.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d2f47eae5f447748892c46848956d5f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs new file mode 100644 index 0000000..328e666 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs @@ -0,0 +1,25 @@ +using System; + +namespace UnityEditor.TestTools +{ + [AttributeUsage(AttributeTargets.Assembly)] + public class TestPlayerBuildModifierAttribute : Attribute + { + private Type m_Type; + public TestPlayerBuildModifierAttribute(Type type) + { + var interfaceType = typeof(ITestPlayerBuildModifier); + if (!interfaceType.IsAssignableFrom(type)) + { + throw new ArgumentException(string.Format("Type provided to {0} does not implement {1}", this.GetType().Name, interfaceType.Name)); + } + m_Type = type; + } + + internal ITestPlayerBuildModifier ConstructModifier() + { + return Activator.CreateInstance(m_Type) as ITestPlayerBuildModifier; + } + } +} + diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs.meta new file mode 100644 index 0000000..3f9dfe3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/Attributes/TestPlayerBuildModifierAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dd57b1176859fc84e93586103d3b5f73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs new file mode 100644 index 0000000..a24190e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs @@ -0,0 +1,162 @@ +using System; +using System.Reflection; +using System.Text; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.TestRunner.NUnitExtensions.Runner; +using UnityEngine.TestTools.NUnitExtensions; +using UnityEngine.TestTools.Logging; + +namespace UnityEditor.TestTools.TestRunner +{ + [Serializable] + internal class TestRunnerStateSerializer : IStateSerializer + { + private const BindingFlags Flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy; + + [SerializeField] + private HideFlags m_OriginalHideFlags; + + [SerializeField] + private bool m_ShouldRestore; + + [SerializeField] + private string m_TestObjectTypeName; + + [SerializeField] + private ScriptableObject m_TestObject; + + [SerializeField] + private string m_TestObjectTxt; + + [SerializeField] + private long StartTicks; + + [SerializeField] + private double StartTimeOA; + + [SerializeField] + private string output; + + [SerializeField] + private LogMatch[] m_ExpectedLogs; + + public bool ShouldRestore() + { + return m_ShouldRestore; + } + + public void SaveContext() + { + var currentContext = UnityTestExecutionContext.CurrentContext; + + if (currentContext.TestObject != null) + { + m_TestObjectTypeName = currentContext.TestObject.GetType().AssemblyQualifiedName; + m_TestObject = null; + m_TestObjectTxt = null; + if (currentContext.TestObject is ScriptableObject) + { + m_TestObject = currentContext.TestObject as ScriptableObject; + m_OriginalHideFlags = m_TestObject.hideFlags; + m_TestObject.hideFlags |= HideFlags.DontSave; + } + else + { + m_TestObjectTxt = JsonUtility.ToJson(currentContext.TestObject); + } + } + + output = currentContext.CurrentResult.Output; + StartTicks = currentContext.StartTicks; + StartTimeOA = currentContext.StartTime.ToOADate(); + if (LogScope.HasCurrentLogScope()) + { + m_ExpectedLogs = LogScope.Current.ExpectedLogs.ToArray(); + } + + m_ShouldRestore = true; + } + + public void RestoreContext() + { + var currentContext = UnityTestExecutionContext.CurrentContext; + + var outputProp = currentContext.CurrentResult.GetType().BaseType.GetField("_output", Flags); + (outputProp.GetValue(currentContext.CurrentResult) as StringBuilder).Append(output); + + currentContext.StartTicks = StartTicks; + currentContext.StartTime = DateTime.FromOADate(StartTimeOA); + if (LogScope.HasCurrentLogScope()) + { + LogScope.Current.ExpectedLogs = new Queue(m_ExpectedLogs); + } + + m_ShouldRestore = false; + } + + public bool CanRestoreFromScriptableObject(Type requestedType) + { + if (m_TestObject == null) + { + return false; + } + return m_TestObjectTypeName == requestedType.AssemblyQualifiedName; + } + + public ScriptableObject RestoreScriptableObjectInstance() + { + if (m_TestObject == null) + { + Debug.LogError("No object to restore"); + return null; + } + EditorApplication.playModeStateChanged += OnPlayModeStateChanged; + var temp = m_TestObject; + m_TestObject = null; + m_TestObjectTypeName = null; + return temp; + } + + public bool CanRestoreFromJson(Type requestedType) + { + if (string.IsNullOrEmpty(m_TestObjectTxt)) + { + return false; + } + return m_TestObjectTypeName == requestedType.AssemblyQualifiedName; + } + + public void RestoreClassFromJson(ref object instance) + { + if (string.IsNullOrEmpty(m_TestObjectTxt)) + { + Debug.LogWarning("No JSON representation to restore"); + return; + } + JsonUtility.FromJsonOverwrite(m_TestObjectTxt, instance); + m_TestObjectTxt = null; + m_TestObjectTypeName = null; + } + + private void OnPlayModeStateChanged(PlayModeStateChange state) + { + if (m_TestObject == null) + { + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + return; + } + + //We set the DontSave flag here because the ScriptableObject would be nulled right before entering EditMode + if (state == PlayModeStateChange.ExitingPlayMode) + { + m_TestObject.hideFlags |= HideFlags.DontSave; + } + else if (state == PlayModeStateChange.EnteredEditMode) + { + m_TestObject.hideFlags = m_OriginalHideFlags; + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs.meta new file mode 100644 index 0000000..7d36e9d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/NUnitExtension/TestRunnerStateSerializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 124533853216377448d786fd7c725701 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequireApiProfileAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequireApiProfileAttribute.cs new file mode 100644 index 0000000..e99d452 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequireApiProfileAttribute.cs @@ -0,0 +1,32 @@ +using System; +using System.Linq; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEditor.TestTools +{ + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] + internal class RequireApiProfileAttribute : NUnitAttribute, IApplyToTest + { + public ApiCompatibilityLevel[] apiProfiles { get; private set; } + + public RequireApiProfileAttribute(params ApiCompatibilityLevel[] apiProfiles) + { + this.apiProfiles = apiProfiles; + } + + void IApplyToTest.ApplyToTest(Test test) + { + test.Properties.Add(PropertyNames.Category, string.Format("ApiProfile({0})", string.Join(", ", apiProfiles.Select(p => p.ToString()).OrderBy(p => p).ToArray()))); + ApiCompatibilityLevel testProfile = PlayerSettings.GetApiCompatibilityLevel(EditorUserBuildSettings.activeBuildTargetGroup); + + if (!apiProfiles.Contains(testProfile)) + { + string skipReason = "Skipping test as it requires a compatible api profile set: " + string.Join(", ", apiProfiles.Select(p => p.ToString()).ToArray()); + test.RunState = RunState.Skipped; + test.Properties.Add(PropertyNames.SkipReason, skipReason); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequireApiProfileAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequireApiProfileAttribute.cs.meta new file mode 100644 index 0000000..66d03bd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequireApiProfileAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a667f6654ad7a9548b8c8e68b51c8895 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequirePlatformSupportAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequirePlatformSupportAttribute.cs new file mode 100644 index 0000000..321a0fe --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequirePlatformSupportAttribute.cs @@ -0,0 +1,33 @@ +using System; +using System.Linq; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEditor.TestTools +{ + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] + public class RequirePlatformSupportAttribute : NUnitAttribute, IApplyToTest + { + public RequirePlatformSupportAttribute(params BuildTarget[] platforms) + { + this.platforms = platforms; + } + + public BuildTarget[] platforms { get; private set; } + + void IApplyToTest.ApplyToTest(Test test) + { + test.Properties.Add(PropertyNames.Category, string.Format("RequirePlatformSupport({0})", string.Join(", ", platforms.Select(p => p.ToString()).OrderBy(p => p).ToArray()))); + + if (!platforms.All(p => BuildPipeline.IsBuildTargetSupported(BuildTargetGroup.Unknown, p))) + { + var missingPlatforms = platforms.Where(p => !BuildPipeline.IsBuildTargetSupported(BuildTargetGroup.Unknown, p)).Select(p => p.ToString()).ToArray(); + string skipReason = "Test cannot be run as it requires support for the following platforms to be installed: " + string.Join(", ", missingPlatforms); + + test.RunState = RunState.Skipped; + test.Properties.Add(PropertyNames.SkipReason, skipReason); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequirePlatformSupportAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequirePlatformSupportAttribute.cs.meta new file mode 100644 index 0000000..8493058 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/RequirePlatformSupportAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d2146428d3f1ad54eb7326c9a44b3284 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestBuildAssemblyFilter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestBuildAssemblyFilter.cs new file mode 100644 index 0000000..a0947cb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestBuildAssemblyFilter.cs @@ -0,0 +1,22 @@ +using System.Linq; +using UnityEditor.Build; + +namespace UnityEditor.TestRunner +{ + // This class is invoked from native, during build + internal class TestBuildAssemblyFilter : IFilterBuildAssemblies + { + private const string nunitAssemblyName = "nunit.framework"; + private const string unityTestRunnerAssemblyName = "UnityEngine.TestRunner"; + + public int callbackOrder { get; } + public string[] OnFilterAssemblies(BuildOptions buildOptions, string[] assemblies) + { + if ((buildOptions & BuildOptions.IncludeTestAssemblies) == BuildOptions.IncludeTestAssemblies || PlayerSettings.playModeTestRunnerEnabled) + { + return assemblies; + } + return assemblies.Where(x => !x.Contains(nunitAssemblyName) && !x.Contains(unityTestRunnerAssemblyName)).ToArray(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestBuildAssemblyFilter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestBuildAssemblyFilter.cs.meta new file mode 100644 index 0000000..f3cd3bd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestBuildAssemblyFilter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3411e19edd44cfd46b548b058c3bc36c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers.meta new file mode 100644 index 0000000..c6a951b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d64d92e4f04a13e4b99ea8d48e9e8ae9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/AttributeFinderBase.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/AttributeFinderBase.cs new file mode 100644 index 0000000..236d6a8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/AttributeFinderBase.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEngine; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + internal abstract class AttributeFinderBase : IAttributeFinder + { + public abstract IEnumerable Search(ITest tests, ITestFilter filter, RuntimePlatform testTargetPlatform); + } + + internal interface IAttributeFinder + { + IEnumerable Search(ITest tests, ITestFilter filter, RuntimePlatform testTargetPlatform); + } + + internal abstract class AttributeFinderBase : AttributeFinderBase where T2 : Attribute + { + private readonly Func m_TypeSelector; + protected AttributeFinderBase(Func typeSelector) + { + m_TypeSelector = typeSelector; + } + + public override IEnumerable Search(ITest tests, ITestFilter filter, RuntimePlatform testTargetPlatform) + { + var selectedTests = new List(); + GetMatchingTests(tests, filter, ref selectedTests, testTargetPlatform); + + var result = new List(); + result.AddRange(GetTypesFromPrebuildAttributes(selectedTests)); + result.AddRange(GetTypesFromInterface(selectedTests, testTargetPlatform)); + + return result.Distinct(); + } + + private static void GetMatchingTests(ITest tests, ITestFilter filter, ref List resultList, RuntimePlatform testTargetPlatform) + { + foreach (var test in tests.Tests) + { + if (IsTestEnabledOnPlatform(test, testTargetPlatform)) + { + if (test.IsSuite) + { + GetMatchingTests(test, filter, ref resultList, testTargetPlatform); + } + else + { + if (filter.Pass(test)) + resultList.Add(test); + } + } + } + } + + private static bool IsTestEnabledOnPlatform(ITest test, RuntimePlatform testTargetPlatform) + { + if (test.Method == null) + { + return true; + } + + var attributesFromMethods = test.Method.GetCustomAttributes(true).Select(attribute => attribute); + var attributesFromTypes = test.Method.TypeInfo.GetCustomAttributes(true).Select(attribute => attribute); + + if (!attributesFromMethods.All(a => a.IsPlatformSupported(testTargetPlatform))) + { + return false; + } + + if (!attributesFromTypes.All(a => a.IsPlatformSupported(testTargetPlatform))) + { + return false; + } + + return true; + } + + private IEnumerable GetTypesFromPrebuildAttributes(IEnumerable tests) + { + var allAssemblies = AppDomain.CurrentDomain.GetAssemblies(); + allAssemblies = allAssemblies.Where(x => x.GetReferencedAssemblies().Any(z => z.Name == "UnityEditor.TestRunner")).ToArray(); + var attributesFromAssemblies = allAssemblies.SelectMany(assembly => assembly.GetCustomAttributes(typeof(T2), true).OfType()); + var attributesFromMethods = tests.SelectMany(t => t.Method.GetCustomAttributes(true).Select(attribute => attribute)); + var attributesFromTypes = tests.SelectMany(t => t.Method.TypeInfo.GetCustomAttributes(true).Select(attribute => attribute)); + + var result = new List(); + result.AddRange(attributesFromAssemblies); + result.AddRange(attributesFromMethods); + result.AddRange(attributesFromTypes); + + return result.Select(m_TypeSelector).Where(type => type != null); + } + + private static IEnumerable GetTypesFromInterface(IEnumerable selectedTests, RuntimePlatform testTargetPlatform) + { + var typesWithInterfaces = selectedTests.Where(t => typeof(T1).IsAssignableFrom(t.Method.TypeInfo.Type) && IsTestEnabledOnPlatform(t, testTargetPlatform)); + return typesWithInterfaces.Select(t => t.Method.TypeInfo.Type); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/AttributeFinderBase.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/AttributeFinderBase.cs.meta new file mode 100644 index 0000000..19986f0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/AttributeFinderBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5d4de3d4682a8d641907cc75e4fb950e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/DelayedCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/DelayedCallback.cs new file mode 100644 index 0000000..b331d15 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/DelayedCallback.cs @@ -0,0 +1,44 @@ +namespace UnityEditor.TestTools.TestRunner +{ + internal class DelayedCallback + { + private System.Action m_Callback; + private double m_CallbackTime; + private double m_Delay; + + public DelayedCallback(System.Action function, double timeFromNow) + { + m_Callback = function; + m_CallbackTime = EditorApplication.timeSinceStartup + timeFromNow; + m_Delay = timeFromNow; + EditorApplication.update += Update; + } + + public void Clear() + { + EditorApplication.update -= Update; + m_CallbackTime = 0.0; + m_Callback = null; + } + + private void Update() + { + if (EditorApplication.timeSinceStartup > m_CallbackTime) + { + // Clear state before firing callback to ensure reset (callback could call ExitGUI) + var callback = m_Callback; + Clear(); + + callback?.Invoke(); + } + } + + public void Reset() + { + if (m_Callback != null) + { + m_CallbackTime = EditorApplication.timeSinceStartup + m_Delay; + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/DelayedCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/DelayedCallback.cs.meta new file mode 100644 index 0000000..5218c8e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/DelayedCallback.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b9d121df8c444236a5b38ccfadfdd1a7 +timeCreated: 1583140472 \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncher.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncher.cs new file mode 100644 index 0000000..12683dc --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncher.cs @@ -0,0 +1,161 @@ +using System; +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using UnityEditor.SceneManagement; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEditor.TestTools.TestRunner.GUI; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.TestRunner.Utils; +using UnityEngine.TestTools; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditModeLauncher : TestLauncherBase + { + public static bool IsRunning; + internal readonly EditModeRunner m_EditModeRunner; + public bool launchedOutsideApi; + + // provided for backward compatibility with Rider UnitTesting prior to Rider package v.1.1.1 + public EditModeLauncher(UITestRunnerFilter filter, TestPlatform platform) + { + launchedOutsideApi = true; + var apiFilter = new[] + { + new Filter() + { + testMode = TestMode.EditMode, + testNames = filter.testNames, + categoryNames = filter.categoryNames, + groupNames = filter.groupNames, + assemblyNames = filter.assemblyNames + } + }; + + ScriptableObject.CreateInstance().Execute(new ExecutionSettings(apiFilter)); + } + + public EditModeLauncher(Filter[] filters, TestPlatform platform, bool runSynchronously) + { + TestEnumerator.Reset(); + m_EditModeRunner = ScriptableObject.CreateInstance(); + m_EditModeRunner.UnityTestAssemblyRunnerFactory = new UnityTestAssemblyRunnerFactory(); + m_EditModeRunner.Init(filters, platform, runSynchronously); + } + + public override void Run() + { + if (launchedOutsideApi) + { + // Do not use the launcher, as it will be relaunched trough the api. See ctor. + return; + } + + IsRunning = true; + + SceneSetup[] previousSceneSetup; + if (!OpenNewScene(out previousSceneSetup)) + return; + + var callback = AddEventHandler(); + callback.previousSceneSetup = previousSceneSetup; + callback.runner = m_EditModeRunner; + AddEventHandler(); + + m_EditModeRunner.Run(); + AddEventHandler(); + AddEventHandler(); + + if (m_EditModeRunner.RunningSynchronously) + m_EditModeRunner.CompleteSynchronously(); + } + + private static bool OpenNewScene(out SceneSetup[] previousSceneSetup) + { + previousSceneSetup = null; + + var sceneCount = SceneManager.sceneCount; + + var scene = SceneManager.GetSceneAt(0); + var isSceneNotPersisted = string.IsNullOrEmpty(scene.path); + + if (sceneCount == 1 && isSceneNotPersisted) + { + EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single); + return true; + } + RemoveUntitledScenes(); + + // In case the user chose not to save the dirty scenes we reload them + ReloadUnsavedDirtyScene(); + + previousSceneSetup = EditorSceneManager.GetSceneManagerSetup(); + + scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Additive); + SceneManager.SetActiveScene(scene); + + return true; + } + + private static void ReloadUnsavedDirtyScene() + { + for (var i = 0; i < SceneManager.sceneCount; i++) + { + var scene = SceneManager.GetSceneAt(i); + var isSceneNotPersisted = string.IsNullOrEmpty(scene.path); + var isSceneDirty = scene.isDirty; + if (isSceneNotPersisted && isSceneDirty) + { + EditorSceneManager.ReloadScene(scene); + } + } + } + + private static void RemoveUntitledScenes() + { + int sceneCount = SceneManager.sceneCount; + + var scenesToClose = new List(); + for (var i = 0; i < sceneCount; i++) + { + var scene = SceneManager.GetSceneAt(i); + var isSceneNotPersisted = string.IsNullOrEmpty(scene.path); + if (isSceneNotPersisted) + { + scenesToClose.Add(scene); + } + } + foreach (Scene scene in scenesToClose) + { + EditorSceneManager.CloseScene(scene, true); + } + } + + public class BackgroundListener : ScriptableObject, ITestRunnerListener + { + public void RunStarted(ITest testsToRun) + { + } + + public void RunFinished(ITestResult testResults) + { + IsRunning = false; + } + + public void TestStarted(ITest test) + { + } + + public void TestFinished(ITestResult result) + { + } + } + + public T AddEventHandler() where T : ScriptableObject, ITestRunnerListener + { + return m_EditModeRunner.AddEventHandler(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncher.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncher.cs.meta new file mode 100644 index 0000000..694d7d6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac68f5ae37c8957468562b8da42f9984 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncherContextSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncherContextSettings.cs new file mode 100644 index 0000000..e20305c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncherContextSettings.cs @@ -0,0 +1,31 @@ +using System; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditModeLauncherContextSettings : IDisposable + { + private bool m_RunInBackground; + + public EditModeLauncherContextSettings() + { + SetupProjectParameters(); + } + + public void Dispose() + { + CleanupProjectParameters(); + } + + private void SetupProjectParameters() + { + m_RunInBackground = Application.runInBackground; + Application.runInBackground = true; + } + + private void CleanupProjectParameters() + { + Application.runInBackground = m_RunInBackground; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncherContextSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncherContextSettings.cs.meta new file mode 100644 index 0000000..2bed8fd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/EditModeLauncherContextSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a582090813554df479fb9ca03e9857d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup.meta new file mode 100644 index 0000000..4947382 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ebc4d20cc106cea49b1df1153f0b3b5e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/AndroidPlatformSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/AndroidPlatformSetup.cs new file mode 100644 index 0000000..e0f7277 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/AndroidPlatformSetup.cs @@ -0,0 +1,66 @@ +using System; +using UnityEngine; +using System.Net; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class AndroidPlatformSetup : IPlatformSetup + { + private string m_oldApplicationIdentifier; + private string m_oldDeviceSocketAddress; + [SerializeField] + private bool m_Stripping; + + public void Setup() + { + m_oldApplicationIdentifier = PlayerSettings.GetApplicationIdentifier(BuildTargetGroup.Android); + PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, "com.UnityTestRunner.UnityTestRunner"); + + m_oldDeviceSocketAddress = EditorUserBuildSettings.androidDeviceSocketAddress; + var androidDeviceConnection = Environment.GetEnvironmentVariable("ANDROID_DEVICE_CONNECTION"); + EditorUserBuildSettings.waitForPlayerConnection = true; + if (androidDeviceConnection != null) + { + EditorUserBuildSettings.androidDeviceSocketAddress = androidDeviceConnection; + } + m_Stripping = PlayerSettings.stripEngineCode; + PlayerSettings.stripEngineCode = false; + } + + public void PostBuildAction() + { + PlayerSettings.stripEngineCode = m_Stripping; + } + + public void PostSuccessfulBuildAction() + { + } + + public void PostSuccessfulLaunchAction() + { + var connectionResult = -1; + var maxTryCount = 10; + var tryCount = maxTryCount; + while (tryCount-- > 0 && connectionResult == -1) + { + connectionResult = EditorConnectionInternal.ConnectPlayerProxy(IPAddress.Loopback.ToString(), 34999); + if (EditorUtility.DisplayCancelableProgressBar("Editor Connection", "Connecting to the player", + 1 - ((float)tryCount / maxTryCount))) + { + EditorUtility.ClearProgressBar(); + throw new TestLaunchFailedException(); + } + } + EditorUtility.ClearProgressBar(); + if (connectionResult == -1) + throw new TestLaunchFailedException( + "Timed out trying to connect to the player. Player failed to launch or crashed soon after launching"); + } + + public void CleanUp() + { + EditorUserBuildSettings.androidDeviceSocketAddress = m_oldDeviceSocketAddress; + PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, m_oldApplicationIdentifier); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/AndroidPlatformSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/AndroidPlatformSetup.cs.meta new file mode 100644 index 0000000..6e18a7c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/AndroidPlatformSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 961642509dec50b44a293d26240140ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/ApplePlatformSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/ApplePlatformSetup.cs new file mode 100644 index 0000000..f625eb2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/ApplePlatformSetup.cs @@ -0,0 +1,42 @@ +using System; +using System.Diagnostics; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner +{ + [Serializable] + internal class ApplePlatformSetup : IPlatformSetup + { + [SerializeField] + private bool m_Stripping; + + public ApplePlatformSetup(BuildTarget buildTarget) + { + } + + public void Setup() + { + // Camera and fonts are stripped out and app crashes on iOS when test runner is trying to add a scene with... camera and text + m_Stripping = PlayerSettings.stripEngineCode; + PlayerSettings.stripEngineCode = false; + } + + public void PostBuildAction() + { + // Restoring player setting as early as possible + PlayerSettings.stripEngineCode = m_Stripping; + } + + public void PostSuccessfulBuildAction() + { + } + + public void PostSuccessfulLaunchAction() + { + } + + public void CleanUp() + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/ApplePlatformSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/ApplePlatformSetup.cs.meta new file mode 100644 index 0000000..36f22a6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/ApplePlatformSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6c189a159d3bde4c964cee562e508ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/IPlatformSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/IPlatformSetup.cs new file mode 100644 index 0000000..db76c21 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/IPlatformSetup.cs @@ -0,0 +1,11 @@ +namespace UnityEditor.TestTools.TestRunner +{ + internal interface IPlatformSetup + { + void Setup(); + void PostBuildAction(); + void PostSuccessfulBuildAction(); + void PostSuccessfulLaunchAction(); + void CleanUp(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/IPlatformSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/IPlatformSetup.cs.meta new file mode 100644 index 0000000..94405b5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/IPlatformSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d614808f9add8a4f8e4860db2c7af0d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/LuminPlatformSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/LuminPlatformSetup.cs new file mode 100644 index 0000000..1a0c4bf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/LuminPlatformSetup.cs @@ -0,0 +1,50 @@ +using System; +using System.Threading; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class LuminPlatformSetup : IPlatformSetup + { + private const string kDeviceAddress = "127.0.0.1"; + private const int kDevicePort = 55000; + + public void Setup() + { + } + + public void PostBuildAction() + { + } + + public void PostSuccessfulBuildAction() + { + } + + public void PostSuccessfulLaunchAction() + { + var connectionResult = -1; + var maxTryCount = 100; + var tryCount = maxTryCount; + while (tryCount-- > 0 && connectionResult == -1) + { + Thread.Sleep(1000); + connectionResult = EditorConnectionInternal.ConnectPlayerProxy(kDeviceAddress, kDevicePort); + if (EditorUtility.DisplayCancelableProgressBar("Editor Connection", "Connecting to the player", + 1 - ((float)tryCount / maxTryCount))) + { + EditorUtility.ClearProgressBar(); + throw new TestLaunchFailedException(); + } + } + EditorUtility.ClearProgressBar(); + if (connectionResult == -1) + throw new TestLaunchFailedException( + "Timed out trying to connect to the player. Player failed to launch or crashed soon after launching"); + } + + public void CleanUp() + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/LuminPlatformSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/LuminPlatformSetup.cs.meta new file mode 100644 index 0000000..9e4dcc5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/LuminPlatformSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c38ae0585d6a55042a2d678330689685 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/PlatformSpecificSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/PlatformSpecificSetup.cs new file mode 100644 index 0000000..4c8ae77 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/PlatformSpecificSetup.cs @@ -0,0 +1,123 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner +{ + [Serializable] + internal class PlatformSpecificSetup + { + [SerializeField] + private ApplePlatformSetup m_AppleiOSPlatformSetup = new ApplePlatformSetup(BuildTarget.iOS); + [SerializeField] + private ApplePlatformSetup m_AppleTvOSPlatformSetup = new ApplePlatformSetup(BuildTarget.tvOS); + [SerializeField] + private XboxOnePlatformSetup m_XboxOnePlatformSetup = new XboxOnePlatformSetup(); + [SerializeField] + private AndroidPlatformSetup m_AndroidPlatformSetup = new AndroidPlatformSetup(); + [SerializeField] + private SwitchPlatformSetup m_SwitchPlatformSetup = new SwitchPlatformSetup(); +#if UNITY_2019_3_OR_NEWER + [SerializeField] + private StadiaPlatformSetup m_StadiaPlatformSetup = new StadiaPlatformSetup(); +#endif + [SerializeField] + private UwpPlatformSetup m_UwpPlatformSetup = new UwpPlatformSetup(); + + [SerializeField] + private LuminPlatformSetup m_LuminPlatformSetup = new LuminPlatformSetup(); + + + private IDictionary m_SetupTypes; + + [SerializeField] + private BuildTarget m_Target; + + public PlatformSpecificSetup() + { + } + + public PlatformSpecificSetup(BuildTarget target) + { + m_Target = target; + } + + public void Setup() + { + var dictionary = GetSetup(); + + if (!dictionary.ContainsKey(m_Target)) + { + return; + } + + dictionary[m_Target].Setup(); + } + + public void PostBuildAction() + { + var dictionary = GetSetup(); + + if (!dictionary.ContainsKey(m_Target)) + { + return; + } + + dictionary[m_Target].PostBuildAction(); + } + + public void PostSuccessfulBuildAction() + { + var dictionary = GetSetup(); + + if (!dictionary.ContainsKey(m_Target)) + { + return; + } + + dictionary[m_Target].PostSuccessfulBuildAction(); + } + + public void PostSuccessfulLaunchAction() + { + var dictionary = GetSetup(); + + if (!dictionary.ContainsKey(m_Target)) + { + return; + } + + dictionary[m_Target].PostSuccessfulLaunchAction(); + } + + public void CleanUp() + { + var dictionary = GetSetup(); + + if (!dictionary.ContainsKey(m_Target)) + { + return; + } + + dictionary[m_Target].CleanUp(); + } + + private IDictionary GetSetup() + { + m_SetupTypes = new Dictionary() + { + {BuildTarget.iOS, m_AppleiOSPlatformSetup}, + {BuildTarget.tvOS, m_AppleTvOSPlatformSetup}, + {BuildTarget.XboxOne, m_XboxOnePlatformSetup}, + {BuildTarget.Android, m_AndroidPlatformSetup}, + {BuildTarget.WSAPlayer, m_UwpPlatformSetup}, + {BuildTarget.Lumin, m_LuminPlatformSetup}, +#if UNITY_2019_3_OR_NEWER + {BuildTarget.Stadia, m_StadiaPlatformSetup}, +#endif + {BuildTarget.Switch, m_SwitchPlatformSetup} + }; + return m_SetupTypes; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/PlatformSpecificSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/PlatformSpecificSetup.cs.meta new file mode 100644 index 0000000..a250a1a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/PlatformSpecificSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6cccd50ebf7384242bda4d7bcb282ebf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/StadiaPlatformSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/StadiaPlatformSetup.cs new file mode 100644 index 0000000..c62016b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/StadiaPlatformSetup.cs @@ -0,0 +1,25 @@ +namespace UnityEditor.TestTools.TestRunner +{ + internal class StadiaPlatformSetup : IPlatformSetup + { + public void Setup() + { + } + + public void PostBuildAction() + { + } + + public void PostSuccessfulBuildAction() + { + } + + public void PostSuccessfulLaunchAction() + { + } + + public void CleanUp() + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/StadiaPlatformSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/StadiaPlatformSetup.cs.meta new file mode 100644 index 0000000..59e70a4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/StadiaPlatformSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa19b42bd3dc35e40a618448bd330270 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/SwitchPlatformSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/SwitchPlatformSetup.cs new file mode 100644 index 0000000..7c1ea36 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/SwitchPlatformSetup.cs @@ -0,0 +1,41 @@ +namespace UnityEditor.TestTools.TestRunner +{ + internal class SwitchPlatformSetup : IPlatformSetup + { + public void Setup() + { + EditorUserBuildSettings.switchCreateRomFile = true; + EditorUserBuildSettings.switchNVNGraphicsDebugger = false; +#if UNITY_2020_1_OR_NEWER + EditorUserBuildSettings.switchNVNDrawValidation_Heavy = true; // catches more graphics errors +#else + EditorUserBuildSettings.switchNVNDrawValidation = true; // catches more graphics errors +#endif + EditorUserBuildSettings.development = true; + EditorUserBuildSettings.switchRedirectWritesToHostMount = true; + + // We can use these when more debugging is required: + //EditorUserBuildSettings.switchNVNDrawValidation = false; // cannot be used with shader debug + //EditorUserBuildSettings.switchNVNGraphicsDebugger = true; + //EditorUserBuildSettings.switchNVNShaderDebugging = true; + //EditorUserBuildSettings.switchCreateSolutionFile = true; // for shorter iteration time + //EditorUserBuildSettings.allowDebugging = true; // managed debugger can be attached + } + + public void PostBuildAction() + { + } + + public void PostSuccessfulBuildAction() + { + } + + public void PostSuccessfulLaunchAction() + { + } + + public void CleanUp() + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/SwitchPlatformSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/SwitchPlatformSetup.cs.meta new file mode 100644 index 0000000..fb9dd05 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/SwitchPlatformSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: adf7bea9401c1834380d55601add6cfb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/UwpPlatformSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/UwpPlatformSetup.cs new file mode 100644 index 0000000..a229c34 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/UwpPlatformSetup.cs @@ -0,0 +1,52 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class UwpPlatformSetup : IPlatformSetup + { + private const string k_SettingsBuildConfiguration = "BuildConfiguration"; + private bool m_InternetClientServer; + private bool m_PrivateNetworkClientServer; + + public void Setup() + { + m_InternetClientServer = PlayerSettings.WSA.GetCapability(PlayerSettings.WSACapability.InternetClientServer); + m_PrivateNetworkClientServer = PlayerSettings.WSA.GetCapability(PlayerSettings.WSACapability.PrivateNetworkClientServer); + PlayerSettings.WSA.SetCapability(PlayerSettings.WSACapability.InternetClientServer, true); + PlayerSettings.WSA.SetCapability(PlayerSettings.WSACapability.PrivateNetworkClientServer, true); + + // This setting is initialized only when Window Store App is selected from the Build Settings window, and + // is typically an empty strings when running tests via UTR on the command-line. + bool wsaSettingNotInitialized = string.IsNullOrEmpty(EditorUserBuildSettings.wsaArchitecture); + + // If WSA build settings aren't fully initialized or running from a build machine, specify a default build configuration. + // Otherwise we can use the existing configuration specified by the user in Build Settings. + if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("UNITY_THISISABUILDMACHINE")) || wsaSettingNotInitialized) + { + EditorUserBuildSettings.wsaSubtarget = WSASubtarget.PC; + EditorUserBuildSettings.wsaArchitecture = "x64"; + EditorUserBuildSettings.SetPlatformSettings(BuildPipeline.GetBuildTargetName(BuildTarget.WSAPlayer), k_SettingsBuildConfiguration, WSABuildType.Debug.ToString()); + EditorUserBuildSettings.wsaUWPBuildType = WSAUWPBuildType.ExecutableOnly; + PlayerSettings.SetIl2CppCompilerConfiguration(BuildTargetGroup.WSA, Il2CppCompilerConfiguration.Debug); + } + } + + public void PostBuildAction() + { + } + + public void PostSuccessfulBuildAction() + { + } + + public void PostSuccessfulLaunchAction() + { + } + + public void CleanUp() + { + PlayerSettings.WSA.SetCapability(PlayerSettings.WSACapability.InternetClientServer, m_InternetClientServer); + PlayerSettings.WSA.SetCapability(PlayerSettings.WSACapability.PrivateNetworkClientServer, m_PrivateNetworkClientServer); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/UwpPlatformSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/UwpPlatformSetup.cs.meta new file mode 100644 index 0000000..751ac7e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/UwpPlatformSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 667c6ad86a0b7a548aaa5c287f2c2861 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/XboxOnePlatformSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/XboxOnePlatformSetup.cs new file mode 100644 index 0000000..54c51ed --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/XboxOnePlatformSetup.cs @@ -0,0 +1,47 @@ +namespace UnityEditor.TestTools.TestRunner +{ + internal class XboxOnePlatformSetup : IPlatformSetup + { + private XboxOneDeployMethod oldXboxOneDeployMethod; + private XboxOneDeployDrive oldXboxOneDeployDrive; + private string oldXboxOneAdditionalDebugPorts; + + public void Setup() + { + oldXboxOneDeployMethod = EditorUserBuildSettings.xboxOneDeployMethod; + oldXboxOneDeployDrive = EditorUserBuildSettings.xboxOneDeployDrive; + oldXboxOneAdditionalDebugPorts = EditorUserBuildSettings.xboxOneAdditionalDebugPorts; + + EditorUserBuildSettings.xboxOneDeployMethod = XboxOneDeployMethod.Package; + EditorUserBuildSettings.xboxOneDeployDrive = XboxOneDeployDrive.Default; + + // This causes the XboxOne post processing systems to open this port in your package manifest. + // In addition it will open the ephemeral range for debug connections as well. + // Failure to do this will cause connection problems. + EditorUserBuildSettings.xboxOneAdditionalDebugPorts = "34999"; + } + + public void PostBuildAction() + { + } + + public void PostSuccessfulBuildAction() + { + } + + public void PostSuccessfulLaunchAction() + { + } + + public void CleanUp() + { + EditorUserBuildSettings.xboxOneDeployMethod = oldXboxOneDeployMethod; + EditorUserBuildSettings.xboxOneDeployDrive = oldXboxOneDeployDrive; + + // This causes the XboxOne post processing systems to open this port in your package manifest. + // In addition it will open the ephemeral range for debug connections as well. + // Failure to do this will cause connection problems. + EditorUserBuildSettings.xboxOneAdditionalDebugPorts = oldXboxOneAdditionalDebugPorts; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/XboxOnePlatformSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/XboxOnePlatformSetup.cs.meta new file mode 100644 index 0000000..771c853 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlatformSetup/XboxOnePlatformSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aed7ab02155e43341a2dbcb7bc17c160 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncher.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncher.cs new file mode 100644 index 0000000..2e0b120 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncher.cs @@ -0,0 +1,250 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading; +using NUnit.Framework.Internal.Filters; +using UnityEditor; +using UnityEditor.TestRunner.TestLaunchers; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.TestRunner.Utils; +using UnityEngine.TestTools.TestRunner; +using UnityEngine.TestTools.TestRunner.Callbacks; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class TestLaunchFailedException : Exception + { + public TestLaunchFailedException() {} + public TestLaunchFailedException(string message) : base(message) {} + } + + [Serializable] + internal class PlayerLauncher : RuntimeTestLauncherBase + { + private readonly PlaymodeTestsControllerSettings m_Settings; + private readonly BuildTarget m_TargetPlatform; + private ITestRunSettings m_OverloadTestRunSettings; + private string m_SceneName; + private int m_HeartbeatTimeout; + + public PlayerLauncher(PlaymodeTestsControllerSettings settings, BuildTarget? targetPlatform, ITestRunSettings overloadTestRunSettings, int heartbeatTimeout) + { + m_Settings = settings; + m_TargetPlatform = targetPlatform ?? EditorUserBuildSettings.activeBuildTarget; + m_OverloadTestRunSettings = overloadTestRunSettings; + m_HeartbeatTimeout = heartbeatTimeout; + } + + protected override RuntimePlatform? TestTargetPlatform + { + get { return BuildTargetConverter.TryConvertToRuntimePlatform(m_TargetPlatform); } + } + + public override void Run() + { + var editorConnectionTestCollector = RemoteTestRunController.instance; + editorConnectionTestCollector.hideFlags = HideFlags.HideAndDontSave; + editorConnectionTestCollector.Init(m_TargetPlatform, m_HeartbeatTimeout); + + var remotePlayerLogController = RemotePlayerLogController.instance; + remotePlayerLogController.hideFlags = HideFlags.HideAndDontSave; + + using (var settings = new PlayerLauncherContextSettings(m_OverloadTestRunSettings)) + { + m_SceneName = CreateSceneName(); + var scene = PrepareScene(m_SceneName); + string scenePath = scene.path; + + var filter = m_Settings.BuildNUnitFilter(); + var runner = LoadTests(filter); + var exceptionThrown = ExecutePreBuildSetupMethods(runner.LoadedTest, filter); + if (exceptionThrown) + { + ReopenOriginalScene(m_Settings.originalScene); + AssetDatabase.DeleteAsset(m_SceneName); + CallbacksDelegator.instance.RunFailed("Run Failed: One or more errors in a prebuild setup. See the editor log for details."); + return; + } + + var playerBuildOptions = GetBuildOptions(scenePath); + + var success = BuildAndRunPlayer(playerBuildOptions); + + editorConnectionTestCollector.PostBuildAction(); + ExecutePostBuildCleanupMethods(runner.LoadedTest, filter); + + ReopenOriginalScene(m_Settings.originalScene); + AssetDatabase.DeleteAsset(m_SceneName); + + if (!success) + { + ScriptableObject.DestroyImmediate(editorConnectionTestCollector); + Debug.LogError("Player build failed"); + throw new TestLaunchFailedException("Player build failed"); + } + + if ((playerBuildOptions.BuildPlayerOptions.options & BuildOptions.AutoRunPlayer) != 0) + { + editorConnectionTestCollector.PostSuccessfulBuildAction(); + editorConnectionTestCollector.PostSuccessfulLaunchAction(); + } + + var runSettings = m_OverloadTestRunSettings as PlayerLauncherTestRunSettings; + if (success && runSettings != null && runSettings.buildOnly) + { + EditorUtility.RevealInFinder(playerBuildOptions.BuildPlayerOptions.locationPathName); + } + } + } + + public Scene PrepareScene(string sceneName) + { + var scene = CreateBootstrapScene(sceneName, runner => + { + runner.AddEventHandlerMonoBehaviour(); + runner.settings = m_Settings; + var commandLineArgs = Environment.GetCommandLineArgs(); + if (!commandLineArgs.Contains("-doNotReportTestResultsBackToEditor")) + { + runner.AddEventHandlerMonoBehaviour(); + } + runner.AddEventHandlerMonoBehaviour(); + runner.AddEventHandlerScriptableObject(); + }); + return scene; + } + + private static bool BuildAndRunPlayer(PlayerLauncherBuildOptions buildOptions) + { + Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "Building player with following options:\n{0}", buildOptions); + + + // Android has to be in listen mode to establish player connection + if (buildOptions.BuildPlayerOptions.target == BuildTarget.Android) + { + buildOptions.BuildPlayerOptions.options &= ~BuildOptions.ConnectToHost; + } + + // For now, so does Lumin + if (buildOptions.BuildPlayerOptions.target == BuildTarget.Lumin) + { + buildOptions.BuildPlayerOptions.options &= ~BuildOptions.ConnectToHost; + } + + var result = BuildPipeline.BuildPlayer(buildOptions.BuildPlayerOptions); + if (result.summary.result != Build.Reporting.BuildResult.Succeeded) + Debug.LogError(result.SummarizeErrors()); + + return result.summary.result == Build.Reporting.BuildResult.Succeeded; + } + + internal PlayerLauncherBuildOptions GetBuildOptions(string scenePath) + { + var buildOnly = false; + var runSettings = m_OverloadTestRunSettings as PlayerLauncherTestRunSettings; + if (runSettings != null) + { + buildOnly = runSettings.buildOnly; + } + + var buildOptions = new BuildPlayerOptions(); + + var scenes = new List() { scenePath }; + scenes.AddRange(EditorBuildSettings.scenes.Select(x => x.path)); + buildOptions.scenes = scenes.ToArray(); + + buildOptions.options |= BuildOptions.Development | BuildOptions.ConnectToHost | BuildOptions.IncludeTestAssemblies | BuildOptions.StrictMode; + buildOptions.target = m_TargetPlatform; + + if (EditorUserBuildSettings.waitForPlayerConnection) + buildOptions.options |= BuildOptions.WaitForPlayerConnection; + + if (EditorUserBuildSettings.allowDebugging) + buildOptions.options |= BuildOptions.AllowDebugging; + + if (EditorUserBuildSettings.installInBuildFolder) + buildOptions.options |= BuildOptions.InstallInBuildFolder; + else if (!buildOnly) + buildOptions.options |= BuildOptions.AutoRunPlayer; + + var buildTargetGroup = EditorUserBuildSettings.activeBuildTargetGroup; + + //Check if Lz4 is supported for the current buildtargetgroup and enable it if need be + if (PostprocessBuildPlayer.SupportsLz4Compression(buildTargetGroup, m_TargetPlatform)) + { + if (EditorUserBuildSettings.GetCompressionType(buildTargetGroup) == Compression.Lz4) + buildOptions.options |= BuildOptions.CompressWithLz4; + else if (EditorUserBuildSettings.GetCompressionType(buildTargetGroup) == Compression.Lz4HC) + buildOptions.options |= BuildOptions.CompressWithLz4HC; + } + + string buildLocation; + if (buildOnly) + { + buildLocation = buildOptions.locationPathName = runSettings.buildOnlyLocationPath; + } + else + { + var reduceBuildLocationPathLength = false; + + //Some platforms hit MAX_PATH limits during the build process, in these cases minimize the path length + if ((m_TargetPlatform == BuildTarget.WSAPlayer) || (m_TargetPlatform == BuildTarget.XboxOne)) + { + reduceBuildLocationPathLength = true; + } + + var uniqueTempPathInProject = FileUtil.GetUniqueTempPathInProject(); + var playerDirectoryName = reduceBuildLocationPathLength ? "PwT" : "PlayerWithTests"; + + if (reduceBuildLocationPathLength) + { + uniqueTempPathInProject = Path.GetTempFileName(); + File.Delete(uniqueTempPathInProject); + Directory.CreateDirectory(uniqueTempPathInProject); + } + + var tempPath = Path.GetFullPath(uniqueTempPathInProject); + buildLocation = Path.Combine(tempPath, playerDirectoryName); + + // iOS builds create a folder with Xcode project instead of an executable, therefore no executable name is added + if (m_TargetPlatform == BuildTarget.iOS) + { + buildOptions.locationPathName = buildLocation; + } + else + { + string extensionForBuildTarget = + PostprocessBuildPlayer.GetExtensionForBuildTarget(buildTargetGroup, buildOptions.target, + buildOptions.options); + var playerExecutableName = "PlayerWithTests"; + playerExecutableName += string.Format(".{0}", extensionForBuildTarget); + buildOptions.locationPathName = Path.Combine(buildLocation, playerExecutableName); + } + } + + return new PlayerLauncherBuildOptions + { + BuildPlayerOptions = ModifyBuildOptions(buildOptions), + PlayerDirectory = buildLocation, + }; + } + + private BuildPlayerOptions ModifyBuildOptions(BuildPlayerOptions buildOptions) + { + var allAssemblies = AppDomain.CurrentDomain.GetAssemblies() + .Where(x => x.GetReferencedAssemblies().Any(z => z.Name == "UnityEditor.TestRunner")).ToArray(); + var attributes = allAssemblies.SelectMany(assembly => assembly.GetCustomAttributes(typeof(TestPlayerBuildModifierAttribute), true).OfType()).ToArray(); + var modifiers = attributes.Select(attribute => attribute.ConstructModifier()).ToArray(); + + foreach (var modifier in modifiers) + { + buildOptions = modifier.ModifyOptions(buildOptions); + } + + return buildOptions; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncher.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncher.cs.meta new file mode 100644 index 0000000..60bb1c7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d973fc1524e4d724081553934c55958c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherBuildOptions.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherBuildOptions.cs new file mode 100644 index 0000000..b498514 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherBuildOptions.cs @@ -0,0 +1,23 @@ +using System.Text; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class PlayerLauncherBuildOptions + { + public BuildPlayerOptions BuildPlayerOptions; + public string PlayerDirectory; + + public override string ToString() + { + var str = new StringBuilder(); + str.AppendLine("locationPathName = " + BuildPlayerOptions.locationPathName); + str.AppendLine("target = " + BuildPlayerOptions.target); + str.AppendLine("scenes = " + string.Join(", ", BuildPlayerOptions.scenes)); + str.AppendLine("assetBundleManifestPath = " + BuildPlayerOptions.assetBundleManifestPath); + str.AppendLine("options.Development = " + ((BuildPlayerOptions.options & BuildOptions.Development) != 0)); + str.AppendLine("options.AutoRunPlayer = " + ((BuildPlayerOptions.options & BuildOptions.AutoRunPlayer) != 0)); + str.AppendLine("options.ForceEnableAssertions = " + ((BuildPlayerOptions.options & BuildOptions.ForceEnableAssertions) != 0)); + return str.ToString(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherBuildOptions.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherBuildOptions.cs.meta new file mode 100644 index 0000000..73c1779 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherBuildOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a0bd678385f98e4d8eabdfc07d62b4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherContextSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherContextSettings.cs new file mode 100644 index 0000000..151d8a2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherContextSettings.cs @@ -0,0 +1,113 @@ +using System; +using System.IO; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class PlayerLauncherContextSettings : IDisposable + { + private ITestRunSettings m_OverloadSettings; + + private EditorBuildSettingsScene[] m_EditorBuildSettings; +#pragma warning disable 618 + private ResolutionDialogSetting m_DisplayResolutionDialog; +#pragma warning restore 618 + private bool m_RunInBackground; + private FullScreenMode m_FullScreenMode; + private bool m_ResizableWindow; + private bool m_ShowUnitySplashScreen; + private string m_OldproductName; + private string m_OldAotOptions; +#pragma warning disable 618 + private Lightmapping.GIWorkflowMode m_OldLightmapping; +#pragma warning restore 618 + private bool m_explicitNullChecks; + + private bool m_Disposed; + + public PlayerLauncherContextSettings(ITestRunSettings overloadSettings) + { + m_OverloadSettings = overloadSettings; + SetupProjectParameters(); + + if (overloadSettings != null) + { + overloadSettings.Apply(); + } + } + + public void Dispose() + { + if (!m_Disposed) + { + CleanupProjectParameters(); + if (m_OverloadSettings != null) + { + m_OverloadSettings.Dispose(); + } + + m_Disposed = true; + } + } + + private void SetupProjectParameters() + { + EditorApplication.LockReloadAssemblies(); + + m_EditorBuildSettings = EditorBuildSettings.scenes; + +#pragma warning disable 618 + m_DisplayResolutionDialog = PlayerSettings.displayResolutionDialog; + PlayerSettings.displayResolutionDialog = ResolutionDialogSetting.Disabled; +#pragma warning restore 618 + + m_RunInBackground = PlayerSettings.runInBackground; + PlayerSettings.runInBackground = true; + + m_FullScreenMode = PlayerSettings.fullScreenMode; + PlayerSettings.fullScreenMode = FullScreenMode.Windowed; + + m_OldAotOptions = PlayerSettings.aotOptions; + PlayerSettings.aotOptions = "nimt-trampolines=1024"; + + m_ResizableWindow = PlayerSettings.resizableWindow; + PlayerSettings.resizableWindow = true; + + m_ShowUnitySplashScreen = PlayerSettings.SplashScreen.show; + PlayerSettings.SplashScreen.show = false; + + m_OldproductName = PlayerSettings.productName; + PlayerSettings.productName = string.Join("_", Application.productName.Split(Path.GetInvalidFileNameChars())); + +#pragma warning disable 618 + m_OldLightmapping = Lightmapping.giWorkflowMode; + Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.OnDemand; +#pragma warning restore 618 + + m_explicitNullChecks = EditorUserBuildSettings.explicitNullChecks; + EditorUserBuildSettings.explicitNullChecks = true; + } + + private void CleanupProjectParameters() + { + EditorBuildSettings.scenes = m_EditorBuildSettings; + + PlayerSettings.fullScreenMode = m_FullScreenMode; + PlayerSettings.runInBackground = m_RunInBackground; +#pragma warning disable 618 + PlayerSettings.displayResolutionDialog = m_DisplayResolutionDialog; +#pragma warning restore 618 + PlayerSettings.resizableWindow = m_ResizableWindow; + PlayerSettings.SplashScreen.show = m_ShowUnitySplashScreen; + PlayerSettings.productName = m_OldproductName; + PlayerSettings.aotOptions = m_OldAotOptions; +#pragma warning disable 618 + Lightmapping.giWorkflowMode = m_OldLightmapping; +#pragma warning restore 618 + EditorUserBuildSettings.explicitNullChecks = m_explicitNullChecks; + + EditorApplication.UnlockReloadAssemblies(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherContextSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherContextSettings.cs.meta new file mode 100644 index 0000000..29cb891 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherContextSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6965880f76f40194593cb53a88f74005 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherTestRunSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherTestRunSettings.cs new file mode 100644 index 0000000..2183282 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherTestRunSettings.cs @@ -0,0 +1,19 @@ +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner +{ + class PlayerLauncherTestRunSettings : ITestRunSettings + { + public bool buildOnly { set; get; } + + public string buildOnlyLocationPath { set; get; } + + public void Dispose() + { + } + + void ITestRunSettings.Apply() + { + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherTestRunSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherTestRunSettings.cs.meta new file mode 100644 index 0000000..ea71a0c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlayerLauncherTestRunSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c1cba6f3ed484514097080a3bb835958 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlaymodeLauncher.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlaymodeLauncher.cs new file mode 100644 index 0000000..223db27 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlaymodeLauncher.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal.Filters; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.TestRunner.Utils; +using UnityEngine.TestTools.TestRunner; +using UnityEngine.TestTools.TestRunner.Callbacks; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class PlaymodeLauncher : RuntimeTestLauncherBase + { + public static bool IsRunning; + private Scene m_Scene; + private bool m_IsTestSetupPerformed; + private readonly PlaymodeTestsControllerSettings m_Settings; + private ITestFilter testFilter; + + [SerializeField] + private List m_EventHandlers = new List(); + + public PlaymodeLauncher(PlaymodeTestsControllerSettings settings) + { + m_Settings = settings; + } + + public override void Run() + { + IsRunning = true; + ConsoleWindow.SetConsoleErrorPause(false); + Application.runInBackground = true; + + var sceneName = CreateSceneName(); + m_Scene = CreateBootstrapScene(sceneName, runner => + { + runner.AddEventHandlerMonoBehaviour(); + runner.AddEventHandlerScriptableObject(); + runner.AddEventHandlerScriptableObject(); + runner.AddEventHandlerScriptableObject(); + + foreach (var eventHandler in m_EventHandlers) + { + var obj = ScriptableObject.CreateInstance(eventHandler); + runner.AddEventHandlerScriptableObject(obj as ITestRunnerListener); + } + + runner.settings = m_Settings; + }); + + if (m_Settings.sceneBased) + { + var newListOfScenes = + new List {new EditorBuildSettingsScene(sceneName, true)}; + newListOfScenes.AddRange(EditorBuildSettings.scenes); + EditorBuildSettings.scenes = newListOfScenes.ToArray(); + } + + EditorApplication.update += UpdateCallback; + } + + public void UpdateCallback() + { + if (m_IsTestSetupPerformed) + { + if (m_Scene.IsValid()) + SceneManager.SetActiveScene(m_Scene); + EditorApplication.update -= UpdateCallback; + EditorApplication.isPlaying = true; + } + else + { + testFilter = m_Settings.BuildNUnitFilter(); + var runner = LoadTests(testFilter); + + var exceptionThrown = ExecutePreBuildSetupMethods(runner.LoadedTest, testFilter); + if (exceptionThrown) + { + EditorApplication.update -= UpdateCallback; + IsRunning = false; + var controller = PlaymodeTestsController.GetController(); + ReopenOriginalScene(controller); + AssetDatabase.DeleteAsset(controller.settings.bootstrapScene); + CallbacksDelegator.instance.RunFailed("Run Failed: One or more errors in a prebuild setup. See the editor log for details."); + return; + } + m_IsTestSetupPerformed = true; + } + } + + [InitializeOnLoad] + public class BackgroundWatcher + { + static BackgroundWatcher() + { + EditorApplication.playModeStateChanged += OnPlayModeStateChanged; + } + + private static void OnPlayModeStateChanged(PlayModeStateChange state) + { + if (!PlaymodeTestsController.IsControllerOnScene()) + return; + var runner = PlaymodeTestsController.GetController(); + if (runner == null) + return; + if (state == PlayModeStateChange.ExitingPlayMode) + { + AssetDatabase.DeleteAsset(runner.settings.bootstrapScene); + ExecutePostBuildCleanupMethods(runner.m_Runner.LoadedTest, runner.settings.BuildNUnitFilter(), Application.platform); + IsRunning = false; + } + else if (state == PlayModeStateChange.EnteredEditMode) + { + //reopen the original scene once we exit playmode + ReopenOriginalScene(runner); + } + } + } + + protected static void ReopenOriginalScene(PlaymodeTestsController runner) + { + ReopenOriginalScene(runner.settings.originalScene); + } + + public void AddEventHandler() where T : ScriptableObject, ITestRunnerListener + { + m_EventHandlers.Add(typeof(T)); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlaymodeLauncher.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlaymodeLauncher.cs.meta new file mode 100644 index 0000000..ddb6e1c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PlaymodeLauncher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d3217d58bbd1d2b4aaee933e2e8b9195 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PostbuildCleanupAttributeFinder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PostbuildCleanupAttributeFinder.cs new file mode 100644 index 0000000..32dee2b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PostbuildCleanupAttributeFinder.cs @@ -0,0 +1,9 @@ +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class PostbuildCleanupAttributeFinder : AttributeFinderBase + { + public PostbuildCleanupAttributeFinder() : base(attribute => attribute.TargetClass) {} + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PostbuildCleanupAttributeFinder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PostbuildCleanupAttributeFinder.cs.meta new file mode 100644 index 0000000..454dd10 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PostbuildCleanupAttributeFinder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c2dfcbbb77359547bcaa7cdabd47ebb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PrebuildSetupAttributeFinder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PrebuildSetupAttributeFinder.cs new file mode 100644 index 0000000..b51241f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PrebuildSetupAttributeFinder.cs @@ -0,0 +1,9 @@ +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class PrebuildSetupAttributeFinder : AttributeFinderBase + { + public PrebuildSetupAttributeFinder() : base((attribute) => attribute.TargetClass) {} + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PrebuildSetupAttributeFinder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PrebuildSetupAttributeFinder.cs.meta new file mode 100644 index 0000000..d524e56 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/PrebuildSetupAttributeFinder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c4ccfb0896bcf44da13e152b267aa49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerLogController.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerLogController.cs new file mode 100644 index 0000000..abaa219 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerLogController.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using UnityEditor.DeploymentTargets; +using UnityEditor.TestTools.TestRunner.CommandLineTest; +using UnityEngine; + +namespace UnityEditor.TestRunner.TestLaunchers +{ + [Serializable] + internal class RemotePlayerLogController : ScriptableSingleton + { + private List m_LogWriters; + + private Dictionary m_Loggers; + + private string m_DeviceLogsDirectory; + + public void SetBuildTarget(BuildTarget buildTarget) + { + m_Loggers = GetDeploymentTargetLoggers(buildTarget); + + if (m_Loggers == null) + Debug.Log("Deployment target logger could not be created"); + } + + public void SetLogsDirectory(string dir) + { + m_DeviceLogsDirectory = dir; + } + + public void StartLogWriters() + { + if (m_DeviceLogsDirectory == null || m_Loggers == null) + return; + + m_LogWriters = new List(); + + foreach (var logger in m_Loggers) + { + m_LogWriters.Add(new LogWriter(m_DeviceLogsDirectory, logger.Key, logger.Value)); + logger.Value.Start(); + } + } + + public void StopLogWriters() + { + if (m_LogWriters == null) + return; + + foreach (var logWriter in m_LogWriters) + { + logWriter.Stop(); + } + } + + private Dictionary GetDeploymentTargetLoggers(BuildTarget buildTarget) + { + DeploymentTargetManager deploymentTargetManager; + + try + { + deploymentTargetManager = DeploymentTargetManager.CreateInstance(EditorUserBuildSettings.activeBuildTargetGroup, buildTarget); + + if (deploymentTargetManager == null) + return null; + } + catch (NotSupportedException ex) + { + Debug.Log(ex.Message); + Debug.Log("Deployment target logger not initialised"); + return null; + } + + var targets = deploymentTargetManager.GetKnownTargets(); + var loggers = new Dictionary(); + + foreach (var target in targets) + { + if (target.status != DeploymentTargetStatus.Ready) continue; + + var logger = deploymentTargetManager.GetTargetLogger(target.id); + logger.Clear(); + loggers.Add(target.id, logger); + } + + return loggers; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerLogController.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerLogController.cs.meta new file mode 100644 index 0000000..b208419 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerLogController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: edd2a1fe1acbbde43aad39862bb3f4a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerTestController.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerTestController.cs new file mode 100644 index 0000000..951bb8a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerTestController.cs @@ -0,0 +1,110 @@ +using System; +using UnityEditor.Networking.PlayerConnection; +using UnityEditor.TestTools.TestRunner; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEditor.TestTools.TestRunner.UnityTestProtocol; +using UnityEngine; +using UnityEngine.Networking.PlayerConnection; +using UnityEngine.TestRunner.TestLaunchers; + +namespace UnityEditor.TestRunner.TestLaunchers +{ + [Serializable] + internal class RemoteTestRunController : ScriptableSingleton + { + internal const int k_HeartbeatTimeout = 60 * 10; + + [SerializeField] + private RemoteTestResultReciever m_RemoteTestResultReciever; + + [SerializeField] + private PlatformSpecificSetup m_PlatformSpecificSetup; + + [SerializeField] + private bool m_RegisteredConnectionCallbacks; + + [SerializeField] + private int m_HearbeatTimeOut; + + private UnityEditor.TestTools.TestRunner.DelayedCallback m_TimeoutCallback; + + public void Init(BuildTarget buildTarget, int heartbeatTimeout) + { + m_HearbeatTimeOut = heartbeatTimeout; + m_PlatformSpecificSetup = new PlatformSpecificSetup(buildTarget); + m_PlatformSpecificSetup.Setup(); + m_RemoteTestResultReciever = new RemoteTestResultReciever(); + EditorConnection.instance.Initialize(); + if (!m_RegisteredConnectionCallbacks) + { + EditorConnection.instance.Initialize(); + DelegateEditorConnectionEvents(); + } + } + + private void DelegateEditorConnectionEvents() + { + m_RegisteredConnectionCallbacks = true; + //This is needed because RemoteTestResultReceiver is not a ScriptableObject + EditorConnection.instance.Register(PlayerConnectionMessageIds.runStartedMessageId, RunStarted); + EditorConnection.instance.Register(PlayerConnectionMessageIds.runFinishedMessageId, RunFinished); + EditorConnection.instance.Register(PlayerConnectionMessageIds.testStartedMessageId, TestStarted); + EditorConnection.instance.Register(PlayerConnectionMessageIds.testFinishedMessageId, TestFinished); + EditorConnection.instance.Register(PlayerConnectionMessageIds.playerAliveHeartbeat, PlayerAliveHeartbeat); + } + + private void RunStarted(MessageEventArgs messageEventArgs) + { + m_TimeoutCallback?.Reset(); + m_RemoteTestResultReciever.RunStarted(messageEventArgs); + CallbacksDelegator.instance.RunStartedRemotely(messageEventArgs.data); + } + + private void RunFinished(MessageEventArgs messageEventArgs) + { + m_TimeoutCallback?.Clear(); + m_RemoteTestResultReciever.RunFinished(messageEventArgs); + m_PlatformSpecificSetup.CleanUp(); + + CallbacksDelegator.instance.RunFinishedRemotely(messageEventArgs.data); + } + + private void TestStarted(MessageEventArgs messageEventArgs) + { + m_TimeoutCallback?.Reset(); + CallbacksDelegator.instance.TestStartedRemotely(messageEventArgs.data); + } + + private void TestFinished(MessageEventArgs messageEventArgs) + { + m_TimeoutCallback?.Reset(); + CallbacksDelegator.instance.TestFinishedRemotely(messageEventArgs.data); + } + + private void PlayerAliveHeartbeat(MessageEventArgs messageEventArgs) + { + m_TimeoutCallback?.Reset(); + } + + private void TimeoutCallback() + { + CallbacksDelegator.instance.RunFailed($"Test execution timed out. No activity received from the player in {m_HearbeatTimeOut} seconds."); + } + + public void PostBuildAction() + { + m_PlatformSpecificSetup.PostBuildAction(); + } + + public void PostSuccessfulBuildAction() + { + m_PlatformSpecificSetup.PostSuccessfulBuildAction(); + m_TimeoutCallback = new UnityEditor.TestTools.TestRunner.DelayedCallback(TimeoutCallback, m_HearbeatTimeOut); + } + + public void PostSuccessfulLaunchAction() + { + m_PlatformSpecificSetup.PostSuccessfulLaunchAction(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerTestController.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerTestController.cs.meta new file mode 100644 index 0000000..020222b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemotePlayerTestController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d36034e63ad8254b9b2f55280fcc040 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemoteTestResultReciever.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemoteTestResultReciever.cs new file mode 100644 index 0000000..75b0712 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemoteTestResultReciever.cs @@ -0,0 +1,22 @@ +using System; +using UnityEditor.Networking.PlayerConnection; +using UnityEngine; +using UnityEngine.Networking.PlayerConnection; +using UnityEngine.TestRunner.TestLaunchers; + +namespace UnityEditor.TestTools.TestRunner +{ + [Serializable] + internal class RemoteTestResultReciever + { + public void RunStarted(MessageEventArgs messageEventArgs) + { + } + + public void RunFinished(MessageEventArgs messageEventArgs) + { + EditorConnection.instance.Send(PlayerConnectionMessageIds.quitPlayerMessageId, null, messageEventArgs.playerId); + EditorConnection.instance.DisconnectAll(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemoteTestResultReciever.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemoteTestResultReciever.cs.meta new file mode 100644 index 0000000..e701015 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RemoteTestResultReciever.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fdb35ef8fc437e14fa4b6c74a0609e86 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RuntimeTestLauncherBase.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RuntimeTestLauncherBase.cs new file mode 100644 index 0000000..87d9672 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RuntimeTestLauncherBase.cs @@ -0,0 +1,92 @@ +using System; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEditor.Events; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.TestRunner.NUnitExtensions.Runner; +using UnityEngine.TestTools; +using UnityEngine.TestTools.NUnitExtensions; +using UnityEngine.TestTools.TestRunner; +using UnityEngine.TestTools.Utils; + +namespace UnityEditor.TestTools.TestRunner +{ + internal abstract class RuntimeTestLauncherBase : TestLauncherBase + { + protected Scene CreateBootstrapScene(string sceneName, Action runnerSetup) + { + var scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single); + var go = new GameObject(PlaymodeTestsController.kPlaymodeTestControllerName); + + var editorLoadedTestAssemblyProvider = new EditorLoadedTestAssemblyProvider(new EditorCompilationInterfaceProxy(), new EditorAssembliesProxy()); + + var runner = go.AddComponent(); + runnerSetup(runner); + runner.settings.bootstrapScene = sceneName; + runner.AssembliesWithTests = editorLoadedTestAssemblyProvider.GetAssembliesGroupedByType(TestPlatform.PlayMode).Select(x => x.Assembly.GetName().Name).ToList(); + + EditorSceneManager.MarkSceneDirty(scene); + AssetDatabase.SaveAssets(); + EditorSceneManager.SaveScene(scene, sceneName, false); + + return scene; + } + + public string CreateSceneName() + { + return "Assets/InitTestScene" + DateTime.Now.Ticks + ".unity"; + } + + protected UnityTestAssemblyRunner LoadTests(ITestFilter filter) + { + var editorLoadedTestAssemblyProvider = new EditorLoadedTestAssemblyProvider(new EditorCompilationInterfaceProxy(), new EditorAssembliesProxy()); + var assembliesWithTests = editorLoadedTestAssemblyProvider.GetAssembliesGroupedByType(TestPlatform.PlayMode).Select(x => x.Assembly.GetName().Name).ToList(); + + var nUnitTestAssemblyRunner = new UnityTestAssemblyRunner(new UnityTestAssemblyBuilder(), null); + var assemblyProvider = new PlayerTestAssemblyProvider(new AssemblyLoadProxy(), assembliesWithTests); + nUnitTestAssemblyRunner.Load(assemblyProvider.GetUserAssemblies().Select(a => a.Assembly).ToArray(), TestPlatform.PlayMode, UnityTestAssemblyBuilder.GetNUnitTestBuilderSettings(TestPlatform.PlayMode)); + return nUnitTestAssemblyRunner; + } + + protected static void ReopenOriginalScene(string originalSceneName) + { + EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects); + if (!string.IsNullOrEmpty(originalSceneName)) + { + EditorSceneManager.OpenScene(originalSceneName); + } + } + } + + internal static class PlaymodeTestsControllerExtensions + { + internal static T AddEventHandlerMonoBehaviour(this PlaymodeTestsController controller) where T : MonoBehaviour, ITestRunnerListener + { + var eventHandler = controller.gameObject.AddComponent(); + SetListeners(controller, eventHandler); + return eventHandler; + } + + internal static T AddEventHandlerScriptableObject(this PlaymodeTestsController controller) where T : ScriptableObject, ITestRunnerListener + { + var eventListener = ScriptableObject.CreateInstance(); + AddEventHandlerScriptableObject(controller, eventListener); + return eventListener; + } + + internal static void AddEventHandlerScriptableObject(this PlaymodeTestsController controller, ITestRunnerListener obj) + { + SetListeners(controller, obj); + } + + private static void SetListeners(PlaymodeTestsController controller, ITestRunnerListener eventHandler) + { + UnityEventTools.AddPersistentListener(controller.testStartedEvent, eventHandler.TestStarted); + UnityEventTools.AddPersistentListener(controller.testFinishedEvent, eventHandler.TestFinished); + UnityEventTools.AddPersistentListener(controller.runStartedEvent, eventHandler.RunStarted); + UnityEventTools.AddPersistentListener(controller.runFinishedEvent, eventHandler.RunFinished); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RuntimeTestLauncherBase.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RuntimeTestLauncherBase.cs.meta new file mode 100644 index 0000000..28c7416 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/RuntimeTestLauncherBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0efb23ecb373b6d4bbe5217485785138 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/TestLauncherBase.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/TestLauncherBase.cs new file mode 100644 index 0000000..7bfd354 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/TestLauncherBase.cs @@ -0,0 +1,85 @@ +using System; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEngine; +using UnityEngine.TestTools; +using UnityEngine.TestTools.Logging; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEditor.TestTools.TestRunner +{ + internal abstract class TestLauncherBase + { + public abstract void Run(); + + protected virtual RuntimePlatform? TestTargetPlatform + { + get { return Application.platform; } + } + + protected bool ExecutePreBuildSetupMethods(ITest tests, ITestFilter testRunnerFilter) + { + var attributeFinder = new PrebuildSetupAttributeFinder(); + var logString = "Executing setup for: {0}"; + return ExecuteMethods(tests, testRunnerFilter, attributeFinder, logString, targetClass => targetClass.Setup(), TestTargetPlatform); + } + + public void ExecutePostBuildCleanupMethods(ITest tests, ITestFilter testRunnerFilter) + { + ExecutePostBuildCleanupMethods(tests, testRunnerFilter, TestTargetPlatform); + } + + public static void ExecutePostBuildCleanupMethods(ITest tests, ITestFilter testRunnerFilter, RuntimePlatform? testTargetPlatform) + { + var attributeFinder = new PostbuildCleanupAttributeFinder(); + var logString = "Executing cleanup for: {0}"; + ExecuteMethods(tests, testRunnerFilter, attributeFinder, logString, targetClass => targetClass.Cleanup(), testTargetPlatform); + } + + private static bool ExecuteMethods(ITest tests, ITestFilter testRunnerFilter, AttributeFinderBase attributeFinder, string logString, Action action, RuntimePlatform? testTargetPlatform) + { + var exceptionsThrown = false; + + if (testTargetPlatform == null) + { + Debug.LogError("Could not determine test target platform from build target " + EditorUserBuildSettings.activeBuildTarget); + return true; + } + + foreach (var targetClassType in attributeFinder.Search(tests, testRunnerFilter, testTargetPlatform.Value)) + { + try + { + var targetClass = (T)Activator.CreateInstance(targetClassType); + + Debug.LogFormat(logString, targetClassType.FullName); + + using (var logScope = new LogScope()) + { + action(targetClass); + + if (logScope.AnyFailingLogs()) + { + var failingLog = logScope.FailingLogs.First(); + throw new UnhandledLogMessageException(failingLog); + } + + if (logScope.ExpectedLogs.Any()) + { + var expectedLogs = logScope.ExpectedLogs.First(); + throw new UnexpectedLogMessageException(expectedLogs); + } + } + } + catch (InvalidCastException) {} + catch (Exception e) + { + Debug.LogException(e); + exceptionsThrown = true; + } + } + + return exceptionsThrown; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/TestLauncherBase.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/TestLauncherBase.cs.meta new file mode 100644 index 0000000..c36990c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestLaunchers/TestLauncherBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1cddf785b0d07434d8e0607c97b09135 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestResultSerializer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestResultSerializer.cs new file mode 100644 index 0000000..e3b5220 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestResultSerializer.cs @@ -0,0 +1,75 @@ +using System; +using System.Reflection; +using System.Text; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using UnityEngine; +using UnityEngine.TestRunner.NUnitExtensions; + +namespace UnityEditor.TestTools.TestRunner +{ + [Serializable] + internal class TestResultSerializer + { + private static readonly BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | + BindingFlags.Instance | BindingFlags.FlattenHierarchy; + + [SerializeField] public string id; + + [SerializeField] public string fullName; + + [SerializeField] private double duration; + + [SerializeField] private string label; + + [SerializeField] private string message; + + [SerializeField] private string output; + + [SerializeField] private string site; + + [SerializeField] private string stacktrace; + + [SerializeField] private double startTimeAO; + + [SerializeField] private string status; + + [SerializeField] public string uniqueName; + + public static TestResultSerializer MakeFromTestResult(ITestResult result) + { + var wrapper = new TestResultSerializer(); + wrapper.id = result.Test.Id; + wrapper.fullName = result.FullName; + wrapper.status = result.ResultState.Status.ToString(); + wrapper.label = result.ResultState.Label; + wrapper.site = result.ResultState.Site.ToString(); + wrapper.output = result.Output; + wrapper.duration = result.Duration; + wrapper.stacktrace = result.StackTrace; + wrapper.message = result.Message; + wrapper.startTimeAO = result.StartTime.ToOADate(); + wrapper.uniqueName = result.Test.GetUniqueName(); + return wrapper; + } + + public void RestoreTestResult(TestResult result) + { + var resultState = new ResultState((TestStatus)Enum.Parse(typeof(TestStatus), status), label, + (FailureSite)Enum.Parse(typeof(FailureSite), site)); + result.GetType().BaseType.GetField("_resultState", flags).SetValue(result, resultState); + result.GetType().BaseType.GetField("_output", flags).SetValue(result, new StringBuilder(output)); + result.GetType().BaseType.GetField("_duration", flags).SetValue(result, duration); + result.GetType().BaseType.GetField("_message", flags).SetValue(result, message); + result.GetType().BaseType.GetField("_stackTrace", flags).SetValue(result, stacktrace); + result.GetType() + .BaseType.GetProperty("StartTime", flags) + .SetValue(result, DateTime.FromOADate(startTimeAO), null); + } + + public bool IsPassed() + { + return status == TestStatus.Passed.ToString(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestResultSerializer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestResultSerializer.cs.meta new file mode 100644 index 0000000..96f2960 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestResultSerializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 559482fe33c79e44882d3a6cedc55fb5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun.meta new file mode 100644 index 0000000..6f6e8cf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8721cb2237d4a564a94a51f56243bdac +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks.meta new file mode 100644 index 0000000..bb019b7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6dba53789da15814387fa5b1445e81e0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildActionTaskBase.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildActionTaskBase.cs new file mode 100644 index 0000000..7efaecb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildActionTaskBase.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEngine; +using UnityEngine.TestTools.Logging; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal abstract class BuildActionTaskBase : TestTaskBase + { + private string typeName; + internal IAttributeFinder attributeFinder; + internal RuntimePlatform targetPlatform = Application.platform; + internal Action logAction = Debug.Log; + internal Func logScopeProvider = () => new LogScope(); + internal Func createInstance = Activator.CreateInstance; + + protected BuildActionTaskBase(IAttributeFinder attributeFinder) + { + this.attributeFinder = attributeFinder; + typeName = typeof(T).Name; + } + + protected abstract void Action(T target); + + public override IEnumerator Execute(TestJobData testJobData) + { + if (testJobData.testTree == null) + { + throw new Exception($"Test tree is not available for {GetType().Name}."); + } + + var enumerator = ExecuteMethods(testJobData.testTree, testJobData.executionSettings.BuildNUnitFilter()); + while (enumerator.MoveNext()) + { + yield return null; + } + } + + protected IEnumerator ExecuteMethods(ITest testTree, ITestFilter testRunnerFilter) + { + var exceptions = new List(); + + foreach (var targetClassType in attributeFinder.Search(testTree, testRunnerFilter, targetPlatform)) + { + try + { + var targetClass = (T) createInstance(targetClassType); + + logAction($"Executing {typeName} for: {targetClassType.FullName}."); + + using (var logScope = logScopeProvider()) + { + Action(targetClass); + + if (logScope.AnyFailingLogs()) + { + var failingLog = logScope.FailingLogs.First(); + throw new UnhandledLogMessageException(failingLog); + } + + if (logScope.ExpectedLogs.Any()) + { + var expectedLogs = logScope.ExpectedLogs.First(); + throw new UnexpectedLogMessageException(expectedLogs); + } + } + } + catch (Exception ex) + { + exceptions.Add(ex); + } + + yield return null; + } + + if (exceptions.Count > 0) + { + throw new AggregateException($"One or more exceptions when executing {typeName}.", exceptions); + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildActionTaskBase.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildActionTaskBase.cs.meta new file mode 100644 index 0000000..54afd57 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildActionTaskBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c2441d353f9c42a44af6e224e4901b52 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs new file mode 100644 index 0000000..b66f507 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections; +using System.Linq; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine.TestRunner.NUnitExtensions; +using UnityEngine.TestTools; +using UnityEngine.TestTools.NUnitExtensions; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class BuildTestTreeTask : TestTaskBase + { + private TestPlatform m_TestPlatform; + + public BuildTestTreeTask(TestPlatform testPlatform) + { + m_TestPlatform = testPlatform; + } + + internal IEditorLoadedTestAssemblyProvider m_testAssemblyProvider = new EditorLoadedTestAssemblyProvider(new EditorCompilationInterfaceProxy(), new EditorAssembliesProxy()); + internal IAsyncTestAssemblyBuilder m_testAssemblyBuilder = new UnityTestAssemblyBuilder(); + internal ICallbacksDelegator m_CallbacksDelegator = CallbacksDelegator.instance; + + public override IEnumerator Execute(TestJobData testJobData) + { + if (testJobData.testTree != null) + { + yield break; + } + + var assembliesEnumerator = m_testAssemblyProvider.GetAssembliesGroupedByTypeAsync(m_TestPlatform); + while (assembliesEnumerator.MoveNext()) + { + yield return null; + } + + if (assembliesEnumerator.Current == null) + { + throw new Exception("Assemblies not retrieved."); + } + + var assemblies = assembliesEnumerator.Current.Where(pair => m_TestPlatform.IsFlagIncluded(pair.Key)).SelectMany(pair => pair.Value).Select(x => x.Assembly).ToArray(); + var buildSettings = UnityTestAssemblyBuilder.GetNUnitTestBuilderSettings(m_TestPlatform); + var enumerator = m_testAssemblyBuilder.BuildAsync(assemblies, Enumerable.Repeat(m_TestPlatform, assemblies.Length).ToArray(), buildSettings); + while (enumerator.MoveNext()) + { + yield return null; + } + + var testList = enumerator.Current; + if (testList== null) + { + throw new Exception("Test list not retrieved."); + } + + testList.ParseForNameDuplicates(); + testJobData.testTree = testList; + m_CallbacksDelegator.TestTreeRebuild(testList); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs.meta new file mode 100644 index 0000000..b00d7b1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/BuildTestTreeTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a0288e1c9324e824bab7e2044a72a434 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/CleanupVerificationTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/CleanupVerificationTask.cs new file mode 100644 index 0000000..cf07f4c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/CleanupVerificationTask.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections; +using System.IO; +using System.Linq; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class CleanupVerificationTask : FileCleanupVerifierTaskBase + { + private const string k_Indent = " "; + + internal Action logAction = Debug.LogWarning; + + public override IEnumerator Execute(TestJobData testJobData) + { + var currentFiles = GetAllFilesInAssetsDirectory(); + var existingFiles = testJobData.existingFiles; + + if (currentFiles.Length != existingFiles.Length) + { + LogWarningForFilesIfAny(currentFiles.Where(file => !testJobData.existingFiles.Contains(file)).ToArray()); + } + + yield return null; + } + + private void LogWarningForFilesIfAny(string[] filePaths) + { + if (!filePaths.Any()) + { + return; + } + + var stringWriter = new StringWriter(); + stringWriter.WriteLine("Files generated by test without cleanup."); + stringWriter.WriteLine(k_Indent + "Found {0} new files.", filePaths.Length); + + foreach (var filePath in filePaths) + { + stringWriter.WriteLine(k_Indent + filePath); + } + + logAction(stringWriter.ToString()); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/CleanupVerificationTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/CleanupVerificationTask.cs.meta new file mode 100644 index 0000000..2ea7cb0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/CleanupVerificationTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93eb6389f4fb6924987867ce0bc339ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/FileCleanupVerifierTaskBase.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/FileCleanupVerifierTaskBase.cs new file mode 100644 index 0000000..35f4aa0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/FileCleanupVerifierTaskBase.cs @@ -0,0 +1,14 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal abstract class FileCleanupVerifierTaskBase : TestTaskBase + { + internal Func GetAllAssetPathsAction = AssetDatabase.GetAllAssetPaths; + + protected string[] GetAllFilesInAssetsDirectory() + { + return GetAllAssetPathsAction(); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/FileCleanupVerifierTaskBase.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/FileCleanupVerifierTaskBase.cs.meta new file mode 100644 index 0000000..617b92d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/FileCleanupVerifierTaskBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad7bb166069f8414e9ad26606b305e66 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyEditModeRunTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyEditModeRunTask.cs new file mode 100644 index 0000000..30db267 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyEditModeRunTask.cs @@ -0,0 +1,26 @@ +using System.Collections; +using UnityEngine; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class LegacyEditModeRunTask : TestTaskBase + { + public LegacyEditModeRunTask() : base(true) + { + + } + + public override IEnumerator Execute(TestJobData testJobData) + { + var testLauncher = new EditModeLauncher(testJobData.executionSettings.filters, TestPlatform.EditMode, testJobData.executionSettings.runSynchronously); + testJobData.editModeRunner = testLauncher.m_EditModeRunner; + testLauncher.Run(); + + while (testJobData.editModeRunner != null && !testJobData.editModeRunner.RunFinished) + { + yield return null; + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyEditModeRunTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyEditModeRunTask.cs.meta new file mode 100644 index 0000000..3a65c88 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyEditModeRunTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b4246555189b5ee43b4857220f9fd29b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayModeRunTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayModeRunTask.cs new file mode 100644 index 0000000..b0b30df --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayModeRunTask.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Linq; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class LegacyPlayModeRunTask : TestTaskBase + { + public LegacyPlayModeRunTask() : base(true) + { + + } + public override IEnumerator Execute(TestJobData testJobData) + { + var settings = PlaymodeTestsControllerSettings.CreateRunnerSettings(testJobData.executionSettings.filters.Select(filter => filter.ToRuntimeTestRunnerFilter(testJobData.executionSettings.runSynchronously)).ToArray()); + var launcher = new PlaymodeLauncher(settings); + + launcher.Run(); + + while (PlaymodeLauncher.IsRunning) + { + yield return null; + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayModeRunTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayModeRunTask.cs.meta new file mode 100644 index 0000000..0a75368 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayModeRunTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4769fe1e7475c8843b092338acbcad25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayerRunTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayerRunTask.cs new file mode 100644 index 0000000..3f24135 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayerRunTask.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Linq; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class LegacyPlayerRunTask : TestTaskBase + { + public override IEnumerator Execute(TestJobData testJobData) + { + var executionSettings = testJobData.executionSettings; + var settings = PlaymodeTestsControllerSettings.CreateRunnerSettings(executionSettings.filters.Select(filter => filter.ToRuntimeTestRunnerFilter(executionSettings.runSynchronously)).ToArray()); + var launcher = new PlayerLauncher(settings, executionSettings.targetPlatform, executionSettings.overloadTestRunSettings, executionSettings.playerHeartbeatTimeout); + launcher.Run(); + yield return null; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayerRunTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayerRunTask.cs.meta new file mode 100644 index 0000000..67eea1a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/LegacyPlayerRunTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b93fe5bbea454ae438fcec241c5fa85b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PerformUndoTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PerformUndoTask.cs new file mode 100644 index 0000000..93878cf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PerformUndoTask.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class PerformUndoTask : TestTaskBase + { + private const double warningThreshold = 1000; + + internal Action RevertAllDownToGroup = Undo.RevertAllDownToGroup; + internal Action LogWarning = Debug.LogWarning; + internal Action DisplayProgressBar = EditorUtility.DisplayProgressBar; + internal Action ClearProgressBar = EditorUtility.ClearProgressBar; + internal Func TimeNow = () => DateTime.Now; + + public override IEnumerator Execute(TestJobData testJobData) + { + if (testJobData.undoGroup < 0) + { + yield break; + } + + DisplayProgressBar("Undo", "Reverting changes to the scene", 0); + + var undoStartTime = TimeNow(); + + RevertAllDownToGroup(testJobData.undoGroup); + + var timeDelta = TimeNow() - undoStartTime; + if (timeDelta.TotalMilliseconds >= warningThreshold) + { + LogWarning($"Undo after editor test run took {timeDelta.Seconds} second{(timeDelta.Seconds == 1 ? "" : "s")}."); + } + + ClearProgressBar(); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PerformUndoTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PerformUndoTask.cs.meta new file mode 100644 index 0000000..f506742 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PerformUndoTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb1abebffd37bd4458c84e15a5d7ab04 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PrebuildSetupTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PrebuildSetupTask.cs new file mode 100644 index 0000000..adec2ae --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PrebuildSetupTask.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections; +using NUnit.Framework.Interfaces; +using UnityEngine; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class PrebuildSetupTask : BuildActionTaskBase + { + public PrebuildSetupTask() : base(new PrebuildSetupAttributeFinder()) + { + } + + protected override void Action(IPrebuildSetup target) + { + target.Setup(); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PrebuildSetupTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PrebuildSetupTask.cs.meta new file mode 100644 index 0000000..5a564af --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/PrebuildSetupTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc039194235714f48a39bd364885e744 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/RegisterFilesForCleanupVerificationTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/RegisterFilesForCleanupVerificationTask.cs new file mode 100644 index 0000000..50b4cf6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/RegisterFilesForCleanupVerificationTask.cs @@ -0,0 +1,13 @@ +using System.Collections; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class RegisterFilesForCleanupVerificationTask : FileCleanupVerifierTaskBase + { + public override IEnumerator Execute(TestJobData testJobData) + { + testJobData.existingFiles = GetAllFilesInAssetsDirectory(); + yield return null; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/RegisterFilesForCleanupVerificationTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/RegisterFilesForCleanupVerificationTask.cs.meta new file mode 100644 index 0000000..51eb7dd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/RegisterFilesForCleanupVerificationTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a398fde47a0349a40a9bdf8988c392c9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveModiedSceneTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveModiedSceneTask.cs new file mode 100644 index 0000000..d42f7b9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveModiedSceneTask.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections; +using UnityEditor.SceneManagement; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class SaveModiedSceneTask : TestTaskBase + { + internal Func SaveCurrentModifiedScenesIfUserWantsTo = + EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo; + public override IEnumerator Execute(TestJobData testJobData) + { + var cancelled = !SaveCurrentModifiedScenesIfUserWantsTo(); + if (cancelled) + { + throw new TestRunCanceledException(); + } + + yield break; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveModiedSceneTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveModiedSceneTask.cs.meta new file mode 100644 index 0000000..7300f3b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveModiedSceneTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c321246872d389b469bd0cb86d3701ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveUndoIndexTask.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveUndoIndexTask.cs new file mode 100644 index 0000000..ee6de8f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveUndoIndexTask.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal class SaveUndoIndexTask : TestTaskBase + { + internal Func GetUndoGroup = Undo.GetCurrentGroup; + public override IEnumerator Execute(TestJobData testJobData) + { + testJobData.undoGroup = GetUndoGroup(); + yield break; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveUndoIndexTask.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveUndoIndexTask.cs.meta new file mode 100644 index 0000000..30789a1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/SaveUndoIndexTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc0ce06a7515c044bb8db4c75db84114 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/TestTaskBase.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/TestTaskBase.cs new file mode 100644 index 0000000..81b1849 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/TestTaskBase.cs @@ -0,0 +1,16 @@ +using System.Collections; + +namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks +{ + internal abstract class TestTaskBase + { + public bool SupportsResumingEnumerator; + + protected TestTaskBase(bool supportsResumingEnumerator = false) + { + SupportsResumingEnumerator = supportsResumingEnumerator; + } + + public abstract IEnumerator Execute(TestJobData testJobData); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/TestTaskBase.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/TestTaskBase.cs.meta new file mode 100644 index 0000000..8b54c2e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/Tasks/TestTaskBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 342d9ef4da0a19b49877f576c2deec14 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobData.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobData.cs new file mode 100644 index 0000000..05ab503 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobData.cs @@ -0,0 +1,49 @@ +using System; +using NUnit.Framework.Interfaces; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.TestRun +{ + [Serializable] + internal class TestJobData + { + [SerializeField] + public string guid; + + [SerializeField] + public int taskIndex; + + [SerializeField] + public int taskPC; + + [SerializeField] + public bool isRunning; + + [SerializeField] + public ExecutionSettings executionSettings; + + [SerializeField] + public string[] existingFiles; + + [SerializeField] + public int undoGroup = -1; + + [SerializeField] + public EditModeRunner editModeRunner; + + [NonSerialized] + public bool isHandledByRunner; + + public ITest testTree; + + public TestJobData(ExecutionSettings settings) + { + guid = Guid.NewGuid().ToString(); + executionSettings = settings; + isRunning = false; + taskIndex = 0; + taskPC = 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobData.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobData.cs.meta new file mode 100644 index 0000000..5da5662 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 80ac8f5b2a7fa904dbc80111be88c8be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobDataHolder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobDataHolder.cs new file mode 100644 index 0000000..7852f73 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobDataHolder.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.TestRun +{ + internal class TestJobDataHolder : ScriptableSingleton + { + [SerializeField] + public List TestRuns = new List(); + + [InitializeOnLoadMethod] + private static void ResumeRunningJobs() + { + foreach (var testRun in instance.TestRuns.ToArray()) + { + if (testRun.isRunning) + { + var runner = new TestJobRunner(); + runner.RunJob(testRun); + } + else + { + instance.TestRuns.Remove(testRun); + } + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobDataHolder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobDataHolder.cs.meta new file mode 100644 index 0000000..3612b80 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobDataHolder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 612b00d793cac3c49808ab3ee5428f16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobRunner.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobRunner.cs new file mode 100644 index 0000000..8a9cd4f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobRunner.cs @@ -0,0 +1,166 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEditor.TestTools.TestRunner.TestRun.Tasks; +using UnityEngine; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner.TestRun +{ + internal class TestJobRunner + { + private static IEnumerable GetTaskList(ExecutionSettings settings) + { + if (settings == null) + { + yield break; + } + + if (settings.EditModeIncluded() || (PlayerSettings.runPlayModeTestAsEditModeTest && settings.PlayModeInEditorIncluded())) + { + yield return new SaveModiedSceneTask(); + yield return new RegisterFilesForCleanupVerificationTask(); + yield return new SaveUndoIndexTask(); + yield return new BuildTestTreeTask(TestPlatform.EditMode); + yield return new PrebuildSetupTask(); + yield return new LegacyEditModeRunTask(); + yield return new PerformUndoTask(); + yield return new CleanupVerificationTask(); + yield break; + } + + if (settings.PlayModeInEditorIncluded() && !PlayerSettings.runPlayModeTestAsEditModeTest) + { + yield return new SaveModiedSceneTask(); + yield return new LegacyPlayModeRunTask(); + yield break; + } + + if (settings.PlayerIncluded()) + { + yield return new LegacyPlayerRunTask(); + yield break; + } + } + + internal List SavedTestJobData = TestJobDataHolder.instance.TestRuns; + internal Action SubscribeCallback = (callback) => EditorApplication.update += callback; + // ReSharper disable once DelegateSubtraction + internal Action UnsubscribeCallback = (callback) => EditorApplication.update -= callback; + internal TestCommandPcHelper PcHelper = new EditModePcHelper(); + internal Func> GetTasks = GetTaskList; + internal Action LogException = Debug.LogException; + internal Action LogError = Debug.LogError; + internal Action ReportRunFailed = CallbacksDelegator.instance.RunFailed; + + private TestJobData m_JobData; + private TestTaskBase[] Tasks; + private IEnumerator m_Enumerator = null; + + public string RunJob(TestJobData data) + { + if (data == null) + { + throw new ArgumentException(null, nameof(data)); + } + + if (m_JobData != null && m_JobData.isRunning) + { + throw new Exception("TestJobRunner is already running a job."); + } + + if (data.isHandledByRunner) + { + throw new Exception("Test job is already being handled."); + } + + m_JobData = data; + m_JobData.isHandledByRunner = true; + + if (!m_JobData.isRunning) + { + m_JobData.isRunning = true; + SavedTestJobData.Add(m_JobData); + } + + Tasks = GetTasks(data.executionSettings).ToArray(); + if (!data.executionSettings.runSynchronously) + { + SubscribeCallback(ExecuteStep); + } + else + { + while (data.isRunning) + { + ExecuteStep(); + } + } + + return data.guid; + } + + private void ExecuteStep() + { + try + { + if (m_JobData.taskIndex >= Tasks.Length) + { + StopRun(); + return; + } + + if (m_Enumerator == null) + { + var task = Tasks[m_JobData.taskIndex]; + m_Enumerator = task.Execute(m_JobData); + if (task.SupportsResumingEnumerator) + { + PcHelper.SetEnumeratorPC(m_Enumerator, m_JobData.taskPC); + } + } + + if (!m_Enumerator.MoveNext()) + { + m_JobData.taskIndex++; + m_JobData.taskPC = 0; + m_Enumerator = null; + return; + } + + if (Tasks[m_JobData.taskIndex].SupportsResumingEnumerator) + { + m_JobData.taskPC = PcHelper.GetEnumeratorPC(m_Enumerator); + } + } + catch (TestRunCanceledException) + { + StopRun(); + } + catch (AggregateException ex) + { + StopRun(); + LogError(ex.Message); + foreach (var innerException in ex.InnerExceptions) + { + LogException(innerException); + } + ReportRunFailed("Multiple unexpected errors happened while running tests."); + } + catch (Exception ex) + { + StopRun(); + LogException(ex); + ReportRunFailed("An unexpected error happened while running tests."); + } + } + + private void StopRun() + { + m_JobData.isRunning = false; + UnsubscribeCallback(ExecuteStep); + SavedTestJobData.Remove(m_JobData); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobRunner.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobRunner.cs.meta new file mode 100644 index 0000000..df11aa0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestJobRunner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b677ddfd54046c498a20446baa4f932 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestRunCanceledException.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestRunCanceledException.cs new file mode 100644 index 0000000..542c501 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestRunCanceledException.cs @@ -0,0 +1,9 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner.TestRun +{ + internal class TestRunCanceledException : Exception + { + + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestRunCanceledException.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestRunCanceledException.cs.meta new file mode 100644 index 0000000..2237e64 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRun/TestRunCanceledException.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d45b9d3cf85bee4f99c1492fca8438a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner.meta new file mode 100644 index 0000000..d09886b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 49d4c2ab7ff0f4442af256bad7c9d57c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks.meta new file mode 100644 index 0000000..9e611a4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d7f0d6acfced954682a89e7002c04d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs new file mode 100644 index 0000000..a22c798 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs @@ -0,0 +1,186 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditModeRunnerCallback : ScriptableObject, ITestRunnerListener + { + private EditModeLauncherContextSettings m_Settings; + public SceneSetup[] previousSceneSetup; + public EditModeRunner runner; + + private bool m_Canceled; + private ITest m_CurrentTest; + private int m_TotalTests; + + [SerializeField] + private List m_PendingTests; + [SerializeField] + private string m_LastCountedTestName; + [SerializeField] + private bool m_RunRestarted; + + public void OnDestroy() + { + CleanUp(); + } + + public void RunStarted(ITest testsToRun) + { + Setup(); + if (m_PendingTests == null) + { + m_PendingTests = GetTestsExpectedToRun(testsToRun, runner.GetFilter()); + m_TotalTests = m_PendingTests.Count; + } + } + + public void OnEnable() + { + if (m_RunRestarted) + { + Setup(); + } + } + + private void Setup() + { + m_Settings = new EditModeLauncherContextSettings(); + Application.logMessageReceivedThreaded += LogReceived; + EditorApplication.playModeStateChanged += WaitForExitPlaymode; + EditorApplication.update += DisplayProgressBar; + AssemblyReloadEvents.beforeAssemblyReload += BeforeAssemblyReload; + } + + private void BeforeAssemblyReload() + { + if (m_CurrentTest != null) + { + m_LastCountedTestName = m_CurrentTest.FullName; + m_RunRestarted = true; + } + } + + private void DisplayProgressBar() + { + if (m_CurrentTest == null) + return; + if (!m_Canceled && EditorUtility.DisplayCancelableProgressBar("Test Runner", "Running test " + m_CurrentTest.Name, Math.Min(1.0f, (float)(m_TotalTests - m_PendingTests.Count) / m_TotalTests))) + { + EditorApplication.update -= DisplayProgressBar; + m_Canceled = true; + EditorUtility.ClearProgressBar(); + runner.OnRunCancel(); + } + } + + private static void LogReceived(string message, string stacktrace, LogType type) + { + if (TestContext.Out != null) + TestContext.Out.WriteLine(message); + } + + private static void WaitForExitPlaymode(PlayModeStateChange state) + { + if (state == PlayModeStateChange.EnteredEditMode) + { + EditorApplication.playModeStateChanged -= WaitForExitPlaymode; + //because logMessage is reset on Enter EditMode + //we remove and add the callback + //because Unity + Application.logMessageReceivedThreaded -= LogReceived; + Application.logMessageReceivedThreaded += LogReceived; + } + } + + public void RunFinished(ITestResult result) + { + if (previousSceneSetup != null && previousSceneSetup.Length > 0) + { + try + { + EditorSceneManager.RestoreSceneManagerSetup(previousSceneSetup); + } + catch (ArgumentException e) + { + Debug.LogWarning(e.Message); + } + } + else + { + foreach (var obj in FindObjectsOfType()) + { + if (obj != null && obj.transform.parent != null && (obj.transform.parent.hideFlags & HideFlags.DontSaveInEditor) == HideFlags.DontSaveInEditor && obj.transform.parent.gameObject != null) + { + DestroyImmediate(obj.transform.parent.gameObject); + } + } + + EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single); + } + CleanUp(); + } + + private void CleanUp() + { + m_CurrentTest = null; + EditorUtility.ClearProgressBar(); + if (m_Settings != null) + { + m_Settings.Dispose(); + } + Application.logMessageReceivedThreaded -= LogReceived; + EditorApplication.update -= DisplayProgressBar; + } + + public void TestStarted(ITest test) + { + if (test.IsSuite || !(test is TestMethod)) + { + return; + } + + m_CurrentTest = test; + + if (m_RunRestarted) + { + if (test.FullName == m_LastCountedTestName) + m_RunRestarted = false; + } + } + + public void TestFinished(ITestResult result) + { + if (result.Test is TestMethod) + { + m_PendingTests.Remove(result.Test.FullName); + } + } + + private static List GetTestsExpectedToRun(ITest test, ITestFilter filter) + { + var expectedTests = new List(); + + if (filter.Pass(test)) + { + if (test.IsSuite) + { + expectedTests.AddRange(test.Tests.SelectMany(subTest => GetTestsExpectedToRun(subTest, filter))); + } + else + { + expectedTests.Add(test.FullName); + } + } + + return expectedTests; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs.meta new file mode 100644 index 0000000..1a0d71c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/EditModeRunnerCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc456ba93311a3a43ad896449fee9868 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs new file mode 100644 index 0000000..a4976af --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs @@ -0,0 +1,86 @@ +using UnityEditor.TestTools.TestRunner.Api; +using UnityEditor.TestTools.TestRunner.CommandLineTest; +using UnityEditor.TestTools.TestRunner.GUI; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class RerunCallback : ScriptableObject, ICallbacks + { + public static bool useMockRunFilter = false; + public static UITestRunnerFilter mockRunFilter = null; + + public void RunFinished(ITestResultAdaptor result) + { + if (RerunCallbackData.instance.runFilters == null || RerunCallbackData.instance.runFilters.Length == 0) + RerunCallbackData.instance.runFilters = new[] {new UITestRunnerFilter()}; + + var runFilter = RerunCallbackData.instance.runFilters[0]; + + if (useMockRunFilter) + { + runFilter = mockRunFilter; + } + + runFilter.testRepetitions--; + if (runFilter.testRepetitions <= 0 || result.TestStatus != TestStatus.Passed) + { + ExitCallbacks.preventExit = false; + return; + } + + ExitCallbacks.preventExit = true; + if (EditorApplication.isPlaying) + { + EditorApplication.playModeStateChanged += WaitForExitPlaymode; + return; + } + + if (!useMockRunFilter) + { + ExecuteTestRunnerAPI(); + } + } + + private static void WaitForExitPlaymode(PlayModeStateChange state) + { + if (state == PlayModeStateChange.EnteredEditMode) + { + ExecuteTestRunnerAPI(); + } + } + + private static void ExecuteTestRunnerAPI() + { + var runFilter = RerunCallbackData.instance.runFilters[0]; + var testMode = RerunCallbackData.instance.testMode; + + var testRunnerApi = ScriptableObject.CreateInstance(); + testRunnerApi.Execute(new Api.ExecutionSettings() + { + filters = new[] + { + new Filter() + { + categoryNames = runFilter.categoryNames, + groupNames = runFilter.groupNames, + testMode = testMode, + testNames = runFilter.testNames + } + } + }); + } + + public void TestStarted(ITestAdaptor test) + { + } + + public void TestFinished(ITestResultAdaptor result) + { + } + + public void RunStarted(ITestAdaptor testsToRun) + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs.meta new file mode 100644 index 0000000..6dae8f2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 34d30300ba8eb4959a74ac1f8f413c8d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs new file mode 100644 index 0000000..d6abd3f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs @@ -0,0 +1,15 @@ +using UnityEditor.TestTools.TestRunner.Api; +using UnityEditor.TestTools.TestRunner.GUI; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class RerunCallbackData : ScriptableSingleton + { + [SerializeField] + internal UITestRunnerFilter[] runFilters; + + [SerializeField] + internal TestMode testMode; + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs.meta new file mode 100644 index 0000000..8615d9b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5be0e972cb9434b7797b1d37dcd127c3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs new file mode 100644 index 0000000..2260d4d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs @@ -0,0 +1,17 @@ +using UnityEngine; +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner +{ + [InitializeOnLoad] + static class RerunCallbackInitializer + { + static RerunCallbackInitializer() + { + var testRunnerApi = ScriptableObject.CreateInstance(); + + var rerunCallback = ScriptableObject.CreateInstance(); + testRunnerApi.RegisterCallbacks(rerunCallback); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs.meta new file mode 100644 index 0000000..778b8fc --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/RerunCallbackInitializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9cb48d7d0e6784c81ad36cdbfe8e4b6b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs new file mode 100644 index 0000000..4234754 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs @@ -0,0 +1,37 @@ +using NUnit.Framework.Interfaces; +using UnityEngine; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class TestRunnerCallback : ScriptableObject, ITestRunnerListener + { + public void RunStarted(ITest testsToRun) + { + EditorApplication.playModeStateChanged += OnPlayModeStateChanged; + } + + private void OnPlayModeStateChanged(PlayModeStateChange state) + { + if (state == PlayModeStateChange.ExitingPlayMode) + { + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + //We need to make sure we don't block NUnit thread in case we exit PlayMode earlier + PlaymodeTestsController.TryCleanup(); + } + } + + public void RunFinished(ITestResult testResults) + { + EditorApplication.isPlaying = false; + } + + public void TestStarted(ITest testName) + { + } + + public void TestFinished(ITestResult test) + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs.meta new file mode 100644 index 0000000..1356ff9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/TestRunnerCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d44e6804bc58be84ea71a619b468f150 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs new file mode 100644 index 0000000..05465d8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs @@ -0,0 +1,59 @@ +using System.Linq; +using TestRunner.Callbacks; +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner.GUI +{ + internal class WindowResultUpdater : ICallbacks, ITestTreeRebuildCallbacks + { + public WindowResultUpdater() + { + var cachedResults = WindowResultUpdaterDataHolder.instance.CachedResults; + var testList = TestRunnerWindow.s_Instance.m_SelectedTestTypes; + foreach (var result in cachedResults) + { + testList.UpdateResult(result); + } + + cachedResults.Clear(); + + } + public void RunStarted(ITestAdaptor testsToRun) + { + } + + public void RunFinished(ITestResultAdaptor testResults) + { + if (TestRunnerWindow.s_Instance != null) + { + TestRunnerWindow.s_Instance.RebuildUIFilter(); + } + } + + public void TestStarted(ITestAdaptor testName) + { + } + + public void TestFinished(ITestResultAdaptor test) + { + var result = new TestRunnerResult(test); + if (TestRunnerWindow.s_Instance == null) + { + WindowResultUpdaterDataHolder.instance.CachedResults.Add(result); + return; + } + + TestRunnerWindow.s_Instance.m_SelectedTestTypes.UpdateResult(result); + } + + public void TestTreeRebuild(ITestAdaptor test) + { + if (TestRunnerWindow.s_Instance == null) + { + return; + } + + TestRunnerWindow.s_Instance.m_SelectedTestTypes.UpdateTestTree(test); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs.meta new file mode 100644 index 0000000..d9e35df --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdater.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d468ee3657be7a43a2ef2178ec14239 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdaterDataHolder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdaterDataHolder.cs new file mode 100644 index 0000000..a1fd48d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdaterDataHolder.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.TestTools.TestRunner.GUI; + +namespace TestRunner.Callbacks +{ + internal class WindowResultUpdaterDataHolder : ScriptableSingleton + { + public List CachedResults = new List(); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdaterDataHolder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdaterDataHolder.cs.meta new file mode 100644 index 0000000..aed0d8c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Callbacks/WindowResultUpdaterDataHolder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82075836be5e0c64bbe84e1f9436682e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModePCHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModePCHelper.cs new file mode 100644 index 0000000..8776887 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModePCHelper.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Reflection; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditModePcHelper : TestCommandPcHelper + { + public override void SetEnumeratorPC(IEnumerator enumerator, int pc) + { + GetPCFieldInfo(enumerator).SetValue(enumerator, pc); + } + + public override int GetEnumeratorPC(IEnumerator enumerator) + { + if (enumerator == null) + { + return 0; + } + return (int)GetPCFieldInfo(enumerator).GetValue(enumerator); + } + + private FieldInfo GetPCFieldInfo(IEnumerator enumerator) + { + var field = enumerator.GetType().GetField("$PC", BindingFlags.NonPublic | BindingFlags.Instance); + if (field == null) // Roslyn + field = enumerator.GetType().GetField("<>1__state", BindingFlags.NonPublic | BindingFlags.Instance); + + return field; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModePCHelper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModePCHelper.cs.meta new file mode 100644 index 0000000..ce559af --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModePCHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d16f2e78a356d34c9a32108929de932 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModeRunner.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModeRunner.cs new file mode 100644 index 0000000..28357a7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModeRunner.cs @@ -0,0 +1,438 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Filters; +using UnityEngine; +using UnityEngine.TestTools.NUnitExtensions; +using UnityEngine.TestTools.TestRunner; +using UnityEngine.TestTools; +using UnityEngine.TestTools.TestRunner.GUI; +using UnityEditor.Callbacks; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine.TestRunner.NUnitExtensions; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEditor.TestTools.TestRunner +{ + internal interface IUnityTestAssemblyRunnerFactory + { + IUnityTestAssemblyRunner Create(TestPlatform testPlatform, WorkItemFactory factory); + } + + internal class UnityTestAssemblyRunnerFactory : IUnityTestAssemblyRunnerFactory + { + public IUnityTestAssemblyRunner Create(TestPlatform testPlatform, WorkItemFactory factory) + { + return new UnityTestAssemblyRunner(new UnityTestAssemblyBuilder(), factory); + } + } + + [Serializable] + internal class EditModeRunner : ScriptableObject, IDisposable + { + [SerializeField] + private Filter[] m_Filters; + + //The counter from the IEnumerator object + [SerializeField] + private int m_CurrentPC; + + [SerializeField] + private bool m_ExecuteOnEnable; + + [SerializeField] + private List m_AlreadyStartedTests; + + [SerializeField] + private List m_ExecutedTests; + + [SerializeField] + private List m_CallbackObjects = new List(); + + [SerializeField] + private TestStartedEvent m_TestStartedEvent = new TestStartedEvent(); + + [SerializeField] + private TestFinishedEvent m_TestFinishedEvent = new TestFinishedEvent(); + + [SerializeField] + private RunStartedEvent m_RunStartedEvent = new RunStartedEvent(); + + [SerializeField] + private RunFinishedEvent m_RunFinishedEvent = new RunFinishedEvent(); + + [SerializeField] + private TestRunnerStateSerializer m_TestRunnerStateSerializer = new TestRunnerStateSerializer(); + + [SerializeField] + private bool m_RunningTests; + + [SerializeField] + private TestPlatform m_TestPlatform; + + [SerializeField] + private object m_CurrentYieldObject; + + [SerializeField] + private BeforeAfterTestCommandState m_SetUpTearDownState; + [SerializeField] + private BeforeAfterTestCommandState m_OuterUnityTestActionState; + + [SerializeField] + public bool RunFinished = false; + + public bool RunningSynchronously { get; private set; } + + internal IUnityTestAssemblyRunner m_Runner; + + private ConstructDelegator m_ConstructDelegator; + + private IEnumerator m_RunStep; + + public IUnityTestAssemblyRunnerFactory UnityTestAssemblyRunnerFactory { get; set; } + + public void Init(Filter[] filters, TestPlatform platform, bool runningSynchronously) + { + m_Filters = filters; + m_TestPlatform = platform; + m_AlreadyStartedTests = new List(); + m_ExecutedTests = new List(); + RunningSynchronously = runningSynchronously; + InitRunner(); + } + + private void InitRunner() + { + //We give the EditMode platform here so we dont suddenly create Playmode work items in the test Runner. + m_Runner = (UnityTestAssemblyRunnerFactory ?? new UnityTestAssemblyRunnerFactory()).Create(TestPlatform.EditMode, new EditmodeWorkItemFactory()); + var testAssemblyProvider = new EditorLoadedTestAssemblyProvider(new EditorCompilationInterfaceProxy(), new EditorAssembliesProxy()); + var assemblies = testAssemblyProvider.GetAssembliesGroupedByType(m_TestPlatform).Select(x => x.Assembly).ToArray(); + var loadedTests = m_Runner.Load(assemblies, TestPlatform.EditMode, + UnityTestAssemblyBuilder.GetNUnitTestBuilderSettings(m_TestPlatform)); + loadedTests.ParseForNameDuplicates(); + CallbacksDelegator.instance.TestTreeRebuild(loadedTests); + hideFlags |= HideFlags.DontSave; + EnumerableSetUpTearDownCommand.ActivePcHelper = new EditModePcHelper(); + OuterUnityTestActionCommand.ActivePcHelper = new EditModePcHelper(); + } + + public void OnEnable() + { + if (m_ExecuteOnEnable) + { + InitRunner(); + m_ExecuteOnEnable = false; + foreach (var callback in m_CallbackObjects) + { + AddListeners(callback as ITestRunnerListener); + } + m_ConstructDelegator = new ConstructDelegator(m_TestRunnerStateSerializer); + + EnumeratorStepHelper.SetEnumeratorPC(m_CurrentPC); + + UnityWorkItemDataHolder.alreadyExecutedTests = m_ExecutedTests.Select(x => x.uniqueName).ToList(); + UnityWorkItemDataHolder.alreadyStartedTests = m_AlreadyStartedTests; + Run(); + } + } + + public void TestStartedEvent(ITest test) + { + m_AlreadyStartedTests.Add(test.GetUniqueName()); + } + + public void TestFinishedEvent(ITestResult testResult) + { + m_AlreadyStartedTests.Remove(testResult.Test.GetUniqueName()); + m_ExecutedTests.Add(TestResultSerializer.MakeFromTestResult(testResult)); + } + + public void Run() + { + EditModeTestCallbacks.RestoringTestContext += OnRestoringTest; + var context = m_Runner.GetCurrentContext(); + if (m_SetUpTearDownState == null) + { + m_SetUpTearDownState = CreateInstance(); + } + context.SetUpTearDownState = m_SetUpTearDownState; + + if (m_OuterUnityTestActionState == null) + { + m_OuterUnityTestActionState = CreateInstance(); + } + context.OuterUnityTestActionState = m_OuterUnityTestActionState; + + if (!m_RunningTests) + { + m_RunStartedEvent.Invoke(m_Runner.LoadedTest); + } + + if (m_ConstructDelegator == null) + m_ConstructDelegator = new ConstructDelegator(m_TestRunnerStateSerializer); + + Reflect.ConstructorCallWrapper = m_ConstructDelegator.Delegate; + m_TestStartedEvent.AddListener(TestStartedEvent); + m_TestFinishedEvent.AddListener(TestFinishedEvent); + + AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload; + + RunningTests = true; + + EditorApplication.LockReloadAssemblies(); + + var testListenerWrapper = new TestListenerWrapper(m_TestStartedEvent, m_TestFinishedEvent); + m_RunStep = m_Runner.Run(testListenerWrapper, GetFilter()).GetEnumerator(); + m_RunningTests = true; + + if (!RunningSynchronously) + EditorApplication.update += TestConsumer; + } + + public void CompleteSynchronously() + { + while (!m_Runner.IsTestComplete) + TestConsumer(); + } + + private void OnBeforeAssemblyReload() + { + EditorApplication.update -= TestConsumer; + + if (m_ExecuteOnEnable) + { + AssemblyReloadEvents.beforeAssemblyReload -= OnBeforeAssemblyReload; + return; + } + + if (m_Runner != null && m_Runner.TopLevelWorkItem != null) + m_Runner.TopLevelWorkItem.ResultedInDomainReload = true; + + if (RunningTests) + { + Debug.LogError("TestRunner: Unexpected assembly reload happened while running tests"); + + EditorUtility.ClearProgressBar(); + + if (m_Runner.GetCurrentContext() != null && m_Runner.GetCurrentContext().CurrentResult != null) + { + m_Runner.GetCurrentContext().CurrentResult.SetResult(ResultState.Cancelled, "Unexpected assembly reload happened"); + } + OnRunCancel(); + } + } + + private bool RunningTests; + + private Stack StepStack = new Stack(); + + private bool MoveNextAndUpdateYieldObject() + { + var result = m_RunStep.MoveNext(); + + if (result) + { + m_CurrentYieldObject = m_RunStep.Current; + while (m_CurrentYieldObject is IEnumerator) // going deeper + { + var currentEnumerator = (IEnumerator)m_CurrentYieldObject; + + // go deeper and add parent to stack + StepStack.Push(m_RunStep); + + m_RunStep = currentEnumerator; + m_CurrentYieldObject = m_RunStep.Current; + } + + if (StepStack.Count > 0 && m_CurrentYieldObject != null) // not null and not IEnumerator, nested + { + Debug.LogError("EditMode test can only yield null, but not <" + m_CurrentYieldObject.GetType().Name + ">"); + } + + return true; + } + + if (StepStack.Count == 0) // done + return false; + + m_RunStep = StepStack.Pop(); // going up + return MoveNextAndUpdateYieldObject(); + } + + private void TestConsumer() + { + var moveNext = MoveNextAndUpdateYieldObject(); + + if (m_CurrentYieldObject != null) + { + InvokeDelegator(); + } + + if (!moveNext && !m_Runner.IsTestComplete) + { + CompleteTestRun(); + throw new IndexOutOfRangeException("There are no more elements to process and IsTestComplete is false"); + } + + if (m_Runner.IsTestComplete) + { + CompleteTestRun(); + } + } + + private void CompleteTestRun() + { + if (!RunningSynchronously) + EditorApplication.update -= TestConsumer; + + TestLauncherBase.ExecutePostBuildCleanupMethods(this.GetLoadedTests(), this.GetFilter(), Application.platform); + + m_RunFinishedEvent.Invoke(m_Runner.Result); + RunFinished = true; + + if (m_ConstructDelegator != null) + m_ConstructDelegator.DestroyCurrentTestObjectIfExists(); + Dispose(); + UnityWorkItemDataHolder.alreadyExecutedTests = null; + } + + private void OnRestoringTest() + { + var item = m_ExecutedTests.Find(t => t.fullName == UnityTestExecutionContext.CurrentContext.CurrentTest.FullName); + if (item != null) + { + item.RestoreTestResult(UnityTestExecutionContext.CurrentContext.CurrentResult); + } + } + + private static bool IsCancelled() + { + return UnityTestExecutionContext.CurrentContext.ExecutionStatus == TestExecutionStatus.AbortRequested || UnityTestExecutionContext.CurrentContext.ExecutionStatus == TestExecutionStatus.StopRequested; + } + + private void InvokeDelegator() + { + if (m_CurrentYieldObject == null) + { + return; + } + + if (IsCancelled()) + { + return; + } + + if (m_CurrentYieldObject is RestoreTestContextAfterDomainReload) + { + if (m_TestRunnerStateSerializer.ShouldRestore()) + { + m_TestRunnerStateSerializer.RestoreContext(); + } + + return; + } + + try + { + if (m_CurrentYieldObject is IEditModeTestYieldInstruction) + { + var editModeTestYieldInstruction = (IEditModeTestYieldInstruction)m_CurrentYieldObject; + if (editModeTestYieldInstruction.ExpectDomainReload) + { + PrepareForDomainReload(); + } + return; + } + } + catch (Exception e) + { + UnityTestExecutionContext.CurrentContext.CurrentResult.RecordException(e); + return; + } + + Debug.LogError("EditMode test can only yield null"); + } + + private void CompilationFailureWatch() + { + if (EditorApplication.isCompiling) + return; + + EditorApplication.update -= CompilationFailureWatch; + + if (EditorUtility.scriptCompilationFailed) + { + EditorUtility.ClearProgressBar(); + OnRunCancel(); + } + } + + private void PrepareForDomainReload() + { + m_TestRunnerStateSerializer.SaveContext(); + m_CurrentPC = EnumeratorStepHelper.GetEnumeratorPC(TestEnumerator.Enumerator); + m_ExecuteOnEnable = true; + + RunningTests = false; + } + + public T AddEventHandler() where T : ScriptableObject, ITestRunnerListener + { + var eventHandler = CreateInstance(); + eventHandler.hideFlags |= HideFlags.DontSave; + m_CallbackObjects.Add(eventHandler); + + AddListeners(eventHandler); + + return eventHandler; + } + + private void AddListeners(ITestRunnerListener eventHandler) + { + m_TestStartedEvent.AddListener(eventHandler.TestStarted); + m_TestFinishedEvent.AddListener(eventHandler.TestFinished); + m_RunStartedEvent.AddListener(eventHandler.RunStarted); + m_RunFinishedEvent.AddListener(eventHandler.RunFinished); + } + + public void Dispose() + { + Reflect.MethodCallWrapper = null; + EditorApplication.update -= TestConsumer; + + DestroyImmediate(this); + + if (m_CallbackObjects != null) + { + foreach (var obj in m_CallbackObjects) + { + DestroyImmediate(obj); + } + m_CallbackObjects.Clear(); + } + RunningTests = false; + EditorApplication.UnlockReloadAssemblies(); + } + + public void OnRunCancel() + { + UnityWorkItemDataHolder.alreadyExecutedTests = null; + m_ExecuteOnEnable = false; + m_Runner.StopRun(); + RunFinished = true; + } + + public ITest GetLoadedTests() + { + return m_Runner.LoadedTest; + } + + public ITestFilter GetFilter() + { + return new OrFilter(m_Filters.Select(filter => filter.ToRuntimeTestRunnerFilter(RunningSynchronously).BuildNUnitFilter()).ToArray()); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModeRunner.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModeRunner.cs.meta new file mode 100644 index 0000000..78c0039 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditModeRunner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c9219e99d466b7741a057132d1994f35 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditmodeWorkItemFactory.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditmodeWorkItemFactory.cs new file mode 100644 index 0000000..c2bf921 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditmodeWorkItemFactory.cs @@ -0,0 +1,14 @@ +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditmodeWorkItemFactory : WorkItemFactory + { + protected override UnityWorkItem Create(TestMethod method, ITestFilter filter, ITest loadedTest) + { + return new EditorEnumeratorTestWorkItem(method, filter); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditmodeWorkItemFactory.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditmodeWorkItemFactory.cs.meta new file mode 100644 index 0000000..ab4bd45 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditmodeWorkItemFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3dde15f260b0dd1469e60d16eaa795dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditorEnumeratorTestWorkItem.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditorEnumeratorTestWorkItem.cs new file mode 100644 index 0000000..acf09dd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditorEnumeratorTestWorkItem.cs @@ -0,0 +1,181 @@ +using System; +using System.Collections; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using NUnit.Framework.Internal.Execution; +using UnityEngine; +using UnityEngine.TestRunner.NUnitExtensions.Runner; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditorEnumeratorTestWorkItem : UnityWorkItem + { + private TestCommand m_Command; + public EditorEnumeratorTestWorkItem(TestMethod test, ITestFilter filter) + : base(test, null) + { + m_Command = TestCommandBuilder.BuildTestCommand(test, filter); + } + + private static IEnumerableTestMethodCommand FindFirstIEnumerableTestMethodCommand(TestCommand command) + { + if (command == null) + { + return null; + } + + if (command is IEnumerableTestMethodCommand) + { + return (IEnumerableTestMethodCommand)command; + } + + if (command is DelegatingTestCommand) + { + var delegatingTestCommand = (DelegatingTestCommand)command; + return FindFirstIEnumerableTestMethodCommand(delegatingTestCommand.GetInnerCommand()); + } + return null; + } + + protected override IEnumerable PerformWork() + { + if (IsCancelledRun()) + { + yield break; + } + + if (m_DontRunRestoringResult) + { + if (EditModeTestCallbacks.RestoringTestContext == null) + { + throw new NullReferenceException("RestoringTestContext is not set"); + } + EditModeTestCallbacks.RestoringTestContext(); + Result = Context.CurrentResult; + yield break; + } + + try + { + if (IsCancelledRun()) + { + yield break; + } + + if (m_Command is SkipCommand) + { + m_Command.Execute(Context); + Result = Context.CurrentResult; + yield break; + } + + //Check if we can execute this test + var firstEnumerableCommand = FindFirstIEnumerableTestMethodCommand(m_Command); + if (firstEnumerableCommand == null) + { + Context.CurrentResult.SetResult(ResultState.Error, "Returning IEnumerator but not using test attribute supporting this"); + yield break; + } + if (Context.TestCaseTimeout == 0) + { + Context.TestCaseTimeout = k_DefaultTimeout; + } + if (m_Command.Test.Method.ReturnType.IsType(typeof(IEnumerator))) + { + if (m_Command is ApplyChangesToContextCommand) + { + var applyChangesToContextCommand = ((ApplyChangesToContextCommand)m_Command); + applyChangesToContextCommand.ApplyChanges(Context); + m_Command = applyChangesToContextCommand.GetInnerCommand(); + } + + var innerCommand = m_Command as IEnumerableTestMethodCommand; + if (innerCommand == null) + { + Debug.Log("failed getting innerCommand"); + throw new Exception("Tests returning IEnumerator can only use test attributes handling those"); + } + + foreach (var workItemStep in innerCommand.ExecuteEnumerable(Context)) + { + if (IsCancelledRun()) + { + yield break; + } + + if (workItemStep is TestEnumerator) + { + if (EnumeratorStepHelper.UpdateEnumeratorPcIfNeeded(TestEnumerator.Enumerator)) + { + yield return new RestoreTestContextAfterDomainReload(); + } + continue; + } + + if (workItemStep is AsyncOperation) + { + var asyncOperation = (AsyncOperation)workItemStep; + while (!asyncOperation.isDone) + { + if (IsCancelledRun()) + { + yield break; + } + + yield return null; + } + continue; + } + + ResultedInDomainReload = false; + + if (workItemStep is IEditModeTestYieldInstruction) + { + var editModeTestYieldInstruction = (IEditModeTestYieldInstruction)workItemStep; + yield return editModeTestYieldInstruction; + var enumerator = editModeTestYieldInstruction.Perform(); + while (true) + { + bool moveNext; + try + { + moveNext = enumerator.MoveNext(); + } + catch (Exception e) + { + Context.CurrentResult.RecordException(e); + break; + } + + if (!moveNext) + { + break; + } + yield return null; + } + } + else + { + yield return workItemStep; + } + } + + Result = Context.CurrentResult; + EditorApplication.isPlaying = false; + yield return null; + } + } + finally + { + WorkItemComplete(); + } + } + + private bool IsCancelledRun() + { + return Context.ExecutionStatus == TestExecutionStatus.AbortRequested || Context.ExecutionStatus == TestExecutionStatus.StopRequested; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditorEnumeratorTestWorkItem.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditorEnumeratorTestWorkItem.cs.meta new file mode 100644 index 0000000..982f7ee --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EditorEnumeratorTestWorkItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ebc1994f9a3d5649a1201d3a84b38df +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs new file mode 100644 index 0000000..46fc714 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs @@ -0,0 +1,51 @@ +using System.Collections; +using System.Reflection; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EnumeratorStepHelper + { + private static int m_PC; + + public static void SetEnumeratorPC(int pc) + { + m_PC = pc; + } + + /// + /// Gets the current enumerator PC + /// + /// + /// The PC + /// 0 if no current Enumeration + /// + public static int GetEnumeratorPC(IEnumerator enumerator) + { + if (enumerator == null) + { + return 0; + } + return (int)GetPCFieldInfo(enumerator).GetValue(enumerator); + } + + public static bool UpdateEnumeratorPcIfNeeded(IEnumerator enumerator) + { + if (m_PC != 0) + { + GetPCFieldInfo(enumerator).SetValue(enumerator, m_PC); + m_PC = 0; + return true; + } + return false; + } + + private static FieldInfo GetPCFieldInfo(IEnumerator enumerator) + { + var field = enumerator.GetType().GetField("$PC", BindingFlags.NonPublic | BindingFlags.Instance); + if (field == null) // Roslyn + field = enumerator.GetType().GetField("<>1__state", BindingFlags.NonPublic | BindingFlags.Instance); + + return field; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs.meta new file mode 100644 index 0000000..08662b9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 901b761c5c1e22d4e8a3ba7d95bc1f5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages.meta new file mode 100644 index 0000000..0660c63 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9682e749d3efc642af54d789d9090a6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/EnterPlayMode.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/EnterPlayMode.cs new file mode 100644 index 0000000..796c531 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/EnterPlayMode.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections; +using UnityEditor; + +namespace UnityEngine.TestTools +{ + public class EnterPlayMode : IEditModeTestYieldInstruction + { + public bool ExpectDomainReload { get; } + public bool ExpectedPlaymodeState { get; private set; } + + public EnterPlayMode(bool expectDomainReload = true) + { + ExpectDomainReload = expectDomainReload; + } + + public IEnumerator Perform() + { + if (EditorApplication.isPlaying) + { + throw new Exception("Editor is already in PlayMode"); + } + if (EditorUtility.scriptCompilationFailed) + { + throw new Exception("Script compilation failed"); + } + yield return null; + ExpectedPlaymodeState = true; + + EditorApplication.UnlockReloadAssemblies(); + EditorApplication.isPlaying = true; + + while (!EditorApplication.isPlaying) + { + yield return null; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/EnterPlayMode.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/EnterPlayMode.cs.meta new file mode 100644 index 0000000..fa1dc2e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/EnterPlayMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9bd5a110ed89025499ddee8c7e73778e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/ExitPlayMode.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/ExitPlayMode.cs new file mode 100644 index 0000000..2eed28b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/ExitPlayMode.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections; +using UnityEditor; + +namespace UnityEngine.TestTools +{ + public class ExitPlayMode : IEditModeTestYieldInstruction + { + public bool ExpectDomainReload { get; } + public bool ExpectedPlaymodeState { get; private set; } + + public ExitPlayMode() + { + ExpectDomainReload = false; + ExpectedPlaymodeState = false; + } + + public IEnumerator Perform() + { + if (!EditorApplication.isPlayingOrWillChangePlaymode) + { + throw new Exception("Editor is already in EditMode"); + } + + EditorApplication.isPlaying = false; + while (EditorApplication.isPlaying) + { + yield return null; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/ExitPlayMode.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/ExitPlayMode.cs.meta new file mode 100644 index 0000000..1de769d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/ExitPlayMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 408674d91d506a54aac9a7f07951c018 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs new file mode 100644 index 0000000..52af5a7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections; +using UnityEditor; + +namespace UnityEngine.TestTools +{ + public class RecompileScripts : IEditModeTestYieldInstruction + { + public RecompileScripts() : this(true) + { + } + + public RecompileScripts(bool expectScriptCompilation) : this(expectScriptCompilation, true) + { + } + + public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess) + { + ExpectScriptCompilation = expectScriptCompilation; + ExpectScriptCompilationSuccess = expectScriptCompilationSuccess; + ExpectDomainReload = true; + } + + public bool ExpectDomainReload { get; private set; } + public bool ExpectedPlaymodeState { get; } + public bool ExpectScriptCompilation { get; private set; } + public bool ExpectScriptCompilationSuccess { get; private set; } + public static RecompileScripts Current { get; private set; } + + public IEnumerator Perform() + { + Current = this; + + // We need to yield, to give the test runner a chance to prepare for the domain reload + // If the script compilation happens very fast, then EditModeRunner.MoveNextAndUpdateYieldObject will not have a chance to set m_CurrentYieldObject + // This really should be fixed in EditModeRunner.MoveNextAndUpdateYieldObject + yield return null; + + AssetDatabase.Refresh(); + + if (ExpectScriptCompilation && !EditorApplication.isCompiling) + { + Current = null; + throw new Exception("Editor does not need to recompile scripts"); + } + + EditorApplication.UnlockReloadAssemblies(); + + while (EditorApplication.isCompiling) + { + yield return null; + } + + Current = null; + + if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed) + { + EditorApplication.LockReloadAssemblies(); + throw new Exception("Script compilation failed"); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs.meta new file mode 100644 index 0000000..f764d6e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/RecompileScripts.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9202fbba95ea8294cb5e718f028f21b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/WaitForDomainReload.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/WaitForDomainReload.cs new file mode 100644 index 0000000..2b53215 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/WaitForDomainReload.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using UnityEditor; +using UnityEditorInternal; + +namespace UnityEngine.TestTools +{ + public class WaitForDomainReload : IEditModeTestYieldInstruction + { + public WaitForDomainReload() + { + ExpectDomainReload = true; + } + + public bool ExpectDomainReload { get;  } + public bool ExpectedPlaymodeState { get; } + + public IEnumerator Perform() + { + EditorApplication.UnlockReloadAssemblies(); + + while (InternalEditorUtility.IsScriptReloadRequested() || EditorApplication.isCompiling) + { + yield return null; + } + + // Add this point the domain reload should have occured and stopped any further progress on the instruction. + EditorApplication.LockReloadAssemblies(); + throw new Exception( + EditorUtility.scriptCompilationFailed ? + "Script compilation failed" : + "Expected domain reload, but it did not occur"); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/WaitForDomainReload.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/WaitForDomainReload.cs.meta new file mode 100644 index 0000000..7fa45cb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Messages/WaitForDomainReload.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5df3c21c5237c994db89660fbdfee07d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils.meta new file mode 100644 index 0000000..78ceec0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f5bbb88ca730434483440cbc0278ef6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/CachingTestListProvider.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/CachingTestListProvider.cs new file mode 100644 index 0000000..ff540e6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/CachingTestListProvider.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine.TestRunner.NUnitExtensions; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class CachingTestListProvider + { + private readonly ITestListProvider m_InnerTestListProvider; + private readonly ITestListCache m_TestListCache; + private readonly ITestAdaptorFactory m_TestAdaptorFactory; + public CachingTestListProvider(ITestListProvider innerTestListProvider, ITestListCache testListCache, ITestAdaptorFactory testAdaptorFactory) + { + m_InnerTestListProvider = innerTestListProvider; + m_TestListCache = testListCache; + m_TestAdaptorFactory = testAdaptorFactory; + } + + public IEnumerator GetTestListAsync(TestPlatform platform) + { + var testFromCache = m_TestListCache.GetTestFromCacheAsync(platform); + while (testFromCache.MoveNext()) + { + yield return null; + } + + + if (testFromCache.Current != null) + { + yield return testFromCache.Current; + } + else + { + var test = m_InnerTestListProvider.GetTestListAsync(platform); + while (test.MoveNext()) + { + yield return null; + } + + test.Current.ParseForNameDuplicates(); + m_TestListCache.CacheTest(platform, test.Current); + yield return m_TestAdaptorFactory.Create(test.Current); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/CachingTestListProvider.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/CachingTestListProvider.cs.meta new file mode 100644 index 0000000..5756623 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/CachingTestListProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26f3e7301af463c4ca72fa98d59b429e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssembliesProxy.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssembliesProxy.cs new file mode 100644 index 0000000..bc0fe19 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssembliesProxy.cs @@ -0,0 +1,13 @@ +using System.Linq; +using UnityEngine.TestTools.Utils; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditorAssembliesProxy : IEditorAssembliesProxy + { + public IAssemblyWrapper[] loadedAssemblies + { + get { return EditorAssemblies.loadedAssemblies.OrderBy(a => a.FullName).Select(x => new EditorAssemblyWrapper(x)).ToArray(); } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssembliesProxy.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssembliesProxy.cs.meta new file mode 100644 index 0000000..fdb1b6c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssembliesProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f96d0ea807c081145a1170ed1b6d71e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssemblyWrapper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssemblyWrapper.cs new file mode 100644 index 0000000..804eb4b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssemblyWrapper.cs @@ -0,0 +1,18 @@ +using System.Reflection; +using UnityEngine.TestTools.Utils; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditorAssemblyWrapper : AssemblyWrapper + { + public EditorAssemblyWrapper(Assembly assembly) + : base(assembly) {} + + public override AssemblyName[] GetReferencedAssemblies() + { + return Assembly.GetReferencedAssemblies(); + } + + public override string Location { get { return Assembly.Location; } } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssemblyWrapper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssemblyWrapper.cs.meta new file mode 100644 index 0000000..70bd58b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorAssemblyWrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20cdb37e6fea6d946bbb84d2c923db85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorCompilationInterfaceProxy.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorCompilationInterfaceProxy.cs new file mode 100644 index 0000000..ad0b5ad --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorCompilationInterfaceProxy.cs @@ -0,0 +1,17 @@ +using UnityEditor.Scripting.ScriptCompilation; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditorCompilationInterfaceProxy : IEditorCompilationInterfaceProxy + { + public ScriptAssembly[] GetAllEditorScriptAssemblies() + { + return EditorCompilationInterface.Instance.GetAllEditorScriptAssemblies(EditorCompilationInterface.GetAdditionalEditorScriptCompilationOptions()); + } + + public PrecompiledAssembly[] GetAllPrecompiledAssemblies() + { + return EditorCompilationInterface.Instance.GetAllPrecompiledAssemblies(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorCompilationInterfaceProxy.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorCompilationInterfaceProxy.cs.meta new file mode 100644 index 0000000..ef5ade0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorCompilationInterfaceProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c9b23632c77de204abfe8bf7168d48c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorLoadedTestAssemblyProvider.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorLoadedTestAssemblyProvider.cs new file mode 100644 index 0000000..8a46cbf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorLoadedTestAssemblyProvider.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor.Scripting.ScriptCompilation; +using UnityEngine.TestTools; +using UnityEngine.TestTools.Utils; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class EditorLoadedTestAssemblyProvider : IEditorLoadedTestAssemblyProvider + { + private const string k_NunitAssemblyName = "nunit.framework"; + private const string k_TestRunnerAssemblyName = "UnityEngine.TestRunner"; + internal const string k_PerformanceTestingAssemblyName = "Unity.PerformanceTesting"; + + private readonly IEditorAssembliesProxy m_EditorAssembliesProxy; + private readonly ScriptAssembly[] m_AllEditorScriptAssemblies; + private readonly PrecompiledAssembly[] m_AllPrecompiledAssemblies; + + public EditorLoadedTestAssemblyProvider(IEditorCompilationInterfaceProxy compilationInterfaceProxy, IEditorAssembliesProxy editorAssembliesProxy) + { + m_EditorAssembliesProxy = editorAssembliesProxy; + m_AllEditorScriptAssemblies = compilationInterfaceProxy.GetAllEditorScriptAssemblies(); + m_AllPrecompiledAssemblies = compilationInterfaceProxy.GetAllPrecompiledAssemblies(); + } + + public List GetAssembliesGroupedByType(TestPlatform mode) + { + var assemblies = GetAssembliesGroupedByTypeAsync(mode); + while (assemblies.MoveNext()) + { + } + + return assemblies.Current.Where(pair => mode.IsFlagIncluded(pair.Key)).SelectMany(pair => pair.Value).ToList(); + } + + public IEnumerator>> GetAssembliesGroupedByTypeAsync(TestPlatform mode) + { + IAssemblyWrapper[] loadedAssemblies = m_EditorAssembliesProxy.loadedAssemblies; + + IDictionary> result = new Dictionary>() + { + {TestPlatform.EditMode, new List() }, + {TestPlatform.PlayMode, new List() } + }; + + foreach (var loadedAssembly in loadedAssemblies) + { + if (loadedAssembly.GetReferencedAssemblies().Any(x => x.Name == k_NunitAssemblyName || x.Name == k_TestRunnerAssemblyName || x.Name == k_PerformanceTestingAssemblyName)) + { + var assemblyName = new FileInfo(loadedAssembly.Location).Name; + var scriptAssemblies = m_AllEditorScriptAssemblies.Where(x => x.Filename == assemblyName).ToList(); + var precompiledAssemblies = m_AllPrecompiledAssemblies.Where(x => new FileInfo(x.Path).Name == assemblyName).ToList(); + if (scriptAssemblies.Count < 1 && precompiledAssemblies.Count < 1) + { + continue; + } + + var assemblyFlags = scriptAssemblies.Any() ? scriptAssemblies.Single().Flags : precompiledAssemblies.Single().Flags; + var assemblyType = (assemblyFlags & AssemblyFlags.EditorOnly) == AssemblyFlags.EditorOnly ? TestPlatform.EditMode : TestPlatform.PlayMode; + result[assemblyType].Add(loadedAssembly); + yield return null; + } + } + + yield return result; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorLoadedTestAssemblyProvider.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorLoadedTestAssemblyProvider.cs.meta new file mode 100644 index 0000000..efba6a7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/EditorLoadedTestAssemblyProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 033c884ba52437d49bc55935939ef1c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorAssembliesProxy.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorAssembliesProxy.cs new file mode 100644 index 0000000..35ec87d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorAssembliesProxy.cs @@ -0,0 +1,9 @@ +using UnityEngine.TestTools.Utils; + +namespace UnityEditor.TestTools.TestRunner +{ + internal interface IEditorAssembliesProxy + { + IAssemblyWrapper[] loadedAssemblies { get; } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorAssembliesProxy.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorAssembliesProxy.cs.meta new file mode 100644 index 0000000..ad00f55 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorAssembliesProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98808b11e78f6c84a841a6b4bc5a29d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorCompilationInterfaceProxy.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorCompilationInterfaceProxy.cs new file mode 100644 index 0000000..25defb7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorCompilationInterfaceProxy.cs @@ -0,0 +1,10 @@ +using UnityEditor.Scripting.ScriptCompilation; + +namespace UnityEditor.TestTools.TestRunner +{ + internal interface IEditorCompilationInterfaceProxy + { + ScriptAssembly[] GetAllEditorScriptAssemblies(); + PrecompiledAssembly[] GetAllPrecompiledAssemblies(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorCompilationInterfaceProxy.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorCompilationInterfaceProxy.cs.meta new file mode 100644 index 0000000..2bc608b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorCompilationInterfaceProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28c8fcb831e6e734a9f564bc4f495eba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorLoadedTestAssemblyProvider.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorLoadedTestAssemblyProvider.cs new file mode 100644 index 0000000..d54bda7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorLoadedTestAssemblyProvider.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using UnityEngine.TestTools; +using UnityEngine.TestTools.Utils; + +namespace UnityEditor.TestTools.TestRunner +{ + internal interface IEditorLoadedTestAssemblyProvider + { + List GetAssembliesGroupedByType(TestPlatform mode); + IEnumerator>> GetAssembliesGroupedByTypeAsync(TestPlatform mode); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorLoadedTestAssemblyProvider.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorLoadedTestAssemblyProvider.cs.meta new file mode 100644 index 0000000..cbe4897 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/IEditorLoadedTestAssemblyProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 936b6288befc460409cfdff3ac92fc95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCache.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCache.cs new file mode 100644 index 0000000..5df7a78 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCache.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + interface ITestListCache + { + void CacheTest(TestPlatform platform, ITest test); + IEnumerator GetTestFromCacheAsync(TestPlatform platform); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCache.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCache.cs.meta new file mode 100644 index 0000000..41943d4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a704c010bcdb1ec4a9f3417b3c393164 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCacheData.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCacheData.cs new file mode 100644 index 0000000..d11fe47 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCacheData.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using UnityEngine.TestRunner.TestLaunchers; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + interface ITestListCacheData + { + List platforms { get; } + List cachedData { get; } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCacheData.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCacheData.cs.meta new file mode 100644 index 0000000..b229c0c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListCacheData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7043e9a330ac2d84a80a965ada4589ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListProvider.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListProvider.cs new file mode 100644 index 0000000..b734f53 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListProvider.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + interface ITestListProvider + { + IEnumerator GetTestListAsync(TestPlatform platform); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListProvider.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListProvider.cs.meta new file mode 100644 index 0000000..b62929b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/ITestListProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64689f8b25eadac4da519e96f514b653 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCache.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCache.cs new file mode 100644 index 0000000..e69bfcb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCache.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine.TestRunner.TestLaunchers; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class TestListCache : ITestListCache + { + private readonly ITestAdaptorFactory m_TestAdaptorFactory; + private readonly IRemoteTestResultDataFactory m_TestResultDataFactory; + private readonly ITestListCacheData m_TestListCacheData; + + public TestListCache(ITestAdaptorFactory testAdaptorFactory, IRemoteTestResultDataFactory testResultDataFactory, ITestListCacheData testListCacheData) + { + m_TestAdaptorFactory = testAdaptorFactory; + m_TestResultDataFactory = testResultDataFactory; + m_TestListCacheData = testListCacheData; + } + + public void CacheTest(TestPlatform platform, ITest test) + { + var index = m_TestListCacheData.platforms.IndexOf(platform); + if (index < 0) + { + m_TestListCacheData.cachedData.Add(test); + m_TestListCacheData.platforms.Add(platform); + } + else + { + m_TestListCacheData.cachedData[index] = test; + } + } + + public IEnumerator GetTestFromCacheAsync(TestPlatform platform) + { + var index = m_TestListCacheData.platforms.IndexOf(platform); + if (index < 0) + { + yield return null; + yield break; + } + + var testData = m_TestListCacheData.cachedData[index]; + yield return m_TestAdaptorFactory.Create(testData); + } + + [Callbacks.DidReloadScripts] + private static void ScriptReloaded() + { + TestListCacheData.instance.cachedData.Clear(); + TestListCacheData.instance.platforms.Clear(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCache.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCache.cs.meta new file mode 100644 index 0000000..ea8d096 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d685d97a1eb004f49afea0cc982ff728 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCacheData.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCacheData.cs new file mode 100644 index 0000000..175082f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCacheData.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using UnityEngine; +using UnityEngine.TestRunner.TestLaunchers; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class TestListCacheData : ScriptableSingleton, ITestListCacheData + { + [SerializeField] + private List m_Platforms = new List(); + + [SerializeField] + private List m_CachedData = new List(); + + public List platforms + { + get { return m_Platforms; } + } + + public List cachedData + { + get { return m_CachedData; } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCacheData.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCacheData.cs.meta new file mode 100644 index 0000000..2ad79ac --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListCacheData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1b6399349763114d9361bc6dfcd025b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListJob.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListJob.cs new file mode 100644 index 0000000..0df60c3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListJob.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class TestListJob + { + private CachingTestListProvider m_TestListProvider; + private TestPlatform m_Platform; + private Action m_Callback; + private IEnumerator m_ResultEnumerator; + public TestListJob(CachingTestListProvider testListProvider, TestPlatform platform, Action callback) + { + m_TestListProvider = testListProvider; + m_Platform = platform; + m_Callback = callback; + } + + public void Start() + { + m_ResultEnumerator = m_TestListProvider.GetTestListAsync(m_Platform); + EditorApplication.update += EditorUpdate; + } + + private void EditorUpdate() + { + if (!m_ResultEnumerator.MoveNext()) + { + m_Callback(m_ResultEnumerator.Current); + EditorApplication.update -= EditorUpdate; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListJob.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListJob.cs.meta new file mode 100644 index 0000000..a17c091 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListJob.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dec9066d4afefe444be0dad3f137730d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListProvider.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListProvider.cs new file mode 100644 index 0000000..1da846e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListProvider.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEngine.TestTools; +using UnityEngine.TestTools.NUnitExtensions; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class TestListProvider : ITestListProvider + { + private readonly EditorLoadedTestAssemblyProvider m_AssemblyProvider; + private readonly UnityTestAssemblyBuilder m_AssemblyBuilder; + + public TestListProvider(EditorLoadedTestAssemblyProvider assemblyProvider, UnityTestAssemblyBuilder assemblyBuilder) + { + m_AssemblyProvider = assemblyProvider; + m_AssemblyBuilder = assemblyBuilder; + } + + public IEnumerator GetTestListAsync(TestPlatform platform) + { + var assembliesTask = m_AssemblyProvider.GetAssembliesGroupedByTypeAsync(platform); + while (assembliesTask.MoveNext()) + { + yield return null; + } + + var assemblies = assembliesTask.Current.Where(pair => platform.IsFlagIncluded(pair.Key)) + .SelectMany(pair => pair.Value.Select(assemblyInfo => Tuple.Create(assemblyInfo.Assembly, pair.Key))).ToArray(); + + var settings = UnityTestAssemblyBuilder.GetNUnitTestBuilderSettings(platform); + var test = m_AssemblyBuilder.BuildAsync(assemblies.Select(a => a.Item1).ToArray(), assemblies.Select(a => a.Item2).ToArray(), settings); + while (test.MoveNext()) + { + yield return null; + } + + yield return test.Current; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListProvider.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListProvider.cs.meta new file mode 100644 index 0000000..c0e66d5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunner/Utils/TestListProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f15cbb987069826429540d0ea0937442 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindow.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindow.cs new file mode 100644 index 0000000..35dd0b5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindow.cs @@ -0,0 +1,275 @@ +using System; +using UnityEditor.Callbacks; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEditor.TestTools.TestRunner.GUI; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner +{ + [Serializable] + /// + /// The TestRunnerWindow class is repsonsible for drawing the Test Runner window. + /// + public class TestRunnerWindow : EditorWindow, IHasCustomMenu + { + internal static class Styles + { + public static GUIStyle info; + public static GUIStyle testList; + + static Styles() + { + info = new GUIStyle(EditorStyles.wordWrappedLabel); + info.wordWrap = false; + info.stretchHeight = true; + info.margin.right = 15; + + testList = new GUIStyle("CN Box"); + testList.margin.top = 0; + testList.padding.left = 3; + } + } + + private readonly GUIContent m_GUIHorizontalSplit = EditorGUIUtility.TrTextContent("Horizontal layout"); + private readonly GUIContent m_GUIVerticalSplit = EditorGUIUtility.TrTextContent("Vertical layout"); + private readonly GUIContent m_GUIEnableaPlaymodeTestsRunner = EditorGUIUtility.TrTextContent("Enable playmode tests for all assemblies"); + private readonly GUIContent m_GUIDisablePlaymodeTestsRunner = EditorGUIUtility.TrTextContent("Disable playmode tests for all assemblies"); + private readonly GUIContent m_GUIRunPlayModeTestAsEditModeTests = EditorGUIUtility.TrTextContent("Run playmode tests as editmode tests"); + + internal static TestRunnerWindow s_Instance; + private bool m_IsBuilding; + [NonSerialized] + private bool m_Enabled; + internal TestFilterSettings filterSettings; + + [SerializeField] + private SplitterState m_Spl = new SplitterState(new float[] { 75, 25 }, new[] { 32, 32 }, null); + + private TestRunnerWindowSettings m_Settings; + + private enum TestRunnerMenuLabels + { + PlayMode = 0, + EditMode = 1 + } + [SerializeField] + private int m_TestTypeToolbarIndex = (int)TestRunnerMenuLabels.EditMode; + [SerializeField] + private PlayModeTestListGUI m_PlayModeTestListGUI; + [SerializeField] + private EditModeTestListGUI m_EditModeTestListGUI; + + internal TestListGUI m_SelectedTestTypes; + + private ITestRunnerApi m_testRunnerApi; + + private WindowResultUpdater m_WindowResultUpdater; + + [MenuItem("Window/General/Test Runner", false, 201, false)] + /// + /// Launches the Test Runner window. + /// + public static void ShowWindow() + { + s_Instance = GetWindow("Test Runner"); + s_Instance.Show(); + } + + internal static void ShowPlaymodeTestsRunnerWindowCodeBased() + { + ShowWindow(); + } + + static TestRunnerWindow() + { + InitBackgroundRunners(); + } + + private static void InitBackgroundRunners() + { + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + EditorApplication.playModeStateChanged += OnPlayModeStateChanged; + } + + [DidReloadScripts] + private static void CompilationCallback() + { + UpdateWindow(); + } + + private static void OnPlayModeStateChanged(PlayModeStateChange state) + { + if (s_Instance && state == PlayModeStateChange.EnteredEditMode && s_Instance.m_SelectedTestTypes.HasTreeData()) + { + //repaint message details after exit playmode + s_Instance.m_SelectedTestTypes.TestSelectionCallback(s_Instance.m_SelectedTestTypes.m_TestListState.selectedIDs.ToArray()); + s_Instance.Repaint(); + } + } + + internal void OnDestroy() + { + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + } + + private void OnEnable() + { + s_Instance = this; + SelectTestListGUI(m_TestTypeToolbarIndex); + + m_testRunnerApi = ScriptableObject.CreateInstance(); + m_WindowResultUpdater = new WindowResultUpdater(); + m_testRunnerApi.RegisterCallbacks(m_WindowResultUpdater); + } + + private void Enable() + { + m_Settings = new TestRunnerWindowSettings("UnityEditor.PlaymodeTestsRunnerWindow"); + filterSettings = new TestFilterSettings("UnityTest.IntegrationTestsRunnerWindow"); + + if (m_SelectedTestTypes == null) + { + SelectTestListGUI(m_TestTypeToolbarIndex); + } + + StartRetrieveTestList(); + m_SelectedTestTypes.Reload(); + m_Enabled = true; + } + + private void SelectTestListGUI(int testTypeToolbarIndex) + { + if (testTypeToolbarIndex == (int)TestRunnerMenuLabels.PlayMode) + { + if (m_PlayModeTestListGUI == null) + { + m_PlayModeTestListGUI = new PlayModeTestListGUI(); + } + m_SelectedTestTypes = m_PlayModeTestListGUI; + } + else if (testTypeToolbarIndex == (int)TestRunnerMenuLabels.EditMode) + { + if (m_EditModeTestListGUI == null) + { + m_EditModeTestListGUI = new EditModeTestListGUI(); + } + m_SelectedTestTypes = m_EditModeTestListGUI; + } + } + + private void StartRetrieveTestList() + { + if (!m_SelectedTestTypes.HasTreeData()) + { + var listToInit = m_SelectedTestTypes; + m_testRunnerApi.RetrieveTestList(m_SelectedTestTypes.TestMode, (rootTest) => + { + listToInit.Init(this, rootTest); + listToInit.Reload(); + }); + } + } + + internal void OnGUI() + { + if (!m_Enabled) + { + Enable(); + } + + if (BuildPipeline.isBuildingPlayer) + { + m_IsBuilding = true; + } + else if (m_IsBuilding) + { + m_IsBuilding = false; + Repaint(); + } + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + var selectedIndex = m_TestTypeToolbarIndex; + m_TestTypeToolbarIndex = GUILayout.Toolbar(m_TestTypeToolbarIndex, Enum.GetNames(typeof(TestRunnerMenuLabels)), "LargeButton", UnityEngine.GUI.ToolbarButtonSize.FitToContents); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + if (selectedIndex != m_TestTypeToolbarIndex) + { + SelectTestListGUI(m_TestTypeToolbarIndex); + StartRetrieveTestList(); + } + + EditorGUILayout.BeginVertical(); + using (new EditorGUI.DisabledScope(EditorApplication.isPlayingOrWillChangePlaymode)) + { + m_SelectedTestTypes.PrintHeadPanel(); + } + EditorGUILayout.EndVertical(); + + if (m_Settings.verticalSplit) + SplitterGUILayout.BeginVerticalSplit(m_Spl); + else + SplitterGUILayout.BeginHorizontalSplit(m_Spl); + + EditorGUILayout.BeginVertical(); + EditorGUILayout.BeginVertical(Styles.testList); + m_SelectedTestTypes.RenderTestList(); + EditorGUILayout.EndVertical(); + EditorGUILayout.EndVertical(); + + m_SelectedTestTypes.RenderDetails(); + + if (m_Settings.verticalSplit) + SplitterGUILayout.EndVerticalSplit(); + else + SplitterGUILayout.EndHorizontalSplit(); + } + + /// + /// Adds additional menu items to the Test Runner window. + /// + /// The + public void AddItemsToMenu(GenericMenu menu) + { + menu.AddItem(m_GUIVerticalSplit, m_Settings.verticalSplit, m_Settings.ToggleVerticalSplit); + menu.AddItem(m_GUIHorizontalSplit, !m_Settings.verticalSplit, m_Settings.ToggleVerticalSplit); + + menu.AddSeparator(null); + + var playModeTestRunnerEnabled = PlayerSettings.playModeTestRunnerEnabled; + var currentActive = playModeTestRunnerEnabled ? m_GUIDisablePlaymodeTestsRunner : m_GUIEnableaPlaymodeTestsRunner; + + if (EditorPrefs.GetBool("InternalMode", false)) + { + menu.AddItem(m_GUIRunPlayModeTestAsEditModeTests, PlayerSettings.runPlayModeTestAsEditModeTest, () => + { + PlayerSettings.runPlayModeTestAsEditModeTest = !PlayerSettings.runPlayModeTestAsEditModeTest; + }); + } + + menu.AddItem(currentActive, false, () => + { + PlayerSettings.playModeTestRunnerEnabled = !playModeTestRunnerEnabled; + EditorUtility.DisplayDialog(currentActive.text, "You need to restart the editor now", "Ok"); + }); + } + + internal void RebuildUIFilter() + { + if (m_SelectedTestTypes != null && m_SelectedTestTypes.HasTreeData()) + { + m_SelectedTestTypes.RebuildUIFilter(); + } + } + + internal static void UpdateWindow() + { + if (s_Instance != null && s_Instance.m_SelectedTestTypes != null) + { + s_Instance.m_SelectedTestTypes.Repaint(); + s_Instance.Repaint(); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindow.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindow.cs.meta new file mode 100644 index 0000000..5cb0e86 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4dfcd3a631f61d248b7cc0b845d40345 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindowSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindowSettings.cs new file mode 100644 index 0000000..366df26 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindowSettings.cs @@ -0,0 +1,26 @@ +namespace UnityEditor.TestTools.TestRunner +{ + internal class TestRunnerWindowSettings + { + public bool verticalSplit; + + private readonly string m_PrefsKey; + + public TestRunnerWindowSettings(string prefsKey) + { + m_PrefsKey = prefsKey; + verticalSplit = EditorPrefs.GetBool(m_PrefsKey + ".verticalSplit", true); + } + + public void ToggleVerticalSplit() + { + verticalSplit = !verticalSplit; + Save(); + } + + private void Save() + { + EditorPrefs.SetBool(m_PrefsKey + ".verticalSplit", verticalSplit); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindowSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindowSettings.cs.meta new file mode 100644 index 0000000..44bcc5a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestRunnerWindowSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b301b727225f1941974d69e61a55620 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings.meta new file mode 100644 index 0000000..4127631 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95b719082a664ea45bb56759eed1f271 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettings.cs new file mode 100644 index 0000000..d272037 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettings.cs @@ -0,0 +1,22 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner +{ + internal interface ITestSettings : IDisposable + { + ScriptingImplementation? scriptingBackend { get; set; } + + string Architecture { get; set; } + + ApiCompatibilityLevel? apiProfile { get; set; } + + bool? appleEnableAutomaticSigning { get; set; } + string appleDeveloperTeamID { get; set; } + ProvisioningProfileType? iOSManualProvisioningProfileType { get; set; } + string iOSManualProvisioningProfileID { get; set; } + ProvisioningProfileType? tvOSManualProvisioningProfileType { get; set; } + string tvOSManualProvisioningProfileID { get; set; } + + void SetupProjectParameters(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettings.cs.meta new file mode 100644 index 0000000..9a8563c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83eda34b7da01e04aa894f268158b0c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettingsDeserializer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettingsDeserializer.cs new file mode 100644 index 0000000..701c91d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettingsDeserializer.cs @@ -0,0 +1,7 @@ +namespace UnityEditor.TestTools.TestRunner +{ + interface ITestSettingsDeserializer + { + ITestSettings GetSettingsFromJsonFile(string jsonFilePath); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettingsDeserializer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettingsDeserializer.cs.meta new file mode 100644 index 0000000..72c587e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/ITestSettingsDeserializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d208a1684f8aa6a40ad91d6aa9600c14 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettings.cs new file mode 100644 index 0000000..a5bdf7a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettings.cs @@ -0,0 +1,160 @@ +using System; + +namespace UnityEditor.TestTools.TestRunner +{ + internal class TestSettings : ITestSettings + { + private readonly TestSetting[] m_Settings = + { + new TestSetting( + settings => settings.scriptingBackend, + () => PlayerSettings.GetScriptingBackend(EditorUserBuildSettings.activeBuildTargetGroup), + implementation => PlayerSettings.SetScriptingBackend(EditorUserBuildSettings.activeBuildTargetGroup, implementation.Value)), + new TestSetting( + settings => settings.Architecture, + () => EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android ? PlayerSettings.Android.targetArchitectures.ToString() : null, + architecture => + { + if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android) + { + if (!string.IsNullOrEmpty(architecture)) + { + var targetArchitectures = (AndroidArchitecture)Enum.Parse(typeof(AndroidArchitecture), architecture, true); + PlayerSettings.Android.targetArchitectures = targetArchitectures; + } + } + }), + new TestSetting( + settings => settings.apiProfile, + () => PlayerSettings.GetApiCompatibilityLevel(EditorUserBuildSettings.activeBuildTargetGroup), + implementation => + { + if (Enum.IsDefined(typeof(ApiCompatibilityLevel), implementation.Value)) + { + PlayerSettings.SetApiCompatibilityLevel(EditorUserBuildSettings.activeBuildTargetGroup, + implementation.Value); + } + }), + new TestSetting( + settings => settings.appleEnableAutomaticSigning, + () => PlayerSettings.iOS.appleEnableAutomaticSigning, + enableAutomaticSigning => + { + if (enableAutomaticSigning != null) + PlayerSettings.iOS.appleEnableAutomaticSigning = enableAutomaticSigning.Value; + }), + new TestSetting( + settings => settings.appleDeveloperTeamID, + () => PlayerSettings.iOS.appleDeveloperTeamID, + developerTeam => + { + if (developerTeam != null) + PlayerSettings.iOS.appleDeveloperTeamID = developerTeam; + }), + new TestSetting( + settings => settings.iOSManualProvisioningProfileType, + () => PlayerSettings.iOS.iOSManualProvisioningProfileType, + profileType => + { + if (profileType != null) + PlayerSettings.iOS.iOSManualProvisioningProfileType = profileType.Value; + }), + new TestSetting( + settings => settings.iOSManualProvisioningProfileID, + () => PlayerSettings.iOS.iOSManualProvisioningProfileID, + provisioningUUID => + { + if (provisioningUUID != null) + PlayerSettings.iOS.iOSManualProvisioningProfileID = provisioningUUID; + }), + new TestSetting( + settings => settings.tvOSManualProvisioningProfileType, + () => PlayerSettings.iOS.tvOSManualProvisioningProfileType, + profileType => + { + if (profileType != null) + PlayerSettings.iOS.tvOSManualProvisioningProfileType = profileType.Value; + }), + new TestSetting( + settings => settings.tvOSManualProvisioningProfileID, + () => PlayerSettings.iOS.tvOSManualProvisioningProfileID, + provisioningUUID => + { + if (provisioningUUID != null) + PlayerSettings.iOS.tvOSManualProvisioningProfileID = provisioningUUID; + }), + }; + + private bool m_Disposed; + + public ScriptingImplementation? scriptingBackend { get; set; } + + public string Architecture { get; set; } + + public ApiCompatibilityLevel? apiProfile { get; set; } + + public bool? appleEnableAutomaticSigning { get; set; } + public string appleDeveloperTeamID { get; set; } + public ProvisioningProfileType? iOSManualProvisioningProfileType { get; set; } + public string iOSManualProvisioningProfileID { get; set; } + public ProvisioningProfileType? tvOSManualProvisioningProfileType { get; set; } + public string tvOSManualProvisioningProfileID { get; set; } + + public void Dispose() + { + if (!m_Disposed) + { + foreach (var testSetting in m_Settings) + { + testSetting.Cleanup(); + } + + m_Disposed = true; + } + } + + public void SetupProjectParameters() + { + foreach (var testSetting in m_Settings) + { + testSetting.Setup(this); + } + } + + private abstract class TestSetting + { + public abstract void Setup(TestSettings settings); + public abstract void Cleanup(); + } + + private class TestSetting : TestSetting + { + private T m_ValueBeforeSetup; + private Func m_GetFromSettings; + private Func m_GetCurrentValue; + private Action m_SetValue; + + public TestSetting(Func getFromSettings, Func getCurrentValue, Action setValue) + { + m_GetFromSettings = getFromSettings; + m_GetCurrentValue = getCurrentValue; + m_SetValue = setValue; + } + + public override void Setup(TestSettings settings) + { + m_ValueBeforeSetup = m_GetCurrentValue(); + var newValue = m_GetFromSettings(settings); + if (newValue != null) + { + m_SetValue(newValue); + } + } + + public override void Cleanup() + { + m_SetValue(m_ValueBeforeSetup); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettings.cs.meta new file mode 100644 index 0000000..23e6f5e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6b32b6725087a0d4bb1670818d26996e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettingsDeserializer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettingsDeserializer.cs new file mode 100644 index 0000000..cdba06e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettingsDeserializer.cs @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner +{ + /// + /// Handles deserialization of TestSettings from a provided json file path. + /// + internal class TestSettingsDeserializer : ITestSettingsDeserializer + { + private static readonly SettingsMap[] s_SettingsMapping = + { + new SettingsMap("scriptingBackend", (settings, value) => settings.scriptingBackend = value), + new SettingsMap("architecture", (settings, value) => settings.Architecture = value), + new SettingsMap("apiProfile", (settings, value) => settings.apiProfile = value), + new SettingsMap("appleEnableAutomaticSigning", (settings, value) => settings.appleEnableAutomaticSigning = value), + new SettingsMap("appleDeveloperTeamID", (settings, value) => settings.appleDeveloperTeamID = value), + new SettingsMap("iOSManualProvisioningProfileType", (settings, value) => settings.iOSManualProvisioningProfileType = value), + new SettingsMap("iOSManualProvisioningProfileID", (settings, value) => settings.iOSManualProvisioningProfileID = value), + new SettingsMap("tvOSManualProvisioningProfileType", (settings, value) => settings.tvOSManualProvisioningProfileType = value), + new SettingsMap("tvOSManualProvisioningProfileID", (settings, value) => settings.tvOSManualProvisioningProfileID = value), + }; + + private readonly Func m_TestSettingsFactory; + public TestSettingsDeserializer(Func testSettingsFactory) + { + m_TestSettingsFactory = testSettingsFactory; + } + + public ITestSettings GetSettingsFromJsonFile(string jsonFilePath) + { + var text = File.ReadAllText(jsonFilePath); + var settingsDictionary = Json.Deserialize(text) as Dictionary; + + var testSettings = m_TestSettingsFactory(); + if (settingsDictionary == null) + { + return testSettings; + } + + foreach (var settingsMap in s_SettingsMapping) + { + if (!settingsDictionary.ContainsKey(settingsMap.Key)) + { + continue; + } + + if (settingsMap.Type.IsEnum) + { + SetEnumValue(settingsMap.Key, settingsDictionary[settingsMap.Key], settingsMap.Type, value => settingsMap.ApplyToSettings(testSettings, value)); + } + else + { + SetValue(settingsMap.Key, settingsDictionary[settingsMap.Key], settingsMap.Type, value => settingsMap.ApplyToSettings(testSettings, value)); + } + } + + return testSettings; + } + + private abstract class SettingsMap + { + public string Key { get; } + public Type Type { get; } + protected SettingsMap(string key, Type type) + { + Key = key; + Type = type; + } + + public abstract void ApplyToSettings(ITestSettings settings, object value); + } + + private class SettingsMap : SettingsMap + { + private Action m_Setter; + public SettingsMap(string key, Action setter) : base(key, typeof(T)) + { + m_Setter = setter; + } + + public override void ApplyToSettings(ITestSettings settings, object value) + { + m_Setter(settings, (T)value); + } + } + + private static void SetEnumValue(string key, object value, Type type, Action setter) + { + object enumValue; + if (TryGetEnum(value as string, type, out enumValue)) + { + setter(enumValue); + return; + } + + var acceptedValues = string.Join(", ", Enum.GetValues(type).OfType().Select(val => val.ToString()).ToArray()); + + Debug.LogFormat("Could not convert '{0}' argument '{1}' to a valid {2}. Accepted values: {3}.", key, value, type.Name, acceptedValues); + } + + private static bool TryGetEnum(string value, Type type, out object enumValue) + { + try + { + enumValue = Enum.Parse(type, value, true); + return true; + } + catch (Exception) + { + enumValue = null; + return false; + } + } + + private static void SetValue(string key, object value, Type type, Action setter) + { + if (type.IsInstanceOfType(value)) + { + setter(value); + return; + } + + Debug.LogFormat("Could not convert '{0}' argument '{1}' to a valid {2}.", key, value, type.Name); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettingsDeserializer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettingsDeserializer.cs.meta new file mode 100644 index 0000000..4d50295 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/TestSettings/TestSettingsDeserializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75e7d7a9a57458841a85fe42d9c9141f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityEditor.TestRunner.asmdef b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityEditor.TestRunner.asmdef new file mode 100644 index 0000000..efdc7cf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityEditor.TestRunner.asmdef @@ -0,0 +1,21 @@ +{ + "name": "UnityEditor.TestRunner", + "references": [ + "UnityEngine.TestRunner" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll", + "Mono.Cecil.dll", + "Mono.Cecil.Pdb.dll", + "Mono.Cecil.Mdb.dll", + "Mono.Cecil.Rocks.dll" + ], + "autoReferenced": false, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityEditor.TestRunner.asmdef.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityEditor.TestRunner.asmdef.meta new file mode 100644 index 0000000..63c0290 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityEditor.TestRunner.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0acc523941302664db1f4e527237feb3 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol.meta new file mode 100644 index 0000000..8499c83 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 936c6340f3468444ebb1785b4c311126 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/AssemblyCompilationErrorsMessage.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/AssemblyCompilationErrorsMessage.cs new file mode 100644 index 0000000..7f00c5b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/AssemblyCompilationErrorsMessage.cs @@ -0,0 +1,13 @@ +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + internal class AssemblyCompilationErrorsMessage : Message + { + public string assembly; + public string[] errors; + + public AssemblyCompilationErrorsMessage() + { + type = "AssemblyCompilationErrors"; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/AssemblyCompilationErrorsMessage.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/AssemblyCompilationErrorsMessage.cs.meta new file mode 100644 index 0000000..67d5b2a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/AssemblyCompilationErrorsMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c346a7445959bba46a96de0747e77c2a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/ITestRunnerApiMapper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/ITestRunnerApiMapper.cs new file mode 100644 index 0000000..f7dcacf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/ITestRunnerApiMapper.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + interface ITestRunnerApiMapper + { + string GetRunStateFromResultNunitXml(ITestResultAdaptor result); + TestState GetTestStateFromResult(ITestResultAdaptor result); + List FlattenTestNames(ITestAdaptor testsToRun); + TestPlanMessage MapTestToTestPlanMessage(ITestAdaptor testsToRun); + TestStartedMessage MapTestToTestStartedMessage(ITestAdaptor test); + TestFinishedMessage TestResultToTestFinishedMessage(ITestResultAdaptor result); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/ITestRunnerApiMapper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/ITestRunnerApiMapper.cs.meta new file mode 100644 index 0000000..75e0ba2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/ITestRunnerApiMapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6de79ae237e51554da96fd28f68b66a6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpLogger.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpLogger.cs new file mode 100644 index 0000000..bdb96c1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpLogger.cs @@ -0,0 +1,7 @@ +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + interface IUtpLogger + { + void Log(Message msg); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpLogger.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpLogger.cs.meta new file mode 100644 index 0000000..dbd33aa --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpLogger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9014630255533ed42915965b4065cde8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpMessageReporter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpMessageReporter.cs new file mode 100644 index 0000000..3a9895e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpMessageReporter.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using UnityEditor.Compilation; +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + internal interface IUtpMessageReporter + { + void ReportAssemblyCompilationErrors(string assembly, IEnumerable errorCompilerMessages); + void ReportTestFinished(ITestResultAdaptor result); + void ReportTestRunStarted(ITestAdaptor testsToRun); + void ReportTestStarted(ITestAdaptor test); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpMessageReporter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpMessageReporter.cs.meta new file mode 100644 index 0000000..4c96a90 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/IUtpMessageReporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 952b3dc7b47846947b37c8d3ae46579a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/Message.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/Message.cs new file mode 100644 index 0000000..d10a5e4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/Message.cs @@ -0,0 +1,29 @@ +using System; +using System.Diagnostics; + +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + [Serializable] + internal abstract class Message + { + public string type; + // Milliseconds since unix epoch + public ulong time; + public int version; + public string phase; + public int processId; + + protected Message() + { + version = 2; + phase = "Immediate"; + processId = Process.GetCurrentProcess().Id; + AddTimeStamp(); + } + + public void AddTimeStamp() + { + time = Convert.ToUInt64((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/Message.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/Message.cs.meta new file mode 100644 index 0000000..bfc702b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/Message.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 321dc2c0720f8dd4f9396ecdc12b8746 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestFinishedMessage.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestFinishedMessage.cs new file mode 100644 index 0000000..66e18ff --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestFinishedMessage.cs @@ -0,0 +1,18 @@ +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + internal class TestFinishedMessage : Message + { + public string name; + public TestState state; + public string message; + public ulong duration; // milliseconds + public ulong durationMicroseconds; + public string stackTrace; + + public TestFinishedMessage() + { + type = "TestStatus"; + phase = "End"; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestFinishedMessage.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestFinishedMessage.cs.meta new file mode 100644 index 0000000..15b951b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestFinishedMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 423fe2ef878fa1140a7e1f7f9e365815 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestPlanMessage.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestPlanMessage.cs new file mode 100644 index 0000000..c0a76da --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestPlanMessage.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + internal class TestPlanMessage : Message + { + public List tests; + + public TestPlanMessage() + { + type = "TestPlan"; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestPlanMessage.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestPlanMessage.cs.meta new file mode 100644 index 0000000..c057f60 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestPlanMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28f79a0d7e64c2345bc46f8c4cf788f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestRunnerApiMapper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestRunnerApiMapper.cs new file mode 100644 index 0000000..af93dba --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestRunnerApiMapper.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + internal class TestRunnerApiMapper : ITestRunnerApiMapper + { + public TestPlanMessage MapTestToTestPlanMessage(ITestAdaptor testsToRun) + { + var testsNames = testsToRun != null ? FlattenTestNames(testsToRun) : new List(); + + var msg = new TestPlanMessage + { + tests = testsNames + }; + + return msg; + } + + public TestStartedMessage MapTestToTestStartedMessage(ITestAdaptor test) + { + return new TestStartedMessage + { + name = test.FullName + }; + } + + public TestFinishedMessage TestResultToTestFinishedMessage(ITestResultAdaptor result) + { + return new TestFinishedMessage + { + name = result.Test.FullName, + duration = Convert.ToUInt64(result.Duration * 1000), + durationMicroseconds = Convert.ToUInt64(result.Duration * 1000000), + message = result.Message, + state = GetTestStateFromResult(result), + stackTrace = result.StackTrace + }; + } + + public string GetRunStateFromResultNunitXml(ITestResultAdaptor result) + { + var doc = new XmlDocument(); + doc.LoadXml(result.ToXml().OuterXml); + return doc.FirstChild.Attributes["runstate"].Value; + } + + public TestState GetTestStateFromResult(ITestResultAdaptor result) + { + var state = TestState.Failure; + + if (result.TestStatus == TestStatus.Passed) + { + state = TestState.Success; + + var runstate = GetRunStateFromResultNunitXml(result); + runstate = runstate ?? String.Empty; + + if (runstate.ToLowerInvariant().Equals("explicit")) + state = TestState.Skipped; + } + else if (result.TestStatus == TestStatus.Skipped) + { + state = TestState.Skipped; + + if (result.ResultState.ToLowerInvariant().EndsWith("ignored")) + state = TestState.Ignored; + } + else + { + if (result.ResultState.ToLowerInvariant().Equals("inconclusive")) + state = TestState.Inconclusive; + + if (result.ResultState.ToLowerInvariant().EndsWith("cancelled") || + result.ResultState.ToLowerInvariant().EndsWith("error")) + state = TestState.Error; + } + + return state; + } + + public List FlattenTestNames(ITestAdaptor test) + { + var results = new List(); + + if (!test.IsSuite) + results.Add(test.FullName); + + if (test.Children != null && test.Children.Any()) + foreach (var child in test.Children) + results.AddRange(FlattenTestNames(child)); + + return results; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestRunnerApiMapper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestRunnerApiMapper.cs.meta new file mode 100644 index 0000000..47634b9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestRunnerApiMapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2011a59d3f76b3d4a85cb53f945fceee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestStartedMessage.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestStartedMessage.cs new file mode 100644 index 0000000..c21464f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestStartedMessage.cs @@ -0,0 +1,15 @@ +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + internal class TestStartedMessage : Message + { + public string name; + public TestState state; + + public TestStartedMessage() + { + type = "TestStatus"; + phase = "Begin"; + state = TestState.Inconclusive; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestStartedMessage.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestStartedMessage.cs.meta new file mode 100644 index 0000000..18b53d1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestStartedMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd3e81baa10021f4d877fa36382bab16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestState.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestState.cs new file mode 100644 index 0000000..223a73d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestState.cs @@ -0,0 +1,13 @@ +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + // This matches the state definitions expected by the Perl code, which in turn matches the NUnit 2 values... + internal enum TestState + { + Inconclusive = 0, + Skipped = 2, + Ignored = 3, + Success = 4, + Failure = 5, + Error = 6 + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestState.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestState.cs.meta new file mode 100644 index 0000000..ac66641 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/TestState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 77f432980bb30084299a138e15c6f571 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolListener.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolListener.cs new file mode 100644 index 0000000..09daf8d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolListener.cs @@ -0,0 +1,35 @@ +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + internal class UnityTestProtocolListener : ScriptableObject, ICallbacks + { + private IUtpMessageReporter m_UtpMessageReporter; + + public UnityTestProtocolListener() + { + m_UtpMessageReporter = new UtpMessageReporter(new UtpDebugLogger()); + } + + public void RunStarted(ITestAdaptor testsToRun) + { + m_UtpMessageReporter.ReportTestRunStarted(testsToRun); + } + + public void RunFinished(ITestResultAdaptor testResults) + { + // Apparently does nothing :) + } + + public void TestStarted(ITestAdaptor test) + { + m_UtpMessageReporter.ReportTestStarted(test); + } + + public void TestFinished(ITestResultAdaptor result) + { + m_UtpMessageReporter.ReportTestFinished(result); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolListener.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolListener.cs.meta new file mode 100644 index 0000000..8ba29be --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 900aac3710bc14542a8d164e3f0ff820 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolStarter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolStarter.cs new file mode 100644 index 0000000..cca2fd8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolStarter.cs @@ -0,0 +1,37 @@ +using System; +using System.Linq; +using UnityEditor.Compilation; +using UnityEditor.TestTools.TestRunner.Api; +using UnityEngine; +using UnityEngine.TestTools; + +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + [InitializeOnLoad] + internal static class UnityTestProtocolStarter + { + static UnityTestProtocolStarter() + { + var commandLineArgs = Environment.GetCommandLineArgs(); + if (commandLineArgs.Contains("-automated") && commandLineArgs.Contains("-runTests")) // wanna have it only for utr run + { + var api = ScriptableObject.CreateInstance(); + var listener = ScriptableObject.CreateInstance(); + api.RegisterCallbacks(listener); + CompilationPipeline.assemblyCompilationFinished += OnAssemblyCompilationFinished; + } + } + + public static void OnAssemblyCompilationFinished(string assembly, CompilerMessage[] messages) + { + bool checkCompileErrors = RecompileScripts.Current == null || RecompileScripts.Current.ExpectScriptCompilationSuccess; + + if (checkCompileErrors && messages.Any(x => x.type == CompilerMessageType.Error)) + { + var compilerErrorMessages = messages.Where(x => x.type == CompilerMessageType.Error); + var utpMessageReporter = new UtpMessageReporter(new UtpDebugLogger()); + utpMessageReporter.ReportAssemblyCompilationErrors(assembly, compilerErrorMessages); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolStarter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolStarter.cs.meta new file mode 100644 index 0000000..540b31e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UnityTestProtocolStarter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ac58cb55fc8daf4abd3945a2bbbb0c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpDebuglogger.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpDebuglogger.cs new file mode 100644 index 0000000..e32f6d2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpDebuglogger.cs @@ -0,0 +1,13 @@ +using UnityEngine; + +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + class UtpDebugLogger : IUtpLogger + { + public void Log(Message msg) + { + var msgJson = JsonUtility.ToJson(msg); + Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "\n##utp:{0}", msgJson); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpDebuglogger.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpDebuglogger.cs.meta new file mode 100644 index 0000000..7debc23 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpDebuglogger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0abdd8cb6b29a24c8ee19626ef741b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpMessageReporter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpMessageReporter.cs new file mode 100644 index 0000000..37c4ee7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpMessageReporter.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEditor.Compilation; +using UnityEditor.TestTools.TestRunner.Api; + +namespace UnityEditor.TestTools.TestRunner.UnityTestProtocol +{ + internal class UtpMessageReporter : IUtpMessageReporter + { + public ITestRunnerApiMapper TestRunnerApiMapper; + public IUtpLogger Logger; + + public UtpMessageReporter(IUtpLogger utpLogger) + { + TestRunnerApiMapper = new TestRunnerApiMapper(); + Logger = utpLogger; + } + + public void ReportAssemblyCompilationErrors(string assembly, IEnumerable errorCompilerMessages) + { + var compilationErrorMessage = new AssemblyCompilationErrorsMessage + { + assembly = assembly, + errors = errorCompilerMessages.Select(x => x.message).ToArray() + }; + + Logger.Log(compilationErrorMessage); + } + + public void ReportTestRunStarted(ITestAdaptor testsToRun) + { + var msg = TestRunnerApiMapper.MapTestToTestPlanMessage(testsToRun); + + Logger.Log(msg); + } + + public void ReportTestStarted(ITestAdaptor test) + { + if (test.IsSuite) + return; + + var msg = TestRunnerApiMapper.MapTestToTestStartedMessage(test); + + Logger.Log(msg); + } + + public void ReportTestFinished(ITestResultAdaptor result) + { + if (result.Test.IsSuite) + return; + + var msg = TestRunnerApiMapper.TestResultToTestFinishedMessage(result); + + Logger.Log(msg); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpMessageReporter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpMessageReporter.cs.meta new file mode 100644 index 0000000..c818d4f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEditor.TestRunner/UnityTestProtocol/UtpMessageReporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ebcc5f899d9277642868aeda9a17cbaf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner.meta new file mode 100644 index 0000000..9589050 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 950890083f4907541a6ed06d70959e49 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/AssemblyInfo.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/AssemblyInfo.cs new file mode 100644 index 0000000..4149677 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/AssemblyInfo.cs @@ -0,0 +1,16 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +[assembly: AssemblyTitle("UnityEngine.TestRunner")] + +[assembly: InternalsVisibleTo("UnityEditor.TestRunner")] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] +[assembly: InternalsVisibleTo("Unity.PerformanceTesting")] +[assembly: InternalsVisibleTo("Unity.PerformanceTesting.Editor")] +[assembly: InternalsVisibleTo("Assembly-CSharp-testable")] +[assembly: InternalsVisibleTo("Assembly-CSharp-Editor-testable")] +[assembly: InternalsVisibleTo("UnityEngine.TestRunner.Tests")] +[assembly: InternalsVisibleTo("UnityEditor.TestRunner.Tests")] +[assembly: InternalsVisibleTo("Unity.PackageManagerUI.Editor")] + +[assembly: AssemblyVersion("1.0.0")] diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/AssemblyInfo.cs.meta new file mode 100644 index 0000000..b499e31 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc22cc13b69c1094c85e176c008b9ef8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions.meta new file mode 100644 index 0000000..4e7bbdf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ad55f5ad04d1d045a1f287409c650dd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/AllocatingGCMemoryConstraint.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/AllocatingGCMemoryConstraint.cs new file mode 100644 index 0000000..339a090 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/AllocatingGCMemoryConstraint.cs @@ -0,0 +1,83 @@ +using System; +using NUnit.Framework; +using NUnit.Framework.Constraints; +using UnityEngine.Profiling; + +namespace UnityEngine.TestTools.Constraints +{ + public class AllocatingGCMemoryConstraint : Constraint + { + private class AllocatingGCMemoryResult : ConstraintResult + { + private readonly int diff; + public AllocatingGCMemoryResult(IConstraint constraint, object actualValue, int diff) : base(constraint, actualValue, diff > 0) + { + this.diff = diff; + } + + public override void WriteMessageTo(MessageWriter writer) + { + if (diff == 0) + writer.WriteMessageLine("The provided delegate did not make any GC allocations."); + else + writer.WriteMessageLine("The provided delegate made {0} GC allocation(s).", diff); + } + } + + private ConstraintResult ApplyTo(Action action, object original) + { + var recorder = Recorder.Get("GC.Alloc"); + + // The recorder was created enabled, which means it captured the creation of the Recorder object itself, etc. + // Disabling it flushes its data, so that we can retrieve the sample block count and have it correctly account + // for these initial allocations. + recorder.enabled = false; + +#if !UNITY_WEBGL + recorder.FilterToCurrentThread(); +#endif + + recorder.enabled = true; + + try + { + action(); + } + finally + { + recorder.enabled = false; +#if !UNITY_WEBGL + recorder.CollectFromAllThreads(); +#endif + } + + return new AllocatingGCMemoryResult(this, original, recorder.sampleBlockCount); + } + + public override ConstraintResult ApplyTo(object obj) + { + if (obj == null) + throw new ArgumentNullException(); + + TestDelegate d = obj as TestDelegate; + if (d == null) + throw new ArgumentException(string.Format("The actual value must be a TestDelegate but was {0}", + obj.GetType())); + + return ApplyTo(() => d.Invoke(), obj); + } + + public override ConstraintResult ApplyTo(ActualValueDelegate del) + { + if (del == null) + throw new ArgumentNullException(); + + return ApplyTo(() => del.Invoke(), del); + } + + public override string Description + { + get { return "allocates GC memory"; } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/AllocatingGCMemoryConstraint.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/AllocatingGCMemoryConstraint.cs.meta new file mode 100644 index 0000000..0933c85 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/AllocatingGCMemoryConstraint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d09858396dd7adb4bbdb22ea0c8c3a37 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/ConstraintsExtensions.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/ConstraintsExtensions.cs new file mode 100644 index 0000000..812b1f0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/ConstraintsExtensions.cs @@ -0,0 +1,14 @@ +using NUnit.Framework.Constraints; + +namespace UnityEngine.TestTools.Constraints +{ + public static class ConstraintExtensions + { + public static AllocatingGCMemoryConstraint AllocatingGCMemory(this ConstraintExpression chain) + { + var constraint = new AllocatingGCMemoryConstraint(); + chain.Append(constraint); + return constraint; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/ConstraintsExtensions.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/ConstraintsExtensions.cs.meta new file mode 100644 index 0000000..1343496 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/ConstraintsExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68a48d1900320ed458e118415857faf6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/InvalidSignatureException.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/InvalidSignatureException.cs new file mode 100644 index 0000000..ab4ff8e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/InvalidSignatureException.cs @@ -0,0 +1,18 @@ +using NUnit.Framework; +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestTools.TestRunner +{ + internal class InvalidSignatureException : ResultStateException + { + public InvalidSignatureException(string message) + : base(message) + { + } + + public override ResultState ResultState + { + get { return ResultState.NotRunnable; } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/InvalidSignatureException.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/InvalidSignatureException.cs.meta new file mode 100644 index 0000000..86aee7f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/InvalidSignatureException.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9650d910fcaefb34cb45f121c1993892 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/Is.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/Is.cs new file mode 100644 index 0000000..c0871ef --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/Is.cs @@ -0,0 +1,10 @@ +namespace UnityEngine.TestTools.Constraints +{ + public class Is : NUnit.Framework.Is + { + public static AllocatingGCMemoryConstraint AllocatingGCMemory() + { + return new AllocatingGCMemoryConstraint(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/Is.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/Is.cs.meta new file mode 100644 index 0000000..23ed44a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/Is.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d5833966abeadb429de247e4316eef4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogAssert.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogAssert.cs new file mode 100644 index 0000000..51b97de --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogAssert.cs @@ -0,0 +1,39 @@ +using System.Text.RegularExpressions; +using UnityEngine.TestTools.Logging; + +namespace UnityEngine.TestTools +{ + public static class LogAssert + { + public static void Expect(LogType type, string message) + { + LogScope.Current.ExpectedLogs.Enqueue(new LogMatch() { LogType = type, Message = message }); + } + + public static void Expect(LogType type, Regex message) + { + LogScope.Current.ExpectedLogs.Enqueue(new LogMatch() { LogType = type, MessageRegex = message }); + } + + public static void NoUnexpectedReceived() + { + LogScope.Current.NoUnexpectedReceived(); + } + + public static bool ignoreFailingMessages + { + get + { + return LogScope.Current.IgnoreFailingMessages; + } + set + { + if (value != LogScope.Current.IgnoreFailingMessages) + { + Debug.LogFormat(LogType.Log, LogOption.NoStacktrace, null, "\nIgnoreFailingMessages:" + (value? "true":"false")); + } + LogScope.Current.IgnoreFailingMessages = value; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogAssert.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogAssert.cs.meta new file mode 100644 index 0000000..7a278a3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogAssert.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c97b794b51780d349a16826a4c7898d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope.meta new file mode 100644 index 0000000..284dc6a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b1d8465ba1376b148bdab58965101f47 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/ILogScope.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/ILogScope.cs new file mode 100644 index 0000000..5e73bb5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/ILogScope.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; + +namespace UnityEngine.TestTools.Logging +{ + internal interface ILogScope : IDisposable + { + Queue ExpectedLogs { get; set; } + List AllLogs { get; } + List FailingLogs { get; } + bool IgnoreFailingMessages { get; set; } + bool IsNUnitException { get; } + bool IsNUnitSuccessException { get; } + bool IsNUnitInconclusiveException { get; } + bool IsNUnitIgnoreException { get; } + string NUnitExceptionMessage { get; } + void AddLog(string message, string stacktrace, LogType type); + bool AnyFailingLogs(); + void ProcessExpectedLogs(); + void NoUnexpectedReceived(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/ILogScope.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/ILogScope.cs.meta new file mode 100644 index 0000000..69e7d55 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/ILogScope.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3504aa04cda851b44a65973f9aead6f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogEvent.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogEvent.cs new file mode 100644 index 0000000..bbc805e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogEvent.cs @@ -0,0 +1,18 @@ +namespace UnityEngine.TestTools.Logging +{ + internal class LogEvent + { + public string Message { get; set; } + + public string StackTrace { get; set; } + + public LogType LogType { get; set; } + + public bool IsHandled { get; set; } + + public override string ToString() + { + return string.Format("[{0}] {1}", LogType, Message); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogEvent.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogEvent.cs.meta new file mode 100644 index 0000000..66c9130 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogEvent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c56471f08a0f6846afc792f0b4205b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogMatch.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogMatch.cs new file mode 100644 index 0000000..9b862d9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogMatch.cs @@ -0,0 +1,103 @@ +using System; +using System.Text.RegularExpressions; + +namespace UnityEngine.TestTools.Logging +{ + [Serializable] + internal class LogMatch + { + [SerializeField] + private bool m_UseRegex; + [SerializeField] + private string m_Message; + [SerializeField] + private string m_MessageRegex; + [SerializeField] + private string m_LogType; + + public string Message + { + get { return m_Message; } + set + { + m_Message = value; + m_UseRegex = false; + } + } + + public Regex MessageRegex + { + get + { + if (!m_UseRegex) + { + return null; + } + + return new Regex(m_MessageRegex); + } + set + { + if (value != null) + { + m_MessageRegex = value.ToString(); + m_UseRegex = true; + } + else + { + m_MessageRegex = null; + m_UseRegex = false; + } + } + } + + public LogType? LogType + { + get + { + if (!string.IsNullOrEmpty(m_LogType)) + { + return Enum.Parse(typeof(LogType), m_LogType) as LogType ? ; + } + + return null; + } + set + { + if (value != null) + { + m_LogType = value.Value.ToString(); + } + else + { + m_LogType = null; + } + } + } + + public bool Matches(LogEvent log) + { + if (LogType != null && LogType != log.LogType) + { + return false; + } + + if (m_UseRegex) + { + return MessageRegex.IsMatch(log.Message); + } + else + { + return Message.Equals(log.Message); + } + } + + public override string ToString() + { + if (m_UseRegex) + return string.Format("[{0}] Regex: {1}", LogType, MessageRegex); + else + return string.Format("[{0}] {1}", LogType, Message); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogMatch.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogMatch.cs.meta new file mode 100644 index 0000000..ffc2bc3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogMatch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9945ffed4692c6044b6d3acf81efd694 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogScope.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogScope.cs new file mode 100644 index 0000000..84957d8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogScope.cs @@ -0,0 +1,223 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEngine.TestTools.Logging +{ + sealed class LogScope : ILogScope + { + static List s_ActiveScopes = new List(); + + readonly object m_Lock = new object(); + bool m_Disposed; + bool m_NeedToProcessLogs; + + public Queue ExpectedLogs { get; set; } + public List AllLogs { get; } + public List FailingLogs { get; } + public bool IgnoreFailingMessages { get; set; } + public bool IsNUnitException { get; private set; } + public bool IsNUnitSuccessException { get; private set; } + public bool IsNUnitInconclusiveException { get; private set; } + public bool IsNUnitIgnoreException { get; private set; } + public string NUnitExceptionMessage { get; private set; } + + public static LogScope Current + { + get + { + if (s_ActiveScopes.Count == 0) + throw new InvalidOperationException("No log scope is available"); + return s_ActiveScopes[0]; + } + } + + public static bool HasCurrentLogScope() + { + return s_ActiveScopes.Count > 0; + } + + public LogScope() + { + AllLogs = new List(); + FailingLogs = new List(); + ExpectedLogs = new Queue(); + IgnoreFailingMessages = false; + Activate(); + } + + void Activate() + { + s_ActiveScopes.Insert(0, this); + RegisterScope(this); + Application.logMessageReceivedThreaded -= AddLog; + Application.logMessageReceivedThreaded += AddLog; + } + + void Deactivate() + { + Application.logMessageReceivedThreaded -= AddLog; + s_ActiveScopes.Remove(this); + UnregisterScope(this); + } + + static void RegisterScope(LogScope logScope) + { + Application.logMessageReceivedThreaded += logScope.AddLog; + } + + static void UnregisterScope(LogScope logScope) + { + Application.logMessageReceivedThreaded -= logScope.AddLog; + } + + public void AddLog(string message, string stacktrace, LogType type) + { + lock (m_Lock) + { + m_NeedToProcessLogs = true; + var log = new LogEvent + { + LogType = type, + Message = message, + StackTrace = stacktrace, + }; + + AllLogs.Add(log); + + if (IsNUnitResultStateException(stacktrace, type)) + { + if (message.StartsWith("SuccessException")) + { + IsNUnitException = true; + IsNUnitSuccessException = true; + if (message.StartsWith("SuccessException: ")) + { + NUnitExceptionMessage = message.Substring("SuccessException: ".Length); + return; + } + } + else if (message.StartsWith("InconclusiveException")) + { + IsNUnitException = true; + IsNUnitInconclusiveException = true; + if (message.StartsWith("InconclusiveException: ")) + { + NUnitExceptionMessage = message.Substring("InconclusiveException: ".Length); + return; + } + } + else if (message.StartsWith("IgnoreException")) + { + IsNUnitException = true; + IsNUnitIgnoreException = true; + if (message.StartsWith("IgnoreException: ")) + { + NUnitExceptionMessage = message.Substring("IgnoreException: ".Length); + return; + } + } + } + + if (IsFailingLog(type) && !IgnoreFailingMessages) + { + FailingLogs.Add(log); + } + } + } + + static bool IsNUnitResultStateException(string stacktrace, LogType logType) + { + if (logType != LogType.Exception) + return false; + + return string.IsNullOrEmpty(stacktrace) || stacktrace.StartsWith("NUnit.Framework.Assert."); + } + + static bool IsFailingLog(LogType type) + { + switch (type) + { + case LogType.Assert: + case LogType.Error: + case LogType.Exception: + return true; + default: + return false; + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + void Dispose(bool disposing) + { + if (m_Disposed) + { + return; + } + + m_Disposed = true; + + if (disposing) + { + Deactivate(); + } + } + + public bool AnyFailingLogs() + { + ProcessExpectedLogs(); + return FailingLogs.Any(); + } + + public void ProcessExpectedLogs() + { + lock (m_Lock) + { + if (!m_NeedToProcessLogs || !ExpectedLogs.Any()) + return; + + LogMatch expectedLog = null; + foreach (var logEvent in AllLogs) + { + if (!ExpectedLogs.Any()) + break; + if (expectedLog == null && ExpectedLogs.Any()) + expectedLog = ExpectedLogs.Peek(); + + if (expectedLog != null && expectedLog.Matches(logEvent)) + { + ExpectedLogs.Dequeue(); + logEvent.IsHandled = true; + if (FailingLogs.Any(expectedLog.Matches)) + { + var failingLog = FailingLogs.First(expectedLog.Matches); + FailingLogs.Remove(failingLog); + } + expectedLog = null; + } + } + m_NeedToProcessLogs = false; + } + } + + public void NoUnexpectedReceived() + { + lock (m_Lock) + { + ProcessExpectedLogs(); + + var unhandledLog = AllLogs.FirstOrDefault(x => !x.IsHandled); + if (unhandledLog != null) + { + throw new UnhandledLogMessageException(unhandledLog); + } + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogScope.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogScope.cs.meta new file mode 100644 index 0000000..ea13dd6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/LogScope/LogScope.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4bbc17b35884fdf468e4b52ae4222882 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnexpectedLogMessageException.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnexpectedLogMessageException.cs new file mode 100644 index 0000000..8ad39f4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnexpectedLogMessageException.cs @@ -0,0 +1,29 @@ +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using UnityEngine.TestTools.Logging; + +namespace UnityEngine.TestTools.TestRunner +{ + internal class UnexpectedLogMessageException : ResultStateException + { + public LogMatch LogEvent; + + public UnexpectedLogMessageException(LogMatch log) + : base(BuildMessage(log)) + { + LogEvent = log; + } + + private static string BuildMessage(LogMatch log) + { + return string.Format("Expected log did not appear: {0}", log); + } + + public override ResultState ResultState + { + get { return ResultState.Failure; } + } + + public override string StackTrace { get { return null; } } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnexpectedLogMessageException.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnexpectedLogMessageException.cs.meta new file mode 100644 index 0000000..7b9e611 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnexpectedLogMessageException.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b2eeca598284bd4abb4a15c30df1576 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnhandledLogMessageException.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnhandledLogMessageException.cs new file mode 100644 index 0000000..9427cc8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnhandledLogMessageException.cs @@ -0,0 +1,35 @@ +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using UnityEngine.TestTools.Logging; +using UnityEngine.TestTools.Utils; + +namespace UnityEngine.TestTools.TestRunner +{ + internal class UnhandledLogMessageException : ResultStateException + { + public LogEvent LogEvent; + private readonly string m_CustomStackTrace; + + public UnhandledLogMessageException(LogEvent log) + : base(BuildMessage(log)) + { + LogEvent = log; + m_CustomStackTrace = StackTraceFilter.Filter(log.StackTrace); + } + + private static string BuildMessage(LogEvent log) + { + return string.Format("Unhandled log message: '{0}'. Use UnityEngine.TestTools.LogAssert.Expect", log); + } + + public override ResultState ResultState + { + get { return ResultState.Failure; } + } + + public override string StackTrace + { + get { return m_CustomStackTrace; } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnhandledLogMessageException.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnhandledLogMessageException.cs.meta new file mode 100644 index 0000000..1019924 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnhandledLogMessageException.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8ed4063f2beecd41a234a582202f3c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnityTestTimeoutException.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnityTestTimeoutException.cs new file mode 100644 index 0000000..6e4243e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnityTestTimeoutException.cs @@ -0,0 +1,28 @@ +using NUnit.Framework; +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestTools.TestRunner +{ + internal class UnityTestTimeoutException : ResultStateException + { + public UnityTestTimeoutException(int timeout) + : base(BuildMessage(timeout)) + { + } + + private static string BuildMessage(int timeout) + { + return string.Format("Timeout value of {0}ms was exceeded", timeout); + } + + public override ResultState ResultState + { + get { return ResultState.Failure; } + } + + public override string StackTrace + { + get { return ""; } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnityTestTimeoutException.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnityTestTimeoutException.cs.meta new file mode 100644 index 0000000..d366ec9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Assertions/UnityTestTimeoutException.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ffb335140c799c4408411d81789fb05c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions.meta new file mode 100644 index 0000000..3023e52 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e8d6af343b383544ba5743d119f4062 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ActionDelegator.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ActionDelegator.cs new file mode 100644 index 0000000..ed8d896 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ActionDelegator.cs @@ -0,0 +1,79 @@ +using System; +using System.Linq; +using UnityEngine.TestRunner.NUnitExtensions.Runner; +using UnityEngine.TestTools.Logging; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEngine.TestTools.NUnitExtensions +{ + /// + /// This class delegates actions from the NUnit thread that should be executed on the main thread. + /// NUnit thread calls Delegate which blocks the execution on the thread until the action is executed. + /// The main thread will poll for awaiting actions (HasAction) and invoke them (Execute). + /// Once the action is executed, the main thread releases the lock and executino on the NUnit thread is continued. + /// + internal class ActionDelegator : BaseDelegator + { + private Func m_Action; + public object Delegate(Action action) + { + return Delegate(() => { action(); return null; }); + } + + public object Delegate(Func action) + { + if (m_Aborted) + { + return null; + } + + AssertState(); + m_Context = UnityTestExecutionContext.CurrentContext; + + m_Signal.Reset(); + m_Action = action; + + WaitForSignal(); + + return HandleResult(); + } + + private void AssertState() + { + if (m_Action != null) + { + throw new Exception("Action not executed yet"); + } + } + + public bool HasAction() + { + return m_Action != null; + } + + public void Execute(LogScope logScope) + { + try + { + SetCurrentTestContext(); + m_Result = m_Action(); + if (logScope.AnyFailingLogs()) + { + var failingLog = logScope.FailingLogs.First(); + throw new UnhandledLogMessageException(failingLog); + } + if (logScope.ExpectedLogs.Any()) + throw new UnexpectedLogMessageException(LogScope.Current.ExpectedLogs.Peek()); + } + catch (Exception e) + { + m_Exception = e; + } + finally + { + m_Action = null; + m_Signal.Set(); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ActionDelegator.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ActionDelegator.cs.meta new file mode 100644 index 0000000..5f4e2d1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ActionDelegator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f939b9e23a0946439b812551e07ac81 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes.meta new file mode 100644 index 0000000..c7cae09 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0cb14878543cf3d4f8472b15f7ecf0e3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/ConditionalIgnoreAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/ConditionalIgnoreAttribute.cs new file mode 100644 index 0000000..a8b4780 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/ConditionalIgnoreAttribute.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestTools +{ + public class ConditionalIgnoreAttribute : NUnitAttribute, IApplyToTest + { + string m_ConditionKey; + string m_IgnoreReason; + + public ConditionalIgnoreAttribute(string conditionKey, string ignoreReason) + { + m_ConditionKey = conditionKey; + m_IgnoreReason = ignoreReason; + } + + public void ApplyToTest(Test test) + { + var key = m_ConditionKey.ToLowerInvariant(); + if (m_ConditionMap.ContainsKey(key) && m_ConditionMap[key]) + { + test.RunState = RunState.Ignored; + string skipReason = string.Format(m_IgnoreReason); + test.Properties.Add(PropertyNames.SkipReason, skipReason); + } + } + + static Dictionary m_ConditionMap = new Dictionary(); + public static void AddConditionalIgnoreMapping(string key, bool value) + { + m_ConditionMap.Add(key.ToLowerInvariant(), value); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/ConditionalIgnoreAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/ConditionalIgnoreAttribute.cs.meta new file mode 100644 index 0000000..d737335 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/ConditionalIgnoreAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c82a8473f4a8f7b42a004c91e06d2f2b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs new file mode 100644 index 0000000..6a4ab16 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestTools +{ + internal class TestEnumerator + { + private readonly ITestExecutionContext m_Context; + private static IEnumerator m_TestEnumerator; + + public static IEnumerator Enumerator { get { return m_TestEnumerator; } } + + public static void Reset() + { + m_TestEnumerator = null; + } + + public TestEnumerator(ITestExecutionContext context, IEnumerator testEnumerator) + { + m_Context = context; + m_TestEnumerator = testEnumerator; + } + + public IEnumerator Execute() + { + m_Context.CurrentResult.SetResult(ResultState.Success); + + while (true) + { + object current = null; + try + { + if (!m_TestEnumerator.MoveNext()) + { + yield break; + } + + if (!m_Context.CurrentResult.ResultState.Equals(ResultState.Success)) + { + yield break; + } + + current = m_TestEnumerator.Current; + } + catch (Exception exception) + { + m_Context.CurrentResult.RecordException(exception); + yield break; + } + yield return current; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs.meta new file mode 100644 index 0000000..6ca4f72 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestEnumerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 750aad009559b814dbc27001341fc1c3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestMustExpectAllLogsAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestMustExpectAllLogsAttribute.cs new file mode 100644 index 0000000..f9232ed --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestMustExpectAllLogsAttribute.cs @@ -0,0 +1,28 @@ +using System; + +namespace UnityEngine.TestTools +{ + /// + /// The presence of this attribute will cause the test runner to require that every single log is expected. By + /// default, the runner will only automatically fail on any error logs, so this adds warnings and infos as well. + /// It is the same as calling `LogAssert.NoUnexpectedReceived()` at the bottom of every affected test. + /// + /// This attribute can be applied to test assemblies (will affect every test in the assembly), fixtures (will + /// affect every test in the fixture), or on individual test methods. It is also automatically inherited from base + /// fixtures. + /// + /// The MustExpect property (on by default) lets you selectively enable or disable the higher level value. For + /// example when migrating an assembly to this more strict checking method, you might attach + /// `[assembly:TestMustExpectAllLogs]` to the assembly itself, but then whitelist failing fixtures and test methods + /// with `[TestMustExpectAllLogs(MustExpect=false)]` until they can be migrated. This also means new tests in that + /// assembly would be required to have the more strict checking. + /// + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] + public class TestMustExpectAllLogsAttribute : Attribute + { + public TestMustExpectAllLogsAttribute(bool mustExpect = true) + => MustExpect = mustExpect; + + public bool MustExpect { get; } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestMustExpectAllLogsAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestMustExpectAllLogsAttribute.cs.meta new file mode 100644 index 0000000..82c5e47 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/TestMustExpectAllLogsAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3803f736886e77842995ddbc3531afaa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityCombinatorialStrategy.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityCombinatorialStrategy.cs new file mode 100644 index 0000000..84f8d84 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityCombinatorialStrategy.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal.Builders; + +namespace UnityEngine.TestTools +{ + internal class UnityCombinatorialStrategy : CombinatorialStrategy, ICombiningStrategy + { + public new IEnumerable GetTestCases(IEnumerable[] sources) + { + var testCases = base.GetTestCases(sources); + foreach (var testCase in testCases) + { + testCase.GetType().GetProperty("ExpectedResult").SetValue(testCase, new object(), null); + } + return testCases; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityCombinatorialStrategy.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityCombinatorialStrategy.cs.meta new file mode 100644 index 0000000..84774ce --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityCombinatorialStrategy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7af6ac3e6b51b8d4aab04adc85b8de2f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityPlatformAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityPlatformAttribute.cs new file mode 100644 index 0000000..ff538ea --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityPlatformAttribute.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestTools +{ + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = false)] + public class UnityPlatformAttribute : NUnitAttribute, IApplyToTest + { + public RuntimePlatform[] include { get; set; } + public RuntimePlatform[] exclude { get; set; } + + private string m_skippedReason; + + public UnityPlatformAttribute() + { + include = new List().ToArray(); + exclude = new List().ToArray(); + } + + public UnityPlatformAttribute(params RuntimePlatform[] include) + : this() + { + this.include = include; + } + + public void ApplyToTest(Test test) + { + if (test.RunState == RunState.NotRunnable || test.RunState == RunState.Ignored || IsPlatformSupported(Application.platform)) + { + return; + } + test.RunState = RunState.Skipped; + test.Properties.Add("_SKIPREASON", m_skippedReason); + } + + internal bool IsPlatformSupported(RuntimePlatform testTargetPlatform) + { + if (include.Any() && !include.Any(x => x == testTargetPlatform)) + { + m_skippedReason = string.Format("Only supported on {0}", string.Join(", ", include.Select(x => x.ToString()).ToArray())); + return false; + } + + if (exclude.Any(x => x == testTargetPlatform)) + { + m_skippedReason = string.Format("Not supported on {0}", string.Join(", ", include.Select(x => x.ToString()).ToArray())); + return false; + } + return true; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityPlatformAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityPlatformAttribute.cs.meta new file mode 100644 index 0000000..003e154 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityPlatformAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5440c1153b397e14c9c7b1d6eb83b9f9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnitySetUpAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnitySetUpAttribute.cs new file mode 100644 index 0000000..f51da12 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnitySetUpAttribute.cs @@ -0,0 +1,10 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.TestTools +{ + [AttributeUsage(AttributeTargets.Method)] + public class UnitySetUpAttribute : NUnitAttribute + { + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnitySetUpAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnitySetUpAttribute.cs.meta new file mode 100644 index 0000000..ccd0d7e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnitySetUpAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc6401f13df54ba44bfd7cdc93c7d64d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTearDownAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTearDownAttribute.cs new file mode 100644 index 0000000..dec605c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTearDownAttribute.cs @@ -0,0 +1,10 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.TestTools +{ + [AttributeUsage(AttributeTargets.Method)] + public class UnityTearDownAttribute : NUnitAttribute + { + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTearDownAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTearDownAttribute.cs.meta new file mode 100644 index 0000000..db19904 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTearDownAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 600f4b74746dbf944901257f81a8af6d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTestAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTestAttribute.cs new file mode 100644 index 0000000..69e2020 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTestAttribute.cs @@ -0,0 +1,33 @@ +using System; +using NUnit.Framework; +using NUnit.Framework.Internal.Commands; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Builders; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools +{ + [AttributeUsage(AttributeTargets.Method)] + public class UnityTestAttribute : CombiningStrategyAttribute, ISimpleTestBuilder, IImplyFixture + { + public UnityTestAttribute() : base(new UnityCombinatorialStrategy(), new ParameterDataSourceProvider()) {} + + private readonly NUnitTestCaseBuilder _builder = new NUnitTestCaseBuilder(); + + TestMethod ISimpleTestBuilder.BuildFrom(IMethodInfo method, Test suite) + { + TestCaseParameters parms = new TestCaseParameters + { + ExpectedResult = new object(), + HasExpectedResult = true + }; + + var t = _builder.BuildTestMethod(method, suite, parms); + + if (t.parms != null) + t.parms.HasExpectedResult = false; + return t; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTestAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTestAttribute.cs.meta new file mode 100644 index 0000000..e2fcb63 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Attributes/UnityTestAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fedb0f9e5006b1943abae52f52f08a1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/BaseDelegator.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/BaseDelegator.cs new file mode 100644 index 0000000..65bcbba --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/BaseDelegator.cs @@ -0,0 +1,58 @@ +using System; +using System.Threading; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestTools.NUnitExtensions +{ + internal abstract class BaseDelegator + { + protected ManualResetEvent m_Signal = new ManualResetEvent(false); + + protected object m_Result; + protected Exception m_Exception; + protected ITestExecutionContext m_Context; + + protected bool m_Aborted; + + protected object HandleResult() + { + SetCurrentTestContext(); + if (m_Exception != null) + { + var temp = m_Exception; + m_Exception = null; + throw temp; + } + var tempResult = m_Result; + m_Result = null; + return tempResult; + } + + protected void WaitForSignal() + { + while (!m_Signal.WaitOne(100)) + { + if (m_Aborted) + { + m_Aborted = false; + Reflect.MethodCallWrapper = null; + throw new Exception(); + } + } + } + + public void Abort() + { + m_Aborted = true; + } + + protected void SetCurrentTestContext() + { + var prop = typeof(TestExecutionContext).GetProperty("CurrentContext"); + if (prop != null) + { + prop.SetValue(null, m_Context, null); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/BaseDelegator.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/BaseDelegator.cs.meta new file mode 100644 index 0000000..613537b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/BaseDelegator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 37cea569bfefafe49a1513c4d7f0e9eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands.meta new file mode 100644 index 0000000..75dd09d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b72875690e0f7343911e06af3145bd5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandBase.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandBase.cs new file mode 100644 index 0000000..f7f78b8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandBase.cs @@ -0,0 +1,234 @@ +using System; +using System.Collections; +using System.Diagnostics; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestRunner.NUnitExtensions; +using UnityEngine.TestRunner.NUnitExtensions.Runner; +using UnityEngine.TestTools.Logging; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEngine.TestTools +{ + internal abstract class BeforeAfterTestCommandBase : DelegatingTestCommand, IEnumerableTestMethodCommand + { + private string m_BeforeErrorPrefix; + private string m_AfterErrorPrefix; + private bool m_SkipYieldAfterActions; + protected BeforeAfterTestCommandBase(TestCommand innerCommand, string beforeErrorPrefix, string afterErrorPrefix, bool skipYieldAfterActions = false) + : base(innerCommand) + { + m_BeforeErrorPrefix = beforeErrorPrefix; + m_AfterErrorPrefix = afterErrorPrefix; + m_SkipYieldAfterActions = skipYieldAfterActions; + } + + internal Func GetUtcNow = () => DateTime.UtcNow.Millisecond; + + protected T[] BeforeActions = new T[0]; + + protected T[] AfterActions = new T[0]; + + protected abstract IEnumerator InvokeBefore(T action, Test test, UnityTestExecutionContext context); + + protected abstract IEnumerator InvokeAfter(T action, Test test, UnityTestExecutionContext context); + + protected abstract BeforeAfterTestCommandState GetState(UnityTestExecutionContext context); + + public IEnumerable ExecuteEnumerable(ITestExecutionContext context) + { + var unityContext = (UnityTestExecutionContext)context; + var state = GetState(unityContext); + + if (state == null) + { + // We do not expect a state to exist in playmode + state = ScriptableObject.CreateInstance(); + } + + state.ApplyTestResult(context.CurrentResult); + + while (state.NextBeforeStepIndex < BeforeActions.Length) + { + state.Timestamp = GetUtcNow(); + var action = BeforeActions[state.NextBeforeStepIndex]; + IEnumerator enumerator; + try + { + enumerator = InvokeBefore(action, Test, unityContext); + } + catch (Exception ex) + { + state.TestHasRun = true; + context.CurrentResult.RecordPrefixedException(m_BeforeErrorPrefix, ex); + break; + } + ActivePcHelper.SetEnumeratorPC(enumerator, state.NextBeforeStepPc); + + using (var logScope = new LogScope()) + { + while (true) + { + try + { + if (!enumerator.MoveNext()) + { + break; + } + } + catch (Exception ex) + { + state.TestHasRun = true; + context.CurrentResult.RecordPrefixedException(m_BeforeErrorPrefix, ex); + state.StoreTestResult(context.CurrentResult); + break; + } + + state.NextBeforeStepPc = ActivePcHelper.GetEnumeratorPC(enumerator); + state.StoreTestResult(context.CurrentResult); + if (m_SkipYieldAfterActions) + { + break; + } + else + { + yield return enumerator.Current; + } + + if (GetUtcNow() - state.Timestamp > unityContext.TestCaseTimeout) + { + context.CurrentResult.RecordPrefixedError(m_BeforeErrorPrefix, new UnityTestTimeoutException(unityContext.TestCaseTimeout).Message); + state.TestHasRun = true; + break; + } + } + + if (logScope.AnyFailingLogs()) + { + state.TestHasRun = true; + context.CurrentResult.RecordPrefixedError(m_BeforeErrorPrefix, new UnhandledLogMessageException(logScope.FailingLogs.First()).Message); + state.StoreTestResult(context.CurrentResult); + } + } + + state.NextBeforeStepIndex++; + state.NextBeforeStepPc = 0; + } + + if (!state.TestHasRun) + { + if (innerCommand is IEnumerableTestMethodCommand) + { + var executeEnumerable = ((IEnumerableTestMethodCommand)innerCommand).ExecuteEnumerable(context); + foreach (var iterator in executeEnumerable) + { + state.StoreTestResult(context.CurrentResult); + yield return iterator; + } + } + else + { + context.CurrentResult = innerCommand.Execute(context); + state.StoreTestResult(context.CurrentResult); + } + + state.TestHasRun = true; + } + + while (state.NextAfterStepIndex < AfterActions.Length) + { + state.Timestamp = GetUtcNow(); + state.TestAfterStarted = true; + var action = AfterActions[state.NextAfterStepIndex]; + IEnumerator enumerator; + try + { + enumerator = InvokeAfter(action, Test, unityContext); + } + catch (Exception ex) + { + context.CurrentResult.RecordPrefixedException(m_AfterErrorPrefix, ex); + state.StoreTestResult(context.CurrentResult); + break; + } + ActivePcHelper.SetEnumeratorPC(enumerator, state.NextAfterStepPc); + + using (var logScope = new LogScope()) + { + while (true) + { + try + { + if (!enumerator.MoveNext()) + { + break; + } + } + catch (Exception ex) + { + context.CurrentResult.RecordPrefixedException(m_AfterErrorPrefix, ex); + state.StoreTestResult(context.CurrentResult); + break; + } + + state.NextAfterStepPc = ActivePcHelper.GetEnumeratorPC(enumerator); + state.StoreTestResult(context.CurrentResult); + + if (GetUtcNow() - state.Timestamp > unityContext.TestCaseTimeout) + { + context.CurrentResult.RecordPrefixedError(m_AfterErrorPrefix, new UnityTestTimeoutException(unityContext.TestCaseTimeout).Message); + yield break; + } + + if (m_SkipYieldAfterActions) + { + break; + } + else + { + yield return enumerator.Current; + } + } + + if (logScope.AnyFailingLogs()) + { + state.TestHasRun = true; + context.CurrentResult.RecordPrefixedError(m_AfterErrorPrefix, new UnhandledLogMessageException(logScope.FailingLogs.First()).Message); + state.StoreTestResult(context.CurrentResult); + } + } + + state.NextAfterStepIndex++; + state.NextAfterStepPc = 0; + } + + state.Reset(); + } + + public override TestResult Execute(ITestExecutionContext context) + { + throw new NotImplementedException("Use ExecuteEnumerable"); + } + + private static TestCommandPcHelper pcHelper; + + internal static TestCommandPcHelper ActivePcHelper + { + get + { + if (pcHelper == null) + { + pcHelper = new TestCommandPcHelper(); + } + + return pcHelper; + } + set + { + pcHelper = value; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandBase.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandBase.cs.meta new file mode 100644 index 0000000..e3e4819 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbbca1d8a0434be4bbc7f165523763ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandState.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandState.cs new file mode 100644 index 0000000..31734ee --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandState.cs @@ -0,0 +1,52 @@ +using System; +using System.Data; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestTools +{ + internal class BeforeAfterTestCommandState : ScriptableObject + { + public int NextBeforeStepIndex; + public int NextBeforeStepPc; + public int NextAfterStepIndex; + public int NextAfterStepPc; + public bool TestHasRun; + public TestStatus CurrentTestResultStatus; + public string CurrentTestResultLabel; + public FailureSite CurrentTestResultSite; + public string CurrentTestMessage; + public string CurrentTestStrackTrace; + public bool TestAfterStarted; + public long Timestamp; + + public void Reset() + { + NextBeforeStepIndex = 0; + NextBeforeStepPc = 0; + NextAfterStepIndex = 0; + NextAfterStepPc = 0; + TestHasRun = false; + CurrentTestResultStatus = TestStatus.Inconclusive; + CurrentTestResultLabel = null; + CurrentTestResultSite = default(FailureSite); + CurrentTestMessage = null; + CurrentTestStrackTrace = null; + TestAfterStarted = false; + } + + public void StoreTestResult(TestResult result) + { + CurrentTestResultStatus = result.ResultState.Status; + CurrentTestResultLabel = result.ResultState.Label; + CurrentTestResultSite = result.ResultState.Site; + CurrentTestMessage = result.Message; + CurrentTestStrackTrace = result.StackTrace; + } + + public void ApplyTestResult(TestResult result) + { + result.SetResult(new ResultState(CurrentTestResultStatus, CurrentTestResultLabel, CurrentTestResultSite), CurrentTestMessage, CurrentTestStrackTrace); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandState.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandState.cs.meta new file mode 100644 index 0000000..da9bd2b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/BeforeAfterTestCommandState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f65567c9026afb4db5de3355accc636 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableApplyChangesToContextCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableApplyChangesToContextCommand.cs new file mode 100644 index 0000000..d452f24 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableApplyChangesToContextCommand.cs @@ -0,0 +1,34 @@ + +using System.Collections; +using System.Collections.Generic; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools +{ + internal class EnumerableApplyChangesToContextCommand : ApplyChangesToContextCommand, IEnumerableTestMethodCommand + { + public EnumerableApplyChangesToContextCommand(TestCommand innerCommand, IEnumerable changes) + : base(innerCommand, changes) { } + + public IEnumerable ExecuteEnumerable(ITestExecutionContext context) + { + ApplyChanges(context); + + if (innerCommand is IEnumerableTestMethodCommand) + { + var executeEnumerable = ((IEnumerableTestMethodCommand)innerCommand).ExecuteEnumerable(context); + foreach (var iterator in executeEnumerable) + { + yield return iterator; + } + } + else + { + context.CurrentResult = innerCommand.Execute(context); + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableApplyChangesToContextCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableApplyChangesToContextCommand.cs.meta new file mode 100644 index 0000000..6a955ca --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableApplyChangesToContextCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b4429eff9fcffb48b006e8edcc90338 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRepeatedTestCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRepeatedTestCommand.cs new file mode 100644 index 0000000..1bdac69 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRepeatedTestCommand.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections; +using System.Reflection; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools +{ + internal class EnumerableRepeatedTestCommand : DelegatingTestCommand, IEnumerableTestMethodCommand + { + private int repeatCount; + + public EnumerableRepeatedTestCommand(RepeatAttribute.RepeatedTestCommand commandToReplace) : base(commandToReplace.GetInnerCommand()) + { + repeatCount = (int) typeof(RepeatAttribute.RepeatedTestCommand) + .GetField("repeatCount", BindingFlags.NonPublic | BindingFlags.Instance) + .GetValue(commandToReplace); + } + + public override TestResult Execute(ITestExecutionContext context) + { + throw new NotImplementedException("Use ExecuteEnumerable"); + } + + public IEnumerable ExecuteEnumerable(ITestExecutionContext context) + { + var unityContext = (UnityTestExecutionContext)context; + int count = unityContext.EnumerableRepeatedTestState; + + while (count < repeatCount) + { + count++; + unityContext.EnumerableRepeatedTestState = count; + + if (innerCommand is IEnumerableTestMethodCommand) + { + var executeEnumerable = ((IEnumerableTestMethodCommand)innerCommand).ExecuteEnumerable(context); + foreach (var iterator in executeEnumerable) + { + yield return iterator; + } + } + else + { + context.CurrentResult = innerCommand.Execute(context); + } + + if (context.CurrentResult.ResultState != ResultState.Success) + { + break; + } + } + + unityContext.EnumerableRepeatedTestState = 0; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRepeatedTestCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRepeatedTestCommand.cs.meta new file mode 100644 index 0000000..a738fba --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRepeatedTestCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e273462feb9a65948826739f683cc9a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRetryTestCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRetryTestCommand.cs new file mode 100644 index 0000000..ee82c29 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRetryTestCommand.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections; +using System.Reflection; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools +{ + internal class EnumerableRetryTestCommand : DelegatingTestCommand, IEnumerableTestMethodCommand + { + private int retryCount; + + public EnumerableRetryTestCommand(RetryAttribute.RetryCommand commandToReplace) : base(commandToReplace.GetInnerCommand()) + { + retryCount = (int) typeof(RetryAttribute.RetryCommand) + .GetField("_retryCount", BindingFlags.NonPublic | BindingFlags.Instance) + .GetValue(commandToReplace); + } + + public override TestResult Execute(ITestExecutionContext context) + { + throw new NotImplementedException("Use ExecuteEnumerable"); + } + + public IEnumerable ExecuteEnumerable(ITestExecutionContext context) + { + var unityContext = (UnityTestExecutionContext)context; + int count = unityContext.EnumerableRetryTestState; + + while (count < retryCount) + { + count++; + unityContext.EnumerableRetryTestState = count; + + if (innerCommand is IEnumerableTestMethodCommand) + { + var executeEnumerable = ((IEnumerableTestMethodCommand)innerCommand).ExecuteEnumerable(context); + foreach (var iterator in executeEnumerable) + { + yield return iterator; + } + } + else + { + context.CurrentResult = innerCommand.Execute(context); + } + + if (context.CurrentResult.ResultState != ResultState.Failure) + { + break; + } + } + + unityContext.EnumerableRetryTestState = 0; + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRetryTestCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRetryTestCommand.cs.meta new file mode 100644 index 0000000..56f4e14 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableRetryTestCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6de2f178a24cd2e48a0816cacd9a0583 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableSetUpTearDownCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableSetUpTearDownCommand.cs new file mode 100644 index 0000000..e5bf7b8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableSetUpTearDownCommand.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections; +using System.Linq; +using System.Reflection; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools +{ + internal class EnumerableSetUpTearDownCommand : BeforeAfterTestCommandBase + { + public EnumerableSetUpTearDownCommand(TestCommand innerCommand) + : base(innerCommand, "SetUp", "TearDown") + { + if (Test.TypeInfo.Type != null) + { + BeforeActions = GetMethodsWithAttributeFromFixture(Test.TypeInfo.Type, typeof(UnitySetUpAttribute)); + AfterActions = GetMethodsWithAttributeFromFixture(Test.TypeInfo.Type, typeof(UnityTearDownAttribute)).Reverse().ToArray(); + } + } + + private static MethodInfo[] GetMethodsWithAttributeFromFixture(Type fixtureType, Type setUpType) + { + MethodInfo[] methodsWithAttribute = Reflect.GetMethodsWithAttribute(fixtureType, setUpType, true); + return methodsWithAttribute.Where(x => x.ReturnType == typeof(IEnumerator)).ToArray(); + } + + protected override IEnumerator InvokeBefore(MethodInfo action, Test test, UnityTestExecutionContext context) + { + return (IEnumerator)Reflect.InvokeMethod(action, context.TestObject); + } + + protected override IEnumerator InvokeAfter(MethodInfo action, Test test, UnityTestExecutionContext context) + { + return (IEnumerator)Reflect.InvokeMethod(action, context.TestObject); + } + + protected override BeforeAfterTestCommandState GetState(UnityTestExecutionContext context) + { + return context.SetUpTearDownState; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableSetUpTearDownCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableSetUpTearDownCommand.cs.meta new file mode 100644 index 0000000..e61d049 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableSetUpTearDownCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dd85a35169d313840a0874aea1a28629 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableTestMethodCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableTestMethodCommand.cs new file mode 100644 index 0000000..ff3017e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableTestMethodCommand.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using NUnit.Framework.Internal.Execution; +using UnityEngine.TestRunner.NUnitExtensions.Runner; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEngine.TestTools +{ + internal class EnumerableTestMethodCommand : TestCommand, IEnumerableTestMethodCommand + { + private readonly TestMethod testMethod; + + public EnumerableTestMethodCommand(TestMethod testMethod) + : base(testMethod) + { + this.testMethod = testMethod; + } + + public IEnumerable ExecuteEnumerable(ITestExecutionContext context) + { + yield return null; + + IEnumerator currentExecutingTestEnumerator; + try + { + currentExecutingTestEnumerator = new TestEnumeratorWrapper(testMethod).GetEnumerator(context); + } + catch (Exception ex) + { + context.CurrentResult.RecordException(ex); + yield break; + } + + if (currentExecutingTestEnumerator != null) + { + var testEnumeraterYieldInstruction = new TestEnumerator(context, currentExecutingTestEnumerator); + + yield return testEnumeraterYieldInstruction; + + var enumerator = testEnumeraterYieldInstruction.Execute(); + + var executingEnumerator = ExecuteEnumerableAndRecordExceptions(enumerator, context); + while (executingEnumerator.MoveNext()) + { + yield return executingEnumerator.Current; + } + } + else + { + if (context.CurrentResult.ResultState != ResultState.Ignored) + { + context.CurrentResult.SetResult(ResultState.Success); + } + } + } + + private static IEnumerator ExecuteEnumerableAndRecordExceptions(IEnumerator enumerator, ITestExecutionContext context) + { + while (true) + { + try + { + if (!enumerator.MoveNext()) + { + break; + } + } + catch (Exception ex) + { + context.CurrentResult.RecordException(ex); + break; + } + + if (enumerator.Current is IEnumerator) + { + var current = (IEnumerator)enumerator.Current; + yield return ExecuteEnumerableAndRecordExceptions(current, context); + } + else + { + yield return enumerator.Current; + } + } + } + + public override TestResult Execute(ITestExecutionContext context) + { + throw new NotImplementedException("Use ExecuteEnumerable"); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableTestMethodCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableTestMethodCommand.cs.meta new file mode 100644 index 0000000..4631e40 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/EnumerableTestMethodCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 19a6f000f81e24c4a826c1abd43e77c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/ImmediateEnumerableCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/ImmediateEnumerableCommand.cs new file mode 100644 index 0000000..ae1b7b7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/ImmediateEnumerableCommand.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools +{ + internal class ImmediateEnumerableCommand : DelegatingTestCommand + { + public ImmediateEnumerableCommand(TestCommand innerCommand) + : base(innerCommand) { } + + public override TestResult Execute(ITestExecutionContext context) + { + if (innerCommand is IEnumerableTestMethodCommand) + { + var executeEnumerable = ((IEnumerableTestMethodCommand)innerCommand).ExecuteEnumerable(context); + foreach (var iterator in executeEnumerable) + { + if (iterator != null) + { + throw new Exception("Only null can be yielded at this point."); + } + } + return context.CurrentResult; + } + + return innerCommand.Execute(context); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/ImmediateEnumerableCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/ImmediateEnumerableCommand.cs.meta new file mode 100644 index 0000000..e650b54 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/ImmediateEnumerableCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8349e42a2b30c7a4abd8678c203428ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/OuterUnityTestActionCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/OuterUnityTestActionCommand.cs new file mode 100644 index 0000000..a0646f1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/OuterUnityTestActionCommand.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools +{ + internal class OuterUnityTestActionCommand : BeforeAfterTestCommandBase + { + public OuterUnityTestActionCommand(TestCommand innerCommand) + : base(innerCommand, "BeforeTest", "AfterTest") + { + if (Test.TypeInfo.Type != null) + { + BeforeActions = GetUnityTestActionsFromMethod(Test.Method.MethodInfo); + AfterActions = BeforeActions; + } + } + + private static IOuterUnityTestAction[] GetUnityTestActionsFromMethod(MethodInfo method) + { + var attributes = method.GetCustomAttributes(false); + List actions = new List(); + foreach (var attribute in attributes) + { + if (attribute is IOuterUnityTestAction) + actions.Add(attribute as IOuterUnityTestAction); + } + return actions.ToArray(); + } + + protected override IEnumerator InvokeBefore(IOuterUnityTestAction action, Test test, UnityTestExecutionContext context) + { + return action.BeforeTest(test); + } + + protected override IEnumerator InvokeAfter(IOuterUnityTestAction action, Test test, UnityTestExecutionContext context) + { + return action.AfterTest(test); + } + + protected override BeforeAfterTestCommandState GetState(UnityTestExecutionContext context) + { + return context.OuterUnityTestActionState; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/OuterUnityTestActionCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/OuterUnityTestActionCommand.cs.meta new file mode 100644 index 0000000..6415872 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/OuterUnityTestActionCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d4fc309a0784294c8ab658b53b12320 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/SetUpTearDownCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/SetUpTearDownCommand.cs new file mode 100644 index 0000000..c6ff0d9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/SetUpTearDownCommand.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections; +using System.Linq; +using System.Reflection; +using NUnit.Framework; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using NUnit.Framework.Internal.Execution; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools +{ + internal class SetUpTearDownCommand : BeforeAfterTestCommandBase + { + public SetUpTearDownCommand(TestCommand innerCommand) + : base(innerCommand, "SetUp", "TearDown", true) + { + if (Test.TypeInfo.Type != null) + { + BeforeActions = GetMethodsWithAttributeFromFixture(Test.TypeInfo.Type, typeof(SetUpAttribute)); + AfterActions = GetMethodsWithAttributeFromFixture(Test.TypeInfo.Type, typeof(TearDownAttribute)).Reverse().ToArray(); + } + } + + private static MethodInfo[] GetMethodsWithAttributeFromFixture(Type fixtureType, Type setUpType) + { + MethodInfo[] methodsWithAttribute = Reflect.GetMethodsWithAttribute(fixtureType, setUpType, true); + return methodsWithAttribute.Where(x => x.ReturnType == typeof(void)).ToArray(); + } + + protected override IEnumerator InvokeBefore(MethodInfo action, Test test, UnityTestExecutionContext context) + { + Reflect.InvokeMethod(action, context.TestObject); + yield return null; + } + + protected override IEnumerator InvokeAfter(MethodInfo action, Test test, UnityTestExecutionContext context) + { + Reflect.InvokeMethod(action, context.TestObject); + yield return null; + } + + protected override BeforeAfterTestCommandState GetState(UnityTestExecutionContext context) + { + return null; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/SetUpTearDownCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/SetUpTearDownCommand.cs.meta new file mode 100644 index 0000000..28b84ac --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/SetUpTearDownCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e0db3f3921670cd4ca2e925737c3fba4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestActionCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestActionCommand.cs new file mode 100644 index 0000000..9b99dd0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestActionCommand.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using NUnit.Framework; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools +{ + internal class TestActionCommand : BeforeAfterTestCommandBase + { + public TestActionCommand(TestCommand innerCommand) + : base(innerCommand, "BeforeTest", "AfterTest", true) + { + if (Test.TypeInfo.Type != null) + { + BeforeActions = GetTestActionsFromMethod(Test.Method.MethodInfo); + AfterActions = BeforeActions; + } + } + + private static ITestAction[] GetTestActionsFromMethod(MethodInfo method) + { + var attributes = method.GetCustomAttributes(false); + List actions = new List(); + foreach (var attribute in attributes) + { + if (attribute is ITestAction) + actions.Add(attribute as ITestAction); + } + return actions.ToArray(); + } + + protected override IEnumerator InvokeBefore(ITestAction action, Test test, UnityTestExecutionContext context) + { + action.BeforeTest(test); + yield return null; + } + + protected override IEnumerator InvokeAfter(ITestAction action, Test test, UnityTestExecutionContext context) + { + action.AfterTest(test); + yield return null; + } + + protected override BeforeAfterTestCommandState GetState(UnityTestExecutionContext context) + { + return null; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestActionCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestActionCommand.cs.meta new file mode 100644 index 0000000..3f44e9d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestActionCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2de8ba3b840049641897e0da7ce1d5cd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestCommandPcHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestCommandPcHelper.cs new file mode 100644 index 0000000..26eb4b0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestCommandPcHelper.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections; + +namespace UnityEngine.TestTools +{ + internal class TestCommandPcHelper + { + public virtual void SetEnumeratorPC(IEnumerator enumerator, int pc) + { + // Noop implementation used in playmode. + } + + public virtual int GetEnumeratorPC(IEnumerator enumerator) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestCommandPcHelper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestCommandPcHelper.cs.meta new file mode 100644 index 0000000..1dbd4f4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Commands/TestCommandPcHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33e6b78c96bb0694e96383e3c56b7b54 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ConstructDelegator.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ConstructDelegator.cs new file mode 100644 index 0000000..dd7fbc2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ConstructDelegator.cs @@ -0,0 +1,141 @@ +using System; +using System.Linq; +using NUnit.Framework.Internal; +using UnityEngine.TestRunner.NUnitExtensions.Runner; +using UnityEngine.TestTools.Logging; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEngine.TestTools.NUnitExtensions +{ + /// + /// Specialization of BaseDelegator that makes sure objects are created on the MainThread. + /// It also deals with ScriptableObjects so that tests can survive assembly reload. + /// + internal class ConstructDelegator + { + private Type m_RequestedType; + private object[] m_Arguments; + + private ScriptableObject m_CurrentRunningTest; + private readonly IStateSerializer m_StateSerializer; + + protected Exception m_Exception; + protected object m_Result; + protected ITestExecutionContext m_Context; + + public ConstructDelegator(IStateSerializer stateSerializer) + { + m_StateSerializer = stateSerializer; + } + + protected object HandleResult() + { + SetCurrentTestContext(); + if (m_Exception != null) + { + var temp = m_Exception; + m_Exception = null; + throw temp; + } + var tempResult = m_Result; + m_Result = null; + return tempResult; + } + + protected void SetCurrentTestContext() + { + var prop = typeof(UnityTestExecutionContext).GetProperty("CurrentContext"); + if (prop != null) + { + prop.SetValue(null, m_Context, null); + } + } + + public object Delegate(Type type, object[] arguments) + { + AssertState(); + m_Context = UnityTestExecutionContext.CurrentContext; + + m_RequestedType = type; + m_Arguments = arguments; + + using (var logScope = new LogScope()) + { + Execute(logScope); + } + + return HandleResult(); + } + + private void AssertState() + { + if (m_RequestedType != null) + { + throw new Exception("Constructor not executed yet"); + } + } + + public bool HasAction() + { + return m_RequestedType != null; + } + + public void Execute(LogScope logScope) + { + try + { + if (typeof(ScriptableObject).IsAssignableFrom(m_RequestedType)) + { + if (m_CurrentRunningTest != null && m_RequestedType != m_CurrentRunningTest.GetType()) + { + DestroyCurrentTestObjectIfExists(); + } + if (m_CurrentRunningTest == null) + { + if (m_StateSerializer.CanRestoreFromScriptableObject(m_RequestedType)) + { + m_CurrentRunningTest = m_StateSerializer.RestoreScriptableObjectInstance(); + } + else + { + m_CurrentRunningTest = ScriptableObject.CreateInstance(m_RequestedType); + } + } + m_Result = m_CurrentRunningTest; + } + else + { + DestroyCurrentTestObjectIfExists(); + m_Result = Activator.CreateInstance(m_RequestedType, m_Arguments); + if (m_StateSerializer.CanRestoreFromJson(m_RequestedType)) + { + m_StateSerializer.RestoreClassFromJson(ref m_Result); + } + } + if (logScope.AnyFailingLogs()) + { + var failingLog = logScope.FailingLogs.First(); + throw new UnhandledLogMessageException(failingLog); + } + if (logScope.ExpectedLogs.Any()) + throw new UnexpectedLogMessageException(LogScope.Current.ExpectedLogs.Peek()); + } + catch (Exception e) + { + m_Exception = e; + } + finally + { + m_RequestedType = null; + m_Arguments = null; + } + } + + public void DestroyCurrentTestObjectIfExists() + { + if (m_CurrentRunningTest == null) + return; + Object.DestroyImmediate(m_CurrentRunningTest); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ConstructDelegator.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ConstructDelegator.cs.meta new file mode 100644 index 0000000..cb04fc8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/ConstructDelegator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b42e1db66fe9c634798674cb9e1df2ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters.meta new file mode 100644 index 0000000..a0aa994 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3de99f9efc582a48995bc8e8c2df418 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/AssemblyNameFilter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/AssemblyNameFilter.cs new file mode 100644 index 0000000..d53a2d0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/AssemblyNameFilter.cs @@ -0,0 +1,25 @@ +using System; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal.Filters; + +namespace UnityEngine.TestRunner.NUnitExtensions.Filters +{ + internal class AssemblyNameFilter : ValueMatchFilter + { + public AssemblyNameFilter(string assemblyName) : base(assemblyName) {} + + public override bool Match(ITest test) + { + string assemblyName = string.Empty; + //Assembly fullname is in the format "Assembly-name, meta data ...", so extract the name by looking for the comma + if (test.TypeInfo != null && test.TypeInfo.Assembly != null && test.TypeInfo.FullName != null) + assemblyName = test.TypeInfo.Assembly.FullName.Substring(0, test.TypeInfo.Assembly.FullName.IndexOf(',')).TrimEnd(','); + return ExpectedValue.Equals(assemblyName, StringComparison.OrdinalIgnoreCase); + } + + protected override string ElementName + { + get { return "id"; } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/AssemblyNameFilter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/AssemblyNameFilter.cs.meta new file mode 100644 index 0000000..2b89745 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/AssemblyNameFilter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91319408591cec1478efd3c62f9f418a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/CategoryFilterExtended.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/CategoryFilterExtended.cs new file mode 100644 index 0000000..58430e8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/CategoryFilterExtended.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Filters; + +namespace UnityEngine.TestRunner.NUnitExtensions.Filters +{ + internal class CategoryFilterExtended : CategoryFilter + { + public static string k_DefaultCategory = "Uncategorized"; + + public CategoryFilterExtended(string name) : base(name) + { + } + + public override bool Match(ITest test) + { + IList testCategories = test.Properties[PropertyNames.Category].Cast().ToList(); + + if (test is TestMethod) + { + // Do not count tests with no attribute as Uncategorized if test fixture class has at least one attribute + // The test inherits the attribute from the test fixture + IList fixtureCategories = test.Parent.Properties[PropertyNames.Category].Cast().ToList(); + if (fixtureCategories.Count > 0) + return false; + } + + if (testCategories.Count == 0 && ExpectedValue == k_DefaultCategory && test is TestMethod) + return true; + + return base.Match(test); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/CategoryFilterExtended.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/CategoryFilterExtended.cs.meta new file mode 100644 index 0000000..a115cd2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Filters/CategoryFilterExtended.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ebeedaa04bb53e24ba2e7fb6745e3fd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IAsyncTestAssemblyBuilder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IAsyncTestAssemblyBuilder.cs new file mode 100644 index 0000000..6bc1593 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IAsyncTestAssemblyBuilder.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using System.Reflection; +using NUnit.Framework.Api; +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestTools.NUnitExtensions +{ + internal interface IAsyncTestAssemblyBuilder : ITestAssemblyBuilder + { + IEnumerator BuildAsync(Assembly[] assemblies, TestPlatform[] testPlatforms, IDictionary options); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IAsyncTestAssemblyBuilder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IAsyncTestAssemblyBuilder.cs.meta new file mode 100644 index 0000000..64283a3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IAsyncTestAssemblyBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3aa5c3d59b94854e843f10b75b3ad63 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IStateSerializer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IStateSerializer.cs new file mode 100644 index 0000000..951d079 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IStateSerializer.cs @@ -0,0 +1,12 @@ +using System; + +namespace UnityEngine.TestTools.NUnitExtensions +{ + internal interface IStateSerializer + { + ScriptableObject RestoreScriptableObjectInstance(); + void RestoreClassFromJson(ref object instance); + bool CanRestoreFromJson(Type requestedType); + bool CanRestoreFromScriptableObject(Type requestedType); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IStateSerializer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IStateSerializer.cs.meta new file mode 100644 index 0000000..1d32715 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/IStateSerializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f875a14565308a40a5262d2504da705 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner.meta new file mode 100644 index 0000000..1604cb5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 37888acc09d9ee848bf9559f06645c45 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CompositeWorkItem.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CompositeWorkItem.cs new file mode 100644 index 0000000..260e3cf --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CompositeWorkItem.cs @@ -0,0 +1,342 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using NUnit.Framework.Internal.Execution; +using UnityEngine.TestTools.Logging; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal class CompositeWorkItem : UnityWorkItem + { + private readonly TestSuite _suite; + private readonly TestSuiteResult _suiteResult; + private readonly ITestFilter _childFilter; + private TestCommand _setupCommand; + private TestCommand _teardownCommand; + + public List Children { get; private set; } + + private int _countOrder; + + private CountdownEvent _childTestCountdown; + + public CompositeWorkItem(TestSuite suite, ITestFilter childFilter, WorkItemFactory factory) + : base(suite, factory) + { + _suite = suite; + _suiteResult = Result as TestSuiteResult; + _childFilter = childFilter; + _countOrder = 0; + } + + protected override IEnumerable PerformWork() + { + InitializeSetUpAndTearDownCommands(); + + if (UnityTestExecutionContext.CurrentContext != null && m_DontRunRestoringResult && EditModeTestCallbacks.RestoringTestContext != null) + { + EditModeTestCallbacks.RestoringTestContext(); + } + + if (!CheckForCancellation()) + if (Test.RunState == RunState.Explicit && !_childFilter.IsExplicitMatch(Test)) + SkipFixture(ResultState.Explicit, GetSkipReason(), null); + else + switch (Test.RunState) + { + default: + case RunState.Runnable: + case RunState.Explicit: + Result.SetResult(ResultState.Success); + + CreateChildWorkItems(); + + if (Children.Count > 0) + { + if (!m_DontRunRestoringResult) + { + //This is needed to give the editor a chance to go out of playmode if needed before creating objects. + //If we do not, the objects could be automatically destroyed when exiting playmode and could result in errors later on + yield return null; + PerformOneTimeSetUp(); + } + + if (!CheckForCancellation()) + { + switch (Result.ResultState.Status) + { + case TestStatus.Passed: + foreach (var child in RunChildren()) + { + if (CheckForCancellation()) + { + yield break; + } + + yield return child; + } + break; + case TestStatus.Skipped: + case TestStatus.Inconclusive: + case TestStatus.Failed: + SkipChildren(_suite, Result.ResultState.WithSite(FailureSite.Parent), "OneTimeSetUp: " + Result.Message); + break; + } + } + + if (Context.ExecutionStatus != TestExecutionStatus.AbortRequested && !m_DontRunRestoringResult) + { + PerformOneTimeTearDown(); + } + } + break; + + case RunState.Skipped: + SkipFixture(ResultState.Skipped, GetSkipReason(), null); + break; + + case RunState.Ignored: + SkipFixture(ResultState.Ignored, GetSkipReason(), null); + break; + + case RunState.NotRunnable: + SkipFixture(ResultState.NotRunnable, GetSkipReason(), GetProviderStackTrace()); + break; + } + if (!ResultedInDomainReload) + { + WorkItemComplete(); + } + } + + private bool CheckForCancellation() + { + if (Context.ExecutionStatus != TestExecutionStatus.Running) + { + Result.SetResult(ResultState.Cancelled, "Test cancelled by user"); + return true; + } + + return false; + } + + private void InitializeSetUpAndTearDownCommands() + { + List setUpTearDownItems = _suite.TypeInfo != null + ? CommandBuilder.BuildSetUpTearDownList(_suite.TypeInfo.Type, typeof(OneTimeSetUpAttribute), typeof(OneTimeTearDownAttribute)) + : new List(); + + var actionItems = new List(); + foreach (ITestAction action in Actions) + { + bool applyToSuite = (action.Targets & ActionTargets.Suite) == ActionTargets.Suite + || action.Targets == ActionTargets.Default && !(Test is ParameterizedMethodSuite); + + bool applyToTest = (action.Targets & ActionTargets.Test) == ActionTargets.Test + && !(Test is ParameterizedMethodSuite); + + if (applyToSuite) + actionItems.Add(new TestActionItem(action)); + + if (applyToTest) + Context.UpstreamActions.Add(action); + } + + _setupCommand = CommandBuilder.MakeOneTimeSetUpCommand(_suite, setUpTearDownItems, actionItems); + _teardownCommand = CommandBuilder.MakeOneTimeTearDownCommand(_suite, setUpTearDownItems, actionItems); + } + + private void PerformOneTimeSetUp() + { + var logScope = new LogScope(); + try + { + _setupCommand.Execute(Context); + } + catch (Exception ex) + { + if (ex is NUnitException || ex is TargetInvocationException) + ex = ex.InnerException; + + Result.RecordException(ex, FailureSite.SetUp); + } + + if (logScope.AnyFailingLogs()) + { + Result.RecordException(new UnhandledLogMessageException(logScope.FailingLogs.First())); + } + logScope.Dispose(); + } + + private IEnumerable RunChildren() + { + int childCount = Children.Count; + if (childCount == 0) + throw new InvalidOperationException("RunChildren called but item has no children"); + + _childTestCountdown = new CountdownEvent(childCount); + + foreach (UnityWorkItem child in Children) + { + if (CheckForCancellation()) + { + yield break; + } + + var unityTestExecutionContext = new UnityTestExecutionContext(Context); + child.InitializeContext(unityTestExecutionContext); + + var enumerable = child.Execute().GetEnumerator(); + + while (true) + { + if (!enumerable.MoveNext()) + { + break; + } + ResultedInDomainReload |= child.ResultedInDomainReload; + yield return enumerable.Current; + } + + _suiteResult.AddResult(child.Result); + childCount--; + } + + if (childCount > 0) + { + while (childCount-- > 0) + CountDownChildTest(); + } + } + + private void CreateChildWorkItems() + { + Children = new List(); + var testSuite = _suite; + + foreach (ITest test in testSuite.Tests) + { + if (_childFilter.Pass(test)) + { + var child = m_Factory.Create(test, _childFilter); + + if (test.Properties.ContainsKey(PropertyNames.Order)) + { + Children.Insert(0, child); + _countOrder++; + } + else + { + Children.Add(child); + } + } + } + + if (_countOrder != 0) SortChildren(); + } + + private class UnityWorkItemOrderComparer : IComparer + { + public int Compare(UnityWorkItem x, UnityWorkItem y) + { + var xKey = int.MaxValue; + var yKey = int.MaxValue; + + if (x.Test.Properties.ContainsKey(PropertyNames.Order)) + xKey = (int)x.Test.Properties[PropertyNames.Order][0]; + + if (y.Test.Properties.ContainsKey(PropertyNames.Order)) + yKey = (int)y.Test.Properties[PropertyNames.Order][0]; + + return xKey.CompareTo(yKey); + } + } + + private void SortChildren() + { + Children.Sort(0, _countOrder, new UnityWorkItemOrderComparer()); + } + + private void SkipFixture(ResultState resultState, string message, string stackTrace) + { + Result.SetResult(resultState.WithSite(FailureSite.SetUp), message, StackFilter.Filter(stackTrace)); + SkipChildren(_suite, resultState.WithSite(FailureSite.Parent), "OneTimeSetUp: " + message); + } + + private void SkipChildren(TestSuite suite, ResultState resultState, string message) + { + foreach (Test child in suite.Tests) + { + if (_childFilter.Pass(child)) + { + Context.Listener.TestStarted(child); + TestResult childResult = child.MakeTestResult(); + childResult.SetResult(resultState, message); + _suiteResult.AddResult(childResult); + + if (child.IsSuite) + SkipChildren((TestSuite)child, resultState, message); + + Context.Listener.TestFinished(childResult); + } + } + } + + private void PerformOneTimeTearDown() + { + _teardownCommand.Execute(Context); + } + + private string GetSkipReason() + { + return (string)Test.Properties.Get(PropertyNames.SkipReason); + } + + private string GetProviderStackTrace() + { + return (string)Test.Properties.Get(PropertyNames.ProviderStackTrace); + } + + private void CountDownChildTest() + { + _childTestCountdown.Signal(); + if (_childTestCountdown.CurrentCount == 0) + { + if (Context.ExecutionStatus != TestExecutionStatus.AbortRequested) + PerformOneTimeTearDown(); + + foreach (var childResult in _suiteResult.Children) + if (childResult.ResultState == ResultState.Cancelled) + { + this.Result.SetResult(ResultState.Cancelled, "Cancelled by user"); + break; + } + + WorkItemComplete(); + } + } + + public override void Cancel(bool force) + { + if (Children == null) + return; + + foreach (var child in Children) + { + var ctx = child.Context; + if (ctx != null) + ctx.ExecutionStatus = force ? TestExecutionStatus.AbortRequested : TestExecutionStatus.StopRequested; + + if (child.State == WorkItemState.Running) + child.Cancel(force); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CompositeWorkItem.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CompositeWorkItem.cs.meta new file mode 100644 index 0000000..355dd71 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CompositeWorkItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 110d5035a36a6a34580fb65bb40cd78f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CoroutineTestWorkItem.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CoroutineTestWorkItem.cs new file mode 100644 index 0000000..666a8dd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CoroutineTestWorkItem.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using NUnit.Framework.Internal.Execution; +using UnityEngine.TestTools.Utils; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal class CoroutineTestWorkItem : UnityWorkItem + { + private static MonoBehaviour m_MonoBehaviourCoroutineRunner; + private TestCommand m_Command; + + public static MonoBehaviour monoBehaviourCoroutineRunner + { + get + { + if (m_MonoBehaviourCoroutineRunner == null) + { + throw new NullReferenceException("MonoBehaviour coroutine runner not set"); + } + return m_MonoBehaviourCoroutineRunner; + } + set { m_MonoBehaviourCoroutineRunner = value; } + } + + public CoroutineTestWorkItem(TestMethod test, ITestFilter filter) + : base(test, null) + { + m_Command = m_Command = TestCommandBuilder.BuildTestCommand(test, filter); + } + + protected override IEnumerable PerformWork() + { + if (m_Command is SkipCommand) + { + m_Command.Execute(Context); + Result = Context.CurrentResult; + WorkItemComplete(); + yield break; + } + + if (m_Command is ApplyChangesToContextCommand) + { + var applyChangesToContextCommand = (ApplyChangesToContextCommand)m_Command; + applyChangesToContextCommand.ApplyChanges(Context); + m_Command = applyChangesToContextCommand.GetInnerCommand(); + } + + var enumerableTestMethodCommand = (IEnumerableTestMethodCommand)m_Command; + try + { + var executeEnumerable = enumerableTestMethodCommand.ExecuteEnumerable(Context).GetEnumerator(); + + var coroutineRunner = new CoroutineRunner(monoBehaviourCoroutineRunner, Context); + yield return coroutineRunner.HandleEnumerableTest(executeEnumerable); + + if (coroutineRunner.HasFailedWithTimeout()) + { + Context.CurrentResult.SetResult(ResultState.Failure, string.Format("Test exceeded Timeout value of {0}ms", Context.TestCaseTimeout)); + } + + while (executeEnumerable.MoveNext()) {} + + Result = Context.CurrentResult; + } + finally + { + WorkItemComplete(); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CoroutineTestWorkItem.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CoroutineTestWorkItem.cs.meta new file mode 100644 index 0000000..f5eb998 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/CoroutineTestWorkItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b557515fff172984e8c4400b43f1c631 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/DefaultTestWorkItem.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/DefaultTestWorkItem.cs new file mode 100644 index 0000000..6690ecc --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/DefaultTestWorkItem.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using NUnit.Framework.Internal.Execution; +using UnityEngine.TestTools; +using SetUpTearDownCommand = NUnit.Framework.Internal.Commands.SetUpTearDownCommand; +using TestActionCommand = NUnit.Framework.Internal.Commands.TestActionCommand; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal class EditModeTestCallbacks + { + public static Action RestoringTestContext { get; set; } + } + + internal class DefaultTestWorkItem : UnityWorkItem + { + private TestCommand _command; + public DefaultTestWorkItem(TestMethod test, ITestFilter filter) + : base(test, null) + { + _command = TestCommandBuilder.BuildTestCommand(test, filter); + } + + protected override IEnumerable PerformWork() + { + if (m_DontRunRestoringResult && EditModeTestCallbacks.RestoringTestContext != null) + { + EditModeTestCallbacks.RestoringTestContext(); + Result = Context.CurrentResult; + yield break; + } + + try + { + if (_command is SkipCommand || _command is FailCommand) + { + Result = _command.Execute(Context); + yield break; + } + + if (!(_command is IEnumerableTestMethodCommand)) + { + Debug.LogError("Cannot perform work on " + _command.GetType().Name); + yield break; + } + if (Context.TestCaseTimeout == 0) + { + Context.TestCaseTimeout = k_DefaultTimeout; + } + foreach (var workItemStep in ((IEnumerableTestMethodCommand)_command).ExecuteEnumerable(Context)) + { + ResultedInDomainReload = false; + + if (workItemStep is IEditModeTestYieldInstruction) + { + var editModeTestYieldInstruction = (IEditModeTestYieldInstruction)workItemStep; + yield return editModeTestYieldInstruction; + var enumerator = editModeTestYieldInstruction.Perform(); + while (true) + { + bool moveNext; + try + { + moveNext = enumerator.MoveNext(); + } + catch (Exception e) + { + Context.CurrentResult.RecordException(e); + break; + } + + if (!moveNext) + { + break; + } + + yield return null; + } + } + else + { + yield return workItemStep; + } + } + + Result = Context.CurrentResult; + } + finally + { + WorkItemComplete(); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/DefaultTestWorkItem.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/DefaultTestWorkItem.cs.meta new file mode 100644 index 0000000..a843b77 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/DefaultTestWorkItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7cfda246e604b945b12b7afedb094ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/FailCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/FailCommand.cs new file mode 100644 index 0000000..a01769d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/FailCommand.cs @@ -0,0 +1,34 @@ + +using System.Collections; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal class FailCommand : TestCommand, IEnumerableTestMethodCommand + { + private ResultState m_ResultState; + private string m_Message; + + public FailCommand(Test test, ResultState resultState, string message) + : base(test) + { + m_ResultState = resultState; + m_Message = message; + } + + public override TestResult Execute(ITestExecutionContext context) + { + context.CurrentResult.SetResult(m_ResultState, m_Message); + return context.CurrentResult; + } + + public IEnumerable ExecuteEnumerable(ITestExecutionContext context) + { + context.CurrentResult.SetResult(m_ResultState, m_Message); + yield return null; + } + } + +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/FailCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/FailCommand.cs.meta new file mode 100644 index 0000000..921cc0a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/FailCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68e5dc8bfd5d72647a93b7f2e1da831a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/IEnumerableTestMethodCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/IEnumerableTestMethodCommand.cs new file mode 100644 index 0000000..758e295 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/IEnumerableTestMethodCommand.cs @@ -0,0 +1,10 @@ +using System.Collections; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal interface IEnumerableTestMethodCommand + { + IEnumerable ExecuteEnumerable(ITestExecutionContext context); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/IEnumerableTestMethodCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/IEnumerableTestMethodCommand.cs.meta new file mode 100644 index 0000000..4434337 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/IEnumerableTestMethodCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dbd43d8a3b8122d4e89b055f53382b11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/PlaymodeWorkItemFactory.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/PlaymodeWorkItemFactory.cs new file mode 100644 index 0000000..5d32f26 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/PlaymodeWorkItemFactory.cs @@ -0,0 +1,13 @@ +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal class PlaymodeWorkItemFactory : WorkItemFactory + { + protected override UnityWorkItem Create(TestMethod method, ITestFilter filter, ITest loadedTest) + { + return new CoroutineTestWorkItem(method, filter); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/PlaymodeWorkItemFactory.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/PlaymodeWorkItemFactory.cs.meta new file mode 100644 index 0000000..9c2a8ed --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/PlaymodeWorkItemFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ef6801a8b664544aa9f2ab1bc1f8b60 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/RestoreTestContextAfterDomainReload.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/RestoreTestContextAfterDomainReload.cs new file mode 100644 index 0000000..e05910a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/RestoreTestContextAfterDomainReload.cs @@ -0,0 +1,4 @@ +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal class RestoreTestContextAfterDomainReload {} +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/RestoreTestContextAfterDomainReload.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/RestoreTestContextAfterDomainReload.cs.meta new file mode 100644 index 0000000..640354d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/RestoreTestContextAfterDomainReload.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26721f9940339264fb14bdbfe1290e21 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/TestCommandBuilder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/TestCommandBuilder.cs new file mode 100644 index 0000000..0a0c1c3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/TestCommandBuilder.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections; +using System.Linq; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestTools; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal static class TestCommandBuilder + { + public static TestCommand BuildTestCommand(TestMethod test, ITestFilter filter) + { + if (test.RunState != RunState.Runnable && + !(test.RunState == RunState.Explicit && filter.IsExplicitMatch(test))) + { + return new SkipCommand(test); + } + + var testReturnsIEnumerator = test.Method.ReturnType.Type == typeof(IEnumerator); + + TestCommand command; + if (!testReturnsIEnumerator) + { + command = new TestMethodCommand(test); + } + else + { + command = new EnumerableTestMethodCommand(test); + } + + command = new UnityLogCheckDelegatingCommand(command); + foreach (var wrapper in test.Method.GetCustomAttributes(true)) + { + command = wrapper.Wrap(command); + if (command == null) + { + var message = String.Format("IWrapTestMethod implementation '{0}' returned null as command.", + wrapper.GetType().FullName); + return new FailCommand(test, ResultState.Failure, message); + } + + if (testReturnsIEnumerator && !(command is IEnumerableTestMethodCommand)) + { + command = TryReplaceWithEnumerableCommand(command); + if (command != null) + { + continue; + } + + var message = String.Format("'{0}' is not supported on {1} as it does not handle returning IEnumerator.", + wrapper.GetType().FullName, + GetTestBuilderName(test)); + return new FailCommand(test, ResultState.Failure, message); + } + } + + command = new UnityEngine.TestTools.TestActionCommand(command); + command = new UnityEngine.TestTools.SetUpTearDownCommand(command); + + if (!testReturnsIEnumerator) + { + command = new ImmediateEnumerableCommand(command); + } + + foreach (var wrapper in test.Method.GetCustomAttributes(true)) + { + command = wrapper.Wrap(command); + if (command == null) + { + var message = String.Format("IWrapSetUpTearDown implementation '{0}' returned null as command.", + wrapper.GetType().FullName); + return new FailCommand(test, ResultState.Failure, message); + } + + if (testReturnsIEnumerator && !(command is IEnumerableTestMethodCommand)) + { + command = TryReplaceWithEnumerableCommand(command); + if (command != null) + { + continue; + } + + var message = String.Format("'{0}' is not supported on {1} as it does not handle returning IEnumerator.", + wrapper.GetType().FullName, + GetTestBuilderName(test)); + return new FailCommand(test, ResultState.Failure, message); + } + } + + command = new EnumerableSetUpTearDownCommand(command); + command = new OuterUnityTestActionCommand(command); + + IApplyToContext[] changes = test.Method.GetCustomAttributes(true); + if (changes.Length > 0) + { + command = new EnumerableApplyChangesToContextCommand(command, changes); + } + + return command; + } + + private static string GetTestBuilderName(TestMethod testMethod) + { + return new[] + { + testMethod.Method.GetCustomAttributes(true).Select(attribute => attribute.GetType().Name), + testMethod.Method.GetCustomAttributes(true).Select(attribute => attribute.GetType().Name) + }.SelectMany(v => v).FirstOrDefault(); + } + + private static TestCommand TryReplaceWithEnumerableCommand(TestCommand command) + { + switch (command.GetType().Name) + { + case nameof(RepeatAttribute.RepeatedTestCommand): + return new EnumerableRepeatedTestCommand(command as RepeatAttribute.RepeatedTestCommand); + case nameof(RetryAttribute.RetryCommand): + return new EnumerableRetryTestCommand(command as RetryAttribute.RetryCommand); + default: + return null; + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/TestCommandBuilder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/TestCommandBuilder.cs.meta new file mode 100644 index 0000000..769bce6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/TestCommandBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f40df9c8cf926b241b093a37028d8815 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityLogCheckDelegatingCommand.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityLogCheckDelegatingCommand.cs new file mode 100644 index 0000000..05b725a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityLogCheckDelegatingCommand.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Commands; +using UnityEngine.TestTools; +using UnityEngine.TestTools.Logging; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + class UnityLogCheckDelegatingCommand : DelegatingTestCommand, IEnumerableTestMethodCommand + { + static Dictionary s_AttributeCache = new Dictionary(); + + public UnityLogCheckDelegatingCommand(TestCommand innerCommand) + : base(innerCommand) {} + + public override TestResult Execute(ITestExecutionContext context) + { + using (var logScope = new LogScope()) + { + if (ExecuteAndCheckLog(logScope, context.CurrentResult, () => innerCommand.Execute(context))) + PostTestValidation(logScope, innerCommand, context.CurrentResult); + } + + return context.CurrentResult; + } + + public IEnumerable ExecuteEnumerable(ITestExecutionContext context) + { + if (!(innerCommand is IEnumerableTestMethodCommand enumerableTestMethodCommand)) + { + Execute(context); + yield break; + } + + using (var logScope = new LogScope()) + { + IEnumerable executeEnumerable = null; + + if (!ExecuteAndCheckLog(logScope, context.CurrentResult, + () => executeEnumerable = enumerableTestMethodCommand.ExecuteEnumerable(context))) + yield break; + + foreach (var step in executeEnumerable) + { + // do not check expected logs here - we want to permit expecting and receiving messages to run + // across frames. (but we do always want to catch a fail immediately.) + if (!CheckFailingLogs(logScope, context.CurrentResult)) + yield break; + + yield return step; + } + + if (!CheckLogs(context.CurrentResult, logScope)) + yield break; + + PostTestValidation(logScope, innerCommand, context.CurrentResult); + } + } + + static bool CaptureException(TestResult result, Action action) + { + try + { + action(); + return true; + } + catch (Exception e) + { + result.RecordException(e); + return false; + } + } + + static bool ExecuteAndCheckLog(LogScope logScope, TestResult result, Action action) + => CaptureException(result, action) && CheckLogs(result, logScope); + + static void PostTestValidation(LogScope logScope, TestCommand command, TestResult result) + { + if (MustExpect(command.Test.Method.MethodInfo)) + CaptureException(result, logScope.NoUnexpectedReceived); + } + + static bool CheckLogs(TestResult result, LogScope logScope) + => CheckFailingLogs(logScope, result) && CheckExpectedLogs(logScope, result); + + static bool CheckFailingLogs(LogScope logScope, TestResult result) + { + if (!logScope.AnyFailingLogs()) + return true; + + var failingLog = logScope.FailingLogs.First(); + result.RecordException(new UnhandledLogMessageException(failingLog)); + return false; + } + + static bool CheckExpectedLogs(LogScope logScope, TestResult result) + { + if (!logScope.ExpectedLogs.Any()) + return true; + + var expectedLog = logScope.ExpectedLogs.Peek(); + result.RecordException(new UnexpectedLogMessageException(expectedLog)); + return false; + } + + static bool MustExpect(MemberInfo method) + { + // method + + var methodAttr = method.GetCustomAttributes(true).FirstOrDefault(); + if (methodAttr != null) + return methodAttr.MustExpect; + + // fixture + + var fixture = method.DeclaringType; + if (!s_AttributeCache.TryGetValue(fixture, out var mustExpect)) + { + var fixtureAttr = fixture.GetCustomAttributes(true).FirstOrDefault(); + mustExpect = s_AttributeCache[fixture] = fixtureAttr?.MustExpect; + } + + if (mustExpect != null) + return mustExpect.Value; + + // assembly + + var assembly = fixture.Assembly; + if (!s_AttributeCache.TryGetValue(assembly, out mustExpect)) + { + var assemblyAttr = assembly.GetCustomAttributes().FirstOrDefault(); + mustExpect = s_AttributeCache[assembly] = assemblyAttr?.MustExpect; + } + + return mustExpect == true; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityLogCheckDelegatingCommand.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityLogCheckDelegatingCommand.cs.meta new file mode 100644 index 0000000..86d9d9e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityLogCheckDelegatingCommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 48230e4e90fb4d14a9d56bddea898413 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestAssemblyRunner.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestAssemblyRunner.cs new file mode 100644 index 0000000..96ed23a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestAssemblyRunner.cs @@ -0,0 +1,98 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using NUnit; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using UnityEngine.TestTools; +using UnityEngine.TestTools.NUnitExtensions; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal interface IUnityTestAssemblyRunner + { + ITest LoadedTest { get; } + ITestResult Result { get; } + bool IsTestLoaded { get; } + bool IsTestRunning { get; } + bool IsTestComplete { get; } + UnityWorkItem TopLevelWorkItem { get; set; } + UnityTestExecutionContext GetCurrentContext(); + ITest Load(Assembly[] assemblies, TestPlatform testPlatform, IDictionary settings); + IEnumerable Run(ITestListener listener, ITestFilter filter); + void StopRun(); + } + + internal class UnityTestAssemblyRunner : IUnityTestAssemblyRunner + { + private readonly UnityTestAssemblyBuilder unityBuilder; + private readonly WorkItemFactory m_Factory; + + protected UnityTestExecutionContext Context { get; set; } + + public UnityTestExecutionContext GetCurrentContext() + { + return UnityTestExecutionContext.CurrentContext; + } + + protected IDictionary Settings { get; set; } + public ITest LoadedTest { get; protected set; } + + public ITestResult Result + { + get { return TopLevelWorkItem == null ? null : TopLevelWorkItem.Result; } + } + + public bool IsTestLoaded + { + get { return LoadedTest != null; } + } + + public bool IsTestRunning + { + get { return TopLevelWorkItem != null && TopLevelWorkItem.State == NUnit.Framework.Internal.Execution.WorkItemState.Running; } + } + public bool IsTestComplete + { + get { return TopLevelWorkItem != null && TopLevelWorkItem.State == NUnit.Framework.Internal.Execution.WorkItemState.Complete; } + } + + public UnityTestAssemblyRunner(UnityTestAssemblyBuilder builder, WorkItemFactory factory) + { + unityBuilder = builder; + m_Factory = factory; + Context = new UnityTestExecutionContext(); + } + + public ITest Load(Assembly[] assemblies, TestPlatform testPlatform, IDictionary settings) + { + Settings = settings; + + if (settings.ContainsKey(FrameworkPackageSettings.RandomSeed)) + Randomizer.InitialSeed = (int)settings[FrameworkPackageSettings.RandomSeed]; + + return LoadedTest = unityBuilder.Build(assemblies, Enumerable.Repeat(testPlatform, assemblies.Length).ToArray(), settings); + } + + public IEnumerable Run(ITestListener listener, ITestFilter filter) + { + TopLevelWorkItem = m_Factory.Create(LoadedTest, filter); + TopLevelWorkItem.InitializeContext(Context); + UnityTestExecutionContext.CurrentContext = Context; + Context.Listener = listener; + + return TopLevelWorkItem.Execute(); + } + + public UnityWorkItem TopLevelWorkItem { get; set; } + + public void StopRun() + { + if (IsTestRunning) + { + TopLevelWorkItem.Cancel(false); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestAssemblyRunner.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestAssemblyRunner.cs.meta new file mode 100644 index 0000000..96179c5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestAssemblyRunner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 874e40a588dbb1e48bc128d686337d4e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestExecutionContext.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestExecutionContext.cs new file mode 100644 index 0000000..08bd03d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestExecutionContext.cs @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using NUnit.Framework; +using NUnit.Framework.Constraints; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Execution; +using UnityEngine.TestTools; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal class UnityTestExecutionContext : ITestExecutionContext + { + private readonly UnityTestExecutionContext _priorContext; + private TestResult _currentResult; + private int _assertCount; + + public static UnityTestExecutionContext CurrentContext { get; set; } + + public UnityTestExecutionContext Context { get; private set; } + + public Test CurrentTest { get; set; } + public DateTime StartTime { get; set; } + public long StartTicks { get; set; } + public TestResult CurrentResult + { + get { return _currentResult; } + set + { + _currentResult = value; + if (value != null) + OutWriter = value.OutWriter; + } + } + + public object TestObject { get; set; } + public string WorkDirectory { get; set; } + + + private TestExecutionStatus _executionStatus; + public TestExecutionStatus ExecutionStatus + { + get + { + // ExecutionStatus may have been set to StopRequested or AbortRequested + // in a prior context. If so, reflect the same setting in this context. + if (_executionStatus == TestExecutionStatus.Running && _priorContext != null) + _executionStatus = _priorContext.ExecutionStatus; + + return _executionStatus; + } + set + { + _executionStatus = value; + + // Push the same setting up to all prior contexts + if (_priorContext != null) + _priorContext.ExecutionStatus = value; + } + } + + public List UpstreamActions { get; private set; } + public int TestCaseTimeout { get; set; } + public CultureInfo CurrentCulture { get; set; } + public CultureInfo CurrentUICulture { get; set; } + public ITestListener Listener { get; set; } + + public UnityTestExecutionContext() + { + UpstreamActions = new List(); + CurrentContext = this; + } + + public UnityTestExecutionContext(UnityTestExecutionContext other) + { + _priorContext = other; + + CurrentTest = other.CurrentTest; + CurrentResult = other.CurrentResult; + TestObject = other.TestObject; + WorkDirectory = other.WorkDirectory; + Listener = other.Listener; + TestCaseTimeout = other.TestCaseTimeout; + UpstreamActions = new List(other.UpstreamActions); + SetUpTearDownState = other.SetUpTearDownState; + OuterUnityTestActionState = other.OuterUnityTestActionState; + + TestContext.CurrentTestExecutionContext = this; + + CurrentCulture = other.CurrentCulture; + CurrentUICulture = other.CurrentUICulture; + CurrentContext = this; + } + + public TextWriter OutWriter { get; private set; } + public bool StopOnError { get; set; } + + public IWorkItemDispatcher Dispatcher { get; set; } + + public ParallelScope ParallelScope { get; set; } + public string WorkerId { get; private set; } + public Randomizer RandomGenerator { get; private set; } + public ValueFormatter CurrentValueFormatter { get; private set; } + public bool IsSingleThreaded { get; set; } + public BeforeAfterTestCommandState SetUpTearDownState { get; set; } + public BeforeAfterTestCommandState OuterUnityTestActionState { get; set; } + public int EnumerableRepeatedTestState { get; set; } + public int EnumerableRetryTestState { get; set; } + + internal int AssertCount + { + get + { + return _assertCount; + } + } + + public void IncrementAssertCount() + { + _assertCount += 1; + } + + public void AddFormatter(ValueFormatterFactory formatterFactory) + { + throw new NotImplementedException(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestExecutionContext.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestExecutionContext.cs.meta new file mode 100644 index 0000000..33d323b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityTestExecutionContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 59ff995fabb3bac45afa0f96f333e5dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItem.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItem.cs new file mode 100644 index 0000000..9a3a46b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItem.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Execution; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal abstract class UnityWorkItem + { + protected readonly WorkItemFactory m_Factory; + protected bool m_ExecuteTestStartEvent; + protected bool m_DontRunRestoringResult; + protected const int k_DefaultTimeout = 1000 * 180; + public event EventHandler Completed; + + public bool ResultedInDomainReload { get; internal set; } + + public UnityTestExecutionContext Context { get; private set; } + + public Test Test { get; private set; } + + public TestResult Result { get; protected set; } + + public WorkItemState State { get; private set; } + + public List Actions { get; private set; } + + protected UnityWorkItem(Test test, WorkItemFactory factory) + { + m_Factory = factory; + Test = test; + Actions = new List(); + Result = test.MakeTestResult(); + State = WorkItemState.Ready; + m_ExecuteTestStartEvent = ShouldExecuteStartEvent(); + m_DontRunRestoringResult = ShouldRestore(test); + } + + protected static bool ShouldRestore(ITest loadedTest) + { + return UnityWorkItemDataHolder.alreadyExecutedTests != null && + UnityWorkItemDataHolder.alreadyExecutedTests.Contains(loadedTest.GetUniqueName()); + } + + protected bool ShouldExecuteStartEvent() + { + return UnityWorkItemDataHolder.alreadyStartedTests != null && + UnityWorkItemDataHolder.alreadyStartedTests.All(x => x != Test.GetUniqueName()) && + !ShouldRestore(Test); + } + + protected abstract IEnumerable PerformWork(); + + public void InitializeContext(UnityTestExecutionContext context) + { + Context = context; + + if (Test is TestAssembly) + Actions.AddRange(ActionsHelper.GetActionsFromTestAssembly((TestAssembly)Test)); + else if (Test is ParameterizedMethodSuite) + Actions.AddRange(ActionsHelper.GetActionsFromTestMethodInfo(Test.Method)); + else if (Test.TypeInfo != null) + Actions.AddRange(ActionsHelper.GetActionsFromTypesAttributes(Test.TypeInfo.Type)); + } + + public virtual IEnumerable Execute() + { + Context.CurrentTest = this.Test; + Context.CurrentResult = this.Result; + + if (m_ExecuteTestStartEvent) + { + Context.Listener.TestStarted(Test); + } + + Context.StartTime = DateTime.UtcNow; + Context.StartTicks = Stopwatch.GetTimestamp(); + + State = WorkItemState.Running; + + return PerformWork(); + } + + protected void WorkItemComplete() + { + State = WorkItemState.Complete; + + Result.StartTime = Context.StartTime; + Result.EndTime = DateTime.UtcNow; + + long tickCount = Stopwatch.GetTimestamp() - Context.StartTicks; + double seconds = (double)tickCount / Stopwatch.Frequency; + Result.Duration = seconds; + + //Result.AssertCount += Context.AssertCount; + + Context.Listener.TestFinished(Result); + + if (Completed != null) + Completed(this, EventArgs.Empty); + + Context.TestObject = null; + Test.Fixture = null; + } + + public virtual void Cancel(bool force) + { + Result.SetResult(ResultState.Cancelled, "Cancelled by user"); + Context.Listener.TestFinished(Result); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItem.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItem.cs.meta new file mode 100644 index 0000000..48b9f92 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79ced2556f0af814a840b86232613ff1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItemDataHolder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItemDataHolder.cs new file mode 100644 index 0000000..d9fb700 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItemDataHolder.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal class UnityWorkItemDataHolder + { + public static List alreadyStartedTests = new List(); + public static List alreadyExecutedTests; + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItemDataHolder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItemDataHolder.cs.meta new file mode 100644 index 0000000..6d90872 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityWorkItemDataHolder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b3e90046c38f1d4dad2e0d5a79e871c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/WorkItemFactory.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/WorkItemFactory.cs new file mode 100644 index 0000000..94d9c0f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/WorkItemFactory.cs @@ -0,0 +1,28 @@ +using System.Collections; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestRunner.NUnitExtensions.Runner +{ + internal abstract class WorkItemFactory + { + public UnityWorkItem Create(ITest loadedTest, ITestFilter filter) + { + TestSuite suite = loadedTest as TestSuite; + if (suite != null) + { + return new CompositeWorkItem(suite, filter, this); + } + + var testMethod = (TestMethod)loadedTest; + if (testMethod.Method.ReturnType.Type != typeof(IEnumerator)) + { + return new DefaultTestWorkItem(testMethod, filter); + } + + return Create(testMethod, filter, loadedTest); + } + + protected abstract UnityWorkItem Create(TestMethod method, ITestFilter filter, ITest loadedTest); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/WorkItemFactory.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/WorkItemFactory.cs.meta new file mode 100644 index 0000000..e5f0377 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/Runner/WorkItemFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c15bf0966eb95847a4260d830a30d30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestExtensions.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestExtensions.cs new file mode 100644 index 0000000..7e74030 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestExtensions.cs @@ -0,0 +1,153 @@ +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using UnityEngine.TestRunner.NUnitExtensions.Filters; + +namespace UnityEngine.TestRunner.NUnitExtensions +{ + internal static class TestExtensions + { + private static IEnumerable GetTestCategories(this ITest test) + { + var categories = test.Properties[PropertyNames.Category].Cast().ToList(); + if (categories.Count == 0 && test is TestMethod) + { + // only mark tests as Uncategorized if the test fixture doesn't have a category, + // otherwise the test inherits the Fixture category + var fixtureCategories = test.Parent.Properties[PropertyNames.Category].Cast().ToList(); + if (fixtureCategories.Count == 0) + categories.Add(CategoryFilterExtended.k_DefaultCategory); + } + return categories; + } + + public static bool HasCategory(this ITest test, string[] categoryFilter) + { + var categories = test.GetAllCategoriesFromTest().Distinct(); + return categoryFilter.Any(c => categories.Any(r => r == c)); + } + + public static List GetAllCategoriesFromTest(this ITest test) + { + if (test.Parent == null) + return test.GetTestCategories().ToList(); + + var categories = GetAllCategoriesFromTest(test.Parent); + categories.AddRange(test.GetTestCategories()); + return categories; + } + + public static void ParseForNameDuplicates(this ITest test) + { + var duplicates = new Dictionary(); + for (var i = 0; i < test.Tests.Count; i++) + { + var child = test.Tests[i]; + int count; + if (duplicates.TryGetValue(child.FullName, out count)) + { + count++; + child.Properties.Add("childIndex", count); + duplicates[child.FullName] = count; + } + else + { + duplicates.Add(child.FullName, 1); + } + ParseForNameDuplicates(child); + } + } + + public static int GetChildIndex(this ITest test) + { + var index = test.Properties["childIndex"]; + return (int)index[0]; + } + + public static bool HasChildIndex(this ITest test) + { + var index = test.Properties["childIndex"]; + return index.Count > 0; + } + + static string GetAncestorPath(ITest test) + { + var path = ""; + var testParent = test.Parent; + + while (testParent != null && testParent.Parent != null && !string.IsNullOrEmpty(testParent.Name)) + { + path = testParent.Name + "/" + path; + testParent = testParent.Parent; + } + + return path; + } + + public static string GetUniqueName(this ITest test) + { + var id = GetAncestorPath(test) + GetFullName(test); + if (test.HasChildIndex()) + { + var index = test.GetChildIndex(); + if (index >= 0) + id += index; + } + if (test.IsSuite) + { + id += "[suite]"; + } + return id; + } + + public static string GetFullName(ITest test) + { + var typeInfo = test.TypeInfo ?? test.Parent?.TypeInfo ?? test.Tests.FirstOrDefault()?.TypeInfo; + if (typeInfo == null) + { + return "[" + test.Name + "]"; + } + + var assemblyId = typeInfo.Assembly.GetName().Name; + if (assemblyId == test.Name) + { + return $"[{test.Name}]"; + } + + return string.Format("[{0}][{1}]", assemblyId, test.FullName); + } + + public static string GetSkipReason(this ITest test) + { + if (test.Properties.ContainsKey(PropertyNames.SkipReason)) + return (string)test.Properties.Get(PropertyNames.SkipReason); + + return null; + } + + public static string GetParentId(this ITest test) + { + if (test.Parent != null) + return test.Parent.Id; + + return null; + } + + public static string GetParentFullName(this ITest test) + { + if (test.Parent != null) + return test.Parent.FullName; + + return null; + } + + public static string GetParentUniqueName(this ITest test) + { + if (test.Parent != null) + return GetUniqueName(test.Parent); + + return null; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestExtensions.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestExtensions.cs.meta new file mode 100644 index 0000000..3230eb4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bc74398aa3944646ade4ee78cd57484 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestResultExtensions.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestResultExtensions.cs new file mode 100644 index 0000000..d79072b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestResultExtensions.cs @@ -0,0 +1,77 @@ +using System; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestRunner.NUnitExtensions +{ + internal static class TestResultExtensions + { + public static void RecordPrefixedException(this TestResult testResult, string prefix, Exception ex, ResultState resultState = null) + + { + if (ex is NUnitException) + { + ex = ex.InnerException; + } + + if (resultState == null) + { + resultState = testResult.ResultState == ResultState.Cancelled + ? ResultState.Cancelled + : ResultState.Error; + } + + var exceptionMessage = ExceptionHelper.BuildMessage(ex); + string stackTrace = "--" + prefix + NUnit.Env.NewLine + ExceptionHelper.BuildStackTrace(ex); + if (testResult.StackTrace != null) + { + stackTrace = testResult.StackTrace + NUnit.Env.NewLine + stackTrace; + } + + if (testResult.Test.IsSuite) + { + resultState = resultState.WithSite(FailureSite.TearDown); + } + + if (ex is ResultStateException) + { + exceptionMessage = ex.Message; + resultState = ((ResultStateException)ex).ResultState; + stackTrace = StackFilter.Filter(ex.StackTrace); + } + + string message = (string.IsNullOrEmpty(prefix) ? "" : (prefix + " : ")) + exceptionMessage; + if (testResult.Message != null) + { + message = testResult.Message + NUnit.Env.NewLine + message; + } + + testResult.SetResult(resultState, message, stackTrace); + } + + public static void RecordPrefixedError(this TestResult testResult, string prefix, string error, ResultState resultState = null) + + { + if (resultState == null) + { + resultState = testResult.ResultState == ResultState.Cancelled + ? ResultState.Cancelled + : ResultState.Error; + } + + if (testResult.Test.IsSuite) + { + resultState = resultState.WithSite(FailureSite.TearDown); + } + + string message = (string.IsNullOrEmpty(prefix) ? "" : (prefix + " : ")) + error; + if (testResult.Message != null) + { + message = testResult.Message + NUnit.Env.NewLine + message; + } + + testResult.SetResult(resultState, message); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestResultExtensions.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestResultExtensions.cs.meta new file mode 100644 index 0000000..ff97b17 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/TestResultExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 65fb6da362a78334ab360a125cfafdaf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/UnityTestAssemblyBuilder.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/UnityTestAssemblyBuilder.cs new file mode 100644 index 0000000..79f4aa5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/UnityTestAssemblyBuilder.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using NUnit; +using NUnit.Framework.Api; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestTools.NUnitExtensions +{ + internal class UnityTestAssemblyBuilder : DefaultTestAssemblyBuilder, IAsyncTestAssemblyBuilder + { + private readonly string m_ProductName; + public UnityTestAssemblyBuilder() + { + m_ProductName = Application.productName; + } + + public ITest Build(Assembly[] assemblies, TestPlatform[] testPlatforms, IDictionary options) + { + var test = BuildAsync(assemblies, testPlatforms, options); + while (test.MoveNext()) + { + } + + return test.Current; + } + + public IEnumerator BuildAsync(Assembly[] assemblies, TestPlatform[] testPlatforms, IDictionary options) + { + var productName = string.Join("_", m_ProductName.Split(Path.GetInvalidFileNameChars())); + var suite = new TestSuite(productName); + for (var index = 0; index < assemblies.Length; index++) + { + var assembly = assemblies[index]; + var platform = testPlatforms[index]; + + var assemblySuite = Build(assembly, options) as TestSuite; + if (assemblySuite != null && assemblySuite.HasChildren) + { + assemblySuite.Properties.Set("platform", platform); + suite.Add(assemblySuite); + } + + yield return null; + } + + yield return suite; + } + + public static Dictionary GetNUnitTestBuilderSettings(TestPlatform testPlatform) + { + var emptySettings = new Dictionary(); + emptySettings.Add(FrameworkPackageSettings.TestParameters, "platform=" + testPlatform); + return emptySettings; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/UnityTestAssemblyBuilder.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/UnityTestAssemblyBuilder.cs.meta new file mode 100644 index 0000000..f0fdf17 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/NUnitExtensions/UnityTestAssemblyBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98ba0396e4b4ee8498a8f097affcfddf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner.meta new file mode 100644 index 0000000..e44f879 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ddb9e1c877ea80479d1eab4ddaa5d0d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks.meta new file mode 100644 index 0000000..899ce79 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61e236e8570a95e4eb754fb291e102e0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs new file mode 100644 index 0000000..d792687 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs @@ -0,0 +1,47 @@ +using NUnit.Framework; +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestTools.TestRunner.Callbacks +{ + [AddComponentMenu("")] + internal class PlayModeRunnerCallback : MonoBehaviour, ITestRunnerListener + { + private TestResultRenderer m_ResultRenderer; + + public void RunFinished(ITestResult testResults) + { + Application.logMessageReceivedThreaded -= LogRecieved; + if (Camera.main == null) + { + gameObject.AddComponent(); + } + m_ResultRenderer = new TestResultRenderer(testResults); + m_ResultRenderer.ShowResults(); + } + + public void TestFinished(ITestResult result) + { + } + + public void OnGUI() + { + if (m_ResultRenderer != null) + m_ResultRenderer.Draw(); + } + + public void RunStarted(ITest testsToRun) + { + Application.logMessageReceivedThreaded += LogRecieved; + } + + public void TestStarted(ITest test) + { + } + + private void LogRecieved(string message, string stacktrace, LogType type) + { + if (TestContext.Out != null) + TestContext.Out.WriteLine(message); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs.meta new file mode 100644 index 0000000..15706d5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3cf5cb9e1ef590c48b1f919f2a7bd895 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayerQuitHandler.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayerQuitHandler.cs new file mode 100644 index 0000000..267048c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayerQuitHandler.cs @@ -0,0 +1,43 @@ +using NUnit.Framework.Interfaces; +using UnityEngine.Networking.PlayerConnection; +using UnityEngine.TestRunner.TestLaunchers; + +namespace UnityEngine.TestTools.TestRunner.Callbacks +{ + internal class PlayerQuitHandler : MonoBehaviour, ITestRunnerListener + { + public void Start() + { + PlayerConnection.instance.Register(PlayerConnectionMessageIds.quitPlayerMessageId, ProcessPlayerQuiteMessage); + } + + private void ProcessPlayerQuiteMessage(MessageEventArgs arg0) + { + //Some platforms don't quit, so we need to disconnect to make sure they will not connect to another editor instance automatically. + PlayerConnection.instance.DisconnectAll(); + + //XBOX has an error when quitting + if (Application.platform == RuntimePlatform.XboxOne) + { + return; + } + Application.Quit(); + } + + public void RunStarted(ITest testsToRun) + { + } + + public void RunFinished(ITestResult testResults) + { + } + + public void TestStarted(ITest test) + { + } + + public void TestFinished(ITestResult result) + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayerQuitHandler.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayerQuitHandler.cs.meta new file mode 100644 index 0000000..9d84990 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/PlayerQuitHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8ed0b11850145c4995dd76170bb2500 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs new file mode 100644 index 0000000..755ac83 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework.Interfaces; +using UnityEngine.Networking.PlayerConnection; +using UnityEngine.TestRunner.TestLaunchers; + +namespace UnityEngine.TestTools.TestRunner.Callbacks +{ + [AddComponentMenu("")] + internal class RemoteTestResultSender : MonoBehaviour, ITestRunnerListener + { + private class QueueData + { + public Guid id { get; set; } + public byte[] data { get; set; } + } + + private const int k_aliveMessageFrequency = 120; + private float m_NextliveMessage = k_aliveMessageFrequency; + private readonly Queue m_SendQueue = new Queue(); + private readonly object m_LockQueue = new object(); + private readonly IRemoteTestResultDataFactory m_TestResultDataFactory = new RemoteTestResultDataFactory(); + + public void Start() + { + StartCoroutine(SendDataRoutine()); + } + + private byte[] SerializeObject(object objectToSerialize) + { + return Encoding.UTF8.GetBytes(JsonUtility.ToJson(objectToSerialize)); + } + + public void RunStarted(ITest testsToRun) + { + var data = SerializeObject(m_TestResultDataFactory.CreateFromTest(testsToRun)); + lock (m_LockQueue) + { + m_SendQueue.Enqueue(new QueueData + { + id = PlayerConnectionMessageIds.runStartedMessageId, + data = data + }); + } + } + + public void RunFinished(ITestResult testResults) + { + var data = SerializeObject(m_TestResultDataFactory.CreateFromTestResult(testResults)); + lock (m_LockQueue) + { + m_SendQueue.Enqueue(new QueueData { id = PlayerConnectionMessageIds.runFinishedMessageId, data = data, }); + } + } + + public void TestStarted(ITest test) + { + var data = SerializeObject(m_TestResultDataFactory.CreateFromTest(test)); + lock (m_LockQueue) + { + m_SendQueue.Enqueue(new QueueData + { + id = PlayerConnectionMessageIds.testStartedMessageId, + data = data + }); + } + } + + public void TestFinished(ITestResult result) + { + var testRunnerResultForApi = m_TestResultDataFactory.CreateFromTestResult(result); + var resultData = SerializeObject(testRunnerResultForApi); + lock (m_LockQueue) + { + m_SendQueue.Enqueue(new QueueData + { + id = PlayerConnectionMessageIds.testFinishedMessageId, + data = resultData, + }); + } + } + + public IEnumerator SendDataRoutine() + { + while (!PlayerConnection.instance.isConnected) + { + yield return new WaitForSeconds(1); + } + + while (true) + { + lock (m_LockQueue) + { + if (PlayerConnection.instance.isConnected && m_SendQueue.Count > 0) + { + ResetNextPlayerAliveMessageTime(); + var queueData = m_SendQueue.Dequeue(); + PlayerConnection.instance.Send(queueData.id, queueData.data); + yield return null; + } + + //This is needed so we dont stall the player totally + if (!m_SendQueue.Any()) + { + SendAliveMessageIfNeeded(); + yield return new WaitForSeconds(0.02f); + } + } + } + } + + private void SendAliveMessageIfNeeded() + { + if (Time.timeSinceLevelLoad < m_NextliveMessage) + { + return; + } + + Debug.Log("Sending player alive message back to editor."); + ResetNextPlayerAliveMessageTime(); + PlayerConnection.instance.Send(PlayerConnectionMessageIds.playerAliveHeartbeat, new byte[0]); + } + + private void ResetNextPlayerAliveMessageTime() + { + m_NextliveMessage = Time.timeSinceLevelLoad + k_aliveMessageFrequency; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs.meta new file mode 100644 index 0000000..cbb4d40 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20793418366caf14293b29c55df5e9ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs new file mode 100644 index 0000000..3d59430 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs @@ -0,0 +1,97 @@ +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestTools.TestRunner.Callbacks +{ + internal class TestResultRenderer + { + private static class Styles + { + public static readonly GUIStyle SucceedLabelStyle; + public static readonly GUIStyle FailedLabelStyle; + public static readonly GUIStyle FailedMessagesStyle; + + static Styles() + { + SucceedLabelStyle = new GUIStyle("label"); + SucceedLabelStyle.normal.textColor = Color.green; + SucceedLabelStyle.fontSize = 48; + + FailedLabelStyle = new GUIStyle("label"); + FailedLabelStyle.normal.textColor = Color.red; + FailedLabelStyle.fontSize = 32; + + FailedMessagesStyle = new GUIStyle("label"); + FailedMessagesStyle.wordWrap = false; + FailedMessagesStyle.richText = true; + } + } + + private readonly List m_FailedTestCollection; + + private bool m_ShowResults; + private Vector2 m_ScrollPosition; + + public TestResultRenderer(ITestResult testResults) + { + m_FailedTestCollection = new List(); + GetFailedTests(testResults); + } + + private void GetFailedTests(ITestResult testResults) + { + if (testResults is TestCaseResult) + { + if (testResults.ResultState.Status == TestStatus.Failed) + m_FailedTestCollection.Add(testResults); + } + else if (testResults.HasChildren) + { + foreach (var testResultsChild in testResults.Children) + { + GetFailedTests(testResultsChild); + } + } + } + + private const int k_MaxStringLength = 15000; + + public void ShowResults() + { + m_ShowResults = true; + Cursor.visible = true; + } + + public void Draw() + { + if (!m_ShowResults) return; + if (m_FailedTestCollection.Count == 0) + { + GUILayout.Label("All test(s) succeeded", Styles.SucceedLabelStyle, GUILayout.Width(600)); + } + else + { + int count = m_FailedTestCollection.Count; + GUILayout.Label(count + " tests failed!", Styles.FailedLabelStyle); + + m_ScrollPosition = GUILayout.BeginScrollView(m_ScrollPosition, GUILayout.ExpandWidth(true)); + var text = ""; + + text += "Code-based tests\n"; + text += string.Join("\n", m_FailedTestCollection + .Select(result => result.Name + " " + result.ResultState + "\n" + result.Message) + .ToArray()); + + if (text.Length > k_MaxStringLength) + text = text.Substring(0, k_MaxStringLength); + + GUILayout.TextArea(text, Styles.FailedMessagesStyle); + GUILayout.EndScrollView(); + } + if (GUILayout.Button("Close")) + Application.Quit(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs.meta new file mode 100644 index 0000000..02cca20 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ebb87899ca30b743bb4274bc00c02b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs new file mode 100644 index 0000000..b5d23f7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs @@ -0,0 +1,36 @@ +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestTools.TestRunner.Callbacks +{ + internal class TestResultRendererCallback : MonoBehaviour, ITestRunnerListener + { + private TestResultRenderer m_ResultRenderer; + public void RunStarted(ITest testsToRun) + { + } + + public void RunFinished(ITestResult testResults) + { + if (Camera.main == null) + { + gameObject.AddComponent(); + } + m_ResultRenderer = new TestResultRenderer(testResults); + m_ResultRenderer.ShowResults(); + } + + public void OnGUI() + { + if (m_ResultRenderer != null) + m_ResultRenderer.Draw(); + } + + public void TestStarted(ITest test) + { + } + + public void TestFinished(ITestResult result) + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs.meta new file mode 100644 index 0000000..deaa0ae --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dfc336f10b83bd74eaded16a658275c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/ITestRunnerListener.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/ITestRunnerListener.cs new file mode 100644 index 0000000..6a2fa5b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/ITestRunnerListener.cs @@ -0,0 +1,26 @@ +using System; +using NUnit.Framework.Interfaces; +using UnityEngine.Events; + +namespace UnityEngine.TestTools.TestRunner +{ + internal interface ITestRunnerListener + { + void RunStarted(ITest testsToRun); + void RunFinished(ITestResult testResults); + void TestStarted(ITest test); + void TestFinished(ITestResult result); + } + + [Serializable] + internal class TestFinishedEvent : UnityEvent {} + + [Serializable] + internal class TestStartedEvent : UnityEvent {} + + [Serializable] + internal class RunFinishedEvent : UnityEvent {} + + [Serializable] + internal class RunStartedEvent : UnityEvent {} +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/ITestRunnerListener.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/ITestRunnerListener.cs.meta new file mode 100644 index 0000000..848ab3d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/ITestRunnerListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1b534518943030499685344fd1d476d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Messages.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Messages.meta new file mode 100644 index 0000000..5ab167c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Messages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 256a0ca37fa972840bce7fca446e75e7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Messages/IEditModeTestYieldInstruction.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Messages/IEditModeTestYieldInstruction.cs new file mode 100644 index 0000000..df7acb2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Messages/IEditModeTestYieldInstruction.cs @@ -0,0 +1,12 @@ +using System.Collections; + +namespace UnityEngine.TestTools +{ + public interface IEditModeTestYieldInstruction + { + bool ExpectDomainReload { get; } + bool ExpectedPlaymodeState { get; } + + IEnumerator Perform(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Messages/IEditModeTestYieldInstruction.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Messages/IEditModeTestYieldInstruction.cs.meta new file mode 100644 index 0000000..f61c35a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/Messages/IEditModeTestYieldInstruction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 898bc38486fc899428fbe5bd6adfe473 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsController.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsController.cs new file mode 100644 index 0000000..87091ca --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsController.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine.SceneManagement; +using UnityEngine.TestRunner.NUnitExtensions; +using UnityEngine.TestRunner.NUnitExtensions.Runner; +using UnityEngine.TestTools.NUnitExtensions; +using UnityEngine.TestTools.Utils; + +namespace UnityEngine.TestTools.TestRunner +{ + [Serializable] + [AddComponentMenu("")] + internal class PlaymodeTestsController : MonoBehaviour + { + private IEnumerator m_TestSteps; + + [SerializeField] + private List m_AssembliesWithTests; + public List AssembliesWithTests + { + get + { + return m_AssembliesWithTests; + } + set + { + m_AssembliesWithTests = value; + } + } + + [SerializeField] + internal TestStartedEvent testStartedEvent = new TestStartedEvent(); + [SerializeField] + internal TestFinishedEvent testFinishedEvent = new TestFinishedEvent(); + [SerializeField] + internal RunStartedEvent runStartedEvent = new RunStartedEvent(); + [SerializeField] + internal RunFinishedEvent runFinishedEvent = new RunFinishedEvent(); + + internal const string kPlaymodeTestControllerName = "Code-based tests runner"; + + [SerializeField] + public PlaymodeTestsControllerSettings settings = new PlaymodeTestsControllerSettings(); + + internal UnityTestAssemblyRunner m_Runner; + + public IEnumerator Start() + { + //Skip 2 frame because Unity. + yield return null; + yield return null; + StartCoroutine(Run()); + } + + internal static bool IsControllerOnScene() + { + return GameObject.Find(kPlaymodeTestControllerName) != null; + } + + internal static PlaymodeTestsController GetController() + { + return GameObject.Find(kPlaymodeTestControllerName).GetComponent(); + } + + public IEnumerator TestRunnerCoroutine() + { + while (m_TestSteps.MoveNext()) + { + yield return m_TestSteps.Current; + } + + if (m_Runner.IsTestComplete) + { + runFinishedEvent.Invoke(m_Runner.Result); + Cleanup(); + + yield return null; + } + } + + public IEnumerator Run() + { + CoroutineTestWorkItem.monoBehaviourCoroutineRunner = this; + gameObject.hideFlags |= HideFlags.DontSave; + + if (settings.sceneBased) + { + SceneManager.LoadScene(1, LoadSceneMode.Additive); + yield return null; + } + + var testListUtil = new PlayerTestAssemblyProvider(new AssemblyLoadProxy(), m_AssembliesWithTests); + m_Runner = new UnityTestAssemblyRunner(new UnityTestAssemblyBuilder(), new PlaymodeWorkItemFactory()); + + var loadedTests = m_Runner.Load(testListUtil.GetUserAssemblies().Select(a => a.Assembly).ToArray(), TestPlatform.PlayMode, UnityTestAssemblyBuilder.GetNUnitTestBuilderSettings(TestPlatform.PlayMode)); + loadedTests.ParseForNameDuplicates(); + runStartedEvent.Invoke(m_Runner.LoadedTest); + + var testListenerWrapper = new TestListenerWrapper(testStartedEvent, testFinishedEvent); + m_TestSteps = m_Runner.Run(testListenerWrapper, settings.BuildNUnitFilter()).GetEnumerator(); + + yield return TestRunnerCoroutine(); + } + + public void Cleanup() + { + if (m_Runner != null) + { + m_Runner.StopRun(); + m_Runner = null; + } + if (Application.isEditor) + { + Destroy(gameObject); + } + } + + public static void TryCleanup() + { + var controller = GetController(); + if (controller != null) + { + controller.Cleanup(); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsController.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsController.cs.meta new file mode 100644 index 0000000..9693778 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 102e512f651ee834f951a2516c1ea3b8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsControllerSettings.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsControllerSettings.cs new file mode 100644 index 0000000..cb6bb54 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsControllerSettings.cs @@ -0,0 +1,36 @@ +using System; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal.Filters; +using UnityEngine.SceneManagement; +using UnityEngine.TestTools.TestRunner.GUI; + +namespace UnityEngine.TestTools.TestRunner +{ + [Serializable] + internal class PlaymodeTestsControllerSettings + { + [SerializeField] + public RuntimeTestRunnerFilter[] filters; + public bool sceneBased; + public string originalScene; + public string bootstrapScene; + + public static PlaymodeTestsControllerSettings CreateRunnerSettings(RuntimeTestRunnerFilter[] filters) + { + var settings = new PlaymodeTestsControllerSettings + { + filters = filters, + sceneBased = false, + originalScene = SceneManager.GetActiveScene().path, + bootstrapScene = null + }; + return settings; + } + + internal ITestFilter BuildNUnitFilter() + { + return new OrFilter(filters.Select(f => f.BuildNUnitFilter()).ToArray()); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsControllerSettings.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsControllerSettings.cs.meta new file mode 100644 index 0000000..06448a7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/PlaymodeTestsControllerSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2799eb4c84e72e54092a292cf626936b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers.meta new file mode 100644 index 0000000..d23c0a7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91c20d2c22b8b3a4cb6c816bd225591a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/IRemoteTestResultDataFactory.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/IRemoteTestResultDataFactory.cs new file mode 100644 index 0000000..fffba29 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/IRemoteTestResultDataFactory.cs @@ -0,0 +1,11 @@ +using System; +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestRunner.TestLaunchers +{ + internal interface IRemoteTestResultDataFactory + { + RemoteTestResultDataWithTestData CreateFromTestResult(ITestResult result); + RemoteTestResultDataWithTestData CreateFromTest(ITest test); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/IRemoteTestResultDataFactory.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/IRemoteTestResultDataFactory.cs.meta new file mode 100644 index 0000000..3bc8e30 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/IRemoteTestResultDataFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 874c0713cdc44f549b0161750b48d2c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/PlayerConnectionMessageIds.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/PlayerConnectionMessageIds.cs new file mode 100644 index 0000000..162ad0b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/PlayerConnectionMessageIds.cs @@ -0,0 +1,14 @@ +using System; + +namespace UnityEngine.TestRunner.TestLaunchers +{ + internal static class PlayerConnectionMessageIds + { + public static Guid runStartedMessageId { get { return new Guid("6a7f53dd-4672-461d-a7b5-9467e9393fd3"); } } + public static Guid runFinishedMessageId { get { return new Guid("ffb622fc-34ad-4901-8d7b-47fb04b0bdd4"); } } + public static Guid testStartedMessageId { get { return new Guid("b54d241e-d88d-4dba-8c8f-ee415d11c030"); } } + public static Guid testFinishedMessageId { get { return new Guid("72f7b7f4-6829-4cd1-afde-78872b9d5adc"); } } + public static Guid quitPlayerMessageId { get { return new Guid("ab44bfe0-bb50-4ee6-9977-69d2ea6bb3a0"); } } + public static Guid playerAliveHeartbeat { get { return new Guid("8c0c307b-f7fd-4216-8623-35b4b3f55fb6"); } } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/PlayerConnectionMessageIds.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/PlayerConnectionMessageIds.cs.meta new file mode 100644 index 0000000..bf86f7e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/PlayerConnectionMessageIds.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41d60936b62cc6d4ca7fe628b22b0e40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestData.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestData.cs new file mode 100644 index 0000000..6559b45 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestData.cs @@ -0,0 +1,56 @@ +using System; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using UnityEngine.TestRunner.NUnitExtensions; + +namespace UnityEngine.TestRunner.TestLaunchers +{ + [Serializable] + internal class RemoteTestData + { + public string id; + public string name; + public string fullName; + public int testCaseCount; + public int ChildIndex; + public bool hasChildren; + public bool isSuite; + public string[] childrenIds; + public int testCaseTimeout; + public string[] Categories; + public bool IsTestAssembly; + public RunState RunState; + public string Description; + public string SkipReason; + public string ParentId; + public string UniqueName; + public string ParentUniqueName; + public string ParentFullName; + + internal RemoteTestData(ITest test) + { + id = test.Id; + name = test.Name; + fullName = test.FullName; + testCaseCount = test.TestCaseCount; + ChildIndex = -1; + if (test.Properties["childIndex"].Count > 0) + { + ChildIndex = (int)test.Properties["childIndex"][0]; + } + hasChildren = test.HasChildren; + isSuite = test.IsSuite; + childrenIds = test.Tests.Select(t => t.Id).ToArray(); + Categories = test.GetAllCategoriesFromTest().ToArray(); + IsTestAssembly = test is TestAssembly; + RunState = (RunState)Enum.Parse(typeof(RunState), test.RunState.ToString()); + Description = (string)test.Properties.Get(PropertyNames.Description); + SkipReason = test.GetSkipReason(); + ParentId = test.GetParentId(); + UniqueName = test.GetUniqueName(); + ParentUniqueName = test.GetParentUniqueName(); + ParentFullName = test.GetParentFullName(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestData.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestData.cs.meta new file mode 100644 index 0000000..0c286dc --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b135ec222fdcd11468014c90d11d6821 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultData.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultData.cs new file mode 100644 index 0000000..90f82a4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultData.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestRunner.TestLaunchers +{ + [Serializable] + internal class RemoteTestResultData + { + public string testId; + public string name; + public string fullName; + public string resultState; + public TestStatus testStatus; + public double duration; + public DateTime startTime; + public DateTime endTime; + public string message; + public string stackTrace; + public int assertCount; + public int failCount; + public int passCount; + public int skipCount; + public int inconclusiveCount; + public bool hasChildren; + public string output; + public string xml; + public string[] childrenIds; + + internal RemoteTestResultData(ITestResult result) + { + testId = result.Test.Id; + name = result.Name; + fullName = result.FullName; + resultState = result.ResultState.ToString(); + testStatus = result.ResultState.Status; + duration = result.Duration; + startTime = result.StartTime; + endTime = result.EndTime; + message = result.Message; + stackTrace = result.StackTrace; + assertCount = result.AssertCount; + failCount = result.FailCount; + passCount = result.PassCount; + skipCount = result.SkipCount; + inconclusiveCount = result.InconclusiveCount; + hasChildren = result.HasChildren; + output = result.Output; + xml = result.ToXml(true).OuterXml; + childrenIds = result.Children.Select(child => child.Test.Id).ToArray(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultData.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultData.cs.meta new file mode 100644 index 0000000..a213e6b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03e4d63665d06f04c8a6cf68133c1592 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataFactory.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataFactory.cs new file mode 100644 index 0000000..0b3cd03 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataFactory.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestRunner.TestLaunchers +{ + internal class RemoteTestResultDataFactory : IRemoteTestResultDataFactory + { + public RemoteTestResultDataWithTestData CreateFromTestResult(ITestResult result) + { + var tests = CreateTestDataList(result.Test); + tests.First().testCaseTimeout = UnityTestExecutionContext.CurrentContext.TestCaseTimeout; + return new RemoteTestResultDataWithTestData() + { + results = CreateTestResultDataList(result), + tests = tests + }; + } + + public RemoteTestResultDataWithTestData CreateFromTest(ITest test) + { + var tests = CreateTestDataList(test); + if (UnityTestExecutionContext.CurrentContext != null) + { + tests.First().testCaseTimeout = UnityTestExecutionContext.CurrentContext.TestCaseTimeout; + } + + return new RemoteTestResultDataWithTestData() + { + tests = tests + }; + } + + private RemoteTestData[] CreateTestDataList(ITest test) + { + var list = new List(); + list.Add(new RemoteTestData(test)); + list.AddRange(test.Tests.SelectMany(CreateTestDataList)); + return list.ToArray(); + } + + private static RemoteTestResultData[] CreateTestResultDataList(ITestResult result) + { + var list = new List(); + list.Add(new RemoteTestResultData(result)); + list.AddRange(result.Children.SelectMany(CreateTestResultDataList)); + return list.ToArray(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataFactory.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataFactory.cs.meta new file mode 100644 index 0000000..bc0dd7c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 826b6becaef90fb458eedebe4c2f3664 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataWithTestData.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataWithTestData.cs new file mode 100644 index 0000000..36124cc --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataWithTestData.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestRunner.TestLaunchers +{ + [Serializable] + internal class RemoteTestResultDataWithTestData + { + public RemoteTestResultData[] results; + public RemoteTestData[] tests; + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataWithTestData.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataWithTestData.cs.meta new file mode 100644 index 0000000..ffab8f6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RemoteHelpers/RemoteTestResultDataWithTestData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 475e3699f219c854f8581a9838135002 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RuntimeTestRunnerFilter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RuntimeTestRunnerFilter.cs new file mode 100644 index 0000000..0adca0a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RuntimeTestRunnerFilter.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using NUnit.Framework.Internal.Filters; +using UnityEngine.TestRunner.NUnitExtensions.Filters; + +namespace UnityEngine.TestTools.TestRunner.GUI +{ + [Serializable] + internal class RuntimeTestRunnerFilter + { + public string[] assemblyNames; + public string[] groupNames; + public string[] categoryNames; + public string[] testNames; + public bool synchronousOnly = false; + + public ITestFilter BuildNUnitFilter() + { + var filters = new List(); + + AddFilters(filters, testNames, (s) => new FullNameFilter(s)); + AddFilters(filters, groupNames, (s) => new FullNameFilter(s) {IsRegex = true}); + AddFilters(filters, assemblyNames, (s) => new AssemblyNameFilter(s)); + AddFilters(filters, categoryNames, (s) => new CategoryFilterExtended(s) {IsRegex = true}); + + if (synchronousOnly) + { + filters.Add(new SynchronousFilter()); + } + + return filters.Count == 0 ? TestFilter.Empty : new AndFilter(filters.ToArray()); + } + + private static void AddFilters(List filters, string[] values, Func builder) + { + if (values == null || values.Length == 0) + { + return; + } + + var inclusionFilters = values.Where(v => !v.StartsWith("!")).Select(v => builder(v) as ITestFilter).ToArray(); + var exclusionFilters = values.Where(v => v.StartsWith("!")) + .Select(v => new NotFilter(builder(v.Substring(1))) as ITestFilter) + .ToArray(); + if (inclusionFilters.Length > 0 && exclusionFilters.Length > 0) + { + filters.Add(new AndFilter(new OrFilter(inclusionFilters), new AndFilter(exclusionFilters))); + } + else if (inclusionFilters.Length > 0) + { + filters.Add(new OrFilter(inclusionFilters)); + } + else // Only exclusionFilters + { + filters.Add(new AndFilter(exclusionFilters)); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RuntimeTestRunnerFilter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RuntimeTestRunnerFilter.cs.meta new file mode 100644 index 0000000..5f9aa3b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/RuntimeTestRunnerFilter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a025ba7ee40d0104db8d08b1d9eabb0d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/SynchronousFilter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/SynchronousFilter.cs new file mode 100644 index 0000000..525da47 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/SynchronousFilter.cs @@ -0,0 +1,51 @@ +using System.Collections; +using System.Linq; +using System.Reflection; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestTools.TestRunner.GUI +{ + class SynchronousFilter : ITestFilter + { + public TNode ToXml(bool recursive) + { + return new TNode("synchronousOnly"); + } + + public TNode AddToXml(TNode parentNode, bool recursive) + { + return parentNode.AddElement("synchronousOnly"); + } + + public bool Pass(ITest test) + { + if (test.Method == null) + return true; + + if (test.Method.ReturnType.Type == typeof(IEnumerator)) + return false; + + if (test.Method.GetCustomAttributes(true).Any()) + return false; + + if (test.TypeInfo?.Type != null) + { + if (Reflect.GetMethodsWithAttribute(test.TypeInfo.Type, typeof(UnitySetUpAttribute), true) + .Any(mi => mi.ReturnType == typeof(System.Collections.IEnumerator))) + return false; + + if (Reflect.GetMethodsWithAttribute(test.TypeInfo.Type, typeof(UnityTearDownAttribute), true) + .Any(mi => mi.ReturnType == typeof(System.Collections.IEnumerator))) + return false; + } + + return true; + } + + public bool IsExplicitMatch(ITest test) + { + return Pass(test); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/SynchronousFilter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/SynchronousFilter.cs.meta new file mode 100644 index 0000000..08c6010 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/SynchronousFilter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b9aec9d3b0a86466ab4647d01e8fc87d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestEnumeratorWrapper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestEnumeratorWrapper.cs new file mode 100644 index 0000000..5ed2ec8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestEnumeratorWrapper.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections; +using System.Reflection; +using NUnit.Framework; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; + +namespace UnityEngine.TestTools.TestRunner +{ + internal class TestEnumeratorWrapper + { + private readonly TestMethod m_TestMethod; + + public TestEnumeratorWrapper(TestMethod testMethod) + { + m_TestMethod = testMethod; + } + + public IEnumerator GetEnumerator(ITestExecutionContext context) + { + if (m_TestMethod.Method.ReturnType.Type == typeof(IEnumerator)) + { + return HandleEnumerableTest(context); + } + var message = string.Format("Return type {0} of {1} in {2} is not supported.", + m_TestMethod.Method.ReturnType, m_TestMethod.Method.Name, m_TestMethod.Method.TypeInfo.FullName); + if (m_TestMethod.Method.ReturnType.Type == typeof(IEnumerable)) + { + message += "\nDid you mean IEnumerator?"; + } + throw new InvalidSignatureException(message); + } + + private IEnumerator HandleEnumerableTest(ITestExecutionContext context) + { + try + { + return m_TestMethod.Method.MethodInfo.Invoke(context.TestObject, m_TestMethod.parms != null ? m_TestMethod.parms.OriginalArguments : null) as IEnumerator; + } + catch (TargetInvocationException e) + { + if (e.InnerException is IgnoreException) + { + context.CurrentResult.SetResult(ResultState.Ignored, e.InnerException.Message); + return null; + } + throw; + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestEnumeratorWrapper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestEnumeratorWrapper.cs.meta new file mode 100644 index 0000000..f19ee3e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestEnumeratorWrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ad0b0c865b01af4ca1b414689e71259 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestListenerWrapper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestListenerWrapper.cs new file mode 100644 index 0000000..ffa23de --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestListenerWrapper.cs @@ -0,0 +1,30 @@ +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestTools.TestRunner +{ + internal class TestListenerWrapper : ITestListener + { + private readonly TestFinishedEvent m_TestFinishedEvent; + private readonly TestStartedEvent m_TestStartedEvent; + + public TestListenerWrapper(TestStartedEvent testStartedEvent, TestFinishedEvent testFinishedEvent) + { + m_TestStartedEvent = testStartedEvent; + m_TestFinishedEvent = testFinishedEvent; + } + + public void TestStarted(ITest test) + { + m_TestStartedEvent.Invoke(test); + } + + public void TestFinished(ITestResult result) + { + m_TestFinishedEvent.Invoke(result); + } + + public void TestOutput(TestOutput output) + { + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestListenerWrapper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestListenerWrapper.cs.meta new file mode 100644 index 0000000..aefe039 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestListenerWrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 73deb9b8722aa284eab27c4dc90956c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestPlatform.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestPlatform.cs new file mode 100644 index 0000000..21a6ec2 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestPlatform.cs @@ -0,0 +1,21 @@ +using System; + +namespace UnityEngine.TestTools +{ + [Flags] + [Serializable] + public enum TestPlatform : byte + { + All = 0xFF, + EditMode = 1 << 1, + PlayMode = 1 << 2 + } + + internal static class TestPlatformEnumExtensions + { + public static bool IsFlagIncluded(this TestPlatform flags, TestPlatform flag) + { + return (flags & flag) == flag; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestPlatform.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestPlatform.cs.meta new file mode 100644 index 0000000..6eb087a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/TestRunner/TestPlatform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 743879b4db4bc1a4b829aae4386f4acf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/UnityEngine.TestRunner.asmdef b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/UnityEngine.TestRunner.asmdef new file mode 100644 index 0000000..6dc17da --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/UnityEngine.TestRunner.asmdef @@ -0,0 +1,13 @@ +{ + "name": "UnityEngine.TestRunner", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/UnityEngine.TestRunner.asmdef.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/UnityEngine.TestRunner.asmdef.meta new file mode 100644 index 0000000..a2002fd --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/UnityEngine.TestRunner.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 27619889b8ba8c24980f49ee34dbb44a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils.meta new file mode 100644 index 0000000..d9503ad --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb32bccaf32a6db448d1c0cc99c78688 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider.meta new file mode 100644 index 0000000..a8326f0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 51557afa652635743b264a309f0a5c60 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyLoadProxy.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyLoadProxy.cs new file mode 100644 index 0000000..9edc517 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyLoadProxy.cs @@ -0,0 +1,12 @@ +using System.Reflection; + +namespace UnityEngine.TestTools.Utils +{ + internal class AssemblyLoadProxy : IAssemblyLoadProxy + { + public IAssemblyWrapper Load(string assemblyString) + { + return new AssemblyWrapper(Assembly.Load(assemblyString)); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyLoadProxy.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyLoadProxy.cs.meta new file mode 100644 index 0000000..8bb527d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyLoadProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb593906b7b6d824087dcaebf6c082e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyWrapper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyWrapper.cs new file mode 100644 index 0000000..cb46f1b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyWrapper.cs @@ -0,0 +1,30 @@ +using System; +using System.Reflection; + +namespace UnityEngine.TestTools.Utils +{ + internal class AssemblyWrapper : IAssemblyWrapper + { + public AssemblyWrapper(Assembly assembly) + { + Assembly = assembly; + } + + public Assembly Assembly { get; } + + public virtual string Location + { + get + { + //Some platforms dont support this + throw new NotImplementedException(); + } + } + + public virtual AssemblyName[] GetReferencedAssemblies() + { + //Some platforms dont support this + throw new NotImplementedException(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyWrapper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyWrapper.cs.meta new file mode 100644 index 0000000..1e4a718 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/AssemblyWrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e3b9bbf2c1a3cd4f88883ca32882ec6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyLoadProxy.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyLoadProxy.cs new file mode 100644 index 0000000..feffa62 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyLoadProxy.cs @@ -0,0 +1,7 @@ +namespace UnityEngine.TestTools.Utils +{ + internal interface IAssemblyLoadProxy + { + IAssemblyWrapper Load(string assemblyString); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyLoadProxy.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyLoadProxy.cs.meta new file mode 100644 index 0000000..284d33b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyLoadProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12dfd4bdbb5c8e6419432fbc54ef25d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyWrapper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyWrapper.cs new file mode 100644 index 0000000..145c682 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyWrapper.cs @@ -0,0 +1,11 @@ +using System.Reflection; + +namespace UnityEngine.TestTools.Utils +{ + internal interface IAssemblyWrapper + { + Assembly Assembly { get; } + string Location { get; } + AssemblyName[] GetReferencedAssemblies(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyWrapper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyWrapper.cs.meta new file mode 100644 index 0000000..486888d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IAssemblyWrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c5afe945b715e149a70113a4be7b32a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IScriptingRuntimeProxy.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IScriptingRuntimeProxy.cs new file mode 100644 index 0000000..0dc2b7f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IScriptingRuntimeProxy.cs @@ -0,0 +1,7 @@ +namespace UnityEngine.TestTools.Utils +{ + internal interface IScriptingRuntimeProxy + { + string[] GetAllUserAssemblies(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IScriptingRuntimeProxy.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IScriptingRuntimeProxy.cs.meta new file mode 100644 index 0000000..85ae985 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/IScriptingRuntimeProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe4aef60e4ace544c8430da8ef8acba2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ITestAssemblyProvider.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ITestAssemblyProvider.cs new file mode 100644 index 0000000..74f2769 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ITestAssemblyProvider.cs @@ -0,0 +1,10 @@ +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestTools.Utils +{ + internal interface ITestAssemblyProvider + { + ITest GetTestsWithNUnit(); + IAssemblyWrapper[] GetUserAssemblies(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ITestAssemblyProvider.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ITestAssemblyProvider.cs.meta new file mode 100644 index 0000000..d7e856b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ITestAssemblyProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c5acba6181d845c4e92146009bd4480f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/PlayerTestAssemblyProvider.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/PlayerTestAssemblyProvider.cs new file mode 100644 index 0000000..bb0aa94 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/PlayerTestAssemblyProvider.cs @@ -0,0 +1,66 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using NUnit.Framework.Interfaces; +using UnityEngine.TestTools.NUnitExtensions; + +namespace UnityEngine.TestTools.Utils +{ + internal class PlayerTestAssemblyProvider + { + private IAssemblyLoadProxy m_AssemblyLoadProxy; + private readonly List m_AssembliesToLoad; + + //Cached until domain reload + private static List m_LoadedAssemblies; + + internal PlayerTestAssemblyProvider(IAssemblyLoadProxy assemblyLoadProxy, List assembliesToLoad) + { + m_AssemblyLoadProxy = assemblyLoadProxy; + m_AssembliesToLoad = assembliesToLoad; + LoadAssemblies(); + } + + public ITest GetTestsWithNUnit() + { + return BuildTests(TestPlatform.PlayMode, m_LoadedAssemblies.ToArray()); + } + + public List GetUserAssemblies() + { + return m_LoadedAssemblies; + } + + protected static ITest BuildTests(TestPlatform testPlatform, IAssemblyWrapper[] assemblies) + { + var settings = UnityTestAssemblyBuilder.GetNUnitTestBuilderSettings(testPlatform); + var builder = new UnityTestAssemblyBuilder(); + return builder.Build(assemblies.Select(a => a.Assembly).ToArray(), Enumerable.Repeat(testPlatform, assemblies.Length).ToArray(), settings); + } + + private void LoadAssemblies() + { + if (m_LoadedAssemblies != null) + { + return; + } + + m_LoadedAssemblies = new List(); + + foreach (var userAssembly in m_AssembliesToLoad) + { + IAssemblyWrapper a; + try + { + a = m_AssemblyLoadProxy.Load(userAssembly); + } + catch (FileNotFoundException) + { + continue; + } + if (a != null) + m_LoadedAssemblies.Add(a); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/PlayerTestAssemblyProvider.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/PlayerTestAssemblyProvider.cs.meta new file mode 100644 index 0000000..ffee12c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/PlayerTestAssemblyProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43a3aec217baa9644a7cf34b5f93fed9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ScriptingRuntimeProxy.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ScriptingRuntimeProxy.cs new file mode 100644 index 0000000..0f1eb2b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ScriptingRuntimeProxy.cs @@ -0,0 +1,10 @@ +namespace UnityEngine.TestTools.Utils +{ + internal class ScriptingRuntimeProxy : IScriptingRuntimeProxy + { + public string[] GetAllUserAssemblies() + { + return ScriptingRuntime.GetAllUserAssemblies(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ScriptingRuntimeProxy.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ScriptingRuntimeProxy.cs.meta new file mode 100644 index 0000000..7b16cb9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AssemblyProvider/ScriptingRuntimeProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3a361a6ad1aff14ba8f48976e94ad76 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AttributeHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AttributeHelper.cs new file mode 100644 index 0000000..7d710cb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AttributeHelper.cs @@ -0,0 +1,45 @@ +using System; +using System.IO; +using System.Linq; + +namespace UnityEngine.TestTools +{ + internal static class AttributeHelper + { + internal static Type GetTargetClassFromName(string targetClassName, Type attributeInterface) + { + Type targetClass = null; + foreach (var assemblyName in ScriptingRuntime.GetAllUserAssemblies()) + { + // we need to pass the assembly name without the .dll extension, so removing that first + var name = Path.GetFileNameWithoutExtension(assemblyName); + targetClass = Type.GetType(targetClassName + "," + name); + if (targetClass != null) + break; + } + + if (targetClass == null) + { + Debug.LogWarningFormat("Class type not found: " + targetClassName); + return null; + } + + ValidateTargetClass(targetClass, attributeInterface); + return targetClass; + } + + private static void ValidateTargetClass(Type targetClass, Type attributeInterface) + { + var constructorInfos = targetClass.GetConstructors(); + if (constructorInfos.All(constructor => constructor.GetParameters().Length != 0)) + { + Debug.LogWarningFormat("{0} does not implement default constructor", targetClass.Name); + } + + if (!attributeInterface.IsAssignableFrom(targetClass)) + { + Debug.LogWarningFormat("{0} does not implement {1}", targetClass.Name, attributeInterface.Name); + } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AttributeHelper.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AttributeHelper.cs.meta new file mode 100644 index 0000000..cc47e6f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/AttributeHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ae8ce3ffe04ac2c42945fd27e0291fc3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ColorEqualityComparer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ColorEqualityComparer.cs new file mode 100644 index 0000000..073aa08 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ColorEqualityComparer.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; + +namespace UnityEngine.TestTools.Utils +{ + public class ColorEqualityComparer : IEqualityComparer + { + private const float k_DefaultError = 0.01f; + private readonly float AllowedError; + + + private static readonly ColorEqualityComparer m_Instance = new ColorEqualityComparer(); + public static ColorEqualityComparer Instance { get { return m_Instance; } } + + private ColorEqualityComparer() : this(k_DefaultError) + { + } + + public ColorEqualityComparer(float error) + { + this.AllowedError = error; + } + + public bool Equals(Color expected, Color actual) + { + return Utils.AreFloatsEqualAbsoluteError(expected.r, actual.r, AllowedError) && + Utils.AreFloatsEqualAbsoluteError(expected.g, actual.g, AllowedError) && + Utils.AreFloatsEqualAbsoluteError(expected.b, actual.b, AllowedError) && + Utils.AreFloatsEqualAbsoluteError(expected.a, actual.a, AllowedError); + } + + public int GetHashCode(Color color) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ColorEqualityComparer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ColorEqualityComparer.cs.meta new file mode 100644 index 0000000..42da075 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ColorEqualityComparer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6105bc8cf5ce544487daca4cbc62583 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/CoroutineRunner.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/CoroutineRunner.cs new file mode 100644 index 0000000..db4d769 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/CoroutineRunner.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections; +using NUnit.Framework.Internal; +using UnityEngine.TestRunner.NUnitExtensions.Runner; + +namespace UnityEngine.TestTools.Utils +{ + internal class CoroutineRunner + { + private bool m_Running; + private bool m_TestFailed; + private bool m_Timeout; + private readonly MonoBehaviour m_Controller; + private readonly UnityTestExecutionContext m_Context; + private Coroutine m_TimeOutCoroutine; + private IEnumerator m_TestCoroutine; + + internal const int k_DefaultTimeout = 1000 * 180; + + public CoroutineRunner(MonoBehaviour playmodeTestsController, UnityTestExecutionContext context) + { + m_Controller = playmodeTestsController; + m_Context = context; + } + + public IEnumerator HandleEnumerableTest(IEnumerator testEnumerator) + { + if (m_Context.TestCaseTimeout == 0) + { + m_Context.TestCaseTimeout = k_DefaultTimeout; + } + do + { + if (!m_Running) + { + m_Running = true; + m_TestCoroutine = ExMethod(testEnumerator, m_Context.TestCaseTimeout); + m_Controller.StartCoroutine(m_TestCoroutine); + } + if (m_TestFailed) + { + StopAllRunningCoroutines(); + yield break; + } + + if (m_Context.ExecutionStatus == TestExecutionStatus.StopRequested || m_Context.ExecutionStatus == TestExecutionStatus.AbortRequested) + { + StopAllRunningCoroutines(); + yield break; + } + yield return null; + } + while (m_Running); + } + + private void StopAllRunningCoroutines() + { + if (m_TimeOutCoroutine != null) + { + m_Controller.StopCoroutine(m_TimeOutCoroutine); + } + + if (m_TestCoroutine != null) + { + m_Controller.StopCoroutine(m_TestCoroutine); + } + } + + private IEnumerator ExMethod(IEnumerator e, int timeout) + { + m_TimeOutCoroutine = m_Controller.StartCoroutine(StartTimer(e, timeout, + () => + { + m_TestFailed = true; + m_Timeout = true; + m_Running = false; + })); + + yield return m_Controller.StartCoroutine(e); + m_Controller.StopCoroutine(m_TimeOutCoroutine); + m_Running = false; + } + + private IEnumerator StartTimer(IEnumerator coroutineToBeKilled, int timeout, Action onTimeout) + { + yield return new WaitForSecondsRealtime(timeout / 1000f); + if (coroutineToBeKilled != null) + m_Controller.StopCoroutine(coroutineToBeKilled); + if (onTimeout != null) + onTimeout(); + } + + public bool HasFailedWithTimeout() + { + return m_Timeout; + } + + public int GetDefaultTimeout() + { + return k_DefaultTimeout; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/CoroutineRunner.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/CoroutineRunner.cs.meta new file mode 100644 index 0000000..756d54e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/CoroutineRunner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24a158219395ebf44a60547b97784ddc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/FloatEqualityComparer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/FloatEqualityComparer.cs new file mode 100644 index 0000000..58438a7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/FloatEqualityComparer.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; + +namespace UnityEngine.TestTools.Utils +{ + public class FloatEqualityComparer : IEqualityComparer + { + private const float k_DefaultError = 0.0001f; + private readonly float AllowedError; + + private static readonly FloatEqualityComparer m_Instance = new FloatEqualityComparer(); + public static FloatEqualityComparer Instance { get { return m_Instance; } } + + private FloatEqualityComparer() : this(k_DefaultError) {} + + public FloatEqualityComparer(float allowedError) + { + this.AllowedError = allowedError; + } + + public bool Equals(float expected, float actual) + { + return Utils.AreFloatsEqual(expected, actual, AllowedError); + } + + public int GetHashCode(float value) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/FloatEqualityComparer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/FloatEqualityComparer.cs.meta new file mode 100644 index 0000000..7497131 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/FloatEqualityComparer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: af5042802f06c804c8abddd544b77a4a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IOuterUnityTestAction.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IOuterUnityTestAction.cs new file mode 100644 index 0000000..ff0fe77 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IOuterUnityTestAction.cs @@ -0,0 +1,19 @@ +using System.Collections; +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestTools +{ + /// + /// When implemented by an attribute, this interface implemented to provide actions to execute before setup and after teardown of tests. + /// + public interface IOuterUnityTestAction + { + /// Executed before each test is run + /// The test that is going to be run. + IEnumerator BeforeTest(ITest test); + + /// Executed after each test is run + /// The test that has just been run. + IEnumerator AfterTest(ITest test); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IOuterUnityTestAction.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IOuterUnityTestAction.cs.meta new file mode 100644 index 0000000..93429d4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IOuterUnityTestAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b9c2a6302985d3846b7b9f6fd9e2da9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPostBuildCleanup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPostBuildCleanup.cs new file mode 100644 index 0000000..489357c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPostBuildCleanup.cs @@ -0,0 +1,7 @@ +namespace UnityEngine.TestTools +{ + public interface IPostBuildCleanup + { + void Cleanup(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPostBuildCleanup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPostBuildCleanup.cs.meta new file mode 100644 index 0000000..f1cb9a9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPostBuildCleanup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff67c526455160f4690a44f74dee4cbe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPrebuildSceneSetup.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPrebuildSceneSetup.cs new file mode 100644 index 0000000..3920b0b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPrebuildSceneSetup.cs @@ -0,0 +1,7 @@ +namespace UnityEngine.TestTools +{ + public interface IPrebuildSetup + { + void Setup(); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPrebuildSceneSetup.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPrebuildSceneSetup.cs.meta new file mode 100644 index 0000000..77dff87 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/IPrebuildSceneSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: acc16f0c684508f44813662a300c574b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ITestRunCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ITestRunCallback.cs new file mode 100644 index 0000000..d2944fc --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ITestRunCallback.cs @@ -0,0 +1,12 @@ +using NUnit.Framework.Interfaces; + +namespace UnityEngine.TestRunner +{ + public interface ITestRunCallback + { + void RunStarted(ITest testsToRun); + void RunFinished(ITestResult testResults); + void TestStarted(ITest test); + void TestFinished(ITestResult result); + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ITestRunCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ITestRunCallback.cs.meta new file mode 100644 index 0000000..09f6f53 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/ITestRunCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38d0b8a87b967304da08a2ae9b955066 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest.meta new file mode 100644 index 0000000..5da2eb9 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce8da628f68c7594b8b9a597fa52db7b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/IMonoBehaviourTest.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/IMonoBehaviourTest.cs new file mode 100644 index 0000000..334da4c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/IMonoBehaviourTest.cs @@ -0,0 +1,7 @@ +namespace UnityEngine.TestTools +{ + public interface IMonoBehaviourTest + { + bool IsTestFinished {get; } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/IMonoBehaviourTest.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/IMonoBehaviourTest.cs.meta new file mode 100644 index 0000000..9af4004 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/IMonoBehaviourTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a002d3737b873954395b7cf862873ab8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/MonoBehaviourTest.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/MonoBehaviourTest.cs new file mode 100644 index 0000000..e0b6372 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/MonoBehaviourTest.cs @@ -0,0 +1,23 @@ +namespace UnityEngine.TestTools +{ + public class MonoBehaviourTest : CustomYieldInstruction where T : MonoBehaviour, IMonoBehaviourTest + { + public T component { get; } + public GameObject gameObject { get { return component.gameObject; } } + + public MonoBehaviourTest(bool dontDestroyOnLoad = true) + { + var go = new GameObject("MonoBehaviourTest: " + typeof(T).FullName); + component = go.AddComponent(); + if (dontDestroyOnLoad) + { + Object.DontDestroyOnLoad(go); + } + } + + public override bool keepWaiting + { + get { return !component.IsTestFinished; } + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/MonoBehaviourTest.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/MonoBehaviourTest.cs.meta new file mode 100644 index 0000000..c727f85 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/MonoBehaviourTest/MonoBehaviourTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 164c9b1458eaab743a4b45c37a4d720d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PostBuildCleanupAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PostBuildCleanupAttribute.cs new file mode 100644 index 0000000..2b91efb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PostBuildCleanupAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace UnityEngine.TestTools +{ + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] + public class PostBuildCleanupAttribute : Attribute + { + public PostBuildCleanupAttribute(Type targetClass) + { + TargetClass = targetClass; + } + + public PostBuildCleanupAttribute(string targetClassName) + { + TargetClass = AttributeHelper.GetTargetClassFromName(targetClassName, typeof(IPostBuildCleanup)); + } + + internal Type TargetClass { get; private set; } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PostBuildCleanupAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PostBuildCleanupAttribute.cs.meta new file mode 100644 index 0000000..b45a7a6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PostBuildCleanupAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 621fd19bcb071b64aa1d68f0271aa780 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PrebuildSceneSetupAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PrebuildSceneSetupAttribute.cs new file mode 100644 index 0000000..86326fb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PrebuildSceneSetupAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace UnityEngine.TestTools +{ + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] + public class PrebuildSetupAttribute : Attribute + { + public PrebuildSetupAttribute(Type targetClass) + { + TargetClass = targetClass; + } + + public PrebuildSetupAttribute(string targetClassName) + { + TargetClass = AttributeHelper.GetTargetClassFromName(targetClassName, typeof(IPrebuildSetup)); + } + + internal Type TargetClass { get; private set; } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PrebuildSceneSetupAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PrebuildSceneSetupAttribute.cs.meta new file mode 100644 index 0000000..7b6ae4a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/PrebuildSceneSetupAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1b7ce919aa8864409412e809073cf96 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/QuaternionEqualityComparer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/QuaternionEqualityComparer.cs new file mode 100644 index 0000000..220f1aa --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/QuaternionEqualityComparer.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; + +namespace UnityEngine.TestTools.Utils +{ + public class QuaternionEqualityComparer : IEqualityComparer + { + private const float k_DefaultError = 0.00001f; + private readonly float AllowedError; + + private static readonly QuaternionEqualityComparer m_Instance = new QuaternionEqualityComparer(); + public static QuaternionEqualityComparer Instance { get { return m_Instance; } } + + + private QuaternionEqualityComparer() : this(k_DefaultError) {} + + public QuaternionEqualityComparer(float allowedError) + { + AllowedError = allowedError; + } + + public bool Equals(Quaternion expected, Quaternion actual) + { + return Mathf.Abs(Quaternion.Dot(expected, actual)) > (1.0f - AllowedError); + } + + public int GetHashCode(Quaternion quaternion) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/QuaternionEqualityComparer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/QuaternionEqualityComparer.cs.meta new file mode 100644 index 0000000..31faf0c --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/QuaternionEqualityComparer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b28913f21577de429da928d6d05219f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/StacktraceFilter.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/StacktraceFilter.cs new file mode 100644 index 0000000..af431f3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/StacktraceFilter.cs @@ -0,0 +1,43 @@ +using System.Linq; +using System.Text; + +namespace UnityEngine.TestTools.Utils +{ + internal static class StackTraceFilter + { + private static readonly string[] s_FilteredLogMessages = + { + @"UnityEngine.DebugLogHandler:Internal_Log", + @"UnityEngine.DebugLogHandler:Log", + @"UnityEngine.Logger:Log", + @"UnityEngine.Debug" + }; + + private static readonly string[] s_LastMessages = + { + @"System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)", + @"UnityEditor.TestTools.TestRunner.EditModeRunner:InvokeDelegator" + }; + + public static string Filter(string inputStackTrace) + { + int idx; + foreach (var lastMessage in s_LastMessages) + { + idx = inputStackTrace.IndexOf(lastMessage); + if (idx != -1) + inputStackTrace = inputStackTrace.Substring(0, idx); + } + + var inputStackTraceLines = inputStackTrace.Split('\n'); + var result = new StringBuilder(); + foreach (var line in inputStackTraceLines) + { + if (s_FilteredLogMessages.Any(s => line.StartsWith(s))) + continue; + result.AppendLine(line); + } + return result.ToString(); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/StacktraceFilter.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/StacktraceFilter.cs.meta new file mode 100644 index 0000000..4f837a1 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/StacktraceFilter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc748d99f1f0d484a811a566fc7915ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackAttribute.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackAttribute.cs new file mode 100644 index 0000000..48561ed --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackAttribute.cs @@ -0,0 +1,24 @@ +using System; + +namespace UnityEngine.TestRunner +{ + [AttributeUsage(AttributeTargets.Assembly)] + public class TestRunCallbackAttribute : Attribute + { + private Type m_Type; + public TestRunCallbackAttribute(Type type) + { + var interfaceType = typeof(ITestRunCallback); + if (!interfaceType.IsAssignableFrom(type)) + { + throw new ArgumentException(string.Format("Type provided to {0} does not implement {1}", this.GetType().Name, interfaceType.Name)); + } + m_Type = type; + } + + internal ITestRunCallback ConstructCallback() + { + return Activator.CreateInstance(m_Type) as ITestRunCallback; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackAttribute.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackAttribute.cs.meta new file mode 100644 index 0000000..06b2018 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76b3a3296de548f48b0c3d088fb4b490 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackListener.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackListener.cs new file mode 100644 index 0000000..d4a8c40 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackListener.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; +using UnityEngine.TestTools.TestRunner; + +namespace UnityEngine.TestRunner.Utils +{ + internal class TestRunCallbackListener : ScriptableObject, ITestRunnerListener + { + private ITestRunCallback[] m_Callbacks; + public void RunStarted(ITest testsToRun) + { + InvokeAllCallbacks(callback => callback.RunStarted(testsToRun)); + } + + private static ITestRunCallback[] GetAllCallbacks() + { + var allAssemblies = AppDomain.CurrentDomain.GetAssemblies(); + allAssemblies = allAssemblies.Where(x => x.GetReferencedAssemblies().Any(z => z.Name == "UnityEngine.TestRunner")).ToArray(); + var attributes = allAssemblies.SelectMany(assembly => assembly.GetCustomAttributes(typeof(TestRunCallbackAttribute), true).OfType()).ToArray(); + return attributes.Select(attribute => attribute.ConstructCallback()).ToArray(); + } + + private void InvokeAllCallbacks(Action invoker) + { + if (m_Callbacks == null) + { + m_Callbacks = GetAllCallbacks(); + } + + foreach (var testRunCallback in m_Callbacks) + { + try + { + invoker(testRunCallback); + } + catch (Exception e) + { + Debug.LogException(e); + throw; + } + } + } + + public void RunFinished(ITestResult testResults) + { + InvokeAllCallbacks(callback => callback.RunFinished(testResults)); + } + + public void TestStarted(ITest test) + { + InvokeAllCallbacks(callback => callback.TestStarted(test)); + } + + public void TestFinished(ITestResult result) + { + InvokeAllCallbacks(callback => callback.TestFinished(result)); + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackListener.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackListener.cs.meta new file mode 100644 index 0000000..77f82ee --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/TestRunCallbackListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68f09f0f82599b5448579854e622a4c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Utils.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Utils.cs new file mode 100644 index 0000000..bc8b617 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Utils.cs @@ -0,0 +1,40 @@ +using System; + +namespace UnityEngine.TestTools.Utils +{ + public static class Utils + { + public static bool AreFloatsEqual(float expected, float actual, float epsilon) + { + // special case for infinity + if (expected == Mathf.Infinity || actual == Mathf.Infinity || expected == Mathf.NegativeInfinity || actual == Mathf.NegativeInfinity) + return expected == actual; + + // we cover both relative and absolute tolerance with this check + // which is better than just relative in case of small (in abs value) args + // please note that "usually" approximation is used [i.e. abs(x)+abs(y)+1] + // but we speak about test code so we dont care that much about performance + // but we do care about checks being more precise + return Math.Abs(actual - expected) <= epsilon * Mathf.Max(Mathf.Max(Mathf.Abs(actual), Mathf.Abs(expected)), 1.0f); + } + + public static bool AreFloatsEqualAbsoluteError(float expected, float actual, float allowedAbsoluteError) + { + return Math.Abs(actual - expected) <= allowedAbsoluteError; + } + + /// + /// Analogous to GameObject.CreatePrimitive, but creates a primitive mesh renderer with fast shader instead of a default builtin shader. + /// Optimized for testing performance. + /// + /// A GameObject with primitive mesh renderer and collider. + public static GameObject CreatePrimitive(PrimitiveType type) + { + var prim = GameObject.CreatePrimitive(type); + var renderer = prim.GetComponent(); + if (renderer) + renderer.sharedMaterial = new Material(Shader.Find("VertexLit")); + return prim; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Utils.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Utils.cs.meta new file mode 100644 index 0000000..63b9c66 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Utils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9502550ba4785e3499d6c9251fa2114b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2ComparerWithEqualsOperator.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2ComparerWithEqualsOperator.cs new file mode 100644 index 0000000..081a8bb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2ComparerWithEqualsOperator.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; + +namespace UnityEngine.TestTools.Utils +{ + public class Vector2ComparerWithEqualsOperator : IEqualityComparer + { + private static readonly Vector2ComparerWithEqualsOperator m_Instance = new Vector2ComparerWithEqualsOperator(); + public static Vector2ComparerWithEqualsOperator Instance { get { return m_Instance; } } + + private Vector2ComparerWithEqualsOperator() {} + + public bool Equals(Vector2 expected, Vector2 actual) + { + return expected == actual; + } + + public int GetHashCode(Vector2 vec2) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2ComparerWithEqualsOperator.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2ComparerWithEqualsOperator.cs.meta new file mode 100644 index 0000000..07662bb --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2ComparerWithEqualsOperator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 65701ebe8bada6b4785e9c7afe7f5bee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2EqualityComparer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2EqualityComparer.cs new file mode 100644 index 0000000..c0cca3f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2EqualityComparer.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; + +namespace UnityEngine.TestTools.Utils +{ + public class Vector2EqualityComparer : IEqualityComparer + { + private const float k_DefaultError = 0.0001f; + private readonly float AllowedError; + + private static readonly Vector2EqualityComparer m_Instance = new Vector2EqualityComparer(); + public static Vector2EqualityComparer Instance { get { return m_Instance; } } + + private Vector2EqualityComparer() : this(k_DefaultError) + { + } + + public Vector2EqualityComparer(float error) + { + this.AllowedError = error; + } + + public bool Equals(Vector2 expected, Vector2 actual) + { + return Utils.AreFloatsEqual(expected.x, actual.x, AllowedError) && + Utils.AreFloatsEqual(expected.y, actual.y, AllowedError); + } + + public int GetHashCode(Vector2 vec2) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2EqualityComparer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2EqualityComparer.cs.meta new file mode 100644 index 0000000..ed2951a --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector2EqualityComparer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58ad09607a0d62d458a78d7174665566 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3ComparerWithEqualsOperator.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3ComparerWithEqualsOperator.cs new file mode 100644 index 0000000..ed665c0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3ComparerWithEqualsOperator.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; + +namespace UnityEngine.TestTools.Utils +{ + public class Vector3ComparerWithEqualsOperator : IEqualityComparer + { + private static readonly Vector3ComparerWithEqualsOperator m_Instance = new Vector3ComparerWithEqualsOperator(); + public static Vector3ComparerWithEqualsOperator Instance { get { return m_Instance; } } + + private Vector3ComparerWithEqualsOperator() {} + + public bool Equals(Vector3 expected, Vector3 actual) + { + return expected == actual; + } + + public int GetHashCode(Vector3 vec3) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3ComparerWithEqualsOperator.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3ComparerWithEqualsOperator.cs.meta new file mode 100644 index 0000000..01662a4 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3ComparerWithEqualsOperator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b994928117e3db418da69c821da7e19 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3EqualityComparer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3EqualityComparer.cs new file mode 100644 index 0000000..47fac4b --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3EqualityComparer.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; + + +namespace UnityEngine.TestTools.Utils +{ + public class Vector3EqualityComparer : IEqualityComparer + { + private const float k_DefaultError = 0.0001f; + private readonly float AllowedError; + + private static readonly Vector3EqualityComparer m_Instance = new Vector3EqualityComparer(); + public static Vector3EqualityComparer Instance { get { return m_Instance; } } + + private Vector3EqualityComparer() : this(k_DefaultError) {} + public Vector3EqualityComparer(float allowedError) + { + this.AllowedError = allowedError; + } + + public bool Equals(Vector3 expected, Vector3 actual) + { + return Utils.AreFloatsEqual(expected.x, actual.x, AllowedError) && + Utils.AreFloatsEqual(expected.y, actual.y, AllowedError) && + Utils.AreFloatsEqual(expected.z, actual.z, AllowedError); + } + + public int GetHashCode(Vector3 vec3) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3EqualityComparer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3EqualityComparer.cs.meta new file mode 100644 index 0000000..37e0a03 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector3EqualityComparer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4bd2bc28ff24d5c488844851cb785db0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4ComparerWithEqualsOperator.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4ComparerWithEqualsOperator.cs new file mode 100644 index 0000000..1f8d106 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4ComparerWithEqualsOperator.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; + +namespace UnityEngine.TestTools.Utils +{ + public class Vector4ComparerWithEqualsOperator : IEqualityComparer + { + private static readonly Vector4ComparerWithEqualsOperator m_Instance = new Vector4ComparerWithEqualsOperator(); + public static Vector4ComparerWithEqualsOperator Instance { get { return m_Instance; } } + + private Vector4ComparerWithEqualsOperator() {} + + public bool Equals(Vector4 expected, Vector4 actual) + { + return expected == actual; + } + + public int GetHashCode(Vector4 vec4) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4ComparerWithEqualsOperator.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4ComparerWithEqualsOperator.cs.meta new file mode 100644 index 0000000..a23cf66 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4ComparerWithEqualsOperator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44100f5f60f351348b9719b46d46cebe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4EqualityComparer.cs b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4EqualityComparer.cs new file mode 100644 index 0000000..7047242 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4EqualityComparer.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; + +namespace UnityEngine.TestTools.Utils +{ + public class Vector4EqualityComparer : IEqualityComparer + { + private const float k_DefaultError = 0.0001f; + private readonly float AllowedError; + + private static readonly Vector4EqualityComparer m_Instance = new Vector4EqualityComparer(); + public static Vector4EqualityComparer Instance { get { return m_Instance; } } + + private Vector4EqualityComparer() : this(k_DefaultError) {} + public Vector4EqualityComparer(float allowedError) + { + this.AllowedError = allowedError; + } + + public bool Equals(Vector4 expected, Vector4 actual) + { + return Utils.AreFloatsEqual(expected.x, actual.x, AllowedError) && + Utils.AreFloatsEqual(expected.y, actual.y, AllowedError) && + Utils.AreFloatsEqual(expected.z, actual.z, AllowedError) && + Utils.AreFloatsEqual(expected.w, actual.w, AllowedError); + } + + public int GetHashCode(Vector4 vec4) + { + return 0; + } + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4EqualityComparer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4EqualityComparer.cs.meta new file mode 100644 index 0000000..149157d --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/UnityEngine.TestRunner/Utils/Vector4EqualityComparer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 32da81683c22faf458026716a2b821aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/package.json b/Library/PackageCache/com.unity.test-framework@1.1.18/package.json new file mode 100644 index 0000000..c613f97 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/package.json @@ -0,0 +1,29 @@ +{ + "name": "com.unity.test-framework", + "displayName": "Test Framework", + "version": "1.1.18", + "unity": "2019.2", + "unityRelease": "0a10", + "description": "Test framework for running Edit mode and Play mode tests in Unity.", + "keywords": [ + "Test", + "TestFramework" + ], + "category": "Unity Test Framework", + "repository": { + "url": "https://github.com/Unity-Technologies/com.unity.test-framework.git", + "type": "git", + "revision": "14025b364215f4465cbe1beb7a81e486b2687ced" + }, + "dependencies": { + "com.unity.ext.nunit": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "relatedPackages": { + "com.unity.test-framework.tests": "1.1.18" + }, + "upmCi": { + "footprint": "41b0bff6ebd4eddf08bd457acf4f7cc690ea9c34" + } +} diff --git a/Library/PackageCache/com.unity.test-framework@1.1.18/package.json.meta b/Library/PackageCache/com.unity.test-framework@1.1.18/package.json.meta new file mode 100644 index 0000000..63170c3 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.18/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d6a2e6e4803de7b43baacdc355fc144d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/CHANGELOG.md b/Library/PackageCache/com.unity.textmeshpro@2.1.1/CHANGELOG.md new file mode 100644 index 0000000..594a0e2 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/CHANGELOG.md @@ -0,0 +1,449 @@ +# Changelog +These are the release notes for the TextMesh Pro UPM package which was first introduced with Unity 2018.1. Please see the following link for the Release Notes for prior versions of TextMesh Pro. http://digitalnativestudios.com/forum/index.php?topic=1363.0 + +## [2.1.1] - 2020-07-26 +## [1.5.1] +## [3.0.1] +### Changes +- Addressed compiler warning related to the new virtual event OnPreRenderText. +- Added one additional layer of missing character search where in the even the missing glyph character \u0000 or space character \u0020 is not available in any font asset or potential fallbacks, the End of Text (ETX) \u0003 will be used instead. +- Input Field Integer or Decimal validation will now take into account the current culture. See [forum post](https://forum.unity.com/threads/currentculture-decimal-separator-in-input-fields.908999/) for details. +- Added Editor only font asset post processor to handle font assets being modified outside of the Unity Editor. +- Fixed potential Array Out of Bounds error that could occur when using </style> without first using a valid <style>. Case #1263787 and See [forum post](https://forum.unity.com/threads/missingreferenceexception-occurs-on-selecting-a-tmp-dropdown-in-the-hierarchy-after-a-play-occurs.728018/#post-6094317) for details. +- Fixed potential issue when using multiple <font> tag in the same text object where these referencing several font assets derived from the same font file. Since their Default Material all have the same name, this was causing an issue in the Material Reference Manager. See [forum post](https://forum.unity.com/threads/argumentexception-on-v2-1-0-unity-2019-4-4f1-identified-bug.934789/) for details. Case #1264596. + +## [2.1.0] - 2020-06-30 +## [1.5.0] +## [3.0.0] +### Changes +- Added support to control if a text object is Maskable and affected by UI Mask components. The new setting is found in the Extra Settings section of the <TextMeshProUGUI> component inspector. +- Fixed potential Null Reference Exception when trying to add characters and / or glyphs to a font asset via scripting and before it has been initialized or ReadFontAssetDefinition() has been called. +- Fixed incorrect preferred width values when using alternative font weight font assets. Case #1255336 +- Enabling or disabling the Mesh Renderer of a <TextMeshPro> text object should now also mirror that state on any sub text object renderers as well. +- Fixed <sprite> incorrect position when this sprite is the only character in the text and when the sprite asset face info has not been defined. +- Fixed potential Null Reference Exception related to culling when entering play mode. +- Added OnPreRenderText event delegate to allow potential modification of the text geometry before it is uploaded to the mesh and rendered. +- Fixed missing warning when the requested character is missing from the font asset or any potential fallbacks. Case #1256879 +- Fixed potential issue with Underline and StrikeThrough when using alternative typeface. Case #1255336 +- Fixed potential errors in the Text StyleSheet Inspector when adding or removing Text Styles after resetting the asset. Case #1254602 +- Fixed text Margin property values not being draggable in the Extra Settings section of the text inspector. Case #1253447 +- It will no longer be possible to create Editor Presets for the TMP_FontAsset, TMP_SpriteAsset, TMP_StyleSheet, TMP_ColorGradient and TMP_Settings as these are persistent and runtime assets. Case #1251229 + +## [2.1.0-preview.14] - 2020-06-08 +## [1.5.0-preview.14] +## [3.0.0-preview.14] +### Changes +- Fixed sprite character and sprite glyph scale not being reflected in the text layout. See [forum post](https://forum.unity.com/threads/glyph-scale-dont-change-line-height.898817/) for details. +- Fixed potential null reference exception in the CrossFadeColor or CrossFadeAlpha functions. See [forum post](https://forum.unity.com/threads/version-1-5-0-2-1-0-3-0-0-preview-13-now-available-for-testing.753587/page-4#post-5885075) for details. +- Minor improvements to the Sprite Asset Importer to improve allocations and address potential error encountered when creating multiple sprite assets. +- TMP GUID Remapping Tool - Removed "UnityEditor.Animations.AnimatorController" from the exclusion search list. +- Fixed potential culling issue when dynamically updating the content of child text objects of RectMask2D components. Case #1253625 +- Fixed InvalidOperationException that could occur when changing text Overflow linked components via code. Case #1251283 + +## [2.1.0-preview.13] - 2020-05-22 +## [1.5.0-preview.13] +## [3.0.0-preview.13] +### Changes +- Fixed potential issue where the Font Asset Creator could get stuck in the packing phase of the atlas generation process. See [forum post](https://forum.unity.com/threads/font-asset-creator-stuck-at-packing-glyphs-pass-8.811863/) for details. +- Fixed issue potentially affecting text layout as a result of the width of the RectTransform being incorrectly reported. See [forum post](https://forum.unity.com/threads/textmesh-pro-forcemeshupdate-true-not-working-when-object-inactive.524507/#post-5798515) for details. +- Previously created prefabs containing sub text objects will now have their HideFlags updated to HideFlags.DontSave to be consistent with newly created prefabs whose sub text objects are no longer serialized. Case #1247184 +- Fixed culling issue where lossy scale was not considered in the determination of the bounds of the text geometry. + +## [2.1.0-preview.12] - 2020-05-09 +## [1.5.0-preview.12] +## [3.0.0-preview.12] +### Changes +- Added synchronization of the RaycastTarget property of the parent <TextMeshProUGUI> with potential child sub text objects. Case #1240784 +- Fixed Font Asset Bold Spacing adjustment scaling based on the text object point size instead of current point size. Case #1241132 +- Improved text alignment when using RTL in conjunction with character, word and other spacing adjustments. +- Fixed TMP Input Field caret potentially not being visible when reaching the right side of the viewport. See [forum post](https://forum.unity.com/threads/inputfield-bug-2.879244/) for more details. +- Fixed TMP Input Field incorrect text RectTransform horizontal adjustment when using the Backspace key. See [forum post](https://forum.unity.com/threads/inputfield-bug4-delete-and-backspace-bug.879283/) for more details. +- Fixed potential null reference in the TextMeshProUGUI.Cull function when using a workflow that involves enabling / disabling Canvases in the scene. +- Fixed ArgumentOutOfRangeException when using the "Update Sprite Asset" inspector option on a sprite asset that does not contain any sprites. Case #1242936 +- Fixed incorrect culling of the text geometry by the RectMask2D component on newly created text objects. Case #1245445 +- It is now possible to use the Material Context Menu options to Copy / Paste Material Properties or Atlas Texture originally created for TMP with all other non TMP specific materials. Case #1242671 +- Fixed NullReferenceException when setting the Atlas Texture to None in the Debug Settings of the Material Inspector of a text object. Case #1245104 + +## [2.1.0-preview.11] - 2020-04-22 +## [1.5.0-preview.11] +## [3.0.0-preview.11] +### Changes +- Fixed incorrect culling of text object by RectMask2D component when the parent Canvas Render Mode is set to Screen Space - Camera or World Space. Case #1240595 +- Added special handling to ForceMeshUpdate() when the parent Canvas is disabled. + +## [2.1.0-preview.10] - 2020-04-21 +## [1.5.0-preview.10] +## [3.0.0-preview.10] +### Changes +- Revised caching of Preferred Width and Height to further reduce the amount of time it has to be recomputed when using a complex structure of Layout components. +- Fixed potential issue when using Text Overflow Ellipsis and Truncate modes when the text contains characters using superscript, subscript or using the <voffset> tag. +- Revised culling of text objects when using a RectMask2D where the bounds of the text geometry instead of the RectTransform define the culling rect. +- Added HDR support to material preset colors. +- Fixed various formatting issues in this ChangeLog. +- Added the ability to define a unicode value for a missing sprite character in the TMP Settings. +- Added support for displaying a missing sprite character when the requested sprite character is not present in the sprite asset or potential fallback(s). This new functionality is only available when trying to reference a sprite by name. +- Sprite Characters will now have a default Unicode value of 0xFFFE (Private NonCharacter) instead of a Unicode value of 0x0 (default unicode value for missing character). +- Using the sprite asset context menu option "Update Sprite Asset" will now remap sprite characters with unicode value of 0x0 to 0xFFFE in addition to its currently functionality. +- Updating TMP Essential Resources via the "Window - TextMeshPro - Import TMP Essential Resources" menu option will no longer override existing TMP Settings. +- Minor optimization where SDF Scale on some text objects could be unnecessarily updated due to floating point rounding errors in their lossy scale. Case #1230799 +- Fixed minor issue where text objects created before importing the required TMP Essential Resources would have no default text. +- Improvements to line breaking for CJK and mixed Latin and CJK characters. See the following [forum post](https://forum.unity.com/threads/tmp-bug.852733/#post-5688274) for more details. +- Fixed potential NullReferenceException that could occur in the TMP InputField on some platforms if the InputSystem reference is null. Case #1232433 +- Added small padding to bitmap character geometry to prevent potential clipping. +- Added optimization to ignore very small RectTransform pivot changes that are usually the result of rounding errors when using Layout Components. Case #1237700 +- Sorting Layer ID and Sorting Order properties located in the Extra Settings of <TextMeshPro> text objects will now serialized when creating Editor Presets. Case #1215750 +- TextMeshProUGUI sub text objects will now be set as first sibling of their parent to prevent them from being rendered over other non text object child in the scene hierarchy. +- Fixed text objects becoming visible when set to empty or null as a result of a scale change. Case #1238408 +- Fixed useMaxVisibleDescender property now getting set properly via scripting. Case #1218526 +- Fixed SortingLayerID and SortingOrder not getting set correctly when multiple <TextMeshPro> objects are selected. Case #1171272 +- Fixed default settings getting applied to disabled text objects in the scene hierarchy whose text property was set to null. Case #1151621 +- Fixed mouse cursor flickering when hovering the Text Input Box of a text prefab with RTL enabled. Case #1206395 + +## [2.1.0-preview.8] - 2020-03-14 +## [1.5.0-preview.8] +## [3.0.0-preview.8] +### Changes +- Fixed a minor issue where the preferred width of a text object can be incorrect when using multiple font assets, fallbacks and sprites in the same line of text. +- Added Alpha Fade Speed property to the TMP_DropDown inspector. +- Minor improvements to the LogWarning related to missing characters in a font asset or fallback being replaced by a space character. +- Fixed text object geometry not getting clipped when object is outside of RectMask2D. +- Improved search for potential missing character to include the primary font asset and potential fallbacks when the current font asset is not the primary. +- Ignorable / Synthesized characters in font assets will only be created if they do not exist in the source font file. +- Trying to use Text Overflow Ellipsis mode when no Ellipsis character is available in the primary font asset or potential fallbacks will now issue a warning and switch Text Overflow mode to Truncate. +- Added <color=lightblue> and <color=grey> to pre-defined rich text tag colors. +- Fixed compatibility issue when using TexturePacker - JSON (Array) mode and the TMP Sprite Asset Importer to create SpriteAssets. +- Simple fix to prevent the underline rich text tag becoming visible in the TMP Input Field when in IME composition mode with Rich Text disabled on the TMP Input Field. This is a temporary fix until a more robust and flexible solution is implemented. Case #1219969 +- Sub Text Objects which are created when the text requires the use of a fallback font asset or sprite asset will now use HideFlags.DontSave to prevent them from being save with Prefabs as they are created on demand. +- Fix incorrect material reference when current font asset is not the primary or a fallback that is missing a character which is present in the primary font asset. + +## [2.1.0-preview.7] - 2020-03-07 +## [1.5.0-preview.7] +## [3.0.0-preview.7] +### Changes +- Reverted recent change to the TMP_SubMeshUI OnDisable() function that could result in a Missing Reference Exception in the GraphicRaycaster.cs script. See the following [forum post](https://forum.unity.com/threads/version-1-5-0-2-1-0-preview-5-now-available-for-testing.753587/page-2#post-5523412). +- Added support for Stadia for Unity 2019.3 or newer. +- Addressed warning that would appear in the console in Unity 2019.3 related to recent Preset API changes. Case #1223257 +- Fixed glyph drawing issue in the Font Asset Inspector Glyph Adjustment Table when Multi Atlas Texture is enabled and the glyph is not located in the main atlas texture or at atlasTextures[0]. +- Added support for <ZWSP> tag which is internally replaced by a zero width space or \u200B. +- Improved line breaking handling when using <NBSP> and / or <NOBR> tags where instead of breaking these line segments per character, they will break at any possible soft breaking space when these segments exceed the width of the text container. +- Improved PreferredHeight calculations and handling when using Text Auto Size. +- Fixed incorrect color being applied to the underline or strikethrough line segments when using and / or tags along with a tag while at the same time applying an Underline or Strikethrough font style on the whole text object. +- Fixed SDF Scale not getting updated when using SetText() with StringBuilder when the lossyScale of the text object changes. Case #1216007 +- Added Non Breaking Space \u00A0 and Soft Hyphen \u00AD to list of synthesized characters in the event they are not present in the source font file. +- Fixed stack overflow issue when using TMP_FontAsset.HasCharacter and TMP_FontAsset.HasCharacters function on font assets that have circular fallback references. Case #1222574 +- Fixed atlas texture not getting set correctly to IsReadable when switching a static font asset to dynamic in the Generation Settings of the Font Asset Inspector. +- Added check for RectTransform.sizeDelta change when OnRectTransformDimensionsChange() is called by the Canvas system to get around potential rounding error that erroneously trigger this callback when the RectTransform is using Stretch Anchor mode. +- As requested by a few users, TMP_FontAsset.faceInfo setter is now public instead of internal. + +## [2.1.0-preview.5] - 2020-02-25 +## [1.5.0-preview.5] +## [3.0.0-preview.5] +### Changes +- Revised SetText function formatting options to including ability to specify padding for integral part of the value. Revised format is as follows: {Arg Index:Integral Padding.Decimal Precision} Example: TMP_Text.SetText("Value = {0:000.00}", 10.375f); result in "Value = 010.38". +- Fixed issue where text objects isTextObjectScaleStatic property would be ignored when OnCanvasHierarchyChanged() is called. +- Added a Character, Glyph and Record count to those respective tables in the Font Asset Inspector. +- Fixed potential Null Reference Exception that would occur when using text Overflow Ellipsis mode with a primary font asset that doesn't contain the Ellipsis character. Case #1209771 +- Fixed a potential Editor lockup when using text Overflow Page mode. Case #1219055 +- Fixed Input Field incorrect caret vertical alignment when using the Midline / Vertical Geometry alignment option. +- Added initial / minimal support for the New Input System. Please use with caution and report any issues. +- Changes to Font Asset Generation Settings via the Font Asset Inspector will now update the existing glyphs and characters for the new settings instead of clearing them. +- Text object InternalUpdate() used to handle potential scale changes of text objects now uses willRenderCanvases event instead of onPreCull. This avoids a potential one frame delay in updating of objects and no impact on objects. Case #1216007 + +## [2.1.0-preview.4] - 2020-01-31 +## [1.5.0-preview.4] +## [3.0.0-preview.4] +### Changes +- Fixed Input Field issue where scrolling events could prevent OnEndEdit event from firing. See [forum post](https://forum.unity.com/threads/mouse-wheel-on-multiline-input-field-with-no-scrollbar-hangs-input-field-stops-event-firing.794607/) for details. +- Improved Input Field handling of Vertical Scrollbar in conjunction with the ResetOnDeActivation property. Using the Vertical Scrollbar no longer triggers OnEndEdit event. +- Fixed MissingReferenceException when deleting a TMP prefab that is part of a nested prefab. Case #1207793 +- Improved handling of allocations of newly created text objects with large amount of text. As a result of these revisions, allocations will potentially be reduce by 10X. See #1205923 +- Fixed potential Null Reference Exception with the TMP DropDown that could occur when using the experimental Editor "Enter Play Mode" feature. Case #1207915 +- Fixed potential issue with the assignment of sub text object materials. +- Add support for hiding the soft keyboard for Switch in the TMP Input Field. +- Fixed incorrect Preferred Height when Word Wrapping is disabled on text objects. See [forum post](https://forum.unity.com/threads/incorrect-wordwrapping-preferredsize-textmespro-2-1-preview-3.812376/) for details. +- Added support for the new Selected state and color to the TMP Input Field. Case #1210496 +- Fixed additional instances of TMP Resource Importer window being created when deleting the "TextMesh Pro" folder just after having imported them. Case #1205848 +- Added public ITextPreprocessor textPreprocessor; property to allow setting the text preprocessor for a given text component. + +## [2.1.0-preview.3] - 2019-12-16 +## [1.5.0-preview.3] +### Changes +- Fixed potential issue with TMP Dropdown where calling Show() and Hide() in very short interval could result in additional Blockers. Case #1194114 +- Fixed potential issues that could occur when upgrading to version 1.5.0-preview.2 or newer of the TMP package without also updating the TMP Essential Resources in the project. +- Added check and warning when trying to create a font asset whose source font file has "Incl. Font Data" disabled in the Font Import Settings. Case #1198587 and #1198112 +- Fixed Ellipsis overflow mode issue when using small caps. Case #1198392 +- Fixed potential layout issue when adding a Layout Group to the text object itself. Case #1197614 +- Fixed Font Asset Creator issue where too many adjustment records with adjustment value of zero were added to the font asset. +- Added support for Line Separator \u2028 and Paragraph Separator \u2029. +- TMP shaders have been moved from "TextMesh Pro/Resources/Shaders" folder to "TextMesh Pro/Shaders" folder. See the following [post](https://forum.unity.com/threads/version-1-5-0-2-1-0-preview-2-now-available-for-testing.753587/#post-5206853) for details. +- Added new experimental SDF and Mobile SDF Shaders that use Screen Space Derivatives (SSD) where these shaders no longer require SDF Scale to be passed via Vertex Attributes. These shaders have higher performance overhead but are more flexible. This overhead should only be noticeable on mobile platforms. +- Fixed potential text alignment issue where upgrading from package version 1.4.1 to 1.5.0-preview.2 would result in incorrect alignment on prefabs. Case #1198833 +- Added \u061C Arabic Letter Mark, \u200E Left-to-Right Mark and \u200F Right-to-Left Mark to list of control and non renderable characters. +- Fixed Missing Reference Exception that would appear when expanding the Extra Settings of a TextMeshPro Preset asset. Case #1201072 +- Fixed Missing Reference Exception that would appear when editing the Vertex Color or Color Gradient of a TMP component Preset asset. Case #1201069 +- Fixed Inspector layout issue preventing enabling or disabling the Outline, Underlay, Lighting and Glow features when selecting a Preset asset material. Case #1196963 +- Revised the Create Material Preset context menu option to issue a warning and ignore materials outside the project. Case #1200109 +- Added experimental ITextPreprocessor interface to allow users to create custom components to handle text preprocessing and shaping. This interface includes a PreprocessText(string text) function that is called when the object contains a component that inherits from this interface. +- Added support for Unity Presets in the Editor for both and components. Case #1191793 +- Optimization to ensure the TMP Update Manager only rebuilds text objects once per frame regardless of the number of cameras in the scene. + +## [2.1.0-preview.2] - 2019-10-30 +## [1.5.0-preview.2] +### Changes +- Fixed Input Field issue when Read Only flag is set preventing the initial setting of the text. Also fixed Read Only flag not being respected when using IME input. +- Fixed potential infinite loop when using text overflow mode ScrollRect. See Case #1188867 +- Fixed Input Field culling related issue(s) where text would be incorrectly culled. See https://forum.unity.com/threads/version-1-5-0-2-1-0-preview-1-now-available-for-testing.753587/#post-5023700 +- Revised handling and referencing of the CanvasRenderer in anticipation of an incoming change to the MaskableGraphic class where it will no longer automatically add a CanvasRenderer to components inheriting from it. As a result, objects will no longer have a CanvasRenderer. +- Fixed potential NRE when using Overflow Truncate mode with sprites. See https://forum.unity.com/threads/tmpro-stackoverflow-caused-by-tmpro-textmeshprougui-generatetextmesh.750398/page-2#post-5042822 +- Fixed issue when using font weights in combination of font styles in the editor. +- Fixed for potential incorrect preferred height. +- Improved handling of StyleSheet options to reorder, add or delete styles. +- Fixed Input Field Caret & Selection Highlight potential culling issue when the object was instantiated outside the culling region. +- Fixed potential issue with registration of text objects in the TMP_UpdateManager. +- Optimization to suppress callback to InternalUpdate when parent Canvas is disabled. Case #1189820 +- Fixed Fallback material not getting updated correctly when changing Generation Settings on the Fallback Font Asset. +- Fixed a typo in the Font Weight section of the Font Asset Editor. +- Fixed potential ArgumentOutOfRangeException in the Input Field when using Hide Mobile Input and deleting a long string. Case #1162514 +- Added "Is Scale Static" option in the Extra Settings to exclude text objects from InternalUpdate callbacks to improve performance when the object's scale is static. This InternalUpdate callback is used to track potential changes to the scale of text objects to update their SDF Scale. +- Added the ability to control culling modes for the TMP Shaders. This new option is available in the Debug section of the Material Inspector. New feature requires updating the TMP Essential Resources. See the following post https://forum.unity.com/threads/not-see-textmeshpro-rendering-from-the-back.767510/#post-5112461. +- Fixed Material Inspector issue when toggling the Record button in the Animation window. Case #1174960 +- Improved Line Breaking handling for CJK. This also addresses a few reported issues. Case #1171603 +- Added support for <NBSP> tag which is internally replaced by a non-breaking space or \u00A0. +- Improved performance when retrieving glyph adjustment records when using dynamic font assets. +- Fixed potential Null Reference Exception in the Editor when assigning new font asset to disabled game object when no previous font asset was assigned. + +## [2.1.0-preview.1] - 2019-09-30 +## [1.5.0-preview.1] +### Changes +- Fixed an issue when using Overflow Ellipsis mode where the Ellipsis character would not be displayed correctly when the preceding character is a sprite. +- Added the ability to define the Resource path for Style Sheets in the TMP Settings. +- TMP Style Sheets can now be assigned to text objects in the Extra Settings section of the text object inspector. +- Added the ability to assign a Style to text objects using the new Text Style property in the text object inspector. A new public property TMP_Text.textStyle was also added. +- Improved Style Sheet editor to allow sorting of styles in the style sheet. +- Improved handling of nested styles. +- Added public TMP_Style GetStyle(string name) to get the potential style by name. +- Revised the ForceMeshUpdate() function as follows: public void ForceMeshUpdate(bool ignoreActiveState = false, bool forceTextReparsing = false). +- Fixed SubMeshUI objects text disappearing when saving a scene. +- Creating Material Presets via the Material Context menu with multi selection will now work as expected and assign the newly created material preset to all selected text objects. +- Fixed minor issue when changing Material Preset in prefab isolation mode with multiple text objects selected where the new material preset would not be assigned to disabled text objects. +- Revised Character, Word, Line and Paragraph spacing adjustments to be in font units (em) where a value of 1 represents 1/100 em. +- Added TMP_Text.onFontAssetRequest and TMP_Text.onSpriteAssetRequest events to allow users to implement custom asset loading when using the <font="Font Asset Name"> and <sprite="Sprite Asset Name"> tags. +- Additional Shader Channels on the Canvas will be set to TexCoord1, Normal and Tangents or Mixed when using TMP Surface Shaders. Otherwise it will be set to TexCoord1 only. Case #1100696 +- Added new attribute to the <mark> tag to allow users to define a padding value for the mark / highlight region. Example: <mark color=#FFFF0080 padding="1.0,1.0,0.0,0.0"> where padding="Left, Right, Top, Bottom". +- Fixed an issue which could result in out of range exception when referencing sprites contained in fallback sprite assets using unicode values. +- Fixed an issue in the Font Asset Creator where the source font file property of the newly created font asset was not getting set. +- Added .blend files to exclusion asset scan list of the Project GUID Remapping tool. +- Fixed issue where Caret position would be incorrect when using IME. Case #1146626 +- Clamped Outline Softness to a value of 0-1 in the TMP Distance Field shader which makes it consistent with other SDF Shaders. Case #1136161 +- Text Auto-Sizing Min and Max values are now clamped between 0 and 32767. Case #1067717 +- Text Font Size Min and Max values are now clamped between 0 and 32767. Case #1164407 +- Rich Text Tag values are now limited to a maximum value of 32767. +- Added Placeholder option to TMP Dropdown. Placeholder text is displayed when selection value is -1. Also added example scene in the TMP Examples & Extras. +- Added the ability to define Face Info metrics per Sprite Assets. This will provide for more consistent scaling of the sprites regardless of the font asset used. Sprite Assets with undefined Face Info will continue to inherit the Face Info metrics of the current font asset. +- Added Update Sprite Asset option in the header of the Sprite Asset inspector. This increases the discoverability of this option already available via the Sprite Asset Context Menu. +- Revised the text auto-sizing handling in regards to maximum iteration threshold which could result in a crash on some Android devices. Case #1141328 +- Font Asset Generation Settings are now disabled in the inspector if the Source Font File is missing or if the Atlas Population Mode is set to static. +- Fixed vertical alignment issue when using Overflow Page mode. +- Improved handling of text auto-size line adjustment spacing resulting in fewer iterations and more accurate resulting point size. +- Added support for Layout Elements to the TMP Input Field. += Fixed text alignment issue with TMP Input Field when using Center alignment on the underlying text component. +- Setting ContentType.Custom on the TMP Input Field will no longer hide the Soft Keyboard. The Soft Keyboard can now be control independently via the shouldHideSoftKeyboard property. +- Added new Font Asset Context Menu option "Force Upgrade To Version 1.1.0" for convenience purposes in case a font asset didn't get upgraded automatically when migrating from version 1.3.0 to 1.4.x or 2.0.x. +- The <gradient> tag now as an optional attribute "tint=0" or "tint=1" controlling whether or not the gradient will be affect by vertex color. The alpha of the gradient will continue to be affected by the vertex color alpha. +- Added new angle=x attribute to the <i> tag where the value of x define the italic slant angle. +- Since the legacy TextContainer used by TMP has been deprecated, it was removed from the Layout Context Menu options. +- Improved character positioning when using italic text where large angle / slant would potentially result in uneven spacing between normal and italic blocks of text. +- Fixed an issue where <mspace> and <cspace> tags would not be handled correctly in conjunction with word wrapping. +- Fixed issue in the TMP_Dropdown.cs that was affecting navigation. Case 1162600. See https://forum.unity.com/threads/huge-bug-missing-a-code-line-since-1-4-0.693421/ +- Fixed an issue related to kerning where the glyph adjustment values did not account for the upsampling of the legacy SDF modes like SDF8 / SDF16 and SDF32. +- Made the TMP_Text.text property virtual. +- Fixed Material Preset of fallback materials getting modified when the TMP Settings Match Material Preset option is disabled. +- Added ShaderUtilities.ID_GlowInner to list of material property IDs. +- Fixed potential null reference exception when creating new text objects when no default font asset has been assigned in the TMP Settings and the LiberationSans SDF font asset has been deleted from the project. Case #1161120 +- Fixed import TMP Essential Resources button being disabled when importing the TMP Examples & Extras first. Case #1163979 +- Fixed potential ArgumentOutOfRangeException when Hide Mobile Input is enabled and deleting the last character in the text. Case #1162514 +- Improved handling of manual addition of glyph positional adjustment pairs for both dynamic and static font assets. Case #1165763 +- Fixed issue where text in the TMP_InputField would disappear due to incorrect culling. Case #1164096 +- Fixed potential IndexOutOfRangeException that could be thrown when using the Pinyin IME interface and typing very fast to enter Chinese text. Case #1164383 +- Added support for Vertical Tab \v which inserts a line break but not a paragraph break. +- Added support for Shift Enter in the TMP Input Field which inserts a Vertical Tab in the text in Multi Line mode. +- Fixed text horizontal alignment when lines of text only contain the Ellipsis \u2026 Unicode character. Case #1162685 +- Text alignment is now serialized into separate fields for horizontal and vertical alignment and can now be get / set independently via TMP_Text.horizontalAlignment and TMP_Text.verticalAlignment. The TMP_Text.alignment property remains and uses the new serialized fields for horizontal and vertical alignment. +- Improved handling of Soft Hyphens when using Text Auto-Size. +- Fixed Null character being passed to Validate method of the TMP_InputField. Case #1172102 +- Fixed an issue where the Preferred Width and Height were not correct when using Tabs. +- The Cull Transparent Mesh flag on TMP_SubMeshUI objects will now mirror the settings on the parent text object's CanvasRenderer. +- Updated Sprite Importer to improve compatibility with Texture Packer Json Array export format. +- Newly created StyleSheets will be pinged in the project tab. Case #1182117 +- Added new option in the TMP Settings to control line breaking rules for Hangul to enabled Modern line breaking or traditional line breaking. +- Fixed potential issue related to SDF Scaling when the scale of the text object is negative. See https://forum.unity.com/threads/version-1-4-1-preview-1-with-dynamic-sdf-for-unity-2018-3-now-available.622420/page-5#post-4958240 for details. +- Added validation check for Sprite Data Source file in the Sprite Asset Importer. Case #1186620 +- Added warning when using Create - TextMeshPro - Sprite Asset menu when no valid texture is selected. Case #1163982 +- Fixed potential cosmetic issue in the text component inspector when using Overflow Linked mode. Case #1177640 + +## [1.4.1] - 2019-04-12 +### Changes +- Improved handling of font asset automatic upgrade to version 1.1.0 which is required to support the new Dynamic SDF system. +- Made release compatible with .Net 3.5 scripting runtime. + +## [1.4.0] - 2019-03-07 +### Changes +- Same release as 1.4.0-preview.3a. + +## [1.4.0-preview.3a] - 2019-02-28 +### Changes +- Improved performance of the Project Files GUID Remapping Tool. +- Fixed an issue with the TMP_FontAsset.TryAddCharacters() functions which was resulting in an error when added characters exceeded the capacity of the atlas texture. +- Updated TMP_FontAsset.TryAddCharacters functions to add new overloads returning list of characters that could not be added. +- Added function in OnEnable of FontAsset Editor's to clean up Fallback list to remove any null / empty entries. +- Added support for Stereo rendering to the TMP Distance Field and Mobile Distance Field shaders. + +## [1.4.0-preview.2a] - 2019-02-14 +### Changes +- Fixed an issue with SDF Scale handling where the text object would not render correctly after the object scale had been set to zero. +- Fixed an issue with the TMP_UpdateManager where text objects were not getting unregistered correctly. +- Any changes to Font Asset Creation Settings' padding, atlas width and / or atlas height will now result in all Material Presets for the given font asset to also be updated. +- Added new section in the TMP Settings related to the new Dynamic Font System. +- Added new property in the Dynamic Font System section to determine if OpenType Font Features will be retrieved from source font files at runtime as new characters are added to font assets. Glyph Adjustment Data (Kerning) is the only feature currently supported. +- Fix an issue where font assets created at runtime were not getting their asset version number set to "1.1.0". +- Improved parsing of the text file used in the Font Asset Creator and "Characters from File" option to handle UTF16 "\u" and UTF32 "\U" escape character sequences. +- Fixed a Null Reference Error (NRE) that could occur when using the <font> tag with an invalid font name followed by the <sprite> tag. +- The Glyph Adjustment Table presentation and internal data structure has been changed to facilitate the future addition of OpenType font features. See https://forum.unity.com/threads/version-1-4-0-preview-with-dynamic-sdf-for-unity-2018-3-now-available.622420/#post-4206595 for more details. +- Fixed an issue with the <rotate> tag incorrectly affecting character spacing. + +## [1.4.0-preview.1] - 2019-01-30 +### Changes +- Renamed TMPro_FontUtilities to TMP_FontAssetCommon to more accurately reflect the content of this file. +- Accessing the TextMesh Pro Settings via the new Edit - Settings menu when TMP Essential Resources have not yet been imported in the project will no longer open a new window to provide the options to import these resources. +- Fixed an issue where using int.MaxValue, int.MinValue, float.MaxValue and float.MinValue in conjunction with SetText() would display incorrect numerical values. Case #1078521. +- Added public setter to the TMP Settings' missingGlyphCharacter to allow changing which character will be used for missing characters via scripting. +- Fixed a potential Null Reference Exception related to loading the Default Style Sheet. +- Added compiler conditional to TMP_UpdateManager.cs to address changes to SRP. +- Improved the <margin> tag to make it possible to define both left and right margin values. Example: <margin left=10% right=10px>. +- Added new menu option to allow the quick creation of a UI Button using TMP. New menu option is located in Create - UI - Button (TextMeshPro). +- Renamed TMP related create menu options. +- Fixed TMP object creation handling when using Prefab isolation mode. Case #1077392 +- Fixed another issue related to Prefabs where some serialized properties of the text object would incorrectly show up in the Overrides prefab options. Case #1093101 +- Fixed issue where changing the Sorting Layer or Sorting Order of a object would not dirty the scene. Case #1069776 +- Fixed a text alignment issue when setting text alignment on disabled text objects. Case #1047771 +- Fixed an issue where text object bounds were not set correctly on newly created text objects or in some cases when setting the text to null or string.empty. Case #1093388 +- Fixed an issue in the IntToString() function that could result in Index Out Of Bounds error. Case #1102007 +- Changed the TMP_InputField IsValidChar function to protected virtual. +- The "Allow Rich Text Editing" property of the TMP_InputField is now set to false by default. +- Added new option to the Sprite Asset context menu to make it easier to update sprite glyphs edited via the Unity Sprite Editor. +- Added new Sharpness slider in the Debug section of the SDF Material inspector. +- Fixed an error that would occur when using the context menu Reset on text component. Case #1044726 +- Fixed issue where CharacterInfo.index would be incorrect as a result of using Surrogate Pairs in the text. Case #1037828 +- The TMP_EditorPanel and TMP_UiEditorPanel now have their "UseForChildren" flag set to true to enable user / custom inspectors to inherit from them. +- Fixed an issue where rich text tags using pixel (px) or font units (em) were not correctly accounting for orthographic camera mode. This change only affects the normal TMP text component. +- Fixed an inspector issue related to changes to the margin in the TMP Extra Settings panel. Case #1114253 +- Added new property to Glyph Adjustment Pairs which determines if Character Spacing Adjustments should affect the given pair. +- Updated the Glyph Adjustment Table where ID now represents the unicode (hex) value for the character instead of its decimal value. +- Added new SetValueWithoutNotify() function to TMP_DropDown and SetTextWithoutNotify() function to TMP_InputField allowing these to be set without triggering OnValueChanged event. +- Geometry buffer deallocation which normally takes place when current allocations exceed those of the new text by more than 256 characters will no longer occur if the new text is set to null or string.empty. +- Fixed a minor issue where the underline SDF scale would be incorrect when the underline text sequence contained normal size characters and ended with a subscript or superscript character. +- Fixed an error that would occur when using the Reset Context menu on a Material using the SDF Surface or Mobile SDF Surface Shaders. Case #1122279 +- Resolved a Null Reference Error that would appear when cycling through the text overflow modes. Case #1121624 + +## [1.3.0] - 2018-08-09 +### Changes +- Revamped UI to conform to Unity Human Interface Guidelines. +- Updated the title text on the Font Asset Creator window tab to "Font Asset Creator". +- Using TMP_Text.SetCharArray() with an empty char[] array will now clear the text. +- Made a small improvement to the TMP Input Field when using nested 2d RectMasks. +- Renamed symbol defines used by TMP to append TMP_ in front of the define to avoid potential conflicts with user defines. +- Improved the Project Files GUID Remapping tool to allow specifying a target folder to scan. +- Added the ability to cancel the scanning process used by the Project Files GUID Remapping tool. +- Moved TMP Settings to universal settings window in 2018.3 and above. +- Changing style sheet in the TMP Settings will now be reflected automatically on existing text objects in the editor. +- Added new function TMP_StyleSheet.UpdateStyleSheet() to update the internal reference to which style sheet text objects should be using in conjunction with the style tag. + +## [1.2.4] - 2018-06-10 +### Changes +- Fixed a minor issue when using Justified and Flush alignment in conjunction with \u00A0. +- The Font Asset creationSettings field is no longer an Editor only serialized field. + +## [1.2.3] - 2018-05-29 +### Changes +- Added new bitmap shader with support for Custom Font Atlas texture. This shader also includes a new property "Padding" to provide control over the geometry padding to closely fit a modified / custom font atlas texture. +- Fixed an issue with ForceMeshUpdate(bool ignoreActiveState) not being handled correctly. +- Cleaned up memory allocations from repeated use of the Font Asset Creator. +- Sprites are now scaled based on the current font instead of the primary font asset assigned to the text object. +- It is now possible to recall the most recent settings used when creating a font asset in the Font Asset Creator. +- Newly created font assets now contain the settings used when they were last created. This will make the process of updating / regenerating font assets much easier. +- New context menu "Update Font Asset" was added to the Font Asset inspector which will open the Font Asset Creator with the most recently used settings for that font asset. +- New Context Menu "Create Font Asset" was added to the Font inspector panel which will open the Font Asset Creator with this source font file already selected. +- Fixed 3 compiler warnings that would appear when using .Net 4.x. +- Modified the TMP Settings to place the Missing Glyph options in their own section. +- Renamed a symbol used for internal debugging to avoid potential conflicts with other user project defines. +- TMP Sprite Importer "Create Sprite Asset" and "Save Sprite Asset" options are disabled unless a Sprite Data Source, Import Format and Sprite Texture Atlas are provided. +- Improved the performance of the Project Files GUID Remapping tool. +- Users will now be prompted to import the TMP Essential Resources when using the Font Asset Creator if such resources have not already been imported. + +## [1.2.2] - 2018-03-28 +### Changes +- Calling SetAllDirty() on a TMP text component will now force a regeneration of the text object including re-parsing of the text. +- Fixed potential Null Reference Exception that could occur when assigning a new fallback font asset. +- Removed public from test classes. +- Fixed an issue where using nested links (which doesn't make sense conceptually) would result in an error. Should accidental use of nested links occurs, the last / most nested ends up being used. +- Fixed a potential text alignment issue where an hyphen at the end of a line followed by a new line containing a single word too long to fit the text container would result in miss alignment of the hyphen. +- Updated package license. +- Non-Breaking Space character (0xA0) will now be excluded from word spacing adjustments when using Justified or Flush text alignment. +- Improved handling of Underline, Strikethrough and Mark tag with regards to vertex color and Color tag alpha. +- Improved TMP_FontAsset.HasCharacter(char character, bool searchFallbacks) to include a recursive search of fallbacks as well as TMP Settings fallback list and default font asset. +- The <gradient> tag will now also apply to sprites provided the sprite tint attribute is set to a value of 1. Ex. <sprite="Sprite Asset" index=0 tint=1>. +- Updated Font Asset Creator Plugin to allow for cancellation of the font asset generation process. +- Added callback to support the Scriptable Render Pipeline (SRP) with the normal TextMeshPro component. +- Improved handling of some non-breaking space characters which should not be ignored at the end of a line. +- Sprite Asset fallbacks will now be searched when using the <sprite> tag and referencing a sprite by Unicode or by Name. +- Updated EmojiOne samples from https://www.emojione.com/ and added attribution. +- Removed the 32bit versions of the TMP Plugins used by the Font Asset Creator since the Unity Editor is now only available as 64bit. +- The isTextTruncated property is now serialized. +- Added new event handler to the TMP_TextEventHandler.cs script included in Example 12a to allow tracking of interactions with Sprites. + +## [1.2.1] - 2018-02-14 +### Changes +- Package is now backwards compatible with Unity 2018.1. +- Renamed Assembly Definitions (.asmdef) to new UPM package conventions. +- Added DisplayName for TMP UPM package. +- Revised Editor and Playmode tests to ignore / skip over the tests if the required resources are not present in the project. +- Revised implementation of Font Asset Creator progress bar to use Unity's EditorGUI.ProgressBar instead of custom texture. +- Fixed an issue where using the material tag in conjunction with fallback font assets was not handled correctly. +- Fixed an issue where changing the fontStyle property in conjunction with using alternative typefaces / font weights would not correctly trigger a regeneration of the text object. + +## [1.2.0] - 2018-01-23 +### Changes +- Package version # increased to 1.2.0 which is the first release for Unity 2018.2. + +## [1.1.0] - 2018-01-23 +### Changes +- Package version # increased to 1.1.0 which is the first release for Unity 2018.1. + +## [1.0.27] - 2018-01-16 +### Changes +- Fixed an issue where setting the TMP_InputField.text property to null would result in an error. +- Fixed issue with Raycast Target state not getting serialized properly when saving / reloading a scene. +- Changed reference to PrefabUtility.GetPrefabParent() to PrefabUtility.GetCorrespondingObjectFromSource() to reflect public API change in 2018.2 +- Option to import package essential resources will only be presented to users when accessing a TMP component or the TMP Settings file via the project menu. + +## [1.0.26] - 2018-01-10 +### Added +- Removed Tizen player references in the TMP_InputField as the Tizen player is no longer supported as of Unity 2018.1. + +## [1.0.25] - 2018-01-05 +### Added +- Fixed a minor issue with PreferredValues calculation in conjunction with using text auto-sizing. +- Improved Kerning handling where it is now possible to define positional adjustments for the first and second glyph in the pair. +- Renamed Kerning Info Table to Glyph Adjustment Table to better reflect the added functionality of this table. +- Added Search toolbar to the Glyph Adjustment Table. +- Fixed incorrect detection / handling of Asset Serialization mode in the Project Conversion Utility. +- Removed SelectionBase attribute from TMP components. +- Revised TMP Shaders to support the new UNITY_UI_CLIP_RECT shader keyword which can provide a performance improvement of up to 30% on some devices. +- Added TMP_PRESENT define as per the request of several third party asset publishers. + +## [1.0.23] - 2017-11-14 +### Added +- New menu option added to Import Examples and additional content like Font Assets, Materials Presets, etc for TextMesh Pro. This new menu option is located in "Window -> TextMeshPro -> Import Examples and Extra Content". +- New menu option added to Convert existing project files and assets created with either the Source Code or DLL only version of TextMesh Pro. Please be sure to backup your project before using this option. The new menu option is located in "Window -> TextMeshPro -> Project Files GUID Remapping Tool". +- Added Assembly Definitions for the TMP Runtime and Editor scripts. +- Added support for the UI DirtyLayoutCallback, DirtyVerticesCallback and DirtyMaterialCallback. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/CHANGELOG.md.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/CHANGELOG.md.meta new file mode 100644 index 0000000..edf5c32 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 22464cf7ab0243a6bf9c79851183b002 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Documentation~/TextMeshPro.md b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Documentation~/TextMeshPro.md new file mode 100644 index 0000000..8f8c092 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Documentation~/TextMeshPro.md @@ -0,0 +1,35 @@ +# **_TextMesh Pro User Guide_** + +#### **Overview** +This User Guide was designed to provide first time users of TextMesh Pro with a basic overview of the features and functionality of the tool. + +#### **Installation** +The TextMesh Pro UPM package is already included with the Unity Editor and as such does not require installation. TextMesh Pro "TMP" does however require adding resources to your project which are essential for using TextMesh Pro. + +To import the "*TMP Essential Resources*", please use the "*Window -> TextMeshPro -> Import TMP Essential Resources*" menu option. These resources will be added at the root of your project in the "*TextMesh Pro*" folder. + +The TextMesh Pro package also includes additional resources and examples that will make discovering and learning about TextMesh Pro's powerful features easier. It is strongly recommended that first time users import these additional resources. + +To import the "*TMP Examples & Extras*", please use the "*Window -> TextMeshPro -> Import TMP Examples & Extras*" menu option. These resources will also be added in the same "*TextMesh Pro*" folder inside your project. + + +#### **Quick Start** +There are two TextMesh Pro components available. The first TMP text component is of type <TextMeshPro> and designed to work with the MeshRenderer. This component is an ideal replacement for the legacy TextMesh component. + +To add a new <TextMeshPro> text object, go to: *GameObject->3D Object->TextMeshPro Text*. + +The second TMP text component is of type <TextMeshProUGUI> and designed to work with the CanvasRenderer and Canvas system. This component is an ideal replacement for the UI.Text component. + +To add a new <TextMeshProUGUI> text object, go to: *GameObject->UI->TextMeshPro Text*. + +You may also wish to watch this [Getting Started](https://youtu.be/olnxlo-Wri4) short video which covers this topic. + +We strongly recommend that you also watch the [Font Asset Creation](https://youtu.be/qzJNIGCFFtY) video as well as the [Working with Material Presets](https://youtu.be/d2MARbDNeaA) as these two topics is also key to working and getting the most out of TextMesh Pro. + +As mentionned in the Installation section of this guide, it is recommended that you import the "*TMP Examples & Extras*" and take the time to explore each of the examples as they provide a great overview of the functionality of the tool and the many text layout and [rich text tags](http://digitalnativestudios.com/textmeshpro/docs/rich-text/) available in TextMesh Pro. + +#### **Support & API Documentation** +Should you have questions or require assistance, please visit the [Unity UI & TextMesh Pro](https://forum.unity.com/forums/unity-ui-textmesh-pro.60/) section of the Unity forum as well as the [TextMesh Pro User Forum](http://digitalnativestudios.com/forum/index.php) where you will find additional information, [Video Tutorials](http://digitalnativestudios.com/forum/index.php?board=4.0) and [FAQ](http://digitalnativestudios.com/forum/index.php?topic=890.0). In the event you are unable to find the information you seek, always feel free to post on the [Unity UI & TextMesh Pro](https://forum.unity.com/forums/unity-ui-textmesh-pro.60/) section user forum. + +[Online Documentation](http://digitalnativestudios.com/textmeshpro/docs/) is also available on TextMesh Pro including Rich Text tags, Shaders, Scripting API and more. + diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Documentation~/TextMeshPro.md.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Documentation~/TextMeshPro.md.meta new file mode 100644 index 0000000..8c72f72 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Documentation~/TextMeshPro.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ca77d26d10b9455ca5a4b22c93be2a31 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources.meta new file mode 100644 index 0000000..7c07b00 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1a0a27327b54c3bac52a08929c33f81 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos.meta new file mode 100644 index 0000000..f2596c7 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e93ec7eb6de342aabd156833e253f838 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Dropdown Icon.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Dropdown Icon.psd new file mode 100644 index 0000000..93f5a2c Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Dropdown Icon.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Dropdown Icon.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Dropdown Icon.psd.meta new file mode 100644 index 0000000..7bdb473 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Dropdown Icon.psd.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: a7ec9e7ad8b847b7ae4510af83c5d868 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 7 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -2 + maxTextureSize: 128 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: 2 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: WebGL + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 1 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Font Asset Icon.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Font Asset Icon.psd new file mode 100644 index 0000000..2fb1164 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Font Asset Icon.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Font Asset Icon.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Font Asset Icon.psd.meta new file mode 100644 index 0000000..bd64ad7 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Font Asset Icon.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: ee148e281f3c41c5b4ff5f8a5afe5a6c +timeCreated: 1463559213 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Input Field Icon.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Input Field Icon.psd new file mode 100644 index 0000000..f0360d3 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Input Field Icon.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Input Field Icon.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Input Field Icon.psd.meta new file mode 100644 index 0000000..eb2e1ce --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Input Field Icon.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 3ee40aa79cd242a5b53b0b0ca4f13f0f +timeCreated: 1457860876 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Sprite Asset Icon.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Sprite Asset Icon.psd new file mode 100644 index 0000000..7036296 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Sprite Asset Icon.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Sprite Asset Icon.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Sprite Asset Icon.psd.meta new file mode 100644 index 0000000..a22cdf1 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Sprite Asset Icon.psd.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: ec7c645d93308c04d8840982af12101e +timeCreated: 1463559213 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Text Component Icon.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Text Component Icon.psd new file mode 100644 index 0000000..3cc4163 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Text Component Icon.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Text Component Icon.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Text Component Icon.psd.meta new file mode 100644 index 0000000..623993d --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Gizmos/TMP - Text Component Icon.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 2fd6421f253b4ef1a19526541f9ffc0c +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 128 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders.meta new file mode 100644 index 0000000..95efe2b --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2da27f5fe80a3a549ac7331d9f52f5f0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_Properties.cginc b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_Properties.cginc new file mode 100644 index 0000000..2e96258 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_Properties.cginc @@ -0,0 +1,85 @@ +// UI Editable properties +uniform sampler2D _FaceTex; // Alpha : Signed Distance +uniform float _FaceUVSpeedX; +uniform float _FaceUVSpeedY; +uniform fixed4 _FaceColor; // RGBA : Color + Opacity +uniform float _FaceDilate; // v[ 0, 1] +uniform float _OutlineSoftness; // v[ 0, 1] + +uniform sampler2D _OutlineTex; // RGBA : Color + Opacity +uniform float _OutlineUVSpeedX; +uniform float _OutlineUVSpeedY; +uniform fixed4 _OutlineColor; // RGBA : Color + Opacity +uniform float _OutlineWidth; // v[ 0, 1] + +uniform float _Bevel; // v[ 0, 1] +uniform float _BevelOffset; // v[-1, 1] +uniform float _BevelWidth; // v[-1, 1] +uniform float _BevelClamp; // v[ 0, 1] +uniform float _BevelRoundness; // v[ 0, 1] + +uniform sampler2D _BumpMap; // Normal map +uniform float _BumpOutline; // v[ 0, 1] +uniform float _BumpFace; // v[ 0, 1] + +uniform samplerCUBE _Cube; // Cube / sphere map +uniform fixed4 _ReflectFaceColor; // RGB intensity +uniform fixed4 _ReflectOutlineColor; +//uniform float _EnvTiltX; // v[-1, 1] +//uniform float _EnvTiltY; // v[-1, 1] +uniform float3 _EnvMatrixRotation; +uniform float4x4 _EnvMatrix; + +uniform fixed4 _SpecularColor; // RGB intensity +uniform float _LightAngle; // v[ 0,Tau] +uniform float _SpecularPower; // v[ 0, 1] +uniform float _Reflectivity; // v[ 5, 15] +uniform float _Diffuse; // v[ 0, 1] +uniform float _Ambient; // v[ 0, 1] + +uniform fixed4 _UnderlayColor; // RGBA : Color + Opacity +uniform float _UnderlayOffsetX; // v[-1, 1] +uniform float _UnderlayOffsetY; // v[-1, 1] +uniform float _UnderlayDilate; // v[-1, 1] +uniform float _UnderlaySoftness; // v[ 0, 1] + +uniform fixed4 _GlowColor; // RGBA : Color + Intesity +uniform float _GlowOffset; // v[-1, 1] +uniform float _GlowOuter; // v[ 0, 1] +uniform float _GlowInner; // v[ 0, 1] +uniform float _GlowPower; // v[ 1, 1/(1+4*4)] + +// API Editable properties +uniform float _ShaderFlags; +uniform float _WeightNormal; +uniform float _WeightBold; + +uniform float _ScaleRatioA; +uniform float _ScaleRatioB; +uniform float _ScaleRatioC; + +uniform float _VertexOffsetX; +uniform float _VertexOffsetY; + +//uniform float _UseClipRect; +uniform float _MaskID; +uniform sampler2D _MaskTex; +uniform float4 _MaskCoord; +uniform float4 _ClipRect; // bottom left(x,y) : top right(z,w) +//uniform float _MaskWipeControl; +//uniform float _MaskEdgeSoftness; +//uniform fixed4 _MaskEdgeColor; +//uniform bool _MaskInverse; + +uniform float _MaskSoftnessX; +uniform float _MaskSoftnessY; + +// Font Atlas properties +uniform sampler2D _MainTex; +uniform float _TextureWidth; +uniform float _TextureHeight; +uniform float _GradientScale; +uniform float _ScaleX; +uniform float _ScaleY; +uniform float _PerspectiveFilter; +uniform float _Sharpness; diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_Properties.cginc.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_Properties.cginc.meta new file mode 100644 index 0000000..e6dcc0a --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_Properties.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3c6c403084eacec478a1129ce20061ea +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF Internal Editor.shader b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF Internal Editor.shader new file mode 100644 index 0000000..baf4501 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF Internal Editor.shader @@ -0,0 +1,75 @@ +// Simplified SDF shader: +// - No Shading Option (bevel / bump / env map) +// - No Glow Option +// - Softness is applied on both side of the outline + +Shader "Hidden/TMP/Internal/Editor/Distance Field SSD" { + + Properties{ + _FaceColor("Face Color", Color) = (1,1,1,1) + _FaceDilate("Face Dilate", Range(-1,1)) = 0 + + _OutlineColor("Outline Color", Color) = (0,0,0,1) + _OutlineWidth("Outline Thickness", Range(0,1)) = 0 + _OutlineSoftness("Outline Softness", Range(0,1)) = 0 + + _UnderlayColor("Border Color", Color) = (0,0,0,.5) + _UnderlayOffsetX("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness("Border Softness", Range(0,1)) = 0 + + _WeightNormal("Weight Normal", float) = 0 + _WeightBold("Weight Bold", float) = .5 + + _ShaderFlags("Flags", float) = 0 + _ScaleRatioA("Scale RatioA", float) = 1 + _ScaleRatioB("Scale RatioB", float) = 1 + _ScaleRatioC("Scale RatioC", float) = 1 + + _MainTex("Font Atlas", 2D) = "white" {} + _TextureWidth("Texture Width", float) = 1024 + _TextureHeight("Texture Height", float) = 1024 + _GradientScale("Gradient Scale", float) = 1 + _ScaleX("Scale X", float) = 1 + _ScaleY("Scale Y", float) = 1 + _PerspectiveFilter("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX("Vertex OffsetX", float) = 0 + _VertexOffsetY("Vertex OffsetY", float) = 0 + } + + SubShader + { + Tags + { + "ForceSupported" = "True" + } + + Lighting Off + Blend One OneMinusSrcAlpha + Cull Off + ZWrite Off + ZTest Always + + Pass + { + CGPROGRAM + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ OUTLINE_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMP_Properties.cginc" + + #include "TMP_SDF_SSD.cginc" + + ENDCG + } + } + + CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF Internal Editor.shader.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF Internal Editor.shader.meta new file mode 100644 index 0000000..5ba708d --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF Internal Editor.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9c442dc870b456e48b615cd8add0e9ef +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF_SSD.cginc b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF_SSD.cginc new file mode 100644 index 0000000..0f587bd --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF_SSD.cginc @@ -0,0 +1,132 @@ +struct vertex_t +{ + float4 position : POSITION; + float3 normal : NORMAL; + float4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; +}; + +struct pixel_t +{ + float4 position : SV_POSITION; + float4 faceColor : COLOR; + float4 outlineColor : COLOR1; + float2 texcoord0 : TEXCOORD0; + float4 param : TEXCOORD1; // weight, scaleRatio + float2 clipUV : TEXCOORD2; + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 texcoord2 : TEXCOORD3; + float4 underlayColor : COLOR2; + #endif +}; + +sampler2D _GUIClipTexture; +uniform float4x4 unity_GUIClipTextureMatrix; +float4 _MainTex_TexelSize; + +float4 SRGBToLinear(float4 rgba) +{ + return float4(lerp(rgba.rgb / 12.92f, pow((rgba.rgb + 0.055f) / 1.055f, 2.4f), step(0.04045f, rgba.rgb)), rgba.a); +} + +pixel_t VertShader(vertex_t input) +{ + pixel_t output; + + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.position; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + float4 vPosition = UnityObjectToClipPos(vert); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + // Generate UV for the Clip Texture + float3 eyePos = UnityObjectToViewPos(input.position); + float2 clipUV = mul(unity_GUIClipTextureMatrix, float4(eyePos.xy, 0, 1.0)); + + float4 color = input.color; + #if (FORCE_LINEAR && !UNITY_COLORSPACE_GAMMA) + color = SRGBToLinear(input.color); + #endif + + float opacity = color.a; + #if (UNDERLAY_ON | UNDERLAY_INNER) + opacity = 1.0; + #endif + + float4 faceColor = float4(color.rgb, opacity) * _FaceColor; + faceColor.rgb *= faceColor.a; + + float4 outlineColor = _OutlineColor; + outlineColor.a *= opacity; + outlineColor.rgb *= outlineColor.a; + + output.position = vPosition; + output.faceColor = faceColor; + output.outlineColor = outlineColor; + output.texcoord0 = float2(input.texcoord0.xy); + output.param = float4(0.5 - weight, 1.3333 * _GradientScale * (_Sharpness + 1) / _MainTex_TexelSize.z , _OutlineWidth * _ScaleRatioA * 0.5, 0); + output.clipUV = clipUV; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 underlayColor = _UnderlayColor; + underlayColor.rgb *= underlayColor.a; + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _MainTex_TexelSize.z; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _MainTex_TexelSize.w; + + output.texcoord2 = float4(input.texcoord0 + float2(x, y), input.color.a, 0); + output.underlayColor = underlayColor; + #endif + + return output; +} + +float4 PixShader(pixel_t input) : SV_Target +{ + float d = tex2D(_MainTex, input.texcoord0.xy).a; + + float2 UV = input.texcoord0.xy; + float scale = rsqrt(abs(ddx(UV.x) * ddy(UV.y) - ddy(UV.x) * ddx(UV.y))) * input.param.y; + + #if (UNDERLAY_ON | UNDERLAY_INNER) + float layerScale = scale; + layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); + float layerBias = input.param.x * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); + #endif + + scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); + + float4 faceColor = input.faceColor * saturate((d - input.param.x) * scale + 0.5); + + #ifdef OUTLINE_ON + float4 outlineColor = lerp(input.faceColor, input.outlineColor, sqrt(min(1.0, input.param.z * scale * 2))); + faceColor = lerp(outlineColor, input.faceColor, saturate((d - input.param.x - input.param.z) * scale + 0.5)); + faceColor *= saturate((d - input.param.x + input.param.z) * scale + 0.5); + #endif + + #if UNDERLAY_ON + d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale; + faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - layerBias) * (1 - faceColor.a); + #endif + + #if UNDERLAY_INNER + float bias = input.param.x * scale - 0.5; + float sd = saturate(d * scale - bias - input.param.z); + d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale; + faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - layerBias)) * sd * (1 - faceColor.a); + #endif + + #if (UNDERLAY_ON | UNDERLAY_INNER) + faceColor *= input.texcoord2.z; + #endif + + faceColor *= tex2D(_GUIClipTexture, input.clipUV).a; + + return faceColor; +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF_SSD.cginc.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF_SSD.cginc.meta new file mode 100644 index 0000000..3d0b3bf --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Shaders/TMP_SDF_SSD.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: abe6991365a27d341a10580f3b7c0f44 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures.meta new file mode 100644 index 0000000..d6754b0 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f8e6a2d47aba4c6c9b3c5a72d9f48da5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Dark.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Dark.psd new file mode 100644 index 0000000..8ebaa27 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Dark.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Dark.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Dark.psd.meta new file mode 100644 index 0000000..ed7250a --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Dark.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: fb5730e24283d0c489e5c7d0bee023d9 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Light.psd new file mode 100644 index 0000000..e598e6d Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Light.psd.meta new file mode 100644 index 0000000..1e747b2 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/SectionHeader_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: e3b0f810fdea84e40ab4ba20f256f7e8 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine.psd new file mode 100644 index 0000000..3da358a Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine.psd.meta new file mode 100644 index 0000000..09deb3c --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 8bc445bb79654bf496c92d0407840a92 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine_Light.psd new file mode 100644 index 0000000..cf49b6c Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine_Light.psd.meta new file mode 100644 index 0000000..78e14cb --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBaseLine_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 18775b51e3bd42299fd30bd036ea982f +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom.psd new file mode 100644 index 0000000..1f35779 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom.psd.meta new file mode 100644 index 0000000..8e79b48 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: ca51b19024094d1b87f3e07edb0a75fb +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom_Light.psd new file mode 100644 index 0000000..d8af55b Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom_Light.psd.meta new file mode 100644 index 0000000..9c9a6fc --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignBottom_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 585b70cb75dd43efbfead809c30a1731 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine.psd new file mode 100644 index 0000000..7eefe6b Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine.psd.meta new file mode 100644 index 0000000..0455a2f --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine.psd.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 0d9a36012a224080966c7b55896aa0f9 +timeCreated: 1467964791 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine_Light.psd new file mode 100644 index 0000000..f08bb6c Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine_Light.psd.meta new file mode 100644 index 0000000..dfd05a1 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCapLine_Light.psd.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 49679f302ac6408697f6b9314a38985c +timeCreated: 1467964413 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter.psd new file mode 100644 index 0000000..939bc6d Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter.psd.meta new file mode 100644 index 0000000..d189fc2 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 81ed8c76d2bc4a4c95d092c98af4e58f +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo.psd new file mode 100644 index 0000000..f9ce9a8 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo.psd.meta new file mode 100644 index 0000000..555bb1b --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo.psd.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: c76700ea0062413d9f69409b4e9e151b +timeCreated: 1484171296 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd new file mode 100644 index 0000000..e37b2e2 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd.meta new file mode 100644 index 0000000..044d0c2 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd.meta @@ -0,0 +1,56 @@ +fileFormatVersion: 2 +guid: 35ff0937876540d3bd4b6a941df62a92 +timeCreated: 1484171296 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter_Light.psd new file mode 100644 index 0000000..7274887 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter_Light.psd.meta new file mode 100644 index 0000000..d98d377 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignCenter_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 6ace62d30f494c948b71d5594afce11d +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush.psd new file mode 100644 index 0000000..eeeea67 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush.psd.meta new file mode 100644 index 0000000..84ed28c --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 691475c57a824010be0c6f474caeb7e1 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush_Light.psd new file mode 100644 index 0000000..b69f6a2 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush_Light.psd.meta new file mode 100644 index 0000000..b9e6124 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignFlush_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 64b9fad609434c489c32b1cdf2004a1c +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified.psd new file mode 100644 index 0000000..3ce55c4 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified.psd.meta new file mode 100644 index 0000000..f8a90b4 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 92027f7f8cfc4feaa477da0dc38d3d46 +timeCreated: 1472535271 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified_Light.psd new file mode 100644 index 0000000..d7fd5c8 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified_Light.psd.meta new file mode 100644 index 0000000..e5b5aa8 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignJustified_Light.psd.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: fa6bd40a216346b783a4cce741d277a5 +timeCreated: 1472535778 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft.psd new file mode 100644 index 0000000..fc7e10b Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft.psd.meta new file mode 100644 index 0000000..8023379 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 9288066c33474b94b6ee5465f4df1cc0 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft_Light.psd new file mode 100644 index 0000000..5522c37 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft_Light.psd.meta new file mode 100644 index 0000000..aaa8b81 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignLeft_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 12736c98af174f91827a26b66d2b01b9 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidLine.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidLine.psd new file mode 100644 index 0000000..14d28a2 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidLine.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidLine.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidLine.psd.meta new file mode 100644 index 0000000..e481463 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidLine.psd.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: c2f7f6a88b4c4f20a53deb72f3d9144c +timeCreated: 1426240649 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle.psd new file mode 100644 index 0000000..c4483db Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle.psd.meta new file mode 100644 index 0000000..d1ec528 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 41b96614b2e6494ba995ddcd252d11ae +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle_Light.psd new file mode 100644 index 0000000..4263bf9 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle_Light.psd.meta new file mode 100644 index 0000000..7cda20b --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMiddle_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 066619c9c9c84f89acb1b48c11a7efe2 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidline_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidline_Light.psd new file mode 100644 index 0000000..a5bed37 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidline_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidline_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidline_Light.psd.meta new file mode 100644 index 0000000..6fabec5 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignMidline_Light.psd.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: bb42b2d967d6427983c901a4ffc8ecd9 +timeCreated: 1426240650 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight.psd new file mode 100644 index 0000000..4ef1998 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight.psd.meta new file mode 100644 index 0000000..cf5c764 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 342a0f8aca7f4f0691338912faec0494 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight_Light.psd new file mode 100644 index 0000000..bdeff41 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight_Light.psd.meta new file mode 100644 index 0000000..dab7997 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignRight_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: e05ace3bd15740cda0bad60d89092a5b +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop.psd new file mode 100644 index 0000000..b00d458 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop.psd.meta new file mode 100644 index 0000000..74931bf --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: 48d034c499ee4697af9dd6e327110249 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop_Light.psd b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop_Light.psd new file mode 100644 index 0000000..84f0e61 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop_Light.psd differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop_Light.psd.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop_Light.psd.meta new file mode 100644 index 0000000..bbd509d --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Editor Resources/Textures/btn_AlignTop_Light.psd.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: ed041e68439749a69d0efa0e3d896c2e +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 32 + textureSettings: + filterMode: 0 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/LICENSE.md b/Library/PackageCache/com.unity.textmeshpro@2.1.1/LICENSE.md new file mode 100644 index 0000000..37d0615 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/LICENSE.md @@ -0,0 +1,5 @@ +TextMesh Pro copyright © 2014-2019 Unity Technologies ApS + +Licensed under the Unity Companion License for Unity-dependent projects--see [Unity Companion License](http://www.unity3d.com/legal/licenses/Unity_Companion_License). + +Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions. \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/LICENSE.md.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/LICENSE.md.meta new file mode 100644 index 0000000..1df9555 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0d2d0f36e67d4518a07df76235e91f9a +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources.meta new file mode 100644 index 0000000..e8a96b8 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ec95f4d5b2d1f14e9ff8682562553f9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Essential Resources.unitypackage b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Essential Resources.unitypackage new file mode 100644 index 0000000..aa27eb5 Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Essential Resources.unitypackage differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Essential Resources.unitypackage.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Essential Resources.unitypackage.meta new file mode 100644 index 0000000..bc49ab3 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Essential Resources.unitypackage.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ce4ff17ca867d2b48b5c8a4181611901 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Examples & Extras.unitypackage b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Examples & Extras.unitypackage new file mode 100644 index 0000000..ea3a62b Binary files /dev/null and b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Examples & Extras.unitypackage differ diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Examples & Extras.unitypackage.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Examples & Extras.unitypackage.meta new file mode 100644 index 0000000..aaf21f7 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Package Resources/TMP Examples & Extras.unitypackage.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bc00e25696e4132499f56528d3fed2e3 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData.json b/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData.json new file mode 100644 index 0000000..05c193e --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData.json @@ -0,0 +1,654 @@ +{ + "assetRecords": [ + { + "referencedResource": "Blue to Purple - Vertical.asset", + "target": "guid: 1e643bbd7e13d46418da3774e72bef60", + "replacement": "guid: 479a66fa4b094512a62b0a8e553ad95a" + }, + { + "referencedResource": "Dark to Light Green - Vertical.asset", + "target": "guid: 90c9133b254e2184b8084dea4f392337", + "replacement": "guid: 4c86a3366cd840348ebe8dc438570ee4" + }, + { + "referencedResource": "Light to Dark Green - Vertical.asset", + "target": "guid: 33c745f0979f3984182a138bcc6e57ec", + "replacement": "guid: 5cf8ae092ca54931b443bec5148f3c59" + }, + { + "referencedResource": "Yellow to Orange - Vertical.asset", + "target": "guid: e002cb2a36d9e4a439a062867fa24e1e", + "replacement": "guid: 69a525efa7e6472eab268f6ea605f06e" + }, + { + "referencedResource": "Crate - Surface Shader Scene.mat", + "target": "guid: e177c46c2a091564d88df2c2ca9dcf97", + "replacement": "guid: e6b9b44320f4448d9d5e0ee634259966" + }, + { + "referencedResource": "Ground - Logo Scene.mat", + "target": "guid: 504ae362e57fc464b847f1e9fd0e4035", + "replacement": "guid: c719e38f25a9480abd2480ab621a2949" + }, + { + "referencedResource": "Ground - Surface Shader Scene.mat", + "target": "guid: 9ed9aa864ec2d7f4dad266b9534c6d85", + "replacement": "guid: aadd5a709a48466c887296bb5b1b8110" + }, + { + "referencedResource": "Small Crate_diffuse.mat", + "target": "guid: 92f161029a6d3c54a92d9d283352a135", + "replacement": "guid: 22262639920f43d6be32430e4e58350d" + }, + { + "referencedResource": "Text Popup.prefab", + "target": "guid: c879e892866c8db4f8930b25672233ac", + "replacement": "guid: b06f0e6c1dfa4356ac918da1bb32c603" + }, + { + "referencedResource": "TextMeshPro - Prefab 1.prefab", + "target": "guid: a6a60659abb4d9d4b934feebd3dcc952", + "replacement": "guid: a6e39ced0ea046bcb636c3f0b2e2a745" + }, + { + "referencedResource": "TextMeshPro - Prefab 2.prefab", + "target": "guid: 1b190e3e0ab4c8e4881656b9160c59c2", + "replacement": "guid: fdad9d952ae84cafb74c63f2e694d042" + }, + { + "referencedResource": "Anton SDF.asset", + "target": "guid: f76ef802b8b940c46a31f9027f2b0158", + "replacement": "guid: 8a89fa14b10d46a99122fd4f73fca9a2" + }, + { + "referencedResource": "Anton SDF - Drop Shadow.mat", + "target": "guid: 250a1a103b3b4914c9707e6a423446d6", + "replacement": "guid: 749b9069dc4742c5bfa5c74644049926" + }, + { + "referencedResource": "Anton SDF - Outline.mat", + "target": "guid: e077dc203e948b740859c1c0ca8b9691", + "replacement": "guid: a00013af81304728b2be1f4309ee2433" + }, + { + "referencedResource": "Bangers SDF.asset", + "target": "guid: 808aa8f1ab804104aa7d0c337a6c1481", + "replacement": "guid: 125cb55b44b24c4393181402bc6200e6" + }, + { + "referencedResource": "Bangers SDF - Drop Shadow.mat", + "target": "guid: c26f698d4eee19e4a8b8f42cd299bab5", + "replacement": "guid: f2dcf029949142e28b974630369c8b4e" + }, + { + "referencedResource": "Bangers SDF - Outline.mat", + "target": "guid: db7f2cfbf23d6d54ca4e74a9abd55326", + "replacement": "guid: f629c6e43dba4bf38cb74d8860150664" + }, + { + "referencedResource": "Bangers SDF Glow.mat", + "target": "guid: 7dd7006c58d8a3148a73aa211d8c13d0", + "replacement": "guid: d75b8f41e959450c84ac6e967084d3e1" + }, + { + "referencedResource": "Bangers SDF Logo.mat", + "target": "guid: 4fb51aa7001a2244395ddf6a15d37389", + "replacement": "guid: f4e195ac1e204eff960149d1cb34e18c" + }, + { + "referencedResource": "Electronic Highway Sign SDF.asset", + "target": "guid: 163292f6f226d954593d45b079f8aae0", + "replacement": "guid: dc36b3fdc14f47ebb36fd484a67e268a" + }, + { + "referencedResource": "LiberationSans SDF - Drop Shadow.mat", + "target": "guid: 33db60c37b63f08448ded4b385e74e38", + "replacement": "guid: e73a58f6e2794ae7b1b7e50b7fb811b0" + }, + { + "referencedResource": "LiberationSans SDF - Metalic Green.mat", + "target": "guid: 4f9843c79516ed1468b9b5a4f32e67e3", + "replacement": "guid: 8b29aaa3eec7468097ff07adfcf29ac9" + }, + { + "referencedResource": "LiberationSans SDF - Outline.mat", + "target": "guid: 83a1b0fe6c3dbac44b66f09c82e1d509", + "replacement": "guid: 79459efec17a4d00a321bdcc27bbc385" + }, + { + "referencedResource": "LiberationSans SDF - Overlay.mat", + "target": "guid: 55eb086ae18c76e4bb6cc7106d0dd6e2", + "replacement": "guid: 9ad269c99dcf42b7aedefd83dd5a7b9d" + }, + { + "referencedResource": "LiberationSans SDF - Soft Mask.mat", + "target": "guid: 74e06d99c1657fc4abd33f20685ea9ff", + "replacement": "guid: 42df1c7856584b6b8db9a509b6b10074" + }, + { + "referencedResource": "Oswald Bold SDF.asset", + "target": "guid: 09641b029dfa78843902b548a9de7553", + "replacement": "guid: 0161d805a3764c089bef00bfe00793f5" + }, + { + "referencedResource": "Roboto-Bold SDF.asset", + "target": "guid: d62a573c923f5cb47b8ff65261033b90", + "replacement": "guid: 5302535af1044152a457ed104f1f4b91" + }, + { + "referencedResource": "Roboto-Bold SDF - Drop Shadow.mat", + "target": "guid: 102e7c5c5e3b1f3468518cb166967d77", + "replacement": "guid: b246c4190f4e46ec9352fe15a7b09ce0" + }, + { + "referencedResource": "Roboto-Bold SDF - Surface.mat", + "target": "guid: e2da38ead8f8238449c54a1ef49e080f", + "replacement": "guid: e6b276ec991f467aa14ef1f3cc665993" + }, + { + "referencedResource": "DropCap Numbers.asset", + "target": "guid: c4fd2a959a50b584b92dedfefec1ffda", + "replacement": "guid: 14aa93acbb234d16aaef0e8b46814db6" + }, + { + "referencedResource": "Benchmark01.cs", + "target": "guid: c5fb1b5c24460f745be29cc0eb06a58c", + "replacement": "guid: f970ea55f9f84bf79b05dab180b8c125" + }, + { + "referencedResource": "Benchmark01_UGUI.cs", + "target": "guid: 5e6abf300e36c0a4eb43969c3f2172f8", + "replacement": "guid: 8ef7be1c625941f7ba8ed7cc71718c0d" + }, + { + "referencedResource": "Benchmark02.cs", + "target": "guid: 3467f4170568a484d8b57e2051a27363", + "replacement": "guid: e8538afcddc14efbb5d9e94b7ae50197" + }, + { + "referencedResource": "Benchmark03.cs", + "target": "guid: e6e9d20624a23da4c8b2b6fb7608bb9a", + "replacement": "guid: a73109742c8d47ac822895a473300c29" + }, + { + "referencedResource": "Benchmark04.cs", + "target": "guid: 481dd67bdedc3104ea2156ed49f3acd5", + "replacement": "guid: dc20866c0d5e413ab7559440e15333ae" + }, + { + "referencedResource": "CameraController.cs", + "target": "guid: a9f0e07aefca0cc459134ff9df622278", + "replacement": "guid: 2d687537154440a3913a9a3c7977978c" + }, + { + "referencedResource": "ChatController.cs", + "target": "guid: eba5a4db2591a5844aea5f6f3ad8548e", + "replacement": "guid: 53d91f98a2664f5cb9af11de72ac54ec" + }, + { + "referencedResource": "EnvMapAnimator.cs", + "target": "guid: 7e69f3f28c520ce4d9ab9964b2895b1a", + "replacement": "guid: a4b6f99e8bc54541bbd149b014ff441c" + }, + { + "referencedResource": "ObjectSpin.cs", + "target": "guid: 5e7872ff51989434dabf7807265ada3c", + "replacement": "guid: 4f19c7f94c794c5097d8bd11e39c750d" + }, + { + "referencedResource": "ShaderPropAnimator.cs", + "target": "guid: c56cf968fb6a5b6488e709242718845d", + "replacement": "guid: 2787a46a4dc848c1b4b7b9307b614bfd" + }, + { + "referencedResource": "SimpleScript.cs", + "target": "guid: c64808ff5137c9044a583750e5b0468a", + "replacement": "guid: 9eff140b25d64601aabc6ba32245d099" + }, + { + "referencedResource": "SkewTextExample.cs", + "target": "guid: 48d40dfeb33b717488f55ddbf676643a", + "replacement": "guid: d412675cfb3441efa3bf8dcd9b7624dc" + }, + { + "referencedResource": "TeleType.cs", + "target": "guid: 9094c5c777af3f14489e8947748e86e6", + "replacement": "guid: e32c266ee6204b21a427753cb0694c81" + }, + { + "referencedResource": "TextConsoleSimulator.cs", + "target": "guid: 45757dcc8f119454dac6365e8fd15e8b", + "replacement": "guid: 43bcd35a1c0c40ccb6d472893fe2093f" + }, + { + "referencedResource": "TextMeshProFloatingText.cs", + "target": "guid: dd0e4b969aa70504382a89d2f208ae6c", + "replacement": "guid: a4d4c76e63944cba8c7d00f56334b98c" + }, + { + "referencedResource": "TextMeshSpawner.cs", + "target": "guid: 385939aed18e82d41894437798c30ed8", + "replacement": "guid: 76c11bbcfddf44e0ba17d6c2751c8d84" + }, + { + "referencedResource": "TMP_ExampleScript_01.cs", + "target": "guid: 36bafabb5572c6347923b971425ab3be", + "replacement": "guid: 6f2c5b59b6874405865e2616e4ec276a" + }, + { + "referencedResource": "TMP_FrameRateCounter.cs", + "target": "guid: c0357609254b68d4881cab18f04dd4dc", + "replacement": "guid: 686ec78b56aa445795335fbadafcfaa4" + }, + { + "referencedResource": "TMP_TextEventCheck.cs", + "target": "guid: ba181bda76b7f6047ba2188e94bf0894", + "replacement": "guid: d736ce056cf444ca96e424f4d9c42b76" + }, + { + "referencedResource": "TMP_TextEventHandler.cs", + "target": "guid: 48a2fdbd95acd794caf78a85a0b6926a", + "replacement": "guid: 1312ae25639a4bae8e25ae223209cc50" + }, + { + "referencedResource": "TMP_TextInfoDebugTool.cs", + "target": "guid: 5eeee4467ee5b6a4884a1ec94812d93e", + "replacement": "guid: 21256c5b62f346f18640dad779911e20" + }, + { + "referencedResource": "TMP_TextSelector_A.cs", + "target": "guid: 68baf2864c88f4a43a50f16709de8717", + "replacement": "guid: 103e0a6a1d404693b9fb1a5173e0e979" + }, + { + "referencedResource": "TMP_TextSelector_B.cs", + "target": "guid: f499ff45b9a3d0840a0df48d01b2877b", + "replacement": "guid: a05dcd8be7ec4ccbb35c26219884aa37" + }, + { + "referencedResource": "TMP_UiFrameRateCounter.cs", + "target": "guid: dc33b7a34d20d5e4e8d54b6867ce81e3", + "replacement": "guid: 24b0dc2d1d494adbbec1f4db26b4cf83" + }, + { + "referencedResource": "TMPro_InstructionOverlay.cs", + "target": "guid: 53b866620ba77504eaf52cab7dbd95c9", + "replacement": "guid: c3c1afeda5e545e0b19add5373896d2e" + }, + { + "referencedResource": "VertexColorCycler.cs", + "target": "guid: c8d54cdd5913d4e4bb7b655d7d16835b", + "replacement": "guid: 91b8ba3d52e041fab2d0e0f169855539" + }, + { + "referencedResource": "VertexJitter.cs", + "target": "guid: e4769cb37968ea948a763a9a89f9e583", + "replacement": "guid: 2ed57967c52645d390a89dcf8f61ba73" + }, + { + "referencedResource": "VertexShakeA.cs", + "target": "guid: eaa12d191e718c945ac55da73fa469db", + "replacement": "guid: f7cfa58e417a46ea8889989684c2522e" + }, + { + "referencedResource": "VertexShakeB.cs", + "target": "guid: 32c83a5d3ba42b84aa26386eac47566b", + "replacement": "guid: e4e0d9ccee5f4950be8979268c9014e0" + }, + { + "referencedResource": "VertexZoom.cs", + "target": "guid: 5305493000edc7d4ea4302757dc19a99", + "replacement": "guid: 52ec835d14bd486f900952b77698b7eb" + }, + { + "referencedResource": "WarpTextExample.cs", + "target": "guid: f3eef864a10f51045a7530e2afe7c179", + "replacement": "guid: 790744c462254b7ba8038e6ed28b3db2" + }, + { + "referencedResource": "DropCap Numbers.psd", + "target": "guid: 28b41fef228d6814f90e541deaf9f262", + "replacement": "guid: fd09957580ac4326916010f1f260975b" + }, + { + "referencedResource": "Brushed Metal 3.jpg", + "target": "guid: c30270e41dccf9441ab56d94261bdcfa", + "replacement": "guid: f88677df267a41d6be1e7a6133e7d227" + }, + { + "referencedResource": "Engraved Wall.jpg", + "target": "guid: 93d6f74f2ef358e41989d4152b195f88", + "replacement": "guid: e0f91e6569da4934a48d85bf8d3063f0" + }, + { + "referencedResource": "Engraved Wall Normal.jpg", + "target": "guid: 1edd0950293e8664094053a041548c23", + "replacement": "guid: 20f91c93e7fb490f9496609c52ef3904" + }, + { + "referencedResource": "Floor Cement.jpg", + "target": "guid: ac5a0a5373b36e049bb7f98f88dbc244", + "replacement": "guid: 283f897e4925411ebbaa758b4cb13fc2" + }, + { + "referencedResource": "Floor Tiles 1 - diffuse.jpg", + "target": "guid: 7bbfb8818476e4641ba3e75f5225eb69", + "replacement": "guid: 85ac55597b97403c82fc6601a93cf241" + }, + { + "referencedResource": "Floor Tiles 1 - normal.jpg", + "target": "guid: e00d5a9a0944134448432ccacf221b95", + "replacement": "guid: c45cd05946364f32aba704f0853a975b" + }, + { + "referencedResource": "Fruit Jelly (B&W).jpg", + "target": "guid: 74d8c208a0193e14ca6916bea88a2c52", + "replacement": "guid: 1cdc5b506b1a4a33a53c30669ced1f51" + }, + { + "referencedResource": "Gradient Diagonal (Color).jpg", + "target": "guid: 2421a4955e71725448211e6bfbc7d7fb", + "replacement": "guid: 2ce5c55e85304b819a1826ecbc839aa5" + }, + { + "referencedResource": "Gradient Horizontal (Color).jpg", + "target": "guid: 0bbb43aff4f7811419ffceb1b16cf3d6", + "replacement": "guid: 6eb184de103d4b3f812b38561065192f" + }, + { + "referencedResource": "Gradient Vertical (Color).jpg", + "target": "guid: 3359915af07779e4e9a966df9eed764f", + "replacement": "guid: 03d0538de6e24c0f819bfc9ce084dfa9" + }, + { + "referencedResource": "Mask Zig-n-Zag.psd", + "target": "guid: 04eb87e72b3c1c648ba47a869ee00505", + "replacement": "guid: bb8dfcd263ad4eb383a33d74a720be6f" + }, + { + "referencedResource": "Sand Normal Map.jpg", + "target": "guid: 89e1b1c005d29cf4598ea861deb35a80", + "replacement": "guid: 8b8c8a10edf94ddc8cc4cc4fcd5696a9" + }, + { + "referencedResource": "Small Crate_diffuse.jpg", + "target": "guid: 64734c9bc6df32149a0c9cb0b18693e1", + "replacement": "guid: 602cb87b6a29443b8636370ea0751574" + }, + { + "referencedResource": "Small Crate_normal.jpg", + "target": "guid: 81b50d9cb6f3104448ec54c00a80101a", + "replacement": "guid: 8878a782f4334ecbbcf683b3ac780966" + }, + { + "referencedResource": "Stainless 03.png", + "target": "guid: 40d7f27f614cc1043a1f7e19074f461c", + "replacement": "guid: 83cb272f9ee046f6ab6636ca38af8db4" + }, + { + "referencedResource": "Text Overflow - Linked Text Image 1.png", + "target": "guid: 1fd8c568b1fcdbe43be65c1619cf3293", + "replacement": "guid: 4ccf43d26c4748c792174516f4a8fcef" + }, + { + "referencedResource": "Text Overflow - Linked Text UI Screenshot.png", + "target": "guid: 7983d2ec0427c114a916ae3c4769dc10", + "replacement": "guid: c76d18757a194d618355f05f815cb0a1" + }, + { + "referencedResource": "Wipe Pattern - Circle.psd", + "target": "guid: 6f5e9497d22a7a84193ec825e2eb41ac", + "replacement": "guid: 10c49fcd9c64421db7c0133e61e55f97" + }, + { + "referencedResource": "Wipe Pattern - Diagonal.psd", + "target": "guid: 8ee4d366b96418044aa9f94b3e2de645", + "replacement": "guid: ed5290d8df18488780e2996b9b882f01" + }, + { + "referencedResource": "Wipe Pattern - Radial Double.psd", + "target": "guid: 3e0e22da7c9570b498205179ef58ef38", + "replacement": "guid: 7631f4eff8f74ed38eb3eb9db17134e1" + }, + { + "referencedResource": "Wipe Pattern - Radial Quad.psd", + "target": "guid: 05ffd580f33f74644a6025ec196860af", + "replacement": "guid: 2b5e9ae96c5644d8bae932f8b4ca68a2" + }, + { + "referencedResource": "LiberationSans SDF.asset", + "target": "guid: 715b80e429c437e40867928a4e1fc975", + "replacement": "guid: 8f586378b4e144a9851e7b34d9b748ee" + }, + { + "referencedResource": "LineBreaking Following Characters.txt", + "target": "guid: 312ba5b9e90627940866e19549a788cf", + "replacement": "guid: fade42e8bc714b018fac513c043d323b" + }, + { + "referencedResource": "LineBreaking Leading Characters.txt", + "target": "guid: 8d713940fcbede142ae4a33ea0062b33", + "replacement": "guid: d82c1b31c7e74239bff1220585707d2b" + }, + { + "referencedResource": "TMP_Bitmap.shader", + "target": "guid: edfcf888cd11d9245b91d2883049a57e", + "replacement": "guid: 128e987d567d4e2c824d754223b3f3b0" + }, + { + "referencedResource": "TMP_Bitmap-Mobile.shader", + "target": "guid: d1cf17907700cb647aa3ea423ba38f2e", + "replacement": "guid: 1e3b057af24249748ff873be7fafee47" + }, + { + "referencedResource": "TMP_SDF.shader", + "target": "guid: dca26082f9cb439469295791d9f76fe5", + "replacement": "guid: 68e6db2ebdc24f95958faec2be5558d6" + }, + { + "referencedResource": "TMP_SDF Overlay.shader", + "target": "guid: 4a7755d6b5b67874f89c85f56f95fe97", + "replacement": "guid: dd89cf5b9246416f84610a006f916af7" + }, + { + "referencedResource": "TMP_SDF-Mobile.shader", + "target": "guid: cafd18099dfc0114896e0a8b277b81b6", + "replacement": "guid: fe393ace9b354375a9cb14cdbbc28be4" + }, + { + "referencedResource": "TMP_SDF-Mobile Masking.shader", + "target": "guid: afc255f7c2be52e41973a3d10a2e632d", + "replacement": "guid: bc1ede39bf3643ee8e493720e4259791" + }, + { + "referencedResource": "TMP_SDF-Mobile Overlay.shader", + "target": "guid: 9ecb3fe313cb5f7478141eba4a2d54ed", + "replacement": "guid: a02a7d8c237544f1962732b55a9aebf1" + }, + { + "referencedResource": "TMP_SDF-Surface.shader", + "target": "guid: 8e6b9842dbb1a5a4887378afab854e63", + "replacement": "guid: f7ada0af4f174f0694ca6a487b8f543d" + }, + { + "referencedResource": "TMP_SDF-Surface-Mobile.shader", + "target": "guid: 3c2ea7753c1425145a74d106ec1cd852", + "replacement": "guid: 85187c2149c549c5b33f0cdb02836b17" + }, + { + "referencedResource": "TMP_Sprite.shader", + "target": "guid: 3a1c68c8292caf046bd21158886c5e40", + "replacement": "guid: cf81c85f95fe47e1a27f6ae460cf182c" + }, + { + "referencedResource": "Default Sprite Asset.asset", + "target": "guid: 273ca6c80b4b5d746b5e548f532bffd8", + "replacement": "guid: fbef3c704dce48f08a44612d6c856c8d" + }, + { + "referencedResource": "EmojiOne.asset", + "target": "guid: 9a952e2781ef26940ae089f1053ef4ef", + "replacement": "guid: c41005c129ba4d66911b75229fd70b45" + }, + { + "referencedResource": "TMP Default Style Sheet.asset", + "target": "guid: 54d1085f9a2fdea4587fcfc7dddcd4bc", + "replacement": "guid: f952c082cb03451daed3ee968ac6c63e" + }, + { + "referencedResource": "TMP Settings.asset", + "target": "guid: 69ed5bac41eebaa4c97e9d2a4168c54f", + "replacement": "guid: 3f5b5dff67a942289a9defa416b206f3" + }, + { + "referencedResource": "TextContainer.cs", + "target": "guid: 3b34fc186f40e8043b977d4fa70db8c5", + "replacement": "guid: 32d40088a6124c578ad6b428df586e2e" + }, + { + "referencedResource": "TextContainer.cs", + "target": "fileID: 311004786, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 32d40088a6124c578ad6b428df586e2e" + }, + { + "referencedResource": "TextMeshPro.cs", + "target": "guid: 1a1578b9753d2604f98d608cb4239e2f", + "replacement": "guid: 9541d86e2fd84c1d9990edf0852d74ab" + }, + { + "referencedResource": "TextMeshPro.cs", + "target": "fileID: -806885394, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab" + }, + { + "referencedResource": "TextMeshProUGUI.cs", + "target": "guid: 496f2e385b0c62542b5c739ccfafd8da", + "replacement": "guid: f4688fdb7df04437aeb418b961361dc5" + }, + { + "referencedResource": "TextMeshProUGUI.cs", + "target": "fileID: 1453722849, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5" + }, + { + "referencedResource": "TMP_Asset.cs", + "target": "guid: e2c4405608b405a4680436e183e53c45", + "replacement": "guid: 3bda1886f58f4e0ab1139400b160c3ee" + }, + { + "referencedResource": "TMP_Asset.cs", + "target": "fileID: -659140726, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 3bda1886f58f4e0ab1139400b160c3ee" + }, + { + "referencedResource": "TMP_ColorGradient.cs", + "target": "guid: e90e18dd4a044ff4394833216e6bf4d2", + "replacement": "guid: 54d21f6ece3b46479f0c328f8c6007e0" + }, + { + "referencedResource": "TMP_ColorGradient.cs", + "target": "fileID: 2108210716, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 54d21f6ece3b46479f0c328f8c6007e0" + }, + { + "referencedResource": "TMP_Dropdown.cs", + "target": "guid: 44cb1d34ddab9d449a05fc3747876be1", + "replacement": "guid: 7b743370ac3e4ec2a1668f5455a8ef8a" + }, + { + "referencedResource": "TMP_Dropdown.cs", + "target": "fileID: 1148083418, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 7b743370ac3e4ec2a1668f5455a8ef8a" + }, + { + "referencedResource": "TMP_FontAsset.cs", + "target": "guid: 74dfce233ddb29b4294c3e23c1d3650d", + "replacement": "guid: 71c1514a6bd24e1e882cebbe1904ce04" + }, + { + "referencedResource": "TMP_FontAsset.cs", + "target": "fileID: -667331979, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04" + }, + { + "referencedResource": "TMP_InputField.cs", + "target": "guid: 7b85855a3deaa2e44ac6741a6bbc85f6", + "replacement": "guid: 2da0c512f12947e489f739169773d7ca" + }, + { + "referencedResource": "TMP_InputField.cs", + "target": "fileID: -1620774994, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca" + }, + { + "referencedResource": "TMP_Settings.cs", + "target": "guid: aafc3c7b9e915d64e8ec3d2c88b3a231", + "replacement": "guid: 2705215ac5b84b70bacc50632be6e391" + }, + { + "referencedResource": "TMP_Settings.cs", + "target": "fileID: -395462249, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 2705215ac5b84b70bacc50632be6e391" + }, + { + "referencedResource": "TMP_SpriteAsset.cs", + "target": "guid: 90940d439ca0ef746af0b48419b92d2e", + "replacement": "guid: 84a92b25f83d49b9bc132d206b370281" + }, + { + "referencedResource": "TMP_SpriteAsset.cs", + "target": "fileID: 2019389346, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 84a92b25f83d49b9bc132d206b370281" + }, + { + "referencedResource": "TMP_StyleSheet.cs", + "target": "guid: 13259b4ce497b194eb52a33d8eda0bdc", + "replacement": "guid: ab2114bdc8544297b417dfefe9f1e410" + }, + { + "referencedResource": "TMP_StyleSheet.cs", + "target": "fileID: -1936749209, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: ab2114bdc8544297b417dfefe9f1e410" + }, + { + "referencedResource": "TMP_SubMesh.cs", + "target": "guid: bd950677b2d06c74494b1c1118584fff", + "replacement": "guid: 07994bfe8b0e4adb97d706de5dea48d5" + }, + { + "referencedResource": "TMP_SubMesh.cs", + "target": "fileID: 1330537494, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 07994bfe8b0e4adb97d706de5dea48d5" + }, + { + "referencedResource": "TMP_SubMeshUI.cs", + "target": "guid: a5378e1f14d974d419f811d6b0861f20", + "replacement": "guid: 058cba836c1846c3aa1c5fd2e28aea77" + }, + { + "referencedResource": "TMP_SubMeshUI.cs", + "target": "fileID: 1908110080, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 058cba836c1846c3aa1c5fd2e28aea77" + }, + { + "referencedResource": "TMP_Text.cs", + "target": "guid: 9ec8dc9c3fa2e5d41b939b5888d2f1e8", + "replacement": "guid: 5143f58107604835ab1a5efa2d8818fd" + }, + { + "referencedResource": "TMP_Text.cs", + "target": "fileID: -1385168320, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 5143f58107604835ab1a5efa2d8818fd" + }, + { + "referencedResource": "Default Sprite Asset.png", + "target": "guid: 5b32c2d36abe44540bed74c1f787033b", + "replacement": "guid: a0fc465d6cf04254a2938578735e2383" + }, + { + "referencedResource": "EmojiOne.png", + "target": "guid: 6ec706981a919c3489f0b061a40054e2", + "replacement": "guid: dffef66376be4fa480fb02b19edbe903" + } + ] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData.json.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData.json.meta new file mode 100644 index 0000000..a7a2790 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 05f5bfd584002f948982a1498890f9a9 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData_Assets.json b/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData_Assets.json new file mode 100644 index 0000000..f07aa23 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData_Assets.json @@ -0,0 +1,184 @@ +{ + "assetRecords": [ + { + "referencedResource": "TMP_FontAsset.cs", + "target": "guid: 74dfce233ddb29b4294c3e23c1d3650d", + "replacement": "guid: 71c1514a6bd24e1e882cebbe1904ce04" + }, + { + "referencedResource": "TMP_FontAsset.cs", + "target": "fileID: -667331979, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04" + }, + { + "referencedResource": "Anton SDF.asset", + "target": "guid: f76ef802b8b940c46a31f9027f2b0158", + "replacement": "guid: 8a89fa14b10d46a99122fd4f73fca9a2" + }, + { + "referencedResource": "Bangers SDF.asset", + "target": "guid: 808aa8f1ab804104aa7d0c337a6c1481", + "replacement": "guid: 125cb55b44b24c4393181402bc6200e6" + }, + { + "referencedResource": "Electronic Highway Sign SDF.asset", + "target": "guid: 163292f6f226d954593d45b079f8aae0", + "replacement": "guid: dc36b3fdc14f47ebb36fd484a67e268a" + }, + { + "referencedResource": "Oswald Bold SDF.asset", + "target": "guid: 09641b029dfa78843902b548a9de7553", + "replacement": "guid: 0161d805a3764c089bef00bfe00793f5" + }, + { + "referencedResource": "Roboto-Bold SDF.asset", + "target": "guid: d62a573c923f5cb47b8ff65261033b90", + "replacement": "guid: 5302535af1044152a457ed104f1f4b91" + }, + { + "referencedResource": "LiberationSans SDF.asset", + "target": "guid: 715b80e429c437e40867928a4e1fc975", + "replacement": "guid: 8f586378b4e144a9851e7b34d9b748ee" + }, + { + "referencedResource": "TMP_Bitmap.shader", + "target": "guid: edfcf888cd11d9245b91d2883049a57e", + "replacement": "guid: 128e987d567d4e2c824d754223b3f3b0" + }, + { + "referencedResource": "TMP_Bitmap-Mobile.shader", + "target": "guid: d1cf17907700cb647aa3ea423ba38f2e", + "replacement": "guid: 1e3b057af24249748ff873be7fafee47" + }, + { + "referencedResource": "TMP_SDF.shader", + "target": "guid: dca26082f9cb439469295791d9f76fe5", + "replacement": "guid: 68e6db2ebdc24f95958faec2be5558d6" + }, + { + "referencedResource": "TMP_SDF Overlay.shader", + "target": "guid: 4a7755d6b5b67874f89c85f56f95fe97", + "replacement": "guid: dd89cf5b9246416f84610a006f916af7" + }, + { + "referencedResource": "TMP_SDF-Mobile.shader", + "target": "guid: cafd18099dfc0114896e0a8b277b81b6", + "replacement": "guid: fe393ace9b354375a9cb14cdbbc28be4" + }, + { + "referencedResource": "TMP_SDF-Mobile Masking.shader", + "target": "guid: afc255f7c2be52e41973a3d10a2e632d", + "replacement": "guid: bc1ede39bf3643ee8e493720e4259791" + }, + { + "referencedResource": "TMP_SDF-Mobile Overlay.shader", + "target": "guid: 9ecb3fe313cb5f7478141eba4a2d54ed", + "replacement": "guid: a02a7d8c237544f1962732b55a9aebf1" + }, + { + "referencedResource": "TMP_SDF-Surface.shader", + "target": "guid: 8e6b9842dbb1a5a4887378afab854e63", + "replacement": "guid: f7ada0af4f174f0694ca6a487b8f543d" + }, + { + "referencedResource": "TMP_SDF-Surface-Mobile.shader", + "target": "guid: 3c2ea7753c1425145a74d106ec1cd852", + "replacement": "guid: 85187c2149c549c5b33f0cdb02836b17" + }, + { + "referencedResource": "TMP_Sprite.shader", + "target": "guid: 3a1c68c8292caf046bd21158886c5e40", + "replacement": "guid: cf81c85f95fe47e1a27f6ae460cf182c" + }, + { + "referencedResource": "TMP_ColorGradient.cs", + "target": "guid: e90e18dd4a044ff4394833216e6bf4d2", + "replacement": "guid: 54d21f6ece3b46479f0c328f8c6007e0" + }, + { + "referencedResource": "TMP_ColorGradient.cs", + "target": "fileID: 2108210716, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 54d21f6ece3b46479f0c328f8c6007e0" + }, + { + "referencedResource": "TMP_Settings.cs", + "target": "guid: aafc3c7b9e915d64e8ec3d2c88b3a231", + "replacement": "guid: 2705215ac5b84b70bacc50632be6e391" + }, + { + "referencedResource": "TMP_Settings.cs", + "target": "fileID: -395462249, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 2705215ac5b84b70bacc50632be6e391" + }, + { + "referencedResource": "TMP Settings.asset", + "target": "guid: 69ed5bac41eebaa4c97e9d2a4168c54f", + "replacement": "guid: 3f5b5dff67a942289a9defa416b206f3" + }, + { + "referencedResource": "LineBreaking Following Characters.txt", + "target": "guid: 312ba5b9e90627940866e19549a788cf", + "replacement": "guid: fade42e8bc714b018fac513c043d323b" + }, + { + "referencedResource": "LineBreaking Leading Characters.txt", + "target": "guid: 8d713940fcbede142ae4a33ea0062b33", + "replacement": "guid: d82c1b31c7e74239bff1220585707d2b" + }, + { + "referencedResource": "TMP_StyleSheet.cs", + "target": "guid: 13259b4ce497b194eb52a33d8eda0bdc", + "replacement": "guid: ab2114bdc8544297b417dfefe9f1e410" + }, + { + "referencedResource": "TMP_StyleSheet.cs", + "target": "fileID: -1936749209, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: ab2114bdc8544297b417dfefe9f1e410" + }, + { + "referencedResource": "TMP Default Style Sheet.asset", + "target": "guid: 54d1085f9a2fdea4587fcfc7dddcd4bc", + "replacement": "guid: f952c082cb03451daed3ee968ac6c63e" + }, + { + "referencedResource": "TMP_SpriteAsset.cs", + "target": "guid: 90940d439ca0ef746af0b48419b92d2e", + "replacement": "guid: 84a92b25f83d49b9bc132d206b370281" + }, + { + "referencedResource": "TMP_SpriteAsset.cs", + "target": "fileID: 2019389346, guid: 89f0137620f6af44b9ba852b4190e64e", + "replacement": "fileID: 11500000, guid: 84a92b25f83d49b9bc132d206b370281" + }, + { + "referencedResource": "Default Sprite Asset.asset", + "target": "guid: 273ca6c80b4b5d746b5e548f532bffd8", + "replacement": "guid: fbef3c704dce48f08a44612d6c856c8d" + }, + { + "referencedResource": "Default Sprite Asset.png", + "target": "guid: 5b32c2d36abe44540bed74c1f787033b", + "replacement": "guid: a0fc465d6cf04254a2938578735e2383" + }, + { + "referencedResource": "EmojiOne.asset", + "target": "guid: 9a952e2781ef26940ae089f1053ef4ef", + "replacement": "guid: c41005c129ba4d66911b75229fd70b45" + }, + { + "referencedResource": "EmojiOne.png", + "target": "guid: 6ec706981a919c3489f0b061a40054e2", + "replacement": "guid: dffef66376be4fa480fb02b19edbe903" + }, + { + "referencedResource": "DropCap Numbers.asset", + "target": "guid: c4fd2a959a50b584b92dedfefec1ffda", + "replacement": "guid: 14aa93acbb234d16aaef0e8b46814db6" + }, + { + "referencedResource": "DropCap Numbers.psd", + "target": "guid: 28b41fef228d6814f90e541deaf9f262", + "replacement": "guid: fd09957580ac4326916010f1f260975b" + } + ] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData_Assets.json.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData_Assets.json.meta new file mode 100644 index 0000000..f534ac1 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/PackageConversionData_Assets.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0e0afa652c0031c48896a97b424d027b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts.meta new file mode 100644 index 0000000..3c2e4cf --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6a1d1e3d2384453a7371b4a07a41ca4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor.meta new file mode 100644 index 0000000..af509a3 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b5d6c28ed7b94775be9e2560f300247c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/DropdownOptionListDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/DropdownOptionListDrawer.cs new file mode 100644 index 0000000..2b7dc85 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/DropdownOptionListDrawer.cs @@ -0,0 +1,60 @@ +using UnityEditorInternal; +using UnityEngine; +using UnityEngine.UI; +using UnityEditor; + +namespace TMPro.EditorUtilities +{ + [CustomPropertyDrawer(typeof(TMP_Dropdown.OptionDataList), true)] + class DropdownOptionListDrawer : PropertyDrawer + { + private ReorderableList m_ReorderableList; + + private void Init(SerializedProperty property) + { + if (m_ReorderableList != null) + return; + + SerializedProperty array = property.FindPropertyRelative("m_Options"); + + m_ReorderableList = new ReorderableList(property.serializedObject, array); + m_ReorderableList.drawElementCallback = DrawOptionData; + m_ReorderableList.drawHeaderCallback = DrawHeader; + m_ReorderableList.elementHeight += 16; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + Init(property); + + m_ReorderableList.DoList(position); + } + + private void DrawHeader(Rect rect) + { + GUI.Label(rect, "Options"); + } + + private void DrawOptionData(Rect rect, int index, bool isActive, bool isFocused) + { + SerializedProperty itemData = m_ReorderableList.serializedProperty.GetArrayElementAtIndex(index); + SerializedProperty itemText = itemData.FindPropertyRelative("m_Text"); + SerializedProperty itemImage = itemData.FindPropertyRelative("m_Image"); + + RectOffset offset = new RectOffset(0, 0, -1, -3); + rect = offset.Add(rect); + rect.height = EditorGUIUtility.singleLineHeight; + + EditorGUI.PropertyField(rect, itemText, GUIContent.none); + rect.y += EditorGUIUtility.singleLineHeight; + EditorGUI.PropertyField(rect, itemImage, GUIContent.none); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + Init(property); + + return m_ReorderableList.GetHeight(); + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/DropdownOptionListDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/DropdownOptionListDrawer.cs.meta new file mode 100644 index 0000000..f7f4c56 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/DropdownOptionListDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9545c9eb3bf94265810463794fec8334 +timeCreated: 1464818008 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphInfoDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphInfoDrawer.cs new file mode 100644 index 0000000..0936dc7 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphInfoDrawer.cs @@ -0,0 +1,61 @@ +/* +using UnityEngine; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(TMP_Glyph))] + public class GlyphInfoDrawer : PropertyDrawer + { + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty prop_id = property.FindPropertyRelative("id"); + SerializedProperty prop_x = property.FindPropertyRelative("x"); + SerializedProperty prop_y = property.FindPropertyRelative("y"); + SerializedProperty prop_width = property.FindPropertyRelative("width"); + SerializedProperty prop_height = property.FindPropertyRelative("height"); + SerializedProperty prop_xOffset = property.FindPropertyRelative("xOffset"); + SerializedProperty prop_yOffset = property.FindPropertyRelative("yOffset"); + SerializedProperty prop_xAdvance = property.FindPropertyRelative("xAdvance"); + SerializedProperty prop_scale = property.FindPropertyRelative("scale"); + + + // We get Rect since a valid position may not be provided by the caller. + Rect rect = GUILayoutUtility.GetRect(position.width, 48); + rect.y -= 15; + + //GUI.enabled = false; + EditorGUIUtility.labelWidth = 40f; + EditorGUIUtility.fieldWidth = 45f; + + bool prevGuiState = GUI.enabled; + GUI.enabled = true; + EditorGUI.LabelField(new Rect(rect.x + 5f, rect.y, 80f, 18), new GUIContent("Ascii: " + prop_id.intValue + ""), TMP_UIStyleManager.label); + EditorGUI.LabelField(new Rect(rect.x + 90f, rect.y, 80f, 18), new GUIContent("Hex: " + prop_id.intValue.ToString("X") + ""), TMP_UIStyleManager.label); + EditorGUI.LabelField(new Rect(rect.x + 170f, rect.y, 80, 18), "Char: [ " + (char)prop_id.intValue + " ]", TMP_UIStyleManager.label); + GUI.enabled = prevGuiState; + + EditorGUIUtility.labelWidth = 35f; + EditorGUIUtility.fieldWidth = 10f; + + float width = (rect.width - 5f) / 4; + EditorGUI.PropertyField(new Rect(rect.x + 5f + width * 0, rect.y + 22, width - 5f, 18), prop_x, new GUIContent("X:")); + EditorGUI.PropertyField(new Rect(rect.x + 5f + width * 1, rect.y + 22, width - 5f, 18), prop_y, new GUIContent("Y:")); + EditorGUI.PropertyField(new Rect(rect.x + 5f + width * 2, rect.y + 22, width - 5f, 18), prop_width, new GUIContent("W:")); + EditorGUI.PropertyField(new Rect(rect.x + 5f + width * 3, rect.y + 22, width - 5f, 18), prop_height, new GUIContent("H:")); + + //GUI.enabled = true; + EditorGUI.PropertyField(new Rect(rect.x + 5f + width * 0, rect.y + 44, width - 5f, 18), prop_xOffset, new GUIContent("OX:")); + EditorGUI.PropertyField(new Rect(rect.x + 5f + width * 1, rect.y + 44, width - 5f, 18), prop_yOffset, new GUIContent("OY:")); + //GUI.enabled = true; + EditorGUI.PropertyField(new Rect(rect.x + 5f + width * 2, rect.y + 44, width - 5f, 18), prop_xAdvance, new GUIContent("ADV:")); + EditorGUI.PropertyField(new Rect(rect.x + 5f + width * 3, rect.y + 44, width - 5f, 18), prop_scale, new GUIContent("SF:")); + } + + } +} +*/ \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphInfoDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphInfoDrawer.cs.meta new file mode 100644 index 0000000..10ed151 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphInfoDrawer.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 900f1a451c764dc3bdcc0de815a15935 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphMetricsPropertyDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphMetricsPropertyDrawer.cs new file mode 100644 index 0000000..bcd25a6 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphMetricsPropertyDrawer.cs @@ -0,0 +1,53 @@ +using UnityEngine; +using UnityEngine.TextCore; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(GlyphMetrics))] + public class GlyphMetricsPropertyDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty prop_Width = property.FindPropertyRelative("m_Width"); + SerializedProperty prop_Height = property.FindPropertyRelative("m_Height"); + SerializedProperty prop_HoriBearingX = property.FindPropertyRelative("m_HorizontalBearingX"); + SerializedProperty prop_HoriBearingY = property.FindPropertyRelative("m_HorizontalBearingY"); + SerializedProperty prop_HoriAdvance = property.FindPropertyRelative("m_HorizontalAdvance"); + + // We get Rect since a valid position may not be provided by the caller. + Rect rect = new Rect(position.x, position.y, position.width, 49); + + EditorGUI.LabelField(new Rect(rect.x, rect.y - 2.5f, rect.width, 18), new GUIContent("Glyph Metrics")); + + EditorGUIUtility.labelWidth = 50f; + EditorGUIUtility.fieldWidth = 15f; + + //GUI.enabled = false; + float width = (rect.width - 75f) / 2; + EditorGUI.PropertyField(new Rect(rect.x + width * 0, rect.y + 20, width - 5f, 18), prop_Width, new GUIContent("W:")); + EditorGUI.PropertyField(new Rect(rect.x + width * 1, rect.y + 20, width - 5f, 18), prop_Height, new GUIContent("H:")); + + //GUI.enabled = true; + + width = (rect.width - 75f) / 3; + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(new Rect(rect.x + width * 0, rect.y + 40, width - 5f, 18), prop_HoriBearingX, new GUIContent("BX:")); + EditorGUI.PropertyField(new Rect(rect.x + width * 1, rect.y + 40, width - 5f, 18), prop_HoriBearingY, new GUIContent("BY:")); + EditorGUI.PropertyField(new Rect(rect.x + width * 2, rect.y + 40, width - 5f, 18), prop_HoriAdvance, new GUIContent("AD:")); + if (EditorGUI.EndChangeCheck()) + { + + } + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return 65f; + } + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphMetricsPropertyDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphMetricsPropertyDrawer.cs.meta new file mode 100644 index 0000000..d91f579 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphMetricsPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3882522a08b6f5459b4dea6f8791278 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphRectPropertyDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphRectPropertyDrawer.cs new file mode 100644 index 0000000..c9be74e --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphRectPropertyDrawer.cs @@ -0,0 +1,44 @@ +using UnityEngine; +using UnityEngine.TextCore; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(GlyphRect))] + public class GlyphRectPropertyDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + //EditorGUI.BeginProperty(position, label, property); + + SerializedProperty prop_X = property.FindPropertyRelative("m_X"); + SerializedProperty prop_Y = property.FindPropertyRelative("m_Y"); + SerializedProperty prop_Width = property.FindPropertyRelative("m_Width"); + SerializedProperty prop_Height = property.FindPropertyRelative("m_Height"); + + // We get Rect since a valid position may not be provided by the caller. + Rect rect = new Rect(position.x, position.y, position.width, 49); + EditorGUI.LabelField(new Rect(rect.x, rect.y - 2.5f, rect.width, 18), new GUIContent("Glyph Rect")); + + EditorGUIUtility.labelWidth = 50f; + EditorGUIUtility.fieldWidth = 20f; + + //GUI.enabled = false; + float width = (rect.width - 75f) / 4; + EditorGUI.PropertyField(new Rect(rect.x + width * 0, rect.y + 20, width - 5f, 18), prop_X, new GUIContent("X:")); + EditorGUI.PropertyField(new Rect(rect.x + width * 1, rect.y + 20, width - 5f, 18), prop_Y, new GUIContent("Y:")); + EditorGUI.PropertyField(new Rect(rect.x + width * 2, rect.y + 20, width - 5f, 18), prop_Width, new GUIContent("W:")); + EditorGUI.PropertyField(new Rect(rect.x + width * 3, rect.y + 20, width - 5f, 18), prop_Height, new GUIContent("H:")); + + //EditorGUI.EndProperty(); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return 45f; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphRectPropertyDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphRectPropertyDrawer.cs.meta new file mode 100644 index 0000000..9323279 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/GlyphRectPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bc2b083b068f3546a9509c805e0541c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseEditorPanel.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseEditorPanel.cs new file mode 100644 index 0000000..5896c33 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseEditorPanel.cs @@ -0,0 +1,1336 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System.Linq; + + +namespace TMPro.EditorUtilities +{ + public abstract class TMP_BaseEditorPanel : Editor + { + //Labels and Tooltips + static readonly GUIContent k_RtlToggleLabel = new GUIContent("Enable RTL Editor", "Reverses text direction and allows right to left editing."); + //static readonly GUIContent k_MainSettingsLabel = new GUIContent("Main Settings"); + static readonly GUIContent k_FontAssetLabel = new GUIContent("Font Asset", "The Font Asset containing the glyphs that can be rendered for this text."); + static readonly GUIContent k_MaterialPresetLabel = new GUIContent("Material Preset", "The material used for rendering. Only materials created from the Font Asset can be used."); + static readonly GUIContent k_StyleLabel = new GUIContent("Text Style", "The style from a style sheet to be applied to the text."); + static readonly GUIContent k_AutoSizeLabel = new GUIContent("Auto Size", "Auto sizes the text to fit the available space."); + static readonly GUIContent k_FontSizeLabel = new GUIContent("Font Size", "The size the text will be rendered at in points."); + static readonly GUIContent k_AutoSizeOptionsLabel = new GUIContent("Auto Size Options"); + static readonly GUIContent k_MinLabel = new GUIContent("Min", "The minimum font size."); + static readonly GUIContent k_MaxLabel = new GUIContent("Max", "The maximum font size."); + static readonly GUIContent k_WdLabel = new GUIContent("WD%", "Compresses character width up to this value before reducing font size."); + static readonly GUIContent k_LineLabel = new GUIContent("Line", "Negative value only. Compresses line height down to this value before reducing font size."); + static readonly GUIContent k_FontStyleLabel = new GUIContent("Font Style", "Styles to apply to the text such as Bold or Italic."); + + static readonly GUIContent k_BoldLabel = new GUIContent("B", "Bold"); + static readonly GUIContent k_ItalicLabel = new GUIContent("I", "Italic"); + static readonly GUIContent k_UnderlineLabel = new GUIContent("U", "Underline"); + static readonly GUIContent k_StrikethroughLabel = new GUIContent("S", "Strikethrough"); + static readonly GUIContent k_LowercaseLabel = new GUIContent("ab", "Lowercase"); + static readonly GUIContent k_UppercaseLabel = new GUIContent("AB", "Uppercase"); + static readonly GUIContent k_SmallcapsLabel = new GUIContent("SC", "Smallcaps"); + + static readonly GUIContent k_ColorModeLabel = new GUIContent("Color Mode", "The type of gradient to use."); + static readonly GUIContent k_BaseColorLabel = new GUIContent("Vertex Color", "The base color of the text vertices."); + static readonly GUIContent k_ColorPresetLabel = new GUIContent("Color Preset", "A Color Preset which override the local color settings."); + static readonly GUIContent k_ColorGradientLabel = new GUIContent("Color Gradient", "The gradient color applied over the Vertex Color. Can be locally set or driven by a Gradient Asset."); + static readonly GUIContent k_CorenerColorsLabel = new GUIContent("Colors", "The color composition of the gradient."); + static readonly GUIContent k_OverrideTagsLabel = new GUIContent("Override Tags", "Whether the color settings override the tag."); + + static readonly GUIContent k_SpacingOptionsLabel = new GUIContent("Spacing Options (em)", "Spacing adjustments between different elements of the text. Values are in font units where a value of 1 equals 1/100em."); + static readonly GUIContent k_CharacterSpacingLabel = new GUIContent("Character"); + static readonly GUIContent k_WordSpacingLabel = new GUIContent("Word"); + static readonly GUIContent k_LineSpacingLabel = new GUIContent("Line"); + static readonly GUIContent k_ParagraphSpacingLabel = new GUIContent("Paragraph"); + + static readonly GUIContent k_AlignmentLabel = new GUIContent("Alignment", "Horizontal and vertical aligment of the text within its container."); + static readonly GUIContent k_WrapMixLabel = new GUIContent("Wrap Mix (W <-> C)", "How much to favor words versus characters when distributing the text."); + + static readonly GUIContent k_WrappingLabel = new GUIContent("Wrapping", "Wraps text to the next line when reaching the edge of the container."); + static readonly GUIContent[] k_WrappingOptions = { new GUIContent("Disabled"), new GUIContent("Enabled") }; + static readonly GUIContent k_OverflowLabel = new GUIContent("Overflow", "How to display text which goes past the edge of the container."); + + static readonly GUIContent k_MarginsLabel = new GUIContent("Margins", "The space between the text and the edge of its container."); + static readonly GUIContent k_GeometrySortingLabel = new GUIContent("Geometry Sorting", "The order in which text geometry is sorted. Used to adjust the way overlapping characters are displayed."); + static readonly GUIContent k_IsTextObjectScaleStatic = new GUIContent("Is Scale Static", "Controls whether a text object will be excluded from the InteralUpdate callback to handle scale changes of the text object or its parent(s)."); + static readonly GUIContent k_RichTextLabel = new GUIContent("Rich Text", "Enables the use of rich text tags such as and ."); + static readonly GUIContent k_EscapeCharactersLabel = new GUIContent("Parse Escape Characters", "Whether to display strings such as \"\\n\" as is or replace them by the character they represent."); + static readonly GUIContent k_VisibleDescenderLabel = new GUIContent("Visible Descender", "Compute descender values from visible characters only. Used to adjust layout behavior when hiding and revealing characters dynamically."); + static readonly GUIContent k_SpriteAssetLabel = new GUIContent("Sprite Asset", "The Sprite Asset used when NOT specifically referencing one using ."); + static readonly GUIContent k_StyleSheetAssetLabel = new GUIContent("Style Sheet Asset", "The Style Sheet Asset used by this text object."); + + static readonly GUIContent k_HorizontalMappingLabel = new GUIContent("Horizontal Mapping", "Horizontal UV mapping when using a shader with a texture face option."); + static readonly GUIContent k_VerticalMappingLabel = new GUIContent("Vertical Mapping", "Vertical UV mapping when using a shader with a texture face option."); + static readonly GUIContent k_LineOffsetLabel = new GUIContent("Line Offset", "Adds an horizontal offset to each successive line. Used for slanted texturing."); + + static readonly GUIContent k_KerningLabel = new GUIContent("Kerning", "Enables character specific spacing between pairs of characters."); + static readonly GUIContent k_PaddingLabel = new GUIContent("Extra Padding", "Adds some padding between the characters and the edge of the text mesh. Can reduce graphical errors when displaying small text."); + + static readonly GUIContent k_LeftLabel = new GUIContent("Left"); + static readonly GUIContent k_TopLabel = new GUIContent("Top"); + static readonly GUIContent k_RightLabel = new GUIContent("Right"); + static readonly GUIContent k_BottomLabel = new GUIContent("Bottom"); + + protected static readonly GUIContent k_ExtraSettingsLabel = new GUIContent("Extra Settings"); + protected static string[] k_UiStateLabel = new string[] { "(Click to collapse) ", "(Click to expand) " }; + + static Dictionary k_AvailableStyles = new Dictionary(); + protected Dictionary m_TextStyleIndexLookup = new Dictionary(); + + protected struct Foldout + { + // Track Inspector foldout panel states, globally. + public static bool extraSettings = false; + public static bool materialInspector = true; + } + + protected static int s_EventId; + + public int selAlignGridA; + public int selAlignGridB; + + protected SerializedProperty m_TextProp; + + protected SerializedProperty m_IsRightToLeftProp; + protected string m_RtlText; + + protected SerializedProperty m_FontAssetProp; + + protected SerializedProperty m_FontSharedMaterialProp; + protected Material[] m_MaterialPresets; + protected GUIContent[] m_MaterialPresetNames; + protected Dictionary m_MaterialPresetIndexLookup = new Dictionary(); + protected int m_MaterialPresetSelectionIndex; + protected bool m_IsPresetListDirty; + + protected List m_Styles = new List(); + protected GUIContent[] m_StyleNames; + protected int m_StyleSelectionIndex; + + protected SerializedProperty m_FontStyleProp; + + protected SerializedProperty m_FontColorProp; + protected SerializedProperty m_EnableVertexGradientProp; + protected SerializedProperty m_FontColorGradientProp; + protected SerializedProperty m_FontColorGradientPresetProp; + protected SerializedProperty m_OverrideHtmlColorProp; + + protected SerializedProperty m_FontSizeProp; + protected SerializedProperty m_FontSizeBaseProp; + + protected SerializedProperty m_AutoSizingProp; + protected SerializedProperty m_FontSizeMinProp; + protected SerializedProperty m_FontSizeMaxProp; + + protected SerializedProperty m_LineSpacingMaxProp; + protected SerializedProperty m_CharWidthMaxAdjProp; + + protected SerializedProperty m_CharacterSpacingProp; + protected SerializedProperty m_WordSpacingProp; + protected SerializedProperty m_LineSpacingProp; + protected SerializedProperty m_ParagraphSpacingProp; + + protected SerializedProperty m_TextAlignmentProp; + + protected SerializedProperty m_HorizontalAlignmentProp; + protected SerializedProperty m_VerticalAlignmentProp; + + protected SerializedProperty m_HorizontalMappingProp; + protected SerializedProperty m_VerticalMappingProp; + protected SerializedProperty m_UvLineOffsetProp; + + protected SerializedProperty m_EnableWordWrappingProp; + protected SerializedProperty m_WordWrappingRatiosProp; + protected SerializedProperty m_TextOverflowModeProp; + protected SerializedProperty m_PageToDisplayProp; + protected SerializedProperty m_LinkedTextComponentProp; + protected SerializedProperty m_ParentLinkedTextComponentProp; + + protected SerializedProperty m_EnableKerningProp; + + protected SerializedProperty m_IsRichTextProp; + + protected SerializedProperty m_HasFontAssetChangedProp; + + protected SerializedProperty m_EnableExtraPaddingProp; + protected SerializedProperty m_CheckPaddingRequiredProp; + protected SerializedProperty m_EnableEscapeCharacterParsingProp; + protected SerializedProperty m_UseMaxVisibleDescenderProp; + protected SerializedProperty m_GeometrySortingOrderProp; + protected SerializedProperty m_IsTextObjectScaleStaticProp; + + protected SerializedProperty m_SpriteAssetProp; + + protected SerializedProperty m_StyleSheetAssetProp; + protected SerializedProperty m_TextStyleHashCodeProp; + + protected SerializedProperty m_MarginProp; + + protected SerializedProperty m_ColorModeProp; + + protected bool m_HavePropertiesChanged; + + protected TMP_Text m_TextComponent; + protected TMP_Text m_PreviousLinkedTextComponent; + protected RectTransform m_RectTransform; + + protected Material m_TargetMaterial; + + protected Vector3[] m_RectCorners = new Vector3[4]; + protected Vector3[] m_HandlePoints = new Vector3[4]; + + protected virtual void OnEnable() + { + m_TextProp = serializedObject.FindProperty("m_text"); + m_IsRightToLeftProp = serializedObject.FindProperty("m_isRightToLeft"); + m_FontAssetProp = serializedObject.FindProperty("m_fontAsset"); + m_FontSharedMaterialProp = serializedObject.FindProperty("m_sharedMaterial"); + + m_FontStyleProp = serializedObject.FindProperty("m_fontStyle"); + + m_FontSizeProp = serializedObject.FindProperty("m_fontSize"); + m_FontSizeBaseProp = serializedObject.FindProperty("m_fontSizeBase"); + + m_AutoSizingProp = serializedObject.FindProperty("m_enableAutoSizing"); + m_FontSizeMinProp = serializedObject.FindProperty("m_fontSizeMin"); + m_FontSizeMaxProp = serializedObject.FindProperty("m_fontSizeMax"); + + m_LineSpacingMaxProp = serializedObject.FindProperty("m_lineSpacingMax"); + m_CharWidthMaxAdjProp = serializedObject.FindProperty("m_charWidthMaxAdj"); + + // Colors & Gradient + m_FontColorProp = serializedObject.FindProperty("m_fontColor"); + m_EnableVertexGradientProp = serializedObject.FindProperty("m_enableVertexGradient"); + m_FontColorGradientProp = serializedObject.FindProperty("m_fontColorGradient"); + m_FontColorGradientPresetProp = serializedObject.FindProperty("m_fontColorGradientPreset"); + m_OverrideHtmlColorProp = serializedObject.FindProperty("m_overrideHtmlColors"); + + m_CharacterSpacingProp = serializedObject.FindProperty("m_characterSpacing"); + m_WordSpacingProp = serializedObject.FindProperty("m_wordSpacing"); + m_LineSpacingProp = serializedObject.FindProperty("m_lineSpacing"); + m_ParagraphSpacingProp = serializedObject.FindProperty("m_paragraphSpacing"); + + m_TextAlignmentProp = serializedObject.FindProperty("m_textAlignment"); + m_HorizontalAlignmentProp = serializedObject.FindProperty("m_HorizontalAlignment"); + m_VerticalAlignmentProp = serializedObject.FindProperty("m_VerticalAlignment"); + + m_HorizontalMappingProp = serializedObject.FindProperty("m_horizontalMapping"); + m_VerticalMappingProp = serializedObject.FindProperty("m_verticalMapping"); + m_UvLineOffsetProp = serializedObject.FindProperty("m_uvLineOffset"); + + m_EnableWordWrappingProp = serializedObject.FindProperty("m_enableWordWrapping"); + m_WordWrappingRatiosProp = serializedObject.FindProperty("m_wordWrappingRatios"); + m_TextOverflowModeProp = serializedObject.FindProperty("m_overflowMode"); + m_PageToDisplayProp = serializedObject.FindProperty("m_pageToDisplay"); + m_LinkedTextComponentProp = serializedObject.FindProperty("m_linkedTextComponent"); + m_ParentLinkedTextComponentProp = serializedObject.FindProperty("parentLinkedComponent"); + + m_EnableKerningProp = serializedObject.FindProperty("m_enableKerning"); + + m_EnableExtraPaddingProp = serializedObject.FindProperty("m_enableExtraPadding"); + m_IsRichTextProp = serializedObject.FindProperty("m_isRichText"); + m_CheckPaddingRequiredProp = serializedObject.FindProperty("checkPaddingRequired"); + m_EnableEscapeCharacterParsingProp = serializedObject.FindProperty("m_parseCtrlCharacters"); + m_UseMaxVisibleDescenderProp = serializedObject.FindProperty("m_useMaxVisibleDescender"); + + m_GeometrySortingOrderProp = serializedObject.FindProperty("m_geometrySortingOrder"); + m_IsTextObjectScaleStaticProp = serializedObject.FindProperty("m_IsTextObjectScaleStatic"); + + m_SpriteAssetProp = serializedObject.FindProperty("m_spriteAsset"); + + m_StyleSheetAssetProp = serializedObject.FindProperty("m_StyleSheet"); + m_TextStyleHashCodeProp = serializedObject.FindProperty("m_TextStyleHashCode"); + + m_MarginProp = serializedObject.FindProperty("m_margin"); + + m_HasFontAssetChangedProp = serializedObject.FindProperty("m_hasFontAssetChanged"); + + m_ColorModeProp = serializedObject.FindProperty("m_colorMode"); + + m_TextComponent = (TMP_Text)target; + m_RectTransform = m_TextComponent.rectTransform; + + // Restore Previous Linked Text Component + m_PreviousLinkedTextComponent = m_TextComponent.linkedTextComponent; + + // Create new Material Editor if one does not exists + m_TargetMaterial = m_TextComponent.fontSharedMaterial; + + // Set material inspector visibility + if (m_TargetMaterial != null) + UnityEditorInternal.InternalEditorUtility.SetIsInspectorExpanded(m_TargetMaterial, Foldout.materialInspector); + + // Find all Material Presets matching the current Font Asset Material + m_MaterialPresetNames = GetMaterialPresets(); + + // Get Styles from Style Sheet + if (!m_TextComponent.m_isWaitingOnResourceLoad) + m_StyleNames = GetStyleNames(); + + // Register to receive events when style sheets are modified. + TMPro_EventManager.TEXT_STYLE_PROPERTY_EVENT.Add(ON_TEXT_STYLE_CHANGED); + + // Initialize the Event Listener for Undo Events. + Undo.undoRedoPerformed += OnUndoRedo; + } + + protected virtual void OnDisable() + { + // Set material inspector visibility + if (m_TargetMaterial != null) + Foldout.materialInspector = UnityEditorInternal.InternalEditorUtility.GetIsInspectorExpanded(m_TargetMaterial); + + if (Undo.undoRedoPerformed != null) + Undo.undoRedoPerformed -= OnUndoRedo; + + // Unregister from style sheet related events. + TMPro_EventManager.TEXT_STYLE_PROPERTY_EVENT.Remove(ON_TEXT_STYLE_CHANGED); + } + + // Event received when Text Styles are changed. + void ON_TEXT_STYLE_CHANGED(bool isChanged) + { + m_StyleNames = GetStyleNames(); + } + + public override void OnInspectorGUI() + { + // Make sure Multi selection only includes TMP Text objects. + if (IsMixSelectionTypes()) return; + + serializedObject.Update(); + + DrawTextInput(); + + DrawMainSettings(); + + DrawExtraSettings(); + + EditorGUILayout.Space(); + + if (serializedObject.ApplyModifiedProperties() || m_HavePropertiesChanged) + { + m_TextComponent.havePropertiesChanged = true; + m_HavePropertiesChanged = false; + EditorUtility.SetDirty(target); + } + } + + public void OnSceneGUI() + { + if (IsMixSelectionTypes()) return; + + // Margin Frame & Handles + m_RectTransform.GetWorldCorners(m_RectCorners); + Vector4 marginOffset = m_TextComponent.margin; + Vector3 lossyScale = m_RectTransform.lossyScale; + + m_HandlePoints[0] = m_RectCorners[0] + m_RectTransform.TransformDirection(new Vector3(marginOffset.x * lossyScale.x, marginOffset.w * lossyScale.y, 0)); + m_HandlePoints[1] = m_RectCorners[1] + m_RectTransform.TransformDirection(new Vector3(marginOffset.x * lossyScale.x, -marginOffset.y * lossyScale.y, 0)); + m_HandlePoints[2] = m_RectCorners[2] + m_RectTransform.TransformDirection(new Vector3(-marginOffset.z * lossyScale.x, -marginOffset.y * lossyScale.y, 0)); + m_HandlePoints[3] = m_RectCorners[3] + m_RectTransform.TransformDirection(new Vector3(-marginOffset.z * lossyScale.x, marginOffset.w * lossyScale.y, 0)); + + Handles.DrawSolidRectangleWithOutline(m_HandlePoints, new Color32(255, 255, 255, 0), new Color32(255, 255, 0, 255)); + + // Draw & process FreeMoveHandles + + // LEFT HANDLE + Vector3 oldLeft = (m_HandlePoints[0] + m_HandlePoints[1]) * 0.5f; + Vector3 newLeft = Handles.FreeMoveHandle(oldLeft, Quaternion.identity, HandleUtility.GetHandleSize(m_RectTransform.position) * 0.05f, Vector3.zero, Handles.DotHandleCap); + bool hasChanged = false; + if (oldLeft != newLeft) + { + float delta = oldLeft.x - newLeft.x; + marginOffset.x += -delta / lossyScale.x; + //Debug.Log("Left Margin H0:" + handlePoints[0] + " H1:" + handlePoints[1]); + hasChanged = true; + } + + // TOP HANDLE + Vector3 oldTop = (m_HandlePoints[1] + m_HandlePoints[2]) * 0.5f; + Vector3 newTop = Handles.FreeMoveHandle(oldTop, Quaternion.identity, HandleUtility.GetHandleSize(m_RectTransform.position) * 0.05f, Vector3.zero, Handles.DotHandleCap); + if (oldTop != newTop) + { + float delta = oldTop.y - newTop.y; + marginOffset.y += delta / lossyScale.y; + //Debug.Log("Top Margin H1:" + handlePoints[1] + " H2:" + handlePoints[2]); + hasChanged = true; + } + + // RIGHT HANDLE + Vector3 oldRight = (m_HandlePoints[2] + m_HandlePoints[3]) * 0.5f; + Vector3 newRight = Handles.FreeMoveHandle(oldRight, Quaternion.identity, HandleUtility.GetHandleSize(m_RectTransform.position) * 0.05f, Vector3.zero, Handles.DotHandleCap); + if (oldRight != newRight) + { + float delta = oldRight.x - newRight.x; + marginOffset.z += delta / lossyScale.x; + hasChanged = true; + //Debug.Log("Right Margin H2:" + handlePoints[2] + " H3:" + handlePoints[3]); + } + + // BOTTOM HANDLE + Vector3 oldBottom = (m_HandlePoints[3] + m_HandlePoints[0]) * 0.5f; + Vector3 newBottom = Handles.FreeMoveHandle(oldBottom, Quaternion.identity, HandleUtility.GetHandleSize(m_RectTransform.position) * 0.05f, Vector3.zero, Handles.DotHandleCap); + if (oldBottom != newBottom) + { + float delta = oldBottom.y - newBottom.y; + marginOffset.w += -delta / lossyScale.y; + hasChanged = true; + //Debug.Log("Bottom Margin H0:" + handlePoints[0] + " H3:" + handlePoints[3]); + } + + if (hasChanged) + { + Undo.RecordObjects(new Object[] {m_RectTransform, m_TextComponent }, "Margin Changes"); + m_TextComponent.margin = marginOffset; + EditorUtility.SetDirty(target); + } + } + + protected void DrawTextInput() + { + EditorGUILayout.Space(); + + Rect rect = EditorGUILayout.GetControlRect(false, 22); + GUI.Label(rect, new GUIContent("Text Input"), TMP_UIStyleManager.sectionHeader); + + EditorGUI.indentLevel = 0; + + // If the text component is linked, disable the text input box. + if (m_ParentLinkedTextComponentProp.objectReferenceValue != null) + { + EditorGUILayout.HelpBox("The Text Input Box is disabled due to this text component being linked to another.", MessageType.Info); + } + else + { + // Display RTL Toggle + float labelWidth = EditorGUIUtility.labelWidth; + EditorGUIUtility.labelWidth = 110f; + + m_IsRightToLeftProp.boolValue = EditorGUI.Toggle(new Rect(rect.width - 120, rect.y + 3, 130, 20), k_RtlToggleLabel, m_IsRightToLeftProp.boolValue); + + EditorGUIUtility.labelWidth = labelWidth; + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_TextProp, GUIContent.none); + + if (EditorGUI.EndChangeCheck()) + { + m_TextComponent.m_inputSource = TMP_Text.TextInputSources.Text; + m_TextComponent.m_isInputParsingRequired = true; + m_HavePropertiesChanged = true; + } + + if (m_IsRightToLeftProp.boolValue) + { + // Copy source text to RTL string + m_RtlText = string.Empty; + string sourceText = m_TextProp.stringValue; + + // Reverse Text displayed in Text Input Box + for (int i = 0; i < sourceText.Length; i++) + m_RtlText += sourceText[sourceText.Length - i - 1]; + + GUILayout.Label("RTL Text Input"); + + EditorGUI.BeginChangeCheck(); + m_RtlText = EditorGUILayout.TextArea(m_RtlText, TMP_UIStyleManager.wrappingTextArea, GUILayout.Height(EditorGUI.GetPropertyHeight(m_TextProp) - EditorGUIUtility.singleLineHeight), GUILayout.ExpandWidth(true)); + + if (EditorGUI.EndChangeCheck()) + { + // Convert RTL input + sourceText = string.Empty; + + // Reverse Text displayed in Text Input Box + for (int i = 0; i < m_RtlText.Length; i++) + sourceText += m_RtlText[m_RtlText.Length - i - 1]; + + m_TextProp.stringValue = sourceText; + } + } + + // TEXT STYLE + if (m_StyleNames != null) + { + rect = EditorGUILayout.GetControlRect(false, 17); + + m_TextStyleIndexLookup.TryGetValue(m_TextStyleHashCodeProp.intValue, out m_StyleSelectionIndex); + + EditorGUI.BeginChangeCheck(); + m_StyleSelectionIndex = EditorGUI.Popup(rect, k_StyleLabel, m_StyleSelectionIndex, m_StyleNames); + if (EditorGUI.EndChangeCheck()) + { + m_TextStyleHashCodeProp.intValue = m_Styles[m_StyleSelectionIndex].hashCode; + m_TextComponent.m_TextStyle = m_Styles[m_StyleSelectionIndex]; + m_HavePropertiesChanged = true; + } + } + } + } + + protected void DrawMainSettings() + { + // MAIN SETTINGS SECTION + GUILayout.Label(new GUIContent("Main Settings"), TMP_UIStyleManager.sectionHeader); + + //EditorGUI.indentLevel += 1; + + DrawFont(); + + DrawColor(); + + DrawSpacing(); + + DrawAlignment(); + + DrawWrappingOverflow(); + + DrawTextureMapping(); + + //EditorGUI.indentLevel -= 1; + } + + void DrawFont() + { + bool isFontAssetDirty = false; + + // FONT ASSET + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_FontAssetProp, k_FontAssetLabel); + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + m_HasFontAssetChangedProp.boolValue = true; + + // Get new Material Presets for the new font asset + m_MaterialPresetNames = GetMaterialPresets(); + m_MaterialPresetSelectionIndex = 0; + + isFontAssetDirty = true; + } + + Rect rect; + + // MATERIAL PRESET + if (m_MaterialPresetNames != null && !isFontAssetDirty ) + { + EditorGUI.BeginChangeCheck(); + rect = EditorGUILayout.GetControlRect(false, 17); + + float oldHeight = EditorStyles.popup.fixedHeight; + EditorStyles.popup.fixedHeight = rect.height; + + int oldSize = EditorStyles.popup.fontSize; + EditorStyles.popup.fontSize = 11; + + if (m_FontSharedMaterialProp.objectReferenceValue != null) + m_MaterialPresetIndexLookup.TryGetValue(m_FontSharedMaterialProp.objectReferenceValue.GetInstanceID(), out m_MaterialPresetSelectionIndex); + + m_MaterialPresetSelectionIndex = EditorGUI.Popup(rect, k_MaterialPresetLabel, m_MaterialPresetSelectionIndex, m_MaterialPresetNames); + if (EditorGUI.EndChangeCheck()) + { + m_FontSharedMaterialProp.objectReferenceValue = m_MaterialPresets[m_MaterialPresetSelectionIndex]; + m_HavePropertiesChanged = true; + } + + EditorStyles.popup.fixedHeight = oldHeight; + EditorStyles.popup.fontSize = oldSize; + } + + // FONT STYLE + EditorGUI.BeginChangeCheck(); + + int v1, v2, v3, v4, v5, v6, v7; + + if (EditorGUIUtility.wideMode) + { + rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight + 2f); + + EditorGUI.PrefixLabel(rect, k_FontStyleLabel); + + int styleValue = m_FontStyleProp.intValue; + + rect.x += EditorGUIUtility.labelWidth; + rect.width -= EditorGUIUtility.labelWidth; + + rect.width = Mathf.Max(25f, rect.width / 7f); + + v1 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 1) == 1, k_BoldLabel, TMP_UIStyleManager.alignmentButtonLeft) ? 1 : 0; // Bold + rect.x += rect.width; + v2 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 2) == 2, k_ItalicLabel, TMP_UIStyleManager.alignmentButtonMid) ? 2 : 0; // Italics + rect.x += rect.width; + v3 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 4) == 4, k_UnderlineLabel, TMP_UIStyleManager.alignmentButtonMid) ? 4 : 0; // Underline + rect.x += rect.width; + v7 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 64) == 64, k_StrikethroughLabel, TMP_UIStyleManager.alignmentButtonRight) ? 64 : 0; // Strikethrough + rect.x += rect.width; + + int selected = 0; + + EditorGUI.BeginChangeCheck(); + v4 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 8) == 8, k_LowercaseLabel, TMP_UIStyleManager.alignmentButtonLeft) ? 8 : 0; // Lowercase + if (EditorGUI.EndChangeCheck() && v4 > 0) + { + selected = v4; + } + rect.x += rect.width; + EditorGUI.BeginChangeCheck(); + v5 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 16) == 16, k_UppercaseLabel, TMP_UIStyleManager.alignmentButtonMid) ? 16 : 0; // Uppercase + if (EditorGUI.EndChangeCheck() && v5 > 0) + { + selected = v5; + } + rect.x += rect.width; + EditorGUI.BeginChangeCheck(); + v6 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 32) == 32, k_SmallcapsLabel, TMP_UIStyleManager.alignmentButtonRight) ? 32 : 0; // Smallcaps + if (EditorGUI.EndChangeCheck() && v6 > 0) + { + selected = v6; + } + + if (selected > 0) + { + v4 = selected == 8 ? 8 : 0; + v5 = selected == 16 ? 16 : 0; + v6 = selected == 32 ? 32 : 0; + } + } + else + { + rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight + 2f); + + EditorGUI.PrefixLabel(rect, k_FontStyleLabel); + + int styleValue = m_FontStyleProp.intValue; + + rect.x += EditorGUIUtility.labelWidth; + rect.width -= EditorGUIUtility.labelWidth; + rect.width = Mathf.Max(25f, rect.width / 4f); + + v1 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 1) == 1, k_BoldLabel, TMP_UIStyleManager.alignmentButtonLeft) ? 1 : 0; // Bold + rect.x += rect.width; + v2 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 2) == 2, k_ItalicLabel, TMP_UIStyleManager.alignmentButtonMid) ? 2 : 0; // Italics + rect.x += rect.width; + v3 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 4) == 4, k_UnderlineLabel, TMP_UIStyleManager.alignmentButtonMid) ? 4 : 0; // Underline + rect.x += rect.width; + v7 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 64) == 64, k_StrikethroughLabel, TMP_UIStyleManager.alignmentButtonRight) ? 64 : 0; // Strikethrough + + rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight + 2f); + + rect.x += EditorGUIUtility.labelWidth; + rect.width -= EditorGUIUtility.labelWidth; + + rect.width = Mathf.Max(25f, rect.width / 4f); + + int selected = 0; + + EditorGUI.BeginChangeCheck(); + v4 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 8) == 8, k_LowercaseLabel, TMP_UIStyleManager.alignmentButtonLeft) ? 8 : 0; // Lowercase + if (EditorGUI.EndChangeCheck() && v4 > 0) + { + selected = v4; + } + rect.x += rect.width; + EditorGUI.BeginChangeCheck(); + v5 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 16) == 16, k_UppercaseLabel, TMP_UIStyleManager.alignmentButtonMid) ? 16 : 0; // Uppercase + if (EditorGUI.EndChangeCheck() && v5 > 0) + { + selected = v5; + } + rect.x += rect.width; + EditorGUI.BeginChangeCheck(); + v6 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 32) == 32, k_SmallcapsLabel, TMP_UIStyleManager.alignmentButtonRight) ? 32 : 0; // Smallcaps + if (EditorGUI.EndChangeCheck() && v6 > 0) + { + selected = v6; + } + + if (selected > 0) + { + v4 = selected == 8 ? 8 : 0; + v5 = selected == 16 ? 16 : 0; + v6 = selected == 32 ? 32 : 0; + } + } + + if (EditorGUI.EndChangeCheck()) + { + m_FontStyleProp.intValue = v1 + v2 + v3 + v4 + v5 + v6 + v7; + m_HavePropertiesChanged = true; + } + + // FONT SIZE + EditorGUI.BeginChangeCheck(); + + EditorGUI.BeginDisabledGroup(m_AutoSizingProp.boolValue); + EditorGUILayout.PropertyField(m_FontSizeProp, k_FontSizeLabel, GUILayout.MaxWidth(EditorGUIUtility.labelWidth + 50f)); + EditorGUI.EndDisabledGroup(); + + if (EditorGUI.EndChangeCheck()) + { + float fontSize = Mathf.Clamp(m_FontSizeProp.floatValue, 0, 32767); + + m_FontSizeProp.floatValue = fontSize; + m_FontSizeBaseProp.floatValue = fontSize; + m_HavePropertiesChanged = true; + } + + EditorGUI.indentLevel += 1; + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_AutoSizingProp, k_AutoSizeLabel); + if (EditorGUI.EndChangeCheck()) + { + if (m_AutoSizingProp.boolValue == false) + m_FontSizeProp.floatValue = m_FontSizeBaseProp.floatValue; + + m_HavePropertiesChanged = true; + } + + // Show auto sizing options + if (m_AutoSizingProp.boolValue) + { + rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight); + + EditorGUI.PrefixLabel(rect, k_AutoSizeOptionsLabel); + + int previousIndent = EditorGUI.indentLevel; + + EditorGUI.indentLevel = 0; + + rect.width = (rect.width - EditorGUIUtility.labelWidth) / 4f; + rect.x += EditorGUIUtility.labelWidth; + + EditorGUIUtility.labelWidth = 24; + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(rect, m_FontSizeMinProp, k_MinLabel); + if (EditorGUI.EndChangeCheck()) + { + float minSize = m_FontSizeMinProp.floatValue; + + minSize = Mathf.Max(0, minSize); + + m_FontSizeMinProp.floatValue = Mathf.Min(minSize, m_FontSizeMaxProp.floatValue); + m_HavePropertiesChanged = true; + } + rect.x += rect.width; + + EditorGUIUtility.labelWidth = 27; + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(rect, m_FontSizeMaxProp, k_MaxLabel); + if (EditorGUI.EndChangeCheck()) + { + float maxSize = Mathf.Clamp(m_FontSizeMaxProp.floatValue, 0, 32767); + + m_FontSizeMaxProp.floatValue = Mathf.Max(m_FontSizeMinProp.floatValue, maxSize); + m_HavePropertiesChanged = true; + } + rect.x += rect.width; + + EditorGUI.BeginChangeCheck(); + EditorGUIUtility.labelWidth = 36; + EditorGUI.PropertyField(rect, m_CharWidthMaxAdjProp, k_WdLabel); + rect.x += rect.width; + EditorGUIUtility.labelWidth = 28; + EditorGUI.PropertyField(rect, m_LineSpacingMaxProp, k_LineLabel); + + EditorGUIUtility.labelWidth = 0; + + if (EditorGUI.EndChangeCheck()) + { + m_CharWidthMaxAdjProp.floatValue = Mathf.Clamp(m_CharWidthMaxAdjProp.floatValue, 0, 50); + m_LineSpacingMaxProp.floatValue = Mathf.Min(0, m_LineSpacingMaxProp.floatValue); + m_HavePropertiesChanged = true; + } + + EditorGUI.indentLevel = previousIndent; + } + + EditorGUI.indentLevel -= 1; + + + + EditorGUILayout.Space(); + } + + void DrawColor() + { + // FACE VERTEX COLOR + EditorGUI.BeginChangeCheck(); + Color vertexColor = EditorGUILayout.ColorField(k_BaseColorLabel, m_FontColorProp.colorValue, false, true, false); + if (EditorGUI.EndChangeCheck()) + { + m_FontColorProp.colorValue = vertexColor; + m_HavePropertiesChanged = true; + } + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_EnableVertexGradientProp, k_ColorGradientLabel); + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + } + + EditorGUIUtility.fieldWidth = 0; + + if (m_EnableVertexGradientProp.boolValue) + { + EditorGUI.indentLevel += 1; + + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(m_FontColorGradientPresetProp, k_ColorPresetLabel); + + SerializedObject obj = null; + + SerializedProperty colorMode; + + SerializedProperty topLeft; + SerializedProperty topRight; + SerializedProperty bottomLeft; + SerializedProperty bottomRight; + + if (m_FontColorGradientPresetProp.objectReferenceValue == null) + { + colorMode = m_ColorModeProp; + topLeft = m_FontColorGradientProp.FindPropertyRelative("topLeft"); + topRight = m_FontColorGradientProp.FindPropertyRelative("topRight"); + bottomLeft = m_FontColorGradientProp.FindPropertyRelative("bottomLeft"); + bottomRight = m_FontColorGradientProp.FindPropertyRelative("bottomRight"); + } + else + { + obj = new SerializedObject(m_FontColorGradientPresetProp.objectReferenceValue); + colorMode = obj.FindProperty("colorMode"); + topLeft = obj.FindProperty("topLeft"); + topRight = obj.FindProperty("topRight"); + bottomLeft = obj.FindProperty("bottomLeft"); + bottomRight = obj.FindProperty("bottomRight"); + } + + EditorGUILayout.PropertyField(colorMode, k_ColorModeLabel); + + var rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2)); + + EditorGUI.PrefixLabel(rect, k_CorenerColorsLabel); + + rect.x += EditorGUIUtility.labelWidth; + rect.width = rect.width - EditorGUIUtility.labelWidth; + + switch ((ColorMode)colorMode.enumValueIndex) + { + case ColorMode.Single: + TMP_EditorUtility.DrawColorProperty(rect, topLeft); + + topRight.colorValue = topLeft.colorValue; + bottomLeft.colorValue = topLeft.colorValue; + bottomRight.colorValue = topLeft.colorValue; + break; + case ColorMode.HorizontalGradient: + rect.width /= 2f; + + TMP_EditorUtility.DrawColorProperty(rect, topLeft); + + rect.x += rect.width; + + TMP_EditorUtility.DrawColorProperty(rect, topRight); + + bottomLeft.colorValue = topLeft.colorValue; + bottomRight.colorValue = topRight.colorValue; + break; + case ColorMode.VerticalGradient: + TMP_EditorUtility.DrawColorProperty(rect, topLeft); + + rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2)); + rect.x += EditorGUIUtility.labelWidth; + + TMP_EditorUtility.DrawColorProperty(rect, bottomLeft); + + topRight.colorValue = topLeft.colorValue; + bottomRight.colorValue = bottomLeft.colorValue; + break; + case ColorMode.FourCornersGradient: + rect.width /= 2f; + + TMP_EditorUtility.DrawColorProperty(rect, topLeft); + + rect.x += rect.width; + + TMP_EditorUtility.DrawColorProperty(rect, topRight); + + rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2)); + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth) / 2f; + + TMP_EditorUtility.DrawColorProperty(rect, bottomLeft); + + rect.x += rect.width; + + TMP_EditorUtility.DrawColorProperty(rect, bottomRight); + break; + } + + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + if (obj != null) + { + obj.ApplyModifiedProperties(); + TMPro_EventManager.ON_COLOR_GRADIENT_PROPERTY_CHANGED(m_FontColorGradientPresetProp.objectReferenceValue as TMP_ColorGradient); + } + } + + EditorGUI.indentLevel -= 1; + } + + EditorGUILayout.PropertyField(m_OverrideHtmlColorProp, k_OverrideTagsLabel); + + EditorGUILayout.Space(); + } + + void DrawSpacing() + { + // CHARACTER, LINE & PARAGRAPH SPACING + EditorGUI.BeginChangeCheck(); + + Rect rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight); + + EditorGUI.PrefixLabel(rect, k_SpacingOptionsLabel); + + int oldIndent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth - 3f) / 2f; + + EditorGUIUtility.labelWidth = Mathf.Min(rect.width * 0.55f, 80f); + + EditorGUI.PropertyField(rect, m_CharacterSpacingProp, k_CharacterSpacingLabel); + rect.x += rect.width + 3f; + EditorGUI.PropertyField(rect, m_WordSpacingProp, k_WordSpacingLabel); + + rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight); + EditorGUIUtility.labelWidth = 0; + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth -3f) / 2f; + EditorGUIUtility.labelWidth = Mathf.Min(rect.width * 0.55f, 80f); + + EditorGUI.PropertyField(rect, m_LineSpacingProp, k_LineSpacingLabel); + rect.x += rect.width + 3f; + EditorGUI.PropertyField(rect, m_ParagraphSpacingProp, k_ParagraphSpacingLabel); + + EditorGUIUtility.labelWidth = 0; + EditorGUI.indentLevel = oldIndent; + + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + } + + EditorGUILayout.Space(); + } + + void DrawAlignment() + { + // TEXT ALIGNMENT + EditorGUI.BeginChangeCheck(); + + Rect rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.currentViewWidth > 504 ? 20 : 40 + 3); + + EditorGUI.PrefixLabel(rect, k_AlignmentLabel); + rect.x += EditorGUIUtility.labelWidth; + + EditorGUI.PropertyField(rect, m_HorizontalAlignmentProp, GUIContent.none); + EditorGUI.PropertyField(rect, m_VerticalAlignmentProp, GUIContent.none); + + // WRAPPING RATIOS shown if Justified mode is selected. + if (((HorizontalAlignmentOptions)m_HorizontalAlignmentProp.intValue & HorizontalAlignmentOptions.Justified) == HorizontalAlignmentOptions.Justified || ((HorizontalAlignmentOptions)m_HorizontalAlignmentProp.intValue & HorizontalAlignmentOptions.Flush) == HorizontalAlignmentOptions.Flush) + DrawPropertySlider(k_WrapMixLabel, m_WordWrappingRatiosProp); + + if (EditorGUI.EndChangeCheck()) + m_HavePropertiesChanged = true; + + EditorGUILayout.Space(); + } + + void DrawWrappingOverflow() + { + // TEXT WRAPPING + EditorGUI.BeginChangeCheck(); + int wrapSelection = EditorGUILayout.Popup(k_WrappingLabel, m_EnableWordWrappingProp.boolValue ? 1 : 0, k_WrappingOptions); + if (EditorGUI.EndChangeCheck()) + { + m_EnableWordWrappingProp.boolValue = wrapSelection == 1; + m_HavePropertiesChanged = true; + m_TextComponent.m_isInputParsingRequired = true; + } + + // TEXT OVERFLOW + EditorGUI.BeginChangeCheck(); + + if ((TextOverflowModes)m_TextOverflowModeProp.enumValueIndex == TextOverflowModes.Linked) + { + EditorGUILayout.BeginHorizontal(); + + float fieldWidth = EditorGUIUtility.fieldWidth; + EditorGUIUtility.fieldWidth = 65; + EditorGUILayout.PropertyField(m_TextOverflowModeProp, k_OverflowLabel); + EditorGUIUtility.fieldWidth = fieldWidth; + + EditorGUILayout.PropertyField(m_LinkedTextComponentProp, GUIContent.none); + + EditorGUILayout.EndHorizontal(); + + if (GUI.changed) + { + TMP_Text linkedComponent = m_LinkedTextComponentProp.objectReferenceValue as TMP_Text; + + if (linkedComponent == null) + { + m_LinkedTextComponentProp.objectReferenceValue = null; + + if (m_PreviousLinkedTextComponent != null) + m_TextComponent.ReleaseLinkedTextComponent(m_PreviousLinkedTextComponent); + } + else if (m_TextComponent.IsSelfOrLinkedAncestor(linkedComponent)) + { + m_LinkedTextComponentProp.objectReferenceValue = m_PreviousLinkedTextComponent; + } + else + { + if (m_PreviousLinkedTextComponent != null) + m_TextComponent.ReleaseLinkedTextComponent(m_PreviousLinkedTextComponent); + + m_LinkedTextComponentProp.objectReferenceValue = linkedComponent; + linkedComponent.parentLinkedComponent = m_TextComponent; + m_PreviousLinkedTextComponent = linkedComponent; + } + } + } + else if ((TextOverflowModes)m_TextOverflowModeProp.enumValueIndex == TextOverflowModes.Page) + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PropertyField(m_TextOverflowModeProp, k_OverflowLabel); + EditorGUILayout.PropertyField(m_PageToDisplayProp, GUIContent.none); + EditorGUILayout.EndHorizontal(); + + if (m_PreviousLinkedTextComponent) + { + m_TextComponent.ReleaseLinkedTextComponent(m_PreviousLinkedTextComponent); + + m_TextComponent.linkedTextComponent = null; + } + } + else + { + EditorGUILayout.PropertyField(m_TextOverflowModeProp, k_OverflowLabel); + + if (m_PreviousLinkedTextComponent) + { + m_TextComponent.ReleaseLinkedTextComponent(m_PreviousLinkedTextComponent); + + m_TextComponent.linkedTextComponent = null; + } + } + + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + m_TextComponent.m_isInputParsingRequired = true; + } + + EditorGUILayout.Space(); + } + + protected abstract void DrawExtraSettings(); + + protected void DrawMargins() + { + EditorGUI.BeginChangeCheck(); + DrawMarginProperty(m_MarginProp, k_MarginsLabel); + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + } + + EditorGUILayout.Space(); + } + + protected void DrawGeometrySorting() + { + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(m_GeometrySortingOrderProp, k_GeometrySortingLabel); + + if (EditorGUI.EndChangeCheck()) + m_HavePropertiesChanged = true; + + EditorGUILayout.Space(); + } + + protected void DrawIsTextObjectScaleStatic() + { + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(m_IsTextObjectScaleStaticProp, k_IsTextObjectScaleStatic); + + if (EditorGUI.EndChangeCheck()) + { + m_TextComponent.isTextObjectScaleStatic = m_IsTextObjectScaleStaticProp.boolValue; + m_HavePropertiesChanged = true; + } + + EditorGUILayout.Space(); + } + + + protected void DrawRichText() + { + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(m_IsRichTextProp, k_RichTextLabel); + if (EditorGUI.EndChangeCheck()) + m_HavePropertiesChanged = true; + } + + protected void DrawParsing() + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_EnableEscapeCharacterParsingProp, k_EscapeCharactersLabel); + EditorGUILayout.PropertyField(m_UseMaxVisibleDescenderProp, k_VisibleDescenderLabel); + + if (EditorGUI.EndChangeCheck()) + m_HavePropertiesChanged = true; + + EditorGUILayout.Space(); + } + + protected void DrawSpriteAsset() + { + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(m_SpriteAssetProp, k_SpriteAssetLabel, true); + + if (EditorGUI.EndChangeCheck()) + m_HavePropertiesChanged = true; + + EditorGUILayout.Space(); + } + + protected void DrawStyleSheet() + { + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(m_StyleSheetAssetProp, k_StyleSheetAssetLabel, true); + + if (EditorGUI.EndChangeCheck()) + { + m_StyleNames = GetStyleNames(); + m_HavePropertiesChanged = true; + } + + EditorGUILayout.Space(); + } + + protected void DrawTextureMapping() + { + // TEXTURE MAPPING OPTIONS + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_HorizontalMappingProp, k_HorizontalMappingLabel); + EditorGUILayout.PropertyField(m_VerticalMappingProp, k_VerticalMappingLabel); + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + } + + // UV OPTIONS + if (m_HorizontalMappingProp.enumValueIndex > 0) + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_UvLineOffsetProp, k_LineOffsetLabel, GUILayout.MinWidth(70f)); + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + } + } + + EditorGUILayout.Space(); + } + + protected void DrawKerning() + { + // KERNING + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_EnableKerningProp, k_KerningLabel); + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + } + } + + protected void DrawPadding() + { + // EXTRA PADDING + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_EnableExtraPaddingProp, k_PaddingLabel); + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + m_CheckPaddingRequiredProp.boolValue = true; + } + } + + /// + /// Method to retrieve the material presets that match the currently selected font asset. + /// + protected GUIContent[] GetMaterialPresets() + { + TMP_FontAsset fontAsset = m_FontAssetProp.objectReferenceValue as TMP_FontAsset; + if (fontAsset == null) return null; + + m_MaterialPresets = TMP_EditorUtility.FindMaterialReferences(fontAsset); + m_MaterialPresetNames = new GUIContent[m_MaterialPresets.Length]; + + m_MaterialPresetIndexLookup.Clear(); + + for (int i = 0; i < m_MaterialPresetNames.Length; i++) + { + m_MaterialPresetNames[i] = new GUIContent(m_MaterialPresets[i].name); + + m_MaterialPresetIndexLookup.Add(m_MaterialPresets[i].GetInstanceID(), i); + + //if (m_TargetMaterial.GetInstanceID() == m_MaterialPresets[i].GetInstanceID()) + // m_MaterialPresetSelectionIndex = i; + } + + m_IsPresetListDirty = false; + + return m_MaterialPresetNames; + } + + protected GUIContent[] GetStyleNames() + { + k_AvailableStyles.Clear(); + m_TextStyleIndexLookup.Clear(); + m_Styles.Clear(); + + // First style on the list is always the Normal default style. + TMP_Style styleNormal = TMP_Style.NormalStyle; + + m_Styles.Add(styleNormal); + m_TextStyleIndexLookup.Add(styleNormal.hashCode, 0); + + k_AvailableStyles.Add(styleNormal.hashCode, styleNormal); + + // Get styles from Style Sheet potentially assigned to the text object. + TMP_StyleSheet localStyleSheet = (TMP_StyleSheet)m_StyleSheetAssetProp.objectReferenceValue; + + if (localStyleSheet != null) + { + int styleCount = localStyleSheet.styles.Count; + + for (int i = 0; i < styleCount; i++) + { + TMP_Style style = localStyleSheet.styles[i]; + + if (k_AvailableStyles.ContainsKey(style.hashCode) == false) + { + k_AvailableStyles.Add(style.hashCode, style); + m_Styles.Add(style); + m_TextStyleIndexLookup.Add(style.hashCode, m_TextStyleIndexLookup.Count); + } + } + } + + // Get styles from TMP Settings' default style sheet. + TMP_StyleSheet globalStyleSheet = TMP_Settings.defaultStyleSheet; + + if (globalStyleSheet != null) + { + int styleCount = globalStyleSheet.styles.Count; + + for (int i = 0; i < styleCount; i++) + { + TMP_Style style = globalStyleSheet.styles[i]; + + if (k_AvailableStyles.ContainsKey(style.hashCode) == false) + { + k_AvailableStyles.Add(style.hashCode, style); + m_Styles.Add(style); + m_TextStyleIndexLookup.Add(style.hashCode, m_TextStyleIndexLookup.Count); + } + } + } + + // Create array that will contain the list of available styles. + GUIContent[] styleNames = k_AvailableStyles.Values.Select(item => new GUIContent(item.name)).ToArray(); + + // Set text style index + m_TextStyleIndexLookup.TryGetValue(m_TextStyleHashCodeProp.intValue, out m_StyleSelectionIndex); + + return styleNames; + } + + // DRAW MARGIN PROPERTY + protected void DrawMarginProperty(SerializedProperty property, GUIContent label) + { + Rect rect = EditorGUILayout.GetControlRect(false, 2 * 18); + + EditorGUI.BeginProperty(rect, label, property); + + Rect pos0 = new Rect(rect.x, rect.y + 2, rect.width - 15, 18); + + float width = rect.width + 3; + pos0.width = EditorGUIUtility.labelWidth; + EditorGUI.PrefixLabel(pos0, label); + + Vector4 margins = property.vector4Value; + + float widthB = width - EditorGUIUtility.labelWidth; + float fieldWidth = widthB / 4; + pos0.width = Mathf.Max(fieldWidth - 5, 45f); + + // Labels + pos0.x = EditorGUIUtility.labelWidth + 15; + margins.x = DrawMarginField(pos0, "Left", margins.x); + + pos0.x += fieldWidth; + margins.y = DrawMarginField(pos0, "Top", margins.y); + + pos0.x += fieldWidth; + margins.z = DrawMarginField(pos0, "Right", margins.z); + + pos0.x += fieldWidth; + margins.w = DrawMarginField(pos0, "Bottom", margins.w); + + property.vector4Value = margins; + + EditorGUI.EndProperty(); + } + + float DrawMarginField(Rect position, string label, float value) + { + int controlId = GUIUtility.GetControlID(FocusType.Keyboard, position); + EditorGUI.PrefixLabel(position, controlId, new GUIContent(label)); + + Rect dragZone = new Rect(position.x, position.y, position.width, position.height); + position.y += EditorGUIUtility.singleLineHeight; + + return EditorGUI.DoFloatField(EditorGUI.s_RecycledEditor, position, dragZone, controlId, value, EditorGUI.kFloatFieldFormatString, EditorStyles.numberField, true); + } + + protected void DrawPropertySlider(GUIContent label, SerializedProperty property) + { + Rect rect = EditorGUILayout.GetControlRect(false, 17); + + GUIContent content = label ?? GUIContent.none; + EditorGUI.Slider(new Rect(rect.x, rect.y, rect.width, rect.height), property, 0.0f, 1.0f, content); + } + + protected abstract bool IsMixSelectionTypes(); + + // Special Handling of Undo / Redo Events. + protected abstract void OnUndoRedo(); + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseEditorPanel.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseEditorPanel.cs.meta new file mode 100644 index 0000000..87bd739 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseEditorPanel.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 91950f78729ab144aa36e94690b28fad +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseShaderGUI.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseShaderGUI.cs new file mode 100644 index 0000000..5fd33ce --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseShaderGUI.cs @@ -0,0 +1,551 @@ +using UnityEngine; +using UnityEditor; + +namespace TMPro.EditorUtilities +{ + /// Base class for TextMesh Pro shader GUIs. + public abstract class TMP_BaseShaderGUI : ShaderGUI + { + /// Representation of a #pragma shader_feature. + /// It is assumed that the first feature option is for no keyword (underscores). + protected class ShaderFeature + { + public string undoLabel; + + public GUIContent label; + + /// The keyword labels, for display. Include the no-keyword as the first option. + public GUIContent[] keywordLabels; + + /// The shader keywords. Exclude the no-keyword option. + public string[] keywords; + + int m_State; + + public bool Active + { + get { return m_State >= 0; } + } + + public int State + { + get { return m_State; } + } + + public void ReadState(Material material) + { + for (int i = 0; i < keywords.Length; i++) + { + if (material.IsKeywordEnabled(keywords[i])) + { + m_State = i; + return; + } + } + + m_State = -1; + } + + public void SetActive(bool active, Material material) + { + m_State = active ? 0 : -1; + SetStateKeywords(material); + } + + public void DoPopup(MaterialEditor editor, Material material) + { + EditorGUI.BeginChangeCheck(); + int selection = EditorGUILayout.Popup(label, m_State + 1, keywordLabels); + if (EditorGUI.EndChangeCheck()) + { + m_State = selection - 1; + editor.RegisterPropertyChangeUndo(undoLabel); + SetStateKeywords(material); + } + } + + void SetStateKeywords(Material material) + { + for (int i = 0; i < keywords.Length; i++) + { + if (i == m_State) + { + material.EnableKeyword(keywords[i]); + } + else + { + material.DisableKeyword(keywords[i]); + } + } + } + } + + static GUIContent s_TempLabel = new GUIContent(); + + protected static bool s_DebugExtended; + + static int s_UndoRedoCount, s_LastSeenUndoRedoCount; + + static float[][] s_TempFloats = + { + null, new float[1], new float[2], new float[3], new float[4] + }; + + protected static GUIContent[] s_XywhVectorLabels = + { + new GUIContent("X"), + new GUIContent("Y"), + new GUIContent("W", "Width"), + new GUIContent("H", "Height") + }; + + protected static GUIContent[] s_LbrtVectorLabels = + { + new GUIContent("L", "Left"), + new GUIContent("B", "Bottom"), + new GUIContent("R", "Right"), + new GUIContent("T", "Top") + }; + + protected static GUIContent[] s_CullingTypeLabels = + { + new GUIContent("Off"), + new GUIContent("Front"), + new GUIContent("Back") + }; + + static TMP_BaseShaderGUI() + { + // Keep track of how many undo/redo events happened. + Undo.undoRedoPerformed += () => s_UndoRedoCount += 1; + } + + bool m_IsNewGUI = true; + + float m_DragAndDropMinY; + + protected MaterialEditor m_Editor; + + protected Material m_Material; + + protected MaterialProperty[] m_Properties; + + void PrepareGUI() + { + m_IsNewGUI = false; + ShaderUtilities.GetShaderPropertyIDs(); + + // New GUI just got constructed. This happens in response to a selection, + // but also after undo/redo events. + if (s_LastSeenUndoRedoCount != s_UndoRedoCount) + { + // There's been at least one undo/redo since the last time this GUI got constructed. + // Maybe the undo/redo was for this material? Assume that is was. + TMPro_EventManager.ON_MATERIAL_PROPERTY_CHANGED(true, m_Material as Material); + } + + s_LastSeenUndoRedoCount = s_UndoRedoCount; + } + + public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) + { + m_Editor = materialEditor; + m_Material = materialEditor.target as Material; + this.m_Properties = properties; + + if (m_IsNewGUI) + { + PrepareGUI(); + } + + DoDragAndDropBegin(); + EditorGUI.BeginChangeCheck(); + DoGUI(); + if (EditorGUI.EndChangeCheck()) + { + TMPro_EventManager.ON_MATERIAL_PROPERTY_CHANGED(true, m_Material); + } + + DoDragAndDropEnd(); + } + + /// Override this method to create the specific shader GUI. + protected abstract void DoGUI(); + + static string[] s_PanelStateLabel = new string[] { "\t- Click to collapse -", "\t- Click to expand -" }; + + protected bool BeginPanel(string panel, bool expanded) + { + EditorGUI.indentLevel = 0; + + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + Rect r = EditorGUI.IndentedRect(GUILayoutUtility.GetRect(20, 18)); + r.x += 20; + r.width += 6; + + bool enabled = GUI.enabled; + GUI.enabled = true; + expanded = TMP_EditorUtility.EditorToggle(r, expanded, new GUIContent(panel), TMP_UIStyleManager.panelTitle); + r.width -= 30; + EditorGUI.LabelField(r, new GUIContent(expanded ? s_PanelStateLabel[0] : s_PanelStateLabel[1]), TMP_UIStyleManager.rightLabel); + GUI.enabled = enabled; + + EditorGUI.indentLevel += 1; + EditorGUI.BeginDisabledGroup(false); + + return expanded; + } + + protected bool BeginPanel(string panel, ShaderFeature feature, bool expanded, bool readState = true) + { + EditorGUI.indentLevel = 0; + + if (readState) + { + feature.ReadState(m_Material); + } + + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.BeginHorizontal(); + + Rect r = EditorGUI.IndentedRect(GUILayoutUtility.GetRect(20, 20, GUILayout.Width(20f))); + bool active = EditorGUI.Toggle(r, feature.Active); + + if (EditorGUI.EndChangeCheck()) + { + m_Editor.RegisterPropertyChangeUndo(feature.undoLabel); + feature.SetActive(active, m_Material); + } + + r = EditorGUI.IndentedRect(GUILayoutUtility.GetRect(20, 18)); + r.width += 6; + + bool enabled = GUI.enabled; + GUI.enabled = true; + expanded = TMP_EditorUtility.EditorToggle(r, expanded, new GUIContent(panel), TMP_UIStyleManager.panelTitle); + r.width -= 10; + EditorGUI.LabelField(r, new GUIContent(expanded ? s_PanelStateLabel[0] : s_PanelStateLabel[1]), TMP_UIStyleManager.rightLabel); + GUI.enabled = enabled; + + GUILayout.EndHorizontal(); + + EditorGUI.indentLevel += 1; + EditorGUI.BeginDisabledGroup(!active); + + return expanded; + } + + public void EndPanel() + { + EditorGUI.EndDisabledGroup(); + EditorGUI.indentLevel -= 1; + EditorGUILayout.EndVertical(); + } + + MaterialProperty BeginProperty(string name) + { + MaterialProperty property = FindProperty(name, m_Properties); + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = property.hasMixedValue; + m_Editor.BeginAnimatedCheck(Rect.zero, property); + + return property; + } + + bool EndProperty() + { + m_Editor.EndAnimatedCheck(); + EditorGUI.showMixedValue = false; + return EditorGUI.EndChangeCheck(); + } + + protected void DoPopup(string name, string label, GUIContent[] options) + { + MaterialProperty property = BeginProperty(name); + s_TempLabel.text = label; + int index = EditorGUILayout.Popup(s_TempLabel, (int)property.floatValue, options); + if (EndProperty()) + { + property.floatValue = index; + } + } + + protected void DoCubeMap(string name, string label) + { + DoTexture(name, label, typeof(Cubemap)); + } + + protected void DoTexture2D(string name, string label, bool withTilingOffset = false, string[] speedNames = null) + { + DoTexture(name, label, typeof(Texture2D), withTilingOffset, speedNames); + } + + void DoTexture(string name, string label, System.Type type, bool withTilingOffset = false, string[] speedNames = null) + { + MaterialProperty property = FindProperty(name, m_Properties); + m_Editor.BeginAnimatedCheck(Rect.zero, property); + + Rect rect = EditorGUILayout.GetControlRect(true, 60f); + float totalWidth = rect.width; + rect.width = EditorGUIUtility.labelWidth + 60f; + s_TempLabel.text = label; + + EditorGUI.BeginChangeCheck(); + Object tex = EditorGUI.ObjectField(rect, s_TempLabel, property.textureValue, type, false); + if (EditorGUI.EndChangeCheck()) + { + property.textureValue = tex as Texture; + } + + rect.x += rect.width + 4f; + rect.width = totalWidth - rect.width - 4f; + rect.height = EditorGUIUtility.singleLineHeight; + + if (withTilingOffset) + { + DoTilingOffset(rect, property); + rect.y += (rect.height + 2f) * 2f; + } + + m_Editor.EndAnimatedCheck(); + + if (speedNames != null) + { + DoUVSpeed(rect, speedNames); + } + } + + void DoTilingOffset(Rect rect, MaterialProperty property) + { + float labelWidth = EditorGUIUtility.labelWidth; + int indentLevel = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + EditorGUIUtility.labelWidth = Mathf.Min(40f, rect.width * 0.20f); + + Vector4 vector = property.textureScaleAndOffset; + + bool changed = false; + float[] values = s_TempFloats[2]; + + s_TempLabel.text = "Tiling"; + Rect vectorRect = EditorGUI.PrefixLabel(rect, s_TempLabel); + values[0] = vector.x; + values[1] = vector.y; + + EditorGUI.BeginChangeCheck(); + EditorGUI.MultiFloatField(vectorRect, s_XywhVectorLabels, values); + if (EditorGUI.EndChangeCheck()) + { + vector.x = values[0]; + vector.y = values[1]; + changed = true; + } + + rect.y += rect.height + 2f; + s_TempLabel.text = "Offset"; + vectorRect = EditorGUI.PrefixLabel(rect, s_TempLabel); + values[0] = vector.z; + values[1] = vector.w; + + EditorGUI.BeginChangeCheck(); + EditorGUI.MultiFloatField(vectorRect, s_XywhVectorLabels, values); + if (EditorGUI.EndChangeCheck()) + { + vector.z = values[0]; + vector.w = values[1]; + changed = true; + } + + if (changed) + { + property.textureScaleAndOffset = vector; + } + + EditorGUIUtility.labelWidth = labelWidth; + EditorGUI.indentLevel = indentLevel; + } + + protected void DoUVSpeed(Rect rect, string[] names) + { + float labelWidth = EditorGUIUtility.labelWidth; + int indentLevel = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + EditorGUIUtility.labelWidth = Mathf.Min(40f, rect.width * 0.20f); + + s_TempLabel.text = "Speed"; + rect = EditorGUI.PrefixLabel(rect, s_TempLabel); + + EditorGUIUtility.labelWidth = 13f; + rect.width = rect.width * 0.5f - 1f; + DoFloat(rect, names[0], "X"); + rect.x += rect.width + 2f; + DoFloat(rect, names[1], "Y"); + EditorGUIUtility.labelWidth = labelWidth; + EditorGUI.indentLevel = indentLevel; + } + + protected void DoToggle(string name, string label) + { + MaterialProperty property = BeginProperty(name); + s_TempLabel.text = label; + bool value = EditorGUILayout.Toggle(s_TempLabel, property.floatValue == 1f); + if (EndProperty()) + { + property.floatValue = value ? 1f : 0f; + } + } + + protected void DoFloat(string name, string label) + { + MaterialProperty property = BeginProperty(name); + Rect rect = EditorGUILayout.GetControlRect(); + rect.width = EditorGUIUtility.labelWidth + 55f; + s_TempLabel.text = label; + float value = EditorGUI.FloatField(rect, s_TempLabel, property.floatValue); + if (EndProperty()) + { + property.floatValue = value; + } + } + + protected void DoColor(string name, string label) + { + MaterialProperty property = BeginProperty(name); + s_TempLabel.text = label; + Color value = EditorGUI.ColorField(EditorGUILayout.GetControlRect(), s_TempLabel, property.colorValue, false, true, true); + if (EndProperty()) + { + property.colorValue = value; + } + } + + void DoFloat(Rect rect, string name, string label) + { + MaterialProperty property = BeginProperty(name); + s_TempLabel.text = label; + float value = EditorGUI.FloatField(rect, s_TempLabel, property.floatValue); + if (EndProperty()) + { + property.floatValue = value; + } + } + + protected void DoSlider(string name, string label) + { + MaterialProperty property = BeginProperty(name); + Vector2 range = property.rangeLimits; + s_TempLabel.text = label; + float value = EditorGUI.Slider( + EditorGUILayout.GetControlRect(), s_TempLabel, property.floatValue, range.x, range.y + ); + if (EndProperty()) + { + property.floatValue = value; + } + } + + protected void DoVector3(string name, string label) + { + MaterialProperty property = BeginProperty(name); + s_TempLabel.text = label; + Vector4 value = EditorGUILayout.Vector3Field(s_TempLabel, property.vectorValue); + if (EndProperty()) + { + property.vectorValue = value; + } + } + + protected void DoVector(string name, string label, GUIContent[] subLabels) + { + MaterialProperty property = BeginProperty(name); + Rect rect = EditorGUILayout.GetControlRect(); + s_TempLabel.text = label; + rect = EditorGUI.PrefixLabel(rect, s_TempLabel); + Vector4 vector = property.vectorValue; + + float[] values = s_TempFloats[subLabels.Length]; + for (int i = 0; i < subLabels.Length; i++) + { + values[i] = vector[i]; + } + + EditorGUI.MultiFloatField(rect, subLabels, values); + if (EndProperty()) + { + for (int i = 0; i < subLabels.Length; i++) + { + vector[i] = values[i]; + } + + property.vectorValue = vector; + } + } + + void DoDragAndDropBegin() + { + m_DragAndDropMinY = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)).y; + } + + void DoDragAndDropEnd() + { + Rect rect = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + Event evt = Event.current; + if (evt.type == EventType.DragUpdated) + { + DragAndDrop.visualMode = DragAndDropVisualMode.Generic; + evt.Use(); + } + else if ( + evt.type == EventType.DragPerform && + Rect.MinMaxRect(rect.xMin, m_DragAndDropMinY, rect.xMax, rect.yMax).Contains(evt.mousePosition) + ) + { + DragAndDrop.AcceptDrag(); + evt.Use(); + Material droppedMaterial = DragAndDrop.objectReferences[0] as Material; + if (droppedMaterial && droppedMaterial != m_Material) + { + PerformDrop(droppedMaterial); + } + } + } + + void PerformDrop(Material droppedMaterial) + { + Texture droppedTex = droppedMaterial.GetTexture(ShaderUtilities.ID_MainTex); + if (!droppedTex) + { + return; + } + + Texture currentTex = m_Material.GetTexture(ShaderUtilities.ID_MainTex); + TMP_FontAsset requiredFontAsset = null; + if (droppedTex != currentTex) + { + requiredFontAsset = TMP_EditorUtility.FindMatchingFontAsset(droppedMaterial); + if (!requiredFontAsset) + { + return; + } + } + + foreach (GameObject o in Selection.gameObjects) + { + if (requiredFontAsset) + { + TMP_Text textComponent = o.GetComponent(); + if (textComponent) + { + Undo.RecordObject(textComponent, "Font Asset Change"); + textComponent.font = requiredFontAsset; + } + } + + TMPro_EventManager.ON_DRAG_AND_DROP_MATERIAL_CHANGED(o, m_Material, droppedMaterial); + EditorUtility.SetDirty(o); + } + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseShaderGUI.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseShaderGUI.cs.meta new file mode 100644 index 0000000..f07bd85 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BaseShaderGUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 438efd46088d408d8a53f707fa68d976 +timeCreated: 1469844810 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BitmapShaderGUI.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BitmapShaderGUI.cs new file mode 100644 index 0000000..be39959 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BitmapShaderGUI.cs @@ -0,0 +1,93 @@ +using UnityEngine; +using UnityEditor; + +namespace TMPro.EditorUtilities +{ + public class TMP_BitmapShaderGUI : TMP_BaseShaderGUI + { + static bool s_Face = true; + + protected override void DoGUI() + { + s_Face = BeginPanel("Face", s_Face); + if (s_Face) + { + DoFacePanel(); + } + + EndPanel(); + + s_DebugExtended = BeginPanel("Debug Settings", s_DebugExtended); + if (s_DebugExtended) + { + DoDebugPanel(); + } + + EndPanel(); + } + + void DoFacePanel() + { + EditorGUI.indentLevel += 1; + if (m_Material.HasProperty(ShaderUtilities.ID_FaceTex)) + { + DoColor("_FaceColor", "Color"); + DoTexture2D("_FaceTex", "Texture", true); + } + else + { + DoColor("_Color", "Color"); + DoSlider("_DiffusePower", "Diffuse Power"); + } + + EditorGUI.indentLevel -= 1; + + EditorGUILayout.Space(); + } + + void DoDebugPanel() + { + EditorGUI.indentLevel += 1; + DoTexture2D("_MainTex", "Font Atlas"); + if (m_Material.HasProperty(ShaderUtilities.ID_VertexOffsetX)) + { + if (m_Material.HasProperty(ShaderUtilities.ID_Padding)) + { + EditorGUILayout.Space(); + DoFloat("_Padding", "Padding"); + } + + EditorGUILayout.Space(); + DoFloat("_VertexOffsetX", "Offset X"); + DoFloat("_VertexOffsetY", "Offset Y"); + } + + if (m_Material.HasProperty(ShaderUtilities.ID_MaskSoftnessX)) + { + EditorGUILayout.Space(); + DoFloat("_MaskSoftnessX", "Softness X"); + DoFloat("_MaskSoftnessY", "Softness Y"); + DoVector("_ClipRect", "Clip Rect", s_LbrtVectorLabels); + } + + if (m_Material.HasProperty(ShaderUtilities.ID_StencilID)) + { + EditorGUILayout.Space(); + DoFloat("_Stencil", "Stencil ID"); + DoFloat("_StencilComp", "Stencil Comp"); + } + + if (m_Material.HasProperty(ShaderUtilities.ShaderTag_CullMode)) + { + EditorGUILayout.Space(); + DoPopup("_CullMode", "Cull Mode", s_CullingTypeLabels); + } + + EditorGUILayout.Space(); + + EditorGUI.indentLevel -= 1; + + EditorGUILayout.Space(); + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BitmapShaderGUI.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BitmapShaderGUI.cs.meta new file mode 100644 index 0000000..6d0e052 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_BitmapShaderGUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 806de5a9211448c8b65c8435ebb48dd4 +timeCreated: 1469998850 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_CharacterPropertyDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_CharacterPropertyDrawer.cs new file mode 100644 index 0000000..98f32c7 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_CharacterPropertyDrawer.cs @@ -0,0 +1,235 @@ +using UnityEngine; +using UnityEngine.TextCore; +using UnityEngine.TextCore.LowLevel; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + [CustomPropertyDrawer(typeof(TMP_Character))] + public class TMP_CharacterPropertyDrawer : PropertyDrawer + { + private string k_ColorProperty = "_Color"; + + int m_GlyphSelectedForEditing = -1; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty prop_Unicode = property.FindPropertyRelative("m_Unicode"); + SerializedProperty prop_GlyphIndex = property.FindPropertyRelative("m_GlyphIndex"); + SerializedProperty prop_Scale = property.FindPropertyRelative("m_Scale"); + + + GUIStyle style = new GUIStyle(EditorStyles.label); + style.richText = true; + + EditorGUIUtility.labelWidth = 40f; + EditorGUIUtility.fieldWidth = 50; + + Rect rect = new Rect(position.x + 50, position.y, position.width, 49); + + // Display non-editable fields + if (GUI.enabled == false) + { + int unicode = prop_Unicode.intValue; + EditorGUI.LabelField(new Rect(rect.x, rect.y, 120f, 18), new GUIContent("Unicode: 0x" + unicode.ToString("X") + ""), style); + EditorGUI.LabelField(new Rect(rect.x + 115, rect.y, 120f, 18), unicode <= 0xFFFF ? new GUIContent("UTF16: \\u" + unicode.ToString("X4") + "") : new GUIContent("UTF32: \\U" + unicode.ToString("X8") + ""), style); + EditorGUI.LabelField(new Rect(rect.x, rect.y + 18, 120, 18), new GUIContent("Glyph ID: " + prop_GlyphIndex.intValue + ""), style); + EditorGUI.LabelField(new Rect(rect.x, rect.y + 36, 80, 18), new GUIContent("Scale: " + prop_Scale.floatValue + ""), style); + + // Draw Glyph (if exists) + DrawGlyph(position, property); + } + else // Display editable fields + { + EditorGUIUtility.labelWidth = 55f; + GUI.SetNextControlName("Unicode Input"); + EditorGUI.BeginChangeCheck(); + string unicode = EditorGUI.TextField(new Rect(rect.x, rect.y, 120, 18), "Unicode:", prop_Unicode.intValue.ToString("X")); + + if (GUI.GetNameOfFocusedControl() == "Unicode Input") + { + //Filter out unwanted characters. + char chr = Event.current.character; + if ((chr < '0' || chr > '9') && (chr < 'a' || chr > 'f') && (chr < 'A' || chr > 'F')) + { + Event.current.character = '\0'; + } + } + + if (EditorGUI.EndChangeCheck()) + { + // Update Unicode value + prop_Unicode.intValue = TMP_TextUtilities.StringHexToInt(unicode); + } + + // Cache current glyph index in case it needs to be restored if the new glyph index is invalid. + int currentGlyphIndex = prop_GlyphIndex.intValue; + + EditorGUIUtility.labelWidth = 59f; + EditorGUI.BeginChangeCheck(); + EditorGUI.DelayedIntField(new Rect(rect.x, rect.y + 18, 100, 18), prop_GlyphIndex, new GUIContent("Glyph ID:")); + if (EditorGUI.EndChangeCheck()) + { + // Get a reference to the font asset + TMP_FontAsset fontAsset = property.serializedObject.targetObject as TMP_FontAsset; + + // Make sure new glyph index is valid. + int elementIndex = fontAsset.glyphTable.FindIndex(item => item.index == prop_GlyphIndex.intValue); + + if (elementIndex == -1) + prop_GlyphIndex.intValue = currentGlyphIndex; + else + fontAsset.IsFontAssetLookupTablesDirty = true; + } + + int glyphIndex = prop_GlyphIndex.intValue; + + // Reset glyph selection if new character has been selected. + if (GUI.enabled && m_GlyphSelectedForEditing != glyphIndex) + m_GlyphSelectedForEditing = -1; + + // Display button to edit the glyph data. + if (GUI.Button(new Rect(rect.x + 120, rect.y + 18, 75, 18), new GUIContent("Edit Glyph"))) + { + if (m_GlyphSelectedForEditing == -1) + m_GlyphSelectedForEditing = glyphIndex; + else + m_GlyphSelectedForEditing = -1; + + // Button clicks should not result in potential change. + GUI.changed = false; + } + + // Show the glyph property drawer if selected + if (glyphIndex == m_GlyphSelectedForEditing && GUI.enabled) + { + // Get a reference to the font asset + TMP_FontAsset fontAsset = property.serializedObject.targetObject as TMP_FontAsset; + + if (fontAsset != null) + { + // Get the index of the glyph in the font asset glyph table. + int elementIndex = fontAsset.glyphTable.FindIndex(item => item.index == glyphIndex); + + if (elementIndex != -1) + { + SerializedProperty prop_GlyphTable = property.serializedObject.FindProperty("m_GlyphTable"); + SerializedProperty prop_Glyph = prop_GlyphTable.GetArrayElementAtIndex(elementIndex); + + SerializedProperty prop_GlyphMetrics = prop_Glyph.FindPropertyRelative("m_Metrics"); + SerializedProperty prop_GlyphRect = prop_Glyph.FindPropertyRelative("m_GlyphRect"); + + Rect newRect = EditorGUILayout.GetControlRect(false, 115); + EditorGUI.DrawRect(new Rect(newRect.x + 52, newRect.y - 20, newRect.width - 52, newRect.height - 5), new Color(0.1f, 0.1f, 0.1f, 0.45f)); + EditorGUI.DrawRect(new Rect(newRect.x + 53, newRect.y - 19, newRect.width - 54, newRect.height - 7), new Color(0.3f, 0.3f, 0.3f, 0.8f)); + + // Display GlyphRect + newRect.x += 55; + newRect.y -= 18; + newRect.width += 5; + EditorGUI.PropertyField(newRect, prop_GlyphRect); + + // Display GlyphMetrics + newRect.y += 45; + EditorGUI.PropertyField(newRect, prop_GlyphMetrics); + + rect.y += 120; + } + } + } + + EditorGUIUtility.labelWidth = 39f; + EditorGUI.PropertyField(new Rect(rect.x, rect.y + 36, 80, 18), prop_Scale, new GUIContent("Scale:")); + + // Draw Glyph (if exists) + DrawGlyph(position, property); + } + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return 58; + } + + void DrawGlyph(Rect position, SerializedProperty property) + { + // Get a reference to the atlas texture + TMP_FontAsset fontAsset = property.serializedObject.targetObject as TMP_FontAsset; + + if (fontAsset == null) + return; + + // Get a reference to the Glyph Table + SerializedProperty prop_GlyphTable = property.serializedObject.FindProperty("m_GlyphTable"); + int glyphIndex = property.FindPropertyRelative("m_GlyphIndex").intValue; + int elementIndex = fontAsset.glyphTable.FindIndex(item => item.index == glyphIndex); + + // Return if we can't find the glyph + if (elementIndex == -1) + return; + + SerializedProperty prop_Glyph = prop_GlyphTable.GetArrayElementAtIndex(elementIndex); + + // Get reference to atlas texture. + int atlasIndex = prop_Glyph.FindPropertyRelative("m_AtlasIndex").intValue; + Texture2D atlasTexture = fontAsset.atlasTextures.Length > atlasIndex ? fontAsset.atlasTextures[atlasIndex] : null; + + if (atlasTexture == null) + return; + + Material mat; + if (((GlyphRasterModes)fontAsset.atlasRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP) + { + mat = TMP_FontAssetEditor.internalBitmapMaterial; + + if (mat == null) + return; + + mat.mainTexture = atlasTexture; + mat.SetColor(k_ColorProperty, Color.white); + } + else + { + mat = TMP_FontAssetEditor.internalSDFMaterial; + + if (mat == null) + return; + + mat.mainTexture = atlasTexture; + mat.SetFloat(ShaderUtilities.ID_GradientScale, fontAsset.atlasPadding + 1); + } + + // Draw glyph + Rect glyphDrawPosition = new Rect(position.x, position.y, 48, 58); + + SerializedProperty glyphRectProperty = prop_Glyph.FindPropertyRelative("m_GlyphRect"); + + int padding = fontAsset.atlasPadding; + + int glyphOriginX = glyphRectProperty.FindPropertyRelative("m_X").intValue - padding; + int glyphOriginY = glyphRectProperty.FindPropertyRelative("m_Y").intValue - padding; + int glyphWidth = glyphRectProperty.FindPropertyRelative("m_Width").intValue + padding * 2; + int glyphHeight = glyphRectProperty.FindPropertyRelative("m_Height").intValue + padding * 2; + + float normalizedHeight = fontAsset.faceInfo.ascentLine - fontAsset.faceInfo.descentLine; + float scale = glyphDrawPosition.width / normalizedHeight; + + // Compute the normalized texture coordinates + Rect texCoords = new Rect((float)glyphOriginX / atlasTexture.width, (float)glyphOriginY / atlasTexture.height, (float)glyphWidth / atlasTexture.width, (float)glyphHeight / atlasTexture.height); + + if (Event.current.type == EventType.Repaint) + { + glyphDrawPosition.x += (glyphDrawPosition.width - glyphWidth * scale) / 2; + glyphDrawPosition.y += (glyphDrawPosition.height - glyphHeight * scale) / 2; + glyphDrawPosition.width = glyphWidth * scale; + glyphDrawPosition.height = glyphHeight * scale; + + // Could switch to using the default material of the font asset which would require passing scale to the shader. + Graphics.DrawTexture(glyphDrawPosition, atlasTexture, texCoords, 0, 0, 0, 0, new Color(1f, 1f, 1f), mat); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_CharacterPropertyDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_CharacterPropertyDrawer.cs.meta new file mode 100644 index 0000000..3bf7892 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_CharacterPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01ada73c4792aba4c937ff5d92cce866 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientAssetMenu.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientAssetMenu.cs new file mode 100644 index 0000000..d7ca885 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientAssetMenu.cs @@ -0,0 +1,50 @@ +using UnityEditor; +using UnityEngine; +using System.IO; +using System.Collections; + + + +namespace TMPro.EditorUtilities +{ + + public static class TMP_ColorGradientAssetMenu + { + [MenuItem("Assets/Create/TextMeshPro/Color Gradient", false, 115)] + public static void CreateColorGradient(MenuCommand context) + { + string filePath; + + if (Selection.assetGUIDs.Length == 0) + filePath = "Assets/New TMP Color Gradient.asset"; + else + filePath = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]); + + if (Directory.Exists(filePath)) + { + filePath += "/New TMP Color Gradient.asset"; + } + else + { + filePath = Path.GetDirectoryName(filePath) + "/New TMP Color Gradient.asset"; + } + + filePath = AssetDatabase.GenerateUniqueAssetPath(filePath); + + // Create new Color Gradient Asset. + TMP_ColorGradient colorGradient = ScriptableObject.CreateInstance(); + + // Create Asset + AssetDatabase.CreateAsset(colorGradient, filePath); + + //EditorUtility.SetDirty(colorGradient); + + AssetDatabase.SaveAssets(); + + AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(colorGradient)); + + EditorUtility.FocusProjectWindow(); + EditorGUIUtility.PingObject(colorGradient); + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientAssetMenu.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientAssetMenu.cs.meta new file mode 100644 index 0000000..a2201ee --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientAssetMenu.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d9647b571c5e44729b71d756b3d55317 +timeCreated: 1468187791 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientEditor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientEditor.cs new file mode 100644 index 0000000..ca79435 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientEditor.cs @@ -0,0 +1,146 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + [CustomEditor(typeof(TMP_ColorGradient))] + public class TMP_ColorGradientEditor : Editor + { + SerializedProperty m_ColorMode; + SerializedProperty m_TopLeftColor; + SerializedProperty m_TopRightColor; + SerializedProperty m_BottomLeftColor; + SerializedProperty m_BottomRightColor; + + void OnEnable() + { + m_ColorMode = serializedObject.FindProperty("colorMode"); + m_TopLeftColor = serializedObject.FindProperty("topLeft"); + m_TopRightColor = serializedObject.FindProperty("topRight"); + m_BottomLeftColor = serializedObject.FindProperty("bottomLeft"); + m_BottomRightColor = serializedObject.FindProperty("bottomRight"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_ColorMode, new GUIContent("Color Mode")); + if (EditorGUI.EndChangeCheck()) + { + switch ((ColorMode)m_ColorMode.enumValueIndex) + { + case ColorMode.Single: + m_TopRightColor.colorValue = m_TopLeftColor.colorValue; + m_BottomLeftColor.colorValue = m_TopLeftColor.colorValue; + m_BottomRightColor.colorValue = m_TopLeftColor.colorValue; + break; + case ColorMode.HorizontalGradient: + m_BottomLeftColor.colorValue = m_TopLeftColor.colorValue; + m_BottomRightColor.colorValue = m_TopRightColor.colorValue; + break; + case ColorMode.VerticalGradient: + m_TopRightColor.colorValue = m_TopLeftColor.colorValue; + m_BottomRightColor.colorValue = m_BottomLeftColor.colorValue; + break; + } + } + Rect rect; + switch ((ColorMode)m_ColorMode.enumValueIndex) + { + case ColorMode.Single: + EditorGUI.BeginChangeCheck(); + rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2)); + EditorGUI.PrefixLabel(rect, new GUIContent("Colors")); + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth) / (EditorGUIUtility.wideMode ? 1f : 2f); + TMP_EditorUtility.DrawColorProperty(rect, m_TopLeftColor); + if (EditorGUI.EndChangeCheck()) + { + m_TopRightColor.colorValue = m_TopLeftColor.colorValue; + m_BottomLeftColor.colorValue = m_TopLeftColor.colorValue; + m_BottomRightColor.colorValue = m_TopLeftColor.colorValue; + } + break; + + case ColorMode.HorizontalGradient: + rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2)); + EditorGUI.PrefixLabel(rect, new GUIContent("Colors")); + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth) / 2f; + + EditorGUI.BeginChangeCheck(); + TMP_EditorUtility.DrawColorProperty(rect, m_TopLeftColor); + if (EditorGUI.EndChangeCheck()) + { + m_BottomLeftColor.colorValue = m_TopLeftColor.colorValue; + } + + rect.x += rect.width; + + EditorGUI.BeginChangeCheck(); + TMP_EditorUtility.DrawColorProperty(rect, m_TopRightColor); + if (EditorGUI.EndChangeCheck()) + { + m_BottomRightColor.colorValue = m_TopRightColor.colorValue; + } + break; + + case ColorMode.VerticalGradient: + rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2)); + EditorGUI.PrefixLabel(rect, new GUIContent("Colors")); + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth) / (EditorGUIUtility.wideMode ? 1f : 2f); + rect.height = EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2); + + EditorGUI.BeginChangeCheck(); + TMP_EditorUtility.DrawColorProperty(rect, m_TopLeftColor); + if (EditorGUI.EndChangeCheck()) + { + m_TopRightColor.colorValue = m_TopLeftColor.colorValue; + } + + rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2)); + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth) / (EditorGUIUtility.wideMode ? 1f : 2f); + rect.height = EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2); + + EditorGUI.BeginChangeCheck(); + TMP_EditorUtility.DrawColorProperty(rect, m_BottomLeftColor); + if (EditorGUI.EndChangeCheck()) + { + m_BottomRightColor.colorValue = m_BottomLeftColor.colorValue; + } + break; + + case ColorMode.FourCornersGradient: + rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2)); + EditorGUI.PrefixLabel(rect, new GUIContent("Colors")); + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth) / 2f; + rect.height = EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2); + + TMP_EditorUtility.DrawColorProperty(rect, m_TopLeftColor); + rect.x += rect.width; + TMP_EditorUtility.DrawColorProperty(rect, m_TopRightColor); + + rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2)); + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth) / 2f; + rect.height = EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2); + + TMP_EditorUtility.DrawColorProperty(rect, m_BottomLeftColor); + rect.x += rect.width; + TMP_EditorUtility.DrawColorProperty(rect, m_BottomRightColor); + break; + } + + if (serializedObject.ApplyModifiedProperties()) + TMPro_EventManager.ON_COLOR_GRADIENT_PROPERTY_CHANGED(target as TMP_ColorGradient); + + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientEditor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientEditor.cs.meta new file mode 100644 index 0000000..dc58116 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ColorGradientEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fcc60c1d6bb544d9b712b652f418ff3a +timeCreated: 1468400050 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_DropdownEditor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_DropdownEditor.cs new file mode 100644 index 0000000..48f8e2b --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_DropdownEditor.cs @@ -0,0 +1,57 @@ +using UnityEngine; +using UnityEditor; +using UnityEditor.UI; +using UnityEngine.UI; + +namespace TMPro.EditorUtilities +{ + [CustomEditor(typeof(TMP_Dropdown), true)] + [CanEditMultipleObjects] + public class DropdownEditor : SelectableEditor + { + SerializedProperty m_Template; + SerializedProperty m_CaptionText; + SerializedProperty m_CaptionImage; + SerializedProperty m_Placeholder; + SerializedProperty m_ItemText; + SerializedProperty m_ItemImage; + SerializedProperty m_OnSelectionChanged; + SerializedProperty m_Value; + SerializedProperty m_AlphaFadeSpeed; + SerializedProperty m_Options; + + protected override void OnEnable() + { + base.OnEnable(); + m_Template = serializedObject.FindProperty("m_Template"); + m_CaptionText = serializedObject.FindProperty("m_CaptionText"); + m_CaptionImage = serializedObject.FindProperty("m_CaptionImage"); + m_Placeholder = serializedObject.FindProperty("m_Placeholder"); + m_ItemText = serializedObject.FindProperty("m_ItemText"); + m_ItemImage = serializedObject.FindProperty("m_ItemImage"); + m_OnSelectionChanged = serializedObject.FindProperty("m_OnValueChanged"); + m_Value = serializedObject.FindProperty("m_Value"); + m_AlphaFadeSpeed = serializedObject.FindProperty("m_AlphaFadeSpeed"); + m_Options = serializedObject.FindProperty("m_Options"); + } + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + EditorGUILayout.Space(); + + serializedObject.Update(); + EditorGUILayout.PropertyField(m_Template); + EditorGUILayout.PropertyField(m_CaptionText); + EditorGUILayout.PropertyField(m_CaptionImage); + EditorGUILayout.PropertyField(m_Placeholder); + EditorGUILayout.PropertyField(m_ItemText); + EditorGUILayout.PropertyField(m_ItemImage); + EditorGUILayout.PropertyField(m_Value); + EditorGUILayout.PropertyField(m_AlphaFadeSpeed); + EditorGUILayout.PropertyField(m_Options); + EditorGUILayout.PropertyField(m_OnSelectionChanged); + serializedObject.ApplyModifiedProperties(); + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_DropdownEditor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_DropdownEditor.cs.meta new file mode 100644 index 0000000..75030cf --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_DropdownEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6dbcf248c987476181a37f01a1814975 +timeCreated: 1446377461 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorCoroutine.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorCoroutine.cs new file mode 100644 index 0000000..e005603 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorCoroutine.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + + +namespace TMPro.EditorUtilities +{ + /// + /// Simple implementation of coroutine working in the Unity Editor. + /// + public class TMP_EditorCoroutine + { + //private static Dictionary s_ActiveCoroutines; + + readonly IEnumerator coroutine; + + /// + /// Constructor + /// + /// + TMP_EditorCoroutine(IEnumerator routine) + { + this.coroutine = routine; + } + + + /// + /// Starts a new EditorCoroutine. + /// + /// Coroutine + /// new EditorCoroutine + public static TMP_EditorCoroutine StartCoroutine(IEnumerator routine) + { + TMP_EditorCoroutine coroutine = new TMP_EditorCoroutine(routine); + coroutine.Start(); + + // Add coroutine to tracking list + //if (s_ActiveCoroutines == null) + // s_ActiveCoroutines = new Dictionary(); + + // Add new instance of editor coroutine to dictionary. + //s_ActiveCoroutines.Add(coroutine.GetHashCode(), coroutine); + + return coroutine; + } + + + /// + /// Clear delegate list + /// + //public static void StopAllEditorCoroutines() + //{ + // EditorApplication.update = null; + //} + + + /// + /// Register callback for editor updates + /// + void Start() + { + EditorApplication.update += EditorUpdate; + } + + + /// + /// Unregister callback for editor updates. + /// + public void Stop() + { + if (EditorApplication.update != null) + EditorApplication.update -= EditorUpdate; + + //s_ActiveCoroutines.Remove(this.GetHashCode()); + } + + + /// + /// Delegate function called on editor updates. + /// + void EditorUpdate() + { + // Stop editor coroutine if it does not continue. + if (coroutine.MoveNext() == false) + Stop(); + + // Process the different types of EditorCoroutines. + if (coroutine.Current != null) + { + + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorCoroutine.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorCoroutine.cs.meta new file mode 100644 index 0000000..16e03fa --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorCoroutine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27a0335dab59ec542aadd6636a5b4ebd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanel.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanel.cs new file mode 100644 index 0000000..a03494f --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanel.cs @@ -0,0 +1,191 @@ +using UnityEngine; +using UnityEditor; +using UnityEditor.Presets; + +namespace TMPro.EditorUtilities +{ + + [CustomEditor(typeof(TextMeshPro), true), CanEditMultipleObjects] + public class TMP_EditorPanel : TMP_BaseEditorPanel + { + static readonly GUIContent k_SortingLayerLabel = new GUIContent("Sorting Layer", "Name of the Renderer's sorting layer."); + static readonly GUIContent k_OrderInLayerLabel = new GUIContent("Order in Layer", "Renderer's order within a sorting layer."); + static readonly GUIContent k_OrthographicLabel = new GUIContent("Orthographic Mode", "Should be enabled when using an orthographic camera. Instructs the shader to not perform any perspective correction."); + static readonly GUIContent k_VolumetricLabel = new GUIContent("Volumetric Setup", "Use cubes rather than quads to render the text. Allows for volumetric rendering when combined with a compatible shader."); + + private static string[] k_SortingLayerNames; + bool IsPreset; + + SerializedProperty m_IsVolumetricTextProp; + SerializedProperty m_IsOrthographicProp; + Renderer m_Renderer; + + protected override void OnEnable() + { + base.OnEnable(); + + // Determine if the inspected object is a Preset + IsPreset = (int)(target as Component).gameObject.hideFlags == 93; + + m_IsOrthographicProp = serializedObject.FindProperty("m_isOrthographic"); + + m_IsVolumetricTextProp = serializedObject.FindProperty("m_isVolumetricText"); + + m_Renderer = m_TextComponent.GetComponent(); + + // Populate Sorting Layer Names + k_SortingLayerNames = SortingLayerHelper.sortingLayerNames; + } + + protected override void DrawExtraSettings() + { + Rect rect = EditorGUILayout.GetControlRect(false, 24); + + if (GUI.Button(rect, new GUIContent("Extra Settings"), TMP_UIStyleManager.sectionHeader)) + Foldout.extraSettings = !Foldout.extraSettings; + + GUI.Label(rect, (Foldout.extraSettings ? "" : k_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (Foldout.extraSettings) + { + //EditorGUI.indentLevel += 1; + + DrawMargins(); + + DrawSortingLayer(); + + DrawGeometrySorting(); + + DrawIsTextObjectScaleStatic(); + + DrawOrthographicMode(); + + DrawRichText(); + + DrawParsing(); + + DrawSpriteAsset(); + + DrawStyleSheet(); + + //DrawVolumetricSetup(); + + DrawKerning(); + + DrawPadding(); + + //EditorGUI.indentLevel -= 1; + } + } + + protected void DrawSortingLayer() + { + Undo.RecordObject(m_Renderer, "Sorting Layer Change"); + + EditorGUI.BeginChangeCheck(); + + TextMeshPro textComponent = (TextMeshPro)m_TextComponent; + + // Look up the layer name using the current layer ID + string oldName = IsPreset ? SortingLayer.IDToName(textComponent._SortingLayerID) : SortingLayer.IDToName(textComponent.sortingLayerID); + + // Use the name to look up our array index into the names list + int oldLayerIndex = System.Array.IndexOf(k_SortingLayerNames, oldName); + + // Show the pop-up for the names + EditorGUIUtility.fieldWidth = 0f; + int newLayerIndex = EditorGUILayout.Popup(k_SortingLayerLabel, oldLayerIndex, k_SortingLayerNames); + + // If the index changes, look up the ID for the new index to store as the new ID + if (newLayerIndex != oldLayerIndex) + UpdateTargetsSortingLayerID(SortingLayer.NameToID(k_SortingLayerNames[newLayerIndex])); + + // Get value from internal property if target is a Preset otherwise from the public property + int oldSortingOrder = IsPreset ? textComponent._SortingOrder : textComponent.sortingOrder; + + int newSortingLayerOrder = EditorGUILayout.IntField(k_OrderInLayerLabel, oldSortingOrder); + + if (newSortingLayerOrder != textComponent.sortingOrder) + UpdateTargetsSortingOrder(newSortingLayerOrder); + + if (EditorGUI.EndChangeCheck()) + m_HavePropertiesChanged = true; + + EditorGUILayout.Space(); + } + + protected void DrawOrthographicMode() + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_IsOrthographicProp, k_OrthographicLabel); + if (EditorGUI.EndChangeCheck()) + m_HavePropertiesChanged = true; + } + + protected void DrawVolumetricSetup() + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_IsVolumetricTextProp, k_VolumetricLabel); + if (EditorGUI.EndChangeCheck()) + { + m_HavePropertiesChanged = true; + m_TextComponent.textInfo.ResetVertexLayout(m_IsVolumetricTextProp.boolValue); + } + + EditorGUILayout.Space(); + } + + // Method to handle multi object selection + protected override bool IsMixSelectionTypes() + { + GameObject[] objects = Selection.gameObjects; + if (objects.Length > 1) + { + for (int i = 0; i < objects.Length; i++) + { + if (objects[i].GetComponent() == null) + return true; + } + } + return false; + } + + protected override void OnUndoRedo() + { + int undoEventId = Undo.GetCurrentGroup(); + int lastUndoEventId = s_EventId; + + if (undoEventId != lastUndoEventId) + { + for (int i = 0; i < targets.Length; i++) + { + //Debug.Log("Undo & Redo Performed detected in Editor Panel. Event ID:" + Undo.GetCurrentGroup()); + TMPro_EventManager.ON_TEXTMESHPRO_PROPERTY_CHANGED(true, targets[i] as TextMeshPro); + s_EventId = undoEventId; + } + } + } + + void UpdateTargetsSortingLayerID(int sortingLayerID) + { + for (int i = 0; i < targets.Length; i++) + { + var textComponent = (TextMeshPro)targets[i]; + + if (textComponent != null) + textComponent.sortingLayerID = sortingLayerID; + } + } + + void UpdateTargetsSortingOrder(int sortingOrder) + { + for (int i = 0; i < targets.Length; i++) + { + var textComponent = (TextMeshPro)targets[i]; + + if (textComponent != null) + textComponent.sortingOrder = sortingOrder; + } + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanel.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanel.cs.meta new file mode 100644 index 0000000..54fd804 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanel.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 34f6695d37a94370a3697f6b068f5d5e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanelUI.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanelUI.cs new file mode 100644 index 0000000..c508546 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanelUI.cs @@ -0,0 +1,124 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEditor; + +namespace TMPro.EditorUtilities +{ + + [CustomEditor(typeof(TextMeshProUGUI), true), CanEditMultipleObjects] + public class TMP_EditorPanelUI : TMP_BaseEditorPanel + { + static readonly GUIContent k_RaycastTargetLabel = new GUIContent("Raycast Target", "Whether the text blocks raycasts from the Graphic Raycaster."); + static readonly GUIContent k_MaskableLabel = new GUIContent("Maskable", "Determines if the text object will be affected by UI Mask."); + + SerializedProperty m_RaycastTargetProp; + private SerializedProperty m_MaskableProp; + + protected override void OnEnable() + { + base.OnEnable(); + m_RaycastTargetProp = serializedObject.FindProperty("m_RaycastTarget"); + m_MaskableProp = serializedObject.FindProperty("m_Maskable"); + } + + protected override void DrawExtraSettings() + { + Rect rect = EditorGUILayout.GetControlRect(false, 24); + + if (GUI.Button(rect, new GUIContent("Extra Settings"), TMP_UIStyleManager.sectionHeader)) + Foldout.extraSettings = !Foldout.extraSettings; + + GUI.Label(rect, (Foldout.extraSettings ? k_UiStateLabel[0] : k_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + if (Foldout.extraSettings) + { + //EditorGUI.indentLevel += 1; + + DrawMargins(); + + DrawGeometrySorting(); + + DrawIsTextObjectScaleStatic(); + + DrawRichText(); + + DrawRaycastTarget(); + + DrawMaskable(); + + DrawParsing(); + + DrawSpriteAsset(); + + DrawStyleSheet(); + + DrawKerning(); + + DrawPadding(); + + //EditorGUI.indentLevel -= 1; + } + } + + protected void DrawRaycastTarget() + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_RaycastTargetProp, k_RaycastTargetLabel); + if (EditorGUI.EndChangeCheck()) + { + // Change needs to propagate to the child sub objects. + Graphic[] graphicComponents = m_TextComponent.GetComponentsInChildren(); + for (int i = 1; i < graphicComponents.Length; i++) + graphicComponents[i].raycastTarget = m_RaycastTargetProp.boolValue; + + m_HavePropertiesChanged = true; + } + } + + protected void DrawMaskable() + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_MaskableProp, k_MaskableLabel); + if (EditorGUI.EndChangeCheck()) + { + m_TextComponent.maskable = m_MaskableProp.boolValue; + + // Change needs to propagate to the child sub objects. + MaskableGraphic[] maskableGraphics = m_TextComponent.GetComponentsInChildren(); + for (int i = 1; i < maskableGraphics.Length; i++) + maskableGraphics[i].maskable = m_MaskableProp.boolValue; + + m_HavePropertiesChanged = true; + } + } + + // Method to handle multi object selection + protected override bool IsMixSelectionTypes() + { + GameObject[] objects = Selection.gameObjects; + if (objects.Length > 1) + { + for (int i = 0; i < objects.Length; i++) + { + if (objects[i].GetComponent() == null) + return true; + } + } + return false; + } + protected override void OnUndoRedo() + { + int undoEventId = Undo.GetCurrentGroup(); + int lastUndoEventId = s_EventId; + + if (undoEventId != lastUndoEventId) + { + for (int i = 0; i < targets.Length; i++) + { + //Debug.Log("Undo & Redo Performed detected in Editor Panel. Event ID:" + Undo.GetCurrentGroup()); + TMPro_EventManager.ON_TEXTMESHPRO_UGUI_PROPERTY_CHANGED(true, targets[i] as TextMeshProUGUI); + s_EventId = undoEventId; + } + } + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanelUI.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanelUI.cs.meta new file mode 100644 index 0000000..ea3b36b --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorPanelUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 21c0044a7f964773be90d197a78e4703 +timeCreated: 1443571501 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorUtility.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorUtility.cs new file mode 100644 index 0000000..8869dd3 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorUtility.cs @@ -0,0 +1,451 @@ +using UnityEngine; +using UnityEditor; +using System.Text; +using System.IO; +using System.Collections; +using System.Collections.Generic; + + +namespace TMPro.EditorUtilities +{ + + public static class TMP_EditorUtility + { + /// + /// Returns the relative path of the package. + /// + public static string packageRelativePath + { + get + { + if (string.IsNullOrEmpty(m_PackagePath)) + m_PackagePath = GetPackageRelativePath(); + + return m_PackagePath; + } + } + [SerializeField] + private static string m_PackagePath; + + /// + /// Returns the fully qualified path of the package. + /// + public static string packageFullPath + { + get + { + if (string.IsNullOrEmpty(m_PackageFullPath)) + m_PackageFullPath = GetPackageFullPath(); + + return m_PackageFullPath; + } + } + [SerializeField] + private static string m_PackageFullPath; + + + // Static Fields Related to locating the TextMesh Pro Asset + private static string folderPath = "Not Found"; + + private static EditorWindow Gameview; + private static bool isInitialized = false; + + private static void GetGameview() + { + System.Reflection.Assembly assembly = typeof(UnityEditor.EditorWindow).Assembly; + System.Type type = assembly.GetType("UnityEditor.GameView"); + Gameview = EditorWindow.GetWindow(type); + } + + + public static void RepaintAll() + { + if (isInitialized == false) + { + GetGameview(); + isInitialized = true; + } + + SceneView.RepaintAll(); + Gameview.Repaint(); + } + + + /// + /// Create and return a new asset in a smart location based on the current selection and then select it. + /// + /// + /// Name of the new asset. Do not include the .asset extension. + /// + /// + /// The new asset. + /// + public static T CreateAsset(string name) where T : ScriptableObject + { + string path = AssetDatabase.GetAssetPath(Selection.activeObject); + if (path.Length == 0) + { + // no asset selected, place in asset root + path = "Assets/" + name + ".asset"; + } + else if (Directory.Exists(path)) + { + // place in currently selected directory + path += "/" + name + ".asset"; + } + else { + // place in current selection's containing directory + path = Path.GetDirectoryName(path) + "/" + name + ".asset"; + } + T asset = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(asset, AssetDatabase.GenerateUniqueAssetPath(path)); + EditorUtility.FocusProjectWindow(); + Selection.activeObject = asset; + return asset; + } + + + + // Function used to find all materials which reference a font atlas so we can update all their references. + public static Material[] FindMaterialReferences(TMP_FontAsset fontAsset) + { + List refs = new List(); + Material mat = fontAsset.material; + refs.Add(mat); + + // Get materials matching the search pattern. + string searchPattern = "t:Material" + " " + fontAsset.name.Split(new char[] { ' ' })[0]; + string[] materialAssetGUIDs = AssetDatabase.FindAssets(searchPattern); + + for (int i = 0; i < materialAssetGUIDs.Length; i++) + { + string materialPath = AssetDatabase.GUIDToAssetPath(materialAssetGUIDs[i]); + Material targetMaterial = AssetDatabase.LoadAssetAtPath(materialPath); + + if (targetMaterial.HasProperty(ShaderUtilities.ID_MainTex) && targetMaterial.GetTexture(ShaderUtilities.ID_MainTex) != null && mat.GetTexture(ShaderUtilities.ID_MainTex) != null && targetMaterial.GetTexture(ShaderUtilities.ID_MainTex).GetInstanceID() == mat.GetTexture(ShaderUtilities.ID_MainTex).GetInstanceID()) + { + if (!refs.Contains(targetMaterial)) + refs.Add(targetMaterial); + } + else + { + // TODO: Find a more efficient method to unload resources. + //Resources.UnloadAsset(targetMaterial.GetTexture(ShaderUtilities.ID_MainTex)); + } + } + + return refs.ToArray(); + } + + + // Function used to find the Font Asset which matches the given Material Preset and Font Atlas Texture. + public static TMP_FontAsset FindMatchingFontAsset(Material mat) + { + if (mat.GetTexture(ShaderUtilities.ID_MainTex) == null) return null; + + // Find the dependent assets of this material. + string[] dependentAssets = AssetDatabase.GetDependencies(AssetDatabase.GetAssetPath(mat), false); + + for (int i = 0; i < dependentAssets.Length; i++) + { + TMP_FontAsset fontAsset = AssetDatabase.LoadAssetAtPath(dependentAssets[i]); + if (fontAsset != null) + return fontAsset; + } + + return null; + } + + + private static string GetPackageRelativePath() + { + // Check for potential UPM package + string packagePath = Path.GetFullPath("Packages/com.unity.textmeshpro"); + if (Directory.Exists(packagePath)) + { + return "Packages/com.unity.textmeshpro"; + } + + packagePath = Path.GetFullPath("Assets/.."); + if (Directory.Exists(packagePath)) + { + // Search default location for development package + if (Directory.Exists(packagePath + "/Assets/Packages/com.unity.TextMeshPro/Editor Resources")) + { + return "Assets/Packages/com.unity.TextMeshPro"; + } + + // Search for default location of normal TextMesh Pro AssetStore package + if (Directory.Exists(packagePath + "/Assets/TextMesh Pro/Editor Resources")) + { + return "Assets/TextMesh Pro"; + } + + // Search for potential alternative locations in the user project + string[] matchingPaths = Directory.GetDirectories(packagePath, "TextMesh Pro", SearchOption.AllDirectories); + packagePath = ValidateLocation(matchingPaths, packagePath); + if (packagePath != null) return packagePath; + } + + return null; + } + + private static string GetPackageFullPath() + { + // Check for potential UPM package + string packagePath = Path.GetFullPath("Packages/com.unity.textmeshpro"); + if (Directory.Exists(packagePath)) + { + return packagePath; + } + + packagePath = Path.GetFullPath("Assets/.."); + if (Directory.Exists(packagePath)) + { + // Search default location for development package + if (Directory.Exists(packagePath + "/Assets/Packages/com.unity.TextMeshPro/Editor Resources")) + { + return packagePath + "/Assets/Packages/com.unity.TextMeshPro"; + } + + // Search for default location of normal TextMesh Pro AssetStore package + if (Directory.Exists(packagePath + "/Assets/TextMesh Pro/Editor Resources")) + { + return packagePath + "/Assets/TextMesh Pro"; + } + + // Search for potential alternative locations in the user project + string[] matchingPaths = Directory.GetDirectories(packagePath, "TextMesh Pro", SearchOption.AllDirectories); + string path = ValidateLocation(matchingPaths, packagePath); + if (path != null) return packagePath + path; + } + + return null; + } + + + /// + /// Method to validate the location of the asset folder by making sure the GUISkins folder exists. + /// + /// + /// + private static string ValidateLocation(string[] paths, string projectPath) + { + for (int i = 0; i < paths.Length; i++) + { + // Check if any of the matching directories contain a GUISkins directory. + if (Directory.Exists(paths[i] + "/Editor Resources")) + { + folderPath = paths[i].Replace(projectPath, ""); + folderPath = folderPath.TrimStart('\\', '/'); + return folderPath; + } + } + + return null; + } + + + /// + /// Function which returns a string containing a sequence of Decimal character ranges. + /// + /// + /// + public static string GetDecimalCharacterSequence(int[] characterSet) + { + if (characterSet == null || characterSet.Length == 0) + return string.Empty; + + string characterSequence = string.Empty; + int count = characterSet.Length; + int first = characterSet[0]; + int last = first; + + for (int i = 1; i < count; i++) + { + if (characterSet[i - 1] + 1 == characterSet[i]) + { + last = characterSet[i]; + } + else + { + if (first == last) + characterSequence += first + ","; + else + characterSequence += first + "-" + last + ","; + + first = last = characterSet[i]; + } + + } + + // handle the final group + if (first == last) + characterSequence += first; + else + characterSequence += first + "-" + last; + + return characterSequence; + } + + + /// + /// Function which returns a string containing a sequence of Unicode (Hex) character ranges. + /// + /// + /// + public static string GetUnicodeCharacterSequence(int[] characterSet) + { + if (characterSet == null || characterSet.Length == 0) + return string.Empty; + + string characterSequence = string.Empty; + int count = characterSet.Length; + int first = characterSet[0]; + int last = first; + + for (int i = 1; i < count; i++) + { + if (characterSet[i - 1] + 1 == characterSet[i]) + { + last = characterSet[i]; + } + else + { + if (first == last) + characterSequence += first.ToString("X2") + ","; + else + characterSequence += first.ToString("X2") + "-" + last.ToString("X2") + ","; + + first = last = characterSet[i]; + } + + } + + // handle the final group + if (first == last) + characterSequence += first.ToString("X2"); + else + characterSequence += first.ToString("X2") + "-" + last.ToString("X2"); + + return characterSequence; + } + + + /// + /// + /// + /// + /// + /// + public static void DrawBox(Rect rect, float thickness, Color color) + { + EditorGUI.DrawRect(new Rect(rect.x - thickness, rect.y + thickness, rect.width + thickness * 2, thickness), color); + EditorGUI.DrawRect(new Rect(rect.x - thickness, rect.y + thickness, thickness, rect.height - thickness * 2), color); + EditorGUI.DrawRect(new Rect(rect.x - thickness, rect.y + rect.height - thickness * 2, rect.width + thickness * 2, thickness), color); + EditorGUI.DrawRect(new Rect(rect.x + rect.width, rect.y + thickness, thickness, rect.height - thickness * 2), color); + } + + + /// + /// Function to return the horizontal alignment grid value. + /// + /// + /// + public static int GetHorizontalAlignmentGridValue(int value) + { + if ((value & 0x1) == 0x1) + return 0; + else if ((value & 0x2) == 0x2) + return 1; + else if ((value & 0x4) == 0x4) + return 2; + else if ((value & 0x8) == 0x8) + return 3; + else if ((value & 0x10) == 0x10) + return 4; + else if ((value & 0x20) == 0x20) + return 5; + + return 0; + } + + /// + /// Function to return the vertical alignment grid value. + /// + /// + /// + public static int GetVerticalAlignmentGridValue(int value) + { + if ((value & 0x100) == 0x100) + return 0; + if ((value & 0x200) == 0x200) + return 1; + if ((value & 0x400) == 0x400) + return 2; + if ((value & 0x800) == 0x800) + return 3; + if ((value & 0x1000) == 0x1000) + return 4; + if ((value & 0x2000) == 0x2000) + return 5; + + return 0; + } + + public static void DrawColorProperty(Rect rect, SerializedProperty property) + { + int oldIndent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + if (EditorGUIUtility.wideMode) + { + EditorGUI.PropertyField(new Rect(rect.x, rect.y, 50f, rect.height), property, GUIContent.none); + rect.x += 50f; + rect.width = Mathf.Min(100f, rect.width - 55f); + } + else + { + rect.height /= 2f; + rect.width = Mathf.Min(100f, rect.width - 5f); + EditorGUI.PropertyField(rect, property, GUIContent.none); + rect.y += rect.height; + } + + EditorGUI.BeginChangeCheck(); + string colorString = EditorGUI.TextField(rect, string.Format("#{0}", ColorUtility.ToHtmlStringRGBA(property.colorValue))); + if (EditorGUI.EndChangeCheck()) + { + Color color; + if (ColorUtility.TryParseHtmlString(colorString, out color)) + { + property.colorValue = color; + } + } + EditorGUI.indentLevel = oldIndent; + } + + public static bool EditorToggle(Rect position, bool value, GUIContent content, GUIStyle style) + { + var id = GUIUtility.GetControlID(content, FocusType.Keyboard, position); + var evt = Event.current; + + // Toggle selected toggle on space or return key + if (GUIUtility.keyboardControl == id && evt.type == EventType.KeyDown && (evt.keyCode == KeyCode.Space || evt.keyCode == KeyCode.Return || evt.keyCode == KeyCode.KeypadEnter)) + { + value = !value; + evt.Use(); + GUI.changed = true; + } + + if (evt.type == EventType.MouseDown && position.Contains(Event.current.mousePosition)) + { + GUIUtility.keyboardControl = id; + EditorGUIUtility.editingTextField = false; + HandleUtility.Repaint(); + } + + return GUI.Toggle(position, id, value, content, style); + } + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorUtility.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorUtility.cs.meta new file mode 100644 index 0000000..5088b1b --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_EditorUtility.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2300e75732d74890b38a8ff257a3ae15 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAssetEditor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAssetEditor.cs new file mode 100644 index 0000000..8cf9a79 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAssetEditor.cs @@ -0,0 +1,1717 @@ +using UnityEngine; +using UnityEditor; +using UnityEditorInternal; +using System.Collections.Generic; +using UnityEngine.TextCore; +using UnityEngine.TextCore.LowLevel; +using UnityEditor.TextCore.LowLevel; + + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(TMP_FontWeightPair))] + public class FontWeightDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty prop_regular = property.FindPropertyRelative("regularTypeface"); + SerializedProperty prop_italic = property.FindPropertyRelative("italicTypeface"); + + float width = position.width; + + position.width = EditorGUIUtility.labelWidth; + EditorGUI.LabelField(position, label); + + int oldIndent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + + // NORMAL TYPEFACE + if (label.text[0] == '4') GUI.enabled = false; + position.x += position.width; position.width = (width - position.width) / 2; + EditorGUI.PropertyField(position, prop_regular, GUIContent.none); + + // ITALIC TYPEFACE + GUI.enabled = true; + position.x += position.width; + EditorGUI.PropertyField(position, prop_italic, GUIContent.none); + + EditorGUI.indentLevel = oldIndent; + } + } + + [CustomEditor(typeof(TMP_FontAsset))] + public class TMP_FontAssetEditor : Editor + { + private struct UI_PanelState + { + public static bool faceInfoPanel = true; + public static bool generationSettingsPanel = true; + public static bool fontAtlasInfoPanel = true; + public static bool fontWeightPanel = true; + public static bool fallbackFontAssetPanel = true; + public static bool glyphTablePanel = false; + public static bool characterTablePanel = false; + public static bool fontFeatureTablePanel = false; + } + + private struct AtlasSettings + { + public GlyphRenderMode glyphRenderMode; + public int pointSize; + public int padding; + public int atlasWidth; + public int atlasHeight; + } + + /// + /// Material used to display SDF glyphs in the Character and Glyph tables. + /// + internal static Material internalSDFMaterial + { + get + { + if (s_InternalSDFMaterial == null) + { + Shader shader = Shader.Find("Hidden/TMP/Internal/Editor/Distance Field SSD"); + + if (shader != null) + s_InternalSDFMaterial = new Material(shader); + } + + return s_InternalSDFMaterial; + } + } + static Material s_InternalSDFMaterial; + + /// + /// Material used to display Bitmap glyphs in the Character and Glyph tables. + /// + internal static Material internalBitmapMaterial + { + get + { + if (s_InternalBitmapMaterial == null) + { + Shader shader = Shader.Find("Hidden/Internal-GUITextureClipText"); + + if (shader != null) + s_InternalBitmapMaterial = new Material(shader); + } + + return s_InternalBitmapMaterial; + } + } + static Material s_InternalBitmapMaterial; + + private static string[] s_UiStateLabel = new string[] { "(Click to collapse) ", "(Click to expand) " }; + private GUIContent[] m_AtlasResolutionLabels = { new GUIContent("8"), new GUIContent("16"), new GUIContent("32"), new GUIContent("64"), new GUIContent("128"), new GUIContent("256"), new GUIContent("512"), new GUIContent("1024"), new GUIContent("2048"), new GUIContent("4096"), new GUIContent("8192") }; + private int[] m_AtlasResolutions = { 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192 }; + + private struct Warning + { + public bool isEnabled; + public double expirationTime; + } + + private int m_CurrentGlyphPage = 0; + private int m_CurrentCharacterPage = 0; + private int m_CurrentKerningPage = 0; + + private int m_SelectedGlyphRecord = -1; + private int m_SelectedCharacterRecord = -1; + private int m_SelectedAdjustmentRecord = -1; + + private string m_dstGlyphID; + private string m_dstUnicode; + private const string k_placeholderUnicodeHex = "New Unicode (Hex)"; + private string m_unicodeHexLabel = k_placeholderUnicodeHex; + private const string k_placeholderGlyphID = "New Glyph ID"; + private string m_GlyphIDLabel = k_placeholderGlyphID; + + private Warning m_AddGlyphWarning; + private Warning m_AddCharacterWarning; + private bool m_DisplayDestructiveChangeWarning; + private AtlasSettings m_AtlasSettings; + private bool m_MaterialPresetsRequireUpdate; + + private string m_GlyphSearchPattern; + private List m_GlyphSearchList; + + private string m_CharacterSearchPattern; + private List m_CharacterSearchList; + + private string m_KerningTableSearchPattern; + private List m_KerningTableSearchList; + + private bool m_isSearchDirty; + + private const string k_UndoRedo = "UndoRedoPerformed"; + + private SerializedProperty m_AtlasPopulationMode_prop; + private SerializedProperty font_atlas_prop; + private SerializedProperty font_material_prop; + + private SerializedProperty m_AtlasRenderMode_prop; + private SerializedProperty m_SamplingPointSize_prop; + private SerializedProperty m_AtlasPadding_prop; + private SerializedProperty m_AtlasWidth_prop; + private SerializedProperty m_AtlasHeight_prop; + private SerializedProperty m_IsMultiAtlasTexturesEnabled_prop; + + private SerializedProperty fontWeights_prop; + + //private SerializedProperty fallbackFontAssets_prop; + private ReorderableList m_list; + + private SerializedProperty font_normalStyle_prop; + private SerializedProperty font_normalSpacing_prop; + + private SerializedProperty font_boldStyle_prop; + private SerializedProperty font_boldSpacing_prop; + + private SerializedProperty font_italicStyle_prop; + private SerializedProperty font_tabSize_prop; + + private SerializedProperty m_FaceInfo_prop; + private SerializedProperty m_GlyphTable_prop; + private SerializedProperty m_CharacterTable_prop; + + private TMP_FontFeatureTable m_FontFeatureTable; + private SerializedProperty m_FontFeatureTable_prop; + private SerializedProperty m_GlyphPairAdjustmentRecords_prop; + + private TMP_SerializedPropertyHolder m_SerializedPropertyHolder; + private SerializedProperty m_EmptyGlyphPairAdjustmentRecord_prop; + + private TMP_FontAsset m_fontAsset; + + private Material[] m_materialPresets; + + private bool isAssetDirty = false; + + private int errorCode; + + private System.DateTime timeStamp; + + + public void OnEnable() + { + m_FaceInfo_prop = serializedObject.FindProperty("m_FaceInfo"); + + font_atlas_prop = serializedObject.FindProperty("m_AtlasTextures").GetArrayElementAtIndex(0); + font_material_prop = serializedObject.FindProperty("material"); + + m_AtlasPopulationMode_prop = serializedObject.FindProperty("m_AtlasPopulationMode"); + m_AtlasRenderMode_prop = serializedObject.FindProperty("m_AtlasRenderMode"); + m_SamplingPointSize_prop = m_FaceInfo_prop.FindPropertyRelative("m_PointSize"); + m_AtlasPadding_prop = serializedObject.FindProperty("m_AtlasPadding"); + m_AtlasWidth_prop = serializedObject.FindProperty("m_AtlasWidth"); + m_AtlasHeight_prop = serializedObject.FindProperty("m_AtlasHeight"); + m_IsMultiAtlasTexturesEnabled_prop = serializedObject.FindProperty("m_IsMultiAtlasTexturesEnabled"); + + fontWeights_prop = serializedObject.FindProperty("m_FontWeightTable"); + + m_list = new ReorderableList(serializedObject, serializedObject.FindProperty("m_FallbackFontAssetTable"), true, true, true, true); + + m_list.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => + { + var element = m_list.serializedProperty.GetArrayElementAtIndex(index); + rect.y += 2; + EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), element, GUIContent.none); + }; + + m_list.drawHeaderCallback = rect => + { + EditorGUI.LabelField(rect, "Fallback List"); + }; + + // Clean up fallback list in the event if contains null elements. + CleanFallbackFontAssetTable(); + + font_normalStyle_prop = serializedObject.FindProperty("normalStyle"); + font_normalSpacing_prop = serializedObject.FindProperty("normalSpacingOffset"); + + font_boldStyle_prop = serializedObject.FindProperty("boldStyle"); + font_boldSpacing_prop = serializedObject.FindProperty("boldSpacing"); + + font_italicStyle_prop = serializedObject.FindProperty("italicStyle"); + font_tabSize_prop = serializedObject.FindProperty("tabSize"); + + m_CharacterTable_prop = serializedObject.FindProperty("m_CharacterTable"); + m_GlyphTable_prop = serializedObject.FindProperty("m_GlyphTable"); + + m_FontFeatureTable_prop = serializedObject.FindProperty("m_FontFeatureTable"); + m_GlyphPairAdjustmentRecords_prop = m_FontFeatureTable_prop.FindPropertyRelative("m_GlyphPairAdjustmentRecords"); + + m_fontAsset = target as TMP_FontAsset; + m_FontFeatureTable = m_fontAsset.fontFeatureTable; + + // Upgrade Font Feature Table if necessary + if (m_fontAsset.m_KerningTable != null && m_fontAsset.m_KerningTable.kerningPairs != null && m_fontAsset.m_KerningTable.kerningPairs.Count > 0) + m_fontAsset.ReadFontAssetDefinition(); + + // Create serialized object to allow us to use a serialized property of an empty kerning pair. + m_SerializedPropertyHolder = CreateInstance(); + m_SerializedPropertyHolder.fontAsset = m_fontAsset; + SerializedObject internalSerializedObject = new SerializedObject(m_SerializedPropertyHolder); + m_EmptyGlyphPairAdjustmentRecord_prop = internalSerializedObject.FindProperty("glyphPairAdjustmentRecord"); + + m_materialPresets = TMP_EditorUtility.FindMaterialReferences(m_fontAsset); + + m_GlyphSearchList = new List(); + m_KerningTableSearchList = new List(); + + // Sort Font Asset Tables + m_fontAsset.SortAllTables(); + } + + + public void OnDisable() + { + // Revert changes if user closes or changes selection without having made a choice. + if (m_DisplayDestructiveChangeWarning) + { + m_DisplayDestructiveChangeWarning = false; + RestoreAtlasGenerationSettings(); + GUIUtility.keyboardControl = 0; + + serializedObject.ApplyModifiedProperties(); + } + } + + + public override void OnInspectorGUI() + { + //Debug.Log("OnInspectorGUI Called."); + + Event currentEvent = Event.current; + + serializedObject.Update(); + + Rect rect = EditorGUILayout.GetControlRect(false, 24); + float labelWidth = EditorGUIUtility.labelWidth; + float fieldWidth = EditorGUIUtility.fieldWidth; + + // FACE INFO PANEL + #region Face info + GUI.Label(rect, new GUIContent("Face Info - v" + m_fontAsset.version), TMP_UIStyleManager.sectionHeader); + + rect.x += rect.width - 132f; + rect.y += 2; + rect.width = 130f; + rect.height = 18f; + if (GUI.Button(rect, new GUIContent("Update Atlas Texture"))) + { + TMPro_FontAssetCreatorWindow.ShowFontAtlasCreatorWindow(target as TMP_FontAsset); + } + + EditorGUI.indentLevel = 1; + GUI.enabled = false; // Lock UI + + // TODO : Consider creating a property drawer for these. + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_FamilyName")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_StyleName")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_PointSize")); + + GUI.enabled = true; + + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_Scale")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_LineHeight")); + + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_AscentLine")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_CapLine")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_MeanLine")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_Baseline")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_DescentLine")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_UnderlineOffset")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_UnderlineThickness")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_StrikethroughOffset")); + //EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("strikethroughThickness")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_SuperscriptOffset")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_SuperscriptSize")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_SubscriptOffset")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_SubscriptSize")); + EditorGUILayout.PropertyField(m_FaceInfo_prop.FindPropertyRelative("m_TabWidth")); + // TODO : Add clamping for some of these values. + //subSize_prop.floatValue = Mathf.Clamp(subSize_prop.floatValue, 0.25f, 1f); + + EditorGUILayout.Space(); + #endregion + + // GENERATION SETTINGS + #region Generation Settings + rect = EditorGUILayout.GetControlRect(false, 24); + + if (GUI.Button(rect, new GUIContent("Generation Settings"), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.generationSettingsPanel = !UI_PanelState.generationSettingsPanel; + + GUI.Label(rect, (UI_PanelState.generationSettingsPanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.generationSettingsPanel) + { + EditorGUI.indentLevel = 1; + + EditorGUI.BeginChangeCheck(); + Font sourceFont = (Font)EditorGUILayout.ObjectField("Source Font File", m_fontAsset.m_SourceFontFile_EditorRef, typeof(Font), false); + if (EditorGUI.EndChangeCheck()) + { + string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(sourceFont)); + m_fontAsset.m_SourceFontFileGUID = guid; + m_fontAsset.m_SourceFontFile_EditorRef = sourceFont; + } + + EditorGUI.BeginDisabledGroup(sourceFont == null); + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_AtlasPopulationMode_prop, new GUIContent("Atlas Population Mode")); + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + + bool isDatabaseRefreshRequired = false; + + if (m_AtlasPopulationMode_prop.intValue == 0) + { + m_fontAsset.sourceFontFile = null; + + //Set atlas textures to non readable. + for (int i = 0; i < m_fontAsset.atlasTextures.Length; i++) + { + Texture2D tex = m_fontAsset.atlasTextures[i]; + + if (tex != null && tex.isReadable) + FontEngineEditorUtilities.SetAtlasTextureIsReadable(tex, false); + } + + Debug.Log("Atlas Population mode set to [Static]."); + } + else if (m_AtlasPopulationMode_prop.intValue == 1) + { + if (m_fontAsset.m_SourceFontFile_EditorRef.dynamic == false) + { + Debug.LogWarning("Please set the [" + m_fontAsset.name + "] font to dynamic mode as this is required for Dynamic SDF support.", m_fontAsset.m_SourceFontFile_EditorRef); + m_AtlasPopulationMode_prop.intValue = 0; + + serializedObject.ApplyModifiedProperties(); + } + else + { + m_fontAsset.sourceFontFile = m_fontAsset.m_SourceFontFile_EditorRef; + + // Set atlas textures to non readable. + for (int i = 0; i < m_fontAsset.atlasTextures.Length; i++) + { + Texture2D tex = m_fontAsset.atlasTextures[i]; + + if (tex != null && tex.isReadable == false) + FontEngineEditorUtilities.SetAtlasTextureIsReadable(tex, true); + } + + Debug.Log("Atlas Population mode set to [Dynamic]."); + } + } + + if (isDatabaseRefreshRequired) + AssetDatabase.Refresh(); + + serializedObject.Update(); + isAssetDirty = true; + } + + // Save state of atlas settings + if (m_DisplayDestructiveChangeWarning == false) + { + SavedAtlasGenerationSettings(); + //Undo.RegisterCompleteObjectUndo(m_fontAsset, "Font Asset Changes"); + } + + EditorGUI.BeginDisabledGroup(m_AtlasPopulationMode_prop.intValue == (int)AtlasPopulationMode.Static); + { + EditorGUI.BeginChangeCheck(); + // TODO: Switch shaders depending on GlyphRenderMode. + EditorGUILayout.PropertyField(m_AtlasRenderMode_prop); + EditorGUILayout.PropertyField(m_SamplingPointSize_prop, new GUIContent("Sampling Point Size")); + if (EditorGUI.EndChangeCheck()) + { + m_DisplayDestructiveChangeWarning = true; + } + + // Changes to these properties require updating Material Presets for this font asset. + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_AtlasPadding_prop, new GUIContent("Padding")); + EditorGUILayout.IntPopup(m_AtlasWidth_prop, m_AtlasResolutionLabels, m_AtlasResolutions, new GUIContent("Atlas Width")); + EditorGUILayout.IntPopup(m_AtlasHeight_prop, m_AtlasResolutionLabels, m_AtlasResolutions, new GUIContent("Atlas Height")); + EditorGUILayout.PropertyField(m_IsMultiAtlasTexturesEnabled_prop, new GUIContent("Multi Atlas Textures", "Determines if the font asset will store glyphs in multiple atlas textures.")); + if (EditorGUI.EndChangeCheck()) + { + m_MaterialPresetsRequireUpdate = true; + m_DisplayDestructiveChangeWarning = true; + } + + if (m_DisplayDestructiveChangeWarning) + { + // These changes are destructive on the font asset + rect = EditorGUILayout.GetControlRect(false, 60); + rect.x += 15; + rect.width -= 15; + EditorGUI.HelpBox(rect, "Changing these settings will clear the font asset's character, glyph and texture data.", MessageType.Warning); + + if (GUI.Button(new Rect(rect.width - 140, rect.y + 36, 80, 18), new GUIContent("Apply"))) + { + m_DisplayDestructiveChangeWarning = false; + + // Update face info is sampling point size was changed. + if (m_AtlasSettings.pointSize != m_SamplingPointSize_prop.intValue) + { + FontEngine.LoadFontFace(m_fontAsset.sourceFontFile, m_SamplingPointSize_prop.intValue); + m_fontAsset.faceInfo = FontEngine.GetFaceInfo(); + } + + // Update material + m_fontAsset.material.SetFloat(ShaderUtilities.ID_TextureWidth, m_AtlasWidth_prop.intValue); + m_fontAsset.material.SetFloat(ShaderUtilities.ID_TextureHeight, m_AtlasHeight_prop.intValue); + m_fontAsset.material.SetFloat(ShaderUtilities.ID_GradientScale, m_AtlasPadding_prop.intValue + 1); + + // Update material presets if any of the relevant properties have been changed. + if (m_MaterialPresetsRequireUpdate) + { + m_MaterialPresetsRequireUpdate = false; + + Material[] materialPresets = TMP_EditorUtility.FindMaterialReferences(m_fontAsset); + for (int i = 0; i < materialPresets.Length; i++) + { + Material mat = materialPresets[i]; + + mat.SetFloat(ShaderUtilities.ID_TextureWidth, m_AtlasWidth_prop.intValue); + mat.SetFloat(ShaderUtilities.ID_TextureHeight, m_AtlasHeight_prop.intValue); + mat.SetFloat(ShaderUtilities.ID_GradientScale, m_AtlasPadding_prop.intValue + 1); + } + } + + m_fontAsset.UpdateFontAssetData(); + GUIUtility.keyboardControl = 0; + isAssetDirty = true; + + // Update Font Asset Creation Settings to reflect new changes. + UpdateFontAssetCreationSettings(); + + // TODO: Clear undo buffers. + //Undo.ClearUndo(m_fontAsset); + } + + if (GUI.Button(new Rect(rect.width - 56, rect.y + 36, 80, 18), new GUIContent("Revert"))) + { + m_DisplayDestructiveChangeWarning = false; + RestoreAtlasGenerationSettings(); + GUIUtility.keyboardControl = 0; + + // TODO: Clear undo buffers. + //Undo.ClearUndo(m_fontAsset); + } + } + } + EditorGUI.EndDisabledGroup(); + } + EditorGUI.EndDisabledGroup(); + EditorGUILayout.Space(); + } + #endregion + + // ATLAS & MATERIAL PANEL + #region Atlas & Material + rect = EditorGUILayout.GetControlRect(false, 24); + + if (GUI.Button(rect, new GUIContent("Atlas & Material"), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.fontAtlasInfoPanel = !UI_PanelState.fontAtlasInfoPanel; + + GUI.Label(rect, (UI_PanelState.fontAtlasInfoPanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.fontAtlasInfoPanel) + { + EditorGUI.indentLevel = 1; + + GUI.enabled = false; + EditorGUILayout.PropertyField(font_atlas_prop, new GUIContent("Font Atlas")); + EditorGUILayout.PropertyField(font_material_prop, new GUIContent("Font Material")); + GUI.enabled = true; + EditorGUILayout.Space(); + } + #endregion + + string evt_cmd = Event.current.commandName; // Get Current Event CommandName to check for Undo Events + + // FONT WEIGHT PANEL + #region Font Weights + rect = EditorGUILayout.GetControlRect(false, 24); + + if (GUI.Button(rect, new GUIContent("Font Weights", "The Font Assets that will be used for different font weights and the settings used to simulate a typeface when no asset is available."), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.fontWeightPanel = !UI_PanelState.fontWeightPanel; + + GUI.Label(rect, (UI_PanelState.fontWeightPanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.fontWeightPanel) + { + EditorGUIUtility.labelWidth *= 0.75f; + EditorGUIUtility.fieldWidth *= 0.25f; + + EditorGUILayout.BeginVertical(); + EditorGUI.indentLevel = 1; + rect = EditorGUILayout.GetControlRect(true); + rect.x += EditorGUIUtility.labelWidth; + rect.width = (rect.width - EditorGUIUtility.labelWidth) / 2f; + GUI.Label(rect, "Regular Typeface", EditorStyles.label); + rect.x += rect.width; + GUI.Label(rect, "Italic Typeface", EditorStyles.label); + + EditorGUI.indentLevel = 1; + + EditorGUILayout.PropertyField(fontWeights_prop.GetArrayElementAtIndex(1), new GUIContent("100 - Thin")); + EditorGUILayout.PropertyField(fontWeights_prop.GetArrayElementAtIndex(2), new GUIContent("200 - Extra-Light")); + EditorGUILayout.PropertyField(fontWeights_prop.GetArrayElementAtIndex(3), new GUIContent("300 - Light")); + EditorGUILayout.PropertyField(fontWeights_prop.GetArrayElementAtIndex(4), new GUIContent("400 - Regular")); + EditorGUILayout.PropertyField(fontWeights_prop.GetArrayElementAtIndex(5), new GUIContent("500 - Medium")); + EditorGUILayout.PropertyField(fontWeights_prop.GetArrayElementAtIndex(6), new GUIContent("600 - Semi-Bold")); + EditorGUILayout.PropertyField(fontWeights_prop.GetArrayElementAtIndex(7), new GUIContent("700 - Bold")); + EditorGUILayout.PropertyField(fontWeights_prop.GetArrayElementAtIndex(8), new GUIContent("800 - Heavy")); + EditorGUILayout.PropertyField(fontWeights_prop.GetArrayElementAtIndex(9), new GUIContent("900 - Black")); + + EditorGUILayout.EndVertical(); + + EditorGUILayout.Space(); + + EditorGUILayout.BeginVertical(); + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PropertyField(font_normalStyle_prop, new GUIContent("Normal Weight")); + font_normalStyle_prop.floatValue = Mathf.Clamp(font_normalStyle_prop.floatValue, -3.0f, 3.0f); + if (GUI.changed || evt_cmd == k_UndoRedo) + { + GUI.changed = false; + + // Modify the material property on matching material presets. + for (int i = 0; i < m_materialPresets.Length; i++) + m_materialPresets[i].SetFloat("_WeightNormal", font_normalStyle_prop.floatValue); + } + + EditorGUILayout.PropertyField(font_boldStyle_prop, new GUIContent("Bold Weight")); + font_boldStyle_prop.floatValue = Mathf.Clamp(font_boldStyle_prop.floatValue, -3.0f, 3.0f); + if (GUI.changed || evt_cmd == k_UndoRedo) + { + GUI.changed = false; + + // Modify the material property on matching material presets. + for (int i = 0; i < m_materialPresets.Length; i++) + m_materialPresets[i].SetFloat("_WeightBold", font_boldStyle_prop.floatValue); + } + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PropertyField(font_normalSpacing_prop, new GUIContent("Spacing Offset")); + font_normalSpacing_prop.floatValue = Mathf.Clamp(font_normalSpacing_prop.floatValue, -100, 100); + if (GUI.changed || evt_cmd == k_UndoRedo) + { + GUI.changed = false; + } + + EditorGUILayout.PropertyField(font_boldSpacing_prop, new GUIContent("Bold Spacing")); + font_boldSpacing_prop.floatValue = Mathf.Clamp(font_boldSpacing_prop.floatValue, 0, 100); + if (GUI.changed || evt_cmd == k_UndoRedo) + { + GUI.changed = false; + } + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PropertyField(font_italicStyle_prop, new GUIContent("Italic Style")); + font_italicStyle_prop.intValue = Mathf.Clamp(font_italicStyle_prop.intValue, 15, 60); + + EditorGUILayout.PropertyField(font_tabSize_prop, new GUIContent("Tab Multiple")); + EditorGUILayout.EndHorizontal(); + EditorGUILayout.EndVertical(); + EditorGUILayout.Space(); + } + + EditorGUIUtility.labelWidth = 0; + EditorGUIUtility.fieldWidth = 0; + #endregion + + // FALLBACK FONT ASSETS + #region Fallback Font Asset + rect = EditorGUILayout.GetControlRect(false, 24); + EditorGUI.indentLevel = 0; + if (GUI.Button(rect, new GUIContent("Fallback Font Assets", "Select the Font Assets that will be searched and used as fallback when characters are missing from this font asset."), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.fallbackFontAssetPanel = !UI_PanelState.fallbackFontAssetPanel; + + GUI.Label(rect, (UI_PanelState.fallbackFontAssetPanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.fallbackFontAssetPanel) + { + EditorGUIUtility.labelWidth = 120; + EditorGUI.indentLevel = 0; + + m_list.DoLayoutList(); + EditorGUILayout.Space(); + } + #endregion + + // CHARACTER TABLE TABLE + #region Character Table + EditorGUIUtility.labelWidth = labelWidth; + EditorGUIUtility.fieldWidth = fieldWidth; + EditorGUI.indentLevel = 0; + rect = EditorGUILayout.GetControlRect(false, 24); + + int characterCount = m_fontAsset.characterTable.Count; + + if (GUI.Button(rect, new GUIContent("Character Table [" + characterCount + "]" + (rect.width > 320 ? " Characters" : ""), "List of characters contained in this font asset."), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.characterTablePanel = !UI_PanelState.characterTablePanel; + + GUI.Label(rect, (UI_PanelState.characterTablePanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.characterTablePanel) + { + int arraySize = m_CharacterTable_prop.arraySize; + int itemsPerPage = 15; + + // Display Glyph Management Tools + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + { + // Search Bar implementation + #region DISPLAY SEARCH BAR + EditorGUILayout.BeginHorizontal(); + { + EditorGUIUtility.labelWidth = 130f; + EditorGUI.BeginChangeCheck(); + string searchPattern = EditorGUILayout.TextField("Character Search", m_CharacterSearchPattern, "SearchTextField"); + if (EditorGUI.EndChangeCheck() || m_isSearchDirty) + { + if (string.IsNullOrEmpty(searchPattern) == false) + { + m_CharacterSearchPattern = searchPattern; + + // Search Character Table for potential matches + SearchCharacterTable (m_CharacterSearchPattern, ref m_CharacterSearchList); + } + else + m_CharacterSearchPattern = null; + + m_isSearchDirty = false; + } + + string styleName = string.IsNullOrEmpty(m_CharacterSearchPattern) ? "SearchCancelButtonEmpty" : "SearchCancelButton"; + if (GUILayout.Button(GUIContent.none, styleName)) + { + GUIUtility.keyboardControl = 0; + m_CharacterSearchPattern = string.Empty; + } + } + EditorGUILayout.EndHorizontal(); + #endregion + + // Display Page Navigation + if (!string.IsNullOrEmpty(m_CharacterSearchPattern)) + arraySize = m_CharacterSearchList.Count; + + DisplayPageNavigation(ref m_CurrentCharacterPage, arraySize, itemsPerPage); + } + EditorGUILayout.EndVertical(); + + // Display Character Table Elements + if (arraySize > 0) + { + // Display each character entry using the CharacterPropertyDrawer. + for (int i = itemsPerPage * m_CurrentCharacterPage; i < arraySize && i < itemsPerPage * (m_CurrentCharacterPage + 1); i++) + { + // Define the start of the selection region of the element. + Rect elementStartRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + int elementIndex = i; + if (!string.IsNullOrEmpty(m_CharacterSearchPattern)) + elementIndex = m_CharacterSearchList[i]; + + SerializedProperty characterProperty = m_CharacterTable_prop.GetArrayElementAtIndex(elementIndex); + + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + + EditorGUI.BeginDisabledGroup(i != m_SelectedCharacterRecord); + { + EditorGUILayout.PropertyField(characterProperty); + } + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.EndVertical(); + + // Define the end of the selection region of the element. + Rect elementEndRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + // Check for Item selection + Rect selectionArea = new Rect(elementStartRegion.x, elementStartRegion.y, elementEndRegion.width, elementEndRegion.y - elementStartRegion.y); + if (DoSelectionCheck(selectionArea)) + { + if (m_SelectedCharacterRecord == i) + m_SelectedCharacterRecord = -1; + else + { + m_SelectedCharacterRecord = i; + m_AddCharacterWarning.isEnabled = false; + m_unicodeHexLabel = k_placeholderUnicodeHex; + GUIUtility.keyboardControl = 0; + } + } + + // Draw Selection Highlight and Glyph Options + if (m_SelectedCharacterRecord == i) + { + TMP_EditorUtility.DrawBox(selectionArea, 2f, new Color32(40, 192, 255, 255)); + + // Draw Glyph management options + Rect controlRect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * 1f); + float optionAreaWidth = controlRect.width * 0.6f; + float btnWidth = optionAreaWidth / 3; + + Rect position = new Rect(controlRect.x + controlRect.width * .4f, controlRect.y, btnWidth, controlRect.height); + + // Copy Selected Glyph to Target Glyph ID + GUI.enabled = !string.IsNullOrEmpty(m_dstUnicode); + if (GUI.Button(position, new GUIContent("Copy to"))) + { + GUIUtility.keyboardControl = 0; + + // Convert Hex Value to Decimal + int dstGlyphID = TMP_TextUtilities.StringHexToInt(m_dstUnicode); + + //Add new glyph at target Unicode hex id. + if (!AddNewCharacter(elementIndex, dstGlyphID)) + { + m_AddCharacterWarning.isEnabled = true; + m_AddCharacterWarning.expirationTime = EditorApplication.timeSinceStartup + 1; + } + + m_dstUnicode = string.Empty; + m_isSearchDirty = true; + + TMPro_EventManager.ON_FONT_PROPERTY_CHANGED(true, m_fontAsset); + } + + // Target Glyph ID + GUI.enabled = true; + position.x += btnWidth; + + GUI.SetNextControlName("CharacterID_Input"); + m_dstUnicode = EditorGUI.TextField(position, m_dstUnicode); + + // Placeholder text + EditorGUI.LabelField(position, new GUIContent(m_unicodeHexLabel, "The Unicode (Hex) ID of the duplicated Character"), TMP_UIStyleManager.label); + + // Only filter the input when the destination glyph ID text field has focus. + if (GUI.GetNameOfFocusedControl() == "CharacterID_Input") + { + m_unicodeHexLabel = string.Empty; + + //Filter out unwanted characters. + char chr = Event.current.character; + if ((chr < '0' || chr > '9') && (chr < 'a' || chr > 'f') && (chr < 'A' || chr > 'F')) + { + Event.current.character = '\0'; + } + } + else + { + m_unicodeHexLabel = k_placeholderUnicodeHex; + //m_dstUnicode = string.Empty; + } + + + // Remove Glyph + position.x += btnWidth; + if (GUI.Button(position, "Remove")) + { + GUIUtility.keyboardControl = 0; + + RemoveCharacterFromList(elementIndex); + + isAssetDirty = true; + m_SelectedCharacterRecord = -1; + m_isSearchDirty = true; + break; + } + + if (m_AddCharacterWarning.isEnabled && EditorApplication.timeSinceStartup < m_AddCharacterWarning.expirationTime) + { + EditorGUILayout.HelpBox("The Destination Character ID already exists", MessageType.Warning); + } + + } + } + } + + DisplayPageNavigation(ref m_CurrentCharacterPage, arraySize, itemsPerPage); + + EditorGUILayout.Space(); + } + #endregion + + // GLYPH TABLE + #region Glyph Table + EditorGUIUtility.labelWidth = labelWidth; + EditorGUIUtility.fieldWidth = fieldWidth; + EditorGUI.indentLevel = 0; + rect = EditorGUILayout.GetControlRect(false, 24); + + GUIStyle glyphPanelStyle = new GUIStyle(EditorStyles.helpBox); + + int glyphCount = m_fontAsset.glyphTable.Count; + + if (GUI.Button(rect, new GUIContent("Glyph Table [" + glyphCount + "]" + (rect.width > 275 ? " Glyphs" : ""), "List of glyphs contained in this font asset."), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.glyphTablePanel = !UI_PanelState.glyphTablePanel; + + GUI.Label(rect, (UI_PanelState.glyphTablePanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.glyphTablePanel) + { + int arraySize = m_GlyphTable_prop.arraySize; + int itemsPerPage = 15; + + // Display Glyph Management Tools + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + { + // Search Bar implementation + #region DISPLAY SEARCH BAR + EditorGUILayout.BeginHorizontal(); + { + EditorGUIUtility.labelWidth = 130f; + EditorGUI.BeginChangeCheck(); + string searchPattern = EditorGUILayout.TextField("Glyph Search", m_GlyphSearchPattern, "SearchTextField"); + if (EditorGUI.EndChangeCheck() || m_isSearchDirty) + { + if (string.IsNullOrEmpty(searchPattern) == false) + { + m_GlyphSearchPattern = searchPattern; + + // Search Glyph Table for potential matches + SearchGlyphTable(m_GlyphSearchPattern, ref m_GlyphSearchList); + } + else + m_GlyphSearchPattern = null; + + m_isSearchDirty = false; + } + + string styleName = string.IsNullOrEmpty(m_GlyphSearchPattern) ? "SearchCancelButtonEmpty" : "SearchCancelButton"; + if (GUILayout.Button(GUIContent.none, styleName)) + { + GUIUtility.keyboardControl = 0; + m_GlyphSearchPattern = string.Empty; + } + } + EditorGUILayout.EndHorizontal(); + #endregion + + // Display Page Navigation + if (!string.IsNullOrEmpty(m_GlyphSearchPattern)) + arraySize = m_GlyphSearchList.Count; + + DisplayPageNavigation(ref m_CurrentGlyphPage, arraySize, itemsPerPage); + } + EditorGUILayout.EndVertical(); + + // Display Glyph Table Elements + + if (arraySize > 0) + { + // Display each GlyphInfo entry using the GlyphInfo property drawer. + for (int i = itemsPerPage * m_CurrentGlyphPage; i < arraySize && i < itemsPerPage * (m_CurrentGlyphPage + 1); i++) + { + // Define the start of the selection region of the element. + Rect elementStartRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + int elementIndex = i; + if (!string.IsNullOrEmpty(m_GlyphSearchPattern)) + elementIndex = m_GlyphSearchList[i]; + + SerializedProperty glyphProperty = m_GlyphTable_prop.GetArrayElementAtIndex(elementIndex); + + EditorGUILayout.BeginVertical(glyphPanelStyle); + + using (new EditorGUI.DisabledScope(i != m_SelectedGlyphRecord)) + { + EditorGUILayout.PropertyField(glyphProperty); + } + + EditorGUILayout.EndVertical(); + + // Define the end of the selection region of the element. + Rect elementEndRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + // Check for Item selection + Rect selectionArea = new Rect(elementStartRegion.x, elementStartRegion.y, elementEndRegion.width, elementEndRegion.y - elementStartRegion.y); + if (DoSelectionCheck(selectionArea)) + { + if (m_SelectedGlyphRecord == i) + m_SelectedGlyphRecord = -1; + else + { + m_SelectedGlyphRecord = i; + m_AddGlyphWarning.isEnabled = false; + m_unicodeHexLabel = k_placeholderUnicodeHex; + GUIUtility.keyboardControl = 0; + } + } + + // Draw Selection Highlight and Glyph Options + if (m_SelectedGlyphRecord == i) + { + TMP_EditorUtility.DrawBox(selectionArea, 2f, new Color32(40, 192, 255, 255)); + + // Draw Glyph management options + Rect controlRect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * 1f); + float optionAreaWidth = controlRect.width * 0.6f; + float btnWidth = optionAreaWidth / 3; + + Rect position = new Rect(controlRect.x + controlRect.width * .4f, controlRect.y, btnWidth, controlRect.height); + + // Copy Selected Glyph to Target Glyph ID + GUI.enabled = !string.IsNullOrEmpty(m_dstGlyphID); + if (GUI.Button(position, new GUIContent("Copy to"))) + { + GUIUtility.keyboardControl = 0; + int dstGlyphID; + + // Convert Hex Value to Decimal + int.TryParse(m_dstGlyphID, out dstGlyphID); + + //Add new glyph at target Unicode hex id. + if (!AddNewGlyph(elementIndex, dstGlyphID)) + { + m_AddGlyphWarning.isEnabled = true; + m_AddGlyphWarning.expirationTime = EditorApplication.timeSinceStartup + 1; + } + + m_dstGlyphID = string.Empty; + m_isSearchDirty = true; + + TMPro_EventManager.ON_FONT_PROPERTY_CHANGED(true, m_fontAsset); + } + + // Target Glyph ID + GUI.enabled = true; + position.x += btnWidth; + + GUI.SetNextControlName("GlyphID_Input"); + m_dstGlyphID = EditorGUI.TextField(position, m_dstGlyphID); + + // Placeholder text + EditorGUI.LabelField(position, new GUIContent(m_GlyphIDLabel, "The Glyph ID of the duplicated Glyph"), TMP_UIStyleManager.label); + + // Only filter the input when the destination glyph ID text field has focus. + if (GUI.GetNameOfFocusedControl() == "GlyphID_Input") + { + m_GlyphIDLabel = string.Empty; + + //Filter out unwanted characters. + char chr = Event.current.character; + if ((chr < '0' || chr > '9')) + { + Event.current.character = '\0'; + } + } + else + { + m_GlyphIDLabel = k_placeholderGlyphID; + //m_dstGlyphID = string.Empty; + } + + // Remove Glyph + position.x += btnWidth; + if (GUI.Button(position, "Remove")) + { + GUIUtility.keyboardControl = 0; + + RemoveGlyphFromList(elementIndex); + + isAssetDirty = true; + m_SelectedGlyphRecord = -1; + m_isSearchDirty = true; + break; + } + + if (m_AddGlyphWarning.isEnabled && EditorApplication.timeSinceStartup < m_AddGlyphWarning.expirationTime) + { + EditorGUILayout.HelpBox("The Destination Glyph ID already exists", MessageType.Warning); + } + + } + } + } + + DisplayPageNavigation(ref m_CurrentGlyphPage, arraySize, itemsPerPage); + + EditorGUILayout.Space(); + } + #endregion + + // FONT FEATURE TABLE + #region Font Feature Table + EditorGUIUtility.labelWidth = labelWidth; + EditorGUIUtility.fieldWidth = fieldWidth; + EditorGUI.indentLevel = 0; + rect = EditorGUILayout.GetControlRect(false, 24); + + int adjustmentPairCount = m_fontAsset.fontFeatureTable.glyphPairAdjustmentRecords.Count; + + if (GUI.Button(rect, new GUIContent("Glyph Adjustment Table [" + adjustmentPairCount + "]" + (rect.width > 340 ? " Records" : ""), "List of glyph adjustment / advanced kerning pairs."), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.fontFeatureTablePanel = !UI_PanelState.fontFeatureTablePanel; + + GUI.Label(rect, (UI_PanelState.fontFeatureTablePanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.fontFeatureTablePanel) + { + int arraySize = m_GlyphPairAdjustmentRecords_prop.arraySize; + int itemsPerPage = 20; + + // Display Kerning Pair Management Tools + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + { + // Search Bar implementation + #region DISPLAY SEARCH BAR + EditorGUILayout.BeginHorizontal(); + { + EditorGUIUtility.labelWidth = 150f; + EditorGUI.BeginChangeCheck(); + string searchPattern = EditorGUILayout.TextField("Adjustment Pair Search", m_KerningTableSearchPattern, "SearchTextField"); + if (EditorGUI.EndChangeCheck() || m_isSearchDirty) + { + if (string.IsNullOrEmpty(searchPattern) == false) + { + m_KerningTableSearchPattern = searchPattern; + + // Search Glyph Table for potential matches + SearchKerningTable(m_KerningTableSearchPattern, ref m_KerningTableSearchList); + } + else + m_KerningTableSearchPattern = null; + + m_isSearchDirty = false; + } + + string styleName = string.IsNullOrEmpty(m_KerningTableSearchPattern) ? "SearchCancelButtonEmpty" : "SearchCancelButton"; + if (GUILayout.Button(GUIContent.none, styleName)) + { + GUIUtility.keyboardControl = 0; + m_KerningTableSearchPattern = string.Empty; + } + } + EditorGUILayout.EndHorizontal(); + #endregion + + // Display Page Navigation + if (!string.IsNullOrEmpty(m_KerningTableSearchPattern)) + arraySize = m_KerningTableSearchList.Count; + + DisplayPageNavigation(ref m_CurrentKerningPage, arraySize, itemsPerPage); + } + EditorGUILayout.EndVertical(); + + if (arraySize > 0) + { + // Display each GlyphInfo entry using the GlyphInfo property drawer. + for (int i = itemsPerPage * m_CurrentKerningPage; i < arraySize && i < itemsPerPage * (m_CurrentKerningPage + 1); i++) + { + // Define the start of the selection region of the element. + Rect elementStartRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + int elementIndex = i; + if (!string.IsNullOrEmpty(m_KerningTableSearchPattern)) + elementIndex = m_KerningTableSearchList[i]; + + SerializedProperty pairAdjustmentRecordProperty = m_GlyphPairAdjustmentRecords_prop.GetArrayElementAtIndex(elementIndex); + + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + + using (new EditorGUI.DisabledScope(i != m_SelectedAdjustmentRecord)) + { + EditorGUILayout.PropertyField(pairAdjustmentRecordProperty, new GUIContent("Selectable")); + } + + EditorGUILayout.EndVertical(); + + // Define the end of the selection region of the element. + Rect elementEndRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + // Check for Item selection + Rect selectionArea = new Rect(elementStartRegion.x, elementStartRegion.y, elementEndRegion.width, elementEndRegion.y - elementStartRegion.y); + if (DoSelectionCheck(selectionArea)) + { + if (m_SelectedAdjustmentRecord == i) + { + m_SelectedAdjustmentRecord = -1; + } + else + { + m_SelectedAdjustmentRecord = i; + GUIUtility.keyboardControl = 0; + } + } + + // Draw Selection Highlight and Kerning Pair Options + if (m_SelectedAdjustmentRecord == i) + { + TMP_EditorUtility.DrawBox(selectionArea, 2f, new Color32(40, 192, 255, 255)); + + // Draw Glyph management options + Rect controlRect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * 1f); + float optionAreaWidth = controlRect.width; + float btnWidth = optionAreaWidth / 4; + + Rect position = new Rect(controlRect.x + controlRect.width - btnWidth, controlRect.y, btnWidth, controlRect.height); + + // Remove Kerning pair + GUI.enabled = true; + if (GUI.Button(position, "Remove")) + { + GUIUtility.keyboardControl = 0; + + RemoveAdjustmentPairFromList(i); + + isAssetDirty = true; + m_SelectedAdjustmentRecord = -1; + m_isSearchDirty = true; + break; + } + } + } + } + + DisplayPageNavigation(ref m_CurrentKerningPage, arraySize, itemsPerPage); + + GUILayout.Space(5); + + // Add new kerning pair + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + { + EditorGUILayout.PropertyField(m_EmptyGlyphPairAdjustmentRecord_prop); + } + EditorGUILayout.EndVertical(); + + if (GUILayout.Button("Add New Glyph Adjustment Record")) + { + SerializedProperty firstAdjustmentRecordProperty = m_EmptyGlyphPairAdjustmentRecord_prop.FindPropertyRelative("m_FirstAdjustmentRecord"); + SerializedProperty secondAdjustmentRecordProperty = m_EmptyGlyphPairAdjustmentRecord_prop.FindPropertyRelative("m_SecondAdjustmentRecord"); + + uint firstGlyphIndex = (uint)firstAdjustmentRecordProperty.FindPropertyRelative("m_GlyphIndex").intValue; + uint secondGlyphIndex = (uint)secondAdjustmentRecordProperty.FindPropertyRelative("m_GlyphIndex").intValue; + + TMP_GlyphValueRecord firstValueRecord = GetValueRecord(firstAdjustmentRecordProperty.FindPropertyRelative("m_GlyphValueRecord")); + TMP_GlyphValueRecord secondValueRecord = GetValueRecord(secondAdjustmentRecordProperty.FindPropertyRelative("m_GlyphValueRecord")); + + errorCode = -1; + uint pairKey = secondGlyphIndex << 16 | firstGlyphIndex; + if (m_FontFeatureTable.m_GlyphPairAdjustmentRecordLookupDictionary.ContainsKey(pairKey) == false) + { + TMP_GlyphPairAdjustmentRecord adjustmentRecord = new TMP_GlyphPairAdjustmentRecord(new TMP_GlyphAdjustmentRecord(firstGlyphIndex, firstValueRecord), new TMP_GlyphAdjustmentRecord(secondGlyphIndex, secondValueRecord)); + m_FontFeatureTable.m_GlyphPairAdjustmentRecords.Add(adjustmentRecord); + m_FontFeatureTable.m_GlyphPairAdjustmentRecordLookupDictionary.Add(pairKey, adjustmentRecord); + errorCode = 0; + } + + // Add glyphs and characters + TMP_Character character; + + uint firstCharacter = m_SerializedPropertyHolder.firstCharacter; + if (!m_fontAsset.characterLookupTable.ContainsKey(firstCharacter)) + m_fontAsset.TryAddCharacterInternal(firstCharacter, out character); + + uint secondCharacter = m_SerializedPropertyHolder.secondCharacter; + if (!m_fontAsset.characterLookupTable.ContainsKey(secondCharacter)) + m_fontAsset.TryAddCharacterInternal(secondCharacter, out character); + + // Sort Kerning Pairs & Reload Font Asset if new kerning pair was added. + if (errorCode != -1) + { + m_FontFeatureTable.SortGlyphPairAdjustmentRecords(); + serializedObject.ApplyModifiedProperties(); + isAssetDirty = true; + m_isSearchDirty = true; + } + else + { + timeStamp = System.DateTime.Now.AddSeconds(5); + } + + // Clear Add Kerning Pair Panel + // TODO + } + + if (errorCode == -1) + { + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + GUILayout.Label("Kerning Pair already exists!", TMP_UIStyleManager.label); + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + + if (System.DateTime.Now > timeStamp) + errorCode = 0; + } + } + #endregion + + if (serializedObject.ApplyModifiedProperties() || evt_cmd == k_UndoRedo || isAssetDirty) + { + // Delay callback until user has decided to Apply or Revert the changes. + if (m_DisplayDestructiveChangeWarning == false) + TMPro_EventManager.ON_FONT_PROPERTY_CHANGED(true, m_fontAsset); + + if (m_fontAsset.IsFontAssetLookupTablesDirty || evt_cmd == k_UndoRedo) + m_fontAsset.ReadFontAssetDefinition(); + + isAssetDirty = false; + EditorUtility.SetDirty(target); + } + + + // Clear selection if mouse event was not consumed. + GUI.enabled = true; + if (currentEvent.type == EventType.MouseDown && currentEvent.button == 0) + m_SelectedAdjustmentRecord = -1; + + } + + void CleanFallbackFontAssetTable() + { + SerializedProperty m_FallbackFontAsseTable = serializedObject.FindProperty("m_FallbackFontAssetTable"); + + bool isListDirty = false; + + int elementCount = m_FallbackFontAsseTable.arraySize; + + for (int i = 0; i < elementCount; i++) + { + SerializedProperty element = m_FallbackFontAsseTable.GetArrayElementAtIndex(i); + if (element.objectReferenceValue == null) + { + m_FallbackFontAsseTable.DeleteArrayElementAtIndex(i); + elementCount -= 1; + i -= 1; + + isListDirty = true; + } + } + + if (isListDirty) + { + serializedObject.ApplyModifiedProperties(); + serializedObject.Update(); + } + } + + void SavedAtlasGenerationSettings() + { + m_AtlasSettings.glyphRenderMode = (GlyphRenderMode)m_AtlasRenderMode_prop.intValue; + m_AtlasSettings.pointSize = m_SamplingPointSize_prop.intValue; + m_AtlasSettings.padding = m_AtlasPadding_prop.intValue; + m_AtlasSettings.atlasWidth = m_AtlasWidth_prop.intValue; + m_AtlasSettings.atlasHeight = m_AtlasHeight_prop.intValue; + } + + void RestoreAtlasGenerationSettings() + { + m_AtlasRenderMode_prop.intValue = (int)m_AtlasSettings.glyphRenderMode; + m_SamplingPointSize_prop.intValue = m_AtlasSettings.pointSize; + m_AtlasPadding_prop.intValue = m_AtlasSettings.padding; + m_AtlasWidth_prop.intValue = m_AtlasSettings.atlasWidth; + m_AtlasHeight_prop.intValue = m_AtlasSettings.atlasHeight; + } + + + void UpdateFontAssetCreationSettings() + { + m_fontAsset.m_CreationSettings.pointSize = m_SamplingPointSize_prop.intValue; + m_fontAsset.m_CreationSettings.renderMode = m_AtlasRenderMode_prop.intValue; + m_fontAsset.m_CreationSettings.padding = m_AtlasPadding_prop.intValue; + m_fontAsset.m_CreationSettings.atlasWidth = m_AtlasWidth_prop.intValue; + m_fontAsset.m_CreationSettings.atlasHeight = m_AtlasHeight_prop.intValue; + } + + + void UpdateCharacterData(SerializedProperty property, int index) + { + TMP_Character character = m_fontAsset.characterTable[index]; + + character.unicode = (uint)property.FindPropertyRelative("m_Unicode").intValue; + character.scale = property.FindPropertyRelative("m_Scale").floatValue; + + SerializedProperty glyphProperty = property.FindPropertyRelative("m_Glyph"); + character.glyph.index = (uint)glyphProperty.FindPropertyRelative("m_Index").intValue; + + SerializedProperty glyphRectProperty = glyphProperty.FindPropertyRelative("m_GlyphRect"); + character.glyph.glyphRect = new GlyphRect(glyphRectProperty.FindPropertyRelative("m_X").intValue, glyphRectProperty.FindPropertyRelative("m_Y").intValue, glyphRectProperty.FindPropertyRelative("m_Width").intValue, glyphRectProperty.FindPropertyRelative("m_Height").intValue); + + SerializedProperty glyphMetricsProperty = glyphProperty.FindPropertyRelative("m_Metrics"); + character.glyph.metrics = new GlyphMetrics(glyphMetricsProperty.FindPropertyRelative("m_Width").floatValue, glyphMetricsProperty.FindPropertyRelative("m_Height").floatValue, glyphMetricsProperty.FindPropertyRelative("m_HorizontalBearingX").floatValue, glyphMetricsProperty.FindPropertyRelative("m_HorizontalBearingY").floatValue, glyphMetricsProperty.FindPropertyRelative("m_HorizontalAdvance").floatValue); + + character.glyph.scale = glyphProperty.FindPropertyRelative("m_Scale").floatValue; + + character.glyph.atlasIndex = glyphProperty.FindPropertyRelative("m_AtlasIndex").intValue; + } + + + void UpdateGlyphData(SerializedProperty property, int index) + { + Glyph glyph = m_fontAsset.glyphTable[index]; + + glyph.index = (uint)property.FindPropertyRelative("m_Index").intValue; + + SerializedProperty glyphRect = property.FindPropertyRelative("m_GlyphRect"); + glyph.glyphRect = new GlyphRect(glyphRect.FindPropertyRelative("m_X").intValue, glyphRect.FindPropertyRelative("m_Y").intValue, glyphRect.FindPropertyRelative("m_Width").intValue, glyphRect.FindPropertyRelative("m_Height").intValue); + + SerializedProperty glyphMetrics = property.FindPropertyRelative("m_Metrics"); + glyph.metrics = new GlyphMetrics(glyphMetrics.FindPropertyRelative("m_Width").floatValue, glyphMetrics.FindPropertyRelative("m_Height").floatValue, glyphMetrics.FindPropertyRelative("m_HorizontalBearingX").floatValue, glyphMetrics.FindPropertyRelative("m_HorizontalBearingY").floatValue, glyphMetrics.FindPropertyRelative("m_HorizontalAdvance").floatValue); + + glyph.scale = property.FindPropertyRelative("m_Scale").floatValue; + } + + + void DisplayPageNavigation(ref int currentPage, int arraySize, int itemsPerPage) + { + Rect pagePos = EditorGUILayout.GetControlRect(false, 20); + pagePos.width /= 3; + + int shiftMultiplier = Event.current.shift ? 10 : 1; // Page + Shift goes 10 page forward + + // Previous Page + GUI.enabled = currentPage > 0; + + if (GUI.Button(pagePos, "Previous Page")) + currentPage -= 1 * shiftMultiplier; + + + // Page Counter + GUI.enabled = true; + pagePos.x += pagePos.width; + int totalPages = (int)(arraySize / (float)itemsPerPage + 0.999f); + GUI.Label(pagePos, "Page " + (currentPage + 1) + " / " + totalPages, TMP_UIStyleManager.centeredLabel); + + // Next Page + pagePos.x += pagePos.width; + GUI.enabled = itemsPerPage * (currentPage + 1) < arraySize; + + if (GUI.Button(pagePos, "Next Page")) + currentPage += 1 * shiftMultiplier; + + // Clamp page range + currentPage = Mathf.Clamp(currentPage, 0, arraySize / itemsPerPage); + + GUI.enabled = true; + } + + + /// + /// + /// + /// + /// + bool AddNewGlyph(int srcIndex, int dstGlyphID) + { + // Make sure Destination Glyph ID doesn't already contain a Glyph + if (m_fontAsset.glyphLookupTable.ContainsKey((uint)dstGlyphID)) + return false; + + // Add new element to glyph list. + m_GlyphTable_prop.arraySize += 1; + + // Get a reference to the source glyph. + SerializedProperty sourceGlyph = m_GlyphTable_prop.GetArrayElementAtIndex(srcIndex); + + int dstIndex = m_GlyphTable_prop.arraySize - 1; + + // Get a reference to the target / destination glyph. + SerializedProperty targetGlyph = m_GlyphTable_prop.GetArrayElementAtIndex(dstIndex); + + CopyGlyphSerializedProperty(sourceGlyph, ref targetGlyph); + + // Update the ID of the glyph + targetGlyph.FindPropertyRelative("m_Index").intValue = dstGlyphID; + + serializedObject.ApplyModifiedProperties(); + + m_fontAsset.SortGlyphTable(); + + m_fontAsset.ReadFontAssetDefinition(); + + return true; + } + + /// + /// + /// + /// + void RemoveGlyphFromList(int index) + { + if (index > m_GlyphTable_prop.arraySize) + return; + + int targetGlyphIndex = m_GlyphTable_prop.GetArrayElementAtIndex(index).FindPropertyRelative("m_Index").intValue; + + m_GlyphTable_prop.DeleteArrayElementAtIndex(index); + + // Remove all characters referencing this glyph. + for (int i = 0; i < m_CharacterTable_prop.arraySize; i++) + { + int glyphIndex = m_CharacterTable_prop.GetArrayElementAtIndex(i).FindPropertyRelative("m_GlyphIndex").intValue; + + if (glyphIndex == targetGlyphIndex) + { + // Remove character + m_CharacterTable_prop.DeleteArrayElementAtIndex(i); + } + } + + serializedObject.ApplyModifiedProperties(); + + m_fontAsset.ReadFontAssetDefinition(); + } + + bool AddNewCharacter(int srcIndex, int dstGlyphID) + { + // Make sure Destination Glyph ID doesn't already contain a Glyph + if (m_fontAsset.characterLookupTable.ContainsKey((uint)dstGlyphID)) + return false; + + // Add new element to glyph list. + m_CharacterTable_prop.arraySize += 1; + + // Get a reference to the source glyph. + SerializedProperty sourceCharacter = m_CharacterTable_prop.GetArrayElementAtIndex(srcIndex); + + int dstIndex = m_CharacterTable_prop.arraySize - 1; + + // Get a reference to the target / destination glyph. + SerializedProperty targetCharacter = m_CharacterTable_prop.GetArrayElementAtIndex(dstIndex); + + CopyCharacterSerializedProperty(sourceCharacter, ref targetCharacter); + + // Update the ID of the glyph + targetCharacter.FindPropertyRelative("m_Unicode").intValue = dstGlyphID; + + serializedObject.ApplyModifiedProperties(); + + m_fontAsset.SortCharacterTable(); + + m_fontAsset.ReadFontAssetDefinition(); + + return true; + } + + void RemoveCharacterFromList(int index) + { + if (index > m_CharacterTable_prop.arraySize) + return; + + m_CharacterTable_prop.DeleteArrayElementAtIndex(index); + + serializedObject.ApplyModifiedProperties(); + + m_fontAsset.ReadFontAssetDefinition(); + } + + + // Check if any of the Style elements were clicked on. + private bool DoSelectionCheck(Rect selectionArea) + { + Event currentEvent = Event.current; + + switch (currentEvent.type) + { + case EventType.MouseDown: + if (selectionArea.Contains(currentEvent.mousePosition) && currentEvent.button == 0) + { + currentEvent.Use(); + return true; + } + + break; + } + + return false; + } + + TMP_GlyphValueRecord GetValueRecord(SerializedProperty property) + { + TMP_GlyphValueRecord record = new TMP_GlyphValueRecord(); + record.xPlacement = property.FindPropertyRelative("m_XPlacement").floatValue; + record.yPlacement = property.FindPropertyRelative("m_YPlacement").floatValue; + record.xAdvance = property.FindPropertyRelative("m_XAdvance").floatValue; + record.yAdvance = property.FindPropertyRelative("m_YAdvance").floatValue; + + return record; + } + + void RemoveAdjustmentPairFromList(int index) + { + if (index > m_GlyphPairAdjustmentRecords_prop.arraySize) + return; + + m_GlyphPairAdjustmentRecords_prop.DeleteArrayElementAtIndex(index); + + serializedObject.ApplyModifiedProperties(); + + m_fontAsset.ReadFontAssetDefinition(); + } + + /// + /// + /// + /// + /// + void CopyGlyphSerializedProperty(SerializedProperty srcGlyph, ref SerializedProperty dstGlyph) + { + // TODO : Should make a generic function which copies each of the properties. + dstGlyph.FindPropertyRelative("m_Index").intValue = srcGlyph.FindPropertyRelative("m_Index").intValue; + + // Glyph -> GlyphMetrics + SerializedProperty srcGlyphMetrics = srcGlyph.FindPropertyRelative("m_Metrics"); + SerializedProperty dstGlyphMetrics = dstGlyph.FindPropertyRelative("m_Metrics"); + + dstGlyphMetrics.FindPropertyRelative("m_Width").floatValue = srcGlyphMetrics.FindPropertyRelative("m_Width").floatValue; + dstGlyphMetrics.FindPropertyRelative("m_Height").floatValue = srcGlyphMetrics.FindPropertyRelative("m_Height").floatValue; + dstGlyphMetrics.FindPropertyRelative("m_HorizontalBearingX").floatValue = srcGlyphMetrics.FindPropertyRelative("m_HorizontalBearingX").floatValue; + dstGlyphMetrics.FindPropertyRelative("m_HorizontalBearingY").floatValue = srcGlyphMetrics.FindPropertyRelative("m_HorizontalBearingY").floatValue; + dstGlyphMetrics.FindPropertyRelative("m_HorizontalAdvance").floatValue = srcGlyphMetrics.FindPropertyRelative("m_HorizontalAdvance").floatValue; + + // Glyph -> GlyphRect + SerializedProperty srcGlyphRect = srcGlyph.FindPropertyRelative("m_GlyphRect"); + SerializedProperty dstGlyphRect = dstGlyph.FindPropertyRelative("m_GlyphRect"); + + dstGlyphRect.FindPropertyRelative("m_X").intValue = srcGlyphRect.FindPropertyRelative("m_X").intValue; + dstGlyphRect.FindPropertyRelative("m_Y").intValue = srcGlyphRect.FindPropertyRelative("m_Y").intValue; + dstGlyphRect.FindPropertyRelative("m_Width").intValue = srcGlyphRect.FindPropertyRelative("m_Width").intValue; + dstGlyphRect.FindPropertyRelative("m_Height").intValue = srcGlyphRect.FindPropertyRelative("m_Height").intValue; + + dstGlyph.FindPropertyRelative("m_Scale").floatValue = srcGlyph.FindPropertyRelative("m_Scale").floatValue; + dstGlyph.FindPropertyRelative("m_AtlasIndex").intValue = srcGlyph.FindPropertyRelative("m_AtlasIndex").intValue; + } + + + void CopyCharacterSerializedProperty(SerializedProperty source, ref SerializedProperty target) + { + // TODO : Should make a generic function which copies each of the properties. + int unicode = source.FindPropertyRelative("m_Unicode").intValue; + target.FindPropertyRelative("m_Unicode").intValue = unicode; + + int srcGlyphIndex = source.FindPropertyRelative("m_GlyphIndex").intValue; + target.FindPropertyRelative("m_GlyphIndex").intValue = srcGlyphIndex; + + target.FindPropertyRelative("m_Scale").floatValue = source.FindPropertyRelative("m_Scale").floatValue; + } + + + /// + /// + /// + /// + /// + void SearchGlyphTable (string searchPattern, ref List searchResults) + { + if (searchResults == null) searchResults = new List(); + + searchResults.Clear(); + + int arraySize = m_GlyphTable_prop.arraySize; + + for (int i = 0; i < arraySize; i++) + { + SerializedProperty sourceGlyph = m_GlyphTable_prop.GetArrayElementAtIndex(i); + + int id = sourceGlyph.FindPropertyRelative("m_Index").intValue; + + // Check for potential match against a character. + //if (searchPattern.Length == 1 && id == searchPattern[0]) + // searchResults.Add(i); + + // Check for potential match against decimal id + if (id.ToString().Contains(searchPattern)) + searchResults.Add(i); + + //if (id.ToString("x").Contains(searchPattern)) + // searchResults.Add(i); + + //if (id.ToString("X").Contains(searchPattern)) + // searchResults.Add(i); + } + } + + + void SearchCharacterTable(string searchPattern, ref List searchResults) + { + if (searchResults == null) searchResults = new List(); + + searchResults.Clear(); + + int arraySize = m_CharacterTable_prop.arraySize; + + for (int i = 0; i < arraySize; i++) + { + SerializedProperty sourceCharacter = m_CharacterTable_prop.GetArrayElementAtIndex(i); + + int id = sourceCharacter.FindPropertyRelative("m_Unicode").intValue; + + // Check for potential match against a character. + if (searchPattern.Length == 1 && id == searchPattern[0]) + searchResults.Add(i); + else if (id.ToString("x").Contains(searchPattern)) + searchResults.Add(i); + else if (id.ToString("X").Contains(searchPattern)) + searchResults.Add(i); + + // Check for potential match against decimal id + //if (id.ToString().Contains(searchPattern)) + // searchResults.Add(i); + } + } + + + void SearchKerningTable(string searchPattern, ref List searchResults) + { + if (searchResults == null) searchResults = new List(); + + searchResults.Clear(); + + // Lookup glyph index of potential characters contained in the search pattern. + uint firstGlyphIndex = 0; + TMP_Character firstCharacterSearch; + + if (searchPattern.Length > 0 && m_fontAsset.characterLookupTable.TryGetValue(searchPattern[0], out firstCharacterSearch)) + firstGlyphIndex = firstCharacterSearch.glyphIndex; + + uint secondGlyphIndex = 0; + TMP_Character secondCharacterSearch; + + if (searchPattern.Length > 1 && m_fontAsset.characterLookupTable.TryGetValue(searchPattern[1], out secondCharacterSearch)) + secondGlyphIndex = secondCharacterSearch.glyphIndex; + + int arraySize = m_GlyphPairAdjustmentRecords_prop.arraySize; + + for (int i = 0; i < arraySize; i++) + { + SerializedProperty record = m_GlyphPairAdjustmentRecords_prop.GetArrayElementAtIndex(i); + + SerializedProperty firstAdjustmentRecord = record.FindPropertyRelative("m_FirstAdjustmentRecord"); + SerializedProperty secondAdjustmentRecord = record.FindPropertyRelative("m_SecondAdjustmentRecord"); + + int firstGlyph = firstAdjustmentRecord.FindPropertyRelative("m_GlyphIndex").intValue; + int secondGlyph = secondAdjustmentRecord.FindPropertyRelative("m_GlyphIndex").intValue; + + if (firstGlyphIndex == firstGlyph && secondGlyphIndex == secondGlyph) + searchResults.Add(i); + else if (searchPattern.Length == 1 && (firstGlyphIndex == firstGlyph || firstGlyphIndex == secondGlyph)) + searchResults.Add(i); + else if (firstGlyph.ToString().Contains(searchPattern)) + searchResults.Add(i); + else if (secondGlyph.ToString().Contains(searchPattern)) + searchResults.Add(i); + } + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAssetEditor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAssetEditor.cs.meta new file mode 100644 index 0000000..9b26bae --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAssetEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 96b44f7d98314b139324a8a87eb66067 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAsset_CreationMenu.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAsset_CreationMenu.cs new file mode 100644 index 0000000..344965c --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAsset_CreationMenu.cs @@ -0,0 +1,235 @@ +using UnityEngine; +using UnityEditor; +using System.Linq; +using System.IO; +using System.Collections; +using System.Collections.Generic; +using UnityEngine.TextCore; +using UnityEngine.TextCore.LowLevel; +using TMPro; + + +namespace TMPro +{ + public static class TMP_FontAsset_CreationMenu + { + [MenuItem("Assets/Create/TextMeshPro/Font Asset Variant", false, 105)] + public static void CreateFontAssetVariant() + { + Object target = Selection.activeObject; + + // Make sure the selection is a font file + if (target == null || target.GetType() != typeof(TMP_FontAsset)) + { + Debug.LogWarning("A Font file must first be selected in order to create a Font Asset."); + return; + } + + TMP_FontAsset sourceFontAsset = (TMP_FontAsset)target; + + string sourceFontFilePath = AssetDatabase.GetAssetPath(target); + + string folderPath = Path.GetDirectoryName(sourceFontFilePath); + string assetName = Path.GetFileNameWithoutExtension(sourceFontFilePath); + + string newAssetFilePathWithName = AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + assetName + " - Variant.asset"); + + // Set Texture and Material reference to the source font asset. + TMP_FontAsset fontAsset = ScriptableObject.Instantiate(sourceFontAsset); + AssetDatabase.CreateAsset(fontAsset, newAssetFilePathWithName); + + fontAsset.atlasPopulationMode = AtlasPopulationMode.Static; + + // Initialize array for the font atlas textures. + fontAsset.atlasTextures = sourceFontAsset.atlasTextures; + fontAsset.material = sourceFontAsset.material; + + // Not sure if this is still necessary in newer versions of Unity. + EditorUtility.SetDirty(fontAsset); + + AssetDatabase.SaveAssets(); + } + + + /* + [MenuItem("Assets/Create/TextMeshPro/Font Asset Fallback", false, 105)] + public static void CreateFallbackFontAsset() + { + Object target = Selection.activeObject; + + // Make sure the selection is a font file + if (target == null || target.GetType() != typeof(TMP_FontAsset)) + { + Debug.LogWarning("A Font file must first be selected in order to create a Font Asset."); + return; + } + + TMP_FontAsset sourceFontAsset = (TMP_FontAsset)target; + + string sourceFontFilePath = AssetDatabase.GetAssetPath(target); + + string folderPath = Path.GetDirectoryName(sourceFontFilePath); + string assetName = Path.GetFileNameWithoutExtension(sourceFontFilePath); + + string newAssetFilePathWithName = AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + assetName + " - Fallback.asset"); + + //// Create new TM Font Asset. + TMP_FontAsset fontAsset = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(fontAsset, newAssetFilePathWithName); + + fontAsset.version = "1.1.0"; + + fontAsset.faceInfo = sourceFontAsset.faceInfo; + + fontAsset.m_SourceFontFileGUID = sourceFontAsset.m_SourceFontFileGUID; + fontAsset.m_SourceFontFile_EditorRef = sourceFontAsset.m_SourceFontFile_EditorRef; + fontAsset.atlasPopulationMode = TMP_FontAsset.AtlasPopulationMode.Dynamic; + + int atlasWidth = fontAsset.atlasWidth = sourceFontAsset.atlasWidth; + int atlasHeight = fontAsset.atlasHeight = sourceFontAsset.atlasHeight; + int atlasPadding = fontAsset.atlasPadding = sourceFontAsset.atlasPadding; + fontAsset.atlasRenderMode = sourceFontAsset.atlasRenderMode; + + // Initialize array for the font atlas textures. + fontAsset.atlasTextures = new Texture2D[1]; + + // Create and add font atlas texture + Texture2D texture = new Texture2D(atlasWidth, atlasHeight, TextureFormat.Alpha8, false); + Color32[] colors = new Color32[atlasWidth * atlasHeight]; + texture.SetPixels32(colors); + + texture.name = assetName + " Atlas"; + fontAsset.atlasTextures[0] = texture; + AssetDatabase.AddObjectToAsset(texture, fontAsset); + + // Add free rectangle of the size of the texture. + int packingModifier = ((GlyphRasterModes)fontAsset.atlasRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP ? 0 : 1; + fontAsset.m_FreeGlyphRects = new List() { new GlyphRect(0, 0, atlasWidth - packingModifier, atlasHeight - packingModifier) }; + fontAsset.m_UsedGlyphRects = new List(); + + // Create new Material and Add it as Sub-Asset + Material tmp_material = new Material(sourceFontAsset.material); + + tmp_material.name = texture.name + " Material"; + tmp_material.SetTexture(ShaderUtilities.ID_MainTex, texture); + tmp_material.SetFloat(ShaderUtilities.ID_TextureWidth, atlasWidth); + tmp_material.SetFloat(ShaderUtilities.ID_TextureHeight, atlasHeight); + + tmp_material.SetFloat(ShaderUtilities.ID_GradientScale, atlasPadding + packingModifier); + + tmp_material.SetFloat(ShaderUtilities.ID_WeightNormal, fontAsset.normalStyle); + tmp_material.SetFloat(ShaderUtilities.ID_WeightBold, fontAsset.boldStyle); + + fontAsset.material = tmp_material; + + AssetDatabase.AddObjectToAsset(tmp_material, fontAsset); + + // Add Font Asset Creation Settings + // TODO + + // Not sure if this is still necessary in newer versions of Unity. + EditorUtility.SetDirty(fontAsset); + + AssetDatabase.SaveAssets(); + } + */ + + //[MenuItem("Assets/Create/TextMeshPro/Font Asset #%F12", true)] + //public static bool CreateFontAssetMenuValidation() + //{ + // return false; + //} + + [MenuItem("Assets/Create/TextMeshPro/Font Asset #%F12", false, 100)] + public static void CreateFontAsset() + { + Object target = Selection.activeObject; + + // Make sure the selection is a font file + if (target == null || target.GetType() != typeof(Font)) + { + Debug.LogWarning("A Font file must first be selected in order to create a Font Asset."); + return; + } + + Font sourceFont = (Font)target; + + string sourceFontFilePath = AssetDatabase.GetAssetPath(target); + + string folderPath = Path.GetDirectoryName(sourceFontFilePath); + string assetName = Path.GetFileNameWithoutExtension(sourceFontFilePath); + + string newAssetFilePathWithName = AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + assetName + " SDF.asset"); + + // Initialize FontEngine + FontEngine.InitializeFontEngine(); + + // Load Font Face + if (FontEngine.LoadFontFace(sourceFont, 90) != FontEngineError.Success) + { + Debug.LogWarning("Unable to load font face for [" + sourceFont.name + "]. Make sure \"Include Font Data\" is enabled in the Font Import Settings.", sourceFont); + return; + } + + // Create new Font Asset + TMP_FontAsset fontAsset = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(fontAsset, newAssetFilePathWithName); + + fontAsset.version = "1.1.0"; + + fontAsset.faceInfo = FontEngine.GetFaceInfo(); + + // Set font reference and GUID + fontAsset.m_SourceFontFileGUID = AssetDatabase.AssetPathToGUID(sourceFontFilePath); + fontAsset.m_SourceFontFile_EditorRef = sourceFont; + fontAsset.atlasPopulationMode = AtlasPopulationMode.Dynamic; + + // Default atlas resolution is 1024 x 1024. + int atlasWidth = fontAsset.atlasWidth = 1024; + int atlasHeight = fontAsset.atlasHeight = 1024; + int atlasPadding = fontAsset.atlasPadding = 9; + fontAsset.atlasRenderMode = GlyphRenderMode.SDFAA; + + // Initialize array for the font atlas textures. + fontAsset.atlasTextures = new Texture2D[1]; + + // Create atlas texture of size zero. + Texture2D texture = new Texture2D(0, 0, TextureFormat.Alpha8, false); + + texture.name = assetName + " Atlas"; + fontAsset.atlasTextures[0] = texture; + AssetDatabase.AddObjectToAsset(texture, fontAsset); + + // Add free rectangle of the size of the texture. + int packingModifier = ((GlyphRasterModes)fontAsset.atlasRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP ? 0 : 1; + fontAsset.freeGlyphRects = new List() { new GlyphRect(0, 0, atlasWidth - packingModifier, atlasHeight - packingModifier) }; + fontAsset.usedGlyphRects = new List(); + + // Create new Material and Add it as Sub-Asset + Shader default_Shader = Shader.Find("TextMeshPro/Distance Field"); + Material tmp_material = new Material(default_Shader); + + tmp_material.name = texture.name + " Material"; + tmp_material.SetTexture(ShaderUtilities.ID_MainTex, texture); + tmp_material.SetFloat(ShaderUtilities.ID_TextureWidth, atlasWidth); + tmp_material.SetFloat(ShaderUtilities.ID_TextureHeight, atlasHeight); + + tmp_material.SetFloat(ShaderUtilities.ID_GradientScale, atlasPadding + packingModifier); + + tmp_material.SetFloat(ShaderUtilities.ID_WeightNormal, fontAsset.normalStyle); + tmp_material.SetFloat(ShaderUtilities.ID_WeightBold, fontAsset.boldStyle); + + fontAsset.material = tmp_material; + + AssetDatabase.AddObjectToAsset(tmp_material, fontAsset); + + // Add Font Asset Creation Settings + fontAsset.creationSettings = new FontAssetCreationSettings(fontAsset.m_SourceFontFileGUID, fontAsset.faceInfo.pointSize, 0, atlasPadding, 0, 1024, 1024, 7, string.Empty, (int)GlyphRenderMode.SDFAA); + + // Not sure if this is still necessary in newer versions of Unity. + EditorUtility.SetDirty(fontAsset); + + AssetDatabase.SaveAssets(); + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAsset_CreationMenu.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAsset_CreationMenu.cs.meta new file mode 100644 index 0000000..57a3fce --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_FontAsset_CreationMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7496af95dfe67cf429ac65edaaf99106 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPairAdjustmentRecordPropertyDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPairAdjustmentRecordPropertyDrawer.cs new file mode 100644 index 0000000..69ac6f8 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPairAdjustmentRecordPropertyDrawer.cs @@ -0,0 +1,391 @@ +using UnityEngine; +using UnityEngine.TextCore; +using UnityEngine.TextCore.LowLevel; +using UnityEditor; +using System.Collections; +using System.Text.RegularExpressions; + + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(TMP_GlyphPairAdjustmentRecord))] + public class TMP_GlyphPairAdjustmentRecordPropertyDrawer : PropertyDrawer + { + private bool isEditingEnabled = false; + private bool isSelectable = false; + + private string m_FirstCharacter = string.Empty; + private string m_SecondCharacter = string.Empty; + private string m_PreviousInput; + + static GUIContent s_CharacterTextFieldLabel = new GUIContent("Char:", "Enter the character or its UTF16 or UTF32 Unicode character escape sequence. For UTF16 use \"\\uFF00\" and for UTF32 use \"\\UFF00FF00\" representation."); + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty prop_FirstAdjustmentRecord = property.FindPropertyRelative("m_FirstAdjustmentRecord"); + SerializedProperty prop_SecondAdjustmentRecord = property.FindPropertyRelative("m_SecondAdjustmentRecord"); + + SerializedProperty prop_FirstGlyphIndex = prop_FirstAdjustmentRecord.FindPropertyRelative("m_GlyphIndex"); + SerializedProperty prop_FirstGlyphValueRecord = prop_FirstAdjustmentRecord.FindPropertyRelative("m_GlyphValueRecord"); + + SerializedProperty prop_SecondGlyphIndex = prop_SecondAdjustmentRecord.FindPropertyRelative("m_GlyphIndex"); + SerializedProperty prop_SecondGlyphValueRecord = prop_SecondAdjustmentRecord.FindPropertyRelative("m_GlyphValueRecord"); + + SerializedProperty prop_FontFeatureLookupFlags = property.FindPropertyRelative("m_FeatureLookupFlags"); + + position.yMin += 2; + + float width = position.width / 2; + float padding = 5.0f; + + Rect rect; + + isEditingEnabled = GUI.enabled; + isSelectable = label.text == "Selectable" ? true : false; + + if (isSelectable) + GUILayoutUtility.GetRect(position.width, 75); + else + GUILayoutUtility.GetRect(position.width, 55); + + GUIStyle style = new GUIStyle(EditorStyles.label); + style.richText = true; + + // First Glyph + GUI.enabled = isEditingEnabled; + if (isSelectable) + { + rect = new Rect(position.x + 70, position.y, position.width, 49); + + float labelWidth = GUI.skin.label.CalcSize(new GUIContent("ID: " + prop_FirstGlyphIndex.intValue)).x; + EditorGUI.LabelField(new Rect(position.x + (64 - labelWidth) / 2, position.y + 60, 64f, 18f), new GUIContent("ID: " + prop_FirstGlyphIndex.intValue + ""), style); + + GUI.enabled = isEditingEnabled; + EditorGUIUtility.labelWidth = 30f; + + rect = new Rect(position.x + 70, position.y + 10, (width - 70) - padding, 18); + EditorGUI.PropertyField(rect, prop_FirstGlyphValueRecord.FindPropertyRelative("m_XPlacement"), new GUIContent("OX:")); + + rect.y += 20; + EditorGUI.PropertyField(rect, prop_FirstGlyphValueRecord.FindPropertyRelative("m_YPlacement"), new GUIContent("OY:")); + + rect.y += 20; + EditorGUI.PropertyField(rect, prop_FirstGlyphValueRecord.FindPropertyRelative("m_XAdvance"), new GUIContent("AX:")); + + //rect.y += 20; + //EditorGUI.PropertyField(rect, prop_FirstGlyphValueRecord.FindPropertyRelative("m_YAdvance"), new GUIContent("AY:")); + + DrawGlyph((uint)prop_FirstGlyphIndex.intValue, new Rect(position.x, position.y, position.width, position.height), property); + } + else + { + rect = new Rect(position.x, position.y, width / 2 * 0.8f - padding, 18); + EditorGUIUtility.labelWidth = 40f; + + // First Character Lookup + GUI.SetNextControlName("FirstCharacterField"); + EditorGUI.BeginChangeCheck(); + string firstCharacter = EditorGUI.TextField(rect, s_CharacterTextFieldLabel, m_FirstCharacter); + + if (GUI.GetNameOfFocusedControl() == "FirstCharacterField") + { + if (ValidateInput(firstCharacter)) + { + //Debug.Log("1st Unicode value: [" + firstCharacter + "]"); + + uint unicode = GetUnicodeCharacter(firstCharacter); + + // Lookup glyph index + TMP_SerializedPropertyHolder propertyHolder = property.serializedObject.targetObject as TMP_SerializedPropertyHolder; + TMP_FontAsset fontAsset = propertyHolder.fontAsset; + if (fontAsset != null) + { + prop_FirstGlyphIndex.intValue = (int)fontAsset.GetGlyphIndex(unicode); + propertyHolder.firstCharacter = unicode; + } + } + } + + if (EditorGUI.EndChangeCheck()) + m_FirstCharacter = firstCharacter; + + // First Glyph Index + rect.x += width / 2 * 0.8f; + + EditorGUIUtility.labelWidth = 25f; + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(rect, prop_FirstGlyphIndex, new GUIContent("ID:")); + if (EditorGUI.EndChangeCheck()) + { + + } + + GUI.enabled = isEditingEnabled; + EditorGUIUtility.labelWidth = 25f; + + rect = new Rect(position.x, position.y + 20, width * 0.5f - padding, 18); + EditorGUI.PropertyField(rect, prop_FirstGlyphValueRecord.FindPropertyRelative("m_XPlacement"), new GUIContent("OX")); + + rect.x += width * 0.5f; + EditorGUI.PropertyField(rect, prop_FirstGlyphValueRecord.FindPropertyRelative("m_YPlacement"), new GUIContent("OY")); + + rect.x = position.x; + rect.y += 20; + EditorGUI.PropertyField(rect, prop_FirstGlyphValueRecord.FindPropertyRelative("m_XAdvance"), new GUIContent("AX")); + + //rect.x += width * 0.5f; + //EditorGUI.PropertyField(rect, prop_FirstGlyphAdjustment.FindPropertyRelative("m_YAdvance"), new GUIContent("AY")); + + } + + + // Second Glyph + GUI.enabled = isEditingEnabled; + if (isSelectable) + { + float labelWidth = GUI.skin.label.CalcSize(new GUIContent("ID: " + prop_SecondGlyphIndex.intValue)).x; + EditorGUI.LabelField(new Rect(position.width / 2 + 20 + (64 - labelWidth) / 2, position.y + 60, 64f, 18f), new GUIContent("ID: " + prop_SecondGlyphIndex.intValue + ""), style); + + GUI.enabled = isEditingEnabled; + EditorGUIUtility.labelWidth = 30f; + + rect = new Rect(position.width / 2 + 20 + 70, position.y + 10, (width - 70) - padding, 18); + EditorGUI.PropertyField(rect, prop_SecondGlyphValueRecord.FindPropertyRelative("m_XPlacement"), new GUIContent("OX:")); + + rect.y += 20; + EditorGUI.PropertyField(rect, prop_SecondGlyphValueRecord.FindPropertyRelative("m_YPlacement"), new GUIContent("OY:")); + + rect.y += 20; + EditorGUI.PropertyField(rect, prop_SecondGlyphValueRecord.FindPropertyRelative("m_XAdvance"), new GUIContent("AX:")); + + //rect.y += 20; + //EditorGUI.PropertyField(rect, prop_SecondGlyphAdjustment.FindPropertyRelative("m_YAdvance"), new GUIContent("AY")); + + DrawGlyph((uint)prop_SecondGlyphIndex.intValue, new Rect(position.width / 2 + 20, position.y, position.width, position.height), property); + } + else + { + rect = new Rect(position.width / 2 + 20, position.y, width / 2 * 0.8f - padding, 18); + EditorGUIUtility.labelWidth = 40f; + + // Second Character Lookup + GUI.SetNextControlName("SecondCharacterField"); + EditorGUI.BeginChangeCheck(); + string secondCharacter = EditorGUI.TextField(rect, s_CharacterTextFieldLabel, m_SecondCharacter); + + if (GUI.GetNameOfFocusedControl() == "SecondCharacterField") + { + if (ValidateInput(secondCharacter)) + { + //Debug.Log("2nd Unicode value: [" + secondCharacter + "]"); + + uint unicode = GetUnicodeCharacter(secondCharacter); + + // Lookup glyph index + TMP_SerializedPropertyHolder propertyHolder = property.serializedObject.targetObject as TMP_SerializedPropertyHolder; + TMP_FontAsset fontAsset = propertyHolder.fontAsset; + if (fontAsset != null) + { + prop_SecondGlyphIndex.intValue = (int)fontAsset.GetGlyphIndex(unicode); + propertyHolder.secondCharacter = unicode; + } + } + } + + if (EditorGUI.EndChangeCheck()) + m_SecondCharacter = secondCharacter; + + // Second Glyph Index + rect.x += width / 2 * 0.8f; + + EditorGUIUtility.labelWidth = 25f; + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(rect, prop_SecondGlyphIndex, new GUIContent("ID:")); + if (EditorGUI.EndChangeCheck()) + { + + } + + GUI.enabled = isEditingEnabled; + EditorGUIUtility.labelWidth = 25f; + + rect = new Rect(position.width / 2 + 20, position.y + 20, width * 0.5f - padding, 18); + EditorGUI.PropertyField(rect, prop_SecondGlyphValueRecord.FindPropertyRelative("m_XPlacement"), new GUIContent("OX")); + + rect.x += width * 0.5f; + EditorGUI.PropertyField(rect, prop_SecondGlyphValueRecord.FindPropertyRelative("m_YPlacement"), new GUIContent("OY")); + + rect.x = position.width / 2 + 20; + rect.y += 20; + EditorGUI.PropertyField(rect, prop_SecondGlyphValueRecord.FindPropertyRelative("m_XAdvance"), new GUIContent("AX")); + + //rect.x += width * 0.5f; + //EditorGUI.PropertyField(rect, prop_SecondGlyphAdjustment.FindPropertyRelative("m_YAdvance"), new GUIContent("AY")); + } + + // Font Feature Lookup Flags + if (isSelectable) + { + EditorGUIUtility.labelWidth = 55f; + + rect.x = position.width - 255; + rect.y += 23; + rect.width = 270; // width - 70 - padding; + + FontFeatureLookupFlags flags = (FontFeatureLookupFlags)prop_FontFeatureLookupFlags.intValue; + + EditorGUI.BeginChangeCheck(); + flags = (FontFeatureLookupFlags)EditorGUI.EnumFlagsField(rect, new GUIContent("Options:"), flags); + if (EditorGUI.EndChangeCheck()) + { + prop_FontFeatureLookupFlags.intValue = (int)flags; + } + } + + } + + bool ValidateInput(string source) + { + int length = string.IsNullOrEmpty(source) ? 0 : source.Length; + + ////Filter out unwanted characters. + Event evt = Event.current; + + char c = evt.character; + + if (c != '\0') + { + switch (length) + { + case 0: + break; + case 1: + if (source != m_PreviousInput) + return true; + + if ((source[0] == '\\' && (c == 'u' || c == 'U')) == false) + evt.character = '\0'; + + break; + case 2: + case 3: + case 4: + case 5: + if ((c < '0' || c > '9') && (c < 'a' || c > 'f') && (c < 'A' || c > 'F')) + evt.character = '\0'; + break; + case 6: + case 7: + case 8: + case 9: + if (source[1] == 'u' || (c < '0' || c > '9') && (c < 'a' || c > 'f') && (c < 'A' || c > 'F')) + evt.character = '\0'; + + // Validate input + if (length == 6 && source[1] == 'u' && source != m_PreviousInput) + return true; + break; + case 10: + if (source != m_PreviousInput) + return true; + + evt.character = '\0'; + break; + } + } + + m_PreviousInput = source; + + return false; + } + + uint GetUnicodeCharacter (string source) + { + uint unicode; + + if (source.Length == 1) + unicode = source[0]; + else if (source.Length == 6) + unicode = (uint)TMP_TextUtilities.StringHexToInt(source.Replace("\\u", "")); + else + unicode = (uint)TMP_TextUtilities.StringHexToInt(source.Replace("\\U", "")); + + return unicode; + } + + void DrawGlyph(uint glyphIndex, Rect position, SerializedProperty property) + { + // Get a reference to the font asset + TMP_FontAsset fontAsset = property.serializedObject.targetObject as TMP_FontAsset; + + if (fontAsset == null) + return; + + Glyph glyph; + + // Check if glyph is present in the atlas texture. + if (!fontAsset.glyphLookupTable.TryGetValue(glyphIndex, out glyph)) + return; + + // Get the atlas index of the glyph and lookup its atlas texture + int atlasIndex = glyph.atlasIndex; + Texture2D atlasTexture = fontAsset.atlasTextures.Length > atlasIndex ? fontAsset.atlasTextures[atlasIndex] : null; + + if (atlasTexture == null) + return; + + Material mat; + if (((GlyphRasterModes)fontAsset.atlasRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP) + { + mat = TMP_FontAssetEditor.internalBitmapMaterial; + + if (mat == null) + return; + + mat.mainTexture = atlasTexture; + } + else + { + mat = TMP_FontAssetEditor.internalSDFMaterial; + + if (mat == null) + return; + + mat.mainTexture = atlasTexture; + mat.SetFloat(ShaderUtilities.ID_GradientScale, fontAsset.atlasPadding + 1); + } + + // Draw glyph from atlas texture. + Rect glyphDrawPosition = new Rect(position.x, position.y + 2, 64, 60); + + GlyphRect glyphRect = glyph.glyphRect; + + int padding = fontAsset.atlasPadding; + + int glyphOriginX = glyphRect.x - padding; + int glyphOriginY = glyphRect.y - padding; + int glyphWidth = glyphRect.width + padding * 2; + int glyphHeight = glyphRect.height + padding * 2; + + float normalizedHeight = fontAsset.faceInfo.ascentLine - fontAsset.faceInfo.descentLine; + float scale = glyphDrawPosition.width / normalizedHeight; + + // Compute the normalized texture coordinates + Rect texCoords = new Rect((float)glyphOriginX / atlasTexture.width, (float)glyphOriginY / atlasTexture.height, (float)glyphWidth / atlasTexture.width, (float)glyphHeight / atlasTexture.height); + + if (Event.current.type == EventType.Repaint) + { + glyphDrawPosition.x += (glyphDrawPosition.width - glyphWidth * scale) / 2; + glyphDrawPosition.y += (glyphDrawPosition.height - glyphHeight * scale) / 2; + glyphDrawPosition.width = glyphWidth * scale; + glyphDrawPosition.height = glyphHeight * scale; + + // Could switch to using the default material of the font asset which would require passing scale to the shader. + Graphics.DrawTexture(glyphDrawPosition, atlasTexture, texCoords, 0, 0, 0, 0, new Color(1f, 1f, 1f), mat); + } + } + + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPairAdjustmentRecordPropertyDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPairAdjustmentRecordPropertyDrawer.cs.meta new file mode 100644 index 0000000..b95203f --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPairAdjustmentRecordPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d256fa541faf5d4409992c631adb98a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPropertyDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPropertyDrawer.cs new file mode 100644 index 0000000..d8d3700 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPropertyDrawer.cs @@ -0,0 +1,122 @@ +using UnityEngine; +using UnityEngine.TextCore; +using UnityEngine.TextCore.LowLevel; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(Glyph))] + public class TMP_GlyphPropertyDrawer : PropertyDrawer + { + private string k_ColorProperty = "_Color"; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty prop_GlyphIndex = property.FindPropertyRelative("m_Index"); + SerializedProperty prop_GlyphMetrics = property.FindPropertyRelative("m_Metrics"); + SerializedProperty prop_GlyphRect = property.FindPropertyRelative("m_GlyphRect"); + SerializedProperty prop_Scale = property.FindPropertyRelative("m_Scale"); + SerializedProperty prop_AtlasIndex = property.FindPropertyRelative("m_AtlasIndex"); + + GUIStyle style = new GUIStyle(EditorStyles.label); + style.richText = true; + + Rect rect = new Rect(position.x + 70, position.y, position.width, 49); + + float labelWidth = GUI.skin.label.CalcSize(new GUIContent("ID: " + prop_GlyphIndex.intValue)).x; + EditorGUI.LabelField(new Rect(position.x + (64 - labelWidth) / 2, position.y + 85, 64f, 18f), new GUIContent("ID: " + prop_GlyphIndex.intValue + ""), style); + //EditorGUIUtility.labelWidth = 22f; + //EditorGUI.DelayedIntField(new Rect(position.x + (64 - labelWidth) / 2, position.y + 89, 58f, 18f), prop_GlyphIndex, new GUIContent("ID:")); + + // We get Rect since a valid position may not be provided by the caller. + EditorGUI.PropertyField(new Rect(rect.x, rect.y, position.width, 49), prop_GlyphRect); + + rect.y += 45; + EditorGUI.PropertyField(rect, prop_GlyphMetrics); + + EditorGUIUtility.labelWidth = 40f; + EditorGUI.PropertyField(new Rect(rect.x, rect.y + 65, 75, 18), prop_Scale, new GUIContent("Scale:")); // new GUIContent("Scale: " + prop_Scale.floatValue + ""), style); + + EditorGUIUtility.labelWidth = 74f; + EditorGUI.PropertyField(new Rect(rect.x + 85, rect.y + 65, 95, 18), prop_AtlasIndex, new GUIContent("Atlas Index:")); // new GUIContent("Atlas Index: " + prop_AtlasIndex.intValue + ""), style); + + DrawGlyph(position, property); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return 130f; + } + + void DrawGlyph(Rect position, SerializedProperty property) + { + // Get a reference to the sprite texture + TMP_FontAsset fontAsset = property.serializedObject.targetObject as TMP_FontAsset; + + if (fontAsset == null) + return; + + // Get reference to atlas texture. + int atlasIndex = property.FindPropertyRelative("m_AtlasIndex").intValue; + Texture2D atlasTexture = fontAsset.atlasTextures.Length > atlasIndex ? fontAsset.atlasTextures[atlasIndex] : null; + + if (atlasTexture == null) + return; + + Material mat; + if (((GlyphRasterModes)fontAsset.atlasRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP) + { + mat = TMP_FontAssetEditor.internalBitmapMaterial; + + if (mat == null) + return; + + mat.mainTexture = atlasTexture; + mat.SetColor(k_ColorProperty, Color.white); + } + else + { + mat = TMP_FontAssetEditor.internalSDFMaterial; + + if (mat == null) + return; + + mat.mainTexture = atlasTexture; + mat.SetFloat(ShaderUtilities.ID_GradientScale, fontAsset.atlasPadding + 1); + } + + // Draw glyph from atlas texture. + Rect glyphDrawPosition = new Rect(position.x, position.y + 2, 64, 80); + + SerializedProperty glyphRectProperty = property.FindPropertyRelative("m_GlyphRect"); + + int padding = fontAsset.atlasPadding; + + int glyphOriginX = glyphRectProperty.FindPropertyRelative("m_X").intValue - padding; + int glyphOriginY = glyphRectProperty.FindPropertyRelative("m_Y").intValue - padding; + int glyphWidth = glyphRectProperty.FindPropertyRelative("m_Width").intValue + padding * 2; + int glyphHeight = glyphRectProperty.FindPropertyRelative("m_Height").intValue + padding * 2; + + float normalizedHeight = fontAsset.faceInfo.ascentLine - fontAsset.faceInfo.descentLine; + float scale = glyphDrawPosition.width / normalizedHeight; + + // Compute the normalized texture coordinates + Rect texCoords = new Rect((float)glyphOriginX / atlasTexture.width, (float)glyphOriginY / atlasTexture.height, (float)glyphWidth / atlasTexture.width, (float)glyphHeight / atlasTexture.height); + + if (Event.current.type == EventType.Repaint) + { + glyphDrawPosition.x += (glyphDrawPosition.width - glyphWidth * scale) / 2; + glyphDrawPosition.y += (glyphDrawPosition.height - glyphHeight * scale) / 2; + glyphDrawPosition.width = glyphWidth * scale; + glyphDrawPosition.height = glyphHeight * scale; + + // Could switch to using the default material of the font asset which would require passing scale to the shader. + Graphics.DrawTexture(glyphDrawPosition, atlasTexture, texCoords, 0, 0, 0, 0, new Color(1f, 1f, 1f), mat); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPropertyDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPropertyDrawer.cs.meta new file mode 100644 index 0000000..ce08447 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_GlyphPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4777500b5da6094e956c3d4f04de4db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_InputFieldEditor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_InputFieldEditor.cs new file mode 100644 index 0000000..ec481d7 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_InputFieldEditor.cs @@ -0,0 +1,283 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEditor; +using UnityEditor.UI; +using UnityEditor.AnimatedValues; + + +namespace TMPro.EditorUtilities +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(TMP_InputField), true)] + public class TMP_InputFieldEditor : SelectableEditor + { + private struct m_foldout + { // Track Inspector foldout panel states, globally. + public static bool textInput = true; + public static bool fontSettings = true; + public static bool extraSettings = true; + //public static bool shadowSetting = false; + //public static bool materialEditor = true; + } + + SerializedProperty m_TextViewport; + SerializedProperty m_TextComponent; + SerializedProperty m_Text; + SerializedProperty m_ContentType; + SerializedProperty m_LineType; + SerializedProperty m_LineLimit; + SerializedProperty m_InputType; + SerializedProperty m_CharacterValidation; + SerializedProperty m_InputValidator; + SerializedProperty m_RegexValue; + SerializedProperty m_KeyboardType; + SerializedProperty m_CharacterLimit; + SerializedProperty m_CaretBlinkRate; + SerializedProperty m_CaretWidth; + SerializedProperty m_CaretColor; + SerializedProperty m_CustomCaretColor; + SerializedProperty m_SelectionColor; + SerializedProperty m_HideMobileKeyboard; + SerializedProperty m_HideMobileInput; + SerializedProperty m_Placeholder; + SerializedProperty m_VerticalScrollbar; + SerializedProperty m_ScrollbarScrollSensitivity; + SerializedProperty m_OnValueChanged; + SerializedProperty m_OnEndEdit; + SerializedProperty m_OnSelect; + SerializedProperty m_OnDeselect; + SerializedProperty m_ReadOnly; + SerializedProperty m_RichText; + SerializedProperty m_RichTextEditingAllowed; + SerializedProperty m_ResetOnDeActivation; + SerializedProperty m_RestoreOriginalTextOnEscape; + + SerializedProperty m_OnFocusSelectAll; + SerializedProperty m_GlobalPointSize; + SerializedProperty m_GlobalFontAsset; + + AnimBool m_CustomColor; + + //TMP_InputValidator m_ValidationScript; + + protected override void OnEnable() + { + base.OnEnable(); + + m_TextViewport = serializedObject.FindProperty("m_TextViewport"); + m_TextComponent = serializedObject.FindProperty("m_TextComponent"); + m_Text = serializedObject.FindProperty("m_Text"); + m_ContentType = serializedObject.FindProperty("m_ContentType"); + m_LineType = serializedObject.FindProperty("m_LineType"); + m_LineLimit = serializedObject.FindProperty("m_LineLimit"); + m_InputType = serializedObject.FindProperty("m_InputType"); + m_CharacterValidation = serializedObject.FindProperty("m_CharacterValidation"); + m_InputValidator = serializedObject.FindProperty("m_InputValidator"); + m_RegexValue = serializedObject.FindProperty("m_RegexValue"); + m_KeyboardType = serializedObject.FindProperty("m_KeyboardType"); + m_CharacterLimit = serializedObject.FindProperty("m_CharacterLimit"); + m_CaretBlinkRate = serializedObject.FindProperty("m_CaretBlinkRate"); + m_CaretWidth = serializedObject.FindProperty("m_CaretWidth"); + m_CaretColor = serializedObject.FindProperty("m_CaretColor"); + m_CustomCaretColor = serializedObject.FindProperty("m_CustomCaretColor"); + m_SelectionColor = serializedObject.FindProperty("m_SelectionColor"); + + m_HideMobileKeyboard = serializedObject.FindProperty("m_HideSoftKeyboard"); + m_HideMobileInput = serializedObject.FindProperty("m_HideMobileInput"); + + m_Placeholder = serializedObject.FindProperty("m_Placeholder"); + m_VerticalScrollbar = serializedObject.FindProperty("m_VerticalScrollbar"); + m_ScrollbarScrollSensitivity = serializedObject.FindProperty("m_ScrollSensitivity"); + + m_OnValueChanged = serializedObject.FindProperty("m_OnValueChanged"); + m_OnEndEdit = serializedObject.FindProperty("m_OnEndEdit"); + m_OnSelect = serializedObject.FindProperty("m_OnSelect"); + m_OnDeselect = serializedObject.FindProperty("m_OnDeselect"); + m_ReadOnly = serializedObject.FindProperty("m_ReadOnly"); + m_RichText = serializedObject.FindProperty("m_RichText"); + m_RichTextEditingAllowed = serializedObject.FindProperty("m_isRichTextEditingAllowed"); + m_ResetOnDeActivation = serializedObject.FindProperty("m_ResetOnDeActivation"); + m_RestoreOriginalTextOnEscape = serializedObject.FindProperty("m_RestoreOriginalTextOnEscape"); + + m_OnFocusSelectAll = serializedObject.FindProperty("m_OnFocusSelectAll"); + m_GlobalPointSize = serializedObject.FindProperty("m_GlobalPointSize"); + m_GlobalFontAsset = serializedObject.FindProperty("m_GlobalFontAsset"); + + m_CustomColor = new AnimBool(m_CustomCaretColor.boolValue); + m_CustomColor.valueChanged.AddListener(Repaint); + } + + protected override void OnDisable() + { + base.OnDisable(); + m_CustomColor.valueChanged.RemoveListener(Repaint); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + base.OnInspectorGUI(); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(m_TextViewport); + + EditorGUILayout.PropertyField(m_TextComponent); + + TextMeshProUGUI text = null; + if (m_TextComponent != null && m_TextComponent.objectReferenceValue != null) + { + text = m_TextComponent.objectReferenceValue as TextMeshProUGUI; + //if (text.supportRichText) + //{ + // EditorGUILayout.HelpBox("Using Rich Text with input is unsupported.", MessageType.Warning); + //} + } + + EditorGUI.BeginDisabledGroup(m_TextComponent == null || m_TextComponent.objectReferenceValue == null); + + // TEXT INPUT BOX + EditorGUILayout.PropertyField(m_Text); + + // INPUT FIELD SETTINGS + #region INPUT FIELD SETTINGS + + m_foldout.fontSettings = EditorGUILayout.Foldout(m_foldout.fontSettings, "Input Field Settings", true, TMP_UIStyleManager.boldFoldout); + + if (m_foldout.fontSettings) + { + EditorGUI.indentLevel++; + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_GlobalFontAsset, new GUIContent("Font Asset", "Set the Font Asset for both Placeholder and Input Field text object.")); + if (EditorGUI.EndChangeCheck()) + { + TMP_InputField inputField = target as TMP_InputField; + inputField.SetGlobalFontAsset(m_GlobalFontAsset.objectReferenceValue as TMP_FontAsset); + } + + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_GlobalPointSize, new GUIContent("Point Size", "Set the point size of both Placeholder and Input Field text object.")); + if (EditorGUI.EndChangeCheck()) + { + TMP_InputField inputField = target as TMP_InputField; + inputField.SetGlobalPointSize(m_GlobalPointSize.floatValue); + } + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_CharacterLimit); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(m_ContentType); + if (!m_ContentType.hasMultipleDifferentValues) + { + EditorGUI.indentLevel++; + + if (m_ContentType.enumValueIndex == (int)TMP_InputField.ContentType.Standard || + m_ContentType.enumValueIndex == (int)TMP_InputField.ContentType.Autocorrected || + m_ContentType.enumValueIndex == (int)TMP_InputField.ContentType.Custom) + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_LineType); + if (EditorGUI.EndChangeCheck()) + { + if (text != null) + { + if (m_LineType.enumValueIndex == (int)TMP_InputField.LineType.SingleLine) + text.enableWordWrapping = false; + else + { + text.enableWordWrapping = true; + } + } + } + + if (m_LineType.enumValueIndex != (int)TMP_InputField.LineType.SingleLine) + { + EditorGUILayout.PropertyField(m_LineLimit); + } + } + + if (m_ContentType.enumValueIndex == (int)TMP_InputField.ContentType.Custom) + { + EditorGUILayout.PropertyField(m_InputType); + EditorGUILayout.PropertyField(m_KeyboardType); + EditorGUILayout.PropertyField(m_CharacterValidation); + if (m_CharacterValidation.enumValueIndex == (int)TMP_InputField.CharacterValidation.Regex) + { + EditorGUILayout.PropertyField(m_RegexValue); + } + else if (m_CharacterValidation.enumValueIndex == (int)TMP_InputField.CharacterValidation.CustomValidator) + { + EditorGUILayout.PropertyField(m_InputValidator); + } + } + + EditorGUI.indentLevel--; + } + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(m_Placeholder); + EditorGUILayout.PropertyField(m_VerticalScrollbar); + + if (m_VerticalScrollbar.objectReferenceValue != null) + EditorGUILayout.PropertyField(m_ScrollbarScrollSensitivity); + + EditorGUILayout.PropertyField(m_CaretBlinkRate); + EditorGUILayout.PropertyField(m_CaretWidth); + + EditorGUILayout.PropertyField(m_CustomCaretColor); + + m_CustomColor.target = m_CustomCaretColor.boolValue; + + if (EditorGUILayout.BeginFadeGroup(m_CustomColor.faded)) + { + EditorGUILayout.PropertyField(m_CaretColor); + } + EditorGUILayout.EndFadeGroup(); + + EditorGUILayout.PropertyField(m_SelectionColor); + + EditorGUI.indentLevel--; + } + #endregion + + + // CONTROL SETTINGS + #region CONTROL SETTINGS + m_foldout.extraSettings = EditorGUILayout.Foldout(m_foldout.extraSettings, "Control Settings", true, TMP_UIStyleManager.boldFoldout); + + if (m_foldout.extraSettings) + { + EditorGUI.indentLevel++; + + EditorGUILayout.PropertyField(m_OnFocusSelectAll, new GUIContent("OnFocus - Select All", "Should all the text be selected when the Input Field is selected.")); + EditorGUILayout.PropertyField(m_ResetOnDeActivation, new GUIContent("Reset On DeActivation", "Should the Text and Caret position be reset when Input Field is DeActivated.")); + EditorGUILayout.PropertyField(m_RestoreOriginalTextOnEscape, new GUIContent("Restore On ESC Key", "Should the original text be restored when pressing ESC.")); + EditorGUILayout.PropertyField(m_HideMobileKeyboard, new GUIContent("Hide Soft Keyboard", "Controls the visibility of the mobile virtual keyboard.")); + EditorGUILayout.PropertyField(m_HideMobileInput, new GUIContent("Hide Mobile Input", "Controls the visibility of the editable text field above the mobile virtual keyboard.")); + EditorGUILayout.PropertyField(m_ReadOnly); + EditorGUILayout.PropertyField(m_RichText); + EditorGUILayout.PropertyField(m_RichTextEditingAllowed, new GUIContent("Allow Rich Text Editing")); + + EditorGUI.indentLevel--; + } + #endregion + + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(m_OnValueChanged); + EditorGUILayout.PropertyField(m_OnEndEdit); + EditorGUILayout.PropertyField(m_OnSelect); + EditorGUILayout.PropertyField(m_OnDeselect); + + EditorGUI.EndDisabledGroup(); + + serializedObject.ApplyModifiedProperties(); + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_InputFieldEditor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_InputFieldEditor.cs.meta new file mode 100644 index 0000000..eeb62d8 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_InputFieldEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: aa160f27c3fe4052a5850e21108811b6 +timeCreated: 1457861621 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_MeshRendererEditor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_MeshRendererEditor.cs new file mode 100644 index 0000000..83d19f8 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_MeshRendererEditor.cs @@ -0,0 +1,76 @@ +// When enabled, allows setting the material by dropping a material onto the MeshRenderer inspector component. +// The drawback is that the MeshRenderer inspector will not have properties for light probes, so if you need light probe support, do not enable this. +//#define ALLOW_MESHRENDERER_MATERIAL_DRAG_N_DROP + +using UnityEngine; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + // Disabled for compatibility reason as lightprobe setup isn't supported due to inability to inherit from MeshRendererEditor class +#if ALLOW_MESHRENDERER_MATERIAL_DRAG_N_DROP + [CanEditMultipleObjects] + [CustomEditor(typeof(MeshRenderer))] + public class TMP_MeshRendererEditor : Editor + { + private SerializedProperty m_Materials; + + void OnEnable() + { + m_Materials = serializedObject.FindProperty("m_Materials"); + } + + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Get a reference to the current material. + SerializedProperty material_prop = m_Materials.GetArrayElementAtIndex(0); + Material currentMaterial = material_prop.objectReferenceValue as Material; + + EditorGUI.BeginChangeCheck(); + base.OnInspectorGUI(); + if (EditorGUI.EndChangeCheck()) + { + material_prop = m_Materials.GetArrayElementAtIndex(0); + + TMP_FontAsset newFontAsset = null; + Material newMaterial = null; + + if (material_prop != null) + newMaterial = material_prop.objectReferenceValue as Material; + + // Check if the new material is referencing a different font atlas texture. + if (newMaterial != null && currentMaterial.GetInstanceID() != newMaterial.GetInstanceID()) + { + // Search for the Font Asset matching the new font atlas texture. + newFontAsset = TMP_EditorUtility.FindMatchingFontAsset(newMaterial); + } + + + GameObject[] objects = Selection.gameObjects; + + for (int i = 0; i < objects.Length; i++) + { + // Assign new font asset + if (newFontAsset != null) + { + TMP_Text textComponent = objects[i].GetComponent(); + + if (textComponent != null) + { + Undo.RecordObject(textComponent, "Font Asset Change"); + textComponent.font = newFontAsset; + } + } + + TMPro_EventManager.ON_DRAG_AND_DROP_MATERIAL_CHANGED(objects[i], currentMaterial, newMaterial); + } + } + } + } +#endif +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_MeshRendererEditor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_MeshRendererEditor.cs.meta new file mode 100644 index 0000000..d6b133f --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_MeshRendererEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6d437b997e074079b4b2f6e395394f4b +timeCreated: 1462864011 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PackageUtilities.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PackageUtilities.cs new file mode 100644 index 0000000..9288111 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PackageUtilities.cs @@ -0,0 +1,565 @@ +using UnityEngine; +using UnityEditor; +using System; +using System.IO; +using System.Linq; +using System.Collections; +using System.Collections.Generic; +using System.Threading; +using TMPro.EditorUtilities; + + +namespace TMPro +{ + // Suppressing warnings related to the use of private structures which are confusing the compiler as these data structures are used by .json files. + #pragma warning disable 0649 + + /// + /// Data structure containing the target and replacement fileIDs and GUIDs which will require remapping from previous version of TextMesh Pro to the new TextMesh Pro UPM package. + /// + [System.Serializable] + struct AssetConversionRecord + { + public string referencedResource; + public string target; + public string replacement; + } + + + /// + /// Data structure containing a list of target and replacement fileID and GUID requiring remapping from previous versions of TextMesh Pro to the new TextMesh Pro UPM package. + /// This data structure is populated with the data contained in the PackageConversionData.json file included in the package. + /// + [System.Serializable] + class AssetConversionData + { + public List assetRecords; + } + + + public class TMP_ProjectConversionUtility : EditorWindow + { + // Create Project Files GUID Remapping Tool window + [MenuItem("Window/TextMeshPro/Project Files GUID Remapping Tool", false, 2100)] + static void ShowConverterWindow() + { + var window = GetWindow(); + window.titleContent = new GUIContent("Conversion Tool"); + window.Focus(); + } + + private static HashSet m_IgnoreAssetTypes = new HashSet() + { + typeof(AnimatorOverrideController), + typeof(AudioClip), + typeof(AvatarMask), + typeof(ComputeShader), + typeof(Cubemap), + typeof(DefaultAsset), + typeof(Flare), + typeof(Font), + typeof(GUISkin), + typeof(HumanTemplate), + typeof(LightingDataAsset), + typeof(Mesh), + typeof(MonoScript), + typeof(PhysicMaterial), + typeof(PhysicsMaterial2D), + typeof(RenderTexture), + typeof(Shader), + typeof(TerrainData), + typeof(TextAsset), + typeof(Texture2D), + typeof(Texture2DArray), + typeof(Texture3D), + typeof(UnityEditorInternal.AssemblyDefinitionAsset), + typeof(UnityEngine.AI.NavMeshData), + typeof(UnityEngine.Tilemaps.Tile), + typeof(UnityEngine.U2D.SpriteAtlas), + typeof(UnityEngine.Video.VideoClip), + }; + + /// + /// + /// + struct AssetModificationRecord + { + public string assetFilePath; + public string assetDataFile; + } + + struct AssetFileRecord + { + public string assetFilePath; + public string assetMetaFilePath; + + public AssetFileRecord(string filePath, string metaFilePath) + { + this.assetFilePath = filePath; + this.assetMetaFilePath = metaFilePath; + } + } + + private static string m_ProjectPath; + private static string m_ProjectFolderToScan; + private static bool m_IsAlreadyScanningProject; + private static bool m_CancelScanProcess; + private static string k_ProjectScanReportDefaultText = "Project Scan Results\n"; + private static string k_ProjectScanLabelPrefix = "Scanning: "; + private static string m_ProjectScanResults = string.Empty; + private static Vector2 m_ProjectScanResultScrollPosition; + private static float m_ProgressPercentage = 0; + + private static int m_ScanningTotalFiles; + private static int m_RemainingFilesToScan; + private static int m_ScanningCurrentFileIndex; + private static string m_ScanningCurrentFileName; + + private static AssetConversionData m_ConversionData; + + private static List m_ModifiedAssetList = new List(); + + + void OnEnable() + { + // Set Editor Window Size + SetEditorWindowSize(); + + m_ProjectScanResults = k_ProjectScanReportDefaultText; + } + + + void OnGUI() + { + GUILayout.BeginVertical(); + { + // Scan project files and resources + GUILayout.BeginVertical(EditorStyles.helpBox); + { + GUILayout.Label("Scan Project Files", EditorStyles.boldLabel); + GUILayout.Label("Press the Scan Project Files button to begin scanning your project for files & resources that were created with a previous version of TextMesh Pro.", TMP_UIStyleManager.label); + GUILayout.Space(10f); + GUILayout.Label("Project folder to be scanned. Example \"Assets/TextMesh Pro\""); + m_ProjectFolderToScan = EditorGUILayout.TextField("Folder Path: Assets/", m_ProjectFolderToScan); + GUILayout.Space(5f); + + GUI.enabled = m_IsAlreadyScanningProject == false ? true : false; + if (GUILayout.Button("Scan Project Files")) + { + m_CancelScanProcess = false; + + // Make sure Asset Serialization mode is set to ForceText and Version Control mode to Visible Meta Files. + if (CheckProjectSerializationAndSourceControlModes() == true) + { + m_ProjectPath = Path.GetFullPath("Assets/.."); + TMP_EditorCoroutine.StartCoroutine(ScanProjectFiles()); + } + else + { + EditorUtility.DisplayDialog("Project Settings Change Required", "In menu options \"Edit - Project Settings - Editor\", please change Asset Serialization Mode to ForceText and Source Control Mode to Visible Meta Files.", "OK", string.Empty); + } + } + GUI.enabled = true; + + // Display progress bar + Rect rect = GUILayoutUtility.GetRect(0f, 20f, GUILayout.ExpandWidth(true)); + EditorGUI.ProgressBar(rect, m_ProgressPercentage, "Scan Progress (" + m_ScanningCurrentFileIndex + "/" + m_ScanningTotalFiles + ")"); + + // Display cancel button and name of file currently being scanned. + if (m_IsAlreadyScanningProject) + { + Rect cancelRect = new Rect(rect.width - 20, rect.y + 2, 20, 16); + if (GUI.Button(cancelRect, "X")) + { + m_CancelScanProcess = true; + } + GUILayout.Label(k_ProjectScanLabelPrefix + m_ScanningCurrentFileName, TMP_UIStyleManager.label); + } + else + GUILayout.Label(string.Empty); + + GUILayout.Space(5); + + // Creation Feedback + GUILayout.BeginVertical(TMP_UIStyleManager.textAreaBoxWindow, GUILayout.ExpandHeight(true)); + { + m_ProjectScanResultScrollPosition = EditorGUILayout.BeginScrollView(m_ProjectScanResultScrollPosition, GUILayout.ExpandHeight(true)); + EditorGUILayout.LabelField(m_ProjectScanResults, TMP_UIStyleManager.label); + EditorGUILayout.EndScrollView(); + } + GUILayout.EndVertical(); + GUILayout.Space(5f); + } + GUILayout.EndVertical(); + + // Scan project files and resources + GUILayout.BeginVertical(EditorStyles.helpBox); + { + GUILayout.Label("Save Modified Project Files", EditorStyles.boldLabel); + GUILayout.Label("Pressing the Save Modified Project Files button will update the files in the Project Scan Results listed above. Please make sure that you have created a backup of your project first as these file modifications are permanent and cannot be undone.", TMP_UIStyleManager.label); + GUILayout.Space(5f); + + GUI.enabled = m_IsAlreadyScanningProject == false && m_ModifiedAssetList.Count > 0 ? true : false; + if (GUILayout.Button("Save Modified Project Files")) + { + UpdateProjectFiles(); + } + GUILayout.Space(10f); + } + GUILayout.EndVertical(); + + } + GUILayout.EndVertical(); + GUILayout.Space(5f); + } + + void OnInspectorUpdate() + { + Repaint(); + } + + + /// + /// Limits the minimum size of the editor window. + /// + void SetEditorWindowSize() + { + EditorWindow editorWindow = this; + + Vector2 currentWindowSize = editorWindow.minSize; + + editorWindow.minSize = new Vector2(Mathf.Max(640, currentWindowSize.x), Mathf.Max(420, currentWindowSize.y)); + } + + + /// + /// + /// + /// + /// + private static bool ShouldIgnoreFile(string filePath) + { + string fileExtension = Path.GetExtension(filePath); + Type fileType = AssetDatabase.GetMainAssetTypeAtPath(filePath); + + if (m_IgnoreAssetTypes.Contains(fileType)) + return true; + + // Exclude FBX + if (fileType == typeof(GameObject) && (fileExtension.ToLower() == ".fbx" || fileExtension.ToLower() == ".blend")) + return true; + + return false; + } + + + private IEnumerator ScanProjectFiles() + { + m_IsAlreadyScanningProject = true; + string packageFullPath = EditorUtilities.TMP_EditorUtility.packageFullPath; + + // List containing assets that have been modified. + m_ProjectScanResults = k_ProjectScanReportDefaultText; + m_ModifiedAssetList.Clear(); + m_ProgressPercentage = 0; + + // Read Conversion Data from Json file. + if (m_ConversionData == null) + m_ConversionData = JsonUtility.FromJson(File.ReadAllText(packageFullPath + "/PackageConversionData.json")); + + // Get list of GUIDs for assets that might contain references to previous GUIDs that require updating. + string searchFolder = string.IsNullOrEmpty(m_ProjectFolderToScan) ? "Assets" : ("Assets/" + m_ProjectFolderToScan); + string[] guids = AssetDatabase.FindAssets("t:Object", new string[] { searchFolder }).Distinct().ToArray(); + + k_ProjectScanLabelPrefix = "Phase 1 - Filtering: "; + m_ScanningTotalFiles = guids.Length; + m_ScanningCurrentFileIndex = 0; + + List projectFilesToScan = new List(); + + foreach (var guid in guids) + { + if (m_CancelScanProcess) + break; + + string assetFilePath = AssetDatabase.GUIDToAssetPath(guid); + + m_ScanningCurrentFileIndex += 1; + m_ScanningCurrentFileName = assetFilePath; + m_ProgressPercentage = (float)m_ScanningCurrentFileIndex / m_ScanningTotalFiles; + + // Filter out file types we have no interest in searching + if (ShouldIgnoreFile(assetFilePath)) + continue; + + string assetMetaFilePath = AssetDatabase.GetTextMetaFilePathFromAssetPath(assetFilePath); + + projectFilesToScan.Add(new AssetFileRecord(assetFilePath, assetMetaFilePath)); + + yield return null; + } + + m_RemainingFilesToScan = m_ScanningTotalFiles = projectFilesToScan.Count; + + k_ProjectScanLabelPrefix = "Phase 2 - Scanning: "; + + for (int i = 0; i < m_ScanningTotalFiles; i++) + { + if (m_CancelScanProcess) + break; + + AssetFileRecord fileRecord = projectFilesToScan[i]; + + ThreadPool.QueueUserWorkItem(Task => + { + ScanProjectFileAsync(fileRecord); + + m_ScanningCurrentFileName = fileRecord.assetFilePath; + + int completedScans = m_ScanningTotalFiles - Interlocked.Decrement(ref m_RemainingFilesToScan); + + m_ScanningCurrentFileIndex = completedScans; + m_ProgressPercentage = (float)completedScans / m_ScanningTotalFiles; + }); + + if (i % 64 == 0) + yield return new WaitForSeconds(2.0f); + + } + + while (m_RemainingFilesToScan > 0 && !m_CancelScanProcess) + yield return null; + + m_IsAlreadyScanningProject = false; + m_ScanningCurrentFileName = string.Empty; + } + + + static void ScanProjectFileAsync(AssetFileRecord fileRecord) + { + if (m_CancelScanProcess) + return; + + // Read the asset data file + string assetDataFile = string.Empty; + bool hasFileChanged = false; + + try + { + assetDataFile = File.ReadAllText(m_ProjectPath + "/" + fileRecord.assetFilePath); + } + catch + { + // Continue to the next asset if we can't read the current one. + return; + } + + // Read the asset meta data file + string assetMetaFile = File.ReadAllText(m_ProjectPath + "/" + fileRecord.assetMetaFilePath); + bool hasMetaFileChanges = false; + + foreach (AssetConversionRecord record in m_ConversionData.assetRecords) + { + if (assetDataFile.Contains(record.target)) + { + hasFileChanged = true; + + assetDataFile = assetDataFile.Replace(record.target, record.replacement); + } + + //// Check meta file + if (assetMetaFile.Contains(record.target)) + { + hasMetaFileChanges = true; + + assetMetaFile = assetMetaFile.Replace(record.target, record.replacement); + } + } + + if (hasFileChanged) + { + AssetModificationRecord modifiedAsset; + modifiedAsset.assetFilePath = fileRecord.assetFilePath; + modifiedAsset.assetDataFile = assetDataFile; + + m_ModifiedAssetList.Add(modifiedAsset); + + m_ProjectScanResults += fileRecord.assetFilePath + "\n"; + } + + if (hasMetaFileChanges) + { + AssetModificationRecord modifiedAsset; + modifiedAsset.assetFilePath = fileRecord.assetMetaFilePath; + modifiedAsset.assetDataFile = assetMetaFile; + + m_ModifiedAssetList.Add(modifiedAsset); + + m_ProjectScanResults += fileRecord.assetMetaFilePath + "\n"; + } + } + + + /// + /// + /// + private static void ResetScanProcess() + { + m_IsAlreadyScanningProject = false; + m_ScanningCurrentFileName = string.Empty; + m_ProgressPercentage = 0; + m_ScanningCurrentFileIndex = 0; + m_ScanningTotalFiles = 0; + } + + + /// + /// + /// + private static void UpdateProjectFiles() + { + // Make sure Asset Serialization mode is set to ForceText with Visible Meta Files. + CheckProjectSerializationAndSourceControlModes(); + + string projectPath = Path.GetFullPath("Assets/.."); + + // Display dialogue to show user a list of project files that will be modified upon their consent. + if (EditorUtility.DisplayDialog("Save Modified Asset(s)?", "Are you sure you want to save all modified assets?", "YES", "NO")) + { + for (int i = 0; i < m_ModifiedAssetList.Count; i++) + { + // Make sure all file streams that might have been opened by Unity are closed. + //AssetDatabase.ReleaseCachedFileHandles(); + + //Debug.Log("Writing asset file [" + m_ModifiedAssetList[i].assetFilePath + "]."); + + File.WriteAllText(projectPath + "/" + m_ModifiedAssetList[i].assetFilePath, m_ModifiedAssetList[i].assetDataFile); + } + } + + AssetDatabase.Refresh(); + + m_ProgressPercentage = 0; + m_ProjectScanResults = k_ProjectScanReportDefaultText; + } + + + /// + /// Check project Asset Serialization and Source Control modes + /// + private static bool CheckProjectSerializationAndSourceControlModes() + { + // Check Project Asset Serialization and Visible Meta Files mode. + if (EditorSettings.serializationMode != SerializationMode.ForceText || EditorSettings.externalVersionControl != "Visible Meta Files") + { + return false; + } + + return true; + } + } + + + + public class TMP_PackageUtilities : Editor + { + + enum SaveAssetDialogueOptions { Unset = 0, Save = 1, SaveAll = 2, DoNotSave = 3 }; + + private static SerializationMode m_ProjectAssetSerializationMode; + private static string m_ProjectExternalVersionControl; + + struct AssetRemappingRecord + { + public string oldGuid; + public string newGuid; + public string assetPath; + } + + struct AssetModificationRecord + { + public string assetFilePath; + public string assetDataFile; + } + + /// + /// + /// + [MenuItem("Window/TextMeshPro/Import TMP Essential Resources", false, 2050)] + public static void ImportProjectResourcesMenu() + { + ImportEssentialResources(); + } + + + /// + /// + /// + [MenuItem("Window/TextMeshPro/Import TMP Examples and Extras", false, 2051)] + public static void ImportExamplesContentMenu() + { + ImportExamplesAndExtras(); + } + + + private static void GetVersionInfo() + { + string version = TMP_Settings.version; + Debug.Log("The version of this TextMesh Pro UPM package is (" + version + ")."); + } + + + /// + /// + /// + private static void ImportExamplesAndExtras() + { + string packageFullPath = TMP_EditorUtility.packageFullPath; + + AssetDatabase.ImportPackage(packageFullPath + "/Package Resources/TMP Examples & Extras.unitypackage", true); + } + + private static string k_SettingsFilePath; + private static byte[] k_SettingsBackup; + + /// + /// + /// + private static void ImportEssentialResources() + { + // Check if the TMP Settings asset is already present in the project. + string[] settings = AssetDatabase.FindAssets("t:TMP_Settings"); + + if (settings.Length > 0) + { + // Save assets just in case the TMP Setting were modified before import. + AssetDatabase.SaveAssets(); + + // Copy existing TMP Settings asset to a byte[] + k_SettingsFilePath = AssetDatabase.GUIDToAssetPath(settings[0]); + k_SettingsBackup = File.ReadAllBytes(k_SettingsFilePath); + + RegisterResourceImportCallback(); + } + + string packageFullPath = TMP_EditorUtility.packageFullPath; + + AssetDatabase.ImportPackage(packageFullPath + "/Package Resources/TMP Essential Resources.unitypackage", true); + } + + private static void RegisterResourceImportCallback() + { + AssetDatabase.importPackageCompleted += ImportCallback; + } + + private static void ImportCallback(string packageName) + { + // Restore backup of TMP Settings from byte[] + File.WriteAllBytes(k_SettingsFilePath, k_SettingsBackup); + + AssetDatabase.Refresh(); + + AssetDatabase.importPackageCompleted -= ImportCallback; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PackageUtilities.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PackageUtilities.cs.meta new file mode 100644 index 0000000..e03778c --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PackageUtilities.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68eedd4e5b33b37429c02c4add0036fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PostBuildProcessHandler.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PostBuildProcessHandler.cs new file mode 100644 index 0000000..a8b800a --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PostBuildProcessHandler.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using UnityEditor; +using UnityEditor.Callbacks; +using System.IO; + + +namespace TMPro +{ + public class TMP_PostBuildProcessHandler + { + [PostProcessBuildAttribute(10000)] + public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) + { + // Check if TMP Essential Resource are present in user project. + if (target == BuildTarget.iOS && File.Exists(GetEssentialProjectResourcesPath() + "/Resources/TMP Settings.asset") && TMP_Settings.enableEmojiSupport) + { + string file = Path.Combine(pathToBuiltProject, "Classes/UI/Keyboard.mm"); + string content = File.ReadAllText(file); + content = content.Replace("FILTER_EMOJIS_IOS_KEYBOARD 1", "FILTER_EMOJIS_IOS_KEYBOARD 0"); + File.WriteAllText(file, content); + } + } + + + private static string GetEssentialProjectResourcesPath() + { + // Find the potential location of the TextMesh Pro folder in the user project. + string projectPath = Path.GetFullPath("Assets/.."); + if (Directory.Exists(projectPath)) + { + // Search for default location of TMP Essential Resources + if (Directory.Exists(projectPath + "/Assets/TextMesh Pro/Resources")) + { + return "Assets/TextMesh Pro"; + } + + // Search for potential alternative locations in the user project + string[] matchingPaths = Directory.GetDirectories(projectPath, "TextMesh Pro", SearchOption.AllDirectories); + projectPath = ValidateLocation(matchingPaths, projectPath); + if (projectPath != null) return projectPath; + } + + return null; + } + + + private static string ValidateLocation(string[] paths, string projectPath) + { + for (int i = 0; i < paths.Length; i++) + { + // Check if any of the matching directories contain a GUISkins directory. + if (Directory.Exists(paths[i] + "/Resources")) + { + string folderPath = paths[i].Replace(projectPath, ""); + folderPath = folderPath.TrimStart('\\', '/'); + return folderPath; + } + } + + return null; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PostBuildProcessHandler.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PostBuildProcessHandler.cs.meta new file mode 100644 index 0000000..af212b8 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_PostBuildProcessHandler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6fdea2af3daa40fe8f88e5e9cfc17abb +timeCreated: 1479886230 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ProjectTextSettings.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ProjectTextSettings.cs new file mode 100644 index 0000000..b8695be --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ProjectTextSettings.cs @@ -0,0 +1,43 @@ +#if !UNITY_2018_3_OR_NEWER +using UnityEditor; + +namespace TMPro +{ + + public static class TMP_ProjectTextSettings + { + // Open Project Text Settings + [MenuItem("Edit/Project Settings/TextMeshPro Settings", false, 309)] + public static void SelectProjectTextSettings() + { + TMP_Settings textSettings = TMP_Settings.instance; + + if (textSettings) + { + Selection.activeObject = textSettings; + + // TODO: Do we want to ping the Project Text Settings asset in the Project Inspector + EditorUtility.FocusProjectWindow(); + EditorGUIUtility.PingObject(textSettings); + } + else + TMPro_EventManager.RESOURCE_LOAD_EVENT.Add(ON_RESOURCES_LOADED); + } + + + // Event received when TMP resources have been loaded. + static void ON_RESOURCES_LOADED() + { + TMPro_EventManager.RESOURCE_LOAD_EVENT.Remove(ON_RESOURCES_LOADED); + + TMP_Settings textSettings = TMP_Settings.instance; + + Selection.activeObject = textSettings; + + // TODO: Do we want to ping the Project Text Settings asset in the Project Inspector + EditorUtility.FocusProjectWindow(); + EditorGUIUtility.PingObject(textSettings); + } + } +} +#endif \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ProjectTextSettings.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ProjectTextSettings.cs.meta new file mode 100644 index 0000000..6d19454 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ProjectTextSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e751e877ed14d71a6b8e63ac54949cf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ResourcesLoader.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ResourcesLoader.cs new file mode 100644 index 0000000..090bd77 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ResourcesLoader.cs @@ -0,0 +1,68 @@ +using UnityEditor; +using UnityEngine; +using System.Collections; + +namespace TMPro.EditorUtilities +{ + + //[InitializeOnLoad] + class TMP_ResourcesLoader + { + + /// + /// Function to pre-load the TMP Resources + /// + public static void LoadTextMeshProResources() + { + //TMP_Settings.LoadDefaultSettings(); + //TMP_StyleSheet.LoadDefaultStyleSheet(); + } + + + static TMP_ResourcesLoader() + { + //Debug.Log("Loading TMP Resources..."); + + // Get current targetted platform + + + //string Settings = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone); + //TMPro.TMP_Settings.LoadDefaultSettings(); + //TMPro.TMP_StyleSheet.LoadDefaultStyleSheet(); + } + + + + //[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + //static void OnBeforeSceneLoaded() + //{ + //Debug.Log("Before scene is loaded."); + + // //TMPro.TMP_Settings.LoadDefaultSettings(); + // //TMPro.TMP_StyleSheet.LoadDefaultStyleSheet(); + + // //ShaderVariantCollection collection = new ShaderVariantCollection(); + // //Shader s0 = Shader.Find("TextMeshPro/Mobile/Distance Field"); + // //ShaderVariantCollection.ShaderVariant tmp_Variant = new ShaderVariantCollection.ShaderVariant(s0, UnityEngine.Rendering.PassType.Normal, string.Empty); + + // //collection.Add(tmp_Variant); + // //collection.WarmUp(); + //} + + } + + //static class TMP_ProjectSettings + //{ + // [InitializeOnLoadMethod] + // static void SetProjectDefineSymbols() + // { + // string currentBuildSettings = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); + + // //Check for and inject TMP_INSTALLED + // if (!currentBuildSettings.Contains("TMP_PRESENT")) + // { + // PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, currentBuildSettings + ";TMP_PRESENT"); + // } + // } + //} +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ResourcesLoader.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ResourcesLoader.cs.meta new file mode 100644 index 0000000..8b322e2 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_ResourcesLoader.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7241c7dc25374fc1a6ab3ef9da79c363 +timeCreated: 1465441092 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SDFShaderGUI.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SDFShaderGUI.cs new file mode 100644 index 0000000..220bac2 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SDFShaderGUI.cs @@ -0,0 +1,487 @@ +using UnityEngine; +using UnityEditor; + +namespace TMPro.EditorUtilities +{ + public class TMP_SDFShaderGUI : TMP_BaseShaderGUI + { + static ShaderFeature s_OutlineFeature, s_UnderlayFeature, s_BevelFeature, s_GlowFeature, s_MaskFeature; + + static bool s_Face = true, s_Outline = true, s_Outline2, s_Underlay, s_Lighting, s_Glow, s_Bevel, s_Light, s_Bump, s_Env; + + static string[] + s_FaceUvSpeedNames = { "_FaceUVSpeedX", "_FaceUVSpeedY" }, + s_OutlineUvSpeedNames = { "_OutlineUVSpeedX", "_OutlineUVSpeedY" }; + + static TMP_SDFShaderGUI() + { + s_OutlineFeature = new ShaderFeature() + { + undoLabel = "Outline", + keywords = new[] { "OUTLINE_ON" } + }; + + s_UnderlayFeature = new ShaderFeature() + { + undoLabel = "Underlay", + keywords = new[] { "UNDERLAY_ON", "UNDERLAY_INNER" }, + label = new GUIContent("Underlay Type"), + keywordLabels = new[] + { + new GUIContent("None"), new GUIContent("Normal"), new GUIContent("Inner") + } + }; + + s_BevelFeature = new ShaderFeature() + { + undoLabel = "Bevel", + keywords = new[] { "BEVEL_ON" } + }; + + s_GlowFeature = new ShaderFeature() + { + undoLabel = "Glow", + keywords = new[] { "GLOW_ON" } + }; + + s_MaskFeature = new ShaderFeature() + { + undoLabel = "Mask", + keywords = new[] { "MASK_HARD", "MASK_SOFT" }, + label = new GUIContent("Mask"), + keywordLabels = new[] + { + new GUIContent("Mask Off"), new GUIContent("Mask Hard"), new GUIContent("Mask Soft") + } + }; + } + + protected override void DoGUI() + { + s_Face = BeginPanel("Face", s_Face); + if (s_Face) + { + DoFacePanel(); + } + + EndPanel(); + + s_Outline = m_Material.HasProperty(ShaderUtilities.ID_OutlineTex) ? BeginPanel("Outline", s_Outline) : BeginPanel("Outline", s_OutlineFeature, s_Outline); + if (s_Outline) + { + DoOutlinePanel(); + } + + EndPanel(); + + if (m_Material.HasProperty(ShaderUtilities.ID_Outline2Color)) + { + s_Outline2 = BeginPanel("Outline 2", s_OutlineFeature, s_Outline2); + if (s_Outline2) + { + DoOutline2Panel(); + } + + EndPanel(); + } + + if (m_Material.HasProperty(ShaderUtilities.ID_UnderlayColor)) + { + s_Underlay = BeginPanel("Underlay", s_UnderlayFeature, s_Underlay); + if (s_Underlay) + { + DoUnderlayPanel(); + } + + EndPanel(); + } + + if (m_Material.HasProperty("_SpecularColor")) + { + s_Lighting = BeginPanel("Lighting", s_BevelFeature, s_Lighting); + if (s_Lighting) + { + s_Bevel = BeginPanel("Bevel", s_Bevel); + if (s_Bevel) + { + DoBevelPanel(); + } + + EndPanel(); + + s_Light = BeginPanel("Local Lighting", s_Light); + if (s_Light) + { + DoLocalLightingPanel(); + } + + EndPanel(); + + s_Bump = BeginPanel("Bump Map", s_Bump); + if (s_Bump) + { + DoBumpMapPanel(); + } + + EndPanel(); + + s_Env = BeginPanel("Environment Map", s_Env); + if (s_Env) + { + DoEnvMapPanel(); + } + + EndPanel(); + } + + EndPanel(); + } + else if (m_Material.HasProperty("_SpecColor")) + { + s_Bevel = BeginPanel("Bevel", s_Bevel); + if (s_Bevel) + { + DoBevelPanel(); + } + + EndPanel(); + + s_Light = BeginPanel("Surface Lighting", s_Light); + if (s_Light) + { + DoSurfaceLightingPanel(); + } + + EndPanel(); + + s_Bump = BeginPanel("Bump Map", s_Bump); + if (s_Bump) + { + DoBumpMapPanel(); + } + + EndPanel(); + + s_Env = BeginPanel("Environment Map", s_Env); + if (s_Env) + { + DoEnvMapPanel(); + } + + EndPanel(); + } + + if (m_Material.HasProperty(ShaderUtilities.ID_GlowColor)) + { + s_Glow = BeginPanel("Glow", s_GlowFeature, s_Glow); + if (s_Glow) + { + DoGlowPanel(); + } + + EndPanel(); + } + + s_DebugExtended = BeginPanel("Debug Settings", s_DebugExtended); + if (s_DebugExtended) + { + DoDebugPanel(); + } + + EndPanel(); + } + + void DoFacePanel() + { + EditorGUI.indentLevel += 1; + DoColor("_FaceColor", "Color"); + if (m_Material.HasProperty(ShaderUtilities.ID_FaceTex)) + { + if (m_Material.HasProperty("_FaceUVSpeedX")) + { + DoTexture2D("_FaceTex", "Texture", true, s_FaceUvSpeedNames); + } + else + { + DoTexture2D("_FaceTex", "Texture", true); + } + } + + DoSlider("_OutlineSoftness", "Softness"); + DoSlider("_FaceDilate", "Dilate"); + if (m_Material.HasProperty(ShaderUtilities.ID_Shininess)) + { + DoSlider("_FaceShininess", "Gloss"); + } + + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoOutlinePanel() + { + EditorGUI.indentLevel += 1; + DoColor("_OutlineColor", "Color"); + if (m_Material.HasProperty(ShaderUtilities.ID_OutlineTex)) + { + if (m_Material.HasProperty("_OutlineUVSpeedX")) + { + DoTexture2D("_OutlineTex", "Texture", true, s_OutlineUvSpeedNames); + } + else + { + DoTexture2D("_OutlineTex", "Texture", true); + } + } + + DoSlider("_OutlineWidth", "Thickness"); + if (m_Material.HasProperty("_OutlineShininess")) + { + DoSlider("_OutlineShininess", "Gloss"); + } + + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoOutline2Panel() + { + EditorGUI.indentLevel += 1; + DoColor("_Outline2Color", "Color"); + //if (m_Material.HasProperty(ShaderUtilities.ID_OutlineTex)) + //{ + // if (m_Material.HasProperty("_OutlineUVSpeedX")) + // { + // DoTexture2D("_OutlineTex", "Texture", true, s_OutlineUvSpeedNames); + // } + // else + // { + // DoTexture2D("_OutlineTex", "Texture", true); + // } + //} + + DoSlider("_Outline2Width", "Thickness"); + //if (m_Material.HasProperty("_OutlineShininess")) + //{ + // DoSlider("_OutlineShininess", "Gloss"); + //} + + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoUnderlayPanel() + { + EditorGUI.indentLevel += 1; + s_UnderlayFeature.DoPopup(m_Editor, m_Material); + DoColor("_UnderlayColor", "Color"); + DoSlider("_UnderlayOffsetX", "Offset X"); + DoSlider("_UnderlayOffsetY", "Offset Y"); + DoSlider("_UnderlayDilate", "Dilate"); + DoSlider("_UnderlaySoftness", "Softness"); + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + static GUIContent[] s_BevelTypeLabels = + { + new GUIContent("Outer Bevel"), + new GUIContent("Inner Bevel") + }; + + void DoBevelPanel() + { + EditorGUI.indentLevel += 1; + DoPopup("_ShaderFlags", "Type", s_BevelTypeLabels); + DoSlider("_Bevel", "Amount"); + DoSlider("_BevelOffset", "Offset"); + DoSlider("_BevelWidth", "Width"); + DoSlider("_BevelRoundness", "Roundness"); + DoSlider("_BevelClamp", "Clamp"); + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoLocalLightingPanel() + { + EditorGUI.indentLevel += 1; + DoSlider("_LightAngle", "Light Angle"); + DoColor("_SpecularColor", "Specular Color"); + DoSlider("_SpecularPower", "Specular Power"); + DoSlider("_Reflectivity", "Reflectivity Power"); + DoSlider("_Diffuse", "Diffuse Shadow"); + DoSlider("_Ambient", "Ambient Shadow"); + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoSurfaceLightingPanel() + { + EditorGUI.indentLevel += 1; + DoColor("_SpecColor", "Specular Color"); + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoBumpMapPanel() + { + EditorGUI.indentLevel += 1; + DoTexture2D("_BumpMap", "Texture"); + DoSlider("_BumpFace", "Face"); + DoSlider("_BumpOutline", "Outline"); + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoEnvMapPanel() + { + EditorGUI.indentLevel += 1; + DoColor("_ReflectFaceColor", "Face Color"); + DoColor("_ReflectOutlineColor", "Outline Color"); + DoCubeMap("_Cube", "Texture"); + DoVector3("_EnvMatrixRotation", "Rotation"); + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoGlowPanel() + { + EditorGUI.indentLevel += 1; + DoColor("_GlowColor", "Color"); + DoSlider("_GlowOffset", "Offset"); + DoSlider("_GlowInner", "Inner"); + DoSlider("_GlowOuter", "Outer"); + DoSlider("_GlowPower", "Power"); + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoDebugPanel() + { + EditorGUI.indentLevel += 1; + DoTexture2D("_MainTex", "Font Atlas"); + DoFloat("_GradientScale", "Gradient Scale"); + DoFloat("_TextureWidth", "Texture Width"); + DoFloat("_TextureHeight", "Texture Height"); + EditorGUILayout.Space(); + DoFloat("_ScaleX", "Scale X"); + DoFloat("_ScaleY", "Scale Y"); + + if (m_Material.HasProperty(ShaderUtilities.ID_Sharpness)) + DoSlider("_Sharpness", "Sharpness"); + + DoSlider("_PerspectiveFilter", "Perspective Filter"); + EditorGUILayout.Space(); + DoFloat("_VertexOffsetX", "Offset X"); + DoFloat("_VertexOffsetY", "Offset Y"); + + if (m_Material.HasProperty(ShaderUtilities.ID_MaskCoord)) + { + EditorGUILayout.Space(); + s_MaskFeature.ReadState(m_Material); + s_MaskFeature.DoPopup(m_Editor, m_Material); + if (s_MaskFeature.Active) + { + DoMaskSubgroup(); + } + + EditorGUILayout.Space(); + DoVector("_ClipRect", "Clip Rect", s_LbrtVectorLabels); + } + else if (m_Material.HasProperty("_MaskTex")) + { + DoMaskTexSubgroup(); + } + else if (m_Material.HasProperty(ShaderUtilities.ID_MaskSoftnessX)) + { + EditorGUILayout.Space(); + DoFloat("_MaskSoftnessX", "Softness X"); + DoFloat("_MaskSoftnessY", "Softness Y"); + DoVector("_ClipRect", "Clip Rect", s_LbrtVectorLabels); + } + + if (m_Material.HasProperty(ShaderUtilities.ID_StencilID)) + { + EditorGUILayout.Space(); + DoFloat("_Stencil", "Stencil ID"); + DoFloat("_StencilComp", "Stencil Comp"); + } + + EditorGUILayout.Space(); + + EditorGUI.BeginChangeCheck(); + bool useRatios = EditorGUILayout.Toggle("Use Ratios", !m_Material.IsKeywordEnabled("RATIOS_OFF")); + if (EditorGUI.EndChangeCheck()) + { + m_Editor.RegisterPropertyChangeUndo("Use Ratios"); + if (useRatios) + { + m_Material.DisableKeyword("RATIOS_OFF"); + } + else + { + m_Material.EnableKeyword("RATIOS_OFF"); + } + } + + if (m_Material.HasProperty(ShaderUtilities.ShaderTag_CullMode)) + { + EditorGUILayout.Space(); + DoPopup("_CullMode", "Cull Mode", s_CullingTypeLabels); + } + + EditorGUILayout.Space(); + + EditorGUI.BeginDisabledGroup(true); + DoFloat("_ScaleRatioA", "Scale Ratio A"); + DoFloat("_ScaleRatioB", "Scale Ratio B"); + DoFloat("_ScaleRatioC", "Scale Ratio C"); + EditorGUI.EndDisabledGroup(); + EditorGUI.indentLevel -= 1; + EditorGUILayout.Space(); + } + + void DoMaskSubgroup() + { + DoVector("_MaskCoord", "Mask Bounds", s_XywhVectorLabels); + if (Selection.activeGameObject != null) + { + Renderer renderer = Selection.activeGameObject.GetComponent(); + if (renderer != null) + { + Rect rect = EditorGUILayout.GetControlRect(); + rect.x += EditorGUIUtility.labelWidth; + rect.width -= EditorGUIUtility.labelWidth; + if (GUI.Button(rect, "Match Renderer Bounds")) + { + FindProperty("_MaskCoord", m_Properties).vectorValue = new Vector4( + 0, + 0, + Mathf.Round(renderer.bounds.extents.x * 1000) / 1000, + Mathf.Round(renderer.bounds.extents.y * 1000) / 1000 + ); + } + } + } + + if (s_MaskFeature.State == 1) + { + DoFloat("_MaskSoftnessX", "Softness X"); + DoFloat("_MaskSoftnessY", "Softness Y"); + } + } + + void DoMaskTexSubgroup() + { + EditorGUILayout.Space(); + DoTexture2D("_MaskTex", "Mask Texture"); + DoToggle("_MaskInverse", "Inverse Mask"); + DoColor("_MaskEdgeColor", "Edge Color"); + DoSlider("_MaskEdgeSoftness", "Edge Softness"); + DoSlider("_MaskWipeControl", "Wipe Position"); + DoFloat("_MaskSoftnessX", "Softness X"); + DoFloat("_MaskSoftnessY", "Softness Y"); + DoVector("_ClipRect", "Clip Rect", s_LbrtVectorLabels); + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SDFShaderGUI.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SDFShaderGUI.cs.meta new file mode 100644 index 0000000..c643afa --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SDFShaderGUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8413ca0e506d42a1a4bd9769f204ad16 +timeCreated: 1469844718 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SerializedPropertyHolder.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SerializedPropertyHolder.cs new file mode 100644 index 0000000..2ba34d6 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SerializedPropertyHolder.cs @@ -0,0 +1,14 @@ +using UnityEngine; +using UnityEditor; + +namespace TMPro +{ + class TMP_SerializedPropertyHolder : ScriptableObject + { + public TMP_FontAsset fontAsset; + public uint firstCharacter; + public uint secondCharacter; + + public TMP_GlyphPairAdjustmentRecord glyphPairAdjustmentRecord = new TMP_GlyphPairAdjustmentRecord(new TMP_GlyphAdjustmentRecord(), new TMP_GlyphAdjustmentRecord()); + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SerializedPropertyHolder.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SerializedPropertyHolder.cs.meta new file mode 100644 index 0000000..cde31db --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SerializedPropertyHolder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c4a050f089abb04ebd4125e419f4548 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SettingsEditor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SettingsEditor.cs new file mode 100644 index 0000000..f8c601e --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SettingsEditor.cs @@ -0,0 +1,381 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditorInternal; + +#pragma warning disable 0414 // Disabled a few warnings for not yet implemented features. + +namespace TMPro.EditorUtilities +{ + [CustomEditor(typeof(TMP_Settings))] + public class TMP_SettingsEditor : Editor + { + internal class Styles + { + public static readonly GUIContent defaultFontAssetLabel = new GUIContent("Default Font Asset", "The Font Asset that will be assigned by default to newly created text objects when no Font Asset is specified."); + public static readonly GUIContent defaultFontAssetPathLabel = new GUIContent("Path: Resources/", "The relative path to a Resources folder where the Font Assets and Material Presets are located.\nExample \"Fonts & Materials/\""); + + public static readonly GUIContent fallbackFontAssetsLabel = new GUIContent("Fallback Font Assets", "The Font Assets that will be searched to locate and replace missing characters from a given Font Asset."); + public static readonly GUIContent fallbackFontAssetsListLabel = new GUIContent("Fallback Font Assets List", "The Font Assets that will be searched to locate and replace missing characters from a given Font Asset."); + + public static readonly GUIContent fallbackMaterialSettingsLabel = new GUIContent("Fallback Material Settings"); + public static readonly GUIContent matchMaterialPresetLabel = new GUIContent("Match Material Presets"); + + public static readonly GUIContent containerDefaultSettingsLabel = new GUIContent("Text Container Default Settings"); + + public static readonly GUIContent textMeshProLabel = new GUIContent("TextMeshPro"); + public static readonly GUIContent textMeshProUiLabel = new GUIContent("TextMeshPro UI"); + public static readonly GUIContent enableRaycastTarget = new GUIContent("Enable Raycast Target"); + public static readonly GUIContent autoSizeContainerLabel = new GUIContent("Auto Size Text Container", "Set the size of the text container to match the text."); + public static readonly GUIContent isTextObjectScaleStaticLabel = new GUIContent("Is Object Scale Static", "Disables calling InternalUpdate() when enabled. This can improve performance when text object scale is static."); + + public static readonly GUIContent textComponentDefaultSettingsLabel = new GUIContent("Text Component Default Settings"); + public static readonly GUIContent defaultFontSize = new GUIContent("Default Font Size"); + public static readonly GUIContent autoSizeRatioLabel = new GUIContent("Text Auto Size Ratios"); + public static readonly GUIContent minLabel = new GUIContent("Min"); + public static readonly GUIContent maxLabel = new GUIContent("Max"); + + public static readonly GUIContent wordWrappingLabel = new GUIContent("Word Wrapping"); + public static readonly GUIContent kerningLabel = new GUIContent("Kerning"); + public static readonly GUIContent extraPaddingLabel = new GUIContent("Extra Padding"); + public static readonly GUIContent tintAllSpritesLabel = new GUIContent("Tint All Sprites"); + public static readonly GUIContent parseEscapeCharactersLabel = new GUIContent("Parse Escape Sequence"); + + public static readonly GUIContent dynamicFontSystemSettingsLabel = new GUIContent("Dynamic Font System Settings"); + public static readonly GUIContent getFontFeaturesAtRuntime = new GUIContent("Get Font Features at Runtime", "Determines if Glyph Adjustment Data will be retrieved from font files at runtime when new characters and glyphs are added to font assets."); + public static readonly GUIContent dynamicAtlasTextureGroup = new GUIContent("Dynamic Atlas Texture Group"); + + public static readonly GUIContent missingGlyphLabel = new GUIContent("Missing Character Unicode", "The character to be displayed when the requested character is not found in any font asset or fallbacks."); + public static readonly GUIContent disableWarningsLabel = new GUIContent("Disable warnings", "Disable warning messages in the Console."); + + public static readonly GUIContent defaultSpriteAssetLabel = new GUIContent("Default Sprite Asset", "The Sprite Asset that will be assigned by default when using the tag when no Sprite Asset is specified."); + public static readonly GUIContent missingSpriteCharacterUnicodeLabel = new GUIContent("Missing Sprite Unicode", "The unicode value for the sprite character to be displayed when the requested sprite character is not found in any sprite assets or fallbacks."); + public static readonly GUIContent enableEmojiSupportLabel = new GUIContent("iOS Emoji Support", "Enables Emoji support for Touch Screen Keyboards on target devices."); + //public static readonly GUIContent spriteRelativeScale = new GUIContent("Relative Scaling", "Determines if the sprites will be scaled relative to the primary font asset assigned to the text object or relative to the current font asset."); + + public static readonly GUIContent spriteAssetsPathLabel = new GUIContent("Path: Resources/", "The relative path to a Resources folder where the Sprite Assets are located.\nExample \"Sprite Assets/\""); + + public static readonly GUIContent defaultStyleSheetLabel = new GUIContent("Default Style Sheet", "The Style Sheet that will be used for all text objects in this project."); + public static readonly GUIContent styleSheetResourcePathLabel = new GUIContent("Path: Resources/", "The relative path to a Resources folder where the Style Sheets are located.\nExample \"Style Sheets/\""); + + public static readonly GUIContent colorGradientPresetsLabel = new GUIContent("Color Gradient Presets", "The relative path to a Resources folder where the Color Gradient Presets are located.\nExample \"Color Gradient Presets/\""); + public static readonly GUIContent colorGradientsPathLabel = new GUIContent("Path: Resources/", "The relative path to a Resources folder where the Color Gradient Presets are located.\nExample \"Color Gradient Presets/\""); + + public static readonly GUIContent lineBreakingLabel = new GUIContent("Line Breaking for Asian languages", "The text assets that contain the Leading and Following characters which define the rules for line breaking with Asian languages."); + public static readonly GUIContent koreanSpecificRules = new GUIContent("Korean Language Options"); + } + + SerializedProperty m_PropFontAsset; + SerializedProperty m_PropDefaultFontAssetPath; + SerializedProperty m_PropDefaultFontSize; + SerializedProperty m_PropDefaultAutoSizeMinRatio; + SerializedProperty m_PropDefaultAutoSizeMaxRatio; + SerializedProperty m_PropDefaultTextMeshProTextContainerSize; + SerializedProperty m_PropDefaultTextMeshProUITextContainerSize; + SerializedProperty m_PropAutoSizeTextContainer; + SerializedProperty m_PropEnableRaycastTarget; + SerializedProperty m_PropIsTextObjectScaleStatic; + + SerializedProperty m_PropSpriteAsset; + SerializedProperty m_PropMissingSpriteCharacterUnicode; + //SerializedProperty m_PropSpriteRelativeScaling; + SerializedProperty m_PropEnableEmojiSupport; + SerializedProperty m_PropSpriteAssetPath; + + + SerializedProperty m_PropStyleSheet; + SerializedProperty m_PropStyleSheetsResourcePath; + ReorderableList m_List; + + SerializedProperty m_PropColorGradientPresetsPath; + + SerializedProperty m_PropMatchMaterialPreset; + SerializedProperty m_PropWordWrapping; + SerializedProperty m_PropKerning; + SerializedProperty m_PropExtraPadding; + SerializedProperty m_PropTintAllSprites; + SerializedProperty m_PropParseEscapeCharacters; + SerializedProperty m_PropMissingGlyphCharacter; + + //SerializedProperty m_DynamicAtlasTextureManager; + SerializedProperty m_GetFontFeaturesAtRuntime; + + SerializedProperty m_PropWarningsDisabled; + + SerializedProperty m_PropLeadingCharacters; + SerializedProperty m_PropFollowingCharacters; + SerializedProperty m_PropUseModernHangulLineBreakingRules; + + private const string k_UndoRedo = "UndoRedoPerformed"; + + public void OnEnable() + { + if (target == null) + return; + + m_PropFontAsset = serializedObject.FindProperty("m_defaultFontAsset"); + m_PropDefaultFontAssetPath = serializedObject.FindProperty("m_defaultFontAssetPath"); + m_PropDefaultFontSize = serializedObject.FindProperty("m_defaultFontSize"); + m_PropDefaultAutoSizeMinRatio = serializedObject.FindProperty("m_defaultAutoSizeMinRatio"); + m_PropDefaultAutoSizeMaxRatio = serializedObject.FindProperty("m_defaultAutoSizeMaxRatio"); + m_PropDefaultTextMeshProTextContainerSize = serializedObject.FindProperty("m_defaultTextMeshProTextContainerSize"); + m_PropDefaultTextMeshProUITextContainerSize = serializedObject.FindProperty("m_defaultTextMeshProUITextContainerSize"); + m_PropAutoSizeTextContainer = serializedObject.FindProperty("m_autoSizeTextContainer"); + m_PropEnableRaycastTarget = serializedObject.FindProperty("m_EnableRaycastTarget"); + m_PropIsTextObjectScaleStatic = serializedObject.FindProperty("m_IsTextObjectScaleStatic"); + + m_PropSpriteAsset = serializedObject.FindProperty("m_defaultSpriteAsset"); + m_PropMissingSpriteCharacterUnicode = serializedObject.FindProperty("m_MissingCharacterSpriteUnicode"); + //m_PropSpriteRelativeScaling = serializedObject.FindProperty("m_SpriteRelativeScaling"); + m_PropEnableEmojiSupport = serializedObject.FindProperty("m_enableEmojiSupport"); + m_PropSpriteAssetPath = serializedObject.FindProperty("m_defaultSpriteAssetPath"); + + m_PropStyleSheet = serializedObject.FindProperty("m_defaultStyleSheet"); + m_PropStyleSheetsResourcePath = serializedObject.FindProperty("m_StyleSheetsResourcePath"); + + + m_PropColorGradientPresetsPath = serializedObject.FindProperty("m_defaultColorGradientPresetsPath"); + + m_List = new ReorderableList(serializedObject, serializedObject.FindProperty("m_fallbackFontAssets"), true, true, true, true); + + m_List.drawElementCallback = (rect, index, isActive, isFocused) => + { + var element = m_List.serializedProperty.GetArrayElementAtIndex(index); + rect.y += 2; + EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), element, GUIContent.none); + }; + + m_List.drawHeaderCallback = rect => + { + EditorGUI.LabelField(rect, Styles.fallbackFontAssetsListLabel); + }; + + m_PropMatchMaterialPreset = serializedObject.FindProperty("m_matchMaterialPreset"); + + m_PropWordWrapping = serializedObject.FindProperty("m_enableWordWrapping"); + m_PropKerning = serializedObject.FindProperty("m_enableKerning"); + m_PropExtraPadding = serializedObject.FindProperty("m_enableExtraPadding"); + m_PropTintAllSprites = serializedObject.FindProperty("m_enableTintAllSprites"); + m_PropParseEscapeCharacters = serializedObject.FindProperty("m_enableParseEscapeCharacters"); + m_PropMissingGlyphCharacter = serializedObject.FindProperty("m_missingGlyphCharacter"); + + m_PropWarningsDisabled = serializedObject.FindProperty("m_warningsDisabled"); + + //m_DynamicAtlasTextureManager = serializedObject.FindProperty("m_DynamicAtlasTextureGroup"); + m_GetFontFeaturesAtRuntime = serializedObject.FindProperty("m_GetFontFeaturesAtRuntime"); + + m_PropLeadingCharacters = serializedObject.FindProperty("m_leadingCharacters"); + m_PropFollowingCharacters = serializedObject.FindProperty("m_followingCharacters"); + m_PropUseModernHangulLineBreakingRules = serializedObject.FindProperty("m_UseModernHangulLineBreakingRules"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + string evt_cmd = Event.current.commandName; + + float labelWidth = EditorGUIUtility.labelWidth; + float fieldWidth = EditorGUIUtility.fieldWidth; + + // TextMeshPro Font Info Panel + EditorGUI.indentLevel = 0; + + // FONT ASSET + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label(Styles.defaultFontAssetLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel = 1; + EditorGUILayout.PropertyField(m_PropFontAsset, Styles.defaultFontAssetLabel); + EditorGUILayout.PropertyField(m_PropDefaultFontAssetPath, Styles.defaultFontAssetPathLabel); + EditorGUI.indentLevel = 0; + + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + + // FALLBACK FONT ASSETs + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label(Styles.fallbackFontAssetsLabel, EditorStyles.boldLabel); + m_List.DoLayoutList(); + + GUILayout.Label(Styles.fallbackMaterialSettingsLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel = 1; + EditorGUILayout.PropertyField(m_PropMatchMaterialPreset, Styles.matchMaterialPresetLabel); + EditorGUI.indentLevel = 0; + + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + + // MISSING GLYPHS + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label(Styles.dynamicFontSystemSettingsLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel = 1; + EditorGUILayout.PropertyField(m_GetFontFeaturesAtRuntime, Styles.getFontFeaturesAtRuntime); + EditorGUILayout.PropertyField(m_PropMissingGlyphCharacter, Styles.missingGlyphLabel); + EditorGUILayout.PropertyField(m_PropWarningsDisabled, Styles.disableWarningsLabel); + //EditorGUILayout.PropertyField(m_DynamicAtlasTextureManager, Styles.dynamicAtlasTextureManager); + EditorGUI.indentLevel = 0; + + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + + // TEXT OBJECT DEFAULT PROPERTIES + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label(Styles.containerDefaultSettingsLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel = 1; + + EditorGUILayout.PropertyField(m_PropDefaultTextMeshProTextContainerSize, Styles.textMeshProLabel); + EditorGUILayout.PropertyField(m_PropDefaultTextMeshProUITextContainerSize, Styles.textMeshProUiLabel); + EditorGUILayout.PropertyField(m_PropEnableRaycastTarget, Styles.enableRaycastTarget); + EditorGUILayout.PropertyField(m_PropAutoSizeTextContainer, Styles.autoSizeContainerLabel); + EditorGUILayout.PropertyField(m_PropIsTextObjectScaleStatic, Styles.isTextObjectScaleStaticLabel); + EditorGUI.indentLevel = 0; + + EditorGUILayout.Space(); + + GUILayout.Label(Styles.textComponentDefaultSettingsLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel = 1; + EditorGUILayout.PropertyField(m_PropDefaultFontSize, Styles.defaultFontSize); + + EditorGUILayout.BeginHorizontal(); + { + EditorGUILayout.PrefixLabel(Styles.autoSizeRatioLabel); + EditorGUIUtility.labelWidth = 32; + EditorGUIUtility.fieldWidth = 10; + + EditorGUI.indentLevel = 0; + EditorGUILayout.PropertyField(m_PropDefaultAutoSizeMinRatio, Styles.minLabel); + EditorGUILayout.PropertyField(m_PropDefaultAutoSizeMaxRatio, Styles.maxLabel); + EditorGUI.indentLevel = 1; + } + EditorGUILayout.EndHorizontal(); + + EditorGUIUtility.labelWidth = labelWidth; + EditorGUIUtility.fieldWidth = fieldWidth; + + EditorGUILayout.PropertyField(m_PropWordWrapping, Styles.wordWrappingLabel); + EditorGUILayout.PropertyField(m_PropKerning, Styles.kerningLabel); + + EditorGUILayout.PropertyField(m_PropExtraPadding, Styles.extraPaddingLabel); + EditorGUILayout.PropertyField(m_PropTintAllSprites, Styles.tintAllSpritesLabel); + + EditorGUILayout.PropertyField(m_PropParseEscapeCharacters, Styles.parseEscapeCharactersLabel); + + EditorGUI.indentLevel = 0; + + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + + // SPRITE ASSET + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label(Styles.defaultSpriteAssetLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel = 1; + EditorGUILayout.PropertyField(m_PropSpriteAsset, Styles.defaultSpriteAssetLabel); + EditorGUILayout.PropertyField(m_PropMissingSpriteCharacterUnicode, Styles.missingSpriteCharacterUnicodeLabel); + EditorGUILayout.PropertyField(m_PropEnableEmojiSupport, Styles.enableEmojiSupportLabel); + //EditorGUILayout.PropertyField(m_PropSpriteRelativeScaling, Styles.spriteRelativeScale); + EditorGUILayout.PropertyField(m_PropSpriteAssetPath, Styles.spriteAssetsPathLabel); + EditorGUI.indentLevel = 0; + + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + + // STYLE SHEET + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label(Styles.defaultStyleSheetLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel = 1; + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_PropStyleSheet, Styles.defaultStyleSheetLabel); + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + + TMP_StyleSheet styleSheet = m_PropStyleSheet.objectReferenceValue as TMP_StyleSheet; + if (styleSheet != null) + styleSheet.RefreshStyles(); + } + EditorGUILayout.PropertyField(m_PropStyleSheetsResourcePath, Styles.styleSheetResourcePathLabel); + EditorGUI.indentLevel = 0; + + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + + // COLOR GRADIENT PRESETS + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label(Styles.colorGradientPresetsLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel = 1; + EditorGUILayout.PropertyField(m_PropColorGradientPresetsPath, Styles.colorGradientsPathLabel); + EditorGUI.indentLevel = 0; + + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + + // LINE BREAKING RULE + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label(Styles.lineBreakingLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel = 1; + EditorGUILayout.PropertyField(m_PropLeadingCharacters); + EditorGUILayout.PropertyField(m_PropFollowingCharacters); + + EditorGUILayout.Space(); + GUILayout.Label(Styles.koreanSpecificRules, EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_PropUseModernHangulLineBreakingRules, new GUIContent("Use Modern Line Breaking", "Determines if traditional or modern line breaking rules will be used to control line breaking. Traditional line breaking rules use the Leading and Following Character rules whereas Modern uses spaces for line breaking.")); + + EditorGUI.indentLevel = 0; + + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + + if (serializedObject.ApplyModifiedProperties() || evt_cmd == k_UndoRedo) + { + EditorUtility.SetDirty(target); + TMPro_EventManager.ON_TMP_SETTINGS_CHANGED(); + } + } + } + +#if UNITY_2018_3_OR_NEWER + class TMP_ResourceImporterProvider : SettingsProvider + { + TMP_PackageResourceImporter m_ResourceImporter; + + public TMP_ResourceImporterProvider() + : base("Project/TextMesh Pro", SettingsScope.Project) + { + } + + public override void OnGUI(string searchContext) + { + // Lazy creation that supports domain reload + if (m_ResourceImporter == null) + m_ResourceImporter = new TMP_PackageResourceImporter(); + + m_ResourceImporter.OnGUI(); + } + + public override void OnDeactivate() + { + if (m_ResourceImporter != null) + m_ResourceImporter.OnDestroy(); + } + + static UnityEngine.Object GetTMPSettings() + { + return Resources.Load("TMP Settings"); + } + + [SettingsProviderGroup] + static SettingsProvider[] CreateTMPSettingsProvider() + { + var providers = new List { new TMP_ResourceImporterProvider() }; + + if (GetTMPSettings() != null) + { + var provider = new AssetSettingsProvider("Project/TextMesh Pro/Settings", GetTMPSettings); + provider.PopulateSearchKeywordsFromGUIContentProperties(); + providers.Add(provider); + } + + return providers.ToArray(); + } + } +#endif +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SettingsEditor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SettingsEditor.cs.meta new file mode 100644 index 0000000..a719ae7 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SettingsEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0386b6eb838c47138cd51d1c1b879a35 +timeCreated: 1436658550 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetEditor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetEditor.cs new file mode 100644 index 0000000..e7d48d1 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetEditor.cs @@ -0,0 +1,953 @@ +using UnityEngine; +using UnityEngine.TextCore; +using UnityEditor; +using UnityEditorInternal; +using System.Collections.Generic; + + +namespace TMPro.EditorUtilities +{ + + [CustomEditor(typeof(TMP_SpriteAsset))] + public class TMP_SpriteAssetEditor : Editor + { + struct UI_PanelState + { + public static bool spriteAssetFaceInfoPanel = true; + public static bool spriteAtlasInfoPanel = true; + public static bool fallbackSpriteAssetPanel = true; + public static bool spriteCharacterTablePanel; + public static bool spriteGlyphTablePanel; + } + + private static string[] s_UiStateLabel = new string[] { "(Click to collapse) ", "(Click to expand) " }; + + int m_moveToIndex; + int m_selectedElement = -1; + int m_CurrentCharacterPage; + int m_CurrentGlyphPage; + + const string k_UndoRedo = "UndoRedoPerformed"; + + string m_CharacterSearchPattern; + List m_CharacterSearchList; + bool m_IsCharacterSearchDirty; + + string m_GlyphSearchPattern; + List m_GlyphSearchList; + bool m_IsGlyphSearchDirty; + + SerializedProperty m_FaceInfoProperty; + SerializedProperty m_PointSizeProperty; + SerializedProperty m_ScaleProperty; + SerializedProperty m_LineHeightProperty; + SerializedProperty m_AscentLineProperty; + SerializedProperty m_BaselineProperty; + SerializedProperty m_DescentLineProperty; + + SerializedProperty m_spriteAtlas_prop; + SerializedProperty m_material_prop; + SerializedProperty m_SpriteCharacterTableProperty; + SerializedProperty m_SpriteGlyphTableProperty; + ReorderableList m_fallbackSpriteAssetList; + + TMP_SpriteAsset m_SpriteAsset; + + bool isAssetDirty; + + float m_xOffset; + float m_yOffset; + float m_xAdvance; + float m_scale; + + public void OnEnable() + { + m_SpriteAsset = target as TMP_SpriteAsset; + + m_FaceInfoProperty = serializedObject.FindProperty("m_FaceInfo"); + m_PointSizeProperty = m_FaceInfoProperty.FindPropertyRelative("m_PointSize"); + m_ScaleProperty = m_FaceInfoProperty.FindPropertyRelative("m_Scale"); + m_LineHeightProperty = m_FaceInfoProperty.FindPropertyRelative("m_LineHeight"); + m_AscentLineProperty = m_FaceInfoProperty.FindPropertyRelative("m_AscentLine"); + m_BaselineProperty = m_FaceInfoProperty.FindPropertyRelative("m_Baseline"); + m_DescentLineProperty = m_FaceInfoProperty.FindPropertyRelative("m_DescentLine"); + + m_spriteAtlas_prop = serializedObject.FindProperty("spriteSheet"); + m_material_prop = serializedObject.FindProperty("material"); + m_SpriteCharacterTableProperty = serializedObject.FindProperty("m_SpriteCharacterTable"); + m_SpriteGlyphTableProperty = serializedObject.FindProperty("m_SpriteGlyphTable"); + + // Fallback TMP Sprite Asset list + m_fallbackSpriteAssetList = new ReorderableList(serializedObject, serializedObject.FindProperty("fallbackSpriteAssets"), true, true, true, true); + + m_fallbackSpriteAssetList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => + { + var element = m_fallbackSpriteAssetList.serializedProperty.GetArrayElementAtIndex(index); + rect.y += 2; + EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), element, GUIContent.none); + }; + + m_fallbackSpriteAssetList.drawHeaderCallback = rect => + { + EditorGUI.LabelField(rect, new GUIContent("Fallback Sprite Asset List", "Select the Sprite Assets that will be searched and used as fallback when a given sprite is missing from this sprite asset.")); + }; + } + + + public override void OnInspectorGUI() + { + + //Debug.Log("OnInspectorGUI Called."); + Event currentEvent = Event.current; + string evt_cmd = currentEvent.commandName; // Get Current Event CommandName to check for Undo Events + + serializedObject.Update(); + + + // TEXTMESHPRO SPRITE INFO PANEL + #region Display Sprite Asset Face Info + Rect rect = EditorGUILayout.GetControlRect(false, 24); + + GUI.Label(rect, new GUIContent("Face Info - v" + m_SpriteAsset.version), TMP_UIStyleManager.sectionHeader); + + rect.x += rect.width - 132f; + rect.y += 2; + rect.width = 130f; + rect.height = 18f; + if (GUI.Button(rect, new GUIContent("Update Sprite Asset"))) + { + TMP_SpriteAssetMenu.UpdateSpriteAsset(m_SpriteAsset); + } + EditorGUI.indentLevel = 1; + + EditorGUILayout.PropertyField(m_PointSizeProperty); + EditorGUILayout.PropertyField(m_ScaleProperty); + //EditorGUILayout.PropertyField(m_LineHeightProperty); + EditorGUILayout.PropertyField(m_AscentLineProperty); + EditorGUILayout.PropertyField(m_BaselineProperty); + EditorGUILayout.PropertyField(m_DescentLineProperty); + EditorGUILayout.Space(); + #endregion + + + // ATLAS TEXTURE & MATERIAL + #region Display Atlas Texture and Material + rect = EditorGUILayout.GetControlRect(false, 24); + + if (GUI.Button(rect, new GUIContent("Atlas & Material"), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.spriteAtlasInfoPanel = !UI_PanelState.spriteAtlasInfoPanel; + + GUI.Label(rect, (UI_PanelState.spriteAtlasInfoPanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.spriteAtlasInfoPanel) + { + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(m_spriteAtlas_prop, new GUIContent("Sprite Atlas")); + if (EditorGUI.EndChangeCheck()) + { + // Assign the new sprite atlas texture to the current material + Texture2D tex = m_spriteAtlas_prop.objectReferenceValue as Texture2D; + if (tex != null) + { + Material mat = m_material_prop.objectReferenceValue as Material; + if (mat != null) + mat.mainTexture = tex; + } + } + + EditorGUILayout.PropertyField(m_material_prop, new GUIContent("Default Material")); + EditorGUILayout.Space(); + } + #endregion + + + // FALLBACK SPRITE ASSETS + #region Display Sprite Fallbacks + rect = EditorGUILayout.GetControlRect(false, 24); + EditorGUI.indentLevel = 0; + if (GUI.Button(rect, new GUIContent("Fallback Sprite Assets", "Select the Sprite Assets that will be searched and used as fallback when a given sprite is missing from this sprite asset."), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.fallbackSpriteAssetPanel = !UI_PanelState.fallbackSpriteAssetPanel; + + GUI.Label(rect, (UI_PanelState.fallbackSpriteAssetPanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.fallbackSpriteAssetPanel) + { + m_fallbackSpriteAssetList.DoLayoutList(); + EditorGUILayout.Space(); + } + #endregion + + + // SPRITE CHARACTER TABLE + #region Display Sprite Character Table + EditorGUI.indentLevel = 0; + rect = EditorGUILayout.GetControlRect(false, 24); + + if (GUI.Button(rect, new GUIContent("Sprite Character Table", "List of sprite characters contained in this sprite asset."), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.spriteCharacterTablePanel = !UI_PanelState.spriteCharacterTablePanel; + + GUI.Label(rect, (UI_PanelState.spriteCharacterTablePanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.spriteCharacterTablePanel) + { + int arraySize = m_SpriteCharacterTableProperty.arraySize; + int itemsPerPage = 10; + + // Display Glyph Management Tools + EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.ExpandWidth(true)); + { + // Search Bar implementation + #region DISPLAY SEARCH BAR + EditorGUILayout.BeginHorizontal(); + { + EditorGUIUtility.labelWidth = 110f; + EditorGUI.BeginChangeCheck(); + string searchPattern = EditorGUILayout.TextField("Sprite Search", m_CharacterSearchPattern, "SearchTextField"); + if (EditorGUI.EndChangeCheck() || m_IsCharacterSearchDirty) + { + if (string.IsNullOrEmpty(searchPattern) == false) + { + //GUIUtility.keyboardControl = 0; + m_CharacterSearchPattern = searchPattern.ToLower(System.Globalization.CultureInfo.InvariantCulture).Trim(); + + // Search Glyph Table for potential matches + SearchCharacterTable(m_CharacterSearchPattern, ref m_CharacterSearchList); + } + else + m_CharacterSearchPattern = null; + + m_IsCharacterSearchDirty = false; + } + + string styleName = string.IsNullOrEmpty(m_CharacterSearchPattern) ? "SearchCancelButtonEmpty" : "SearchCancelButton"; + if (GUILayout.Button(GUIContent.none, styleName)) + { + GUIUtility.keyboardControl = 0; + m_CharacterSearchPattern = string.Empty; + } + } + EditorGUILayout.EndHorizontal(); + #endregion + + // Display Page Navigation + if (!string.IsNullOrEmpty(m_CharacterSearchPattern)) + arraySize = m_CharacterSearchList.Count; + + // Display Page Navigation + DisplayPageNavigation(ref m_CurrentCharacterPage, arraySize, itemsPerPage); + } + EditorGUILayout.EndVertical(); + + if (arraySize > 0) + { + // Display each SpriteInfo entry using the SpriteInfo property drawer. + for (int i = itemsPerPage * m_CurrentCharacterPage; i < arraySize && i < itemsPerPage * (m_CurrentCharacterPage + 1); i++) + { + // Define the start of the selection region of the element. + Rect elementStartRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + int elementIndex = i; + if (!string.IsNullOrEmpty(m_CharacterSearchPattern)) + elementIndex = m_CharacterSearchList[i]; + + SerializedProperty spriteCharacterProperty = m_SpriteCharacterTableProperty.GetArrayElementAtIndex(elementIndex); + + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + { + EditorGUI.BeginDisabledGroup(i != m_selectedElement); + { + EditorGUILayout.PropertyField(spriteCharacterProperty); + } + EditorGUI.EndDisabledGroup(); + } + EditorGUILayout.EndVertical(); + + // Define the end of the selection region of the element. + Rect elementEndRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + // Check for Item selection + Rect selectionArea = new Rect(elementStartRegion.x, elementStartRegion.y, elementEndRegion.width, elementEndRegion.y - elementStartRegion.y); + if (DoSelectionCheck(selectionArea)) + { + if (m_selectedElement == i) + { + m_selectedElement = -1; + } + else + { + m_selectedElement = i; + GUIUtility.keyboardControl = 0; + } + } + + // Draw & Handle Section Area + if (m_selectedElement == i) + { + // Draw selection highlight + TMP_EditorUtility.DrawBox(selectionArea, 2f, new Color32(40, 192, 255, 255)); + + // Draw options to MoveUp, MoveDown, Add or Remove Sprites + Rect controlRect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * 1f); + controlRect.width /= 8; + + // Move sprite up. + bool guiEnabled = GUI.enabled; + if (i == 0) { GUI.enabled = false; } + if (GUI.Button(controlRect, "Up")) + { + SwapCharacterElements(i, i - 1); + } + GUI.enabled = guiEnabled; + + // Move sprite down. + controlRect.x += controlRect.width; + if (i == arraySize - 1) { GUI.enabled = false; } + if (GUI.Button(controlRect, "Down")) + { + SwapCharacterElements(i, i + 1); + } + GUI.enabled = guiEnabled; + + // Move sprite to new index + controlRect.x += controlRect.width * 2; + //if (i == arraySize - 1) { GUI.enabled = false; } + m_moveToIndex = EditorGUI.IntField(controlRect, m_moveToIndex); + controlRect.x -= controlRect.width; + if (GUI.Button(controlRect, "Goto")) + { + MoveCharacterToIndex(i, m_moveToIndex); + } + //controlRect.x += controlRect.width; + GUI.enabled = guiEnabled; + + // Add new Sprite + controlRect.x += controlRect.width * 4; + if (GUI.Button(controlRect, "+")) + { + m_SpriteCharacterTableProperty.arraySize += 1; + + int index = m_SpriteCharacterTableProperty.arraySize - 1; + + SerializedProperty spriteInfo_prop = m_SpriteCharacterTableProperty.GetArrayElementAtIndex(index); + + // Copy properties of the selected element + CopyCharacterSerializedProperty(m_SpriteCharacterTableProperty.GetArrayElementAtIndex(elementIndex), ref spriteInfo_prop); + + //spriteInfo_prop.FindPropertyRelative("m_Index").intValue = index; + serializedObject.ApplyModifiedProperties(); + + m_IsCharacterSearchDirty = true; + } + + // Delete selected Sprite + controlRect.x += controlRect.width; + if (m_selectedElement == -1) GUI.enabled = false; + if (GUI.Button(controlRect, "-")) + { + m_SpriteCharacterTableProperty.DeleteArrayElementAtIndex(elementIndex); + + m_selectedElement = -1; + serializedObject.ApplyModifiedProperties(); + + m_IsCharacterSearchDirty = true; + + return; + } + + + } + } + } + + DisplayPageNavigation(ref m_CurrentCharacterPage, arraySize, itemsPerPage); + + EditorGUIUtility.labelWidth = 40f; + EditorGUIUtility.fieldWidth = 20f; + + GUILayout.Space(5f); + + // GLOBAL TOOLS + #region Global Tools + /* + GUI.enabled = true; + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + rect = EditorGUILayout.GetControlRect(false, 40); + + float width = (rect.width - 75f) / 4; + EditorGUI.LabelField(rect, "Global Offsets & Scale", EditorStyles.boldLabel); + + + rect.x += 70; + bool old_ChangedState = GUI.changed; + + GUI.changed = false; + m_xOffset = EditorGUI.FloatField(new Rect(rect.x + 5f + width * 0, rect.y + 20, width - 5f, 18), new GUIContent("OX:"), m_xOffset); + if (GUI.changed) UpdateGlobalProperty("m_HorizontalBearingX", m_xOffset); + + m_yOffset = EditorGUI.FloatField(new Rect(rect.x + 5f + width * 1, rect.y + 20, width - 5f, 18), new GUIContent("OY:"), m_yOffset); + if (GUI.changed) UpdateGlobalProperty("m_HorizontalBearingY", m_yOffset); + + m_xAdvance = EditorGUI.FloatField(new Rect(rect.x + 5f + width * 2, rect.y + 20, width - 5f, 18), new GUIContent("ADV."), m_xAdvance); + if (GUI.changed) UpdateGlobalProperty("m_HorizontalAdvance", m_xAdvance); + + m_scale = EditorGUI.FloatField(new Rect(rect.x + 5f + width * 3, rect.y + 20, width - 5f, 18), new GUIContent("SF."), m_scale); + if (GUI.changed) UpdateGlobalProperty("m_Scale", m_scale); + + EditorGUILayout.EndVertical(); + + GUI.changed = old_ChangedState; + */ + #endregion + + } + #endregion + + + // SPRITE GLYPH TABLE + #region Display Sprite Glyph Table + EditorGUI.indentLevel = 0; + rect = EditorGUILayout.GetControlRect(false, 24); + + if (GUI.Button(rect, new GUIContent("Sprite Glyph Table", "A list of the SpriteGlyphs contained in this sprite asset."), TMP_UIStyleManager.sectionHeader)) + UI_PanelState.spriteGlyphTablePanel = !UI_PanelState.spriteGlyphTablePanel; + + GUI.Label(rect, (UI_PanelState.spriteGlyphTablePanel ? "" : s_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); + + if (UI_PanelState.spriteGlyphTablePanel) + { + int arraySize = m_SpriteGlyphTableProperty.arraySize; + int itemsPerPage = 10; + + // Display Glyph Management Tools + EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.ExpandWidth(true)); + { + // Search Bar implementation + #region DISPLAY SEARCH BAR + EditorGUILayout.BeginHorizontal(); + { + EditorGUIUtility.labelWidth = 110f; + EditorGUI.BeginChangeCheck(); + string searchPattern = EditorGUILayout.TextField("Sprite Search", m_GlyphSearchPattern, "SearchTextField"); + if (EditorGUI.EndChangeCheck() || m_IsGlyphSearchDirty) + { + if (string.IsNullOrEmpty(searchPattern) == false) + { + //GUIUtility.keyboardControl = 0; + m_GlyphSearchPattern = searchPattern.ToLower(System.Globalization.CultureInfo.InvariantCulture).Trim(); + + // Search Glyph Table for potential matches + SearchCharacterTable(m_GlyphSearchPattern, ref m_GlyphSearchList); + } + else + m_GlyphSearchPattern = null; + + m_IsGlyphSearchDirty = false; + } + + string styleName = string.IsNullOrEmpty(m_GlyphSearchPattern) ? "SearchCancelButtonEmpty" : "SearchCancelButton"; + if (GUILayout.Button(GUIContent.none, styleName)) + { + GUIUtility.keyboardControl = 0; + m_GlyphSearchPattern = string.Empty; + } + } + EditorGUILayout.EndHorizontal(); + #endregion + + // Display Page Navigation + if (!string.IsNullOrEmpty(m_GlyphSearchPattern)) + arraySize = m_GlyphSearchList.Count; + + // Display Page Navigation + DisplayPageNavigation(ref m_CurrentGlyphPage, arraySize, itemsPerPage); + } + EditorGUILayout.EndVertical(); + + if (arraySize > 0) + { + // Display each SpriteInfo entry using the SpriteInfo property drawer. + for (int i = itemsPerPage * m_CurrentGlyphPage; i < arraySize && i < itemsPerPage * (m_CurrentGlyphPage + 1); i++) + { + // Define the start of the selection region of the element. + Rect elementStartRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + int elementIndex = i; + if (!string.IsNullOrEmpty(m_GlyphSearchPattern)) + elementIndex = m_GlyphSearchList[i]; + + SerializedProperty spriteGlyphProperty = m_SpriteGlyphTableProperty.GetArrayElementAtIndex(elementIndex); + + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + { + EditorGUI.BeginDisabledGroup(i != m_selectedElement); + { + EditorGUILayout.PropertyField(spriteGlyphProperty); + } + EditorGUI.EndDisabledGroup(); + } + EditorGUILayout.EndVertical(); + + // Define the end of the selection region of the element. + Rect elementEndRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + // Check for Item selection + Rect selectionArea = new Rect(elementStartRegion.x, elementStartRegion.y, elementEndRegion.width, elementEndRegion.y - elementStartRegion.y); + if (DoSelectionCheck(selectionArea)) + { + if (m_selectedElement == i) + { + m_selectedElement = -1; + } + else + { + m_selectedElement = i; + GUIUtility.keyboardControl = 0; + } + } + + // Draw & Handle Section Area + if (m_selectedElement == i) + { + // Draw selection highlight + TMP_EditorUtility.DrawBox(selectionArea, 2f, new Color32(40, 192, 255, 255)); + + // Draw options to MoveUp, MoveDown, Add or Remove Sprites + Rect controlRect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * 1f); + controlRect.width /= 8; + + // Move sprite up. + bool guiEnabled = GUI.enabled; + if (i == 0) { GUI.enabled = false; } + if (GUI.Button(controlRect, "Up")) + { + SwapGlyphElements(i, i - 1); + } + GUI.enabled = guiEnabled; + + // Move sprite down. + controlRect.x += controlRect.width; + if (i == arraySize - 1) { GUI.enabled = false; } + if (GUI.Button(controlRect, "Down")) + { + SwapGlyphElements(i, i + 1); + } + GUI.enabled = guiEnabled; + + // Move sprite to new index + controlRect.x += controlRect.width * 2; + //if (i == arraySize - 1) { GUI.enabled = false; } + m_moveToIndex = EditorGUI.IntField(controlRect, m_moveToIndex); + controlRect.x -= controlRect.width; + if (GUI.Button(controlRect, "Goto")) + { + MoveGlyphToIndex(i, m_moveToIndex); + } + //controlRect.x += controlRect.width; + GUI.enabled = guiEnabled; + + // Add new Sprite + controlRect.x += controlRect.width * 4; + if (GUI.Button(controlRect, "+")) + { + m_SpriteGlyphTableProperty.arraySize += 1; + + int index = m_SpriteGlyphTableProperty.arraySize - 1; + + SerializedProperty newSpriteGlyphProperty = m_SpriteGlyphTableProperty.GetArrayElementAtIndex(index); + + // Copy properties of the selected element + CopyGlyphSerializedProperty(m_SpriteGlyphTableProperty.GetArrayElementAtIndex(elementIndex), ref newSpriteGlyphProperty); + + newSpriteGlyphProperty.FindPropertyRelative("m_Index").intValue = index; + + serializedObject.ApplyModifiedProperties(); + + m_IsGlyphSearchDirty = true; + + //m_SpriteAsset.UpdateLookupTables(); + } + + // Delete selected Sprite + controlRect.x += controlRect.width; + if (m_selectedElement == -1) GUI.enabled = false; + if (GUI.Button(controlRect, "-")) + { + SerializedProperty selectedSpriteGlyphProperty = m_SpriteGlyphTableProperty.GetArrayElementAtIndex(elementIndex); + + int selectedGlyphIndex = selectedSpriteGlyphProperty.FindPropertyRelative("m_Index").intValue; + + m_SpriteGlyphTableProperty.DeleteArrayElementAtIndex(elementIndex); + + // Remove all Sprite Characters referencing this glyph. + for (int j = 0; j < m_SpriteCharacterTableProperty.arraySize; j++) + { + int glyphIndex = m_SpriteCharacterTableProperty.GetArrayElementAtIndex(j).FindPropertyRelative("m_GlyphIndex").intValue; + + if (glyphIndex == selectedGlyphIndex) + { + // Remove character + m_SpriteCharacterTableProperty.DeleteArrayElementAtIndex(j); + } + } + + m_selectedElement = -1; + serializedObject.ApplyModifiedProperties(); + + m_IsGlyphSearchDirty = true; + + //m_SpriteAsset.UpdateLookupTables(); + + return; + } + + + } + } + } + + DisplayPageNavigation(ref m_CurrentGlyphPage, arraySize, itemsPerPage); + + EditorGUIUtility.labelWidth = 40f; + EditorGUIUtility.fieldWidth = 20f; + + GUILayout.Space(5f); + + // GLOBAL TOOLS + #region Global Tools + GUI.enabled = true; + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + rect = EditorGUILayout.GetControlRect(false, 40); + + float width = (rect.width - 75f) / 4; + EditorGUI.LabelField(rect, "Global Offsets & Scale", EditorStyles.boldLabel); + + + rect.x += 70; + bool old_ChangedState = GUI.changed; + + GUI.changed = false; + m_xOffset = EditorGUI.FloatField(new Rect(rect.x + 5f + width * 0, rect.y + 20, width - 5f, 18), new GUIContent("OX:"), m_xOffset); + if (GUI.changed) UpdateGlobalProperty("m_HorizontalBearingX", m_xOffset); + + m_yOffset = EditorGUI.FloatField(new Rect(rect.x + 5f + width * 1, rect.y + 20, width - 5f, 18), new GUIContent("OY:"), m_yOffset); + if (GUI.changed) UpdateGlobalProperty("m_HorizontalBearingY", m_yOffset); + + m_xAdvance = EditorGUI.FloatField(new Rect(rect.x + 5f + width * 2, rect.y + 20, width - 5f, 18), new GUIContent("ADV."), m_xAdvance); + if (GUI.changed) UpdateGlobalProperty("m_HorizontalAdvance", m_xAdvance); + + m_scale = EditorGUI.FloatField(new Rect(rect.x + 5f + width * 3, rect.y + 20, width - 5f, 18), new GUIContent("SF."), m_scale); + if (GUI.changed) UpdateGlobalProperty("m_Scale", m_scale); + + EditorGUILayout.EndVertical(); + #endregion + + GUI.changed = old_ChangedState; + + } + #endregion + + + if (serializedObject.ApplyModifiedProperties() || evt_cmd == k_UndoRedo || isAssetDirty) + { + if (m_SpriteAsset.m_IsSpriteAssetLookupTablesDirty || evt_cmd == k_UndoRedo) + m_SpriteAsset.UpdateLookupTables(); + + TMPro_EventManager.ON_SPRITE_ASSET_PROPERTY_CHANGED(true, m_SpriteAsset); + + isAssetDirty = false; + EditorUtility.SetDirty(target); + } + + // Clear selection if mouse event was not consumed. + GUI.enabled = true; + if (currentEvent.type == EventType.MouseDown && currentEvent.button == 0) + m_selectedElement = -1; + + } + + + /// + /// + /// + /// + /// + void DisplayPageNavigation(ref int currentPage, int arraySize, int itemsPerPage) + { + Rect pagePos = EditorGUILayout.GetControlRect(false, 20); + pagePos.width /= 3; + + int shiftMultiplier = Event.current.shift ? 10 : 1; // Page + Shift goes 10 page forward + + // Previous Page + GUI.enabled = currentPage > 0; + + if (GUI.Button(pagePos, "Previous Page")) + { + currentPage -= 1 * shiftMultiplier; + //m_isNewPage = true; + } + + // Page Counter + GUI.enabled = true; + pagePos.x += pagePos.width; + int totalPages = (int)(arraySize / (float)itemsPerPage + 0.999f); + GUI.Label(pagePos, "Page " + (currentPage + 1) + " / " + totalPages, TMP_UIStyleManager.centeredLabel); + + // Next Page + pagePos.x += pagePos.width; + GUI.enabled = itemsPerPage * (currentPage + 1) < arraySize; + + if (GUI.Button(pagePos, "Next Page")) + { + currentPage += 1 * shiftMultiplier; + //m_isNewPage = true; + } + + // Clamp page range + currentPage = Mathf.Clamp(currentPage, 0, arraySize / itemsPerPage); + + GUI.enabled = true; + } + + + /// + /// Method to update the properties of all sprites + /// + /// + /// + void UpdateGlobalProperty(string property, float value) + { + int arraySize = m_SpriteGlyphTableProperty.arraySize; + + for (int i = 0; i < arraySize; i++) + { + // Get a reference to the sprite glyph. + SerializedProperty spriteGlyphProperty = m_SpriteGlyphTableProperty.GetArrayElementAtIndex(i); + + if (property == "m_Scale") + { + spriteGlyphProperty.FindPropertyRelative(property).floatValue = value; + } + else + { + SerializedProperty glyphMetricsProperty = spriteGlyphProperty.FindPropertyRelative("m_Metrics"); + glyphMetricsProperty.FindPropertyRelative(property).floatValue = value; + } + } + + GUI.changed = false; + } + + // Check if any of the Style elements were clicked on. + private bool DoSelectionCheck(Rect selectionArea) + { + Event currentEvent = Event.current; + + switch (currentEvent.type) + { + case EventType.MouseDown: + if (selectionArea.Contains(currentEvent.mousePosition) && currentEvent.button == 0) + { + currentEvent.Use(); + return true; + } + break; + } + + return false; + } + + + /// + /// Swap the sprite item at the currently selected array index to another index. + /// + /// Selected index. + /// New index. + void SwapCharacterElements(int selectedIndex, int newIndex) + { + m_SpriteCharacterTableProperty.MoveArrayElement(selectedIndex, newIndex); + m_selectedElement = newIndex; + m_IsCharacterSearchDirty = true; + m_SpriteAsset.m_IsSpriteAssetLookupTablesDirty = true; + } + + /// + /// Move Sprite Element at selected index to another index and reorder sprite list. + /// + /// + /// + void MoveCharacterToIndex(int selectedIndex, int newIndex) + { + int arraySize = m_SpriteCharacterTableProperty.arraySize; + + if (newIndex >= arraySize) + newIndex = arraySize - 1; + + m_SpriteCharacterTableProperty.MoveArrayElement(selectedIndex, newIndex); + + m_selectedElement = newIndex; + m_IsCharacterSearchDirty = true; + m_SpriteAsset.m_IsSpriteAssetLookupTablesDirty = true; + + // TODO: Need to handle switching pages if the character or glyph is moved to a different page. + } + + /// + /// + /// + /// + /// + void SwapGlyphElements(int selectedIndex, int newIndex) + { + m_SpriteGlyphTableProperty.MoveArrayElement(selectedIndex, newIndex); + m_selectedElement = newIndex; + m_IsGlyphSearchDirty = true; + m_SpriteAsset.m_IsSpriteAssetLookupTablesDirty = true; + } + + /// + /// Move Sprite Element at selected index to another index and reorder sprite list. + /// + /// + /// + void MoveGlyphToIndex(int selectedIndex, int newIndex) + { + int arraySize = m_SpriteGlyphTableProperty.arraySize; + + if (newIndex >= arraySize) + newIndex = arraySize - 1; + + m_SpriteGlyphTableProperty.MoveArrayElement(selectedIndex, newIndex); + + m_selectedElement = newIndex; + m_IsGlyphSearchDirty = true; + m_SpriteAsset.m_IsSpriteAssetLookupTablesDirty = true; + + // TODO: Need to handle switching pages if the character or glyph is moved to a different page. + } + + + /// + /// + /// + /// + /// + void CopyCharacterSerializedProperty(SerializedProperty source, ref SerializedProperty target) + { + target.FindPropertyRelative("m_Name").stringValue = source.FindPropertyRelative("m_Name").stringValue; + target.FindPropertyRelative("m_HashCode").intValue = source.FindPropertyRelative("m_HashCode").intValue; + target.FindPropertyRelative("m_Unicode").intValue = source.FindPropertyRelative("m_Unicode").intValue; + target.FindPropertyRelative("m_GlyphIndex").intValue = source.FindPropertyRelative("m_GlyphIndex").intValue; + target.FindPropertyRelative("m_Scale").floatValue = source.FindPropertyRelative("m_Scale").floatValue; + } + + void CopyGlyphSerializedProperty(SerializedProperty srcGlyph, ref SerializedProperty dstGlyph) + { + // TODO : Should make a generic function which copies each of the properties. + + // Index + dstGlyph.FindPropertyRelative("m_Index").intValue = srcGlyph.FindPropertyRelative("m_Index").intValue; + + // GlyphMetrics + SerializedProperty srcGlyphMetrics = srcGlyph.FindPropertyRelative("m_Metrics"); + SerializedProperty dstGlyphMetrics = dstGlyph.FindPropertyRelative("m_Metrics"); + + dstGlyphMetrics.FindPropertyRelative("m_Width").floatValue = srcGlyphMetrics.FindPropertyRelative("m_Width").floatValue; + dstGlyphMetrics.FindPropertyRelative("m_Height").floatValue = srcGlyphMetrics.FindPropertyRelative("m_Height").floatValue; + dstGlyphMetrics.FindPropertyRelative("m_HorizontalBearingX").floatValue = srcGlyphMetrics.FindPropertyRelative("m_HorizontalBearingX").floatValue; + dstGlyphMetrics.FindPropertyRelative("m_HorizontalBearingY").floatValue = srcGlyphMetrics.FindPropertyRelative("m_HorizontalBearingY").floatValue; + dstGlyphMetrics.FindPropertyRelative("m_HorizontalAdvance").floatValue = srcGlyphMetrics.FindPropertyRelative("m_HorizontalAdvance").floatValue; + + // GlyphRect + SerializedProperty srcGlyphRect = srcGlyph.FindPropertyRelative("m_GlyphRect"); + SerializedProperty dstGlyphRect = dstGlyph.FindPropertyRelative("m_GlyphRect"); + + dstGlyphRect.FindPropertyRelative("m_X").intValue = srcGlyphRect.FindPropertyRelative("m_X").intValue; + dstGlyphRect.FindPropertyRelative("m_Y").intValue = srcGlyphRect.FindPropertyRelative("m_Y").intValue; + dstGlyphRect.FindPropertyRelative("m_Width").intValue = srcGlyphRect.FindPropertyRelative("m_Width").intValue; + dstGlyphRect.FindPropertyRelative("m_Height").intValue = srcGlyphRect.FindPropertyRelative("m_Height").intValue; + + dstGlyph.FindPropertyRelative("m_Scale").floatValue = srcGlyph.FindPropertyRelative("m_Scale").floatValue; + dstGlyph.FindPropertyRelative("m_AtlasIndex").intValue = srcGlyph.FindPropertyRelative("m_AtlasIndex").intValue; + } + + + /// + /// + /// + /// + /// + void SearchCharacterTable(string searchPattern, ref List searchResults) + { + if (searchResults == null) searchResults = new List(); + searchResults.Clear(); + + int arraySize = m_SpriteCharacterTableProperty.arraySize; + + for (int i = 0; i < arraySize; i++) + { + SerializedProperty sourceSprite = m_SpriteCharacterTableProperty.GetArrayElementAtIndex(i); + + // Check for potential match against array index + if (i.ToString().Contains(searchPattern)) + { + searchResults.Add(i); + continue; + } + + // Check for potential match against decimal id + int id = sourceSprite.FindPropertyRelative("m_GlyphIndex").intValue; + if (id.ToString().Contains(searchPattern)) + { + searchResults.Add(i); + continue; + } + + // Check for potential match against name + string name = sourceSprite.FindPropertyRelative("m_Name").stringValue.ToLower(System.Globalization.CultureInfo.InvariantCulture).Trim(); + if (name.Contains(searchPattern)) + { + searchResults.Add(i); + continue; + } + } + } + + void SearchGlyphTable(string searchPattern, ref List searchResults) + { + if (searchResults == null) searchResults = new List(); + searchResults.Clear(); + + int arraySize = m_SpriteGlyphTableProperty.arraySize; + + for (int i = 0; i < arraySize; i++) + { + SerializedProperty sourceSprite = m_SpriteGlyphTableProperty.GetArrayElementAtIndex(i); + + // Check for potential match against array index + if (i.ToString().Contains(searchPattern)) + { + searchResults.Add(i); + continue; + } + + // Check for potential match against decimal id + int id = sourceSprite.FindPropertyRelative("m_GlyphIndex").intValue; + if (id.ToString().Contains(searchPattern)) + { + searchResults.Add(i); + continue; + } + + // Check for potential match against name + string name = sourceSprite.FindPropertyRelative("m_Name").stringValue.ToLower(System.Globalization.CultureInfo.InvariantCulture).Trim(); + if (name.Contains(searchPattern)) + { + searchResults.Add(i); + continue; + } + } + } + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetEditor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetEditor.cs.meta new file mode 100644 index 0000000..9fcede3 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b09be1f217d34247af54863a2f5587e1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetImporter.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetImporter.cs new file mode 100644 index 0000000..89be4ad --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetImporter.cs @@ -0,0 +1,257 @@ +using System; +using UnityEngine; +using UnityEngine.TextCore; +using UnityEditor; +using System.IO; +using System.Collections.Generic; +using TMPro.EditorUtilities; +using TMPro.SpriteAssetUtilities; + +namespace TMPro +{ + public class TMP_SpriteAssetImporter : EditorWindow + { + // Create Sprite Asset Editor Window + [MenuItem("Window/TextMeshPro/Sprite Importer", false, 2026)] + public static void ShowFontAtlasCreatorWindow() + { + var window = GetWindow(); + window.titleContent = new GUIContent("Sprite Importer"); + window.Focus(); + } + + Texture2D m_SpriteAtlas; + SpriteAssetImportFormats m_SpriteDataFormat = SpriteAssetImportFormats.TexturePackerJsonArray; + TextAsset m_JsonFile; + + string m_CreationFeedback; + + TMP_SpriteAsset m_SpriteAsset; + List m_SpriteInfoList = new List(); + + /// + /// + /// + void OnEnable() + { + // Set Editor Window Size + SetEditorWindowSize(); + } + + /// + /// + /// + public void OnGUI() + { + DrawEditorPanel(); + } + + /// + /// + /// + private void OnDisable() + { + // Clean up sprite asset object that may have been created and not saved. + if (m_SpriteAsset != null && !EditorUtility.IsPersistent(m_SpriteAsset)) + DestroyImmediate(m_SpriteAsset); + } + + /// + /// + /// + void DrawEditorPanel() + { + // label + GUILayout.Label("Import Settings", EditorStyles.boldLabel); + + EditorGUI.BeginChangeCheck(); + + // Sprite Texture Selection + m_JsonFile = EditorGUILayout.ObjectField("Sprite Data Source", m_JsonFile, typeof(TextAsset), false) as TextAsset; + + m_SpriteDataFormat = (SpriteAssetImportFormats)EditorGUILayout.EnumPopup("Import Format", m_SpriteDataFormat); + + // Sprite Texture Selection + m_SpriteAtlas = EditorGUILayout.ObjectField("Sprite Texture Atlas", m_SpriteAtlas, typeof(Texture2D), false) as Texture2D; + + if (EditorGUI.EndChangeCheck()) + { + m_CreationFeedback = string.Empty; + } + + GUILayout.Space(10); + + GUI.enabled = m_JsonFile != null && m_SpriteAtlas != null && m_SpriteDataFormat != SpriteAssetImportFormats.None; + + // Create Sprite Asset + if (GUILayout.Button("Create Sprite Asset")) + { + m_CreationFeedback = string.Empty; + + // Clean up sprite asset object that may have been previously created. + if (m_SpriteAsset != null && !EditorUtility.IsPersistent(m_SpriteAsset)) + DestroyImmediate(m_SpriteAsset); + + // Read json data file + if (m_JsonFile != null) + { + switch (m_SpriteDataFormat) + { + case SpriteAssetImportFormats.TexturePackerJsonArray: + TexturePacker_JsonArray.SpriteDataObject jsonData = null; + try + { + jsonData = JsonUtility.FromJson(m_JsonFile.text); + } + catch + { + m_CreationFeedback = "The Sprite Data Source file [" + m_JsonFile.name + "] appears to be invalid or incorrectly formatted."; + } + + if (jsonData != null && jsonData.frames != null && jsonData.frames.Count > 0) + { + int spriteCount = jsonData.frames.Count; + + // Update import results + m_CreationFeedback = "Import Results\n--------------------\n"; + m_CreationFeedback += "" + spriteCount + " Sprites were imported from file."; + + // Create new Sprite Asset + m_SpriteAsset = CreateInstance(); + + // Assign sprite sheet / atlas texture to sprite asset + m_SpriteAsset.spriteSheet = m_SpriteAtlas; + + List spriteGlyphTable = new List(); + List spriteCharacterTable = new List(); + + PopulateSpriteTables(jsonData, spriteCharacterTable, spriteGlyphTable); + + m_SpriteAsset.spriteCharacterTable = spriteCharacterTable; + m_SpriteAsset.spriteGlyphTable = spriteGlyphTable; + } + break; + } + } + } + + GUI.enabled = true; + + // Creation Feedback + GUILayout.Space(5); + GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Height(60)); + { + EditorGUILayout.TextArea(m_CreationFeedback, TMP_UIStyleManager.label); + } + GUILayout.EndVertical(); + + GUILayout.Space(5); + GUI.enabled = m_JsonFile != null && m_SpriteAtlas && m_SpriteInfoList != null && m_SpriteAsset != null; + if (GUILayout.Button("Save Sprite Asset") && m_JsonFile != null) + { + string filePath = EditorUtility.SaveFilePanel("Save Sprite Asset File", new FileInfo(AssetDatabase.GetAssetPath(m_JsonFile)).DirectoryName, m_JsonFile.name, "asset"); + + if (filePath.Length == 0) + return; + + SaveSpriteAsset(filePath); + } + GUI.enabled = true; + } + + /// + /// + /// + /// + /// + /// + private static void PopulateSpriteTables(TexturePacker_JsonArray.SpriteDataObject spriteDataObject, List spriteCharacterTable, List spriteGlyphTable) + { + List importedSprites = spriteDataObject.frames; + + float atlasHeight = spriteDataObject.meta.size.h; + + for (int i = 0; i < importedSprites.Count; i++) + { + TexturePacker_JsonArray.Frame spriteData = importedSprites[i]; + + TMP_SpriteGlyph spriteGlyph = new TMP_SpriteGlyph(); + spriteGlyph.index = (uint)i; + + spriteGlyph.metrics = new GlyphMetrics((int)spriteData.frame.w, (int)spriteData.frame.h, -spriteData.frame.w * spriteData.pivot.x, spriteData.frame.h * spriteData.pivot.y, (int)spriteData.frame.w); + spriteGlyph.glyphRect = new GlyphRect((int)spriteData.frame.x, (int)(atlasHeight - spriteData.frame.h - spriteData.frame.y), (int)spriteData.frame.w, (int)spriteData.frame.h); + spriteGlyph.scale = 1.0f; + + spriteGlyphTable.Add(spriteGlyph); + + TMP_SpriteCharacter spriteCharacter = new TMP_SpriteCharacter(0, spriteGlyph); + spriteCharacter.name = spriteData.filename.Split('.')[0]; + spriteCharacter.unicode = 0xFFFE; + spriteCharacter.scale = 1.0f; + + spriteCharacterTable.Add(spriteCharacter); + } + } + + /// + /// + /// + /// + void SaveSpriteAsset(string filePath) + { + filePath = filePath.Substring(0, filePath.Length - 6); // Trim file extension from filePath. + + string dataPath = Application.dataPath; + + if (filePath.IndexOf(dataPath, System.StringComparison.InvariantCultureIgnoreCase) == -1) + { + Debug.LogError("You're saving the font asset in a directory outside of this project folder. This is not supported. Please select a directory under \"" + dataPath + "\""); + return; + } + + string relativeAssetPath = filePath.Substring(dataPath.Length - 6); + string dirName = Path.GetDirectoryName(relativeAssetPath); + string fileName = Path.GetFileNameWithoutExtension(relativeAssetPath); + string pathNoExt = dirName + "/" + fileName; + + // Save Sprite Asset + AssetDatabase.CreateAsset(m_SpriteAsset, pathNoExt + ".asset"); + + // Set version number + m_SpriteAsset.version = "1.1.0"; + + // Compute the hash code for the sprite asset. + m_SpriteAsset.hashCode = TMP_TextUtilities.GetSimpleHashCode(m_SpriteAsset.name); + + // Add new default material for sprite asset. + AddDefaultMaterial(m_SpriteAsset); + } + + /// + /// Create and add new default material to sprite asset. + /// + /// + static void AddDefaultMaterial(TMP_SpriteAsset spriteAsset) + { + Shader shader = Shader.Find("TextMeshPro/Sprite"); + Material material = new Material(shader); + material.SetTexture(ShaderUtilities.ID_MainTex, spriteAsset.spriteSheet); + + spriteAsset.material = material; + material.hideFlags = HideFlags.HideInHierarchy; + AssetDatabase.AddObjectToAsset(material, spriteAsset); + } + + /// + /// Limits the minimum size of the editor window. + /// + void SetEditorWindowSize() + { + EditorWindow editorWindow = this; + + Vector2 currentWindowSize = editorWindow.minSize; + + editorWindow.minSize = new Vector2(Mathf.Max(230, currentWindowSize.x), Mathf.Max(300, currentWindowSize.y)); + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetImporter.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetImporter.cs.meta new file mode 100644 index 0000000..d60763a --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetImporter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f1ea944dcf8849ebab391e461b99ccb7 +timeCreated: 1480023525 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetMenu.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetMenu.cs new file mode 100644 index 0000000..344150b --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetMenu.cs @@ -0,0 +1,389 @@ +using UnityEngine; +using UnityEngine.TextCore; +using UnityEngine.U2D; +using UnityEditor; +using System.Linq; +using System.IO; +using System.Collections; +using System.Collections.Generic; + + +namespace TMPro.EditorUtilities +{ + public static class TMP_SpriteAssetMenu + { + // Add a Context Menu to the Sprite Asset Editor Panel to Create and Add a Default Material. + [MenuItem("CONTEXT/TMP_SpriteAsset/Add Default Material", false, 2200)] + static void CopyTexture(MenuCommand command) + { + TMP_SpriteAsset spriteAsset = (TMP_SpriteAsset)command.context; + + // Make sure the sprite asset already contains a default material + if (spriteAsset != null && spriteAsset.material == null) + { + // Add new default material for sprite asset. + AddDefaultMaterial(spriteAsset); + } + } + + // Add a Context Menu to the Sprite Asset Editor Panel to update existing sprite assets. + [MenuItem("CONTEXT/TMP_SpriteAsset/Update Sprite Asset", false, 2100)] + static void UpdateSpriteAsset(MenuCommand command) + { + TMP_SpriteAsset spriteAsset = (TMP_SpriteAsset)command.context; + + if (spriteAsset == null) + return; + + UpdateSpriteAsset(spriteAsset); + } + + internal static void UpdateSpriteAsset(TMP_SpriteAsset spriteAsset) + { + // Get a list of all the sprites contained in the texture referenced by the sprite asset. + // This only works if the texture is set to sprite mode. + string filePath = AssetDatabase.GetAssetPath(spriteAsset.spriteSheet); + + if (string.IsNullOrEmpty(filePath)) + return; + + // Get all the sprites defined in the sprite sheet texture referenced by this sprite asset. + Sprite[] sprites = AssetDatabase.LoadAllAssetsAtPath(filePath).Select(x => x as Sprite).Where(x => x != null).ToArray(); + + // Return if sprite sheet texture does not have any sprites defined in it. + if (sprites.Length == 0) + { + Debug.Log("Sprite Asset [" + spriteAsset.name + "]'s atlas texture does not appear to have any sprites defined in it. Use the Unity Sprite Editor to define sprites for this texture.", spriteAsset.spriteSheet); + return; + } + + List spriteGlyphTable = spriteAsset.spriteGlyphTable; + + // Find available glpyh indexes + uint[] existingGlyphIndexes = spriteGlyphTable.Select(x => x.index).ToArray(); + List availableGlyphIndexes = new List(); + + uint lastGlyphIndex = existingGlyphIndexes.Length > 0 ? existingGlyphIndexes.Last() : 0; + int elementIndex = 0; + for (uint i = 0; i < lastGlyphIndex; i++) + { + uint existingGlyphIndex = existingGlyphIndexes[elementIndex]; + + if (i == existingGlyphIndex) + elementIndex += 1; + else + availableGlyphIndexes.Add(i); + } + + // Iterate over sprites contained in the updated sprite sheet to identify new and / or modified sprites. + for (int i = 0; i < sprites.Length; i++) + { + Sprite sprite = sprites[i]; + + // Check if current sprites is already contained in the sprite glyph table of the sprite asset. + TMP_SpriteGlyph spriteGlyph = spriteGlyphTable.FirstOrDefault(x => x.sprite == sprite); + + if (spriteGlyph != null) + { + // update existing sprite glyph + if (spriteGlyph.glyphRect.x != sprite.rect.x || spriteGlyph.glyphRect.y != sprite.rect.y || spriteGlyph.glyphRect.width != sprite.rect.width || spriteGlyph.glyphRect.height != sprite.rect.height) + spriteGlyph.glyphRect = new GlyphRect(sprite.rect); + } + else + { + TMP_SpriteCharacter spriteCharacter; + + // Check if this sprite potentially exists under the same name in the sprite character table. + if (spriteAsset.spriteCharacterTable != null && spriteAsset.spriteCharacterTable.Count > 0) + { + spriteCharacter = spriteAsset.spriteCharacterTable.FirstOrDefault(x => x.name == sprite.name); + spriteGlyph = spriteCharacter != null ? spriteGlyphTable[(int)spriteCharacter.glyphIndex] : null; + + if (spriteGlyph != null) + { + // Update sprite reference and data + spriteGlyph.sprite = sprite; + + if (spriteGlyph.glyphRect.x != sprite.rect.x || spriteGlyph.glyphRect.y != sprite.rect.y || spriteGlyph.glyphRect.width != sprite.rect.width || spriteGlyph.glyphRect.height != sprite.rect.height) + spriteGlyph.glyphRect = new GlyphRect(sprite.rect); + } + } + + // Add new Sprite Glyph to the table + spriteGlyph = new TMP_SpriteGlyph(); + + // Get available glyph index + if (availableGlyphIndexes.Count > 0) + { + spriteGlyph.index = availableGlyphIndexes[0]; + availableGlyphIndexes.RemoveAt(0); + } + else + spriteGlyph.index = (uint)spriteGlyphTable.Count; + + spriteGlyph.metrics = new GlyphMetrics(sprite.rect.width, sprite.rect.height, -sprite.pivot.x, sprite.rect.height - sprite.pivot.y, sprite.rect.width); + spriteGlyph.glyphRect = new GlyphRect(sprite.rect); + spriteGlyph.scale = 1.0f; + spriteGlyph.sprite = sprite; + + spriteGlyphTable.Add(spriteGlyph); + + spriteCharacter = new TMP_SpriteCharacter(0xFFFE, spriteGlyph); + spriteCharacter.name = sprite.name; + spriteCharacter.scale = 1.0f; + + spriteAsset.spriteCharacterTable.Add(spriteCharacter); + } + } + + // Update Sprite Character Table to replace unicode 0x0 by 0xFFFE + for (int i = 0; i < spriteAsset.spriteCharacterTable.Count; i++) + { + TMP_SpriteCharacter spriteCharacter = spriteAsset.spriteCharacterTable[i]; + if (spriteCharacter.unicode == 0) + spriteCharacter.unicode = 0xFFFE; + } + + // Sort glyph table by glyph index + spriteAsset.SortGlyphTable(); + spriteAsset.UpdateLookupTables(); + TMPro_EventManager.ON_SPRITE_ASSET_PROPERTY_CHANGED(true, spriteAsset); + + } + + + [MenuItem("Assets/Create/TextMeshPro/Sprite Asset", false, 110)] + public static void CreateSpriteAsset() + { + Object target = Selection.activeObject; + + if (target == null || target.GetType() != typeof(Texture2D)) // && target.GetType() != typeof(SpriteAtlas))) + { + Debug.LogWarning("A texture must first be selected in order to create a TextMesh Pro Sprite Asset."); + return; + } + + // Get the path to the selected asset. + string filePathWithName = AssetDatabase.GetAssetPath(target); + string fileNameWithExtension = Path.GetFileName(filePathWithName); + string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(filePathWithName); + string filePath = filePathWithName.Replace(fileNameWithExtension, ""); + + + // Create new Sprite Asset + TMP_SpriteAsset spriteAsset = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(spriteAsset, filePath + fileNameWithoutExtension + ".asset"); + + spriteAsset.version = "1.1.0"; + + // Compute the hash code for the sprite asset. + spriteAsset.hashCode = TMP_TextUtilities.GetSimpleHashCode(spriteAsset.name); + + List spriteGlyphTable = new List(); + List spriteCharacterTable = new List(); + + if (target.GetType() == typeof(Texture2D)) + { + Texture2D sourceTex = target as Texture2D; + + // Assign new Sprite Sheet texture to the Sprite Asset. + spriteAsset.spriteSheet = sourceTex; + + PopulateSpriteTables(sourceTex, ref spriteCharacterTable, ref spriteGlyphTable); + + spriteAsset.spriteCharacterTable = spriteCharacterTable; + spriteAsset.spriteGlyphTable = spriteGlyphTable; + + // Add new default material for sprite asset. + AddDefaultMaterial(spriteAsset); + } + else if (target.GetType() == typeof(SpriteAtlas)) + { + //SpriteAtlas spriteAtlas = target as SpriteAtlas; + + //PopulateSpriteTables(spriteAtlas, ref spriteCharacterTable, ref spriteGlyphTable); + + //spriteAsset.spriteCharacterTable = spriteCharacterTable; + //spriteAsset.spriteGlyphTable = spriteGlyphTable; + + //spriteAsset.spriteSheet = spriteGlyphTable[0].sprite.texture; + + //// Add new default material for sprite asset. + //AddDefaultMaterial(spriteAsset); + } + + // Update Lookup tables. + spriteAsset.UpdateLookupTables(); + + // Get the Sprites contained in the Sprite Sheet + EditorUtility.SetDirty(spriteAsset); + + //spriteAsset.sprites = sprites; + + // Set source texture back to Not Readable. + //texImporter.isReadable = false; + + AssetDatabase.SaveAssets(); + + AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(spriteAsset)); // Re-import font asset to get the new updated version. + + //AssetDatabase.Refresh(); + } + + + private static void PopulateSpriteTables(Texture source, ref List spriteCharacterTable, ref List spriteGlyphTable) + { + //Debug.Log("Creating new Sprite Asset."); + + string filePath = AssetDatabase.GetAssetPath(source); + + // Get all the Sprites sorted by Index + Sprite[] sprites = AssetDatabase.LoadAllAssetsAtPath(filePath).Select(x => x as Sprite).Where(x => x != null).OrderByDescending(x => x.rect.y).ThenBy(x => x.rect.x).ToArray(); + + for (int i = 0; i < sprites.Length; i++) + { + Sprite sprite = sprites[i]; + + TMP_SpriteGlyph spriteGlyph = new TMP_SpriteGlyph(); + spriteGlyph.index = (uint)i; + spriteGlyph.metrics = new GlyphMetrics(sprite.rect.width, sprite.rect.height, -sprite.pivot.x, sprite.rect.height - sprite.pivot.y, sprite.rect.width); + spriteGlyph.glyphRect = new GlyphRect(sprite.rect); + spriteGlyph.scale = 1.0f; + spriteGlyph.sprite = sprite; + + spriteGlyphTable.Add(spriteGlyph); + + TMP_SpriteCharacter spriteCharacter = new TMP_SpriteCharacter(0xFFFE, spriteGlyph); + spriteCharacter.name = sprite.name; + spriteCharacter.scale = 1.0f; + + spriteCharacterTable.Add(spriteCharacter); + } + } + + + private static void PopulateSpriteTables(SpriteAtlas spriteAtlas, ref List spriteCharacterTable, ref List spriteGlyphTable) + { + // Get number of sprites contained in the sprite atlas. + int spriteCount = spriteAtlas.spriteCount; + Sprite[] sprites = new Sprite[spriteCount]; + + // Get all the sprites + spriteAtlas.GetSprites(sprites); + + for (int i = 0; i < sprites.Length; i++) + { + Sprite sprite = sprites[i]; + + TMP_SpriteGlyph spriteGlyph = new TMP_SpriteGlyph(); + spriteGlyph.index = (uint)i; + spriteGlyph.metrics = new GlyphMetrics(sprite.textureRect.width, sprite.textureRect.height, -sprite.pivot.x, sprite.textureRect.height - sprite.pivot.y, sprite.textureRect.width); + spriteGlyph.glyphRect = new GlyphRect(sprite.textureRect); + spriteGlyph.scale = 1.0f; + spriteGlyph.sprite = sprite; + + spriteGlyphTable.Add(spriteGlyph); + + TMP_SpriteCharacter spriteCharacter = new TMP_SpriteCharacter(0xFFFE, spriteGlyph); + spriteCharacter.name = sprite.name; + spriteCharacter.scale = 1.0f; + + spriteCharacterTable.Add(spriteCharacter); + } + } + + + /// + /// Create and add new default material to sprite asset. + /// + /// + private static void AddDefaultMaterial(TMP_SpriteAsset spriteAsset) + { + Shader shader = Shader.Find("TextMeshPro/Sprite"); + Material material = new Material(shader); + material.SetTexture(ShaderUtilities.ID_MainTex, spriteAsset.spriteSheet); + + spriteAsset.material = material; + material.hideFlags = HideFlags.HideInHierarchy; + AssetDatabase.AddObjectToAsset(material, spriteAsset); + } + + + // Update existing SpriteInfo + private static List UpdateSpriteInfo(TMP_SpriteAsset spriteAsset) + { + //Debug.Log("Updating Sprite Asset."); + + string filePath = AssetDatabase.GetAssetPath(spriteAsset.spriteSheet); + + // Get all the Sprites sorted Left to Right / Top to Bottom + Sprite[] sprites = AssetDatabase.LoadAllAssetsAtPath(filePath).Select(x => x as Sprite).Where(x => x != null).OrderByDescending(x => x.rect.y).ThenBy(x => x.rect.x).ToArray(); + + for (int i = 0; i < sprites.Length; i++) + { + Sprite sprite = sprites[i]; + + // Check if the sprite is already contained in the SpriteInfoList + int index = -1; + if (spriteAsset.spriteInfoList.Count > i && spriteAsset.spriteInfoList[i].sprite != null) + index = spriteAsset.spriteInfoList.FindIndex(item => item.sprite.GetInstanceID() == sprite.GetInstanceID()); + + // Use existing SpriteInfo if it already exists + TMP_Sprite spriteInfo = index == -1 ? new TMP_Sprite() : spriteAsset.spriteInfoList[index]; + + Rect spriteRect = sprite.rect; + spriteInfo.x = spriteRect.x; + spriteInfo.y = spriteRect.y; + spriteInfo.width = spriteRect.width; + spriteInfo.height = spriteRect.height; + + // Get Sprite Pivot + Vector2 pivot = new Vector2(0 - (sprite.bounds.min.x) / (sprite.bounds.extents.x * 2), 0 - (sprite.bounds.min.y) / (sprite.bounds.extents.y * 2)); + + // The position of the pivot influences the Offset position. + spriteInfo.pivot = new Vector2(0 - pivot.x * spriteRect.width, spriteRect.height - pivot.y * spriteRect.height); + + if (index == -1) + { + // Find the next available index for this Sprite + int[] ids = spriteAsset.spriteInfoList.Select(item => item.id).ToArray(); + + int id = 0; + for (int j = 0; j < ids.Length; j++ ) + { + if (ids[0] != 0) break; + + if (j > 0 && (ids[j] - ids[j - 1]) > 1) + { + id = ids[j - 1] + 1; + break; + } + + id = j + 1; + } + + spriteInfo.sprite = sprite; + spriteInfo.name = sprite.name; + spriteInfo.hashCode = TMP_TextUtilities.GetSimpleHashCode(spriteInfo.name); + spriteInfo.id = id; + spriteInfo.xAdvance = spriteRect.width; + spriteInfo.scale = 1.0f; + + spriteInfo.xOffset = spriteInfo.pivot.x; + spriteInfo.yOffset = spriteInfo.pivot.y; + + spriteAsset.spriteInfoList.Add(spriteInfo); + + // Sort the Sprites by ID + spriteAsset.spriteInfoList = spriteAsset.spriteInfoList.OrderBy(s => s.id).ToList(); + } + else + { + spriteAsset.spriteInfoList[index] = spriteInfo; + } + } + + return spriteAsset.spriteInfoList; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetMenu.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetMenu.cs.meta new file mode 100644 index 0000000..850ab1f --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteAssetMenu.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1048a87135154606808bf2030da32d18 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteCharacterPropertyDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteCharacterPropertyDrawer.cs new file mode 100644 index 0000000..bc50161 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteCharacterPropertyDrawer.cs @@ -0,0 +1,227 @@ +using UnityEngine; +using UnityEngine.TextCore; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(TMP_SpriteCharacter))] + public class TMP_SpriteCharacterPropertyDrawer : PropertyDrawer + { + int m_GlyphSelectedForEditing = -1; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty prop_SpriteName = property.FindPropertyRelative("m_Name"); + SerializedProperty prop_SpriteNameHashCode = property.FindPropertyRelative("m_HashCode"); + SerializedProperty prop_SpriteUnicode = property.FindPropertyRelative("m_Unicode"); + SerializedProperty prop_SpriteGlyphIndex = property.FindPropertyRelative("m_GlyphIndex"); + SerializedProperty prop_SpriteScale = property.FindPropertyRelative("m_Scale"); + + + GUIStyle style = new GUIStyle(EditorStyles.label); + style.richText = true; + + EditorGUIUtility.labelWidth = 40f; + EditorGUIUtility.fieldWidth = 50; + + Rect rect = new Rect(position.x + 60, position.y, position.width, 49); + + // Display non-editable fields + if (GUI.enabled == false) + { + // Sprite Character Index + int spriteCharacterIndex; + int.TryParse(property.displayName.Split(' ')[1], out spriteCharacterIndex); + EditorGUI.LabelField(new Rect(rect.x, rect.y, 75f, 18), new GUIContent("Index: " + spriteCharacterIndex + ""), style); + + EditorGUI.LabelField(new Rect(rect.x + 75f, rect.y, 120f, 18), new GUIContent("Unicode: 0x" + prop_SpriteUnicode.intValue.ToString("X") + ""), style); + EditorGUI.LabelField(new Rect(rect.x + 195f, rect.y, rect.width - 255, 18), new GUIContent("Name: " + prop_SpriteName.stringValue + ""), style); + + EditorGUI.LabelField(new Rect(rect.x, rect.y + 18, 120, 18), new GUIContent("Glyph ID: " + prop_SpriteGlyphIndex.intValue + ""), style); + + // Draw Sprite Glyph (if exists) + DrawSpriteGlyph(position, property); + + EditorGUI.LabelField(new Rect(rect.x, rect.y + 36, 80, 18), new GUIContent("Scale: " + prop_SpriteScale.floatValue + ""), style); + } + else // Display editable fields + { + // Get a reference to the underlying Sprite Asset + TMP_SpriteAsset spriteAsset = property.serializedObject.targetObject as TMP_SpriteAsset; + + // Sprite Character Index + int spriteCharacterIndex; + int.TryParse(property.displayName.Split(' ')[1], out spriteCharacterIndex); + + EditorGUI.LabelField(new Rect(rect.x, rect.y, 75f, 18), new GUIContent("Index: " + spriteCharacterIndex + ""), style); + + EditorGUIUtility.labelWidth = 55f; + GUI.SetNextControlName("Unicode Input"); + EditorGUI.BeginChangeCheck(); + string unicode = EditorGUI.DelayedTextField(new Rect(rect.x + 75f, rect.y, 120, 18), "Unicode:", prop_SpriteUnicode.intValue.ToString("X")); + + if (GUI.GetNameOfFocusedControl() == "Unicode Input") + { + //Filter out unwanted characters. + char chr = Event.current.character; + if ((chr < '0' || chr > '9') && (chr < 'a' || chr > 'f') && (chr < 'A' || chr > 'F')) + { + Event.current.character = '\0'; + } + } + + if (EditorGUI.EndChangeCheck()) + { + // Update Unicode value + prop_SpriteUnicode.intValue = TMP_TextUtilities.StringHexToInt(unicode); + spriteAsset.m_IsSpriteAssetLookupTablesDirty = true; + } + + EditorGUIUtility.labelWidth = 41f; + EditorGUI.BeginChangeCheck(); + EditorGUI.DelayedTextField(new Rect(rect.x + 195f, rect.y, rect.width - 255, 18), prop_SpriteName, new GUIContent("Name:")); + if (EditorGUI.EndChangeCheck()) + { + // Recompute hashCode for new name + prop_SpriteNameHashCode.intValue = TMP_TextUtilities.GetSimpleHashCode(prop_SpriteName.stringValue); + spriteAsset.m_IsSpriteAssetLookupTablesDirty = true; + } + + EditorGUIUtility.labelWidth = 59f; + EditorGUI.BeginChangeCheck(); + EditorGUI.DelayedIntField(new Rect(rect.x, rect.y + 18, 100, 18), prop_SpriteGlyphIndex, new GUIContent("Glyph ID:")); + if (EditorGUI.EndChangeCheck()) + { + spriteAsset.m_IsSpriteAssetLookupTablesDirty = true; + } + + // Draw Sprite Glyph (if exists) + DrawSpriteGlyph(position, property); + + int glyphIndex = prop_SpriteGlyphIndex.intValue; + + // Reset glyph selection if new character has been selected. + if (GUI.enabled && m_GlyphSelectedForEditing != glyphIndex) + m_GlyphSelectedForEditing = -1; + + // Display button to edit the glyph data. + if (GUI.Button(new Rect(rect.x + 120, rect.y + 18, 75, 18), new GUIContent("Edit Glyph"))) + { + if (m_GlyphSelectedForEditing == -1) + m_GlyphSelectedForEditing = glyphIndex; + else + m_GlyphSelectedForEditing = -1; + + // Button clicks should not result in potential change. + GUI.changed = false; + } + + // Show the glyph property drawer if selected + if (glyphIndex == m_GlyphSelectedForEditing && GUI.enabled) + { + if (spriteAsset != null) + { + // Lookup glyph and draw glyph (if available) + int elementIndex = spriteAsset.spriteGlyphTable.FindIndex(item => item.index == glyphIndex); + + if (elementIndex != -1) + { + // Get a reference to the Sprite Glyph Table + SerializedProperty prop_SpriteGlyphTable = property.serializedObject.FindProperty("m_SpriteGlyphTable"); + + SerializedProperty prop_SpriteGlyph = prop_SpriteGlyphTable.GetArrayElementAtIndex(elementIndex); + SerializedProperty prop_GlyphMetrics = prop_SpriteGlyph.FindPropertyRelative("m_Metrics"); + SerializedProperty prop_GlyphRect = prop_SpriteGlyph.FindPropertyRelative("m_GlyphRect"); + + Rect newRect = EditorGUILayout.GetControlRect(false, 115); + EditorGUI.DrawRect(new Rect(newRect.x + 62, newRect.y - 20, newRect.width - 62, newRect.height - 5), new Color(0.1f, 0.1f, 0.1f, 0.45f)); + EditorGUI.DrawRect(new Rect(newRect.x + 63, newRect.y - 19, newRect.width - 64, newRect.height - 7), new Color(0.3f, 0.3f, 0.3f, 0.8f)); + + // Display GlyphRect + newRect.x += 65; + newRect.y -= 18; + newRect.width += 5; + EditorGUI.PropertyField(newRect, prop_GlyphRect); + + // Display GlyphMetrics + newRect.y += 45; + EditorGUI.PropertyField(newRect, prop_GlyphMetrics); + + rect.y += 120; + } + } + } + + EditorGUIUtility.labelWidth = 39f; + EditorGUI.PropertyField(new Rect(rect.x, rect.y + 36, 80, 18), prop_SpriteScale, new GUIContent("Scale:")); + } + } + + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return 58; + } + + + void DrawSpriteGlyph(Rect position, SerializedProperty property) + { + // Get a reference to the sprite glyph table + TMP_SpriteAsset spriteAsset = property.serializedObject.targetObject as TMP_SpriteAsset; + + if (spriteAsset == null) + return; + + int glyphIndex = property.FindPropertyRelative("m_GlyphIndex").intValue; + + // Lookup glyph and draw glyph (if available) + int elementIndex = spriteAsset.spriteGlyphTable.FindIndex(item => item.index == glyphIndex); + + if (elementIndex != -1) + { + // Get a reference to the Sprite Glyph Table + SerializedProperty prop_SpriteGlyphTable = property.serializedObject.FindProperty("m_SpriteGlyphTable"); + SerializedProperty prop_SpriteGlyph = prop_SpriteGlyphTable.GetArrayElementAtIndex(elementIndex); + SerializedProperty prop_GlyphRect = prop_SpriteGlyph.FindPropertyRelative("m_GlyphRect"); + + // Get a reference to the sprite texture + Texture tex = spriteAsset.spriteSheet; + + // Return if we don't have a texture assigned to the sprite asset. + if (tex == null) + { + Debug.LogWarning("Please assign a valid Sprite Atlas texture to the [" + spriteAsset.name + "] Sprite Asset.", spriteAsset); + return; + } + + Vector2 spriteTexPosition = new Vector2(position.x, position.y); + Vector2 spriteSize = new Vector2(48, 48); + Vector2 alignmentOffset = new Vector2((58 - spriteSize.x) / 2, (58 - spriteSize.y) / 2); + + float x = prop_GlyphRect.FindPropertyRelative("m_X").intValue; + float y = prop_GlyphRect.FindPropertyRelative("m_Y").intValue; + float spriteWidth = prop_GlyphRect.FindPropertyRelative("m_Width").intValue; + float spriteHeight = prop_GlyphRect.FindPropertyRelative("m_Height").intValue; + + if (spriteWidth >= spriteHeight) + { + spriteSize.y = spriteHeight * spriteSize.x / spriteWidth; + spriteTexPosition.y += (spriteSize.x - spriteSize.y) / 2; + } + else + { + spriteSize.x = spriteWidth * spriteSize.y / spriteHeight; + spriteTexPosition.x += (spriteSize.y - spriteSize.x) / 2; + } + + // Compute the normalized texture coordinates + Rect texCoords = new Rect(x / tex.width, y / tex.height, spriteWidth / tex.width, spriteHeight / tex.height); + GUI.DrawTextureWithTexCoords(new Rect(spriteTexPosition.x + alignmentOffset.x, spriteTexPosition.y + alignmentOffset.y, spriteSize.x, spriteSize.y), tex, texCoords, true); + } + } + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteCharacterPropertyDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteCharacterPropertyDrawer.cs.meta new file mode 100644 index 0000000..0733749 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteCharacterPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 37cff9f5a86ae494c8cb04423580480d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteGlyphPropertyDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteGlyphPropertyDrawer.cs new file mode 100644 index 0000000..cf79bc8 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteGlyphPropertyDrawer.cs @@ -0,0 +1,94 @@ +using UnityEngine; +using UnityEngine.TextCore; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(TMP_SpriteGlyph))] + public class TMP_SpriteGlyphPropertyDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty prop_GlyphIndex = property.FindPropertyRelative("m_Index"); + SerializedProperty prop_GlyphMetrics = property.FindPropertyRelative("m_Metrics"); + SerializedProperty prop_GlyphRect = property.FindPropertyRelative("m_GlyphRect"); + SerializedProperty prop_Scale = property.FindPropertyRelative("m_Scale"); + SerializedProperty prop_AtlasIndex = property.FindPropertyRelative("m_AtlasIndex"); + + GUIStyle style = new GUIStyle(EditorStyles.label); + style.richText = true; + + Rect rect = new Rect(position.x + 70, position.y, position.width, 49); + + // Draw GlyphRect + EditorGUI.PropertyField(rect, prop_GlyphRect); + + // Draw GlyphMetrics + rect.y += 45; + EditorGUI.PropertyField(rect, prop_GlyphMetrics); + + EditorGUIUtility.labelWidth = 40f; + EditorGUI.PropertyField(new Rect(rect.x, rect.y + 65, 75, 18), prop_Scale, new GUIContent("Scale:")); + + EditorGUIUtility.labelWidth = 74f; + EditorGUI.PropertyField(new Rect(rect.x + 85, rect.y + 65, 95, 18), prop_AtlasIndex, new GUIContent("Atlas Index:")); + + DrawGlyph(position, property); + + int spriteCharacterIndex; + int.TryParse(property.displayName.Split(' ')[1], out spriteCharacterIndex); + + EditorGUI.LabelField(new Rect(position.x, position.y + 5, 64f, 18f), new GUIContent("#" + spriteCharacterIndex), style); + + float labelWidthID = GUI.skin.label.CalcSize(new GUIContent("ID: " + prop_GlyphIndex.intValue)).x; + EditorGUI.LabelField(new Rect(position.x + (64 - labelWidthID) / 2, position.y + 110, 64f, 18f), new GUIContent("ID: " + prop_GlyphIndex.intValue + ""), style); + } + + void DrawGlyph(Rect position, SerializedProperty property) + { + // Get a reference to the sprite texture + Texture tex = (property.serializedObject.targetObject as TMP_SpriteAsset).spriteSheet; + + // Return if we don't have a texture assigned to the sprite asset. + if (tex == null) + { + Debug.LogWarning("Please assign a valid Sprite Atlas texture to the [" + property.serializedObject.targetObject.name + "] Sprite Asset.", property.serializedObject.targetObject); + return; + } + + Vector2 spriteTexPosition = new Vector2(position.x, position.y); + Vector2 spriteSize = new Vector2(65, 65); + + SerializedProperty prop_GlyphRect = property.FindPropertyRelative("m_GlyphRect"); + + int spriteImageX = prop_GlyphRect.FindPropertyRelative("m_X").intValue; + int spriteImageY = prop_GlyphRect.FindPropertyRelative("m_Y").intValue; + int spriteImageWidth = prop_GlyphRect.FindPropertyRelative("m_Width").intValue; + int spriteImageHeight = prop_GlyphRect.FindPropertyRelative("m_Height").intValue; + + if (spriteImageWidth >= spriteImageHeight) + { + spriteSize.y = spriteImageHeight * spriteSize.x / spriteImageWidth; + spriteTexPosition.y += (spriteSize.x - spriteSize.y) / 2; + } + else + { + spriteSize.x = spriteImageWidth * spriteSize.y / spriteImageHeight; + spriteTexPosition.x += (spriteSize.y - spriteSize.x) / 2; + } + + // Compute the normalized texture coordinates + Rect texCoords = new Rect((float)spriteImageX / tex.width, (float)spriteImageY / tex.height, (float)spriteImageWidth / tex.width, (float)spriteImageHeight / tex.height); + GUI.DrawTextureWithTexCoords(new Rect(spriteTexPosition.x + 5, spriteTexPosition.y + 32f, spriteSize.x, spriteSize.y), tex, texCoords, true); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return 130f; + } + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteGlyphPropertyDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteGlyphPropertyDrawer.cs.meta new file mode 100644 index 0000000..0414562 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SpriteGlyphPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 056819c66570ca54cadb72330a354050 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleAssetMenu.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleAssetMenu.cs new file mode 100644 index 0000000..480a776 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleAssetMenu.cs @@ -0,0 +1,56 @@ +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + public static class TMP_StyleAssetMenu + { + + [MenuItem("Assets/Create/TextMeshPro/Style Sheet", false, 120)] + public static void CreateTextMeshProObjectPerform() + { + string filePath; + if (Selection.assetGUIDs.Length == 0) + { + // No asset selected. + filePath = "Assets"; + } + else + { + // Get the path of the selected folder or asset. + filePath = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]); + + // Get the file extension of the selected asset as it might need to be removed. + string fileExtension = Path.GetExtension(filePath); + if (fileExtension != "") + { + filePath = Path.GetDirectoryName(filePath); + } + } + + + string filePathWithName = AssetDatabase.GenerateUniqueAssetPath(filePath + "/Text StyleSheet.asset"); + + //// Create new Style Sheet Asset. + TMP_StyleSheet styleSheet = ScriptableObject.CreateInstance(); + + // Create Normal default style + TMP_Style style = new TMP_Style("Normal", string.Empty, string.Empty); + styleSheet.styles.Add(style); + + AssetDatabase.CreateAsset(styleSheet, filePathWithName); + + EditorUtility.SetDirty(styleSheet); + + AssetDatabase.SaveAssets(); + + EditorUtility.FocusProjectWindow(); + EditorGUIUtility.PingObject(styleSheet); + } + } + +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleAssetMenu.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleAssetMenu.cs.meta new file mode 100644 index 0000000..cb44dc2 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleAssetMenu.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 23a562f2cac6401f9f91251c68a1a794 +timeCreated: 1432690168 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleSheetEditor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleSheetEditor.cs new file mode 100644 index 0000000..2968c29 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleSheetEditor.cs @@ -0,0 +1,318 @@ +using System; +using UnityEngine; +using UnityEditor; + + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(TMP_Style))] + public class StyleDrawer : PropertyDrawer + { + public static readonly float height = 95f; + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return height; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty nameProperty = property.FindPropertyRelative("m_Name"); + SerializedProperty hashCodeProperty = property.FindPropertyRelative("m_HashCode"); + SerializedProperty openingDefinitionProperty = property.FindPropertyRelative("m_OpeningDefinition"); + SerializedProperty closingDefinitionProperty = property.FindPropertyRelative("m_ClosingDefinition"); + SerializedProperty openingDefinitionArray = property.FindPropertyRelative("m_OpeningTagArray"); + SerializedProperty closingDefinitionArray = property.FindPropertyRelative("m_ClosingTagArray"); + + + EditorGUIUtility.labelWidth = 86; + position.height = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + float labelHeight = position.height + 2f; + + EditorGUI.BeginChangeCheck(); + Rect rect0 = new Rect(position.x, position.y, (position.width) / 2 + 5, position.height); + EditorGUI.PropertyField(rect0, nameProperty); + if (EditorGUI.EndChangeCheck()) + { + // Recompute HashCode if name has changed. + hashCodeProperty.intValue = TMP_TextUtilities.GetSimpleHashCode(nameProperty.stringValue); + + property.serializedObject.ApplyModifiedProperties(); + + // Dictionary needs to be updated since HashCode has changed. + TMP_StyleSheet styleSheet = property.serializedObject.targetObject as TMP_StyleSheet; + styleSheet.RefreshStyles(); + } + + // HashCode + Rect rect1 = new Rect(rect0.x + rect0.width + 5, position.y, 65, position.height); + GUI.Label(rect1, "HashCode"); + GUI.enabled = false; + rect1.x += 65; + rect1.width = position.width / 2 - 75; + EditorGUI.PropertyField(rect1, hashCodeProperty, GUIContent.none); + + GUI.enabled = true; + + // Text Tags + EditorGUI.BeginChangeCheck(); + + // Opening Tags + position.y += labelHeight; + GUI.Label(position, "Opening Tags"); + Rect textRect1 = new Rect(110, position.y, position.width - 86, 35); + openingDefinitionProperty.stringValue = EditorGUI.TextArea(textRect1, openingDefinitionProperty.stringValue); + if (EditorGUI.EndChangeCheck()) + { + // If any properties have changed, we need to update the Opening and Closing Arrays. + int size = openingDefinitionProperty.stringValue.Length; + + // Adjust array size to match new string length. + if (openingDefinitionArray.arraySize != size) openingDefinitionArray.arraySize = size; + + for (int i = 0; i < size; i++) + { + SerializedProperty element = openingDefinitionArray.GetArrayElementAtIndex(i); + element.intValue = openingDefinitionProperty.stringValue[i]; + } + } + + EditorGUI.BeginChangeCheck(); + + // Closing Tags + position.y += 38; + GUI.Label(position, "Closing Tags"); + Rect textRect2 = new Rect(110, position.y, position.width - 86, 35); + closingDefinitionProperty.stringValue = EditorGUI.TextArea(textRect2, closingDefinitionProperty.stringValue); + + if (EditorGUI.EndChangeCheck()) + { + // If any properties have changed, we need to update the Opening and Closing Arrays. + int size = closingDefinitionProperty.stringValue.Length; + + // Adjust array size to match new string length. + if (closingDefinitionArray.arraySize != size) closingDefinitionArray.arraySize = size; + + for (int i = 0; i < size; i++) + { + SerializedProperty element = closingDefinitionArray.GetArrayElementAtIndex(i); + element.intValue = closingDefinitionProperty.stringValue[i]; + } + } + + } + } + + + + [CustomEditor(typeof(TMP_StyleSheet)), CanEditMultipleObjects] + public class TMP_StyleEditor : Editor + { + + TMP_StyleSheet m_StyleSheet; + SerializedProperty m_StyleListProp; + + int m_SelectedElement = -1; + int m_Page; + + bool m_IsStyleSheetDirty; + + + void OnEnable() + { + m_StyleSheet = target as TMP_StyleSheet; + m_StyleListProp = serializedObject.FindProperty("m_StyleList"); + } + + + public override void OnInspectorGUI() + { + Event currentEvent = Event.current; + + serializedObject.Update(); + + m_IsStyleSheetDirty = false; + int elementCount = m_StyleListProp.arraySize; + int itemsPerPage = (Screen.height - 100) / 110; + + if (elementCount > 0) + { + // Display each Style entry using the StyleDrawer PropertyDrawer. + for (int i = itemsPerPage * m_Page; i < elementCount && i < itemsPerPage * (m_Page + 1); i++) + { + // Define the start of the selection region of the element. + Rect elementStartRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + + SerializedProperty styleProperty = m_StyleListProp.GetArrayElementAtIndex(i); + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(styleProperty); + EditorGUILayout.EndVertical(); + if (EditorGUI.EndChangeCheck()) + { + // + } + + // Define the end of the selection region of the element. + Rect elementEndRegion = GUILayoutUtility.GetRect(0f, 0f, GUILayout.ExpandWidth(true)); + + // Check for Item selection + Rect selectionArea = new Rect(elementStartRegion.x, elementStartRegion.y, elementEndRegion.width, elementEndRegion.y - elementStartRegion.y); + if (DoSelectionCheck(selectionArea)) + { + if (m_SelectedElement == i) + { + m_SelectedElement = -1; + } + else + { + m_SelectedElement = i; + GUIUtility.keyboardControl = 0; + } + } + + // Handle Selection Highlighting + if (m_SelectedElement == i) + TMP_EditorUtility.DrawBox(selectionArea, 2f, new Color32(40, 192, 255, 255)); + } + } + + // STYLE LIST MANAGEMENT + Rect rect = EditorGUILayout.GetControlRect(false, 20); + rect.width /= 6; + + // Move Style up. + bool guiEnabled = GUI.enabled; + if (m_SelectedElement == -1 || m_SelectedElement == 0) { GUI.enabled = false; } + if (GUI.Button(rect, "Up")) + { + SwapStyleElements(m_SelectedElement, m_SelectedElement - 1); + } + GUI.enabled = guiEnabled; + + // Move Style down. + rect.x += rect.width; + if (m_SelectedElement == elementCount - 1) { GUI.enabled = false; } + if (GUI.Button(rect, "Down")) + { + SwapStyleElements(m_SelectedElement, m_SelectedElement + 1); + } + GUI.enabled = guiEnabled; + + // Add Style + rect.x += rect.width * 3; + if (GUI.Button(rect, "+")) + { + int index = m_SelectedElement == -1 ? 0 : m_SelectedElement; + + if (index > elementCount) + index = elementCount; + + // Copy selected element + m_StyleListProp.InsertArrayElementAtIndex(index); + + // Select newly inserted element + m_SelectedElement = index + 1; + + serializedObject.ApplyModifiedProperties(); + m_StyleSheet.RefreshStyles(); + } + + // Delete style + rect.x += rect.width; + if (m_SelectedElement == -1 || m_SelectedElement >= elementCount) GUI.enabled = false; + if (GUI.Button(rect, "-")) + { + int index = m_SelectedElement == -1 ? 0 : m_SelectedElement; + + m_StyleListProp.DeleteArrayElementAtIndex(index); + + m_SelectedElement = -1; + serializedObject.ApplyModifiedProperties(); + m_StyleSheet.RefreshStyles(); + return; + } + + // Return if we can't display any items. + if (itemsPerPage == 0) return; + + // DISPLAY PAGE CONTROLS + int shiftMultiplier = currentEvent.shift ? 10 : 1; // Page + Shift goes 10 page forward + + Rect pagePos = EditorGUILayout.GetControlRect(false, 20); + pagePos.width /= 3; + + // Previous Page + if (m_Page > 0) GUI.enabled = true; + else GUI.enabled = false; + + if (GUI.Button(pagePos, "Previous")) + m_Page -= 1 * shiftMultiplier; + + // PAGE COUNTER + GUI.enabled = true; + pagePos.x += pagePos.width; + int totalPages = (int)(elementCount / (float)itemsPerPage + 0.999f); + GUI.Label(pagePos, "Page " + (m_Page + 1) + " / " + totalPages, TMP_UIStyleManager.centeredLabel); + + // Next Page + pagePos.x += pagePos.width; + if (itemsPerPage * (m_Page + 1) < elementCount) GUI.enabled = true; + else GUI.enabled = false; + + if (GUI.Button(pagePos, "Next")) + m_Page += 1 * shiftMultiplier; + + // Clamp page range + m_Page = Mathf.Clamp(m_Page, 0, elementCount / itemsPerPage); + + + if (serializedObject.ApplyModifiedProperties()) + { + TMPro_EventManager.ON_TEXT_STYLE_PROPERTY_CHANGED(true); + + if (m_IsStyleSheetDirty) + { + m_IsStyleSheetDirty = false; + m_StyleSheet.RefreshStyles(); + } + } + + // Clear selection if mouse event was not consumed. + GUI.enabled = true; + if (currentEvent.type == EventType.MouseDown && currentEvent.button == 0) + m_SelectedElement = -1; + + } + + + // Check if any of the Style elements were clicked on. + static bool DoSelectionCheck(Rect selectionArea) + { + Event currentEvent = Event.current; + + switch (currentEvent.type) + { + case EventType.MouseDown: + if (selectionArea.Contains(currentEvent.mousePosition) && currentEvent.button == 0) + { + currentEvent.Use(); + return true; + } + break; + } + + return false; + } + + void SwapStyleElements(int selectedIndex, int newIndex) + { + m_StyleListProp.MoveArrayElement(selectedIndex, newIndex); + m_SelectedElement = newIndex; + m_IsStyleSheetDirty = true; + } + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleSheetEditor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleSheetEditor.cs.meta new file mode 100644 index 0000000..a3bff26 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_StyleSheetEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 34e2c9b9d9e44953933afe37461f44e6 +timeCreated: 1432683777 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMeshUI_Editor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMeshUI_Editor.cs new file mode 100644 index 0000000..679f445 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMeshUI_Editor.cs @@ -0,0 +1,104 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +namespace TMPro.EditorUtilities +{ + [CustomEditor(typeof(TMP_SubMeshUI)), CanEditMultipleObjects] + public class TMP_SubMeshUI_Editor : Editor + { + private struct m_foldout + { // Track Inspector foldout panel states, globally. + //public static bool textInput = true; + public static bool fontSettings = true; + //public static bool extraSettings = false; + //public static bool shadowSetting = false; + //public static bool materialEditor = true; + } + + private SerializedProperty fontAsset_prop; + private SerializedProperty spriteAsset_prop; + + //private TMP_SubMeshUI m_SubMeshComponent; + + //private CanvasRenderer m_canvasRenderer; + private Editor m_materialEditor; + private Material m_targetMaterial; + + + public void OnEnable() + { + fontAsset_prop = serializedObject.FindProperty("m_fontAsset"); + spriteAsset_prop = serializedObject.FindProperty("m_spriteAsset"); + + //m_SubMeshComponent = target as TMP_SubMeshUI; + //m_rectTransform = m_SubMeshComponent.rectTransform; + //m_canvasRenderer = m_SubMeshComponent.canvasRenderer; + + + // Create new Material Editor if one does not exists + /* + if (m_canvasRenderer != null && m_canvasRenderer.GetMaterial() != null) + { + m_materialEditor = Editor.CreateEditor(m_canvasRenderer.GetMaterial()); + m_targetMaterial = m_canvasRenderer.GetMaterial(); + } + */ + } + + + public void OnDisable() + { + // Destroy material editor if one exists + /* + if (m_materialEditor != null) + { + //Debug.Log("Destroying Inline Material Editor."); + DestroyImmediate(m_materialEditor); + } + */ + } + + + + public override void OnInspectorGUI() + { + GUI.enabled = false; + EditorGUILayout.PropertyField(fontAsset_prop); + EditorGUILayout.PropertyField(spriteAsset_prop); + GUI.enabled = true; + + EditorGUILayout.Space(); + + // If a Custom Material Editor exists, we use it. + /* + if (m_canvasRenderer != null && m_canvasRenderer.GetMaterial() != null) + { + Material mat = m_canvasRenderer.GetMaterial(); + + //Debug.Log(mat + " " + m_targetMaterial); + + if (mat != m_targetMaterial) + { + // Destroy previous Material Instance + //Debug.Log("New Material has been assigned."); + m_targetMaterial = mat; + DestroyImmediate(m_materialEditor); + } + + + if (m_materialEditor == null) + { + m_materialEditor = Editor.CreateEditor(mat); + } + + m_materialEditor.DrawHeader(); + + + m_materialEditor.OnInspectorGUI(); + } + */ + } + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMeshUI_Editor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMeshUI_Editor.cs.meta new file mode 100644 index 0000000..b82410e --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMeshUI_Editor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6b01141ed8f74d198965c86f25eb7040 +timeCreated: 1452757501 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMesh_Editor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMesh_Editor.cs new file mode 100644 index 0000000..f668af9 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMesh_Editor.cs @@ -0,0 +1,71 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +namespace TMPro.EditorUtilities +{ + [CustomEditor(typeof(TMP_SubMesh)), CanEditMultipleObjects] + public class TMP_SubMesh_Editor : Editor + { + private struct m_foldout + { // Track Inspector foldout panel states, globally. + //public static bool textInput = true; + public static bool fontSettings = true; + //public static bool extraSettings = false; + //public static bool shadowSetting = false; + //public static bool materialEditor = true; + } + + private SerializedProperty fontAsset_prop; + private SerializedProperty spriteAsset_prop; + + private TMP_SubMesh m_SubMeshComponent; + private Renderer m_Renderer; + + private string[] m_SortingLayerNames; + + public void OnEnable() + { + fontAsset_prop = serializedObject.FindProperty("m_fontAsset"); + spriteAsset_prop = serializedObject.FindProperty("m_spriteAsset"); + + m_SubMeshComponent = target as TMP_SubMesh; + + m_Renderer = m_SubMeshComponent.renderer; + + m_SortingLayerNames = SortingLayerHelper.sortingLayerNames; + } + + + public override void OnInspectorGUI() + { + EditorGUI.indentLevel = 0; + + GUI.enabled = false; + EditorGUILayout.PropertyField(fontAsset_prop); + EditorGUILayout.PropertyField(spriteAsset_prop); + GUI.enabled = true; + + EditorGUI.BeginChangeCheck(); + + // Look up the layer name using the current layer ID + string oldName = SortingLayer.IDToName(m_Renderer.sortingLayerID); + + // Use the name to look up our array index into the names list + int oldLayerIndex = System.Array.IndexOf(m_SortingLayerNames, oldName); + + // Show the pop-up for the names + int newLayerIndex = EditorGUILayout.Popup("Sorting Layer", oldLayerIndex, m_SortingLayerNames); + + // If the index changes, look up the ID for the new index to store as the new ID + if (newLayerIndex != oldLayerIndex) + m_Renderer.sortingLayerID = SortingLayer.NameToID(m_SortingLayerNames[newLayerIndex]); + + // Expose the manual sorting order + int newSortingLayerOrder = EditorGUILayout.IntField("Order in Layer", m_Renderer.sortingOrder); + if (newSortingLayerOrder != m_Renderer.sortingOrder) + m_Renderer.sortingOrder = newSortingLayerOrder; + + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMesh_Editor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMesh_Editor.cs.meta new file mode 100644 index 0000000..fd4713b --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_SubMesh_Editor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dd2fe74169b54bf58fca17288513ef38 +timeCreated: 1456189048 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs new file mode 100644 index 0000000..1361de7 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs @@ -0,0 +1,273 @@ +using UnityEngine; +using UnityEditor; + +namespace TMPro.EditorUtilities +{ + + [CustomPropertyDrawer(typeof(TextAlignmentOptions))] + public class TMP_TextAlignmentDrawer : PropertyDrawer + { + const int k_AlignmentButtonWidth = 24; + const int k_AlignmentButtonHeight = 20; + const int k_WideViewWidth = 504; + const int k_ControlsSpacing = 6; + const int k_GroupWidth = k_AlignmentButtonWidth * 6; + static readonly int k_TextAlignmentHash = "DoTextAligmentControl".GetHashCode(); + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUIUtility.currentViewWidth > k_WideViewWidth ? k_AlignmentButtonHeight : k_AlignmentButtonHeight * 2 + 3; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + var id = GUIUtility.GetControlID(k_TextAlignmentHash, FocusType.Keyboard, position); + + EditorGUI.BeginProperty(position, label, property); + { + var controlArea = EditorGUI.PrefixLabel(position, id, label); + + var horizontalAligment = new Rect(controlArea.x, controlArea.y, k_GroupWidth, k_AlignmentButtonHeight); + var verticalAligment = new Rect(!(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.x : horizontalAligment.xMax + k_ControlsSpacing, !(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.y + k_AlignmentButtonHeight + 3 : controlArea.y, k_GroupWidth, k_AlignmentButtonHeight); + + EditorGUI.BeginChangeCheck(); + + var selectedHorizontal = DoHorizontalAligmentControl(horizontalAligment, property); + var selectedVertical = DoVerticalAligmentControl(verticalAligment, property); + + if (EditorGUI.EndChangeCheck()) + { + var value = (0x1 << selectedHorizontal) | (0x100 << selectedVertical); + property.intValue = value; + } + } + EditorGUI.EndProperty(); + } + + static int DoHorizontalAligmentControl(Rect position, SerializedProperty alignment) + { + var selected = TMP_EditorUtility.GetHorizontalAlignmentGridValue(alignment.intValue); + + var values = new bool[6]; + + values[selected] = true; + + if (alignment.hasMultipleDifferentValues) + { + foreach (var obj in alignment.serializedObject.targetObjects) + { + var text = obj as TMP_Text; + if (text != null) + { + values[TMP_EditorUtility.GetHorizontalAlignmentGridValue((int)text.alignment)] = true; + } + } + } + + position.width = k_AlignmentButtonWidth; + + for (var i = 0; i < values.Length; i++) + { + var oldValue = values[i]; + var newValue = TMP_EditorUtility.EditorToggle(position, oldValue, TMP_UIStyleManager.alignContentA[i], i == 0 ? TMP_UIStyleManager.alignmentButtonLeft : (i == 5 ? TMP_UIStyleManager.alignmentButtonRight : TMP_UIStyleManager.alignmentButtonMid)); + if (newValue != oldValue) + { + selected = i; + } + position.x += position.width; + } + + return selected; + } + + static int DoVerticalAligmentControl(Rect position, SerializedProperty alignment) + { + var selected = TMP_EditorUtility.GetVerticalAlignmentGridValue(alignment.intValue); + + var values = new bool[6]; + + values[selected] = true; + + if (alignment.hasMultipleDifferentValues) + { + foreach (var obj in alignment.serializedObject.targetObjects) + { + var text = obj as TMP_Text; + if (text != null) + { + values[TMP_EditorUtility.GetVerticalAlignmentGridValue((int)text.alignment)] = true; + } + } + } + + position.width = k_AlignmentButtonWidth; + + for (var i = 0; i < values.Length; i++) + { + var oldValue = values[i]; + var newValue = TMP_EditorUtility.EditorToggle(position, oldValue, TMP_UIStyleManager.alignContentB[i], i == 0 ? TMP_UIStyleManager.alignmentButtonLeft : (i == 5 ? TMP_UIStyleManager.alignmentButtonRight : TMP_UIStyleManager.alignmentButtonMid)); + if (newValue != oldValue) + { + selected = i; + } + position.x += position.width; + } + + return selected; + } + } + + [CustomPropertyDrawer(typeof(HorizontalAlignmentOptions))] + public class TMP_HorizontalAlignmentDrawer : PropertyDrawer + { + const int k_AlignmentButtonWidth = 24; + const int k_AlignmentButtonHeight = 20; + const int k_WideViewWidth = 504; + const int k_ControlsSpacing = 6; + const int k_GroupWidth = k_AlignmentButtonWidth * 6; + static readonly int k_TextAlignmentHash = "DoTextAligmentControl".GetHashCode(); + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUIUtility.currentViewWidth > k_WideViewWidth ? k_AlignmentButtonHeight : k_AlignmentButtonHeight * 2 + 3; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + var id = GUIUtility.GetControlID(k_TextAlignmentHash, FocusType.Keyboard, position); + + EditorGUI.BeginProperty(position, label, property); + { + var controlArea = EditorGUI.PrefixLabel(position, id, label); + + var horizontalAligment = new Rect(controlArea.x, controlArea.y, k_GroupWidth, k_AlignmentButtonHeight); + //var verticalAligment = new Rect(!(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.x : horizontalAligment.xMax + k_ControlsSpacing, !(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.y + k_AlignmentButtonHeight + 3 : controlArea.y, k_GroupWidth, k_AlignmentButtonHeight); + + EditorGUI.BeginChangeCheck(); + + var selectedHorizontal = DoHorizontalAligmentControl(horizontalAligment, property); + + if (EditorGUI.EndChangeCheck()) + { + var value = 0x1 << selectedHorizontal; + property.intValue = value; + } + } + EditorGUI.EndProperty(); + } + + static int DoHorizontalAligmentControl(Rect position, SerializedProperty alignment) + { + var selected = TMP_EditorUtility.GetHorizontalAlignmentGridValue(alignment.intValue); + + var values = new bool[6]; + + values[selected] = true; + + if (alignment.hasMultipleDifferentValues) + { + foreach (var obj in alignment.serializedObject.targetObjects) + { + var text = obj as TMP_Text; + if (text != null) + { + values[TMP_EditorUtility.GetHorizontalAlignmentGridValue((int)text.horizontalAlignment)] = true; + } + } + } + + position.width = k_AlignmentButtonWidth; + + for (var i = 0; i < values.Length; i++) + { + var oldValue = values[i]; + var newValue = TMP_EditorUtility.EditorToggle(position, oldValue, TMP_UIStyleManager.alignContentA[i], i == 0 ? TMP_UIStyleManager.alignmentButtonLeft : (i == 5 ? TMP_UIStyleManager.alignmentButtonRight : TMP_UIStyleManager.alignmentButtonMid)); + if (newValue != oldValue) + { + selected = i; + } + position.x += position.width; + } + + return selected; + } + } + + + [CustomPropertyDrawer(typeof(VerticalAlignmentOptions))] + public class TMP_VerticalAlignmentDrawer : PropertyDrawer + { + const int k_AlignmentButtonWidth = 24; + const int k_AlignmentButtonHeight = 20; + const int k_WideViewWidth = 504; + const int k_ControlsSpacing = 6; + const int k_GroupWidth = k_AlignmentButtonWidth * 6; + static readonly int k_TextAlignmentHash = "DoTextAligmentControl".GetHashCode(); + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUIUtility.currentViewWidth > k_WideViewWidth ? k_AlignmentButtonHeight : k_AlignmentButtonHeight * 2 + 3; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + var id = GUIUtility.GetControlID(k_TextAlignmentHash, FocusType.Keyboard, position); + + EditorGUI.BeginProperty(position, label, property); + { + var controlArea = EditorGUI.PrefixLabel(position, id, label); + + var horizontalAligment = new Rect(controlArea.x, controlArea.y, k_GroupWidth, k_AlignmentButtonHeight); + var verticalAligment = new Rect(!(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.x : horizontalAligment.xMax + k_ControlsSpacing, !(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.y + k_AlignmentButtonHeight + 3 : controlArea.y, k_GroupWidth, k_AlignmentButtonHeight); + + EditorGUI.BeginChangeCheck(); + + //var selectedHorizontal = DoHorizontalAligmentControl(horizontalAligment, property); + var selectedVertical = DoVerticalAligmentControl(verticalAligment, property); + + if (EditorGUI.EndChangeCheck()) + { + var value = 0x100 << selectedVertical; + property.intValue = value; + } + } + EditorGUI.EndProperty(); + } + + static int DoVerticalAligmentControl(Rect position, SerializedProperty alignment) + { + var selected = TMP_EditorUtility.GetVerticalAlignmentGridValue(alignment.intValue); + + var values = new bool[6]; + + values[selected] = true; + + if (alignment.hasMultipleDifferentValues) + { + foreach (var obj in alignment.serializedObject.targetObjects) + { + var text = obj as TMP_Text; + if (text != null) + { + values[TMP_EditorUtility.GetVerticalAlignmentGridValue((int)text.verticalAlignment)] = true; + } + } + } + + position.width = k_AlignmentButtonWidth; + + for (var i = 0; i < values.Length; i++) + { + var oldValue = values[i]; + var newValue = TMP_EditorUtility.EditorToggle(position, oldValue, TMP_UIStyleManager.alignContentB[i], i == 0 ? TMP_UIStyleManager.alignmentButtonLeft : (i == 5 ? TMP_UIStyleManager.alignmentButtonRight : TMP_UIStyleManager.alignmentButtonMid)); + if (newValue != oldValue) + { + selected = i; + } + position.x += position.width; + } + + return selected; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs.meta new file mode 100644 index 0000000..a68a273 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c55a64c7570474f47a94abe39ebfef04 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_UIStyleManager.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_UIStyleManager.cs new file mode 100644 index 0000000..0a94a99 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_UIStyleManager.cs @@ -0,0 +1,134 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + public static class TMP_UIStyleManager + { + public static GUIStyle label; + public static GUIStyle textAreaBoxWindow; + public static GUIStyle boldFoldout; + public static GUIStyle panelTitle; + public static GUIStyle sectionHeader; + public static GUIStyle centeredLabel; + public static GUIStyle rightLabel; + public static GUIStyle wrappingTextArea; + + public static GUIStyle alignmentButtonLeft; + public static GUIStyle alignmentButtonMid; + public static GUIStyle alignmentButtonRight; + + // Alignment Button Textures + public static Texture2D alignLeft; + public static Texture2D alignCenter; + public static Texture2D alignRight; + public static Texture2D alignJustified; + public static Texture2D alignFlush; + public static Texture2D alignGeoCenter; + public static Texture2D alignTop; + public static Texture2D alignMiddle; + public static Texture2D alignBottom; + public static Texture2D alignBaseline; + public static Texture2D alignMidline; + public static Texture2D alignCapline; + public static Texture2D sectionHeaderTexture; + + public static GUIContent[] alignContentA; + public static GUIContent[] alignContentB; + + static TMP_UIStyleManager() + { + // Find to location of the TextMesh Pro Asset Folder (as users may have moved it) + var tmproAssetFolderPath = TMP_EditorUtility.packageRelativePath; + + if (EditorGUIUtility.isProSkin) + { + alignLeft = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignLeft.psd", typeof(Texture2D)) as Texture2D; + alignCenter = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignCenter.psd", typeof(Texture2D)) as Texture2D; + alignRight = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignRight.psd", typeof(Texture2D)) as Texture2D; + alignJustified = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignJustified.psd", typeof(Texture2D)) as Texture2D; + alignFlush = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignFlush.psd", typeof(Texture2D)) as Texture2D; + alignGeoCenter = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignCenterGeo.psd", typeof(Texture2D)) as Texture2D; + alignTop = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignTop.psd", typeof(Texture2D)) as Texture2D; + alignMiddle = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignMiddle.psd", typeof(Texture2D)) as Texture2D; + alignBottom = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignBottom.psd", typeof(Texture2D)) as Texture2D; + alignBaseline = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignBaseLine.psd", typeof(Texture2D)) as Texture2D; + alignMidline = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignMidLine.psd", typeof(Texture2D)) as Texture2D; + alignCapline = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignCapLine.psd", typeof(Texture2D)) as Texture2D; + sectionHeaderTexture = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/SectionHeader_Dark.psd", typeof(Texture2D)) as Texture2D; + } + else + { + alignLeft = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignLeft_Light.psd", typeof(Texture2D)) as Texture2D; + alignCenter = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignCenter_Light.psd", typeof(Texture2D)) as Texture2D; + alignRight = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignRight_Light.psd", typeof(Texture2D)) as Texture2D; + alignJustified = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignJustified_Light.psd", typeof(Texture2D)) as Texture2D; + alignFlush = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignFlush_Light.psd", typeof(Texture2D)) as Texture2D; + alignGeoCenter = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignCenterGeo_Light.psd", typeof(Texture2D)) as Texture2D; + alignTop = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignTop_Light.psd", typeof(Texture2D)) as Texture2D; + alignMiddle = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignMiddle_Light.psd", typeof(Texture2D)) as Texture2D; + alignBottom = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignBottom_Light.psd", typeof(Texture2D)) as Texture2D; + alignBaseline = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignBaseLine_Light.psd", typeof(Texture2D)) as Texture2D; + alignMidline = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignMidLine_Light.psd", typeof(Texture2D)) as Texture2D; + alignCapline = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/btn_AlignCapLine_Light.psd", typeof(Texture2D)) as Texture2D; + sectionHeaderTexture = AssetDatabase.LoadAssetAtPath(tmproAssetFolderPath + "/Editor Resources/Textures/SectionHeader_Light.psd", typeof(Texture2D)) as Texture2D; + } + + label = new GUIStyle(EditorStyles.label) { richText = true, wordWrap = true, stretchWidth = true }; + textAreaBoxWindow = new GUIStyle(EditorStyles.textArea) { richText = true }; + boldFoldout = new GUIStyle(EditorStyles.foldout) { fontStyle = FontStyle.Bold }; + panelTitle = new GUIStyle(EditorStyles.label) { fontStyle = FontStyle.Bold }; + + sectionHeader = new GUIStyle(EditorStyles.label) { fixedHeight = 22, richText = true, border = new RectOffset(9, 9, 0, 0), overflow = new RectOffset(9, 0, 0, 0), padding = new RectOffset(0, 0, 4, 0) }; + sectionHeader.normal.background = sectionHeaderTexture; + + centeredLabel = new GUIStyle(EditorStyles.label) { alignment = TextAnchor.MiddleCenter}; + rightLabel = new GUIStyle(EditorStyles.label) { alignment = TextAnchor.MiddleRight, richText = true }; + + + alignmentButtonLeft = new GUIStyle(EditorStyles.miniButtonLeft); + alignmentButtonLeft.padding.left = 4; + alignmentButtonLeft.padding.right = 4; + alignmentButtonLeft.padding.top = 2; + alignmentButtonLeft.padding.bottom = 2; + + alignmentButtonMid = new GUIStyle(EditorStyles.miniButtonMid); + alignmentButtonMid.padding.left = 4; + alignmentButtonMid.padding.right = 4; + alignmentButtonLeft.padding.top = 2; + alignmentButtonLeft.padding.bottom = 2; + + alignmentButtonRight = new GUIStyle(EditorStyles.miniButtonRight); + alignmentButtonRight.padding.left = 4; + alignmentButtonRight.padding.right = 4; + alignmentButtonLeft.padding.top = 2; + alignmentButtonLeft.padding.bottom = 2; + + wrappingTextArea = new GUIStyle(EditorStyles.textArea); + wrappingTextArea.wordWrap = true; + + alignContentA = new [] + { + new GUIContent(alignLeft, "Left"), + new GUIContent(alignCenter, "Center"), + new GUIContent(alignRight, "Right"), + new GUIContent(alignJustified, "Justified"), + new GUIContent(alignFlush, "Flush"), + new GUIContent(alignGeoCenter, "Geometry Center") + }; + + alignContentB = new [] + { + new GUIContent(alignTop, "Top"), + new GUIContent(alignMiddle, "Middle"), + new GUIContent(alignBottom, "Bottom"), + new GUIContent(alignBaseline, "Baseline"), + new GUIContent(alignMidline, "Midline"), + new GUIContent(alignCapline, "Capline") + }; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_UIStyleManager.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_UIStyleManager.cs.meta new file mode 100644 index 0000000..9c09bfa --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMP_UIStyleManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 30a939dce2fd4073955f2f20e659d506 +timeCreated: 1426454127 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_ContextMenus.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_ContextMenus.cs new file mode 100644 index 0000000..a01760d --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_ContextMenus.cs @@ -0,0 +1,367 @@ +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + public class TMP_ContextMenus : Editor + { + + private static Texture m_copiedTexture; + + private static Material m_copiedProperties; + private static Material m_copiedAtlasProperties; + + + // Add a Context Menu to the Texture Editor Panel to allow Copy / Paste of Texture. + [MenuItem("CONTEXT/Texture/Copy", false, 2000)] + static void CopyTexture(MenuCommand command) + { + m_copiedTexture = command.context as Texture; + } + + + // Select the currently assigned material or material preset. + [MenuItem("CONTEXT/Material/Select Material", false, 500)] + static void SelectMaterial(MenuCommand command) + { + Material mat = command.context as Material; + + // Select current material + EditorUtility.FocusProjectWindow(); + EditorGUIUtility.PingObject(mat); + } + + + // Add a Context Menu to allow easy duplication of the Material. + [MenuItem("CONTEXT/Material/Create Material Preset", false)] + static void DuplicateMaterial(MenuCommand command) + { + // Get the type of text object + // If material is not a base material, we get material leaks... + + Material source_Mat = (Material)command.context; + if (!EditorUtility.IsPersistent(source_Mat)) + { + Debug.LogWarning("Material is an instance and cannot be converted into a persistent asset."); + return; + } + + string assetPath = AssetDatabase.GetAssetPath(source_Mat).Split('.')[0]; + + if (assetPath.IndexOf("Assets/", System.StringComparison.InvariantCultureIgnoreCase) == -1) + { + Debug.LogWarning("Material Preset cannot be created from a material that is located outside the project."); + return; + } + + Material duplicate = new Material(source_Mat); + + // Need to manually copy the shader keywords + duplicate.shaderKeywords = source_Mat.shaderKeywords; + + AssetDatabase.CreateAsset(duplicate, AssetDatabase.GenerateUniqueAssetPath(assetPath + ".mat")); + + GameObject[] selectedObjects = Selection.gameObjects; + + // Assign new Material Preset to selected text objects. + for (int i = 0; i < selectedObjects.Length; i++) + { + TMP_Text textObject = selectedObjects[i].GetComponent(); + + if (textObject != null) + { + textObject.fontSharedMaterial = duplicate; + } + else + { + TMP_SubMesh subMeshObject = selectedObjects[i].GetComponent(); + + if (subMeshObject != null) + subMeshObject.sharedMaterial = duplicate; + else + { + TMP_SubMeshUI subMeshUIObject = selectedObjects[i].GetComponent(); + + if (subMeshUIObject != null) + subMeshUIObject.sharedMaterial = duplicate; + } + } + } + + // Ping newly created Material Preset. + EditorUtility.FocusProjectWindow(); + EditorGUIUtility.PingObject(duplicate); + } + + + // COPY MATERIAL PROPERTIES + [MenuItem("CONTEXT/Material/Copy Material Properties", false)] + static void CopyMaterialProperties(MenuCommand command) + { + Material mat = null; + if (command.context.GetType() == typeof(Material)) + mat = (Material)command.context; + else + { + mat = Selection.activeGameObject.GetComponent().GetMaterial(); + } + + m_copiedProperties = new Material(mat); + + m_copiedProperties.shaderKeywords = mat.shaderKeywords; + + m_copiedProperties.hideFlags = HideFlags.DontSave; + } + + + // PASTE MATERIAL + //[MenuItem("CONTEXT/MaterialComponent/Paste Material Properties", false)] + [MenuItem("CONTEXT/Material/Paste Material Properties", false)] + static void PasteMaterialProperties(MenuCommand command) + { + if (m_copiedProperties == null) + { + Debug.LogWarning("No Material Properties to Paste. Use Copy Material Properties first."); + return; + } + + Material mat = null; + if (command.context.GetType() == typeof(Material)) + mat = (Material)command.context; + else + { + mat = Selection.activeGameObject.GetComponent().GetMaterial(); + } + + Undo.RecordObject(mat, "Paste Material"); + + ShaderUtilities.GetShaderPropertyIDs(); // Make sure we have valid Property IDs + if (mat.HasProperty(ShaderUtilities.ID_GradientScale)) + { + // Preserve unique SDF properties from destination material. + m_copiedProperties.SetTexture(ShaderUtilities.ID_MainTex, mat.GetTexture(ShaderUtilities.ID_MainTex)); + m_copiedProperties.SetFloat(ShaderUtilities.ID_GradientScale, mat.GetFloat(ShaderUtilities.ID_GradientScale)); + m_copiedProperties.SetFloat(ShaderUtilities.ID_TextureWidth, mat.GetFloat(ShaderUtilities.ID_TextureWidth)); + m_copiedProperties.SetFloat(ShaderUtilities.ID_TextureHeight, mat.GetFloat(ShaderUtilities.ID_TextureHeight)); + } + + EditorShaderUtilities.CopyMaterialProperties(m_copiedProperties, mat); + + // Copy ShaderKeywords from one material to the other. + mat.shaderKeywords = m_copiedProperties.shaderKeywords; + + // Let TextMeshPro Objects that this mat has changed. + TMPro_EventManager.ON_MATERIAL_PROPERTY_CHANGED(true, mat); + } + + + // Enable Resetting of Material properties without losing unique properties of the font atlas. + [MenuItem("CONTEXT/Material/Reset", false, 2100)] + static void ResetSettings(MenuCommand command) + { + Material mat = null; + if (command.context.GetType() == typeof(Material)) + mat = (Material)command.context; + else + { + mat = Selection.activeGameObject.GetComponent().GetMaterial(); + } + + Undo.RecordObject(mat, "Reset Material"); + + ShaderUtilities.GetShaderPropertyIDs(); // Make sure we have valid Property IDs + if (mat.HasProperty(ShaderUtilities.ID_GradientScale)) + { + // Copy unique properties of the SDF Material + var texture = mat.GetTexture(ShaderUtilities.ID_MainTex); + var gradientScale = mat.GetFloat(ShaderUtilities.ID_GradientScale); + var texWidth = mat.GetFloat(ShaderUtilities.ID_TextureWidth); + var texHeight = mat.GetFloat(ShaderUtilities.ID_TextureHeight); + + var stencilId = 0.0f; + var stencilComp = 0.0f; + + if (mat.HasProperty(ShaderUtilities.ID_StencilID)) + { + stencilId = mat.GetFloat(ShaderUtilities.ID_StencilID); + stencilComp = mat.GetFloat(ShaderUtilities.ID_StencilComp); + } + + var normalWeight = mat.GetFloat(ShaderUtilities.ID_WeightNormal); + var boldWeight = mat.GetFloat(ShaderUtilities.ID_WeightBold); + + // Reset the material + Unsupported.SmartReset(mat); + + // Reset ShaderKeywords + mat.shaderKeywords = new string[0]; // { "BEVEL_OFF", "GLOW_OFF", "UNDERLAY_OFF" }; + + // Copy unique material properties back to the material. + mat.SetTexture(ShaderUtilities.ID_MainTex, texture); + mat.SetFloat(ShaderUtilities.ID_GradientScale, gradientScale); + mat.SetFloat(ShaderUtilities.ID_TextureWidth, texWidth); + mat.SetFloat(ShaderUtilities.ID_TextureHeight, texHeight); + + if (mat.HasProperty(ShaderUtilities.ID_StencilID)) + { + mat.SetFloat(ShaderUtilities.ID_StencilID, stencilId); + mat.SetFloat(ShaderUtilities.ID_StencilComp, stencilComp); + } + + mat.SetFloat(ShaderUtilities.ID_WeightNormal, normalWeight); + mat.SetFloat(ShaderUtilities.ID_WeightBold, boldWeight); + } + else + { + Unsupported.SmartReset(mat); + } + + TMPro_EventManager.ON_MATERIAL_PROPERTY_CHANGED(true, mat); + } + + + //This function is used for debugging and fixing potentially broken font atlas links. + [MenuItem("CONTEXT/Material/Copy Atlas", false, 2000)] + static void CopyAtlas(MenuCommand command) + { + Material mat = command.context as Material; + + m_copiedAtlasProperties = new Material(mat); + m_copiedAtlasProperties.hideFlags = HideFlags.DontSave; + } + + + // This function is used for debugging and fixing potentially broken font atlas links + [MenuItem("CONTEXT/Material/Paste Atlas", false, 2001)] + static void PasteAtlas(MenuCommand command) + { + Material mat = command.context as Material; + + if (mat == null) + return; + + if (m_copiedAtlasProperties != null) + { + Undo.RecordObject(mat, "Paste Texture"); + + ShaderUtilities.GetShaderPropertyIDs(); // Make sure we have valid Property IDs + + if (m_copiedAtlasProperties.HasProperty(ShaderUtilities.ID_MainTex)) + mat.SetTexture(ShaderUtilities.ID_MainTex, m_copiedAtlasProperties.GetTexture(ShaderUtilities.ID_MainTex)); + + if (m_copiedAtlasProperties.HasProperty(ShaderUtilities.ID_GradientScale)) + { + mat.SetFloat(ShaderUtilities.ID_GradientScale, m_copiedAtlasProperties.GetFloat(ShaderUtilities.ID_GradientScale)); + mat.SetFloat(ShaderUtilities.ID_TextureWidth, m_copiedAtlasProperties.GetFloat(ShaderUtilities.ID_TextureWidth)); + mat.SetFloat(ShaderUtilities.ID_TextureHeight, m_copiedAtlasProperties.GetFloat(ShaderUtilities.ID_TextureHeight)); + } + } + else if (m_copiedTexture != null) + { + Undo.RecordObject(mat, "Paste Texture"); + + mat.SetTexture(ShaderUtilities.ID_MainTex, m_copiedTexture); + } + + //DestroyImmediate(m_copiedAtlasProperties); + } + + + // Context Menus for TMPro Font Assets + //This function is used for debugging and fixing potentially broken font atlas links. + [MenuItem("CONTEXT/TMP_FontAsset/Extract Atlas", false, 2100)] + static void ExtractAtlas(MenuCommand command) + { + TMP_FontAsset font = command.context as TMP_FontAsset; + + string fontPath = AssetDatabase.GetAssetPath(font); + string texPath = Path.GetDirectoryName(fontPath) + "/" + Path.GetFileNameWithoutExtension(fontPath) + " Atlas.png"; + + // Create a Serialized Object of the texture to allow us to make it readable. + SerializedObject texprop = new SerializedObject(font.material.GetTexture(ShaderUtilities.ID_MainTex)); + texprop.FindProperty("m_IsReadable").boolValue = true; + texprop.ApplyModifiedProperties(); + + // Create a copy of the texture. + Texture2D tex = Instantiate(font.material.GetTexture(ShaderUtilities.ID_MainTex)) as Texture2D; + + // Set the texture to not readable again. + texprop.FindProperty("m_IsReadable").boolValue = false; + texprop.ApplyModifiedProperties(); + + Debug.Log(texPath); + // Saving File for Debug + var pngData = tex.EncodeToPNG(); + File.WriteAllBytes(texPath, pngData); + + AssetDatabase.Refresh(); + DestroyImmediate(tex); + } + + /// + /// + /// + /// + [MenuItem("CONTEXT/TMP_FontAsset/Update Atlas Texture...", false, 2000)] + static void RegenerateFontAsset(MenuCommand command) + { + TMP_FontAsset fontAsset = command.context as TMP_FontAsset; + + if (fontAsset != null) + { + TMPro_FontAssetCreatorWindow.ShowFontAtlasCreatorWindow(fontAsset); + } + } + + [MenuItem("CONTEXT/TMP_FontAsset/Force Upgrade To Version 1.1.0...", false, 2010)] + static void ForceFontAssetUpgrade(MenuCommand command) + { + TMP_FontAsset fontAsset = command.context as TMP_FontAsset; + + if (fontAsset != null) + { + fontAsset.UpgradeFontAsset(); + TMPro_EventManager.ON_FONT_PROPERTY_CHANGED(true, fontAsset); + } + } + + + /// + /// Clear Dynamic Font Asset data such as glyph, character and font features. + /// + /// + [MenuItem("CONTEXT/TMP_FontAsset/Reset", false, 100)] + static void ClearFontAssetData(MenuCommand command) + { + TMP_FontAsset fontAsset = command.context as TMP_FontAsset; + + if (fontAsset != null && Selection.activeObject != fontAsset) + { + Selection.activeObject = fontAsset; + } + + fontAsset.ClearFontAssetData(true); + + TMPro_EventManager.ON_FONT_PROPERTY_CHANGED(true, fontAsset); + } + + + [MenuItem("CONTEXT/TrueTypeFontImporter/Create TMP Font Asset...", false, 200)] + static void CreateFontAsset(MenuCommand command) + { + TrueTypeFontImporter importer = command.context as TrueTypeFontImporter; + + if (importer != null) + { + Font sourceFontFile = AssetDatabase.LoadAssetAtPath(importer.assetPath); + + if (sourceFontFile) + TMPro_FontAssetCreatorWindow.ShowFontAtlasCreatorWindow(sourceFontFile); + } + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_ContextMenus.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_ContextMenus.cs.meta new file mode 100644 index 0000000..f16753f --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_ContextMenus.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 44e1d646473a40178712cb2150f54cec +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_CreateObjectMenu.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_CreateObjectMenu.cs new file mode 100644 index 0000000..99b83a6 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_CreateObjectMenu.cs @@ -0,0 +1,392 @@ +using UnityEngine; +using UnityEditor; +using UnityEditor.Presets; +using UnityEditor.SceneManagement; +using UnityEditor.Experimental.SceneManagement; +using UnityEngine.SceneManagement; +using UnityEngine.UI; +using UnityEngine.EventSystems; + + +namespace TMPro.EditorUtilities +{ + public static class TMPro_CreateObjectMenu + { + + /// + /// Create a TextMeshPro object that works with the Mesh Renderer + /// + /// + [MenuItem("GameObject/3D Object/Text - TextMeshPro", false, 30)] + static void CreateTextMeshProObjectPerform(MenuCommand command) + { + GameObject go = ObjectFactory.CreateGameObject("Text (TMP)"); + + // Add support for new prefab mode + StageUtility.PlaceGameObjectInCurrentStage(go); + + TextMeshPro textComponent = ObjectFactory.AddComponent(go); + + if (textComponent.m_isWaitingOnResourceLoad == false) + { + // Get reference to potential Presets for component + #if UNITY_2019_3_OR_NEWER + Preset[] presets = Preset.GetDefaultPresetsForObject(textComponent); + + if (presets == null || presets.Length == 0) + { + textComponent.text = "Sample text"; + textComponent.alignment = TextAlignmentOptions.TopLeft; + } + else + { + textComponent.renderer.sortingLayerID = textComponent._SortingLayerID; + textComponent.renderer.sortingOrder = textComponent._SortingOrder; + } + #else + if (Preset.GetDefaultForObject(textComponent) == null) + { + textComponent.text = "Sample text"; + textComponent.alignment = TextAlignmentOptions.TopLeft; + } + else + { + textComponent.renderer.sortingLayerID = textComponent._SortingLayerID; + textComponent.renderer.sortingOrder = textComponent._SortingOrder; + } + #endif + + if (TMP_Settings.autoSizeTextContainer) + { + Vector2 size = textComponent.GetPreferredValues(TMP_Math.FLOAT_MAX, TMP_Math.FLOAT_MAX); + textComponent.rectTransform.sizeDelta = size; + } + else + { + textComponent.rectTransform.sizeDelta = TMP_Settings.defaultTextMeshProTextContainerSize; + } + } + else + { + textComponent.text = "Sample text"; + textComponent.alignment = TextAlignmentOptions.TopLeft; + } + + Undo.RegisterCreatedObjectUndo(go, "Create " + go.name); + + GameObject contextObject = command.context as GameObject; + if (contextObject != null) + { + GameObjectUtility.SetParentAndAlign(go, contextObject); + Undo.SetTransformParent(go.transform, contextObject.transform, "Parent " + go.name); + } + + Selection.activeGameObject = go; + } + + + /// + /// Create a TextMeshPro object that works with the CanvasRenderer + /// + /// + [MenuItem("GameObject/UI/Text - TextMeshPro", false, 2001)] + static void CreateTextMeshProGuiObjectPerform(MenuCommand menuCommand) + { + GameObject go = TMP_DefaultControls.CreateText(GetStandardResources()); + + // Override text color and font size + TextMeshProUGUI textComponent = go.GetComponent(); + + if (textComponent.m_isWaitingOnResourceLoad == false) + { + // Get reference to potential Presets for component + #if UNITY_2019_3_OR_NEWER + Preset[] presets = Preset.GetDefaultPresetsForObject(textComponent); + + if (presets == null || presets.Length == 0) + { + textComponent.fontSize = TMP_Settings.defaultFontSize; + textComponent.color = Color.white; + textComponent.text = "New Text"; + } + #else + if (Preset.GetDefaultForObject(textComponent) == null) + { + textComponent.fontSize = TMP_Settings.defaultFontSize; + textComponent.color = Color.white; + textComponent.text = "New Text"; + } + #endif + + if (TMP_Settings.autoSizeTextContainer) + { + Vector2 size = textComponent.GetPreferredValues(TMP_Math.FLOAT_MAX, TMP_Math.FLOAT_MAX); + textComponent.rectTransform.sizeDelta = size; + } + else + { + textComponent.rectTransform.sizeDelta = TMP_Settings.defaultTextMeshProUITextContainerSize; + } + } + else + { + textComponent.fontSize = 36; + textComponent.color = Color.white; + textComponent.text = "New Text"; + } + + PlaceUIElementRoot(go, menuCommand); + } + + [MenuItem("GameObject/UI/Button - TextMeshPro", false, 2031)] + public static void AddButton(MenuCommand menuCommand) + { + GameObject go = TMP_DefaultControls.CreateButton(GetStandardResources()); + + // Override font size + TMP_Text textComponent = go.GetComponentInChildren(); + textComponent.fontSize = 24; + + PlaceUIElementRoot(go, menuCommand); + } + + + + [MenuItem("GameObject/UI/Input Field - TextMeshPro", false, 2037)] + static void AddTextMeshProInputField(MenuCommand menuCommand) + { + GameObject go = TMP_DefaultControls.CreateInputField(GetStandardResources()); + PlaceUIElementRoot(go, menuCommand); + } + + + [MenuItem("GameObject/UI/Dropdown - TextMeshPro", false, 2036)] + public static void AddDropdown(MenuCommand menuCommand) + { + GameObject go = TMP_DefaultControls.CreateDropdown(GetStandardResources()); + PlaceUIElementRoot(go, menuCommand); + } + + + private const string kUILayerName = "UI"; + + private const string kStandardSpritePath = "UI/Skin/UISprite.psd"; + private const string kBackgroundSpritePath = "UI/Skin/Background.psd"; + private const string kInputFieldBackgroundPath = "UI/Skin/InputFieldBackground.psd"; + private const string kKnobPath = "UI/Skin/Knob.psd"; + private const string kCheckmarkPath = "UI/Skin/Checkmark.psd"; + private const string kDropdownArrowPath = "UI/Skin/DropdownArrow.psd"; + private const string kMaskPath = "UI/Skin/UIMask.psd"; + + private static TMP_DefaultControls.Resources s_StandardResources; + + + private static TMP_DefaultControls.Resources GetStandardResources() + { + if (s_StandardResources.standard == null) + { + s_StandardResources.standard = AssetDatabase.GetBuiltinExtraResource(kStandardSpritePath); + s_StandardResources.background = AssetDatabase.GetBuiltinExtraResource(kBackgroundSpritePath); + s_StandardResources.inputField = AssetDatabase.GetBuiltinExtraResource(kInputFieldBackgroundPath); + s_StandardResources.knob = AssetDatabase.GetBuiltinExtraResource(kKnobPath); + s_StandardResources.checkmark = AssetDatabase.GetBuiltinExtraResource(kCheckmarkPath); + s_StandardResources.dropdown = AssetDatabase.GetBuiltinExtraResource(kDropdownArrowPath); + s_StandardResources.mask = AssetDatabase.GetBuiltinExtraResource(kMaskPath); + } + return s_StandardResources; + } + + + private static void SetPositionVisibleinSceneView(RectTransform canvasRTransform, RectTransform itemTransform) + { + // Find the best scene view + SceneView sceneView = SceneView.lastActiveSceneView; + if (sceneView == null && SceneView.sceneViews.Count > 0) + sceneView = SceneView.sceneViews[0] as SceneView; + + // Couldn't find a SceneView. Don't set position. + if (sceneView == null || sceneView.camera == null) + return; + + // Create world space Plane from canvas position. + Camera camera = sceneView.camera; + Vector3 position = Vector3.zero; + Vector2 localPlanePosition; + + if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRTransform, new Vector2(camera.pixelWidth / 2, camera.pixelHeight / 2), camera, out localPlanePosition)) + { + // Adjust for canvas pivot + localPlanePosition.x = localPlanePosition.x + canvasRTransform.sizeDelta.x * canvasRTransform.pivot.x; + localPlanePosition.y = localPlanePosition.y + canvasRTransform.sizeDelta.y * canvasRTransform.pivot.y; + + localPlanePosition.x = Mathf.Clamp(localPlanePosition.x, 0, canvasRTransform.sizeDelta.x); + localPlanePosition.y = Mathf.Clamp(localPlanePosition.y, 0, canvasRTransform.sizeDelta.y); + + // Adjust for anchoring + position.x = localPlanePosition.x - canvasRTransform.sizeDelta.x * itemTransform.anchorMin.x; + position.y = localPlanePosition.y - canvasRTransform.sizeDelta.y * itemTransform.anchorMin.y; + + Vector3 minLocalPosition; + minLocalPosition.x = canvasRTransform.sizeDelta.x * (0 - canvasRTransform.pivot.x) + itemTransform.sizeDelta.x * itemTransform.pivot.x; + minLocalPosition.y = canvasRTransform.sizeDelta.y * (0 - canvasRTransform.pivot.y) + itemTransform.sizeDelta.y * itemTransform.pivot.y; + + Vector3 maxLocalPosition; + maxLocalPosition.x = canvasRTransform.sizeDelta.x * (1 - canvasRTransform.pivot.x) - itemTransform.sizeDelta.x * itemTransform.pivot.x; + maxLocalPosition.y = canvasRTransform.sizeDelta.y * (1 - canvasRTransform.pivot.y) - itemTransform.sizeDelta.y * itemTransform.pivot.y; + + position.x = Mathf.Clamp(position.x, minLocalPosition.x, maxLocalPosition.x); + position.y = Mathf.Clamp(position.y, minLocalPosition.y, maxLocalPosition.y); + } + + itemTransform.anchoredPosition = position; + itemTransform.localRotation = Quaternion.identity; + itemTransform.localScale = Vector3.one; + } + + + private static void PlaceUIElementRoot(GameObject element, MenuCommand menuCommand) + { + GameObject parent = menuCommand.context as GameObject; + bool explicitParentChoice = true; + if (parent == null) + { + parent = GetOrCreateCanvasGameObject(); + explicitParentChoice = false; + + // If in Prefab Mode, Canvas has to be part of Prefab contents, + // otherwise use Prefab root instead. + PrefabStage prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + if (prefabStage != null && !prefabStage.IsPartOfPrefabContents(parent)) + parent = prefabStage.prefabContentsRoot; + } + if (parent.GetComponentInParent() == null) + { + // Create canvas under context GameObject, + // and make that be the parent which UI element is added under. + GameObject canvas = CreateNewUI(); + canvas.transform.SetParent(parent.transform, false); + parent = canvas; + } + + // Setting the element to be a child of an element already in the scene should + // be sufficient to also move the element to that scene. + // However, it seems the element needs to be already in its destination scene when the + // RegisterCreatedObjectUndo is performed; otherwise the scene it was created in is dirtied. + SceneManager.MoveGameObjectToScene(element, parent.scene); + + if (element.transform.parent == null) + { + Undo.SetTransformParent(element.transform, parent.transform, "Parent " + element.name); + } + + GameObjectUtility.EnsureUniqueNameForSibling(element); + + // We have to fix up the undo name since the name of the object was only known after reparenting it. + Undo.SetCurrentGroupName("Create " + element.name); + + GameObjectUtility.SetParentAndAlign(element, parent); + if (!explicitParentChoice) // not a context click, so center in sceneview + SetPositionVisibleinSceneView(parent.GetComponent(), element.GetComponent()); + + Undo.RegisterCreatedObjectUndo(element, "Create " + element.name); + + Selection.activeGameObject = element; + } + + + public static GameObject CreateNewUI() + { + // Root for the UI + var root = new GameObject("Canvas"); + root.layer = LayerMask.NameToLayer(kUILayerName); + Canvas canvas = root.AddComponent(); + canvas.renderMode = RenderMode.ScreenSpaceOverlay; + root.AddComponent(); + root.AddComponent(); + + // Works for all stages. + StageUtility.PlaceGameObjectInCurrentStage(root); + bool customScene = false; + PrefabStage prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + if (prefabStage != null) + { + root.transform.SetParent(prefabStage.prefabContentsRoot.transform, false); + customScene = true; + } + + Undo.RegisterCreatedObjectUndo(root, "Create " + root.name); + + // If there is no event system add one... + // No need to place event system in custom scene as these are temporary anyway. + // It can be argued for or against placing it in the user scenes, + // but let's not modify scene user is not currently looking at. + if (!customScene) + CreateEventSystem(false); + return root; + } + + + private static void CreateEventSystem(bool select) + { + CreateEventSystem(select, null); + } + + + private static void CreateEventSystem(bool select, GameObject parent) + { + var esys = Object.FindObjectOfType(); + if (esys == null) + { + var eventSystem = new GameObject("EventSystem"); + GameObjectUtility.SetParentAndAlign(eventSystem, parent); + esys = eventSystem.AddComponent(); + eventSystem.AddComponent(); + + Undo.RegisterCreatedObjectUndo(eventSystem, "Create " + eventSystem.name); + } + + if (select && esys != null) + { + Selection.activeGameObject = esys.gameObject; + } + } + + + // Helper function that returns a Canvas GameObject; preferably a parent of the selection, or other existing Canvas. + public static GameObject GetOrCreateCanvasGameObject() + { + GameObject selectedGo = Selection.activeGameObject; + + // Try to find a gameobject that is the selected GO or one if its parents. + Canvas canvas = (selectedGo != null) ? selectedGo.GetComponentInParent() : null; + if (IsValidCanvas(canvas)) + return canvas.gameObject; + + // No canvas in selection or its parents? Then use any valid canvas. + // We have to find all loaded Canvases, not just the ones in main scenes. + Canvas[] canvasArray = StageUtility.GetCurrentStageHandle().FindComponentsOfType(); + for (int i = 0; i < canvasArray.Length; i++) + if (IsValidCanvas(canvasArray[i])) + return canvasArray[i].gameObject; + + // No canvas in the scene at all? Then create a new one. + return CreateNewUI(); + } + + static bool IsValidCanvas(Canvas canvas) + { + if (canvas == null || !canvas.gameObject.activeInHierarchy) + return false; + + // It's important that the non-editable canvas from a prefab scene won't be rejected, + // but canvases not visible in the Hierarchy at all do. Don't check for HideAndDontSave. + if (EditorUtility.IsPersistent(canvas) || (canvas.hideFlags & HideFlags.HideInHierarchy) != 0) + return false; + + if (StageUtility.GetStageHandle(canvas.gameObject) != StageUtility.GetCurrentStageHandle()) + return false; + + return true; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_CreateObjectMenu.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_CreateObjectMenu.cs.meta new file mode 100644 index 0000000..be9643f --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_CreateObjectMenu.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7065397ff8184621aa3ca4f854491259 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_EditorShaderUtilities.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_EditorShaderUtilities.cs new file mode 100644 index 0000000..3d63900 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_EditorShaderUtilities.cs @@ -0,0 +1,53 @@ +using UnityEngine; +using UnityEditor; +using System.Linq; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + public static class EditorShaderUtilities + { + + /// + /// Copy Shader properties from source to destination material. + /// + /// + /// + public static void CopyMaterialProperties(Material source, Material destination) + { + MaterialProperty[] source_prop = MaterialEditor.GetMaterialProperties(new Material[] { source }); + + for (int i = 0; i < source_prop.Length; i++) + { + int property_ID = Shader.PropertyToID(source_prop[i].name); + if (destination.HasProperty(property_ID)) + { + //Debug.Log(source_prop[i].name + " Type:" + ShaderUtil.GetPropertyType(source.shader, i)); + switch (ShaderUtil.GetPropertyType(source.shader, i)) + { + case ShaderUtil.ShaderPropertyType.Color: + destination.SetColor(property_ID, source.GetColor(property_ID)); + break; + case ShaderUtil.ShaderPropertyType.Float: + destination.SetFloat(property_ID, source.GetFloat(property_ID)); + break; + case ShaderUtil.ShaderPropertyType.Range: + destination.SetFloat(property_ID, source.GetFloat(property_ID)); + break; + case ShaderUtil.ShaderPropertyType.TexEnv: + destination.SetTexture(property_ID, source.GetTexture(property_ID)); + break; + case ShaderUtil.ShaderPropertyType.Vector: + destination.SetVector(property_ID, source.GetVector(property_ID)); + break; + } + } + } + + } + + } + +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_EditorShaderUtilities.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_EditorShaderUtilities.cs.meta new file mode 100644 index 0000000..89d2594 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_EditorShaderUtilities.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: aa76955fe5bb44f7915d91db8c7043c4 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontAssetCreatorWindow.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontAssetCreatorWindow.cs new file mode 100644 index 0000000..4d895a5 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontAssetCreatorWindow.cs @@ -0,0 +1,1802 @@ +using System; +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System.Globalization; +using System.Threading; +using System.IO; +using System.Text.RegularExpressions; +using UnityEngine.TextCore; +using UnityEngine.TextCore.LowLevel; +using UnityEditor.TextCore.LowLevel; +using Object = UnityEngine.Object; + +namespace TMPro.EditorUtilities +{ + public class TMPro_FontAssetCreatorWindow : EditorWindow + { + [MenuItem("Window/TextMeshPro/Font Asset Creator", false, 2025)] + public static void ShowFontAtlasCreatorWindow() + { + var window = GetWindow(); + window.titleContent = new GUIContent("Font Asset Creator"); + window.Focus(); + + // Make sure TMP Essential Resources have been imported. + window.CheckEssentialResources(); + } + + + public static void ShowFontAtlasCreatorWindow(Font sourceFontFile) + { + var window = GetWindow(); + + window.titleContent = new GUIContent("Font Asset Creator"); + window.Focus(); + + window.ClearGeneratedData(); + window.m_LegacyFontAsset = null; + window.m_SelectedFontAsset = null; + + // Override selected font asset + window.m_SourceFontFile = sourceFontFile; + + // Make sure TMP Essential Resources have been imported. + window.CheckEssentialResources(); + } + + + public static void ShowFontAtlasCreatorWindow(TMP_FontAsset fontAsset) + { + var window = GetWindow(); + + window.titleContent = new GUIContent("Font Asset Creator"); + window.Focus(); + + // Clear any previously generated data + window.ClearGeneratedData(); + window.m_LegacyFontAsset = null; + + // Load font asset creation settings if we have valid settings + if (string.IsNullOrEmpty(fontAsset.creationSettings.sourceFontFileGUID) == false) + { + window.LoadFontCreationSettings(fontAsset.creationSettings); + + // Override settings to inject character list from font asset + window.m_CharacterSetSelectionMode = 6; + window.m_CharacterSequence = TMP_EditorUtility.GetUnicodeCharacterSequence(TMP_FontAsset.GetCharactersArray(fontAsset)); + + + window.m_ReferencedFontAsset = fontAsset; + window.m_SavedFontAtlas = fontAsset.atlasTexture; + } + else + { + window.m_WarningMessage = "Font Asset [" + fontAsset.name + "] does not contain any previous \"Font Asset Creation Settings\". This usually means [" + fontAsset.name + "] was created before this new functionality was added."; + window.m_SourceFontFile = null; + window.m_LegacyFontAsset = fontAsset; + } + + // Even if we don't have any saved generation settings, we still want to pre-select the source font file. + window.m_SelectedFontAsset = fontAsset; + + // Make sure TMP Essential Resources have been imported. + window.CheckEssentialResources(); + } + + [System.Serializable] + class FontAssetCreationSettingsContainer + { + public List fontAssetCreationSettings; + } + + FontAssetCreationSettingsContainer m_FontAssetCreationSettingsContainer; + + //static readonly string[] m_FontCreationPresets = new string[] { "Recent 1", "Recent 2", "Recent 3", "Recent 4" }; + int m_FontAssetCreationSettingsCurrentIndex = 0; + + const string k_FontAssetCreationSettingsContainerKey = "TextMeshPro.FontAssetCreator.RecentFontAssetCreationSettings.Container"; + const string k_FontAssetCreationSettingsCurrentIndexKey = "TextMeshPro.FontAssetCreator.RecentFontAssetCreationSettings.CurrentIndex"; + const float k_TwoColumnControlsWidth = 335f; + + // Diagnostics + System.Diagnostics.Stopwatch m_StopWatch; + double m_GlyphPackingGenerationTime; + double m_GlyphRenderingGenerationTime; + + string[] m_FontSizingOptions = { "Auto Sizing", "Custom Size" }; + int m_PointSizeSamplingMode; + string[] m_FontResolutionLabels = { "8", "16","32", "64", "128", "256", "512", "1024", "2048", "4096", "8192" }; + int[] m_FontAtlasResolutions = { 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192 }; + string[] m_FontCharacterSets = { "ASCII", "Extended ASCII", "ASCII Lowercase", "ASCII Uppercase", "Numbers + Symbols", "Custom Range", "Unicode Range (Hex)", "Custom Characters", "Characters from File" }; + enum FontPackingModes { Fast = 0, Optimum = 4 }; + FontPackingModes m_PackingMode = FontPackingModes.Fast; + + int m_CharacterSetSelectionMode; + + string m_CharacterSequence = ""; + string m_OutputFeedback = ""; + string m_WarningMessage; + int m_CharacterCount; + Vector2 m_ScrollPosition; + Vector2 m_OutputScrollPosition; + + bool m_IsRepaintNeeded; + + float m_AtlasGenerationProgress; + string m_AtlasGenerationProgressLabel = string.Empty; + float m_RenderingProgress; + bool m_IsGlyphPackingDone; + bool m_IsGlyphRenderingDone; + bool m_IsRenderingDone; + bool m_IsProcessing; + bool m_IsGenerationDisabled; + bool m_IsGenerationCancelled; + + bool m_IsFontAtlasInvalid; + Object m_SourceFontFile; + TMP_FontAsset m_SelectedFontAsset; + TMP_FontAsset m_LegacyFontAsset; + TMP_FontAsset m_ReferencedFontAsset; + + TextAsset m_CharactersFromFile; + int m_PointSize; + int m_Padding = 5; + //FaceStyles m_FontStyle = FaceStyles.Normal; + //float m_FontStyleValue = 2; + + GlyphRenderMode m_GlyphRenderMode = GlyphRenderMode.SDFAA; + int m_AtlasWidth = 512; + int m_AtlasHeight = 512; + byte[] m_AtlasTextureBuffer; + Texture2D m_FontAtlasTexture; + Texture2D m_SavedFontAtlas; + + // + List m_FontGlyphTable = new List(); + List m_FontCharacterTable = new List(); + + Dictionary m_CharacterLookupMap = new Dictionary(); + Dictionary> m_GlyphLookupMap = new Dictionary>(); + + List m_GlyphsToPack = new List(); + List m_GlyphsPacked = new List(); + List m_FreeGlyphRects = new List(); + List m_UsedGlyphRects = new List(); + List m_GlyphsToRender = new List(); + List m_AvailableGlyphsToAdd = new List(); + List m_MissingCharacters = new List(); + List m_ExcludedCharacters = new List(); + + private FaceInfo m_FaceInfo; + + bool m_IncludeFontFeatures; + + + public void OnEnable() + { + // Used for Diagnostics + m_StopWatch = new System.Diagnostics.Stopwatch(); + + // Set Editor window size. + minSize = new Vector2(315, minSize.y); + + // Initialize & Get shader property IDs. + ShaderUtilities.GetShaderPropertyIDs(); + + // Load last selected preset if we are not already in the process of regenerating an existing font asset (via the Context menu) + if (EditorPrefs.HasKey(k_FontAssetCreationSettingsContainerKey)) + { + if (m_FontAssetCreationSettingsContainer == null) + m_FontAssetCreationSettingsContainer = JsonUtility.FromJson(EditorPrefs.GetString(k_FontAssetCreationSettingsContainerKey)); + + if (m_FontAssetCreationSettingsContainer.fontAssetCreationSettings != null && m_FontAssetCreationSettingsContainer.fontAssetCreationSettings.Count > 0) + { + // Load Font Asset Creation Settings preset. + if (EditorPrefs.HasKey(k_FontAssetCreationSettingsCurrentIndexKey)) + m_FontAssetCreationSettingsCurrentIndex = EditorPrefs.GetInt(k_FontAssetCreationSettingsCurrentIndexKey); + + LoadFontCreationSettings(m_FontAssetCreationSettingsContainer.fontAssetCreationSettings[m_FontAssetCreationSettingsCurrentIndex]); + } + } + + ClearGeneratedData(); + } + + + public void OnDisable() + { + //Debug.Log("TextMeshPro Editor Window has been disabled."); + + // Destroy Engine only if it has been initialized already + FontEngine.DestroyFontEngine(); + + ClearGeneratedData(); + + // Remove Glyph Report if one was created. + if (File.Exists("Assets/TextMesh Pro/Glyph Report.txt")) + { + File.Delete("Assets/TextMesh Pro/Glyph Report.txt"); + File.Delete("Assets/TextMesh Pro/Glyph Report.txt.meta"); + + AssetDatabase.Refresh(); + } + + // Save Font Asset Creation Settings Index + SaveCreationSettingsToEditorPrefs(SaveFontCreationSettings()); + EditorPrefs.SetInt(k_FontAssetCreationSettingsCurrentIndexKey, m_FontAssetCreationSettingsCurrentIndex); + + // Unregister to event + TMPro_EventManager.RESOURCE_LOAD_EVENT.Remove(ON_RESOURCES_LOADED); + + Resources.UnloadUnusedAssets(); + } + + + // Event received when TMP resources have been loaded. + void ON_RESOURCES_LOADED() + { + TMPro_EventManager.RESOURCE_LOAD_EVENT.Remove(ON_RESOURCES_LOADED); + + m_IsGenerationDisabled = false; + } + + // Make sure TMP Essential Resources have been imported. + void CheckEssentialResources() + { + if (TMP_Settings.instance == null) + { + if (m_IsGenerationDisabled == false) + TMPro_EventManager.RESOURCE_LOAD_EVENT.Add(ON_RESOURCES_LOADED); + + m_IsGenerationDisabled = true; + } + } + + + public void OnGUI() + { + GUILayout.BeginHorizontal(); + DrawControls(); + if (position.width > position.height && position.width > k_TwoColumnControlsWidth) + { + DrawPreview(); + } + GUILayout.EndHorizontal(); + } + + + public void Update() + { + if (m_IsRepaintNeeded) + { + //Debug.Log("Repainting..."); + m_IsRepaintNeeded = false; + Repaint(); + } + + // Update Progress bar is we are Rendering a Font. + if (m_IsProcessing) + { + m_AtlasGenerationProgress = FontEngine.generationProgress; + + m_IsRepaintNeeded = true; + } + + if (m_IsGlyphPackingDone) + { + Debug.Log("Glyph packing completed in: " + m_GlyphPackingGenerationTime.ToString("0.000 ms.")); + m_IsGlyphPackingDone = false; + } + + if (m_IsGlyphRenderingDone) + { + Debug.Log("Font Atlas generation completed in: " + m_GlyphRenderingGenerationTime.ToString("0.000 ms.")); + m_IsGlyphRenderingDone = false; + } + + // Update Feedback Window & Create Font Texture once Rendering is done. + if (m_IsRenderingDone) + { + m_IsProcessing = false; + m_IsRenderingDone = false; + + if (m_IsGenerationCancelled == false) + { + m_AtlasGenerationProgressLabel = "Generation completed in: " + (m_GlyphPackingGenerationTime + m_GlyphRenderingGenerationTime).ToString("0.00 ms."); + + UpdateRenderFeedbackWindow(); + CreateFontAtlasTexture(); + + // If dynamic make readable ... + m_FontAtlasTexture.Apply(false, false); + } + Repaint(); + } + } + + + /// + /// Method which returns the character corresponding to a decimal value. + /// + /// + /// + static uint[] ParseNumberSequence(string sequence) + { + List unicodeList = new List(); + string[] sequences = sequence.Split(','); + + foreach (string seq in sequences) + { + string[] s1 = seq.Split('-'); + + if (s1.Length == 1) + try + { + unicodeList.Add(uint.Parse(s1[0])); + } + catch + { + Debug.Log("No characters selected or invalid format."); + } + else + { + for (uint j = uint.Parse(s1[0]); j < uint.Parse(s1[1]) + 1; j++) + { + unicodeList.Add(j); + } + } + } + + return unicodeList.ToArray(); + } + + + /// + /// Method which returns the character (decimal value) from a hex sequence. + /// + /// + /// + static uint[] ParseHexNumberSequence(string sequence) + { + List unicodeList = new List(); + string[] sequences = sequence.Split(','); + + foreach (string seq in sequences) + { + string[] s1 = seq.Split('-'); + + if (s1.Length == 1) + try + { + unicodeList.Add(uint.Parse(s1[0], NumberStyles.AllowHexSpecifier)); + } + catch + { + Debug.Log("No characters selected or invalid format."); + } + else + { + for (uint j = uint.Parse(s1[0], NumberStyles.AllowHexSpecifier); j < uint.Parse(s1[1], NumberStyles.AllowHexSpecifier) + 1; j++) + { + unicodeList.Add(j); + } + } + } + + return unicodeList.ToArray(); + } + + + void DrawControls() + { + GUILayout.Space(5f); + + if (position.width > position.height && position.width > k_TwoColumnControlsWidth) + { + m_ScrollPosition = EditorGUILayout.BeginScrollView(m_ScrollPosition, GUILayout.Width(315)); + } + else + { + m_ScrollPosition = EditorGUILayout.BeginScrollView(m_ScrollPosition); + } + + GUILayout.Space(5f); + + GUILayout.Label(m_SelectedFontAsset != null ? string.Format("Font Settings [{0}]", m_SelectedFontAsset.name) : "Font Settings", EditorStyles.boldLabel); + + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + + EditorGUIUtility.labelWidth = 125f; + EditorGUIUtility.fieldWidth = 5f; + + // Disable Options if already generating a font atlas texture. + EditorGUI.BeginDisabledGroup(m_IsProcessing); + { + // FONT TTF SELECTION + EditorGUI.BeginChangeCheck(); + m_SourceFontFile = EditorGUILayout.ObjectField("Source Font File", m_SourceFontFile, typeof(Font), false) as Font; + if (EditorGUI.EndChangeCheck()) + { + m_SelectedFontAsset = null; + m_IsFontAtlasInvalid = true; + } + + // FONT SIZING + EditorGUI.BeginChangeCheck(); + if (m_PointSizeSamplingMode == 0) + { + m_PointSizeSamplingMode = EditorGUILayout.Popup("Sampling Point Size", m_PointSizeSamplingMode, m_FontSizingOptions); + } + else + { + GUILayout.BeginHorizontal(); + m_PointSizeSamplingMode = EditorGUILayout.Popup("Sampling Point Size", m_PointSizeSamplingMode, m_FontSizingOptions, GUILayout.Width(225)); + m_PointSize = EditorGUILayout.IntField(m_PointSize); + GUILayout.EndHorizontal(); + } + if (EditorGUI.EndChangeCheck()) + { + m_IsFontAtlasInvalid = true; + } + + // FONT PADDING + EditorGUI.BeginChangeCheck(); + m_Padding = EditorGUILayout.IntField("Padding", m_Padding); + m_Padding = (int)Mathf.Clamp(m_Padding, 0f, 64f); + if (EditorGUI.EndChangeCheck()) + { + m_IsFontAtlasInvalid = true; + } + + // FONT PACKING METHOD SELECTION + EditorGUI.BeginChangeCheck(); + m_PackingMode = (FontPackingModes)EditorGUILayout.EnumPopup("Packing Method", m_PackingMode); + if (EditorGUI.EndChangeCheck()) + { + m_IsFontAtlasInvalid = true; + } + + // FONT ATLAS RESOLUTION SELECTION + GUILayout.BeginHorizontal(); + GUI.changed = false; + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PrefixLabel("Atlas Resolution"); + m_AtlasWidth = EditorGUILayout.IntPopup(m_AtlasWidth, m_FontResolutionLabels, m_FontAtlasResolutions); + m_AtlasHeight = EditorGUILayout.IntPopup(m_AtlasHeight, m_FontResolutionLabels, m_FontAtlasResolutions); + if (EditorGUI.EndChangeCheck()) + { + m_IsFontAtlasInvalid = true; + } + + GUILayout.EndHorizontal(); + + + // FONT CHARACTER SET SELECTION + EditorGUI.BeginChangeCheck(); + bool hasSelectionChanged = false; + m_CharacterSetSelectionMode = EditorGUILayout.Popup("Character Set", m_CharacterSetSelectionMode, m_FontCharacterSets); + if (EditorGUI.EndChangeCheck()) + { + m_CharacterSequence = ""; + hasSelectionChanged = true; + m_IsFontAtlasInvalid = true; + } + + switch (m_CharacterSetSelectionMode) + { + case 0: // ASCII + //characterSequence = "32 - 126, 130, 132 - 135, 139, 145 - 151, 153, 155, 161, 166 - 167, 169 - 174, 176, 181 - 183, 186 - 187, 191, 8210 - 8226, 8230, 8240, 8242 - 8244, 8249 - 8250, 8252 - 8254, 8260, 8286"; + m_CharacterSequence = "32 - 126, 160, 8203, 8230, 9633"; + break; + + case 1: // EXTENDED ASCII + m_CharacterSequence = "32 - 126, 160 - 255, 8192 - 8303, 8364, 8482, 9633"; + // Could add 9632 for missing glyph + break; + + case 2: // Lowercase + m_CharacterSequence = "32 - 64, 91 - 126, 160"; + break; + + case 3: // Uppercase + m_CharacterSequence = "32 - 96, 123 - 126, 160"; + break; + + case 4: // Numbers & Symbols + m_CharacterSequence = "32 - 64, 91 - 96, 123 - 126, 160"; + break; + + case 5: // Custom Range + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label("Enter a sequence of decimal values to define the characters to be included in the font asset or retrieve one from another font asset.", TMP_UIStyleManager.label); + GUILayout.Space(10f); + + EditorGUI.BeginChangeCheck(); + m_ReferencedFontAsset = EditorGUILayout.ObjectField("Select Font Asset", m_ReferencedFontAsset, typeof(TMP_FontAsset), false) as TMP_FontAsset; + if (EditorGUI.EndChangeCheck() || hasSelectionChanged) + { + if (m_ReferencedFontAsset != null) + m_CharacterSequence = TMP_EditorUtility.GetDecimalCharacterSequence(TMP_FontAsset.GetCharactersArray(m_ReferencedFontAsset)); + + m_IsFontAtlasInvalid = true; + } + + // Filter out unwanted characters. + char chr = Event.current.character; + if ((chr < '0' || chr > '9') && (chr < ',' || chr > '-')) + { + Event.current.character = '\0'; + } + GUILayout.Label("Character Sequence (Decimal)", EditorStyles.boldLabel); + EditorGUI.BeginChangeCheck(); + m_CharacterSequence = EditorGUILayout.TextArea(m_CharacterSequence, TMP_UIStyleManager.textAreaBoxWindow, GUILayout.Height(120), GUILayout.ExpandWidth(true)); + if (EditorGUI.EndChangeCheck()) + { + m_IsFontAtlasInvalid = true; + } + + EditorGUILayout.EndVertical(); + break; + + case 6: // Unicode HEX Range + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label("Enter a sequence of Unicode (hex) values to define the characters to be included in the font asset or retrieve one from another font asset.", TMP_UIStyleManager.label); + GUILayout.Space(10f); + + EditorGUI.BeginChangeCheck(); + m_ReferencedFontAsset = EditorGUILayout.ObjectField("Select Font Asset", m_ReferencedFontAsset, typeof(TMP_FontAsset), false) as TMP_FontAsset; + if (EditorGUI.EndChangeCheck() || hasSelectionChanged) + { + if (m_ReferencedFontAsset != null) + m_CharacterSequence = TMP_EditorUtility.GetUnicodeCharacterSequence(TMP_FontAsset.GetCharactersArray(m_ReferencedFontAsset)); + + m_IsFontAtlasInvalid = true; + } + + // Filter out unwanted characters. + chr = Event.current.character; + if ((chr < '0' || chr > '9') && (chr < 'a' || chr > 'f') && (chr < 'A' || chr > 'F') && (chr < ',' || chr > '-')) + { + Event.current.character = '\0'; + } + GUILayout.Label("Character Sequence (Hex)", EditorStyles.boldLabel); + EditorGUI.BeginChangeCheck(); + m_CharacterSequence = EditorGUILayout.TextArea(m_CharacterSequence, TMP_UIStyleManager.textAreaBoxWindow, GUILayout.Height(120), GUILayout.ExpandWidth(true)); + if (EditorGUI.EndChangeCheck()) + { + m_IsFontAtlasInvalid = true; + } + + EditorGUILayout.EndVertical(); + break; + + case 7: // Characters from Font Asset + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + GUILayout.Label("Type the characters to be included in the font asset or retrieve them from another font asset.", TMP_UIStyleManager.label); + GUILayout.Space(10f); + + EditorGUI.BeginChangeCheck(); + m_ReferencedFontAsset = EditorGUILayout.ObjectField("Select Font Asset", m_ReferencedFontAsset, typeof(TMP_FontAsset), false) as TMP_FontAsset; + if (EditorGUI.EndChangeCheck() || hasSelectionChanged) + { + if (m_ReferencedFontAsset != null) + m_CharacterSequence = TMP_FontAsset.GetCharacters(m_ReferencedFontAsset); + + m_IsFontAtlasInvalid = true; + } + + EditorGUI.indentLevel = 0; + + GUILayout.Label("Custom Character List", EditorStyles.boldLabel); + EditorGUI.BeginChangeCheck(); + m_CharacterSequence = EditorGUILayout.TextArea(m_CharacterSequence, TMP_UIStyleManager.textAreaBoxWindow, GUILayout.Height(120), GUILayout.ExpandWidth(true)); + if (EditorGUI.EndChangeCheck()) + { + m_IsFontAtlasInvalid = true; + } + EditorGUILayout.EndVertical(); + break; + + case 8: // Character List from File + EditorGUI.BeginChangeCheck(); + m_CharactersFromFile = EditorGUILayout.ObjectField("Character File", m_CharactersFromFile, typeof(TextAsset), false) as TextAsset; + if (EditorGUI.EndChangeCheck()) + { + m_IsFontAtlasInvalid = true; + } + + if (m_CharactersFromFile != null) + { + Regex rx = new Regex(@"(? + { + if (match.Value.StartsWith("\\U")) + return char.ConvertFromUtf32(int.Parse(match.Value.Replace("\\U", ""), NumberStyles.HexNumber)); + + return char.ConvertFromUtf32(int.Parse(match.Value.Replace("\\u", ""), NumberStyles.HexNumber)); + }); + } + break; + } + + // FONT STYLE SELECTION + //GUILayout.BeginHorizontal(); + //EditorGUI.BeginChangeCheck(); + ////m_FontStyle = (FaceStyles)EditorGUILayout.EnumPopup("Font Style", m_FontStyle, GUILayout.Width(225)); + ////m_FontStyleValue = EditorGUILayout.IntField((int)m_FontStyleValue); + //if (EditorGUI.EndChangeCheck()) + //{ + // m_IsFontAtlasInvalid = true; + //} + //GUILayout.EndHorizontal(); + + // Render Mode Selection + CheckForLegacyGlyphRenderMode(); + + EditorGUI.BeginChangeCheck(); + m_GlyphRenderMode = (GlyphRenderMode)EditorGUILayout.EnumPopup("Render Mode", m_GlyphRenderMode); + if (EditorGUI.EndChangeCheck()) + { + m_IsFontAtlasInvalid = true; + } + + m_IncludeFontFeatures = EditorGUILayout.Toggle("Get Kerning Pairs", m_IncludeFontFeatures); + + EditorGUILayout.Space(); + } + + EditorGUI.EndDisabledGroup(); + + if (!string.IsNullOrEmpty(m_WarningMessage)) + { + EditorGUILayout.HelpBox(m_WarningMessage, MessageType.Warning); + } + + GUI.enabled = m_SourceFontFile != null && !m_IsProcessing && !m_IsGenerationDisabled; // Enable Preview if we are not already rendering a font. + if (GUILayout.Button("Generate Font Atlas") && GUI.enabled) + { + if (!m_IsProcessing && m_SourceFontFile != null) + { + DestroyImmediate(m_FontAtlasTexture); + m_FontAtlasTexture = null; + m_SavedFontAtlas = null; + + // Initialize font engine + FontEngineError errorCode = FontEngine.InitializeFontEngine(); + if (errorCode != FontEngineError.Success) + { + Debug.Log("Font Asset Creator - Error [" + errorCode + "] has occurred while Initializing the FreeType Library."); + } + + // Get file path of the source font file. + string fontPath = AssetDatabase.GetAssetPath(m_SourceFontFile); + + if (errorCode == FontEngineError.Success) + { + errorCode = FontEngine.LoadFontFace(fontPath); + + if (errorCode != FontEngineError.Success) + { + Debug.Log("Font Asset Creator - Error Code [" + errorCode + "] has occurred trying to load the [" + m_SourceFontFile.name + "] font file. This typically results from the use of an incompatible or corrupted font file.", m_SourceFontFile); + } + } + + + // Define an array containing the characters we will render. + if (errorCode == FontEngineError.Success) + { + uint[] characterSet = null; + + // Get list of characters that need to be packed and rendered to the atlas texture. + if (m_CharacterSetSelectionMode == 7 || m_CharacterSetSelectionMode == 8) + { + List char_List = new List(); + + for (int i = 0; i < m_CharacterSequence.Length; i++) + { + uint unicode = m_CharacterSequence[i]; + + // Handle surrogate pairs + if (i < m_CharacterSequence.Length - 1 && char.IsHighSurrogate((char)unicode) && char.IsLowSurrogate(m_CharacterSequence[i + 1])) + { + unicode = (uint)char.ConvertToUtf32(m_CharacterSequence[i], m_CharacterSequence[i + 1]); + i += 1; + } + + // Check to make sure we don't include duplicates + if (char_List.FindIndex(item => item == unicode) == -1) + char_List.Add(unicode); + } + + characterSet = char_List.ToArray(); + } + else if (m_CharacterSetSelectionMode == 6) + { + characterSet = ParseHexNumberSequence(m_CharacterSequence); + } + else + { + characterSet = ParseNumberSequence(m_CharacterSequence); + } + + m_CharacterCount = characterSet.Length; + + m_AtlasGenerationProgress = 0; + m_IsProcessing = true; + m_IsGenerationCancelled = false; + + GlyphLoadFlags glyphLoadFlags = ((GlyphRasterModes)m_GlyphRenderMode & GlyphRasterModes.RASTER_MODE_HINTED) == GlyphRasterModes.RASTER_MODE_HINTED + ? GlyphLoadFlags.LOAD_RENDER + : GlyphLoadFlags.LOAD_RENDER | GlyphLoadFlags.LOAD_NO_HINTING; + + glyphLoadFlags = ((GlyphRasterModes)m_GlyphRenderMode & GlyphRasterModes.RASTER_MODE_MONO) == GlyphRasterModes.RASTER_MODE_MONO + ? glyphLoadFlags | GlyphLoadFlags.LOAD_MONOCHROME + : glyphLoadFlags; + + // + AutoResetEvent autoEvent = new AutoResetEvent(false); + + // Worker thread to pack glyphs in the given texture space. + ThreadPool.QueueUserWorkItem(PackGlyphs => + { + // Start Stop Watch + m_StopWatch = System.Diagnostics.Stopwatch.StartNew(); + + // Clear the various lists used in the generation process. + m_AvailableGlyphsToAdd.Clear(); + m_MissingCharacters.Clear(); + m_ExcludedCharacters.Clear(); + m_CharacterLookupMap.Clear(); + m_GlyphLookupMap.Clear(); + m_GlyphsToPack.Clear(); + m_GlyphsPacked.Clear(); + + // Check if requested characters are available in the source font file. + for (int i = 0; i < characterSet.Length; i++) + { + uint unicode = characterSet[i]; + uint glyphIndex; + + if (FontEngine.TryGetGlyphIndex(unicode, out glyphIndex)) + { + // Skip over potential duplicate characters. + if (m_CharacterLookupMap.ContainsKey(unicode)) + continue; + + // Add character to character lookup map. + m_CharacterLookupMap.Add(unicode, glyphIndex); + + // Skip over potential duplicate glyph references. + if (m_GlyphLookupMap.ContainsKey(glyphIndex)) + { + // Add additional glyph reference for this character. + m_GlyphLookupMap[glyphIndex].Add(unicode); + continue; + } + + // Add glyph reference to glyph lookup map. + m_GlyphLookupMap.Add(glyphIndex, new List() { unicode }); + + // Add glyph index to list of glyphs to add to texture. + m_AvailableGlyphsToAdd.Add(glyphIndex); + } + else + { + // Add Unicode to list of missing characters. + m_MissingCharacters.Add(unicode); + } + } + + // Pack available glyphs in the provided texture space. + if (m_AvailableGlyphsToAdd.Count > 0) + { + int packingModifier = ((GlyphRasterModes)m_GlyphRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP ? 0 : 1; + + if (m_PointSizeSamplingMode == 0) // Auto-Sizing Point Size Mode + { + // Estimate min / max range for auto sizing of point size. + int minPointSize = 0; + int maxPointSize = (int)Mathf.Sqrt((m_AtlasWidth * m_AtlasHeight) / m_AvailableGlyphsToAdd.Count) * 3; + + m_PointSize = (maxPointSize + minPointSize) / 2; + + bool optimumPointSizeFound = false; + for (int iteration = 0; iteration < 15 && optimumPointSizeFound == false; iteration++) + { + m_AtlasGenerationProgressLabel = "Packing glyphs - Pass (" + iteration + ")"; + + FontEngine.SetFaceSize(m_PointSize); + + m_GlyphsToPack.Clear(); + m_GlyphsPacked.Clear(); + + m_FreeGlyphRects.Clear(); + m_FreeGlyphRects.Add(new GlyphRect(0, 0, m_AtlasWidth - packingModifier, m_AtlasHeight - packingModifier)); + m_UsedGlyphRects.Clear(); + + for (int i = 0; i < m_AvailableGlyphsToAdd.Count; i++) + { + uint glyphIndex = m_AvailableGlyphsToAdd[i]; + Glyph glyph; + + if (FontEngine.TryGetGlyphWithIndexValue(glyphIndex, glyphLoadFlags, out glyph)) + { + if (glyph.glyphRect.width > 0 && glyph.glyphRect.height > 0) + { + m_GlyphsToPack.Add(glyph); + } + else + { + m_GlyphsPacked.Add(glyph); + } + } + } + + FontEngine.TryPackGlyphsInAtlas(m_GlyphsToPack, m_GlyphsPacked, m_Padding, (GlyphPackingMode)m_PackingMode, m_GlyphRenderMode, m_AtlasWidth, m_AtlasHeight, m_FreeGlyphRects, m_UsedGlyphRects); + + if (m_IsGenerationCancelled) + { + DestroyImmediate(m_FontAtlasTexture); + m_FontAtlasTexture = null; + return; + } + + //Debug.Log("Glyphs remaining to add [" + m_GlyphsToAdd.Count + "]. Glyphs added [" + m_GlyphsAdded.Count + "]."); + + if (m_GlyphsToPack.Count > 0) + { + if (m_PointSize > minPointSize) + { + maxPointSize = m_PointSize; + m_PointSize = (m_PointSize + minPointSize) / 2; + + //Debug.Log("Decreasing point size from [" + maxPointSize + "] to [" + m_PointSize + "]."); + } + } + else + { + if (maxPointSize - minPointSize > 1 && m_PointSize < maxPointSize) + { + minPointSize = m_PointSize; + m_PointSize = (m_PointSize + maxPointSize) / 2; + + //Debug.Log("Increasing point size from [" + minPointSize + "] to [" + m_PointSize + "]."); + } + else + { + //Debug.Log("[" + iteration + "] iterations to find the optimum point size of : [" + m_PointSize + "]."); + optimumPointSizeFound = true; + } + } + } + } + else // Custom Point Size Mode + { + m_AtlasGenerationProgressLabel = "Packing glyphs..."; + + // Set point size + FontEngine.SetFaceSize(m_PointSize); + + m_GlyphsToPack.Clear(); + m_GlyphsPacked.Clear(); + + m_FreeGlyphRects.Clear(); + m_FreeGlyphRects.Add(new GlyphRect(0, 0, m_AtlasWidth - packingModifier, m_AtlasHeight - packingModifier)); + m_UsedGlyphRects.Clear(); + + for (int i = 0; i < m_AvailableGlyphsToAdd.Count; i++) + { + uint glyphIndex = m_AvailableGlyphsToAdd[i]; + Glyph glyph; + + if (FontEngine.TryGetGlyphWithIndexValue(glyphIndex, glyphLoadFlags, out glyph)) + { + if (glyph.glyphRect.width > 0 && glyph.glyphRect.height > 0) + { + m_GlyphsToPack.Add(glyph); + } + else + { + m_GlyphsPacked.Add(glyph); + } + } + } + + FontEngine.TryPackGlyphsInAtlas(m_GlyphsToPack, m_GlyphsPacked, m_Padding, (GlyphPackingMode)m_PackingMode, m_GlyphRenderMode, m_AtlasWidth, m_AtlasHeight, m_FreeGlyphRects, m_UsedGlyphRects); + + if (m_IsGenerationCancelled) + { + DestroyImmediate(m_FontAtlasTexture); + m_FontAtlasTexture = null; + return; + } + //Debug.Log("Glyphs remaining to add [" + m_GlyphsToAdd.Count + "]. Glyphs added [" + m_GlyphsAdded.Count + "]."); + } + + } + else + { + int packingModifier = ((GlyphRasterModes)m_GlyphRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP ? 0 : 1; + + FontEngine.SetFaceSize(m_PointSize); + + m_GlyphsToPack.Clear(); + m_GlyphsPacked.Clear(); + + m_FreeGlyphRects.Clear(); + m_FreeGlyphRects.Add(new GlyphRect(0, 0, m_AtlasWidth - packingModifier, m_AtlasHeight - packingModifier)); + m_UsedGlyphRects.Clear(); + } + + //Stop StopWatch + m_StopWatch.Stop(); + m_GlyphPackingGenerationTime = m_StopWatch.Elapsed.TotalMilliseconds; + m_IsGlyphPackingDone = true; + m_StopWatch.Reset(); + + m_FontCharacterTable.Clear(); + m_FontGlyphTable.Clear(); + m_GlyphsToRender.Clear(); + + // Add glyphs and characters successfully added to texture to their respective font tables. + foreach (Glyph glyph in m_GlyphsPacked) + { + uint glyphIndex = glyph.index; + + m_FontGlyphTable.Add(glyph); + + // Add glyphs to list of glyphs that need to be rendered. + if (glyph.glyphRect.width > 0 && glyph.glyphRect.height > 0) + m_GlyphsToRender.Add(glyph); + + foreach (uint unicode in m_GlyphLookupMap[glyphIndex]) + { + // Create new Character + m_FontCharacterTable.Add(new TMP_Character(unicode, glyph)); + } + } + + // + foreach (Glyph glyph in m_GlyphsToPack) + { + foreach (uint unicode in m_GlyphLookupMap[glyph.index]) + { + m_ExcludedCharacters.Add(unicode); + } + } + + // Get the face info for the current sampling point size. + m_FaceInfo = FontEngine.GetFaceInfo(); + + autoEvent.Set(); + }); + + // Worker thread to render glyphs in texture buffer. + ThreadPool.QueueUserWorkItem(RenderGlyphs => + { + autoEvent.WaitOne(); + + // Start Stop Watch + m_StopWatch = System.Diagnostics.Stopwatch.StartNew(); + + m_IsRenderingDone = false; + + // Allocate texture data + m_AtlasTextureBuffer = new byte[m_AtlasWidth * m_AtlasHeight]; + + m_AtlasGenerationProgressLabel = "Rendering glyphs..."; + + // Render and add glyphs to the given atlas texture. + if (m_GlyphsToRender.Count > 0) + { + FontEngine.RenderGlyphsToTexture(m_GlyphsToRender, m_Padding, m_GlyphRenderMode, m_AtlasTextureBuffer, m_AtlasWidth, m_AtlasHeight); + } + + m_IsRenderingDone = true; + + // Stop StopWatch + m_StopWatch.Stop(); + m_GlyphRenderingGenerationTime = m_StopWatch.Elapsed.TotalMilliseconds; + m_IsGlyphRenderingDone = true; + m_StopWatch.Reset(); + }); + } + + SaveCreationSettingsToEditorPrefs(SaveFontCreationSettings()); + } + } + + // FONT RENDERING PROGRESS BAR + GUILayout.Space(1); + Rect progressRect = EditorGUILayout.GetControlRect(false, 20); + + GUI.enabled = true; + progressRect.width -= 22; + EditorGUI.ProgressBar(progressRect, Mathf.Max(0.01f, m_AtlasGenerationProgress), m_AtlasGenerationProgressLabel); + progressRect.x = progressRect.x + progressRect.width + 2; + progressRect.y -= 1; + progressRect.width = 20; + progressRect.height = 20; + + GUI.enabled = m_IsProcessing; + if (GUI.Button(progressRect, "X")) + { + FontEngine.SendCancellationRequest(); + m_AtlasGenerationProgress = 0; + m_IsProcessing = false; + m_IsGenerationCancelled = true; + } + GUILayout.Space(5); + + // FONT STATUS & INFORMATION + GUI.enabled = true; + + GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Height(200)); + m_OutputScrollPosition = EditorGUILayout.BeginScrollView(m_OutputScrollPosition); + EditorGUILayout.LabelField(m_OutputFeedback, TMP_UIStyleManager.label); + EditorGUILayout.EndScrollView(); + GUILayout.EndVertical(); + + // SAVE TEXTURE & CREATE and SAVE FONT XML FILE + GUI.enabled = m_FontAtlasTexture != null && !m_IsProcessing; // Enable Save Button if font_Atlas is not Null. + + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button("Save") && GUI.enabled) + { + if (m_SelectedFontAsset == null) + { + if (m_LegacyFontAsset != null) + SaveNewFontAssetWithSameName(m_LegacyFontAsset); + else + SaveNewFontAsset(m_SourceFontFile); + } + else + { + // Save over exiting Font Asset + string filePath = Path.GetFullPath(AssetDatabase.GetAssetPath(m_SelectedFontAsset)).Replace('\\', '/'); + + if (((GlyphRasterModes)m_GlyphRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP) + Save_Bitmap_FontAsset(filePath); + else + Save_SDF_FontAsset(filePath); + } + } + if (GUILayout.Button("Save as...") && GUI.enabled) + { + if (m_SelectedFontAsset == null) + { + SaveNewFontAsset(m_SourceFontFile); + } + else + { + SaveNewFontAssetWithSameName(m_SelectedFontAsset); + } + } + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + + EditorGUILayout.EndVertical(); + + GUI.enabled = true; // Re-enable GUI + + if (position.height > position.width || position.width < k_TwoColumnControlsWidth) + { + DrawPreview(); + GUILayout.Space(5); + } + + EditorGUILayout.EndScrollView(); + + if (m_IsFontAtlasInvalid) + ClearGeneratedData(); + } + + + /// + /// Clear the previously generated data. + /// + void ClearGeneratedData() + { + m_IsFontAtlasInvalid = false; + + if (m_FontAtlasTexture != null && !EditorUtility.IsPersistent(m_FontAtlasTexture)) + { + DestroyImmediate(m_FontAtlasTexture); + m_FontAtlasTexture = null; + } + + m_AtlasGenerationProgressLabel = string.Empty; + m_AtlasGenerationProgress = 0; + m_SavedFontAtlas = null; + + m_OutputFeedback = string.Empty; + m_WarningMessage = string.Empty; + } + + + /// + /// Function to update the feedback window showing the results of the latest generation. + /// + void UpdateRenderFeedbackWindow() + { + m_PointSize = m_FaceInfo.pointSize; + + string missingGlyphReport = string.Empty; + + //string colorTag = m_FontCharacterTable.Count == m_CharacterCount ? "" : ""; + string colorTag2 = ""; + + missingGlyphReport = "Font: " + colorTag2 + m_FaceInfo.familyName + " Style: " + colorTag2 + m_FaceInfo.styleName + ""; + + missingGlyphReport += "\nPoint Size: " + colorTag2 + m_FaceInfo.pointSize + " SP/PD Ratio: " + colorTag2 + ((float)m_Padding / m_FaceInfo.pointSize).ToString("0.0%" + ""); + + missingGlyphReport += "\n\nCharacters included: " + m_FontCharacterTable.Count + "/" + m_CharacterCount + ""; + missingGlyphReport += "\nMissing characters: " + m_MissingCharacters.Count + ""; + missingGlyphReport += "\nExcluded characters: " + m_ExcludedCharacters.Count + ""; + + // Report characters missing from font file + missingGlyphReport += "\n\nCharacters missing from font file:"; + missingGlyphReport += "\n----------------------------------------"; + + m_OutputFeedback = missingGlyphReport; + + for (int i = 0; i < m_MissingCharacters.Count; i++) + { + missingGlyphReport += "\nID: " + m_MissingCharacters[i] + "\tHex: " + m_MissingCharacters[i].ToString("X") + "\tChar [" + (char)m_MissingCharacters[i] + "]"; + + if (missingGlyphReport.Length < 16300) + m_OutputFeedback = missingGlyphReport; + } + + // Report characters that did not fit in the atlas texture + missingGlyphReport += "\n\nCharacters excluded from packing:"; + missingGlyphReport += "\n----------------------------------------"; + + for (int i = 0; i < m_ExcludedCharacters.Count; i++) + { + missingGlyphReport += "\nID: " + m_ExcludedCharacters[i] + "\tHex: " + m_ExcludedCharacters[i].ToString("X") + "\tChar [" + (char)m_ExcludedCharacters[i] + "]"; + + if (missingGlyphReport.Length < 16300) + m_OutputFeedback = missingGlyphReport; + } + + if (missingGlyphReport.Length > 16300) + m_OutputFeedback += "\n\nReport truncated.\nSee \"TextMesh Pro\\Glyph Report.txt\""; + + // Save Missing Glyph Report file + if (Directory.Exists("Assets/TextMesh Pro")) + { + missingGlyphReport = System.Text.RegularExpressions.Regex.Replace(missingGlyphReport, @"<[^>]*>", string.Empty); + File.WriteAllText("Assets/TextMesh Pro/Glyph Report.txt", missingGlyphReport); + AssetDatabase.Refresh(); + } + } + + + void CreateFontAtlasTexture() + { + if (m_FontAtlasTexture != null) + DestroyImmediate(m_FontAtlasTexture); + + m_FontAtlasTexture = new Texture2D(m_AtlasWidth, m_AtlasHeight, TextureFormat.Alpha8, false, true); + + Color32[] colors = new Color32[m_AtlasWidth * m_AtlasHeight]; + + for (int i = 0; i < colors.Length; i++) + { + byte c = m_AtlasTextureBuffer[i]; + colors[i] = new Color32(c, c, c, c); + } + + // Clear allocation of + m_AtlasTextureBuffer = null; + + if ((m_GlyphRenderMode & GlyphRenderMode.RASTER) == GlyphRenderMode.RASTER || (m_GlyphRenderMode & GlyphRenderMode.RASTER_HINTED) == GlyphRenderMode.RASTER_HINTED) + m_FontAtlasTexture.filterMode = FilterMode.Point; + + m_FontAtlasTexture.SetPixels32(colors, 0); + m_FontAtlasTexture.Apply(false, false); + + // Saving File for Debug + //var pngData = m_FontAtlasTexture.EncodeToPNG(); + //File.WriteAllBytes("Assets/Textures/Debug Font Texture.png", pngData); + } + + + /// + /// Open Save Dialog to provide the option save the font asset using the name of the source font file. This also appends SDF to the name if using any of the SDF Font Asset creation modes. + /// + /// + void SaveNewFontAsset(Object sourceObject) + { + string filePath; + + // Save new Font Asset and open save file requester at Source Font File location. + string saveDirectory = new FileInfo(AssetDatabase.GetAssetPath(sourceObject)).DirectoryName; + + if (((GlyphRasterModes)m_GlyphRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP) + { + filePath = EditorUtility.SaveFilePanel("Save TextMesh Pro! Font Asset File", saveDirectory, sourceObject.name, "asset"); + + if (filePath.Length == 0) + return; + + Save_Bitmap_FontAsset(filePath); + } + else + { + filePath = EditorUtility.SaveFilePanel("Save TextMesh Pro! Font Asset File", saveDirectory, sourceObject.name + " SDF", "asset"); + + if (filePath.Length == 0) + return; + + Save_SDF_FontAsset(filePath); + } + } + + + /// + /// Open Save Dialog to provide the option to save the font asset under the same name. + /// + /// + void SaveNewFontAssetWithSameName(Object sourceObject) + { + string filePath; + + // Save new Font Asset and open save file requester at Source Font File location. + string saveDirectory = new FileInfo(AssetDatabase.GetAssetPath(sourceObject)).DirectoryName; + + filePath = EditorUtility.SaveFilePanel("Save TextMesh Pro! Font Asset File", saveDirectory, sourceObject.name, "asset"); + + if (filePath.Length == 0) + return; + + if (((GlyphRasterModes)m_GlyphRenderMode & GlyphRasterModes.RASTER_MODE_BITMAP) == GlyphRasterModes.RASTER_MODE_BITMAP) + { + Save_Bitmap_FontAsset(filePath); + } + else + { + Save_SDF_FontAsset(filePath); + } + } + + + void Save_Bitmap_FontAsset(string filePath) + { + filePath = filePath.Substring(0, filePath.Length - 6); // Trim file extension from filePath. + + string dataPath = Application.dataPath; + + if (filePath.IndexOf(dataPath, System.StringComparison.InvariantCultureIgnoreCase) == -1) + { + Debug.LogError("You're saving the font asset in a directory outside of this project folder. This is not supported. Please select a directory under \"" + dataPath + "\""); + return; + } + + string relativeAssetPath = filePath.Substring(dataPath.Length - 6); + string tex_DirName = Path.GetDirectoryName(relativeAssetPath); + string tex_FileName = Path.GetFileNameWithoutExtension(relativeAssetPath); + string tex_Path_NoExt = tex_DirName + "/" + tex_FileName; + + // Check if TextMeshPro font asset already exists. If not, create a new one. Otherwise update the existing one. + TMP_FontAsset fontAsset = AssetDatabase.LoadAssetAtPath(tex_Path_NoExt + ".asset", typeof(TMP_FontAsset)) as TMP_FontAsset; + if (fontAsset == null) + { + //Debug.Log("Creating TextMeshPro font asset!"); + fontAsset = ScriptableObject.CreateInstance(); // Create new TextMeshPro Font Asset. + AssetDatabase.CreateAsset(fontAsset, tex_Path_NoExt + ".asset"); + + // Set version number of font asset + fontAsset.version = "1.1.0"; + + //Set Font Asset Type + fontAsset.atlasRenderMode = m_GlyphRenderMode; + + // Reference to the source font file GUID. + fontAsset.m_SourceFontFile_EditorRef = (Font)m_SourceFontFile; + fontAsset.m_SourceFontFileGUID = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(m_SourceFontFile)); + + // Add FaceInfo to Font Asset + fontAsset.faceInfo = m_FaceInfo; + + // Add GlyphInfo[] to Font Asset + fontAsset.glyphTable = m_FontGlyphTable; + + // Add CharacterTable[] to font asset. + fontAsset.characterTable = m_FontCharacterTable; + + // Sort glyph and character tables. + fontAsset.SortAllTables(); + + // Get and Add Kerning Pairs to Font Asset + if (m_IncludeFontFeatures) + fontAsset.fontFeatureTable = GetKerningTable(); + + + // Add Font Atlas as Sub-Asset + fontAsset.atlasTextures = new Texture2D[] { m_FontAtlasTexture }; + m_FontAtlasTexture.name = tex_FileName + " Atlas"; + fontAsset.atlasWidth = m_AtlasWidth; + fontAsset.atlasHeight = m_AtlasHeight; + fontAsset.atlasPadding = m_Padding; + + AssetDatabase.AddObjectToAsset(m_FontAtlasTexture, fontAsset); + + // Create new Material and Add it as Sub-Asset + Shader default_Shader = Shader.Find("TextMeshPro/Bitmap"); // m_shaderSelection; + Material tmp_material = new Material(default_Shader); + tmp_material.name = tex_FileName + " Material"; + tmp_material.SetTexture(ShaderUtilities.ID_MainTex, m_FontAtlasTexture); + fontAsset.material = tmp_material; + + AssetDatabase.AddObjectToAsset(tmp_material, fontAsset); + + } + else + { + // Find all Materials referencing this font atlas. + Material[] material_references = TMP_EditorUtility.FindMaterialReferences(fontAsset); + + // Set version number of font asset + fontAsset.version = "1.1.0"; + + // Special handling to remove legacy font asset data + if (fontAsset.m_glyphInfoList != null && fontAsset.m_glyphInfoList.Count > 0) + fontAsset.m_glyphInfoList = null; + + //Set Font Asset Type + fontAsset.atlasRenderMode = m_GlyphRenderMode; + + // Add FaceInfo to Font Asset + fontAsset.faceInfo = m_FaceInfo; + + // Add GlyphInfo[] to Font Asset + fontAsset.glyphTable = m_FontGlyphTable; + + // Add CharacterTable[] to font asset. + fontAsset.characterTable = m_FontCharacterTable; + + // Sort glyph and character tables. + fontAsset.SortAllTables(); + + // Get and Add Kerning Pairs to Font Asset + if (m_IncludeFontFeatures) + fontAsset.fontFeatureTable = GetKerningTable(); + + // Destroy Assets that will be replaced. + if (fontAsset.atlasTextures != null && fontAsset.atlasTextures.Length > 0) + { + for (int i = 1; i < fontAsset.atlasTextures.Length; i++) + DestroyImmediate(fontAsset.atlasTextures[i], true); + } + + fontAsset.m_AtlasTextureIndex = 0; + fontAsset.atlasWidth = m_AtlasWidth; + fontAsset.atlasHeight = m_AtlasHeight; + fontAsset.atlasPadding = m_Padding; + + // Make sure remaining atlas texture is of the correct size + Texture2D tex = fontAsset.atlasTextures[0]; + tex.name = tex_FileName + " Atlas"; + + // Make texture readable to allow resizing + bool isReadableState = tex.isReadable; + if (isReadableState == false) + FontEngineEditorUtilities.SetAtlasTextureIsReadable(tex, true); + + if (tex.width != m_AtlasWidth || tex.height != m_AtlasHeight) + { + tex.Resize(m_AtlasWidth, m_AtlasHeight); + tex.Apply(); + } + + // Copy new texture data to existing texture + Graphics.CopyTexture(m_FontAtlasTexture, tex); + + // Apply changes to the texture. + tex.Apply(false, !isReadableState); + + // Special handling due to a bug in earlier versions of Unity. + m_FontAtlasTexture.hideFlags = HideFlags.None; + fontAsset.material.hideFlags = HideFlags.None; + + // Update the Texture reference on the Material + //for (int i = 0; i < material_references.Length; i++) + //{ + // material_references[i].SetFloat(ShaderUtilities.ID_TextureWidth, tex.width); + // material_references[i].SetFloat(ShaderUtilities.ID_TextureHeight, tex.height); + + // int spread = m_Padding; + // material_references[i].SetFloat(ShaderUtilities.ID_GradientScale, spread); + + // material_references[i].SetFloat(ShaderUtilities.ID_WeightNormal, fontAsset.normalStyle); + // material_references[i].SetFloat(ShaderUtilities.ID_WeightBold, fontAsset.boldStyle); + //} + } + + // Add list of GlyphRects to font asset. + fontAsset.freeGlyphRects = m_FreeGlyphRects; + fontAsset.usedGlyphRects = m_UsedGlyphRects; + + // Save Font Asset creation settings + m_SelectedFontAsset = fontAsset; + m_LegacyFontAsset = null; + fontAsset.creationSettings = SaveFontCreationSettings(); + + AssetDatabase.SaveAssets(); + + AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(fontAsset)); // Re-import font asset to get the new updated version. + + //EditorUtility.SetDirty(font_asset); + fontAsset.ReadFontAssetDefinition(); + + AssetDatabase.Refresh(); + + m_FontAtlasTexture = null; + + // NEED TO GENERATE AN EVENT TO FORCE A REDRAW OF ANY TEXTMESHPRO INSTANCES THAT MIGHT BE USING THIS FONT ASSET + TMPro_EventManager.ON_FONT_PROPERTY_CHANGED(true, fontAsset); + } + + + void Save_SDF_FontAsset(string filePath) + { + filePath = filePath.Substring(0, filePath.Length - 6); // Trim file extension from filePath. + + string dataPath = Application.dataPath; + + if (filePath.IndexOf(dataPath, System.StringComparison.InvariantCultureIgnoreCase) == -1) + { + Debug.LogError("You're saving the font asset in a directory outside of this project folder. This is not supported. Please select a directory under \"" + dataPath + "\""); + return; + } + + string relativeAssetPath = filePath.Substring(dataPath.Length - 6); + string tex_DirName = Path.GetDirectoryName(relativeAssetPath); + string tex_FileName = Path.GetFileNameWithoutExtension(relativeAssetPath); + string tex_Path_NoExt = tex_DirName + "/" + tex_FileName; + + + // Check if TextMeshPro font asset already exists. If not, create a new one. Otherwise update the existing one. + TMP_FontAsset fontAsset = AssetDatabase.LoadAssetAtPath(tex_Path_NoExt + ".asset"); + if (fontAsset == null) + { + //Debug.Log("Creating TextMeshPro font asset!"); + fontAsset = ScriptableObject.CreateInstance(); // Create new TextMeshPro Font Asset. + AssetDatabase.CreateAsset(fontAsset, tex_Path_NoExt + ".asset"); + + // Set version number of font asset + fontAsset.version = "1.1.0"; + + // Reference to source font file GUID. + fontAsset.m_SourceFontFile_EditorRef = (Font)m_SourceFontFile; + fontAsset.m_SourceFontFileGUID = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(m_SourceFontFile)); + + //Set Font Asset Type + fontAsset.atlasRenderMode = m_GlyphRenderMode; + + // Add FaceInfo to Font Asset + fontAsset.faceInfo = m_FaceInfo; + + // Add GlyphInfo[] to Font Asset + fontAsset.glyphTable = m_FontGlyphTable; + + // Add CharacterTable[] to font asset. + fontAsset.characterTable = m_FontCharacterTable; + + // Sort glyph and character tables. + fontAsset.SortAllTables(); + + // Get and Add Kerning Pairs to Font Asset + if (m_IncludeFontFeatures) + fontAsset.fontFeatureTable = GetKerningTable(); + + // Add Font Atlas as Sub-Asset + fontAsset.atlasTextures = new Texture2D[] { m_FontAtlasTexture }; + m_FontAtlasTexture.name = tex_FileName + " Atlas"; + fontAsset.atlasWidth = m_AtlasWidth; + fontAsset.atlasHeight = m_AtlasHeight; + fontAsset.atlasPadding = m_Padding; + + AssetDatabase.AddObjectToAsset(m_FontAtlasTexture, fontAsset); + + // Create new Material and Add it as Sub-Asset + Shader default_Shader = Shader.Find("TextMeshPro/Distance Field"); + Material tmp_material = new Material(default_Shader); + + tmp_material.name = tex_FileName + " Material"; + tmp_material.SetTexture(ShaderUtilities.ID_MainTex, m_FontAtlasTexture); + tmp_material.SetFloat(ShaderUtilities.ID_TextureWidth, m_FontAtlasTexture.width); + tmp_material.SetFloat(ShaderUtilities.ID_TextureHeight, m_FontAtlasTexture.height); + + int spread = m_Padding + 1; + tmp_material.SetFloat(ShaderUtilities.ID_GradientScale, spread); // Spread = Padding for Brute Force SDF. + + tmp_material.SetFloat(ShaderUtilities.ID_WeightNormal, fontAsset.normalStyle); + tmp_material.SetFloat(ShaderUtilities.ID_WeightBold, fontAsset.boldStyle); + + fontAsset.material = tmp_material; + + AssetDatabase.AddObjectToAsset(tmp_material, fontAsset); + + } + else + { + // Find all Materials referencing this font atlas. + Material[] material_references = TMP_EditorUtility.FindMaterialReferences(fontAsset); + + // Set version number of font asset + fontAsset.version = "1.1.0"; + + // Special handling to remove legacy font asset data + if (fontAsset.m_glyphInfoList != null && fontAsset.m_glyphInfoList.Count > 0) + fontAsset.m_glyphInfoList = null; + + //Set Font Asset Type + fontAsset.atlasRenderMode = m_GlyphRenderMode; + + // Add FaceInfo to Font Asset + fontAsset.faceInfo = m_FaceInfo; + + // Add GlyphInfo[] to Font Asset + fontAsset.glyphTable = m_FontGlyphTable; + + // Add CharacterTable[] to font asset. + fontAsset.characterTable = m_FontCharacterTable; + + // Sort glyph and character tables. + fontAsset.SortAllTables(); + + // Get and Add Kerning Pairs to Font Asset + // TODO: Check and preserve existing adjustment pairs. + if (m_IncludeFontFeatures) + fontAsset.fontFeatureTable = GetKerningTable(); + + // Destroy Assets that will be replaced. + if (fontAsset.atlasTextures != null && fontAsset.atlasTextures.Length > 0) + { + for (int i = 1; i < fontAsset.atlasTextures.Length; i++) + DestroyImmediate(fontAsset.atlasTextures[i], true); + } + + fontAsset.m_AtlasTextureIndex = 0; + fontAsset.atlasWidth = m_AtlasWidth; + fontAsset.atlasHeight = m_AtlasHeight; + fontAsset.atlasPadding = m_Padding; + + // Make sure remaining atlas texture is of the correct size + Texture2D tex = fontAsset.atlasTextures[0]; + tex.name = tex_FileName + " Atlas"; + + // Make texture readable to allow resizing + bool isReadableState = tex.isReadable; + if (isReadableState == false) + FontEngineEditorUtilities.SetAtlasTextureIsReadable(tex, true); + + if (tex.width != m_AtlasWidth || tex.height != m_AtlasHeight) + { + tex.Resize(m_AtlasWidth, m_AtlasHeight); + tex.Apply(); + } + + // Copy new texture data to existing texture + Graphics.CopyTexture(m_FontAtlasTexture, tex); + + // Apply changes to the texture. + tex.Apply(false, !isReadableState); + + // Special handling due to a bug in earlier versions of Unity. + m_FontAtlasTexture.hideFlags = HideFlags.None; + fontAsset.material.hideFlags = HideFlags.None; + + // Update the Texture reference on the Material + for (int i = 0; i < material_references.Length; i++) + { + material_references[i].SetFloat(ShaderUtilities.ID_TextureWidth, tex.width); + material_references[i].SetFloat(ShaderUtilities.ID_TextureHeight, tex.height); + + int spread = m_Padding + 1; + material_references[i].SetFloat(ShaderUtilities.ID_GradientScale, spread); + + material_references[i].SetFloat(ShaderUtilities.ID_WeightNormal, fontAsset.normalStyle); + material_references[i].SetFloat(ShaderUtilities.ID_WeightBold, fontAsset.boldStyle); + } + } + + // Saving File for Debug + //var pngData = destination_Atlas.EncodeToPNG(); + //File.WriteAllBytes("Assets/Textures/Debug Distance Field.png", pngData); + + // Add list of GlyphRects to font asset. + fontAsset.freeGlyphRects = m_FreeGlyphRects; + fontAsset.usedGlyphRects = m_UsedGlyphRects; + + // Save Font Asset creation settings + m_SelectedFontAsset = fontAsset; + m_LegacyFontAsset = null; + fontAsset.creationSettings = SaveFontCreationSettings(); + + AssetDatabase.SaveAssets(); + + AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(fontAsset)); // Re-import font asset to get the new updated version. + + fontAsset.ReadFontAssetDefinition(); + + AssetDatabase.Refresh(); + + m_FontAtlasTexture = null; + + // NEED TO GENERATE AN EVENT TO FORCE A REDRAW OF ANY TEXTMESHPRO INSTANCES THAT MIGHT BE USING THIS FONT ASSET + TMPro_EventManager.ON_FONT_PROPERTY_CHANGED(true, fontAsset); + } + + + /// + /// Internal method to save the Font Asset Creation Settings + /// + /// + FontAssetCreationSettings SaveFontCreationSettings() + { + FontAssetCreationSettings settings = new FontAssetCreationSettings(); + + //settings.sourceFontFileName = m_SourceFontFile.name; + settings.sourceFontFileGUID = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(m_SourceFontFile)); + settings.pointSizeSamplingMode = m_PointSizeSamplingMode; + settings.pointSize = m_PointSize; + settings.padding = m_Padding; + settings.packingMode = (int)m_PackingMode; + settings.atlasWidth = m_AtlasWidth; + settings.atlasHeight = m_AtlasHeight; + settings.characterSetSelectionMode = m_CharacterSetSelectionMode; + settings.characterSequence = m_CharacterSequence; + settings.referencedFontAssetGUID = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(m_ReferencedFontAsset)); + settings.referencedTextAssetGUID = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(m_CharactersFromFile)); + //settings.fontStyle = (int)m_FontStyle; + //settings.fontStyleModifier = m_FontStyleValue; + settings.renderMode = (int)m_GlyphRenderMode; + settings.includeFontFeatures = m_IncludeFontFeatures; + + return settings; + } + + + /// + /// Internal method to load the Font Asset Creation Settings + /// + /// + void LoadFontCreationSettings(FontAssetCreationSettings settings) + { + m_SourceFontFile = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(settings.sourceFontFileGUID)); + m_PointSizeSamplingMode = settings.pointSizeSamplingMode; + m_PointSize = settings.pointSize; + m_Padding = settings.padding; + m_PackingMode = (FontPackingModes)settings.packingMode; + m_AtlasWidth = settings.atlasWidth; + m_AtlasHeight = settings.atlasHeight; + m_CharacterSetSelectionMode = settings.characterSetSelectionMode; + m_CharacterSequence = settings.characterSequence; + m_ReferencedFontAsset = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(settings.referencedFontAssetGUID)); + m_CharactersFromFile = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(settings.referencedTextAssetGUID)); + //m_FontStyle = (FaceStyles)settings.fontStyle; + //m_FontStyleValue = settings.fontStyleModifier; + m_GlyphRenderMode = (GlyphRenderMode)settings.renderMode; + m_IncludeFontFeatures = settings.includeFontFeatures; + } + + + /// + /// Save the latest font asset creation settings to EditorPrefs. + /// + /// + void SaveCreationSettingsToEditorPrefs(FontAssetCreationSettings settings) + { + // Create new list if one does not already exist + if (m_FontAssetCreationSettingsContainer == null) + { + m_FontAssetCreationSettingsContainer = new FontAssetCreationSettingsContainer(); + m_FontAssetCreationSettingsContainer.fontAssetCreationSettings = new List(); + } + + // Add new creation settings to the list + m_FontAssetCreationSettingsContainer.fontAssetCreationSettings.Add(settings); + + // Since list should only contain the most 4 recent settings, we remove the first element if list exceeds 4 elements. + if (m_FontAssetCreationSettingsContainer.fontAssetCreationSettings.Count > 4) + m_FontAssetCreationSettingsContainer.fontAssetCreationSettings.RemoveAt(0); + + m_FontAssetCreationSettingsCurrentIndex = m_FontAssetCreationSettingsContainer.fontAssetCreationSettings.Count - 1; + + // Serialize list to JSON + string serializedSettings = JsonUtility.ToJson(m_FontAssetCreationSettingsContainer, true); + + EditorPrefs.SetString(k_FontAssetCreationSettingsContainerKey, serializedSettings); + } + + void DrawPreview() + { + Rect pixelRect; + if (position.width > position.height && position.width > k_TwoColumnControlsWidth) + { + float minSide = Mathf.Min(position.height - 15f, position.width - k_TwoColumnControlsWidth); + + EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.MaxWidth(minSide)); + + pixelRect = GUILayoutUtility.GetRect(minSide, minSide, GUILayout.ExpandHeight(false), GUILayout.ExpandWidth(false)); + } + else + { + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + + pixelRect = GUILayoutUtility.GetAspectRect(1f); + } + + if (m_FontAtlasTexture != null) + { + EditorGUI.DrawTextureAlpha(pixelRect, m_FontAtlasTexture, ScaleMode.StretchToFill); + } + else if (m_SavedFontAtlas != null) + { + EditorGUI.DrawTextureAlpha(pixelRect, m_SavedFontAtlas, ScaleMode.StretchToFill); + } + + EditorGUILayout.EndVertical(); + } + + + void CheckForLegacyGlyphRenderMode() + { + // Special handling for legacy glyph render mode + if ((int)m_GlyphRenderMode < 0x100) + { + switch ((int)m_GlyphRenderMode) + { + case 0: + m_GlyphRenderMode = GlyphRenderMode.SMOOTH_HINTED; + break; + case 1: + m_GlyphRenderMode = GlyphRenderMode.SMOOTH; + break; + case 2: + m_GlyphRenderMode = GlyphRenderMode.RASTER_HINTED; + break; + case 3: + m_GlyphRenderMode = GlyphRenderMode.RASTER; + break; + case 6: + case 7: + m_GlyphRenderMode = GlyphRenderMode.SDFAA; + break; + } + } + } + + + // Get Kerning Pairs + public TMP_FontFeatureTable GetKerningTable() + { + GlyphPairAdjustmentRecord[] adjustmentRecords = FontEngine.GetGlyphPairAdjustmentTable(m_AvailableGlyphsToAdd.ToArray()); + + if (adjustmentRecords == null) + return null; + + TMP_FontFeatureTable fontFeatureTable = new TMP_FontFeatureTable(); + + for (int i = 0; i < adjustmentRecords.Length && adjustmentRecords[i].firstAdjustmentRecord.glyphIndex != 0; i++) + { + fontFeatureTable.glyphPairAdjustmentRecords.Add(new TMP_GlyphPairAdjustmentRecord(adjustmentRecords[i])); + } + + fontFeatureTable.SortGlyphPairAdjustmentRecords(); + + return fontFeatureTable; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontAssetCreatorWindow.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontAssetCreatorWindow.cs.meta new file mode 100644 index 0000000..4648857 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontAssetCreatorWindow.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 383966e89d344865a36addd5d378ffd3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontPlugin.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontPlugin.cs new file mode 100644 index 0000000..3b098ff --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontPlugin.cs @@ -0,0 +1,115 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; +using System; +using System.Runtime.InteropServices; + + +namespace TMPro.EditorUtilities +{ + /* + public class TMPro_FontPlugin + { + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void DebugLog(string log); + private static readonly DebugLog debugLog = DebugWrapper; + private static readonly IntPtr functionPointer = Marshal.GetFunctionPointerForDelegate(debugLog); + + private static void DebugWrapper(string log) + { + Debug.Log(log); + } + + public static void LinkDebugLog() + { + LinkDebug(functionPointer); + } + + [DllImport("TMPro_Plugin")] + private static extern void LinkDebug([MarshalAs(UnmanagedType.FunctionPtr)]IntPtr debugCall); + + [DllImport("TMPro_Plugin")] + public static extern + int Initialize_FontEngine(); + + [DllImport("TMPro_Plugin")] + public static extern + int Destroy_FontEngine(); + + [DllImport("TMPro_Plugin")] + public static extern + int Load_TrueType_Font(string fontPath); + + [DllImport("TMPro_Plugin")] + public static extern + int FT_Size_Font(int fontSize); + + [DllImport("TMPro_Plugin")] + public static extern + int Render_Character(byte[] buffer_fill, byte[] buffer_edge, int buffer_width, int buffer_height, int offset, int asc, FaceStyles style, float thickness, RenderModes rasterMode, ref FT_GlyphInfo glyphInfo); + + [DllImport("TMPro_Plugin")] + public static extern + int Render_Characters(byte[] buffer, int buffer_width, int buffer_height, int character_padding, int[] asc_set, int char_count, FaceStyles style, float style_mod, bool autoSize, RenderModes renderMode, int method, ref FT_FaceInfo fontData, FT_GlyphInfo[] Output); + + [DllImport("TMPro_Plugin")] + public static extern + int FT_GetKerningPairs(string fontPath, int[] characterSet, int setCount, FT_KerningPair[] kerningPairs); + + [DllImport("TMPro_Plugin")] + public static extern + float Check_RenderProgress(); + + [DllImport("TMPro_Plugin")] + internal static extern + void SendCancellationRequest(CancellationRequestType request); + } + + public enum FaceStyles { Normal, Bold, Italic, Bold_Italic, Outline, Bold_Sim }; + public enum RenderModes { HintedSmooth = 0, Smooth = 1, RasterHinted = 2, Raster = 3, DistanceField16 = 6, DistanceField32 = 7 }; // SignedDistanceField64 = 8 + + internal enum CancellationRequestType : byte { None = 0x0, CancelInProgess = 0x1, WindowClosed = 0x2 }; + + [StructLayout(LayoutKind.Sequential)] + public struct FT_KerningPair + { + public int ascII_Left; + public int ascII_Right; + public float xAdvanceOffset; + } + + + [StructLayout(LayoutKind.Sequential)] + public struct FT_GlyphInfo + { + public int id; + public float x; + public float y; + public float width; + public float height; + public float xOffset; + public float yOffset; + public float xAdvance; + } + + + [StructLayout(LayoutKind.Sequential)] + public struct FT_FaceInfo + { + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + public string name; + public int pointSize; + public int padding; + public float lineHeight; + public float baseline; + public float ascender; + public float descender; + public float centerLine; + public float underline; + public float underlineThickness; + public int characterCount; + public int atlasWidth; + public int atlasHeight; + } + */ +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontPlugin.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontPlugin.cs.meta new file mode 100644 index 0000000..66f3a87 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_FontPlugin.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9edc9283e7d6409fab242fe8fb6a822c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_SortingLayerHelper.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_SortingLayerHelper.cs new file mode 100644 index 0000000..c36f9f8 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_SortingLayerHelper.cs @@ -0,0 +1,32 @@ +using UnityEngine; + + +namespace TMPro +{ + // Helpers used by the different sorting layer classes. + public static class SortingLayerHelper + { + // Gets an array of sorting layer names. + public static string[] sortingLayerNames + { + get + { + return GetSortingLayerNames(); + } + } + + static string[] GetSortingLayerNames() + { + int layerCount = SortingLayer.layers.Length; + + string[] layerNames = new string[layerCount]; + + for (int i = 0; i < layerCount; i++) + { + layerNames[i] = SortingLayer.layers[i].name; + } + + return layerNames; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_SortingLayerHelper.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_SortingLayerHelper.cs.meta new file mode 100644 index 0000000..9d902b9 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_SortingLayerHelper.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 88ed537c17c34f339121fe9a7d6d7a0e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TextContainerEditor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TextContainerEditor.cs new file mode 100644 index 0000000..09fc617 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TextContainerEditor.cs @@ -0,0 +1,235 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + [CustomEditor(typeof(TextContainer)), CanEditMultipleObjects] + public class TMPro_TextContainerEditor : Editor + { + + // Serialized Properties + private SerializedProperty anchorPosition_prop; + private SerializedProperty pivot_prop; + private SerializedProperty rectangle_prop; + private SerializedProperty margins_prop; + + + private TextContainer m_textContainer; + //private Transform m_transform; + //private Vector3[] m_Rect_handlePoints = new Vector3[4]; + //private Vector3[] m_Margin_handlePoints = new Vector3[4]; + + //private Vector2 m_anchorPosition; + + //private Vector3 m_mousePreviousPOS; + //private Vector2 m_previousStartPOS; + //private int m_mouseDragFlag = 0; + + //private static Transform m_visualHelper; + + + void OnEnable() + { + + // Serialized Properties + anchorPosition_prop = serializedObject.FindProperty("m_anchorPosition"); + pivot_prop = serializedObject.FindProperty("m_pivot"); + rectangle_prop = serializedObject.FindProperty("m_rect"); + margins_prop = serializedObject.FindProperty("m_margins"); + + m_textContainer = (TextContainer)target; + //m_transform = m_textContainer.transform; + + + /* + if (m_visualHelper == null) + { + m_visualHelper = GameObject.CreatePrimitive(PrimitiveType.Sphere).transform; + m_visualHelper.localScale = new Vector3(0.25f, 0.25f, 0.25f); + } + */ + } + + void OnDisable() + { + /* + if (m_visualHelper != null) + DestroyImmediate (m_visualHelper.gameObject); + */ + } + + + + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(anchorPosition_prop); + if (anchorPosition_prop.enumValueIndex == 9) + { + EditorGUI.indentLevel += 1; + EditorGUILayout.PropertyField(pivot_prop, new GUIContent("Pivot Position")); + EditorGUI.indentLevel -= 1; + } + + + DrawDimensionProperty(rectangle_prop, "Dimensions"); + DrawMaginProperty(margins_prop, "Margins"); + if (EditorGUI.EndChangeCheck()) + { + // Re-compute pivot position when changes are made. + if (anchorPosition_prop.enumValueIndex != 9) + pivot_prop.vector2Value = GetAnchorPosition(anchorPosition_prop.enumValueIndex); + + m_textContainer.hasChanged = true; + } + + serializedObject.ApplyModifiedProperties(); + + EditorGUILayout.Space(); + } + + + private void DrawDimensionProperty(SerializedProperty property, string label) + { + float old_LabelWidth = EditorGUIUtility.labelWidth; + float old_FieldWidth = EditorGUIUtility.fieldWidth; + + Rect rect = EditorGUILayout.GetControlRect(false, 18); + Rect pos0 = new Rect(rect.x, rect.y + 2, rect.width, 18); + + float width = rect.width + 3; + pos0.width = old_LabelWidth; + GUI.Label(pos0, label); + + Rect rectangle = property.rectValue; + + float width_B = width - old_LabelWidth; + float fieldWidth = width_B / 4; + pos0.width = fieldWidth - 5; + + pos0.x = old_LabelWidth + 15; + GUI.Label(pos0, "Width"); + + pos0.x += fieldWidth; + rectangle.width = EditorGUI.FloatField(pos0, GUIContent.none, rectangle.width); + + pos0.x += fieldWidth; + GUI.Label(pos0, "Height"); + + pos0.x += fieldWidth; + rectangle.height = EditorGUI.FloatField(pos0, GUIContent.none, rectangle.height); + + property.rectValue = rectangle; + EditorGUIUtility.labelWidth = old_LabelWidth; + EditorGUIUtility.fieldWidth = old_FieldWidth; + } + + + private void DrawMaginProperty(SerializedProperty property, string label) + { + float old_LabelWidth = EditorGUIUtility.labelWidth; + float old_FieldWidth = EditorGUIUtility.fieldWidth; + + Rect rect = EditorGUILayout.GetControlRect(false, 2 * 18); + Rect pos0 = new Rect(rect.x, rect.y + 2, rect.width, 18); + + float width = rect.width + 3; + pos0.width = old_LabelWidth; + GUI.Label(pos0, label); + + //Vector4 vec = property.vector4Value; + Vector4 vec = Vector4.zero; + vec.x = property.FindPropertyRelative("x").floatValue; + vec.y = property.FindPropertyRelative("y").floatValue; + vec.z = property.FindPropertyRelative("z").floatValue; + vec.w = property.FindPropertyRelative("w").floatValue; + + + float widthB = width - old_LabelWidth; + float fieldWidth = widthB / 4; + pos0.width = fieldWidth - 5; + + // Labels + pos0.x = old_LabelWidth + 15; + GUI.Label(pos0, "Left"); + + pos0.x += fieldWidth; + GUI.Label(pos0, "Top"); + + pos0.x += fieldWidth; + GUI.Label(pos0, "Right"); + + pos0.x += fieldWidth; + GUI.Label(pos0, "Bottom"); + + pos0.y += 18; + + pos0.x = old_LabelWidth + 15; + vec.x = EditorGUI.FloatField(pos0, GUIContent.none, vec.x); + + pos0.x += fieldWidth; + vec.y = EditorGUI.FloatField(pos0, GUIContent.none, vec.y); + + pos0.x += fieldWidth; + vec.z = EditorGUI.FloatField(pos0, GUIContent.none, vec.z); + + pos0.x += fieldWidth; + vec.w = EditorGUI.FloatField(pos0, GUIContent.none, vec.w); + + //property.vector4Value = vec; + property.FindPropertyRelative("x").floatValue = vec.x; + property.FindPropertyRelative("y").floatValue = vec.y; + property.FindPropertyRelative("z").floatValue = vec.z; + property.FindPropertyRelative("w").floatValue = vec.w; + + EditorGUIUtility.labelWidth = old_LabelWidth; + EditorGUIUtility.fieldWidth = old_FieldWidth; + } + + + Vector2 GetAnchorPosition(int index) + { + Vector2 anchorPosition = Vector2.zero; + + switch (index) + { + case 0: // TOP LEFT + anchorPosition = new Vector2(0, 1); + break; + case 1: // TOP + anchorPosition = new Vector2(0.5f, 1); + break; + case 2: // TOP RIGHT + anchorPosition = new Vector2(1, 1); + break; + case 3: // LEFT + anchorPosition = new Vector2(0, 0.5f); + break; + case 4: // MIDDLE + anchorPosition = new Vector2(0.5f, 0.5f); + break; + case 5: // RIGHT + anchorPosition = new Vector2(1, 0.5f); + break; + case 6: // BOTTOM LEFT + anchorPosition = new Vector2(0, 0); + break; + case 7: // BOTTOM + anchorPosition = new Vector2(0.5f, 0); + break; + case 8: // BOTTOM RIGHT + anchorPosition = new Vector2(1, 0); + break; + } + + return anchorPosition; + } + + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TextContainerEditor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TextContainerEditor.cs.meta new file mode 100644 index 0000000..bad7881 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TextContainerEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 02893ffb522b490a9fa28eedd2584309 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TexturePostProcessor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TexturePostProcessor.cs new file mode 100644 index 0000000..b822d47 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TexturePostProcessor.cs @@ -0,0 +1,91 @@ +using System; +using UnityEngine; +using UnityEditor; +using System.Collections; + + +namespace TMPro.EditorUtilities +{ + + public class TMPro_TexturePostProcessor : AssetPostprocessor + { + void OnPostprocessTexture(Texture2D texture) + { + Texture2D tex = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Texture2D)) as Texture2D; + + // Send Event Sub Objects + if (tex != null) + TMPro_EventManager.ON_SPRITE_ASSET_PROPERTY_CHANGED(true, tex); + } + } + + /// + /// Asset post processor used to handle font assets getting updated outside of the Unity editor. + /// + class FontAssetPostProcessor : AssetPostprocessor + { + private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) + { + foreach (var asset in importedAssets) + { + if (AssetDatabase.GetMainAssetTypeAtPath(asset) == typeof(TMP_FontAsset)) + { + TMP_FontAsset fontAsset = AssetDatabase.LoadAssetAtPath(asset, typeof(TMP_FontAsset)) as TMP_FontAsset; + + if (fontAsset != null) + TMP_EditorResourceManager.RegisterFontAssetForDefinitionRefresh(fontAsset); + } + } + } + } + + //public class TMPro_PackageImportPostProcessor : AssetPostprocessor + //{ + // static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) + // { + // for (int i = 0; i < importedAssets.Length; i++) + // { + // if (importedAssets[i].Contains("TextMesh Pro/Resources/TMP Settings.asset")) + // { + // Debug.Log("New TMP Settings file was just imported."); + + // // TMP Settings file was just re-imported. + // // Check if project already contains + // } + + + // if (importedAssets[i].Contains("com.unity.TextMeshPro/Examples")) + // { + // //Debug.Log("New TMP Examples folder was just imported."); + // } + + // //Debug.Log("[" + importedAssets[i] + "] was just imported."); + // } + + + + // //for (int i = 0; i < deletedAssets.Length; i++) + // //{ + // // if (deletedAssets[i] == "Assets/TextMesh Pro") + // // { + // // //Debug.Log("Asset [" + deletedAssets[i] + "] has been deleted."); + // // string currentBuildSettings = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); + + // // //Check for and inject TMP_PRESENT + // // if (currentBuildSettings.Contains("TMP_PRESENT;")) + // // { + // // currentBuildSettings = currentBuildSettings.Replace("TMP_PRESENT;", ""); + + // // PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, currentBuildSettings); + // // } + // // else if (currentBuildSettings.Contains("TMP_PRESENT")) + // // { + // // currentBuildSettings = currentBuildSettings.Replace("TMP_PRESENT", ""); + + // // PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, currentBuildSettings); + // // } + // // } + // //} + // } + //} +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TexturePostProcessor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TexturePostProcessor.cs.meta new file mode 100644 index 0000000..fb00b80 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/TMPro_TexturePostProcessor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f4935fb862d54980b1bcbca942962642 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/Unity.TextMeshPro.Editor.asmdef b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/Unity.TextMeshPro.Editor.asmdef new file mode 100644 index 0000000..437e221 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/Unity.TextMeshPro.Editor.asmdef @@ -0,0 +1,11 @@ +{ + "name": "Unity.TextMeshPro.Editor", + "references": [ + "Unity.TextMeshPro" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/Unity.TextMeshPro.Editor.asmdef.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/Unity.TextMeshPro.Editor.asmdef.meta new file mode 100644 index 0000000..6ed76ad --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Editor/Unity.TextMeshPro.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6546d7765b4165b40850b3667f981c26 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime.meta new file mode 100644 index 0000000..4b24415 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5fc988a1d5b04aee9a5222502b201a45 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/AssemblyInfo.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/AssemblyInfo.cs new file mode 100644 index 0000000..5278493 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/AssemblyInfo.cs @@ -0,0 +1,11 @@ +using System.Runtime.CompilerServices; + +// Allow internal visibility for testing purposes. +[assembly: InternalsVisibleTo("Unity.TextCore")] + +[assembly: InternalsVisibleTo("Unity.FontEngine.Tests")] + +#if UNITY_EDITOR +[assembly: InternalsVisibleTo("Unity.TextCore.Editor")] +[assembly: InternalsVisibleTo("Unity.TextMeshPro.Editor")] +#endif diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/AssemblyInfo.cs.meta new file mode 100644 index 0000000..cd52706 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c147d10db452eb4b854a35f84472017 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/FastAction.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/FastAction.cs new file mode 100644 index 0000000..62b378d --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/FastAction.cs @@ -0,0 +1,150 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + + +namespace TMPro +{ + public class FastAction + { + + LinkedList delegates = new LinkedList(); + + Dictionary> lookup = new Dictionary>(); + + public void Add(System.Action rhs) + { + if (lookup.ContainsKey(rhs)) return; + + lookup[rhs] = delegates.AddLast(rhs); + } + + public void Remove(System.Action rhs) + { + LinkedListNode node; + if (lookup.TryGetValue(rhs, out node)) + { + lookup.Remove(rhs); + delegates.Remove(node); + } + } + + public void Call() + { + var node = delegates.First; + while (node != null) + { + node.Value(); + node = node.Next; + } + } + } + + + public class FastAction + { + + LinkedList> delegates = new LinkedList>(); + + Dictionary, LinkedListNode>> lookup = new Dictionary, LinkedListNode>>(); + + public void Add(System.Action rhs) + { + if (lookup.ContainsKey(rhs)) return; + + lookup[rhs] = delegates.AddLast(rhs); + } + + public void Remove(System.Action rhs) + { + LinkedListNode> node; + if (lookup.TryGetValue(rhs, out node)) + { + lookup.Remove(rhs); + delegates.Remove(node); + } + } + + public void Call(A a) + { + var node = delegates.First; + while (node != null) + { + node.Value(a); + node = node.Next; + } + } + } + + + public class FastAction + { + + LinkedList> delegates = new LinkedList>(); + + Dictionary, LinkedListNode>> lookup = new Dictionary, LinkedListNode>>(); + + public void Add(System.Action rhs) + { + if (lookup.ContainsKey(rhs)) return; + + lookup[rhs] = delegates.AddLast(rhs); + } + + public void Remove(System.Action rhs) + { + LinkedListNode> node; + if (lookup.TryGetValue(rhs, out node)) + { + lookup.Remove(rhs); + delegates.Remove(node); + } + } + + public void Call(A a, B b) + { + var node = delegates.First; + while (node != null) + { + node.Value(a, b); + node = node.Next; + } + } + } + + + public class FastAction + { + + LinkedList> delegates = new LinkedList>(); + + Dictionary, LinkedListNode>> lookup = new Dictionary, LinkedListNode>>(); + + public void Add(System.Action rhs) + { + if (lookup.ContainsKey(rhs)) return; + + lookup[rhs] = delegates.AddLast(rhs); + } + + public void Remove(System.Action rhs) + { + LinkedListNode> node; + if (lookup.TryGetValue(rhs, out node)) + { + lookup.Remove(rhs); + delegates.Remove(node); + } + } + + public void Call(A a, B b, C c) + { + var node = delegates.First; + while (node != null) + { + node.Value(a, b, c); + node = node.Next; + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/FastAction.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/FastAction.cs.meta new file mode 100644 index 0000000..fcd991e --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/FastAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 871f8edd56e84b8fb295b10cc3c78f36 +timeCreated: 1435956061 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/ITextPreProcessor.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/ITextPreProcessor.cs new file mode 100644 index 0000000..5d3f57a --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/ITextPreProcessor.cs @@ -0,0 +1,17 @@ + + +namespace TMPro +{ + /// + /// Interface used for preprocessing and shaping of text. + /// + public interface ITextPreprocessor + { + /// + /// Function used for preprocessing of text + /// + /// Source text to be processed + /// Processed text + string PreprocessText(string text); + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/ITextPreProcessor.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/ITextPreProcessor.cs.meta new file mode 100644 index 0000000..8dd7083 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/ITextPreProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: afc31ad767318c9488de260c166cd21d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/MaterialReferenceManager.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/MaterialReferenceManager.cs new file mode 100644 index 0000000..c1e05e9 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/MaterialReferenceManager.cs @@ -0,0 +1,652 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + + +namespace TMPro +{ + + public class MaterialReferenceManager + { + private static MaterialReferenceManager s_Instance; + + // Dictionaries used to track Asset references. + private Dictionary m_FontMaterialReferenceLookup = new Dictionary(); + private Dictionary m_FontAssetReferenceLookup = new Dictionary(); + private Dictionary m_SpriteAssetReferenceLookup = new Dictionary(); + private Dictionary m_ColorGradientReferenceLookup = new Dictionary(); + + + /// + /// Get a singleton instance of the registry + /// + public static MaterialReferenceManager instance + { + get + { + if (MaterialReferenceManager.s_Instance == null) + MaterialReferenceManager.s_Instance = new MaterialReferenceManager(); + return MaterialReferenceManager.s_Instance; + } + } + + + + /// + /// Add new font asset reference to dictionary. + /// + /// + public static void AddFontAsset(TMP_FontAsset fontAsset) + { + MaterialReferenceManager.instance.AddFontAssetInternal(fontAsset); + } + + /// + /// Add new Font Asset reference to dictionary. + /// + /// + private void AddFontAssetInternal(TMP_FontAsset fontAsset) + { + if (m_FontAssetReferenceLookup.ContainsKey(fontAsset.hashCode)) return; + + // Add reference to the font asset. + m_FontAssetReferenceLookup.Add(fontAsset.hashCode, fontAsset); + + // Add reference to the font material. + m_FontMaterialReferenceLookup.Add(fontAsset.materialHashCode, fontAsset.material); + } + + + + /// + /// Add new Sprite Asset to dictionary. + /// + /// + /// + public static void AddSpriteAsset(TMP_SpriteAsset spriteAsset) + { + MaterialReferenceManager.instance.AddSpriteAssetInternal(spriteAsset); + } + + /// + /// Internal method to add a new sprite asset to the dictionary. + /// + /// + /// + private void AddSpriteAssetInternal(TMP_SpriteAsset spriteAsset) + { + if (m_SpriteAssetReferenceLookup.ContainsKey(spriteAsset.hashCode)) return; + + // Add reference to sprite asset. + m_SpriteAssetReferenceLookup.Add(spriteAsset.hashCode, spriteAsset); + + // Adding reference to the sprite asset material as well + m_FontMaterialReferenceLookup.Add(spriteAsset.hashCode, spriteAsset.material); + } + + /// + /// Add new Sprite Asset to dictionary. + /// + /// + /// + public static void AddSpriteAsset(int hashCode, TMP_SpriteAsset spriteAsset) + { + MaterialReferenceManager.instance.AddSpriteAssetInternal(hashCode, spriteAsset); + } + + /// + /// Internal method to add a new sprite asset to the dictionary. + /// + /// + /// + private void AddSpriteAssetInternal(int hashCode, TMP_SpriteAsset spriteAsset) + { + if (m_SpriteAssetReferenceLookup.ContainsKey(hashCode)) return; + + // Add reference to Sprite Asset. + m_SpriteAssetReferenceLookup.Add(hashCode, spriteAsset); + + // Add reference to Sprite Asset using the asset hashcode. + m_FontMaterialReferenceLookup.Add(hashCode, spriteAsset.material); + + // Compatibility check + if (spriteAsset.hashCode == 0) spriteAsset.hashCode = hashCode; + } + + + /// + /// Add new Material reference to dictionary. + /// + /// + /// + public static void AddFontMaterial(int hashCode, Material material) + { + MaterialReferenceManager.instance.AddFontMaterialInternal(hashCode, material); + } + + /// + /// Add new material reference to dictionary. + /// + /// + /// + private void AddFontMaterialInternal(int hashCode, Material material) + { + // Since this function is called after checking if the material is + // contained in the dictionary, there is no need to check again. + m_FontMaterialReferenceLookup.Add(hashCode, material); + } + + + /// + /// Add new Color Gradient Preset to dictionary. + /// + /// + /// + public static void AddColorGradientPreset(int hashCode, TMP_ColorGradient spriteAsset) + { + MaterialReferenceManager.instance.AddColorGradientPreset_Internal(hashCode, spriteAsset); + } + + /// + /// Internal method to add a new Color Gradient Preset to the dictionary. + /// + /// + /// + private void AddColorGradientPreset_Internal(int hashCode, TMP_ColorGradient spriteAsset) + { + if (m_ColorGradientReferenceLookup.ContainsKey(hashCode)) return; + + // Add reference to Color Gradient Preset Asset. + m_ColorGradientReferenceLookup.Add(hashCode, spriteAsset); + } + + + + /// + /// Add new material reference and return the index of this new reference in the materialReferences array. + /// + /// + /// + /// + //public int AddMaterial(Material material, int materialHashCode, TMP_FontAsset fontAsset) + //{ + // if (!m_MaterialReferenceLookup.ContainsKey(materialHashCode)) + // { + // int index = m_MaterialReferenceLookup.Count; + + // materialReferences[index].fontAsset = fontAsset; + // materialReferences[index].material = material; + // materialReferences[index].isDefaultMaterial = material.GetInstanceID() == fontAsset.material.GetInstanceID() ? true : false; + // materialReferences[index].index = index; + // materialReferences[index].referenceCount = 0; + + // m_MaterialReferenceLookup[materialHashCode] = index; + + // // Compute Padding value and store it + // // TODO + + // int fontAssetHashCode = fontAsset.hashCode; + + // if (!m_FontAssetReferenceLookup.ContainsKey(fontAssetHashCode)) + // m_FontAssetReferenceLookup.Add(fontAssetHashCode, fontAsset); + + // m_countInternal += 1; + + // return index; + // } + // else + // { + // return m_MaterialReferenceLookup[materialHashCode]; + // } + //} + + + /// + /// Add new material reference and return the index of this new reference in the materialReferences array. + /// + /// + /// + /// + /// + //public int AddMaterial(Material material, int materialHashCode, TMP_SpriteAsset spriteAsset) + //{ + // if (!m_MaterialReferenceLookup.ContainsKey(materialHashCode)) + // { + // int index = m_MaterialReferenceLookup.Count; + + // materialReferences[index].fontAsset = materialReferences[0].fontAsset; + // materialReferences[index].spriteAsset = spriteAsset; + // materialReferences[index].material = material; + // materialReferences[index].isDefaultMaterial = true; + // materialReferences[index].index = index; + // materialReferences[index].referenceCount = 0; + + // m_MaterialReferenceLookup[materialHashCode] = index; + + // int spriteAssetHashCode = spriteAsset.hashCode; + + // if (!m_SpriteAssetReferenceLookup.ContainsKey(spriteAssetHashCode)) + // m_SpriteAssetReferenceLookup.Add(spriteAssetHashCode, spriteAsset); + + // m_countInternal += 1; + + // return index; + // } + // else + // { + // return m_MaterialReferenceLookup[materialHashCode]; + // } + //} + + + /// + /// Function to check if the font asset is already referenced. + /// + /// + /// + public bool Contains(TMP_FontAsset font) + { + if (m_FontAssetReferenceLookup.ContainsKey(font.hashCode)) + return true; + + return false; + } + + + /// + /// Function to check if the sprite asset is already referenced. + /// + /// + /// + public bool Contains(TMP_SpriteAsset sprite) + { + if (m_FontAssetReferenceLookup.ContainsKey(sprite.hashCode)) + return true; + + return false; + } + + + + /// + /// Function returning the Font Asset corresponding to the provided hash code. + /// + /// + /// + /// + public static bool TryGetFontAsset(int hashCode, out TMP_FontAsset fontAsset) + { + return MaterialReferenceManager.instance.TryGetFontAssetInternal(hashCode, out fontAsset); + } + + /// + /// Internal Function returning the Font Asset corresponding to the provided hash code. + /// + /// + /// + /// + private bool TryGetFontAssetInternal(int hashCode, out TMP_FontAsset fontAsset) + { + fontAsset = null; + + if (m_FontAssetReferenceLookup.TryGetValue(hashCode, out fontAsset)) + { + return true; + } + + return false; + } + + + + /// + /// Function returning the Sprite Asset corresponding to the provided hash code. + /// + /// + /// + /// + public static bool TryGetSpriteAsset(int hashCode, out TMP_SpriteAsset spriteAsset) + { + return MaterialReferenceManager.instance.TryGetSpriteAssetInternal(hashCode, out spriteAsset); + } + + /// + /// Internal function returning the Sprite Asset corresponding to the provided hash code. + /// + /// + /// + /// + private bool TryGetSpriteAssetInternal(int hashCode, out TMP_SpriteAsset spriteAsset) + { + spriteAsset = null; + + if (m_SpriteAssetReferenceLookup.TryGetValue(hashCode, out spriteAsset)) + { + return true; + } + + return false; + } + + + /// + /// Function returning the Color Gradient Preset corresponding to the provided hash code. + /// + /// + /// + /// + public static bool TryGetColorGradientPreset(int hashCode, out TMP_ColorGradient gradientPreset) + { + return MaterialReferenceManager.instance.TryGetColorGradientPresetInternal(hashCode, out gradientPreset); + } + + /// + /// Internal function returning the Color Gradient Preset corresponding to the provided hash code. + /// + /// + /// + /// + private bool TryGetColorGradientPresetInternal(int hashCode, out TMP_ColorGradient gradientPreset) + { + gradientPreset = null; + + if (m_ColorGradientReferenceLookup.TryGetValue(hashCode, out gradientPreset)) + { + return true; + } + + return false; + } + + + /// + /// Function returning the Font Material corresponding to the provided hash code. + /// + /// + /// + /// + public static bool TryGetMaterial(int hashCode, out Material material) + { + return MaterialReferenceManager.instance.TryGetMaterialInternal(hashCode, out material); + } + + /// + /// Internal function returning the Font Material corresponding to the provided hash code. + /// + /// + /// + /// + private bool TryGetMaterialInternal(int hashCode, out Material material) + { + material = null; + + if (m_FontMaterialReferenceLookup.TryGetValue(hashCode, out material)) + { + return true; + } + + return false; + } + + + /// + /// Function to lookup a material based on hash code and returning the MaterialReference containing this material. + /// + /// + /// + /// + //public bool TryGetMaterial(int hashCode, out MaterialReference materialReference) + //{ + // int materialIndex = -1; + + // if (m_MaterialReferenceLookup.TryGetValue(hashCode, out materialIndex)) + // { + // materialReference = materialReferences[materialIndex]; + + // return true; + // } + + // materialReference = new MaterialReference(); + + // return false; + //} + + + + /// + /// + /// + /// + /// + //public int GetMaterialIndex(TMP_FontAsset fontAsset) + //{ + // if (m_MaterialReferenceLookup.ContainsKey(fontAsset.materialHashCode)) + // return m_MaterialReferenceLookup[fontAsset.materialHashCode]; + + // return -1; + //} + + + /// + /// + /// + /// + /// + //public TMP_FontAsset GetFontAsset(int index) + //{ + // if (index >= 0 && index < materialReferences.Length) + // return materialReferences[index].fontAsset; + + // return null; + //} + + + /// + /// + /// + /// + /// + /// + //public void SetDefaultMaterial(Material material, int materialHashCode, TMP_FontAsset fontAsset) + //{ + // if (!m_MaterialReferenceLookup.ContainsKey(materialHashCode)) + // { + // materialReferences[0].fontAsset = fontAsset; + // materialReferences[0].material = material; + // materialReferences[0].index = 0; + // materialReferences[0].isDefaultMaterial = material.GetInstanceID() == fontAsset.material.GetInstanceID() ? true : false; + // materialReferences[0].referenceCount = 0; + // m_MaterialReferenceLookup[materialHashCode] = 0; + + // // Compute Padding value and store it + // // TODO + + // int fontHashCode = fontAsset.hashCode; + + // if (!m_FontAssetReferenceLookup.ContainsKey(fontHashCode)) + // m_FontAssetReferenceLookup.Add(fontHashCode, fontAsset); + // } + // else + // { + // materialReferences[0].fontAsset = fontAsset; + // materialReferences[0].material = material; + // materialReferences[0].index = 0; + // materialReferences[0].referenceCount = 0; + // m_MaterialReferenceLookup[materialHashCode] = 0; + // } + // // Compute padding + // // TODO + + // m_countInternal = 1; + //} + + + + /// + /// + /// + //public void Clear() + //{ + // //m_currentIndex = 0; + // m_MaterialReferenceLookup.Clear(); + // m_SpriteAssetReferenceLookup.Clear(); + // m_FontAssetReferenceLookup.Clear(); + //} + + + /// + /// Function to clear the reference count for each of the material references. + /// + //public void ClearReferenceCount() + //{ + // m_countInternal = 0; + + // for (int i = 0; i < materialReferences.Length; i++) + // { + // if (materialReferences[i].fontAsset == null) + // return; + + // materialReferences[i].referenceCount = 0; + // } + //} + + } + + + public struct TMP_MaterialReference + { + public Material material; + public int referenceCount; + } + + + public struct MaterialReference + { + + public int index; + public TMP_FontAsset fontAsset; + public TMP_SpriteAsset spriteAsset; + public Material material; + public bool isDefaultMaterial; + public bool isFallbackMaterial; + public Material fallbackMaterial; + public float padding; + public int referenceCount; + + + /// + /// Constructor for new Material Reference. + /// + /// + /// + /// + /// + /// + public MaterialReference(int index, TMP_FontAsset fontAsset, TMP_SpriteAsset spriteAsset, Material material, float padding) + { + this.index = index; + this.fontAsset = fontAsset; + this.spriteAsset = spriteAsset; + this.material = material; + this.isDefaultMaterial = material.GetInstanceID() == fontAsset.material.GetInstanceID() ? true : false; + this.isFallbackMaterial = false; + this.fallbackMaterial = null; + this.padding = padding; + this.referenceCount = 0; + } + + + /// + /// Function to check if a certain font asset is contained in the material reference array. + /// + /// + /// + /// + public static bool Contains(MaterialReference[] materialReferences, TMP_FontAsset fontAsset) + { + int id = fontAsset.GetInstanceID(); + + for (int i = 0; i < materialReferences.Length && materialReferences[i].fontAsset != null; i++) + { + if (materialReferences[i].fontAsset.GetInstanceID() == id) + return true; + } + + return false; + } + + + /// + /// Function to add a new material reference and returning its index in the material reference array. + /// + /// + /// + /// + /// + /// + public static int AddMaterialReference(Material material, TMP_FontAsset fontAsset, MaterialReference[] materialReferences, Dictionary materialReferenceIndexLookup) + { + int materialID = material.GetInstanceID(); + int index; + + if (materialReferenceIndexLookup.TryGetValue(materialID, out index)) + { + return index; + } + else + { + index = materialReferenceIndexLookup.Count; + + // Add new reference index + materialReferenceIndexLookup[materialID] = index; + + materialReferences[index].index = index; + materialReferences[index].fontAsset = fontAsset; + materialReferences[index].spriteAsset = null; + materialReferences[index].material = material; + materialReferences[index].isDefaultMaterial = materialID == fontAsset.material.GetInstanceID() ? true : false; + //materialReferences[index].padding = 0; + materialReferences[index].referenceCount = 0; + + return index; + } + } + + + /// + /// + /// + /// + /// + /// + /// + /// + public static int AddMaterialReference(Material material, TMP_SpriteAsset spriteAsset, MaterialReference[] materialReferences, Dictionary materialReferenceIndexLookup) + { + int materialID = material.GetInstanceID(); + int index; + + if (materialReferenceIndexLookup.TryGetValue(materialID, out index)) + { + return index; + } + else + { + index = materialReferenceIndexLookup.Count; + + // Add new reference index + materialReferenceIndexLookup[materialID] = index; + + materialReferences[index].index = index; + materialReferences[index].fontAsset = materialReferences[0].fontAsset; + materialReferences[index].spriteAsset = spriteAsset; + materialReferences[index].material = material; + materialReferences[index].isDefaultMaterial = true; + //materialReferences[index].padding = 0; + materialReferences[index].referenceCount = 0; + + return index; + } + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/MaterialReferenceManager.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/MaterialReferenceManager.cs.meta new file mode 100644 index 0000000..17ad566 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/MaterialReferenceManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 11a6a034ab84493cbed6af5ae7aae78b +timeCreated: 1449743129 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Asset.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Asset.cs new file mode 100644 index 0000000..60ed878 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Asset.cs @@ -0,0 +1,42 @@ +using System; +using UnityEngine; + +namespace TMPro +{ + + // Base class inherited by the various TextMeshPro Assets. + [Serializable] + public abstract class TMP_Asset : ScriptableObject + { + /// + /// Instance ID of the TMP Asset + /// + public int instanceID + { + get + { + if (m_InstanceID == 0) + m_InstanceID = GetInstanceID(); + + return m_InstanceID; + } + } + private int m_InstanceID; + + /// + /// HashCode based on the name of the asset. + /// + public int hashCode; + + /// + /// The material used by this asset. + /// + public Material material; + + /// + /// HashCode based on the name of the material assigned to this asset. + /// + public int materialHashCode; + + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Asset.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Asset.cs.meta new file mode 100644 index 0000000..62e9ee7 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Asset.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3bda1886f58f4e0ab1139400b160c3ee +timeCreated: 1459318952 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Character.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Character.cs new file mode 100644 index 0000000..6b4cc83 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Character.cs @@ -0,0 +1,70 @@ +using System; +using UnityEngine.TextCore; + +namespace TMPro +{ + /// + /// A basic element of text. + /// + [Serializable] + public class TMP_Character : TMP_TextElement + { + /// + /// Default constructor. + /// + public TMP_Character() + { + m_ElementType = TextElementType.Character; + this.scale = 1.0f; + } + + /// + /// Constructor for new character + /// + /// Unicode value. + /// Glyph + public TMP_Character(uint unicode, Glyph glyph) + { + m_ElementType = TextElementType.Character; + + this.unicode = unicode; + this.textAsset = null; + this.glyph = glyph; + this.glyphIndex = glyph.index; + this.scale = 1.0f; + } + + /// + /// Constructor for new character + /// + /// Unicode value. + /// The font asset to which this character belongs. + /// Glyph + public TMP_Character(uint unicode, TMP_FontAsset fontAsset, Glyph glyph) + { + m_ElementType = TextElementType.Character; + + this.unicode = unicode; + this.textAsset = fontAsset; + this.glyph = glyph; + this.glyphIndex = glyph.index; + this.scale = 1.0f; + } + + /// + /// Constructor for new character + /// + /// Unicode value. + /// Glyph index. + internal TMP_Character(uint unicode, uint glyphIndex) + { + m_ElementType = TextElementType.Character; + + this.unicode = unicode; + this.textAsset = null; + this.glyph = null; + this.glyphIndex = glyphIndex; + this.scale = 1.0f; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Character.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Character.cs.meta new file mode 100644 index 0000000..55aea1b --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Character.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ac5b6a65aaeb59478e3b78660e9f134 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CharacterInfo.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CharacterInfo.cs new file mode 100644 index 0000000..2a919f6 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CharacterInfo.cs @@ -0,0 +1,220 @@ +using System.Diagnostics; +using UnityEngine; + + +namespace TMPro +{ + public struct TMP_Vertex + { + public Vector3 position; + public Vector2 uv; + public Vector2 uv2; + public Vector2 uv4; + public Color32 color; + + public static TMP_Vertex zero { get { return k_Zero; } } + + //public Vector3 normal; + //public Vector4 tangent; + + static readonly TMP_Vertex k_Zero = new TMP_Vertex(); + } + + /// + /// + /// + public struct TMP_Offset + { + public float left { get { return m_Left; } set { m_Left = value; } } + + public float right { get { return m_Right; } set { m_Right = value; } } + + public float top { get { return m_Top; } set { m_Top = value; } } + + public float bottom { get { return m_Bottom; } set { m_Bottom = value; } } + + public float horizontal { get { return m_Left; } set { m_Left = value; m_Right = value; } } + + public float vertical { get { return m_Top; } set { m_Top = value; m_Bottom = value; } } + + /// + /// + /// + public static TMP_Offset zero { get { return k_ZeroOffset; } } + + // ============================================= + // Private backing fields for public properties. + // ============================================= + + float m_Left; + float m_Right; + float m_Top; + float m_Bottom; + + static readonly TMP_Offset k_ZeroOffset = new TMP_Offset(0F, 0F, 0F, 0F); + + /// + /// + /// + /// + /// + /// + /// + public TMP_Offset(float left, float right, float top, float bottom) + { + m_Left = left; + m_Right = right; + m_Top = top; + m_Bottom = bottom; + } + + /// + /// + /// + /// + /// + public TMP_Offset(float horizontal, float vertical) + { + m_Left = horizontal; + m_Right = horizontal; + m_Top = vertical; + m_Bottom = vertical; + } + + public static bool operator ==(TMP_Offset lhs, TMP_Offset rhs) + { + return lhs.m_Left == rhs.m_Left && + lhs.m_Right == rhs.m_Right && + lhs.m_Top == rhs.m_Top && + lhs.m_Bottom == rhs.m_Bottom; + } + + public static bool operator !=(TMP_Offset lhs, TMP_Offset rhs) + { + return !(lhs == rhs); + } + + public static TMP_Offset operator *(TMP_Offset a, float b) + { + return new TMP_Offset(a.m_Left * b, a.m_Right * b, a.m_Top * b, a.m_Bottom * b); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + public override bool Equals(object obj) + { + return base.Equals(obj); + } + + public bool Equals(TMP_Offset other) + { + return base.Equals(other); + } + } + + + /// + /// + /// + public struct HighlightState + { + public Color32 color; + public TMP_Offset padding; + + public HighlightState(Color32 color, TMP_Offset padding) + { + this.color = color; + this.padding = padding; + } + + public static bool operator ==(HighlightState lhs, HighlightState rhs) + { + return lhs.color.Compare(rhs.color) && lhs.padding == rhs.padding; + } + + public static bool operator !=(HighlightState lhs, HighlightState rhs) + { + return !(lhs == rhs); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + public override bool Equals(object obj) + { + return base.Equals(obj); + } + + public bool Equals(HighlightState other) + { + return base.Equals(other); + } + } + /// + /// Structure containing information about individual text elements (character or sprites). + /// + [DebuggerDisplay("Unicode '{character}' ({((uint)character).ToString(\"X\")})")] + public struct TMP_CharacterInfo + { + public char character; // Should be changed to an uint to handle UTF32 + /// + /// Index of the character in the raw string. + /// + public int index; // Index of the character in the input string. + public int stringLength; + public TMP_TextElementType elementType; + + public TMP_TextElement textElement; + public TMP_FontAsset fontAsset; + public TMP_SpriteAsset spriteAsset; + public int spriteIndex; + public Material material; + public int materialReferenceIndex; + public bool isUsingAlternateTypeface; + + public float pointSize; + + //public short wordNumber; + public int lineNumber; + //public short charNumber; + public int pageNumber; + + + public int vertexIndex; + public TMP_Vertex vertex_BL; + public TMP_Vertex vertex_TL; + public TMP_Vertex vertex_TR; + public TMP_Vertex vertex_BR; + + public Vector3 topLeft; + public Vector3 bottomLeft; + public Vector3 topRight; + public Vector3 bottomRight; + + public float origin; + public float xAdvance; + public float ascender; + public float baseLine; + public float descender; + internal float adjustedAscender; + internal float adjustedDescender; + + public float aspectRatio; + public float scale; + public Color32 color; + public Color32 underlineColor; + public int underlineVertexIndex; + public Color32 strikethroughColor; + public int strikethroughVertexIndex; + public Color32 highlightColor; + public HighlightState highlightState; + public FontStyles style; + public bool isVisible; + //public bool isIgnoringAlignment; + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CharacterInfo.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CharacterInfo.cs.meta new file mode 100644 index 0000000..9367a16 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CharacterInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 90fe1c65e6bb3bc4e90862df7297719e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_ColorGradient.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_ColorGradient.cs new file mode 100644 index 0000000..8e8e38a --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_ColorGradient.cs @@ -0,0 +1,68 @@ +using UnityEngine; +using System.Collections; + +namespace TMPro +{ + public enum ColorMode + { + Single, + HorizontalGradient, + VerticalGradient, + FourCornersGradient + } + + [System.Serializable][ExcludeFromPresetAttribute] + public class TMP_ColorGradient : ScriptableObject + { + public ColorMode colorMode = ColorMode.FourCornersGradient; + + public Color topLeft; + public Color topRight; + public Color bottomLeft; + public Color bottomRight; + + const ColorMode k_DefaultColorMode = ColorMode.FourCornersGradient; + static readonly Color k_DefaultColor = Color.white; + + /// + /// Default Constructor which sets each of the colors as white. + /// + public TMP_ColorGradient() + { + colorMode = k_DefaultColorMode; + topLeft = k_DefaultColor; + topRight = k_DefaultColor; + bottomLeft = k_DefaultColor; + bottomRight = k_DefaultColor; + } + + /// + /// Constructor allowing to set the default color of the Color Gradient. + /// + /// + public TMP_ColorGradient(Color color) + { + colorMode = k_DefaultColorMode; + topLeft = color; + topRight = color; + bottomLeft = color; + bottomRight = color; + } + + /// + /// The vertex colors at the corners of the characters. + /// + /// Top left color. + /// Top right color. + /// Bottom left color. + /// Bottom right color. + public TMP_ColorGradient(Color color0, Color color1, Color color2, Color color3) + { + colorMode = k_DefaultColorMode; + this.topLeft = color0; + this.topRight = color1; + this.bottomLeft = color2; + this.bottomRight = color3; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_ColorGradient.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_ColorGradient.cs.meta new file mode 100644 index 0000000..1d79d01 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_ColorGradient.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 54d21f6ece3b46479f0c328f8c6007e0 +timeCreated: 1468187202 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Compatibility.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Compatibility.cs new file mode 100644 index 0000000..8484a5c --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Compatibility.cs @@ -0,0 +1,74 @@ +using UnityEngine; +using System.Collections; + + +namespace TMPro +{ + // Class used to convert scenes and objects saved in version 0.1.44 to the new Text Container + public static class TMP_Compatibility + { + public enum AnchorPositions { TopLeft, Top, TopRight, Left, Center, Right, BottomLeft, Bottom, BottomRight, BaseLine, None }; + + /// + /// Function used to convert text alignment option enumeration format. + /// + /// + /// + public static TextAlignmentOptions ConvertTextAlignmentEnumValues(TextAlignmentOptions oldValue) + { + switch ((int)oldValue) + { + case 0: + return TextAlignmentOptions.TopLeft; + case 1: + return TextAlignmentOptions.Top; + case 2: + return TextAlignmentOptions.TopRight; + case 3: + return TextAlignmentOptions.TopJustified; + case 4: + return TextAlignmentOptions.Left; + case 5: + return TextAlignmentOptions.Center; + case 6: + return TextAlignmentOptions.Right; + case 7: + return TextAlignmentOptions.Justified; + case 8: + return TextAlignmentOptions.BottomLeft; + case 9: + return TextAlignmentOptions.Bottom; + case 10: + return TextAlignmentOptions.BottomRight; + case 11: + return TextAlignmentOptions.BottomJustified; + case 12: + return TextAlignmentOptions.BaselineLeft; + case 13: + return TextAlignmentOptions.Baseline; + case 14: + return TextAlignmentOptions.BaselineRight; + case 15: + return TextAlignmentOptions.BaselineJustified; + case 16: + return TextAlignmentOptions.MidlineLeft; + case 17: + return TextAlignmentOptions.Midline; + case 18: + return TextAlignmentOptions.MidlineRight; + case 19: + return TextAlignmentOptions.MidlineJustified; + case 20: + return TextAlignmentOptions.CaplineLeft; + case 21: + return TextAlignmentOptions.Capline; + case 22: + return TextAlignmentOptions.CaplineRight; + case 23: + return TextAlignmentOptions.CaplineJustified; + } + + return TextAlignmentOptions.TopLeft; + } + } +} diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Compatibility.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Compatibility.cs.meta new file mode 100644 index 0000000..e0c9cab --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_Compatibility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 21364f754cf9b9b47a60742332d4af56 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CoroutineTween.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CoroutineTween.cs new file mode 100644 index 0000000..bec1f54 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CoroutineTween.cs @@ -0,0 +1,246 @@ +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + + +namespace TMPro +{ + // Base interface for tweeners, + // using an interface instead of + // an abstract class as we want the + // tweens to be structs. + internal interface ITweenValue + { + void TweenValue(float floatPercentage); + bool ignoreTimeScale { get; } + float duration { get; } + bool ValidTarget(); + } + + // Color tween class, receives the + // TweenValue callback and then sets + // the value on the target. + internal struct ColorTween : ITweenValue + { + public enum ColorTweenMode + { + All, + RGB, + Alpha + } + + public class ColorTweenCallback : UnityEvent { } + + private ColorTweenCallback m_Target; + private Color m_StartColor; + private Color m_TargetColor; + private ColorTweenMode m_TweenMode; + + private float m_Duration; + private bool m_IgnoreTimeScale; + + public Color startColor + { + get { return m_StartColor; } + set { m_StartColor = value; } + } + + public Color targetColor + { + get { return m_TargetColor; } + set { m_TargetColor = value; } + } + + public ColorTweenMode tweenMode + { + get { return m_TweenMode; } + set { m_TweenMode = value; } + } + + public float duration + { + get { return m_Duration; } + set { m_Duration = value; } + } + + public bool ignoreTimeScale + { + get { return m_IgnoreTimeScale; } + set { m_IgnoreTimeScale = value; } + } + + public void TweenValue(float floatPercentage) + { + if (!ValidTarget()) + return; + + var newColor = Color.Lerp(m_StartColor, m_TargetColor, floatPercentage); + + if (m_TweenMode == ColorTweenMode.Alpha) + { + newColor.r = m_StartColor.r; + newColor.g = m_StartColor.g; + newColor.b = m_StartColor.b; + } + else if (m_TweenMode == ColorTweenMode.RGB) + { + newColor.a = m_StartColor.a; + } + m_Target.Invoke(newColor); + } + + public void AddOnChangedCallback(UnityAction callback) + { + if (m_Target == null) + m_Target = new ColorTweenCallback(); + + m_Target.AddListener(callback); + } + + public bool GetIgnoreTimescale() + { + return m_IgnoreTimeScale; + } + + public float GetDuration() + { + return m_Duration; + } + + public bool ValidTarget() + { + return m_Target != null; + } + } + + // Float tween class, receives the + // TweenValue callback and then sets + // the value on the target. + internal struct FloatTween : ITweenValue + { + public class FloatTweenCallback : UnityEvent { } + + private FloatTweenCallback m_Target; + private float m_StartValue; + private float m_TargetValue; + + private float m_Duration; + private bool m_IgnoreTimeScale; + + public float startValue + { + get { return m_StartValue; } + set { m_StartValue = value; } + } + + public float targetValue + { + get { return m_TargetValue; } + set { m_TargetValue = value; } + } + + public float duration + { + get { return m_Duration; } + set { m_Duration = value; } + } + + public bool ignoreTimeScale + { + get { return m_IgnoreTimeScale; } + set { m_IgnoreTimeScale = value; } + } + + public void TweenValue(float floatPercentage) + { + if (!ValidTarget()) + return; + + var newValue = Mathf.Lerp(m_StartValue, m_TargetValue, floatPercentage); + m_Target.Invoke(newValue); + } + + public void AddOnChangedCallback(UnityAction callback) + { + if (m_Target == null) + m_Target = new FloatTweenCallback(); + + m_Target.AddListener(callback); + } + + public bool GetIgnoreTimescale() + { + return m_IgnoreTimeScale; + } + + public float GetDuration() + { + return m_Duration; + } + + public bool ValidTarget() + { + return m_Target != null; + } + } + + // Tween runner, executes the given tween. + // The coroutine will live within the given + // behaviour container. + internal class TweenRunner where T : struct, ITweenValue + { + protected MonoBehaviour m_CoroutineContainer; + protected IEnumerator m_Tween; + + // utility function for starting the tween + private static IEnumerator Start(T tweenInfo) + { + if (!tweenInfo.ValidTarget()) + yield break; + + var elapsedTime = 0.0f; + while (elapsedTime < tweenInfo.duration) + { + elapsedTime += tweenInfo.ignoreTimeScale ? Time.unscaledDeltaTime : Time.deltaTime; + var percentage = Mathf.Clamp01(elapsedTime / tweenInfo.duration); + tweenInfo.TweenValue(percentage); + yield return null; + } + tweenInfo.TweenValue(1.0f); + } + + public void Init(MonoBehaviour coroutineContainer) + { + m_CoroutineContainer = coroutineContainer; + } + + public void StartTween(T info) + { + if (m_CoroutineContainer == null) + { + Debug.LogWarning("Coroutine container not configured... did you forget to call Init?"); + return; + } + + StopTween(); + + if (!m_CoroutineContainer.gameObject.activeInHierarchy) + { + info.TweenValue(1.0f); + return; + } + + m_Tween = Start(info); + m_CoroutineContainer.StartCoroutine(m_Tween); + } + + public void StopTween() + { + if (m_Tween != null) + { + m_CoroutineContainer.StopCoroutine(m_Tween); + m_Tween = null; + } + } + } +} \ No newline at end of file diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CoroutineTween.cs.meta b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CoroutineTween.cs.meta new file mode 100644 index 0000000..01cf5eb --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_CoroutineTween.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 658c1fb149e7498aa072b0c0f3bf13f0 +timeCreated: 1464850953 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_DefaultControls.cs b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_DefaultControls.cs new file mode 100644 index 0000000..45eac33 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.1.1/Scripts/Runtime/TMP_DefaultControls.cs @@ -0,0 +1,401 @@ +using UnityEngine; +using System.Collections; +using UnityEngine.UI; + +#if UNITY_EDITOR +using UnityEditor; +#endif + + +namespace TMPro +{ + + public static class TMP_DefaultControls + { + public struct Resources + { + public Sprite standard; + public Sprite background; + public Sprite inputField; + public Sprite knob; + public Sprite checkmark; + public Sprite dropdown; + public Sprite mask; + } + + private const float kWidth = 160f; + private const float kThickHeight = 30f; + private const float kThinHeight = 20f; + private static Vector2 s_TextElementSize = new Vector2(100f, 100f); + private static Vector2 s_ThickElementSize = new Vector2(kWidth, kThickHeight); + private static Vector2 s_ThinElementSize = new Vector2(kWidth, kThinHeight); + //private static Vector2 s_ImageElementSize = new Vector2(100f, 100f); + private static Color s_DefaultSelectableColor = new Color(1f, 1f, 1f, 1f); + //private static Color s_PanelColor = new Color(1f, 1f, 1f, 0.392f); + private static Color s_TextColor = new Color(50f / 255f, 50f / 255f, 50f / 255f, 1f); + + + private static GameObject CreateUIElementRoot(string name, Vector2 size) + { + GameObject child = new GameObject(name); + RectTransform rectTransform = child.AddComponent(); + rectTransform.sizeDelta = size; + return child; + } + + static GameObject CreateUIObject(string name, GameObject parent) + { + GameObject go = new GameObject(name); + go.AddComponent(); + SetParentAndAlign(go, parent); + return go; + } + + private static void SetDefaultTextValues(TMP_Text lbl) + { + // Set text values we want across UI elements in default controls. + // Don't set values which are the same as the default values for the Text component, + // since there's no point in that, and it's good to keep them as consistent as possible. + lbl.color = s_TextColor; + lbl.fontSize = 14; + } + + private static void SetDefaultColorTransitionValues(Selectable slider) + { + ColorBlock colors = slider.colors; + colors.highlightedColor = new Color(0.882f, 0.882f, 0.882f); + colors.pressedColor = new Color(0.698f, 0.698f, 0.698f); + colors.disabledColor = new Color(0.521f, 0.521f, 0.521f); + } + + private static void SetParentAndAlign(GameObject child, GameObject parent) + { + if (parent == null) + return; + + child.transform.SetParent(parent.transform, false); + SetLayerRecursively(child, parent.layer); + } + + private static void SetLayerRecursively(GameObject go, int layer) + { + go.layer = layer; + Transform t = go.transform; + for (int i = 0; i < t.childCount; i++) + SetLayerRecursively(t.GetChild(i).gameObject, layer); + } + + // Actual controls + + public static GameObject CreateScrollbar(Resources resources) + { + // Create GOs Hierarchy + GameObject scrollbarRoot = CreateUIElementRoot("Scrollbar", s_ThinElementSize); + + GameObject sliderArea = CreateUIObject("Sliding Area", scrollbarRoot); + GameObject handle = CreateUIObject("Handle", sliderArea); + + Image bgImage = scrollbarRoot.AddComponent(); + bgImage.sprite = resources.background; + bgImage.type = Image.Type.Sliced; + bgImage.color = s_DefaultSelectableColor; + + Image handleImage = handle.AddComponent(); + handleImage.sprite = resources.standard; + handleImage.type = Image.Type.Sliced; + handleImage.color = s_DefaultSelectableColor; + + RectTransform sliderAreaRect = sliderArea.GetComponent(); + sliderAreaRect.sizeDelta = new Vector2(-20, -20); + sliderAreaRect.anchorMin = Vector2.zero; + sliderAreaRect.anchorMax = Vector2.one; + + RectTransform handleRect = handle.GetComponent(); + handleRect.sizeDelta = new Vector2(20, 20); + + Scrollbar scrollbar = scrollbarRoot.AddComponent(); + scrollbar.handleRect = handleRect; + scrollbar.targetGraphic = handleImage; + SetDefaultColorTransitionValues(scrollbar); + + return scrollbarRoot; + } + + public static GameObject CreateButton(Resources resources) + { + GameObject buttonRoot = CreateUIElementRoot("Button", s_ThickElementSize); + + GameObject childText = new GameObject("Text (TMP)"); + childText.AddComponent(); + SetParentAndAlign(childText, buttonRoot); + + Image image = buttonRoot.AddComponent(); + image.sprite = resources.standard; + image.type = Image.Type.Sliced; + image.color = s_DefaultSelectableColor; + + Button bt = buttonRoot.AddComponent